Skip to content

Commit b99b5e5

Browse files
committed
Enable stack probes on aarch64 for LLVM 18
1 parent 370c911 commit b99b5e5

32 files changed

+80
-35
lines changed

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
use crate::spec::base::apple::{macos_llvm_target, opts, Arch};
2-
use crate::spec::{FramePointer, SanitizerSet, Target, TargetOptions};
2+
use crate::spec::{FramePointer, SanitizerSet, StackProbeType, 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;
910

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

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

+2-1
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, Target, TargetOptions};
2+
use crate::spec::{FramePointer, SanitizerSet, StackProbeType, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let arch = Arch::Arm64;
@@ -18,6 +18,7 @@ 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,
2122
frame_pointer: FramePointer::NonLeaf,
2223
..base
2324
},

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

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

46
pub fn target() -> Target {
57
let llvm_target = "arm64-apple-ios14.0-macabi";
@@ -17,6 +19,7 @@ pub fn target() -> Target {
1719
options: TargetOptions {
1820
features: "+neon,+fp-armv8,+apple-a12".into(),
1921
max_atomic_width: Some(128),
22+
stack_probes: StackProbeType::Inline,
2023
frame_pointer: FramePointer::NonLeaf,
2124
..base
2225
},

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

+2-1
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, Target, TargetOptions};
2+
use crate::spec::{FramePointer, SanitizerSet, StackProbeType, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let arch = Arch::Arm64_sim;
@@ -18,6 +18,7 @@ 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,
2122
frame_pointer: FramePointer::NonLeaf,
2223
..base
2324
},

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

+2-1
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, Target, TargetOptions};
2+
use crate::spec::{FramePointer, StackProbeType, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let arch = Arch::Arm64;
@@ -11,6 +11,7 @@ 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,
1415
frame_pointer: FramePointer::NonLeaf,
1516
..opts("tvos", arch)
1617
},

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

+2-1
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, Target, TargetOptions};
2+
use crate::spec::{FramePointer, StackProbeType, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let arch = Arch::Arm64_sim;
@@ -11,6 +11,7 @@ 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,
1415
frame_pointer: FramePointer::NonLeaf,
1516
..opts("tvos", arch)
1617
},

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

+2-1
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, Target, TargetOptions};
2+
use crate::spec::{FramePointer, StackProbeType, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let arch = Arch::Arm64_sim;
@@ -15,6 +15,7 @@ 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,
1819
frame_pointer: FramePointer::NonLeaf,
1920
..opts("watchos", arch)
2021
},

compiler/rustc_target/src/spec/targets/aarch64_be_unknown_linux_gnu.rs

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

