Skip to content

Commit 8979fd4

Browse files
authored
Rollup merge of #82166 - kaniini:s390x-musl-target, r=nagisa
add s390x-unknown-linux-musl target This is the first step in bringup for Rust on s390x. The libc and std crates need modifications as well, but getting this upstream makes that work easier.
2 parents b8d4354 + 62ee3ec commit 8979fd4

File tree

3 files changed

+26
-0
lines changed

3 files changed

+26
-0
lines changed

compiler/rustc_target/src/spec/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -641,6 +641,7 @@ supported_targets! {
641641
("powerpc64le-unknown-linux-gnu", powerpc64le_unknown_linux_gnu),
642642
("powerpc64le-unknown-linux-musl", powerpc64le_unknown_linux_musl),
643643
("s390x-unknown-linux-gnu", s390x_unknown_linux_gnu),
644+
("s390x-unknown-linux-musl", s390x_unknown_linux_musl),
644645
("sparc-unknown-linux-gnu", sparc_unknown_linux_gnu),
645646
("sparc64-unknown-linux-gnu", sparc64_unknown_linux_gnu),
646647
("arm-unknown-linux-gnueabi", arm_unknown_linux_gnueabi),
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
use crate::abi::Endian;
2+
use crate::spec::Target;
3+
4+
pub fn target() -> Target {
5+
let mut base = super::linux_musl_base::opts();
6+
base.endian = Endian::Big;
7+
// z10 is the oldest CPU supported by LLVM
8+
base.cpu = "z10".to_string();
9+
// FIXME: The data_layout string below and the ABI implementation in
10+
// cabi_s390x.rs are for now hard-coded to assume the no-vector ABI.
11+
// Pass the -vector feature string to LLVM to respect this assumption.
12+
base.features = "-vector".to_string();
13+
base.max_atomic_width = Some(64);
14+
base.min_global_align = Some(16);
15+
base.static_position_independent_executables = true;
16+
17+
Target {
18+
llvm_target: "s390x-unknown-linux-musl".to_string(),
19+
pointer_width: 64,
20+
data_layout: "E-m:e-i1:8:16-i8:8:16-i64:64-f128:64-a:8:16-n32:64".to_string(),
21+
arch: "s390x".to_string(),
22+
options: base,
23+
}
24+
}

src/doc/rustc/src/platform-support.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@ target | std | host | notes
208208
`riscv64gc-unknown-linux-musl` | | | RISC-V Linux (kernel 4.20, musl 1.2.0)
209209
`riscv32gc-unknown-linux-gnu` | | | RISC-V Linux (kernel 5.4, glibc 2.33)
210210
`riscv32gc-unknown-linux-musl` | | | RISC-V Linux (kernel 5.4, musl + RISCV32 support patches)
211+
`s390x-unknown-linux-musl` | | | S390x Linux (kernel 2.6.32, MUSL)
211212
`sparc-unknown-linux-gnu` | ✓ | | 32-bit SPARC Linux
212213
`sparc64-unknown-netbsd` | ✓ | ✓ | NetBSD/sparc64
213214
`sparc64-unknown-openbsd` | ? | |

0 commit comments

Comments
 (0)