Skip to content

Commit f4a3951

Browse files
committed
Draft: Introduce new Linker-driver flavors
Signed-off-by: Jonathan Schwender <[email protected]>
1 parent 1accf06 commit f4a3951

File tree

79 files changed

+382
-235
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+382
-235
lines changed

compiler/rustc_codegen_ssa/src/back/link.rs

+14-12
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use rustc_session::utils::NativeLibKind;
2323
use rustc_session::{filesearch, Session};
2424
use rustc_span::symbol::Symbol;
2525
use rustc_target::spec::crt_objects::{CrtObjects, LinkSelfContainedDefault};
26-
use rustc_target::spec::{Cc, LinkOutputKind, LinkerFlavor, Lld, PanicStrategy};
26+
use rustc_target::spec::{Cc, CcFlavor, LinkOutputKind, LinkerFlavor, Lld, PanicStrategy};
2727
use rustc_target::spec::{RelocModel, RelroLevel, SanitizerSet, SplitDebuginfo};
2828

2929
use super::archive::{ArchiveBuilder, ArchiveBuilderBuilder};
@@ -782,7 +782,7 @@ fn link_natively<'a>(
782782
// then it should not default to linking executables as pie. Different
783783
// versions of gcc seem to use different quotes in the error message so
784784
// don't check for them.
785-
if matches!(flavor, LinkerFlavor::Gnu(Cc::Yes, _))
785+
if matches!(flavor, LinkerFlavor::Gnu(Cc::Yes(_), _))
786786
&& unknown_arg_regex.is_match(&out)
787787
&& out.contains("-no-pie")
788788
&& cmd.get_args().iter().any(|e| e.to_string_lossy() == "-no-pie")
@@ -800,7 +800,7 @@ fn link_natively<'a>(
800800

