Skip to main content

rustc_target/spec/targets/
s390x_unknown_none_softfloat.rs

1use rustc_abi::{Align, Endian};
2
3use crate::spec::{
4    Arch, Cc, CfgAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, RustcAbi, SanitizerSet,
5    StackProbeType, Target, TargetMetadata, TargetOptions,
6};
7
8pub(crate) fn target() -> Target {
9    let opts = TargetOptions {
10        cfg_abi: CfgAbi::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        supports_fentry: true,
24        ..Default::default()
25    };
26
27    Target {
28        llvm_target: "s390x-unknown-linux-gnu".into(),
29        metadata: TargetMetadata {
30            description: Some("S390x Linux".into()),
31            host_tools: Some(false),
32            std: Some(false),
33            tier: Some(2),
34        },
35        arch: Arch::S390x,
36        data_layout: "E-S64-m:e-i1:8:16-i8:8:16-i64:64-f128:64-v128:64-a:8:16-n32:64".into(),
37        options: opts,
38        pointer_width: 64,
39    }
40}