summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver
diff options
context:
space:
mode:
authorMartell Malone <martellmalone@gmail.com>2017-09-13 00:57:50 +0000
committerMartell Malone <martellmalone@gmail.com>2017-09-13 00:57:50 +0000
commit9127e849e4accdf0b3f4ffec79ad52e3db8c4e35 (patch)
treed6b626d74df838b0606f545a7b56592ddb6c68fa /clang/lib/Driver
parent7415819186150084a1a58f1944c97c74d33930ba (diff)
downloadbcm5719-llvm-9127e849e4accdf0b3f4ffec79ad52e3db8c4e35.tar.gz
bcm5719-llvm-9127e849e4accdf0b3f4ffec79ad52e3db8c4e35.zip
Revert "[Driver] MinGW: Remove custom linker detection"
This reverts rL313102 because it still fails some build bot tests. On many linux bots it fails with the following error. error: invalid linker name in argument '-fuse-ld=lld' and on some windows bots also because there is no ld.lld.exe lld-link.exe: warning: ignoring unknown argument: -fuse-ld=lld llvm-svn: 313104
Diffstat (limited to 'clang/lib/Driver')
-rw-r--r--clang/lib/Driver/ToolChains/MinGW.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/clang/lib/Driver/ToolChains/MinGW.cpp b/clang/lib/Driver/ToolChains/MinGW.cpp
index 6247efb3059..46e2289219c 100644
--- a/clang/lib/Driver/ToolChains/MinGW.cpp
+++ b/clang/lib/Driver/ToolChains/MinGW.cpp
@@ -104,6 +104,14 @@ void tools::MinGW::Linker::ConstructJob(Compilation &C, const JobAction &JA,
// handled somewhere else.
Args.ClaimAllArgs(options::OPT_w);
+ StringRef LinkerName = Args.getLastArgValue(options::OPT_fuse_ld_EQ, "ld");
+ if (LinkerName.equals_lower("lld")) {
+ CmdArgs.push_back("-flavor");
+ CmdArgs.push_back("gnu");
+ } else if (!LinkerName.equals_lower("ld")) {
+ D.Diag(diag::err_drv_unsupported_linker) << LinkerName;
+ }
+
if (!D.SysRoot.empty())
CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
@@ -233,7 +241,7 @@ void tools::MinGW::Linker::ConstructJob(Compilation &C, const JobAction &JA,
if (Args.hasArg(options::OPT_static))
CmdArgs.push_back("--end-group");
- else
+ else if (!LinkerName.equals_lower("lld"))
AddLibGCC(Args, CmdArgs);
}
@@ -244,7 +252,7 @@ void tools::MinGW::Linker::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crtend.o")));
}
}
- const char *Exec = Args.MakeArgString(TC.GetLinkerPath());
+ const char *Exec = Args.MakeArgString(TC.GetProgramPath(LinkerName.data()));
C.addCommand(llvm::make_unique<Command>(JA, *this, Exec, CmdArgs, Inputs));
}
OpenPOWER on IntegriCloud