[llvm] r181220 - PowerPC: Fix unimplemented relocation on ppc64

Adhemerval Zanella azanella at linux.vnet.ibm.com
Mon May 6 10:21:23 PDT 2013


Author: azanella
Date: Mon May  6 12:21:23 2013
New Revision: 181220

URL: http://llvm.org/viewvc/llvm-project?rev=181220&view=rev
Log:
PowerPC: Fix unimplemented relocation on ppc64

This patch handles the R_PPC64_REL64 relocation type for powerpc64
for mcjit.

Modified:
    llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
    llvm/trunk/test/ExecutionEngine/MCJIT/eh.ll

Modified: llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp?rev=181220&r1=181219&r2=181220&view=diff
==============================================================================
--- llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp (original)
+++ llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp Mon May  6 12:21:23 2013
@@ -628,6 +628,11 @@ void RuntimeDyldELF::resolvePPC64Relocat
       llvm_unreachable("Relocation R_PPC64_REL32 overflow");
     writeInt32BE(LocalAddress, delta);
   } break;
+  case ELF::R_PPC64_REL64: {
+    uint64_t FinalAddress = (Section.LoadAddress + Offset);
+    uint64_t Delta = Value - FinalAddress + Addend;
+    writeInt64BE(LocalAddress, Delta);
+  } break;
   case ELF::R_PPC64_ADDR64 :
     writeInt64BE(LocalAddress, Value + Addend);
     break;

Modified: llvm/trunk/test/ExecutionEngine/MCJIT/eh.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/ExecutionEngine/MCJIT/eh.ll?rev=181220&r1=181219&r2=181220&view=diff
==============================================================================
--- llvm/trunk/test/ExecutionEngine/MCJIT/eh.ll (original)
+++ llvm/trunk/test/ExecutionEngine/MCJIT/eh.ll Mon May  6 12:21:23 2013
@@ -1,5 +1,5 @@
 ; RUN: %lli_mcjit %s
-; XFAIL: powerpc64, arm, cygwin
+; XFAIL: arm, cygwin
 declare i8* @__cxa_allocate_exception(i64)
 declare void @__cxa_throw(i8*, i8*, i8*)
 declare i32 @__gxx_personality_v0(...)





More information about the llvm-commits mailing list