diff options
author | Abdoulaye Walsimou Gaye <awg@embtoolkit.org> | 2014-04-19 18:37:25 +0200 |
---|---|---|
committer | Abdoulaye Walsimou Gaye <awg@embtoolkit.org> | 2014-04-19 18:37:25 +0200 |
commit | 39c730ee58773ce1857be6272669cf172e1d0852 (patch) | |
tree | fb777ccf6c8b13f79cbe2785b334311905cb22c8 | |
parent | dd0fe97e0ad26f34cadfcaaf8e148b87673c0bec (diff) | |
download | clang-39c730ee58773ce1857be6272669cf172e1d0852.tar.gz clang-39c730ee58773ce1857be6272669cf172e1d0852.tar.bz2 clang-39c730ee58773ce1857be6272669cf172e1d0852.tar.xz |
[Embtk] ARM: support musl and uClibc hard float triples
Signed-off-by: Abdoulaye Walsimou Gaye <awg@embtoolkit.org>
-rw-r--r-- | lib/CodeGen/TargetInfo.cpp | 4 | ||||
-rw-r--r-- | lib/Driver/Tools.cpp | 18 |
2 files changed, 15 insertions, 7 deletions
diff --git a/lib/CodeGen/TargetInfo.cpp b/lib/CodeGen/TargetInfo.cpp index 32b27b3172..2a91f549d6 100644 --- a/lib/CodeGen/TargetInfo.cpp +++ b/lib/CodeGen/TargetInfo.cpp @@ -3055,7 +3055,9 @@ void ARMABIInfo::computeInfo(CGFunctionInfo &FI) const { /// Return the default calling convention that LLVM will use. llvm::CallingConv::ID ARMABIInfo::getLLVMDefaultCC() const { // The default calling convention that LLVM will infer. - if (getTarget().getTriple().getEnvironmentName()=="gnueabihf") + if (getTarget().getTriple().getEnvironmentName()=="gnueabihf" || + getTarget().getTriple().getEnvironmentName() == "musleabihf" || + getTarget().getTriple().getEnvironmentName() == "uclibceabihf") return llvm::CallingConv::ARM_AAPCS_VFP; else if (isEABI()) return llvm::CallingConv::ARM_AAPCS; diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index d848535701..5a3a96ee1b 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -6049,15 +6049,21 @@ void gnutools::Link::ConstructJob(Compilation &C, const JobAction &JA, else if (ToolChain.getArch() == llvm::Triple::arm || ToolChain.getArch() == llvm::Triple::thumb) { StringRef EnvironmentName = ToolChain.getTriple().getEnvironmentName(); - if (ToolChain.getTriple().getEnvironment() == llvm::Triple::GNUEABIHF && - EnvironmentName != "musleabi" && EnvironmentName != "uclibceabi") - CmdArgs.push_back("/lib/ld-linux-armhf.so.3"); - else if (EnvironmentName == "musleabi") + if (ToolChain.getTriple().getEnvironment() == llvm::Triple::GNUEABIHF) { + if (EnvironmentName == "musleabihf") + CmdArgs.push_back("/lib/ld-musl-armhf.so.1"); + else if (EnvironmentName == "uclibceabihf" || EnvironmentName == "uclibceabi") + CmdArgs.push_back("/lib/ld-uClibc.so.0"); + else + CmdArgs.push_back("/lib/ld-linux-armhf.so.3"); + } else if (EnvironmentName == "musleabi") { CmdArgs.push_back("/lib/ld-musl-arm.so.1"); - else if (EnvironmentName == "uclibceabi") + } else if (EnvironmentName == "uclibceabi") { CmdArgs.push_back("/lib/ld-uClibc.so.0"); - else + } else { CmdArgs.push_back("/lib/ld-linux.so.3"); + } + } else if (ToolChain.getArch() == llvm::Triple::mips || ToolChain.getArch() == llvm::Triple::mipsel) { |