801801
// Detect '-static-pie' used with an older version of gcc or clang not supporting it.
802802
// Fallback from '-static-pie' to '-static' in that case.
803-
if matches!(flavor, LinkerFlavor::Gnu(Cc::Yes, _))
803+
if matches!(flavor, LinkerFlavor::Gnu(Cc::Yes(_), _))
804804
&& unknown_arg_regex.is_match(&out)
805805
&& (out.contains("-static-pie") || out.contains("--no-dynamic-linker"))
806806
&& cmd.get_args().iter().any(|e| e.to_string_lossy() == "-static-pie")
@@ -1286,11 +1286,13 @@ pub fn linker_and_flavor(sess: &Session) -> (PathBuf, LinkerFlavor) {
12861286
// only the linker flavor is known; use the default linker for the selected flavor
12871287
(None, Some(flavor)) => Some((
12881288
PathBuf::from(match flavor {
1289-
LinkerFlavor::Gnu(Cc::Yes, _)
1290-
| LinkerFlavor::Darwin(Cc::Yes, _)
1291-
| LinkerFlavor::WasmLld(Cc::Yes)
1292-
| LinkerFlavor::Unix(Cc::Yes) => {
1293-
if cfg!(any(target_os = "solaris", target_os = "illumos")) {
1289+
LinkerFlavor::Gnu(Cc::Yes(cc_flavor), _)
1290+
| LinkerFlavor::Darwin(Cc::Yes(cc_flavor), _)
1291+
| LinkerFlavor::WasmLld(Cc::Yes(cc_flavor))
1292+
| LinkerFlavor::Unix(Cc::Yes(cc_flavor)) => {
1293+
if cfg!(any(target_os = "solaris", target_os = "illumos"))
1294+
&& cc_flavor == CcFlavor::AnyCc
1295+
{
12941296
// On historical Solaris systems, "cc" may have
12951297
// been Sun Studio, which is not flag-compatible
12961298
// with "gcc". This history casts a long shadow,
@@ -1299,7 +1301,7 @@ pub fn linker_and_flavor(sess: &Session) -> (PathBuf, LinkerFlavor) {
12991301
// available as "cc".
13001302
"gcc"
13011303
} else {
1302-
"cc"
1304+
cc_flavor.default_bin_name()
13031305
}
13041306
}
13051307
LinkerFlavor::Gnu(_, Lld::Yes)
@@ -1745,7 +1747,7 @@ fn add_pre_link_objects(
17451747
let empty = Default::default();
17461748
let objects = if self_contained {
17471749
&opts.pre_link_objects_self_contained
1748-
} else if !(sess.target.os == "fuchsia" && matches!(flavor, LinkerFlavor::Gnu(Cc::Yes, _))) {
1750+
} else if !(sess.target.os == "fuchsia" && matches!(flavor, LinkerFlavor::Gnu(Cc::Yes(_), _))) {
17491751
&opts.pre_link_objects
17501752
} else {
17511753
&empty
@@ -2276,7 +2278,7 @@ fn add_order_independent_options(
22762278

22772279
if sess.target.os == "fuchsia"
22782280
&& crate_type == CrateType::Executable
2279-
&& !matches!(flavor, LinkerFlavor::Gnu(Cc::Yes, _))
2281+
&& !matches!(flavor, LinkerFlavor::Gnu(Cc::Yes(_), _))
22802282
{
22812283
let prefix = if sess.opts.unstable_opts.sanitizer.contains(SanitizerSet::ADDRESS) {
22822284
"asan/"
@@ -2906,7 +2908,7 @@ fn add_apple_sdk(cmd: &mut dyn Linker, sess: &Session, flavor: LinkerFlavor) {
29062908
};
29072909

29082910
match flavor {
2909-
LinkerFlavor::Darwin(Cc::Yes, _) => {
2911+
LinkerFlavor::Darwin(Cc::Yes(_), _) => {
29102912
cmd.args(&["-isysroot", &sdk_root, "-Wl,-syslibroot", &sdk_root]);
29112913
}
29122914
LinkerFlavor::Darwin(Cc::No, _) => {

compiler/rustc_target/src/spec/aarch64_apple_ios_macabi.rs

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
use super::apple_base::{opts, Arch};
2-
use crate::spec::{Cc, FramePointer, LinkerFlavor, Lld, Target, TargetOptions};
2+
use crate::spec::{Cc, CcFlavor, FramePointer, LinkerFlavor, Lld, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let llvm_target = "arm64-apple-ios14.0-macabi";
66

77
let arch = Arch::Arm64_macabi;
88
let mut base = opts("ios", arch);
9-
base.add_pre_link_args(LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-target", llvm_target]);
9+
base.add_pre_link_args(
10+
LinkerFlavor::Darwin(Cc::Yes(CcFlavor::AnyCc), Lld::No),
11+
&["-target", llvm_target],
12+
);
1013

1114
Target {
1215
llvm_target: llvm_target.into(),

compiler/rustc_target/src/spec/aarch64_unknown_nto_qnx_710.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use super::nto_qnx_base;
2-
use crate::spec::{Cc, LinkerFlavor, Lld, Target, TargetOptions};
2+
use crate::spec::{Cc, CcFlavor, LinkerFlavor, Lld, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
Target {
@@ -20,7 +20,7 @@ pub fn target() -> Target {
2020
features: "+v8a".into(),
2121
max_atomic_width: Some(128),
2222
pre_link_args: TargetOptions::link_args(
23-
LinkerFlavor::Gnu(Cc::Yes, Lld::No),
23+
LinkerFlavor::Gnu(Cc::Yes(CcFlavor::AnyCc), Lld::No),
2424
&["-Vgcc_ntoaarch64le_cxx"],
2525
),
2626
env: "nto71".into(),

compiler/rustc_target/src/spec/apple_base.rs

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use std::{borrow::Cow, env};
22

3-
use crate::spec::{cvs, Cc, DebuginfoKind, FramePointer, LinkArgs};
3+
use crate::spec::{cvs, Cc, CcFlavor, DebuginfoKind, FramePointer, LinkArgs};
44
use crate::spec::{LinkerFlavor, Lld, SplitDebuginfo, StaticCow, Target, TargetOptions};
55

66
#[cfg(test)]
@@ -108,7 +108,11 @@ fn pre_link_args(os: &'static str, arch: Arch, abi: &'static str) -> LinkArgs {
108108
[platform_name, platform_version.clone(), platform_version].into_iter(),
109109
);
110110
if abi != "macabi" {
111-
super::add_link_args(&mut args, LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-arch", arch]);
111+
super::add_link_args(
112+
&mut args,
113+
LinkerFlavor::Darwin(Cc::Yes(CcFlavor::AnyCc), Lld::No),
114+
&["-arch", arch],
115+
);
112116
}
113117

114118
args
@@ -138,7 +142,7 @@ pub fn opts(os: &'static str, arch: Arch) -> TargetOptions {
138142
cpu: arch.target_cpu().into(),
139143
link_env_remove: link_env_remove(arch, os),
140144
vendor: "apple".into(),
141-
linker_flavor: LinkerFlavor::Darwin(Cc::Yes, Lld::No),
145+
linker_flavor: LinkerFlavor::Darwin(Cc::Yes(CcFlavor::AnyCc), Lld::No),
142146
// macOS has -dead_strip, which doesn't rely on function_sections
143147
function_sections: false,
144148
dynamic_linking: true,

compiler/rustc_target/src/spec/armv6k_nintendo_3ds.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
use crate::spec::{cvs, Cc, LinkerFlavor, Lld, RelocModel, Target, TargetOptions};
1+
use crate::spec::{cvs, Cc, CcFlavor, LinkerFlavor, Lld, RelocModel, Target, TargetOptions};
22

33
/// A base target for Nintendo 3DS devices using the devkitARM toolchain.
44
///
55
/// Requires the devkitARM toolchain for 3DS targets on the host system.
66
77
pub fn target() -> Target {
88
let pre_link_args = TargetOptions::link_args(
9-
LinkerFlavor::Gnu(Cc::Yes, Lld::No),
9+
LinkerFlavor::Gnu(Cc::Yes(CcFlavor::Gnu), Lld::No),
1010
&["-specs=3dsx.specs", "-mtune=mpcore", "-mfloat-abi=hard", "-mtp=soft"],
1111
);
1212

compiler/rustc_target/src/spec/armv7_linux_androideabi.rs

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::spec::{Cc, LinkerFlavor, Lld, SanitizerSet, Target, TargetOptions};
1+
use crate::spec::{Cc, CcFlavor, LinkerFlavor, Lld, SanitizerSet, Target, TargetOptions};
22

33
// This target if is for the baseline of the Android v7a ABI
44
// in thumb mode. It's named armv7-* instead of thumbv7-*
@@ -10,7 +10,10 @@ use crate::spec::{Cc, LinkerFlavor, Lld, SanitizerSet, Target, TargetOptions};
1010

1111
pub fn target() -> Target {
1212
let mut base = super::android_base::opts();
13-
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-march=armv7-a"]);
13+
base.add_pre_link_args(
14+
LinkerFlavor::Gnu(Cc::Yes(CcFlavor::AnyCc), Lld::No),
15+
&["-march=armv7-a"],
16+
);
1417
Target {
1518
llvm_target: "armv7-none-linux-android".into(),
1619
pointer_width: 32,

compiler/rustc_target/src/spec/armv7_sony_vita_newlibeabihf.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
use crate::abi::Endian;
2-
use crate::spec::{cvs, Cc, LinkerFlavor, Lld, RelocModel, Target, TargetOptions};
2+
use crate::spec::{cvs, Cc, CcFlavor, LinkerFlavor, Lld, RelocModel, Target, TargetOptions};
33

44
/// A base target for PlayStation Vita devices using the VITASDK toolchain (using newlib).
55
///
66
/// Requires the VITASDK toolchain on the host system.
77
88
pub fn target() -> Target {
99
let pre_link_args = TargetOptions::link_args(
10-
LinkerFlavor::Gnu(Cc::Yes, Lld::No),
10+
LinkerFlavor::Gnu(Cc::Yes(CcFlavor::AnyCc), Lld::No),
1111
&["-Wl,-q", "-Wl,--pic-veneer"],
1212
);
1313

@@ -24,7 +24,7 @@ pub fn target() -> Target {
2424
env: "newlib".into(),
2525
vendor: "sony".into(),
2626
abi: "eabihf".into(),
27-
linker_flavor: LinkerFlavor::Gnu(Cc::Yes, Lld::No),
27+
linker_flavor: LinkerFlavor::Gnu(Cc::Yes(CcFlavor::AnyCc), Lld::No),
2828
no_default_libraries: false,
2929
cpu: "cortex-a9".into(),
3030
families: cvs!["unix"],

compiler/rustc_target/src/spec/avr_gnu_base.rs

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::spec::{Cc, LinkerFlavor, Lld, RelocModel, Target, TargetOptions};
1+
use crate::spec::{Cc, CcFlavor, LinkerFlavor, Lld, RelocModel, Target, TargetOptions};
22
use object::elf;
33

44
/// A base target for AVR devices using the GNU toolchain.
@@ -18,9 +18,12 @@ pub fn target(target_cpu: &'static str, mmcu: &'static str) -> Target {
1818

1919
linker: Some("avr-gcc".into()),
2020
eh_frame_header: false,
21-
pre_link_args: TargetOptions::link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &[mmcu]),
21+
pre_link_args: TargetOptions::link_args(
22+
LinkerFlavor::Gnu(Cc::Yes(CcFlavor::Gnu), Lld::No),
23+
&[mmcu],
24+
),
2225
late_link_args: TargetOptions::link_args(
23-
LinkerFlavor::Gnu(Cc::Yes, Lld::No),
26+
LinkerFlavor::Gnu(Cc::Yes(CcFlavor::Gnu), Lld::No),
2427
&["-lgcc"],
2528
),
2629
max_atomic_width: Some(16),

compiler/rustc_target/src/spec/csky_unknown_linux_gnuabiv2.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::spec::{Cc, LinkerFlavor, Lld, Target, TargetOptions};
1+
use crate::spec::{Cc, CcFlavor, LinkerFlavor, Lld, Target, TargetOptions};
22

33
// This target is for glibc Linux on Csky
44

@@ -12,7 +12,7 @@ pub fn target() -> Target {
1212
options: TargetOptions {
1313
abi: "abiv2".into(),
1414
features: "+2e3,+3e7,+7e10,+cache,+dsp1e2,+dspe60,+e1,+e2,+edsp,+elrw,+hard-tp,+high-registers,+hwdiv,+mp,+mp1e2,+nvic,+trust".into(),
15-
late_link_args_static: TargetOptions::link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-l:libatomic.a"]),
15+
late_link_args_static: TargetOptions::link_args(LinkerFlavor::Gnu(Cc::Yes(CcFlavor::AnyCc), Lld::No), &["-l:libatomic.a"]),
1616
max_atomic_width: Some(32),
1717
..super::linux_gnu_base::opts()
1818
},

compiler/rustc_target/src/spec/hexagon_unknown_linux_musl.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::spec::{Cc, LinkerFlavor, Target};
1+
use crate::spec::{Cc, CcFlavor, LinkerFlavor, Target};
22

33
pub fn target() -> Target {
44
let mut base = super::linux_musl_base::opts();
@@ -9,7 +9,7 @@ pub fn target() -> Target {
99

1010
base.crt_static_default = false;
1111
base.has_rpath = true;
12-
base.linker_flavor = LinkerFlavor::Unix(Cc::Yes);
12+
base.linker_flavor = LinkerFlavor::Unix(Cc::Yes(CcFlavor::AnyCc));
1313

1414
base.c_enum_min_bits = Some(8);
1515

compiler/rustc_target/src/spec/i586_pc_nto_qnx700.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use super::nto_qnx_base;
2-
use crate::spec::{Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetOptions};
2+
use crate::spec::{Cc, CcFlavor, LinkerFlavor, Lld, StackProbeType, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
Target {
@@ -13,7 +13,7 @@ pub fn target() -> Target {
1313
cpu: "pentium4".into(),
1414
max_atomic_width: Some(64),
1515
pre_link_args: TargetOptions::link_args(
16-
LinkerFlavor::Gnu(Cc::Yes, Lld::No),
16+
LinkerFlavor::Gnu(Cc::Yes(CcFlavor::AnyCc), Lld::No),
1717
&["-Vgcc_ntox86_cxx"],
1818
),
1919
env: "nto70".into(),

compiler/rustc_target/src/spec/i686_apple_darwin.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
use super::apple_base::{macos_llvm_target, opts, Arch};
2-
use crate::spec::{Cc, FramePointer, LinkerFlavor, Lld, StackProbeType, Target, TargetOptions};
2+
use crate::spec::{
3+
Cc, CcFlavor, FramePointer, LinkerFlavor, Lld, StackProbeType, Target, TargetOptions,
4+
};
35

46
pub fn target() -> Target {
57
// ld64 only understands i386 and not i686
68
let arch = Arch::I386;
79
let mut base = opts("macos", arch);
810
base.max_atomic_width = Some(64);
9-
base.add_pre_link_args(LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-m32"]);
11+
base.add_pre_link_args(LinkerFlavor::Darwin(Cc::Yes(CcFlavor::AnyCc), Lld::No), &["-m32"]);
1012
base.stack_probes = StackProbeType::X86;
1113
base.frame_pointer = FramePointer::Always;
1214

compiler/rustc_target/src/spec/i686_pc_windows_gnu.rs

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::spec::{Cc, FramePointer, LinkerFlavor, Lld, Target};
1+
use crate::spec::{Cc, CcFlavor, FramePointer, LinkerFlavor, Lld, Target};
22

33
pub fn target() -> Target {
44
let mut base = super::windows_gnu_base::opts();
@@ -13,7 +13,10 @@ pub fn target() -> Target {
1313
LinkerFlavor::Gnu(Cc::No, Lld::No),
1414
&["-m", "i386pe", "--large-address-aware"],
1515
);
16-
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-Wl,--large-address-aware"]);
16+
base.add_pre_link_args(
17+
LinkerFlavor::Gnu(Cc::Yes(CcFlavor::AnyCc), Lld::No),
18+
&["-Wl,--large-address-aware"],
19+
);
1720

1821
Target {
1922
llvm_target: "i686-pc-windows-gnu".into(),

compiler/rustc_target/src/spec/i686_unknown_freebsd.rs

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1-
use crate::spec::{Cc, LinkerFlavor, Lld, StackProbeType, Target};
1+
use crate::spec::{Cc, CcFlavor, LinkerFlavor, Lld, StackProbeType, Target};
22

33
pub fn target() -> Target {
44
let mut base = super::freebsd_base::opts();
55
base.cpu = "pentium4".into();
66
base.max_atomic_width = Some(64);
7-
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32", "-Wl,-znotext"]);
7+
base.add_pre_link_args(
8+
LinkerFlavor::Gnu(Cc::Yes(CcFlavor::AnyCc), Lld::No),
9+
&["-m32", "-Wl,-znotext"],
10+
);
811
base.stack_probes = StackProbeType::X86;
912

1013
Target {

compiler/rustc_target/src/spec/i686_unknown_haiku.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
use crate::spec::{Cc, LinkerFlavor, Lld, StackProbeType, Target};
1+
use crate::spec::{Cc, CcFlavor, LinkerFlavor, Lld, StackProbeType, Target};
22

33
pub fn target() -> Target {
44
let mut base = super::haiku_base::opts();
55
base.cpu = "pentium4".into();
66
base.max_atomic_width = Some(64);
7-
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32"]);
7+
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes(CcFlavor::AnyCc), Lld::No), &["-m32"]);
88
base.stack_probes = StackProbeType::X86;
99

1010
Target {

compiler/rustc_target/src/spec/i686_unknown_linux_gnu.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
use crate::spec::{Cc, LinkerFlavor, Lld, SanitizerSet, StackProbeType, Target};
1+
use crate::spec::{Cc, CcFlavor, LinkerFlavor, Lld, SanitizerSet, StackProbeType, Target};
22

33
pub fn target() -> Target {
44
let mut base = super::linux_gnu_base::opts();
55
base.cpu = "pentium4".into();
66
base.max_atomic_width = Some(64);
77
base.supported_sanitizers = SanitizerSet::ADDRESS;
8-
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32"]);
8+
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes(CcFlavor::AnyCc), Lld::No), &["-m32"]);
99
base.stack_probes = StackProbeType::X86;
1010

1111
Target {

compiler/rustc_target/src/spec/i686_unknown_linux_musl.rs

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1-
use crate::spec::{Cc, FramePointer, LinkerFlavor, Lld, StackProbeType, Target};
1+
use crate::spec::{Cc, CcFlavor, FramePointer, LinkerFlavor, Lld, StackProbeType, Target};
22

33
pub fn target() -> Target {
44
let mut base = super::linux_musl_base::opts();
55
base.cpu = "pentium4".into();
66
base.max_atomic_width = Some(64);
7-
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32", "-Wl,-melf_i386"]);
7+
base.add_pre_link_args(
8+
LinkerFlavor::Gnu(Cc::Yes(CcFlavor::AnyCc), Lld::No),
9+
&["-m32", "-Wl,-melf_i386"],
10+
);
811
base.stack_probes = StackProbeType::X86;
912

1013
// The unwinder used by i686-unknown-linux-musl, the LLVM libunwind

compiler/rustc_target/src/spec/i686_unknown_netbsd.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
use crate::spec::{Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetOptions};
1+
use crate::spec::{Cc, CcFlavor, LinkerFlavor, Lld, StackProbeType, Target, TargetOptions};
22

33
pub fn target() -> Target {
44
let mut base = super::netbsd_base::opts();
55
base.cpu = "pentium4".into();
66
base.max_atomic_width = Some(64);
7-
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32"]);
7+
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes(CcFlavor::AnyCc), Lld::No), &["-m32"]);
88
base.stack_probes = StackProbeType::X86;
99

1010
Target {

compiler/rustc_target/src/spec/i686_unknown_openbsd.rs

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1-
use crate::spec::{Cc, LinkerFlavor, Lld, StackProbeType, Target};
1+
use crate::spec::{Cc, CcFlavor, LinkerFlavor, Lld, StackProbeType, Target};
22

33
pub fn target() -> Target {
44
let mut base = super::openbsd_base::opts();
55
base.cpu = "pentium4".into();
66
base.max_atomic_width = Some(64);
7-
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32", "-fuse-ld=lld"]);
7+
base.add_pre_link_args(
8+
LinkerFlavor::Gnu(Cc::Yes(CcFlavor::AnyCc), Lld::No),
9+
&["-m32", "-fuse-ld=lld"],
10+
);
811
base.stack_probes = StackProbeType::X86;
912

1013
Target {

0 commit comments

Comments
 (0)