summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbdoulaye Walsimou Gaye <awg@embtoolkit.org>2014-04-20 17:12:19 +0200
committerAbdoulaye Walsimou Gaye <awg@embtoolkit.org>2014-04-20 17:12:19 +0200
commit94b3266c55534726a6675c125efa1413b716e844 (patch)
tree4e868e96ecd4b6beca0a5b54ed4985a326cdb5cf
parent39c730ee58773ce1857be6272669cf172e1d0852 (diff)
downloadclang-embtk-support-release-3.3.tar.gz
clang-embtk-support-release-3.3.tar.bz2
clang-embtk-support-release-3.3.tar.xz
[Embtk] MIPS32: support correctly musl dynamic linkerembtk-support-release-3.3
Signed-off-by: Abdoulaye Walsimou Gaye <awg@embtoolkit.org>
-rw-r--r--lib/Driver/Tools.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index 5a3a96ee1b..ee74620610 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -5956,6 +5956,7 @@ void gnutools::Link::ConstructJob(Compilation &C, const JobAction &JA,
(Args.hasArg(options::OPT_pie) || Sanitize.hasZeroBaseShadow());
ArgStringList CmdArgs;
+ StringRef EnvironmentName = ToolChain.getTriple().getEnvironmentName();
// Silence warning for "clang -g foo.o -o foo"
Args.ClaimAllArgs(options::OPT_g_Group);
@@ -6048,7 +6049,6 @@ void gnutools::Link::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back("/lib/ld-linux-aarch64.so.1");
else if (ToolChain.getArch() == llvm::Triple::arm ||
ToolChain.getArch() == llvm::Triple::thumb) {
- StringRef EnvironmentName = ToolChain.getTriple().getEnvironmentName();
if (ToolChain.getTriple().getEnvironment() == llvm::Triple::GNUEABIHF) {
if (EnvironmentName == "musleabihf")
CmdArgs.push_back("/lib/ld-musl-armhf.so.1");
@@ -6067,9 +6067,12 @@ void gnutools::Link::ConstructJob(Compilation &C, const JobAction &JA,
}
else if (ToolChain.getArch() == llvm::Triple::mips ||
ToolChain.getArch() == llvm::Triple::mipsel) {
- if (ToolChain.getTriple().getEnvironmentName() == "musl")
- CmdArgs.push_back("/lib/ld-musl-mips.so.1");
- else if (ToolChain.getTriple().getEnvironmentName() == "uclibc")
+ StringRef FloatABI = getMipsFloatABI(D, Args);
+ if (EnvironmentName == "musl" && FloatABI == "hard")
+ CmdArgs.push_back(ToolChain.getArch() == llvm::Triple::mipsel ? "/lib/ld-musl-mipsel.so.1" : "/lib/ld-musl-mips.so.1");
+ else if (EnvironmentName == "musl" && FloatABI == "soft")
+ CmdArgs.push_back(ToolChain.getArch() == llvm::Triple::mipsel ? "/lib/ld-musl-mipsel-sf.so.1" : "/lib/ld-musl-mips-sf.so.1");
+ else if (EnvironmentName == "uclibc")
CmdArgs.push_back("/lib/ld-uClibc.so.0");
else
CmdArgs.push_back("/lib/ld.so.1");