1use rustc_abi::Endian;
23use crate::spec::{
4BinaryFormat, Cc, CfgAbi, CodeModel, LinkOutputKind, LinkerFlavor, Os, TargetOptions,
5crt_objects, cvs,
6};
78pub(crate) fn opts() -> TargetOptions {
9TargetOptions {
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`.
16cfg_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}