[PowerPC64] Starting from FreeBSD 13.0, default to ELFv2 ABI
This changes the LLVM default powerpc64 ABI to ELFv2, if target OS is FreeBSD >= 13.0 This will also be sent upstream. Submitted by: alfredo.junior_eldorado.org.br Reviewed by: dim, luporl Relnotes: YES Differential Revision: https://reviews.freebsd.org/D20383
This commit is contained in:
parent
678da4a274
commit
e4399d169a
@ -375,12 +375,29 @@ class LLVM_LIBRARY_VISIBILITY PPC64TargetInfo : public PPCTargetInfo {
|
|||||||
IntMaxType = SignedLong;
|
IntMaxType = SignedLong;
|
||||||
Int64Type = SignedLong;
|
Int64Type = SignedLong;
|
||||||
|
|
||||||
|
if (Triple.getEnvironment() != llvm::Triple::UnknownEnvironment) {
|
||||||
|
switch (Triple.getEnvironment()){
|
||||||
|
case llvm::Triple::ELFv1:
|
||||||
|
ABI = "elfv1";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
ABI = "elfv2";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if ((Triple.getOS() == llvm::Triple::FreeBSD) &&
|
||||||
|
(Triple.getOSMajorVersion() < 13)) {
|
||||||
|
ABI = "elfv1";
|
||||||
|
} else {
|
||||||
|
ABI = "elfv2";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if ((Triple.getArch() == llvm::Triple::ppc64le)) {
|
if ((Triple.getArch() == llvm::Triple::ppc64le)) {
|
||||||
resetDataLayout("e-m:e-i64:64-n32:64");
|
resetDataLayout("e-m:e-i64:64-n32:64");
|
||||||
ABI = "elfv2";
|
|
||||||
} else {
|
} else {
|
||||||
resetDataLayout("E-m:e-i64:64-n32:64");
|
resetDataLayout("E-m:e-i64:64-n32:64");
|
||||||
ABI = Triple.getEnvironment() == llvm::Triple::ELFv2 ? "elfv2" : "elfv1";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Triple.getOS() == llvm::Triple::AIX)
|
if (Triple.getOS() == llvm::Triple::AIX)
|
||||||
|
@ -209,6 +209,20 @@ static PPCTargetMachine::PPCABI computeTargetABI(const Triple &TT,
|
|||||||
if (TT.isMacOSX())
|
if (TT.isMacOSX())
|
||||||
return PPCTargetMachine::PPC_ABI_UNKNOWN;
|
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()) {
|
switch (TT.getArch()) {
|
||||||
case Triple::ppc64le:
|
case Triple::ppc64le:
|
||||||
return PPCTargetMachine::PPC_ABI_ELFv2;
|
return PPCTargetMachine::PPC_ABI_ELFv2;
|
||||||
|
Loading…
Reference in New Issue
Block a user