Author: Brad Smith Date: 2022-07-16T20:13:24-04:00 New Revision: abc8f2b7245f5da09612784ca6e5e0f3dfe4b42d
URL: https://github.com/llvm/llvm-project/commit/abc8f2b7245f5da09612784ca6e5e0f3dfe4b42d DIFF: https://github.com/llvm/llvm-project/commit/abc8f2b7245f5da09612784ca6e5e0f3dfe4b42d.diff LOG: [Driver] Don't passs --dynamic-linker in -r mode No behavior change as GNU ld/gold/ld.lld ignore --dynamic-linker in -r mode. This change makes the intention clearer as we already suppress --dynamic-linker for -shared, -static, and -static-pie. Reviewed by: MaskRay, phosek Differential Revision: https://reviews.llvm.org/D129714 Added: Modified: clang/lib/Driver/ToolChains/Ananas.cpp clang/lib/Driver/ToolChains/DragonFly.cpp clang/lib/Driver/ToolChains/FreeBSD.cpp clang/lib/Driver/ToolChains/Fuchsia.cpp clang/lib/Driver/ToolChains/NetBSD.cpp clang/lib/Driver/ToolChains/OpenBSD.cpp clang/test/Driver/ananas.c clang/test/Driver/dragonfly.c clang/test/Driver/freebsd.c clang/test/Driver/fuchsia.c clang/test/Driver/netbsd.c clang/test/Driver/openbsd.c Removed: ################################################################################ diff --git a/clang/lib/Driver/ToolChains/Ananas.cpp b/clang/lib/Driver/ToolChains/Ananas.cpp index 40f9e56b38e94..a9c13464a0d68 100644 --- a/clang/lib/Driver/ToolChains/Ananas.cpp +++ b/clang/lib/Driver/ToolChains/Ananas.cpp @@ -71,7 +71,7 @@ void ananas::Linker::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back("-export-dynamic"); if (Args.hasArg(options::OPT_shared)) { CmdArgs.push_back("-Bshareable"); - } else { + } else if (!Args.hasArg(options::OPT_r)) { Args.AddAllArgs(CmdArgs, options::OPT_pie); CmdArgs.push_back("-dynamic-linker"); CmdArgs.push_back("/lib/ld-ananas.so"); diff --git a/clang/lib/Driver/ToolChains/DragonFly.cpp b/clang/lib/Driver/ToolChains/DragonFly.cpp index 8cfec6a6c4e05..ba901407715f3 100644 --- a/clang/lib/Driver/ToolChains/DragonFly.cpp +++ b/clang/lib/Driver/ToolChains/DragonFly.cpp @@ -69,7 +69,7 @@ void dragonfly::Linker::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back("-export-dynamic"); if (Args.hasArg(options::OPT_shared)) CmdArgs.push_back("-Bshareable"); - else { + else if (!Args.hasArg(options::OPT_r)) { CmdArgs.push_back("-dynamic-linker"); CmdArgs.push_back("/usr/libexec/ld-elf.so.2"); } diff --git a/clang/lib/Driver/ToolChains/FreeBSD.cpp b/clang/lib/Driver/ToolChains/FreeBSD.cpp index 79e3c5cbca5f2..1476d11cd16d5 100644 --- a/clang/lib/Driver/ToolChains/FreeBSD.cpp +++ b/clang/lib/Driver/ToolChains/FreeBSD.cpp @@ -170,7 +170,7 @@ void freebsd::Linker::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back("-export-dynamic"); if (Args.hasArg(options::OPT_shared)) { CmdArgs.push_back("-Bshareable"); - } else { + } else if (!Args.hasArg(options::OPT_r)) { CmdArgs.push_back("-dynamic-linker"); CmdArgs.push_back("/libexec/ld-elf.so.1"); } diff --git a/clang/lib/Driver/ToolChains/Fuchsia.cpp b/clang/lib/Driver/ToolChains/Fuchsia.cpp index 03ff9fe894c88..f96cfde8e9570 100644 --- a/clang/lib/Driver/ToolChains/Fuchsia.cpp +++ b/clang/lib/Driver/ToolChains/Fuchsia.cpp @@ -101,7 +101,7 @@ void fuchsia::Linker::ConstructJob(Compilation &C, const JobAction &JA, const SanitizerArgs &SanArgs = ToolChain.getSanitizerArgs(Args); - if (!Args.hasArg(options::OPT_shared)) { + if (!Args.hasArg(options::OPT_shared) && !Args.hasArg(options::OPT_r)) { std::string Dyld = D.DyldPrefix; if (SanArgs.needsAsanRt() && SanArgs.needsSharedRt()) Dyld += "asan/"; diff --git a/clang/lib/Driver/ToolChains/NetBSD.cpp b/clang/lib/Driver/ToolChains/NetBSD.cpp index d1eda14a51f01..ac90ed49b8a54 100644 --- a/clang/lib/Driver/ToolChains/NetBSD.cpp +++ b/clang/lib/Driver/ToolChains/NetBSD.cpp @@ -139,7 +139,7 @@ void netbsd::Linker::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back("-export-dynamic"); if (Args.hasArg(options::OPT_shared)) { CmdArgs.push_back("-Bshareable"); - } else { + } else if (!Args.hasArg(options::OPT_r)) { Args.AddAllArgs(CmdArgs, options::OPT_pie); CmdArgs.push_back("-dynamic-linker"); CmdArgs.push_back("/libexec/ld.elf_so"); diff --git a/clang/lib/Driver/ToolChains/OpenBSD.cpp b/clang/lib/Driver/ToolChains/OpenBSD.cpp index 54cf3cc89caf7..cd50582c30e84 100644 --- a/clang/lib/Driver/ToolChains/OpenBSD.cpp +++ b/clang/lib/Driver/ToolChains/OpenBSD.cpp @@ -147,7 +147,7 @@ void openbsd::Linker::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back("-Bdynamic"); if (Args.hasArg(options::OPT_shared)) { CmdArgs.push_back("-shared"); - } else { + } else if (!Args.hasArg(options::OPT_r)) { CmdArgs.push_back("-dynamic-linker"); CmdArgs.push_back("/usr/libexec/ld.so"); } diff --git a/clang/test/Driver/ananas.c b/clang/test/Driver/ananas.c index 463797470f534..b3485ea91f960 100644 --- a/clang/test/Driver/ananas.c +++ b/clang/test/Driver/ananas.c @@ -16,9 +16,11 @@ // CHECK-SHARED: crtendS.o // CHECK-SHARED: crtn.o -// -r suppresses default -l and crt*.o like -nostdlib. +// -r suppresses -dynamic-linker, default -l and crt*.o like -nostdlib. // RUN: %clang %s -### -o %t.o --target=x86_64-unknown-ananas -r 2>&1 \ // RUN: | FileCheck %s --check-prefix=CHECK-RELOCATABLE // CHECK-RELOCATABLE: "-r" +// CHECK-RELOCATABLE-NOT: "-pie" +// CHECK-RELOCATABLE-NOT: "-dynamic-linker" // CHECK-RELOCATABLE-NOT: "-l // CHECK-RELOCATABLE-NOT: /crt{{[^.]+}}.o diff --git a/clang/test/Driver/dragonfly.c b/clang/test/Driver/dragonfly.c index 860312dd11dcc..477dbfe6abf43 100644 --- a/clang/test/Driver/dragonfly.c +++ b/clang/test/Driver/dragonfly.c @@ -4,9 +4,10 @@ // CHECK: "-cc1" "-triple" "x86_64-pc-dragonfly" // CHECK: ld{{.*}}" "--eh-frame-hdr" "-dynamic-linker" "/usr/libexec/ld-elf.so.{{.*}}" "--hash-style=gnu" "--enable-new-dtags" "-o" "a.out" "{{.*}}crt1.o" "{{.*}}crti.o" "{{.*}}crtbegin.o" "{{.*}}.o" "-L{{.*}}gcc{{.*}}" "-rpath" "{{.*}}gcc{{.*}}" "-lc" "-lgcc" "{{.*}}crtend.o" "{{.*}}crtn.o" -// -r suppresses default -l and crt*.o like -nostdlib. +// -r suppresses -dynamic-linker, default -l and crt*.o like -nostdlib. // RUN: %clang -### %s --target=x86_64-pc-dragonfly -r \ // RUN: 2>&1 | FileCheck %s --check-prefix=RELOCATABLE // RELOCATABLE: "-r" +// RELOCATABLE-NOT: "-dynamic-linker" // RELOCATABLE-NOT: "-l // RELOCATABLE-NOT: {{.*}}crt{{[^./]+}}.o diff --git a/clang/test/Driver/freebsd.c b/clang/test/Driver/freebsd.c index 6c2d0c6ed6a80..eecd07d012be3 100644 --- a/clang/test/Driver/freebsd.c +++ b/clang/test/Driver/freebsd.c @@ -206,9 +206,10 @@ // RUN: FileCheck -check-prefix=PPC64-MUNWIND %s // PPC64-MUNWIND: "-funwind-tables=2" -/// -r suppresses default -l and crt*.o like -nostdlib. +/// -r suppresses -dynamic-linker, default -l and crt*.o like -nostdlib. // RUN: %clang -### %s --target=aarch64-pc-freebsd11 -r \ // RUN: --sysroot=%S/Inputs/basic_freebsd64_tree 2>&1 | FileCheck %s --check-prefix=RELOCATABLE // RELOCATABLE: "-r" +// RELOCATABLE-NOT: "-dynamic-linker" // RELOCATABLE-NOT: "-l // RELOCATABLE-NOT: crt{{[^./]+}}.o diff --git a/clang/test/Driver/fuchsia.c b/clang/test/Driver/fuchsia.c index 4a76db38612dd..ce356a4faca12 100644 --- a/clang/test/Driver/fuchsia.c +++ b/clang/test/Driver/fuchsia.c @@ -86,6 +86,7 @@ // RUN: | FileCheck %s -check-prefix=CHECK-RELOCATABLE // CHECK-RELOCATABLE-NOT: "-pie" // CHECK-RELOCATABLE-NOT: "--build-id" +// CHECK-RELOCATABLE-NOT "-dynamic-linker" // CHECK-RELOCATABLE: "-r" // CHECK-RELOCATABLE-NOT: "-l // CHECK-RELOCATABLE-NOT: crt{{[^./]+}}.o diff --git a/clang/test/Driver/netbsd.c b/clang/test/Driver/netbsd.c index 69806a5ecdf72..436772ab99795 100644 --- a/clang/test/Driver/netbsd.c +++ b/clang/test/Driver/netbsd.c @@ -468,10 +468,12 @@ // RUN: | FileCheck -check-prefix=POWERPC-SECUREPLT %s // POWERPC-SECUREPLT: "-target-feature" "+secure-plt" -// -r suppresses default -l and crt*.o like -nostdlib. +// -r suppresses -dynamic-linker, default -l and crt*.o like -nostdlib. // RUN: %clang --target=x86_64-unknown-netbsd -r \ // RUN: --sysroot=%S/Inputs/basic_netbsd_tree -### %s 2>&1 \ // RUN: | FileCheck -check-prefix=RELOCATABLE %s // RELOCATABLE: "-r" +// RELOCATABLE-NOT: "-pie" +// RELOCATABLE-NOT: "-dynamic-linker" // RELOCATABLE-NOT: "-l // RELOCATABLE-NOT: crt{{[^./]+}}.o diff --git a/clang/test/Driver/openbsd.c b/clang/test/Driver/openbsd.c index d57234ae0134a..3ba8a315f6e16 100644 --- a/clang/test/Driver/openbsd.c +++ b/clang/test/Driver/openbsd.c @@ -37,6 +37,7 @@ // RUN: %clang --target=mips64el-unknown-openbsd -### %s 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-MIPS64EL-LD %s // CHECK-LD-R: "-r" +// CHECK-LD-R-NOT: "-dynamic-linker" // CHECK-LD-R-NOT: "-l // CHECK-LD-R-NOT: crt{{[^./]+}}.o // CHECK-LD-S: "-cc1" "-triple" "i686-pc-openbsd" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits