Skip to main content

rustc_target/spec/targets/
s390x_unknown_none_softfloat.rs

1use rustc_abi::{Align, Endian};
2
3use crate::spec::{
4    Abi, Arch, Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, RustcAbi, SanitizerSet,
5    StackProbeType, Target, TargetMetadata, TargetOptions,
6};
7
8pub(crate) fn target() -> Target {
9    let opts = TargetOptions {
10        abi: Abi::SoftFloat,
11        cpu: "z10".into(),
12        endian: Endian::Big,
13        features: "+soft-float,-vector".into(),
14        linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
15        linker: Some("rust-lld".into()),
16        max_atomic_width: Some(128),
17        min_global_align: Some(Align::from_bits(16).unwrap()),
18        panic_strategy: PanicStrategy::Abort,
19        relocation_model: RelocModel::Static,
20        rustc_abi: Some(RustcAbi::Softfloat),
21        stack_probes: StackProbeType::Inline,
22        supported_sanitizers: SanitizerSet::KERNELADDRESS,
23        ..Default::default()
24    };
25
26    Target {
27        llvm_target: "s390x-unknown-linux-gnu".into(),
28        metadata: TargetMetadata {
29            description: Some("S390x Linux".into()),
30            host_tools: Some(false),
31            std: Some(false),
32            tier: Some(2),
33        },
34        arch: Arch::S390x,
35        data_layout: "E-S64-m:e-i1:8:16-i8:8:16-i64:64-f128:64-v128:64-a:8:16-n32:64".into(),
36        options: opts,
37        pointer_width: 64,
38    }
39}