Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 233de9d

Browse files
committedDec 13, 2023
Set the StackProbeType in apple::opts
1 parent b99b5e5 commit 233de9d

17 files changed

+32
-56
lines changed
 

‎compiler/rustc_target/src/spec/base/apple/mod.rs

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

33
use crate::spec::{add_link_args, add_link_args_iter};
4-
use crate::spec::{cvs, Cc, DebuginfoKind, FramePointer, LinkArgs};
5-
use crate::spec::{LinkerFlavor, Lld, SplitDebuginfo, StaticCow, Target, TargetOptions};
4+
use crate::spec::{cvs, Cc, DebuginfoKind, FramePointer, LinkArgs, LinkerFlavor, Lld};
5+
use crate::spec::{SplitDebuginfo, StackProbeType, StaticCow, Target, TargetOptions};
66

77
#[cfg(test)]
88
mod tests;
@@ -81,6 +81,14 @@ impl Arch {
8181
Arm64_sim => "apple-a12",
8282
}
8383
}
84+
85+
fn stack_probes(self) -> StackProbeType {
86+
match self {
87+
Armv7k | Armv7s => StackProbeType::None,
88+
Arm64 | Arm64e | Arm64_32 | I386 | I686 | X86_64 | X86_64h | X86_64_sim
89+
| X86_64_macabi | Arm64_macabi | Arm64_sim => StackProbeType::Inline,
90+
}
91+
}
8492
}
8593

