diff options
| author | Rémy Rakic <remy.rakic+github@gmail.com> | 2023-09-21 18:26:38 +0000 |
|---|---|---|
| committer | Rémy Rakic <remy.rakic+github@gmail.com> | 2024-05-16 16:08:06 +0000 |
| commit | 7695e5aeb47477300801bc367355d929c636ae09 (patch) | |
| tree | 44557f5c418f4daefaff623126c343a962fd7ce1 | |
| parent | 5f04f6d7e1907982c77c628e54ac6efafe90125a (diff) | |
| download | rust-7695e5aeb47477300801bc367355d929c636ae09.tar.gz rust-7695e5aeb47477300801bc367355d929c636ae09.zip | |
enable rust-lld on `x86_64-unknown-linux-gnu` when requested
the `rust.lld` config enables rustc's `CFG_USE_SELF_CONTAINED_LINKER` env var, and we: - set the linker-flavor to use lld - enable the self-contained linker this makes the target use the rust-lld linker by default
| -rw-r--r-- | compiler/rustc_target/src/spec/mod.rs | 6 | ||||
| -rw-r--r-- | compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs | 7 |
2 files changed, 13 insertions, 0 deletions
diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs index 8ba945e193c..910c6aeb7d6 100644 --- a/compiler/rustc_target/src/spec/mod.rs +++ b/compiler/rustc_target/src/spec/mod.rs @@ -612,6 +612,12 @@ impl LinkSelfContainedDefault { _ => "crt-objects-fallback", } } + + /// Creates a `LinkSelfContainedDefault` enabling the self-contained linker for target specs + /// (the equivalent of `-Clink-self-contained=+linker` on the CLI). + pub fn with_linker() -> LinkSelfContainedDefault { + LinkSelfContainedDefault::WithComponents(LinkSelfContainedComponents::LINKER) + } } bitflags::bitflags! { diff --git a/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs index 11fb28a9aed..bd12d4d8af0 100644 --- a/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs +++ b/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs @@ -18,6 +18,13 @@ pub fn target() -> Target { | SanitizerSet::THREAD; base.supports_xray = true; + // When we're asked to use the `rust-lld` linker by default, set the appropriate lld-using + // linker flavor, and self-contained linker component. + if option_env!("CFG_USE_SELF_CONTAINED_LINKER").is_some() { + base.linker_flavor = LinkerFlavor::Gnu(Cc::Yes, Lld::Yes); + base.link_self_contained = crate::spec::LinkSelfContainedDefault::with_linker(); + } + Target { llvm_target: "x86_64-unknown-linux-gnu".into(), metadata: crate::spec::TargetMetadata { |
