diff options
author | Fangrui Song <maskray@google.com> | 2020-01-07 09:54:10 -0800 |
---|---|---|
committer | Fangrui Song <maskray@google.com> | 2020-01-07 11:40:56 -0800 |
commit | 8edf759ca7e1ceadb8bd4c0701f08c48850c26e7 (patch) | |
tree | d3fb6401c81dd848e66b9b80208ab2a926d716b5 /clang/lib/Driver/ToolChains | |
parent | fb6e80da446b94d42d484910ea28a82b4900f01f (diff) | |
download | bcm5719-llvm-8edf759ca7e1ceadb8bd4c0701f08c48850c26e7.tar.gz bcm5719-llvm-8edf759ca7e1ceadb8bd4c0701f08c48850c26e7.zip |
[PowerPC][Triple] Use elfv2 on freebsd>=13 and linux-musl
Summary:
Every powerpc64le platform uses elfv2.
For powerpc64, the environments "elfv1" and "elfv2" were added for
FreeBSD ELFv1->ELFv2 migration in D61950. FreeBSD developers have
decided to use OS versions to select ABI, and no one is relying on the
environments.
Also use elfv2 on powerpc64-linux-musl.
Users can always use -mabi=elfv1 and -mabi=elfv2 to override the default
ABI.
Reviewed By: adalava
Differential Revision: https://reviews.llvm.org/D72352
Diffstat (limited to 'clang/lib/Driver/ToolChains')
-rw-r--r-- | clang/lib/Driver/ToolChains/Clang.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index beca558ea71..fbb772bb370 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -1900,7 +1900,8 @@ void Clang::AddPPCTargetArgs(const ArgList &Args, ArgStringList &CmdArgs) const { // Select the ABI to use. const char *ABIName = nullptr; - if (getToolChain().getTriple().isOSLinux()) + const llvm::Triple &T = getToolChain().getTriple(); + if (T.isOSBinFormatELF()) { switch (getToolChain().getArch()) { case llvm::Triple::ppc64: { // When targeting a processor that supports QPX, or if QPX is @@ -1915,7 +1916,10 @@ void Clang::AddPPCTargetArgs(const ArgList &Args, break; } - ABIName = "elfv1"; + if (T.isMusl() || (T.isOSFreeBSD() && T.getOSMajorVersion() >= 13)) + ABIName = "elfv2"; + else + ABIName = "elfv1"; break; } case llvm::Triple::ppc64le: @@ -1924,6 +1928,7 @@ void Clang::AddPPCTargetArgs(const ArgList &Args, default: break; } + } bool IEEELongDouble = false; for (const Arg *A : Args.filtered(options::OPT_mabi_EQ)) { |