diff options
author | Nico Weber <thakis@chromium.org> | 2020-11-24 10:59:57 -0500 |
---|---|---|
committer | Nico Weber <thakis@chromium.org> | 2020-11-24 11:16:03 -0500 |
commit | 9a8386dba889b038c23bfc89dd0ff3cf55bbf86a (patch) | |
tree | f48d10adfd67557f806989cedba9ca3335994209 /clang/lib/Driver/ToolChain.cpp | |
parent | 1b0ca81a6c358d2d52d4f84b7f42e620ead1ed26 (diff) | |
download | llvm-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.cpp | 9 |
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; } } |