Skip to content

Commit 48b5c09

Browse files
committed
add s390x-unknown-linux-musl target
1 parent 0148b97 commit 48b5c09

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

compiler/rustc_target/src/spec/mod.rs

+1
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),
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+
}

0 commit comments

Comments
 (0)