44
pub fn target() -> Target {
55
Target {
@@ -10,6 +10,7 @@ pub fn target() -> Target {
1010
options: TargetOptions {
1111
features: "+v8a,+outline-atomics".into(),
1212
max_atomic_width: Some(128),
13+
stack_probes: StackProbeType::Inline,
1314
mcount: "\u{1}_mcount".into(),
1415
endian: Endian::Big,
1516
..base::linux_gnu::opts()

compiler/rustc_target/src/spec/targets/aarch64_be_unknown_linux_gnu_ilp32.rs

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

44
pub fn target() -> Target {
55
let mut base = base::linux_gnu::opts();
@@ -13,6 +13,7 @@ pub fn target() -> Target {
1313
options: TargetOptions {
1414
abi: "ilp32".into(),
1515
features: "+v8a,+outline-atomics".into(),
16+
stack_probes: StackProbeType::Inline,
1617
mcount: "\u{1}_mcount".into(),
1718
endian: Endian::Big,
1819
..base

compiler/rustc_target/src/spec/targets/aarch64_be_unknown_netbsd.rs

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

44
pub fn target() -> Target {
55
Target {
@@ -10,6 +10,7 @@ pub fn target() -> Target {
1010
options: TargetOptions {
1111
mcount: "__mcount".into(),
1212
max_atomic_width: Some(128),
13+
stack_probes: StackProbeType::Inline,
1314
endian: Endian::Big,
1415
..base::netbsd::opts()
1516
},

compiler/rustc_target/src/spec/targets/aarch64_kmc_solid_asp3.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::spec::{base, RelocModel, Target, TargetOptions};
1+
use crate::spec::{base, RelocModel, StackProbeType, Target, TargetOptions};
22

33
pub fn target() -> Target {
44
let base = base::solid::opts("asp3");
@@ -13,6 +13,7 @@ pub fn target() -> Target {
1313
relocation_model: RelocModel::Static,
1414
disable_redzone: true,
1515
max_atomic_width: Some(128),
16+
stack_probes: StackProbeType::Inline,
1617
..base
1718
},
1819
}

compiler/rustc_target/src/spec/targets/aarch64_linux_android.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::spec::{base, SanitizerSet, Target, TargetOptions};
1+
use crate::spec::{base, SanitizerSet, StackProbeType, Target, TargetOptions};
22

33
// See https://developer.android.com/ndk/guides/abis.html#arm64-v8a
44
// for target ABI requirements.
@@ -14,6 +14,7 @@ pub fn target() -> Target {
1414
// As documented in https://developer.android.com/ndk/guides/cpu-features.html
1515
// the neon (ASIMD) and FP must exist on all android aarch64 targets.
1616
features: "+v8a,+neon,+fp-armv8".into(),
17+
stack_probes: StackProbeType::Inline,
1718
supported_sanitizers: SanitizerSet::CFI
1819
| SanitizerSet::HWADDRESS
1920
| SanitizerSet::MEMTAG

compiler/rustc_target/src/spec/targets/aarch64_nintendo_switch_freestanding.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
use crate::spec::{Cc, LinkerFlavor, Lld, PanicStrategy, RelroLevel, Target, TargetOptions};
1+
use crate::spec::{
2+
Cc, LinkerFlavor, Lld, PanicStrategy, RelroLevel, StackProbeType, Target, TargetOptions,
3+
};
24

35
const LINKER_SCRIPT: &str = include_str!("./aarch64_nintendo_switch_freestanding_linker_script.ld");
46

@@ -16,6 +18,7 @@ pub fn target() -> Target {
1618
link_script: Some(LINKER_SCRIPT.into()),
1719
os: "horizon".into(),
1820
max_atomic_width: Some(128),
21+
stack_probes: StackProbeType::Inline,
1922
panic_strategy: PanicStrategy::Abort,
2023
position_independent_executables: true,
2124
dynamic_linking: true,

compiler/rustc_target/src/spec/targets/aarch64_unknown_freebsd.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::spec::{base, SanitizerSet, Target, TargetOptions};
1+
use crate::spec::{base, SanitizerSet, StackProbeType, Target, TargetOptions};
22

33
pub fn target() -> Target {
44
Target {
@@ -9,6 +9,7 @@ pub fn target() -> Target {
99
options: TargetOptions {
1010
features: "+v8a".into(),
1111
max_atomic_width: Some(128),
12+
stack_probes: StackProbeType::Inline,
1213
supported_sanitizers: SanitizerSet::ADDRESS
1314
| SanitizerSet::CFI
1415
| SanitizerSet::MEMORY

compiler/rustc_target/src/spec/targets/aarch64_unknown_fuchsia.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::spec::{base, SanitizerSet, Target, TargetOptions};
1+
use crate::spec::{base, SanitizerSet, StackProbeType, Target, TargetOptions};
22

33
pub fn target() -> Target {
44
Target {
@@ -9,6 +9,7 @@ pub fn target() -> Target {
99
options: TargetOptions {
1010
features: "+v8a".into(),
1111
max_atomic_width: Some(128),
12+
stack_probes: StackProbeType::Inline,
1213
supported_sanitizers: SanitizerSet::ADDRESS
1314
| SanitizerSet::CFI
1415
| SanitizerSet::SHADOWCALLSTACK,

compiler/rustc_target/src/spec/targets/aarch64_unknown_hermit.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::spec::{base, Target, TargetOptions};
1+
use crate::spec::{base, StackProbeType, Target, TargetOptions};
22

33
pub fn target() -> Target {
44
Target {
@@ -9,6 +9,7 @@ pub fn target() -> Target {
99
options: TargetOptions {
1010
features: "+v8a,+strict-align,+neon,+fp-armv8".into(),
1111
max_atomic_width: Some(128),
12+
stack_probes: StackProbeType::Inline,
1213
..base::hermit::opts()
1314
},
1415
}

compiler/rustc_target/src/spec/targets/aarch64_unknown_linux_gnu.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::spec::{base, SanitizerSet, Target, TargetOptions};
1+
use crate::spec::{base, SanitizerSet, StackProbeType, Target, TargetOptions};
22

33
pub fn target() -> Target {
44
Target {
@@ -10,6 +10,7 @@ pub fn target() -> Target {
1010
features: "+v8a,+outline-atomics".into(),
1111
mcount: "\u{1}_mcount".into(),
1212
max_atomic_width: Some(128),
13+
stack_probes: StackProbeType::Inline,
1314
supported_sanitizers: SanitizerSet::ADDRESS
1415
| SanitizerSet::CFI
1516
| SanitizerSet::LEAK

compiler/rustc_target/src/spec/targets/aarch64_unknown_linux_gnu_ilp32.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::spec::{base, Target, TargetOptions};
1+
use crate::spec::{base, StackProbeType, Target, TargetOptions};
22

33
pub fn target() -> Target {
44
Target {
@@ -10,6 +10,7 @@ pub fn target() -> Target {
1010
abi: "ilp32".into(),
1111
features: "+v8a,+outline-atomics".into(),
1212
max_atomic_width: Some(128),
13+
stack_probes: StackProbeType::Inline,
1314
mcount: "\u{1}_mcount".into(),
1415
..base::linux_gnu::opts()
1516
},

compiler/rustc_target/src/spec/targets/aarch64_unknown_linux_musl.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
use crate::spec::{base, SanitizerSet, Target, TargetOptions};
1+
use crate::spec::{base, SanitizerSet, StackProbeType, Target, TargetOptions};
22

33
pub fn target() -> Target {
44
let mut base = base::linux_musl::opts();
55
base.max_atomic_width = Some(128);
66
base.supports_xray = true;
77
base.features = "+v8a".into();
8+
base.stack_probes = StackProbeType::Inline;
89
base.supported_sanitizers = SanitizerSet::ADDRESS
910
| SanitizerSet::CFI
1011
| SanitizerSet::LEAK

compiler/rustc_target/src/spec/targets/aarch64_unknown_linux_ohos.rs

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

44
pub fn target() -> Target {
55
let mut base = base::linux_ohos::opts();
@@ -14,6 +14,7 @@ pub fn target() -> Target {
1414
options: TargetOptions {
1515
features: "+reserve-x18".into(),
1616
mcount: "\u{1}_mcount".into(),
17+
stack_probes: StackProbeType::Inline,
1718
supported_sanitizers: SanitizerSet::ADDRESS
1819
| SanitizerSet::CFI
1920
| SanitizerSet::LEAK

compiler/rustc_target/src/spec/targets/aarch64_unknown_netbsd.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::spec::{base, Target, TargetOptions};
1+
use crate::spec::{base, StackProbeType, Target, TargetOptions};
22

33
pub fn target() -> Target {
44
Target {
@@ -10,6 +10,7 @@ pub fn target() -> Target {
1010
features: "+v8a".into(),
1111
mcount: "__mcount".into(),
1212
max_atomic_width: Some(128),
13+
stack_probes: StackProbeType::Inline,
1314
..base::netbsd::opts()
1415
},
1516
}

compiler/rustc_target/src/spec/targets/aarch64_unknown_none.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
// For example, `-C target-cpu=cortex-a53`.
88

99
use crate::spec::{
10-
Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, SanitizerSet, Target, TargetOptions,
10+
Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, SanitizerSet, StackProbeType, Target,
11+
TargetOptions,
1112
};
1213

1314
pub fn target() -> Target {
@@ -24,6 +25,7 @@ pub fn target() -> Target {
2425
relocation_model: RelocModel::Static,
2526
disable_redzone: true,
2627
max_atomic_width: Some(128),
28+
stack_probes: StackProbeType::Inline,
2729
panic_strategy: PanicStrategy::Abort,
2830
..Default::default()
2931
};

compiler/rustc_target/src/spec/targets/aarch64_unknown_none_softfloat.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
//
77
// For example, `-C target-cpu=cortex-a53`.
88

9-
use crate::spec::{Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetOptions};
9+
use crate::spec::{
10+
Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, StackProbeType, Target, TargetOptions,
11+
};
1012

1113
pub fn target() -> Target {
1214
let opts = TargetOptions {
@@ -17,6 +19,7 @@ pub fn target() -> Target {
1719
relocation_model: RelocModel::Static,
1820
disable_redzone: true,
1921
max_atomic_width: Some(128),
22+
stack_probes: StackProbeType::Inline,
2023
panic_strategy: PanicStrategy::Abort,
2124
..Default::default()
2225
};

compiler/rustc_target/src/spec/targets/aarch64_unknown_openbsd.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::spec::{base, Target, TargetOptions};
1+
use crate::spec::{base, StackProbeType, Target, TargetOptions};
22

33
pub fn target() -> Target {
44
Target {
@@ -9,6 +9,7 @@ pub fn target() -> Target {
99
options: TargetOptions {
1010
features: "+v8a".into(),
1111
max_atomic_width: Some(128),
12+
stack_probes: StackProbeType::Inline,
1213
..base::openbsd::opts()
1314
},
1415
}

compiler/rustc_target/src/spec/targets/aarch64_unknown_redox.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
use crate::spec::{base, Target};
1+
use crate::spec::{base, StackProbeType, Target};
22

33
pub fn target() -> Target {
44
let mut base = base::redox::opts();
55
base.max_atomic_width = Some(128);
6+
base.stack_probes = StackProbeType::Inline;
67
base.features = "+v8a".into();
78

89
Target {

compiler/rustc_target/src/spec/targets/aarch64_unknown_teeos.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
use crate::spec::{base, Target};
1+
use crate::spec::{base, StackProbeType, Target};
22

33
pub fn target() -> Target {
44
let mut base = base::teeos::opts();
55
base.features = "+strict-align,+neon,+fp-armv8".into();
66
base.max_atomic_width = Some(128);
7+
base.stack_probes = StackProbeType::Inline;
78

89
Target {
910
llvm_target: "aarch64-unknown-none".into(),

compiler/rustc_target/src/spec/targets/aarch64_wrs_vxworks.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::spec::{base, Target, TargetOptions};
1+
use crate::spec::{base, StackProbeType, Target, TargetOptions};
22

33
pub fn target() -> Target {
44
Target {
@@ -9,6 +9,7 @@ pub fn target() -> Target {
99
options: TargetOptions {
1010
features: "+v8a".into(),
1111
max_atomic_width: Some(128),
12+
stack_probes: StackProbeType::Inline,
1213
..base::vxworks::opts()
1314
},
1415
}

0 commit comments

Comments
 (0)