1 use crate::spec
::{LinkArgs, LinkerFlavor, LldFlavor, RelocModel}
;
2 use crate::spec
::{Target, TargetOptions, TargetResult}
;
4 // The PSP has custom linker requirements.
5 const LINKER_SCRIPT
: &str = include_str
!("./mipsel_sony_psp_linker_script.ld");
7 pub fn target() -> TargetResult
{
8 let mut pre_link_args
= LinkArgs
::new();
9 pre_link_args
.insert(LinkerFlavor
::Lld(LldFlavor
::Ld
), vec
!["--emit-relocs".to_string()]);
12 llvm_target
: "mipsel-sony-psp".to_string(),
13 target_endian
: "little".to_string(),
14 target_pointer_width
: "32".to_string(),
15 target_c_int_width
: "32".to_string(),
16 data_layout
: "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64".to_string(),
17 arch
: "mips".to_string(),
18 target_os
: "psp".to_string(),
19 target_env
: "".to_string(),
20 target_vendor
: "sony".to_string(),
21 linker_flavor
: LinkerFlavor
::Lld(LldFlavor
::Ld
),
23 options
: TargetOptions
{
24 cpu
: "mips2".to_string(),
26 linker
: Some("rust-lld".to_owned()),
28 relocation_model
: RelocModel
::Static
,
30 // PSP FPU only supports single precision floats.
31 features
: "+single-float".to_string(),
33 // PSP does not support trap-on-condition instructions.
34 llvm_args
: vec
!["-mno-check-zero-division".to_string()],
36 link_script
: Some(LINKER_SCRIPT
.to_string()),