32 lines
1.7 KiB
Diff
32 lines
1.7 KiB
Diff
This patches LLVM to use ELFv2 on ppc64 uncoditionally unless overridden. We
|
|
need this because unlike most distros we use ELFv2 for both glibc and musl
|
|
on big endian ppc64.
|
|
|
|
--- a/lib/Target/PowerPC/PPCTargetMachine.cpp
|
|
+++ b/lib/Target/PowerPC/PPCTargetMachine.cpp
|
|
@@ -211,11 +211,11 @@ static PPCTargetMachine::PPCABI computeTargetABI(const Triple &TT,
|
|
|
|
switch (TT.getArch()) {
|
|
case Triple::ppc64le:
|
|
- return PPCTargetMachine::PPC_ABI_ELFv2;
|
|
case Triple::ppc64:
|
|
- if (TT.getEnvironment() == llvm::Triple::ELFv2)
|
|
- return PPCTargetMachine::PPC_ABI_ELFv2;
|
|
- return PPCTargetMachine::PPC_ABI_ELFv1;
|
|
+ /* default to ELFv2 always, don't care about llvm's stupid broken suffix
|
|
+ * triples; people can override the default properly via -mabi like gcc
|
|
+ */
|
|
+ return PPCTargetMachine::PPC_ABI_ELFv2;
|
|
default:
|
|
return PPCTargetMachine::PPC_ABI_UNKNOWN;
|
|
}
|
|
--- a/test/CodeGen/PowerPC/ppc64-elf-abi.ll
|
|
+++ b/test/CodeGen/PowerPC/ppc64-elf-abi.ll
|
|
@@ -1,4 +1,5 @@
|
|
-; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s -check-prefix=CHECK-ELFv1
|
|
+; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s -check-prefix=CHECK-ELFv2
|
|
+; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-musl < %s | FileCheck %s -check-prefix=CHECK-ELFv2
|
|
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -target-abi elfv1 < %s | FileCheck %s -check-prefix=CHECK-ELFv1
|
|
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -target-abi elfv2 < %s | FileCheck %s -check-prefix=CHECK-ELFv2
|
|
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s -check-prefix=CHECK-ELFv2
|