diff --git a/0001-PPC64LE-ELFv2-ABI-updates-for-the-.opd-section.patch b/0001-PPC64LE-ELFv2-ABI-updates-for-the-.opd-section.patch new file mode 100644 index 0000000..27a025a --- /dev/null +++ b/0001-PPC64LE-ELFv2-ABI-updates-for-the-.opd-section.patch @@ -0,0 +1,53 @@ +From 04c252cc93fe5905a625773cd174ed6ca7651463 Mon Sep 17 00:00:00 2001 +From: Will Schmidt +Date: Mon, 24 Mar 2014 16:04:15 +0000 +Subject: [PATCH] [PPC64LE] ELFv2 ABI updates for the .opd section + +[PPC64LE] ELFv2 ABI updates for the .opd section +The PPC64 Little Endian (PPC64LE) target supports the ELFv2 ABI, and as +such, does not have a ".opd" section. This is keyed off a _CALL_ELF=2 +macro check. + +The CALL_ELF check is not clearly documented at this time. The basis +for usage in this patch is from the gcc thread here: +http://gcc.gnu.org/ml/gcc-patches/2013-11/msg01144.html + +> Adding comment from Uli: +Looks good to me. I think the old-style JIT doesn't really work +anyway for 64-bit, but at least with this patch LLVM will compile +and link again on a ppc64le host ... + + + + +git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204614 91177308-0d34-0410-b5e6-96231b3b80d8 +--- + lib/Target/PowerPC/PPCJITInfo.cpp | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/lib/Target/PowerPC/PPCJITInfo.cpp b/lib/Target/PowerPC/PPCJITInfo.cpp +index 5e3a48d..227919c 100644 +--- a/lib/Target/PowerPC/PPCJITInfo.cpp ++++ b/lib/Target/PowerPC/PPCJITInfo.cpp +@@ -214,6 +214,10 @@ asm( + ".text\n" + ".align 2\n" + ".globl PPC64CompilationCallback\n" ++#if _CALL_ELF == 2 ++ ".type PPC64CompilationCallback,@function\n" ++"PPC64CompilationCallback:\n" ++#else + ".section \".opd\",\"aw\",@progbits\n" + ".align 3\n" + "PPC64CompilationCallback:\n" +@@ -223,6 +227,7 @@ asm( + ".align 4\n" + ".type PPC64CompilationCallback,@function\n" + ".L.PPC64CompilationCallback:\n" ++#endif + # else + asm( + ".text\n" +-- +1.9.3 +