Skip to main content

rustc_target/spec/base/
aix.rs

1use rustc_abi::Endian;
2
3use crate::spec::{
4    BinaryFormat, Cc, CfgAbi, CodeModel, LinkOutputKind, LinkerFlavor, Os, TargetOptions,
5    crt_objects, cvs,
6};
7
8pub(crate) fn opts() -> TargetOptions {
9    TargetOptions {
10        // It makes no sense to set "vec-extabi" here without also actually configuring LLVM to use
11        // that ABI. Since https://github.com/llvm/llvm-project/pull/221670 this probably just needs
12        // `llvm_abiname` to be set properly. If you are doing that, make sure to also:
13        // - adjust the logic in `reserved_v20to31` in `asm/powerpc.rs` to allow the extra registers
14        //   to be used depending on `llvm_abiname`.
15        // - adjust the logic in `spec/consistency.rs` to correlate `llvm_abiname` with `cfg_abi`.
16        cfg_abi: CfgAbi::VecDefault,
17        code_model: Some(CodeModel::Large),
18        cpu: "pwr7".into(),
19        os: Os::Aix,
20        vendor: "ibm".into(),
21        dynamic_linking: true,
22        endian: Endian::Big,
23        executables: true,
24        archive_format: "aix_big".into(),
25        families: ::std::borrow::Cow::Borrowed(&[::std::borrow::Cow::Borrowed("unix")])cvs!["unix"],
26        has_rpath: false,
27        has_thread_local: true,
28        crt_static_respected: true,
29        linker_flavor: LinkerFlavor::Unix(Cc::No),
30        linker: Some("ld".into()),
31        eh_frame_header: false,
32        is_like_aix: true,
33        binary_format: BinaryFormat::Xcoff,
34        default_dwarf_version: 3,
35        function_sections: true,
36        pre_link_objects: crt_objects::new(&[
37            (LinkOutputKind::DynamicNoPicExe, &["/usr/lib/crt0_64.o", "/usr/lib/crti_64.o"]),
38            (LinkOutputKind::DynamicPicExe, &["/usr/lib/crt0_64.o", "/usr/lib/crti_64.o"]),
39        ]),
40        dll_suffix: ".a".into(),
41        ..Default::default()
42    }
43}