forked from OSchip/llvm-project
[Driver][Gnu] 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.
This commit is contained in:
parent
129b531c9c
commit
57e43ebc42
|
@ -477,7 +477,8 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
if (Args.hasArg(options::OPT_rdynamic))
|
||||
CmdArgs.push_back("-export-dynamic");
|
||||
|
||||
if (!Args.hasArg(options::OPT_shared) && !IsStaticPIE) {
|
||||
if (!Args.hasArg(options::OPT_shared) && !IsStaticPIE &&
|
||||
!Args.hasArg(options::OPT_r)) {
|
||||
CmdArgs.push_back("-dynamic-linker");
|
||||
CmdArgs.push_back(Args.MakeArgString(Twine(D.DyldPrefix) +
|
||||
ToolChain.getDynamicLinker(Args)));
|
||||
|
|
|
@ -211,10 +211,11 @@
|
|||
// RUN: --stdlib=platform --rtlib=platform 2>&1 | FileCheck %s --check-prefix=MUSL_X32
|
||||
// MUSL_X32: "-dynamic-linker" "/lib/ld-musl-x32.so.1"
|
||||
|
||||
/// -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-linux-gnu --sysroot=%S/Inputs/debian_multiarch_tree \
|
||||
// RUN: -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin -resource-dir=%S/Inputs/resource_dir \
|
||||
// RUN: --stdlib=platform --rtlib=platform -r 2>&1 | FileCheck %s --check-prefix=RELOCATABLE
|
||||
// RELOCATABLE-NOT: "-dynamic-linker"
|
||||
// RELOCATABLE: "-internal-isystem"
|
||||
// RELOCATABLE-SAME: {{^}} "[[SYSROOT:[^"]+]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10"
|
||||
// RELOCATABLE: "-L
|
||||
|
|
Loading…
Reference in New Issue