A fix for the previous commit: "integer constant is too large for ‘long’ type" error...
authorEli Bendersky <eli.bendersky@intel.com>
Mon, 16 Jan 2012 09:31:10 +0000 (09:31 +0000)
committerEli Bendersky <eli.bendersky@intel.com>
Mon, 16 Jan 2012 09:31:10 +0000 (09:31 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148232 91177308-0d34-0410-b5e6-96231b3b80d8

lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp

index 9ff95ff8b6ed4a173edd21f8a269e4f7780807c4..54cb350552d9abb6d99dafa256dcb5ff4d254632 100644 (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;