Index: contrib/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp =================================================================== --- contrib/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp +++ contrib/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp @@ -195,6 +195,20 @@ if (TT.isMacOSX()) return PPCTargetMachine::PPC_ABI_UNKNOWN; + if (TT.isOSFreeBSD()) { + switch (TT.getArch()) { + case Triple::ppc64le: + case Triple::ppc64: + if (TT.getOSMajorVersion() >= 13) + return PPCTargetMachine::PPC_ABI_ELFv2; + else + return PPCTargetMachine::PPC_ABI_ELFv1; + case Triple::ppc: + default: + return PPCTargetMachine::PPC_ABI_UNKNOWN; + } + } + switch (TT.getArch()) { case Triple::ppc64le: return PPCTargetMachine::PPC_ABI_ELFv2; Index: contrib/llvm/tools/clang/lib/Basic/Targets/PPC.h =================================================================== --- contrib/llvm/tools/clang/lib/Basic/Targets/PPC.h +++ contrib/llvm/tools/clang/lib/Basic/Targets/PPC.h @@ -372,6 +372,8 @@ case llvm::Triple::FreeBSD: LongDoubleWidth = LongDoubleAlign = 64; LongDoubleFormat = &llvm::APFloat::IEEEdouble(); + if (Triple.getOSMajorVersion() >= 13) + ABI = "elfv2"; break; default: break;