Index: contrib/llvm/tools/clang/lib/Basic/Targets/PPC.h =================================================================== --- contrib/llvm/tools/clang/lib/Basic/Targets/PPC.h (revision 343065) +++ contrib/llvm/tools/clang/lib/Basic/Targets/PPC.h (working copy) @@ -361,10 +361,12 @@ ABI = "elfv1"; } - switch (getTriple().getOS()) { + switch (Triple.getOS()) { case llvm::Triple::FreeBSD: LongDoubleWidth = LongDoubleAlign = 64; LongDoubleFormat = &llvm::APFloat::IEEEdouble(); + if (Triple.getOSMajorVersion() >= 13) + ABI = "elfv2"; break; default: break; Index: contrib/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp =================================================================== --- contrib/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp (revision 343065) +++ contrib/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp (working copy) @@ -192,6 +192,13 @@ if (TT.isMacOSX()) return PPCTargetMachine::PPC_ABI_UNKNOWN; + if (TT.isOSFreeBSD()) { + if (tt.getOSMajorVersion() >= 13) + return PPCTargetMachine::PPC_ABI_ELFv2; + else + return PPCTargetMachine::PPC_ABI_ELFv1; + } + switch (TT.getArch()) { case Triple::ppc64le: return PPCTargetMachine::PPC_ABI_ELFv2;