https://github.com/thevinster updated https://github.com/llvm/llvm-project/pull/128285
>From b8d961acfa2bf17486d63de9481ff46445d6b38f Mon Sep 17 00:00:00 2001 From: Vincent Lee <leevi...@fb.com> Date: Fri, 21 Feb 2025 20:33:25 -0800 Subject: [PATCH 1/2] [FatLTO] Detect LLD linker more reliably --- clang/lib/Driver/ToolChains/CommonArgs.cpp | 5 ++--- .../usr/x86_64-unknown-linux-gnu/bin/lld-wrapper | 0 clang/test/Driver/fat-lto-objects.c | 3 +++ 3 files changed, 5 insertions(+), 3 deletions(-) create mode 100755 clang/test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/lld-wrapper diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 360754bdb3161..4f60287a1142b 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -862,13 +862,12 @@ void tools::addLTOOptions(const ToolChain &ToolChain, const ArgList &Args, const llvm::Triple &Triple = ToolChain.getTriple(); const bool IsOSAIX = Triple.isOSAIX(); const bool IsAMDGCN = Triple.isAMDGCN(); - const char *Linker = Args.MakeArgString(ToolChain.GetLinkerPath()); + StringRef Linker = Args.getLastArgValue(options::OPT_fuse_ld_EQ); const Driver &D = ToolChain.getDriver(); const bool IsFatLTO = Args.hasFlag(options::OPT_ffat_lto_objects, options::OPT_fno_fat_lto_objects, false); const bool IsUnifiedLTO = Args.hasArg(options::OPT_funified_lto); - if (llvm::sys::path::filename(Linker) != "ld.lld" && - llvm::sys::path::stem(Linker) != "ld.lld" && !Triple.isOSOpenBSD()) { + if (Linker != "lld" && Linker != "lld-link" && !Triple.isOSOpenBSD()) { // Tell the linker to load the plugin. This has to come before // AddLinkerInputs as gold requires -plugin and AIX ld requires -bplugin to // come before any -plugin-opt/-bplugin_opt that -Wl might forward. diff --git a/clang/test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/lld-wrapper b/clang/test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/lld-wrapper new file mode 100755 index 0000000000000..e69de29bb2d1d diff --git a/clang/test/Driver/fat-lto-objects.c b/clang/test/Driver/fat-lto-objects.c index fae64ea7fd1a1..7b87e2b468886 100644 --- a/clang/test/Driver/fat-lto-objects.c +++ b/clang/test/Driver/fat-lto-objects.c @@ -49,5 +49,8 @@ // RUN: -fuse-ld=lld -flto -ffat-lto-objects -### 2>&1 | FileCheck --check-prefix=LTO %s // RUN: %clang --target=x86_64-unknown-linux-gnu --sysroot=%S/Inputs/basic_cross_linux_tree %s \ // RUN: -fuse-ld=lld -fno-lto -ffat-lto-objects -### 2>&1 | FileCheck --check-prefix=NOLTO %s +// RUN: %clang --target=x86_64-unknown-linux-gnu --sysroot=%S/Inputs/basic_cross_linux_tree %s \ +// RUN: -fuse-ld=lld --ld-path=%S/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/lld-wrapper \ +// RUN: -flto -ffat-lto-objects -### 2>&1 | FileCheck --check-prefix=LTO %s // LTO: "--fat-lto-objects" // NOLTO-NOT: "--fat-lto-objects" >From da36ced7d82588da99d6348cde24062a7efa3c54 Mon Sep 17 00:00:00 2001 From: Vincent Lee <leevi...@fb.com> Date: Fri, 21 Feb 2025 20:50:05 -0800 Subject: [PATCH 2/2] Make lld-wrapper a symlink to ld.lld --- .../usr/x86_64-unknown-linux-gnu/bin/lld-wrapper | 1 + 1 file changed, 1 insertion(+) mode change 100755 => 120000 clang/test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/lld-wrapper diff --git a/clang/test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/lld-wrapper b/clang/test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/lld-wrapper deleted file mode 100755 index e69de29bb2d1d..0000000000000 diff --git a/clang/test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/lld-wrapper b/clang/test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/lld-wrapper new file mode 120000 index 0000000000000..9b032ee3b3f1d --- /dev/null +++ b/clang/test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/lld-wrapper @@ -0,0 +1 @@ +ld.lld \ No newline at end of file _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits