rustc_target/spec/targets/
mipsel_sony_psp.rs
1use crate::spec::{Cc, LinkerFlavor, Lld, RelocModel, Target, TargetOptions, cvs};
2
3const LINKER_SCRIPT: &str = include_str!("./mipsel_sony_psp_linker_script.ld");
5
6pub(crate) fn target() -> Target {
7 let pre_link_args = TargetOptions::link_args(
8 LinkerFlavor::Gnu(Cc::No, Lld::No),
9 &["--emit-relocs", "--nmagic"],
10 );
11
12 Target {
13 llvm_target: "mipsel-sony-psp".into(),
14 metadata: crate::spec::TargetMetadata {
15 description: Some("MIPS (LE) Sony PlatStation Portable (PSP)".into()),
16 tier: Some(3),
17 host_tools: Some(false),
18 std: Some(false),
19 },
20 pointer_width: 32,
21 data_layout: "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64".into(),
22 arch: "mips".into(),
23
24 options: TargetOptions {
25 os: "psp".into(),
26 vendor: "sony".into(),
27 linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
28 cpu: "mips2".into(),
29 linker: Some("rust-lld".into()),
30 relocation_model: RelocModel::Static,
31
32 features: "+single-float".into(),
34
35 llvm_args: cvs!["-mno-check-zero-division"],
37 pre_link_args,
38 link_script: Some(LINKER_SCRIPT.into()),
39 ..Default::default()
40 },
41 }
42}