mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-09 01:38:03 +00:00
[RuntimeDyld] Use isInt to assert that a relocation didn't overflow
isInt is a little easier to read, let's use that more consistently. Incidentally, this also silences a warning for shifting a negative number. This fixes PR23532. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237476 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7fa889dd87
commit
e892415f25
@ -249,7 +249,7 @@ void RuntimeDyldELF::resolveX86_64Relocation(const SectionEntry &Section,
|
||||
case ELF::R_X86_64_PC32: {
|
||||
uint64_t FinalAddress = Section.LoadAddress + Offset;
|
||||
int64_t RealOffset = Value + Addend - FinalAddress;
|
||||
assert(RealOffset <= INT32_MAX && RealOffset >= INT32_MIN);
|
||||
assert(isInt<32>(RealOffset));
|
||||
int32_t TruncOffset = (RealOffset & 0xFFFFFFFF);
|
||||
support::ulittle32_t::ref(Section.Address + Offset) = TruncOffset;
|
||||
break;
|
||||
@ -322,8 +322,7 @@ void RuntimeDyldELF::resolveAArch64Relocation(const SectionEntry &Section,
|
||||
uint64_t BranchImm = Value + Addend - FinalAddress;
|
||||
|
||||
// "Check that -2^27 <= result < 2^27".
|
||||
assert(-(1LL << 27) <= static_cast<int64_t>(BranchImm) &&
|
||||
static_cast<int64_t>(BranchImm) < (1LL << 27));
|
||||
assert(isInt<28>(BranchImm));
|
||||
|
||||
// AArch64 code is emitted with .rela relocations. The data already in any
|
||||
// bits affected by the relocation on entry is garbage.
|
||||
@ -386,9 +385,7 @@ void RuntimeDyldELF::resolveAArch64Relocation(const SectionEntry &Section,
|
||||
((Value + Addend) & ~0xfffULL) - (FinalAddress & ~0xfffULL);
|
||||
|
||||
// Check that -2^32 <= X < 2^32
|
||||
assert(static_cast<int64_t>(Result) >= (-1LL << 32) &&
|
||||
static_cast<int64_t>(Result) < (1LL << 32) &&
|
||||
"overflow check failed for relocation");
|
||||
assert(isInt<33>(Result) && "overflow check failed for relocation");
|
||||
|
||||
// AArch64 code is emitted with .rela relocations. The data already in any
|
||||
// bits affected by the relocation on entry is garbage.
|
||||
|
Loading…
x
Reference in New Issue
Block a user