Skip to content

Commit 8a497b7

Browse files
committed
Auto merge of #102328 - cuviper:ibm-stack-probes, r=nagisa
Enable inline stack probes on PowerPC and SystemZ The LLVM PowerPC and SystemZ targets have both supported `"probe-stack"="inline-asm"` for longer than our current minimum LLVM 13 requirement, so we can turn this on for all `powerpc`, `powerpc64`, `powerpc64le`, and `s390x` targets in Rust. These are all tier-2 or lower, so CI does not run their tests, but I have confirmed that their `linux-gnu` variants do pass on RHEL. cc #43241
2 parents 1536a53 + ad8f519 commit 8a497b7

23 files changed

+107
-48
lines changed

compiler/rustc_target/src/spec/powerpc64_unknown_freebsd.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
use crate::abi::Endian;
2-
use crate::spec::{LinkerFlavor, Target, TargetOptions};
2+
use crate::spec::{LinkerFlavor, StackProbeType, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let mut base = super::freebsd_base::opts();
66
base.cpu = "ppc64".into();
77
base.add_pre_link_args(LinkerFlavor::Gcc, &["-m64"]);
88
base.max_atomic_width = Some(64);
9+
base.stack_probes = StackProbeType::Inline;
910

1011
Target {
1112
llvm_target: "powerpc64-unknown-freebsd".into(),

compiler/rustc_target/src/spec/powerpc64_unknown_linux_gnu.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
use crate::abi::Endian;
2-
use crate::spec::{LinkerFlavor, Target, TargetOptions};
2+
use crate::spec::{LinkerFlavor, StackProbeType, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let mut base = super::linux_gnu_base::opts();
66
base.cpu = "ppc64".into();
77
base.add_pre_link_args(LinkerFlavor::Gcc, &["-m64"]);
88
base.max_atomic_width = Some(64);
9+
base.stack_probes = StackProbeType::Inline;
910

1011
Target {
1112
llvm_target: "powerpc64-unknown-linux-gnu".into(),

compiler/rustc_target/src/spec/powerpc64_unknown_linux_musl.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
use crate::abi::Endian;
2-
use crate::spec::{LinkerFlavor, Target, TargetOptions};
2+
use crate::spec::{LinkerFlavor, StackProbeType, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let mut base = super::linux_musl_base::opts();
66
base.cpu = "ppc64".into();
77
base.add_pre_link_args(LinkerFlavor::Gcc, &["-m64"]);
88
base.max_atomic_width = Some(64);
9+
base.stack_probes = StackProbeType::Inline;
910

1011
Target {
1112
llvm_target: "powerpc64-unknown-linux-musl".into(),

compiler/rustc_target/src/spec/powerpc64_unknown_openbsd.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
use crate::abi::Endian;
2-
use crate::spec::{LinkerFlavor, Target, TargetOptions};
2+
use crate::spec::{LinkerFlavor, StackProbeType, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let mut base = super::openbsd_base::opts();
66
base.cpu = "ppc64".into();
77
base.add_pre_link_args(LinkerFlavor::Gcc, &["-m64"]);
88
base.max_atomic_width = Some(64);
9+
base.stack_probes = StackProbeType::Inline;
910

1011
Target {
1112
llvm_target: "powerpc64-unknown-openbsd".into(),

compiler/rustc_target/src/spec/powerpc64_wrs_vxworks.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
use crate::abi::Endian;
2-
use crate::spec::{LinkerFlavor, Target, TargetOptions};
2+
use crate::spec::{LinkerFlavor, StackProbeType, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let mut base = super::vxworks_base::opts();
66
base.cpu = "ppc64".into();
77
base.add_pre_link_args(LinkerFlavor::Gcc, &["-m64"]);
88
base.max_atomic_width = Some(64);
9+
base.stack_probes = StackProbeType::Inline;
910

1011
Target {
1112
llvm_target: "powerpc64-unknown-linux-gnu".into(),

compiler/rustc_target/src/spec/powerpc64le_unknown_freebsd.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
use crate::spec::{LinkerFlavor, Target, TargetOptions};
1+
use crate::spec::{LinkerFlavor, StackProbeType, Target, TargetOptions};
22

33
pub fn target() -> Target {
44
let mut base = super::freebsd_base::opts();
55
base.cpu = "ppc64le".into();
66
base.add_pre_link_args(LinkerFlavor::Gcc, &["-m64"]);
77
base.max_atomic_width = Some(64);
8+
base.stack_probes = StackProbeType::Inline;
89

910
Target {
1011
llvm_target: "powerpc64le-unknown-freebsd".into(),

compiler/rustc_target/src/spec/powerpc64le_unknown_linux_gnu.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
use crate::spec::{LinkerFlavor, Target, TargetOptions};
1+
use crate::spec::{LinkerFlavor, StackProbeType, Target, TargetOptions};
22

33
pub fn target() -> Target {
44
let mut base = super::linux_gnu_base::opts();
55
base.cpu = "ppc64le".into();
66
base.add_pre_link_args(LinkerFlavor::Gcc, &["-m64"]);
77
base.max_atomic_width = Some(64);
8+
base.stack_probes = StackProbeType::Inline;
89

910
Target {
1011
llvm_target: "powerpc64le-unknown-linux-gnu".into(),

compiler/rustc_target/src/spec/powerpc64le_unknown_linux_musl.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
use crate::spec::{LinkerFlavor, Target, TargetOptions};
1+
use crate::spec::{LinkerFlavor, StackProbeType, Target, TargetOptions};
22

33
pub fn target() -> Target {
44
let mut base = super::linux_musl_base::opts();
55
base.cpu = "ppc64le".into();
66
base.add_pre_link_args(LinkerFlavor::Gcc, &["-m64"]);
77
base.max_atomic_width = Some(64);
8+
base.stack_probes = StackProbeType::Inline;
89

910
Target {
1011
llvm_target: "powerpc64le-unknown-linux-musl".into(),

compiler/rustc_target/src/spec/powerpc_unknown_freebsd.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
use crate::abi::Endian;
2-
use crate::spec::{LinkerFlavor, Target, TargetOptions};
2+
use crate::spec::{LinkerFlavor, StackProbeType, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let mut base = super::freebsd_base::opts();
66
// Extra hint to linker that we are generating secure-PLT code.
77
base.add_pre_link_args(LinkerFlavor::Gcc, &["-m32", "--target=powerpc-unknown-freebsd13.0"]);
88
base.max_atomic_width = Some(32);
9+
base.stack_probes = StackProbeType::Inline;
910

1011
Target {
1112
llvm_target: "powerpc-unknown-freebsd13.0".into(),

compiler/rustc_target/src/spec/powerpc_unknown_linux_gnu.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
use crate::abi::Endian;
2-
use crate::spec::{LinkerFlavor, Target, TargetOptions};
2+
use crate::spec::{LinkerFlavor, StackProbeType, Target, TargetOptions};
33

44
pub fn target() -> Target {
55
let mut base = super::linux_gnu_base::opts();
66
base.add_pre_link_args(LinkerFlavor::Gcc, &["-m32"]);
77
base.max_atomic_width = Some(32);
8+
base.stack_probes = StackProbeType::Inline;
89

910
Target {
1011
llvm_target: "powerpc-unknown-linux-gnu".into(),

0 commit comments

Comments
 (0)