A fix for the previous commit: "integer constant is too large for ‘long’ type" error on some 32-bit bots

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148232 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eli Bendersky 2012-01-16 09:31:10 +00:00
parent a66a18505e
commit 9223822b85

View File

@ -183,9 +183,9 @@ void RuntimeDyldELF::resolveX86_64Relocation(StringRef Name,
case ELF::R_X86_64_32S: {
uint64_t Value = reinterpret_cast<uint64_t>(Addr) + RE.Addend;
// FIXME: Handle the possibility of this assertion failing
assert((RE.Type == ELF::R_X86_64_32 && !(Value & 0xFFFFFFFF00000000)) ||
assert((RE.Type == ELF::R_X86_64_32 && !(Value & 0xFFFFFFFF00000000ULL)) ||
(RE.Type == ELF::R_X86_64_32S &&
(Value & 0xFFFFFFFF00000000) == 0xFFFFFFFF00000000));
(Value & 0xFFFFFFFF00000000ULL) == 0xFFFFFFFF00000000ULL));
uint32_t TruncatedAddr = (Value & 0xFFFFFFFF);
uint32_t *Target = reinterpret_cast<uint32_t*>(TargetAddr);
*Target = TruncatedAddr;