summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbdoulaye Walsimou Gaye <awg@embtoolkit.org>2014-04-19 18:37:25 +0200
committerAbdoulaye Walsimou Gaye <awg@embtoolkit.org>2014-04-19 18:37:25 +0200
commit39c730ee58773ce1857be6272669cf172e1d0852 (patch)
treefb777ccf6c8b13f79cbe2785b334311905cb22c8
parentdd0fe97e0ad26f34cadfcaaf8e148b87673c0bec (diff)
downloadclang-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.cpp4
-rw-r--r--lib/Driver/Tools.cpp18
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) {