8694
fn pre_link_args(os: &'static str, arch: Arch, abi: &'static str) -> LinkArgs {
@@ -147,6 +155,7 @@ pub fn opts(os: &'static str, arch: Arch) -> TargetOptions {
147155
abi_return_struct_as_int: true,
148156
emit_debug_gdb_scripts: false,
149157
eh_frame_header: false,
158+
stack_probes: arch.stack_probes(),
150159

151160
debuginfo_kind: DebuginfoKind::DwarfDsym,
152161
// The historical default for macOS targets is to run `dsymutil` which

‎compiler/rustc_target/src/spec/targets/aarch64_apple_darwin.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
use crate::spec::base::apple::{macos_llvm_target, opts, Arch};
2-
use crate::spec::{FramePointer, SanitizerSet, StackProbeType, Target, TargetOptions};
2+
use crate::spec::{FramePointer, SanitizerSet, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let arch = Arch::Arm64;
66
let mut base = opts("macos", arch);
77
base.cpu = "apple-m1".into();
88
base.max_atomic_width = Some(128);
9-
base.stack_probes = StackProbeType::Inline;
109

1110
// FIXME: The leak sanitizer currently fails the tests, see #88132.
1211
base.supported_sanitizers = SanitizerSet::ADDRESS | SanitizerSet::CFI | SanitizerSet::THREAD;

‎compiler/rustc_target/src/spec/targets/aarch64_apple_ios.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{ios_llvm_target, opts, Arch};
2-
use crate::spec::{FramePointer, SanitizerSet, StackProbeType, Target, TargetOptions};
2+
use crate::spec::{FramePointer, SanitizerSet, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let arch = Arch::Arm64;
@@ -18,7 +18,6 @@ pub fn target() -> Target {
1818
options: TargetOptions {
1919
features: "+neon,+fp-armv8,+apple-a7".into(),
2020
max_atomic_width: Some(128),
21-
stack_probes: StackProbeType::Inline,
2221
frame_pointer: FramePointer::NonLeaf,
2322
..base
2423
},

‎compiler/rustc_target/src/spec/targets/aarch64_apple_ios_macabi.rs

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
use crate::spec::base::apple::{opts, Arch};
2-
use crate::spec::{
3-
Cc, FramePointer, LinkerFlavor, Lld, SanitizerSet, StackProbeType, Target, TargetOptions,
4-
};
2+
use crate::spec::{Cc, FramePointer, LinkerFlavor, Lld, SanitizerSet, Target, TargetOptions};
53

64
pub fn target() -> Target {
75
let llvm_target = "arm64-apple-ios14.0-macabi";
@@ -19,7 +17,6 @@ pub fn target() -> Target {
1917
options: TargetOptions {
2018
features: "+neon,+fp-armv8,+apple-a12".into(),
2119
max_atomic_width: Some(128),
22-
stack_probes: StackProbeType::Inline,
2320
frame_pointer: FramePointer::NonLeaf,
2421
..base
2522
},

‎compiler/rustc_target/src/spec/targets/aarch64_apple_ios_sim.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{ios_sim_llvm_target, opts, Arch};
2-
use crate::spec::{FramePointer, SanitizerSet, StackProbeType, Target, TargetOptions};
2+
use crate::spec::{FramePointer, SanitizerSet, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let arch = Arch::Arm64_sim;
@@ -18,7 +18,6 @@ pub fn target() -> Target {
1818
options: TargetOptions {
1919
features: "+neon,+fp-armv8,+apple-a7".into(),
2020
max_atomic_width: Some(128),
21-
stack_probes: StackProbeType::Inline,
2221
frame_pointer: FramePointer::NonLeaf,
2322
..base
2423
},

‎compiler/rustc_target/src/spec/targets/aarch64_apple_tvos.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{opts, tvos_llvm_target, Arch};
2-
use crate::spec::{FramePointer, StackProbeType, Target, TargetOptions};
2+
use crate::spec::{FramePointer, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let arch = Arch::Arm64;
@@ -11,7 +11,6 @@ pub fn target() -> Target {
1111
options: TargetOptions {
1212
features: "+neon,+fp-armv8,+apple-a7".into(),
1313
max_atomic_width: Some(128),
14-
stack_probes: StackProbeType::Inline,
1514
frame_pointer: FramePointer::NonLeaf,
1615
..opts("tvos", arch)
1716
},

‎compiler/rustc_target/src/spec/targets/aarch64_apple_tvos_sim.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{opts, tvos_sim_llvm_target, Arch};
2-
use crate::spec::{FramePointer, StackProbeType, Target, TargetOptions};
2+
use crate::spec::{FramePointer, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let arch = Arch::Arm64_sim;
@@ -11,7 +11,6 @@ pub fn target() -> Target {
1111
options: TargetOptions {
1212
features: "+neon,+fp-armv8,+apple-a7".into(),
1313
max_atomic_width: Some(128),
14-
stack_probes: StackProbeType::Inline,
1514
frame_pointer: FramePointer::NonLeaf,
1615
..opts("tvos", arch)
1716
},

‎compiler/rustc_target/src/spec/targets/aarch64_apple_watchos_sim.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{opts, watchos_sim_llvm_target, Arch};
2-
use crate::spec::{FramePointer, StackProbeType, Target, TargetOptions};
2+
use crate::spec::{FramePointer, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let arch = Arch::Arm64_sim;
@@ -15,7 +15,6 @@ pub fn target() -> Target {
1515
options: TargetOptions {
1616
features: "+neon,+fp-armv8,+apple-a7".into(),
1717
max_atomic_width: Some(128),
18-
stack_probes: StackProbeType::Inline,
1918
frame_pointer: FramePointer::NonLeaf,
2019
..opts("watchos", arch)
2120
},

‎compiler/rustc_target/src/spec/targets/arm64_32_apple_watchos.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{opts, Arch};
2-
use crate::spec::{StackProbeType, Target, TargetOptions};
2+
use crate::spec::{Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let base = opts("watchos", Arch::Arm64_32);
@@ -11,7 +11,6 @@ pub fn target() -> Target {
1111
options: TargetOptions {
1212
features: "+v8a,+neon,+fp-armv8,+apple-a7".into(),
1313
max_atomic_width: Some(128),
14-
stack_probes: StackProbeType::Inline,
1514
dynamic_linking: false,
1615
position_independent_executables: true,
1716
..base

‎compiler/rustc_target/src/spec/targets/i386_apple_ios.rs

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{ios_sim_llvm_target, opts, Arch};
2-
use crate::spec::{StackProbeType, Target, TargetOptions};
2+
use crate::spec::{Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let arch = Arch::I386;
@@ -14,10 +14,6 @@ pub fn target() -> Target {
1414
f64:32:64-f80:128-n8:16:32-S128"
1515
.into(),
1616
arch: arch.target_arch(),
17-
options: TargetOptions {
18-
max_atomic_width: Some(64),
19-
stack_probes: StackProbeType::Inline,
20-
..opts("ios", arch)
21-
},
17+
options: TargetOptions { max_atomic_width: Some(64), ..opts("ios", arch) },
2218
}
2319
}

‎compiler/rustc_target/src/spec/targets/i686_apple_darwin.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
use crate::spec::base::apple::{macos_llvm_target, opts, Arch};
2-
use crate::spec::{Cc, FramePointer, LinkerFlavor, Lld, StackProbeType, Target, TargetOptions};
2+
use crate::spec::{Cc, FramePointer, LinkerFlavor, Lld, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
// ld64 only understands i386 and not i686
66
let arch = Arch::I386;
77
let mut base = opts("macos", arch);
88
base.max_atomic_width = Some(64);
99
base.add_pre_link_args(LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-m32"]);
10-
base.stack_probes = StackProbeType::Inline;
1110
base.frame_pointer = FramePointer::Always;
1211

1312
Target {

‎compiler/rustc_target/src/spec/targets/x86_64_apple_darwin.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
use crate::spec::base::apple::{macos_llvm_target, opts, Arch};
22
use crate::spec::{Cc, FramePointer, LinkerFlavor, Lld, SanitizerSet};
3-
use crate::spec::{StackProbeType, Target, TargetOptions};
3+
use crate::spec::{Target, TargetOptions};
44

55
pub fn target() -> Target {
66
let arch = Arch::X86_64;
77
let mut base = opts("macos", arch);
88
base.max_atomic_width = Some(128); // penryn+ supports cmpxchg16b
99
base.frame_pointer = FramePointer::Always;
1010
base.add_pre_link_args(LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-m64"]);
11-
base.stack_probes = StackProbeType::Inline;
1211
base.supported_sanitizers =
1312
SanitizerSet::ADDRESS | SanitizerSet::CFI | SanitizerSet::LEAK | SanitizerSet::THREAD;
1413

Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{ios_sim_llvm_target, opts, Arch};
2-
use crate::spec::{SanitizerSet, StackProbeType, Target, TargetOptions};
2+
use crate::spec::{SanitizerSet, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let arch = Arch::X86_64_sim;
@@ -12,10 +12,6 @@ pub fn target() -> Target {
1212
data_layout: "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
1313
.into(),
1414
arch: arch.target_arch(),
15-
options: TargetOptions {
16-
max_atomic_width: Some(128),
17-
stack_probes: StackProbeType::Inline,
18-
..base
19-
},
15+
options: TargetOptions { max_atomic_width: Some(128), ..base },
2016
}
2117
}

‎compiler/rustc_target/src/spec/targets/x86_64_apple_ios_macabi.rs

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{opts, Arch};
2-
use crate::spec::{Cc, LinkerFlavor, Lld, SanitizerSet, StackProbeType, Target, TargetOptions};
2+
use crate::spec::{Cc, LinkerFlavor, Lld, SanitizerSet, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let llvm_target = "x86_64-apple-ios14.0-macabi";
@@ -15,10 +15,6 @@ pub fn target() -> Target {
1515
data_layout: "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
1616
.into(),
1717
arch: arch.target_arch(),
18-
options: TargetOptions {
19-
max_atomic_width: Some(128),
20-
stack_probes: StackProbeType::Inline,
21-
..base
22-
},
18+
options: TargetOptions { max_atomic_width: Some(128), ..base },
2319
}
2420
}
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{opts, tvos_sim_llvm_target, Arch};
2-
use crate::spec::{StackProbeType, Target, TargetOptions};
2+
use crate::spec::{Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let arch = Arch::X86_64_sim;
@@ -9,10 +9,6 @@ pub fn target() -> Target {
99
data_layout: "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
1010
.into(),
1111
arch: arch.target_arch(),
12-
options: TargetOptions {
13-
max_atomic_width: Some(128),
14-
stack_probes: StackProbeType::Inline,
15-
..opts("tvos", arch)
16-
},
12+
options: TargetOptions { max_atomic_width: Some(128), ..opts("tvos", arch) },
1713
}
1814
}
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::spec::base::apple::{opts, watchos_sim_llvm_target, Arch};
2-
use crate::spec::{StackProbeType, Target, TargetOptions};
2+
use crate::spec::{Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let arch = Arch::X86_64_sim;
@@ -9,10 +9,6 @@ pub fn target() -> Target {
99
data_layout: "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
1010
.into(),
1111
arch: arch.target_arch(),
12-
options: TargetOptions {
13-
max_atomic_width: Some(128),
14-
stack_probes: StackProbeType::Inline,
15-
..opts("watchos", arch)
16-
},
12+
options: TargetOptions { max_atomic_width: Some(128), ..opts("watchos", arch) },
1713
}
1814
}

‎compiler/rustc_target/src/spec/targets/x86_64h_apple_darwin.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
use crate::spec::base::apple::{macos_llvm_target, opts, Arch};
22
use crate::spec::{Cc, FramePointer, LinkerFlavor, Lld, SanitizerSet};
3-
use crate::spec::{StackProbeType, Target, TargetOptions};
3+
use crate::spec::{Target, TargetOptions};
44

55
pub fn target() -> Target {
66
let arch = Arch::X86_64h;
77
let mut base = opts("macos", arch);
88
base.max_atomic_width = Some(128);
99
base.frame_pointer = FramePointer::Always;
1010
base.add_pre_link_args(LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-m64"]);
11-
base.stack_probes = StackProbeType::Inline;
1211
base.supported_sanitizers =
1312
SanitizerSet::ADDRESS | SanitizerSet::CFI | SanitizerSet::LEAK | SanitizerSet::THREAD;
1413

0 commit comments

Comments
 (0)
Failed to load comments.