Skip to content

Commit 9c3a028

Browse files
committed
FreeBSD: add support for powerpc64
powerpc64 has switched to ELFv2 in FreeBSD 13.0-RELEASE.
1 parent b996d14 commit 9c3a028

2 files changed

Lines changed: 6 additions & 2 deletions

File tree

driver/targetmachine.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ const char *getABI(const llvm::Triple &triple, const llvm::SmallVectorImpl<llvm:
143143
case llvm::Triple::mips64el:
144144
return "n32";
145145
case llvm::Triple::ppc64:
146-
return "elfv1";
146+
return triple.isOSFreeBSD() ? "elfv2" : "elfv1";
147147
case llvm::Triple::ppc64le:
148148
return "elfv2";
149149
case llvm::Triple::riscv64:

gen/abi/abi.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,8 +269,12 @@ TargetABI *TargetABI::getTarget() {
269269
case llvm::Triple::riscv64:
270270
return getRISCV64TargetABI();
271271
case llvm::Triple::ppc:
272+
return getPPCTargetABI(false);
272273
case llvm::Triple::ppc64:
273-
return getPPCTargetABI(global.params.targetTriple->isArch64Bit());
274+
// FreeBSD powerpc64 is big-endian but uses the ELFv2 ABI, like ppc64le
275+
if (global.params.targetTriple->isOSFreeBSD())
276+
return getPPC64LETargetABI();
277+
return getPPCTargetABI(true);
274278
case llvm::Triple::ppc64le:
275279
return getPPC64LETargetABI();
276280
case llvm::Triple::aarch64:

0 commit comments

Comments
 (0)