diff options
author | Abdoulaye Walsimou Gaye <awg@embtoolkit.org> | 2014-04-20 17:12:19 +0200 |
---|---|---|
committer | Abdoulaye Walsimou Gaye <awg@embtoolkit.org> | 2014-04-20 17:12:19 +0200 |
commit | 94b3266c55534726a6675c125efa1413b716e844 (patch) | |
tree | 4e868e96ecd4b6beca0a5b54ed4985a326cdb5cf | |
parent | 39c730ee58773ce1857be6272669cf172e1d0852 (diff) | |
download | clang-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.cpp | 11 |
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"); |