mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-02 22:23:10 +00:00
[mips] Fix off by one issue when applying a fixup.
The branch offset for a R_MIPS_PC16 relocation is indeed a 16-bit signed immediate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197506 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -64,7 +64,7 @@ static unsigned adjustFixupValue(const MCFixup &Fixup, uint64_t Value,
|
||||
// address range. Forcing a signed division because Value can be negative.
|
||||
Value = (int64_t)Value / 4;
|
||||
// We now check if Value can be encoded as a 16-bit signed immediate.
|
||||
if (!isIntN(15, Value) && Ctx)
|
||||
if (!isIntN(16, Value) && Ctx)
|
||||
Ctx->FatalError(Fixup.getLoc(), "out of range PC16 fixup");
|
||||
break;
|
||||
case Mips::fixup_Mips_26:
|
||||
@@ -97,7 +97,7 @@ static unsigned adjustFixupValue(const MCFixup &Fixup, uint64_t Value,
|
||||
// Forcing a signed division because Value can be negative.
|
||||
Value = (int64_t)Value / 2;
|
||||
// We now check if Value can be encoded as a 16-bit signed immediate.
|
||||
if (!isIntN(15, Value) && Ctx)
|
||||
if (!isIntN(16, Value) && Ctx)
|
||||
Ctx->FatalError(Fixup.getLoc(), "out of range PC16 fixup");
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user