Skip to content

Commit 31247e3

Browse files
committed
adalava: change default powerpc64 ABI to ELFv2 on FreeBSD >= 13.0
1 parent 70f25eb commit 31247e3

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

clang/lib/Basic/Targets/PPC.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -370,10 +370,12 @@ class LLVM_LIBRARY_VISIBILITY PPC64TargetInfo : public PPCTargetInfo {
370370
ABI = "elfv1";
371371
}
372372

373-
switch (getTriple().getOS()) {
373+
switch (Triple.getOS()) {
374374
case llvm::Triple::FreeBSD:
375375
LongDoubleWidth = LongDoubleAlign = 64;
376376
LongDoubleFormat = &llvm::APFloat::IEEEdouble();
377+
if (Triple.getOSMajorVersion() >= 13)
378+
ABI = "elfv2";
377379
break;
378380
default:
379381
break;

llvm/lib/Target/PowerPC/PPCTargetMachine.cpp

+14
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,20 @@ static PPCTargetMachine::PPCABI computeTargetABI(const Triple &TT,
195195
if (TT.isMacOSX())
196196
return PPCTargetMachine::PPC_ABI_UNKNOWN;
197197

198+
if (TT.isOSFreeBSD()) {
199+
switch (TT.getArch()) {
200+
case Triple::ppc64le:
201+
case Triple::ppc64:
202+
if (TT.getOSMajorVersion() >= 13)
203+
return PPCTargetMachine::PPC_ABI_ELFv2;
204+
else
205+
return PPCTargetMachine::PPC_ABI_ELFv1;
206+
case Triple::ppc:
207+
default:
208+
return PPCTargetMachine::PPC_ABI_UNKNOWN;
209+
}
210+
}
211+
198212
switch (TT.getArch()) {
199213
case Triple::ppc64le:
200214
return PPCTargetMachine::PPC_ABI_ELFv2;

0 commit comments

Comments
 (0)