]> git.proxmox.com Git - rustc.git/blame - vendor/rustc-ap-rustc_target/src/spec/mipsel_sony_psp.rs
New upstream version 1.52.1+dfsg1
[rustc.git] / vendor / rustc-ap-rustc_target / src / spec / mipsel_sony_psp.rs
CommitLineData
f20569fa
XL
1use crate::spec::{LinkArgs, LinkerFlavor, LldFlavor, RelocModel};
2use crate::spec::{Target, TargetOptions};
3
4// The PSP has custom linker requirements.
5const LINKER_SCRIPT: &str = include_str!("./mipsel_sony_psp_linker_script.ld");
6
7pub fn target() -> Target {
8 let mut pre_link_args = LinkArgs::new();
9 pre_link_args.insert(LinkerFlavor::Lld(LldFlavor::Ld), vec!["--emit-relocs".to_string()]);
10
11 Target {
12 llvm_target: "mipsel-sony-psp".to_string(),
13 pointer_width: 32,
14 data_layout: "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64".to_string(),
15 arch: "mips".to_string(),
16
17 options: TargetOptions {
18 os: "psp".to_string(),
19 vendor: "sony".to_string(),
20 linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
21 cpu: "mips2".to_string(),
22 executables: true,
23 linker: Some("rust-lld".to_owned()),
24 linker_is_gnu: true,
25 relocation_model: RelocModel::Static,
26
27 // PSP FPU only supports single precision floats.
28 features: "+single-float".to_string(),
29
30 // PSP does not support trap-on-condition instructions.
31 llvm_args: vec!["-mno-check-zero-division".to_string()],
32 pre_link_args,
33 link_script: Some(LINKER_SCRIPT.to_string()),
34 ..Default::default()
35 },
36 }
37}