aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Driver/ToolChain.cpp
diff options
context:
space:
mode:
authorNico Weber <thakis@chromium.org>2020-11-24 10:59:57 -0500
committerNico Weber <thakis@chromium.org>2020-11-24 11:16:03 -0500
commit9a8386dba889b038c23bfc89dd0ff3cf55bbf86a (patch)
treef48d10adfd67557f806989cedba9ca3335994209 /clang/lib/Driver/ToolChain.cpp
parent1b0ca81a6c358d2d52d4f84b7f42e620ead1ed26 (diff)
downloadllvm-9a8386dba889b038c23bfc89dd0ff3cf55bbf86a.zip
llvm-9a8386dba889b038c23bfc89dd0ff3cf55bbf86a.tar.gz
llvm-9a8386dba889b038c23bfc89dd0ff3cf55bbf86a.tar.bz2
clang: Pass -platform-version to new MachO LLD
New MachO LLD doesn't implement the old -macos_version_min (etc) flags, but it understands the modern platform_version flag. So make the clang driver pass that when using new MachO LLD. Also, while here, don't pass -lto_library to LLD, since it links in LTO libraries statically (which it can because it's versioned alongside clang). Differential Revision: https://reviews.llvm.org/D92037
Diffstat (limited to 'clang/lib/Driver/ToolChain.cpp')
-rw-r--r--clang/lib/Driver/ToolChain.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp
index ae1838a..0330afd 100644
--- a/clang/lib/Driver/ToolChain.cpp
+++ b/clang/lib/Driver/ToolChain.cpp
@@ -548,9 +548,12 @@ std::string ToolChain::GetProgramPath(const char *Name) const {
return D.GetProgramPath(Name, *this);
}
-std::string ToolChain::GetLinkerPath(bool *LinkerIsLLD) const {
+std::string ToolChain::GetLinkerPath(bool *LinkerIsLLD,
+ bool *LinkerIsLLDDarwinNew) const {
if (LinkerIsLLD)
*LinkerIsLLD = false;
+ if (LinkerIsLLDDarwinNew)
+ *LinkerIsLLDDarwinNew = false;
// Get -fuse-ld= first to prevent -Wunused-command-line-argument. -fuse-ld= is
// considered as the linker flavor, e.g. "bfd", "gold", or "lld".
@@ -603,9 +606,11 @@ std::string ToolChain::GetLinkerPath(bool *LinkerIsLLD) const {
std::string LinkerPath(GetProgramPath(LinkerName.c_str()));
if (llvm::sys::fs::can_execute(LinkerPath)) {
+ // FIXME: Remove lld.darwinnew here once it's the only MachO lld.
if (LinkerIsLLD)
- // FIXME: Remove lld.darwinnew here once it's the only MachO lld.
*LinkerIsLLD = UseLinker == "lld" || UseLinker == "lld.darwinnew";
+ if (LinkerIsLLDDarwinNew)
+ *LinkerIsLLDDarwinNew = UseLinker == "lld.darwinnew";
return LinkerPath;
}
}