From 6e58b1c3c98446297bfc4dec1041238d599a1bb7 Mon Sep 17 00:00:00 2001 From: Stephan Date: Mon, 2 Nov 2020 19:11:24 +0100 Subject: [PATCH 1/5] add mipsel_unknown_none target --- .../src/spec/mipsel_unknown_none.rs | 32 +++++++++++++++++++ compiler/rustc_target/src/spec/mod.rs | 1 + 2 files changed, 33 insertions(+) create mode 100644 compiler/rustc_target/src/spec/mipsel_unknown_none.rs diff --git a/compiler/rustc_target/src/spec/mipsel_unknown_none.rs b/compiler/rustc_target/src/spec/mipsel_unknown_none.rs new file mode 100644 index 0000000000000..79a249a5c137f --- /dev/null +++ b/compiler/rustc_target/src/spec/mipsel_unknown_none.rs @@ -0,0 +1,32 @@ +// Bare MIPS32r2, little endian, softfloat +// can be used for MIPS M4K core (e.g. on PIC32MX devices) + +use crate::spec::{LinkerFlavor, LldFlavor, RelocModel}; +use crate::spec::{PanicStrategy, Target, TargetOptions}; + +pub fn target() -> Target { + Target { + llvm_target: "mipsel-unknown-none".to_string(), + target_endian: "little".to_string(), + pointer_width: 32, + target_c_int_width: "32".to_string(), + data_layout: "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64".to_string(), + arch: "mips".to_string(), + target_os: "none".to_string(), + target_env: String::new(), + target_vendor: String::new(), + linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld), + + options: TargetOptions { + cpu: "mips32r2".to_string(), + features: "+mips32r2,+soft-float,+noabicalls".to_string(), + max_atomic_width: Some(32), + executables: true, + linker: Some("rust-lld".to_owned()), + panic_strategy: PanicStrategy::Abort, + relocation_model: RelocModel::Static, + emit_debug_gdb_scripts: false, + ..Default::default() + }, + } +} diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs index 1d3e61c499208..ba9e2f7fa0648 100644 --- a/compiler/rustc_target/src/spec/mod.rs +++ b/compiler/rustc_target/src/spec/mod.rs @@ -653,6 +653,7 @@ supported_targets! { ("powerpc64-wrs-vxworks", powerpc64_wrs_vxworks), ("mipsel-sony-psp", mipsel_sony_psp), + ("mipsel-unknown-none", mipsel_unknown_none), ("thumbv4t-none-eabi", thumbv4t_none_eabi), } From 7d2441134b1b9d3818accd362ec34cbe856036ce Mon Sep 17 00:00:00 2001 From: Stephan Date: Mon, 2 Nov 2020 22:52:47 +0100 Subject: [PATCH 2/5] add blacklist for unsupported calling conventions --- compiler/rustc_target/src/spec/mipsel_unknown_none.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/compiler/rustc_target/src/spec/mipsel_unknown_none.rs b/compiler/rustc_target/src/spec/mipsel_unknown_none.rs index 79a249a5c137f..baa1ed1b056b1 100644 --- a/compiler/rustc_target/src/spec/mipsel_unknown_none.rs +++ b/compiler/rustc_target/src/spec/mipsel_unknown_none.rs @@ -1,6 +1,7 @@ // Bare MIPS32r2, little endian, softfloat // can be used for MIPS M4K core (e.g. on PIC32MX devices) +use crate::spec::abi::Abi; use crate::spec::{LinkerFlavor, LldFlavor, RelocModel}; use crate::spec::{PanicStrategy, Target, TargetOptions}; @@ -25,6 +26,14 @@ pub fn target() -> Target { linker: Some("rust-lld".to_owned()), panic_strategy: PanicStrategy::Abort, relocation_model: RelocModel::Static, + unsupported_abis: vec![ + Abi::Stdcall, + Abi::Fastcall, + Abi::Vectorcall, + Abi::Thiscall, + Abi::Win64, + Abi::SysV64, + ], emit_debug_gdb_scripts: false, ..Default::default() }, From 96db99a1453b878196bd5e9f622d8cf3153c8e0c Mon Sep 17 00:00:00 2001 From: Stephan Date: Mon, 2 Nov 2020 23:18:32 +0100 Subject: [PATCH 3/5] improve comments Co-authored-by: Jonas Schievink --- compiler/rustc_target/src/spec/mipsel_unknown_none.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/compiler/rustc_target/src/spec/mipsel_unknown_none.rs b/compiler/rustc_target/src/spec/mipsel_unknown_none.rs index baa1ed1b056b1..3288281cc030f 100644 --- a/compiler/rustc_target/src/spec/mipsel_unknown_none.rs +++ b/compiler/rustc_target/src/spec/mipsel_unknown_none.rs @@ -1,5 +1,6 @@ -// Bare MIPS32r2, little endian, softfloat -// can be used for MIPS M4K core (e.g. on PIC32MX devices) +//! Bare MIPS32r2, little endian, softfloat +//! +//! Can be used for MIPS M4K core (e.g. on PIC32MX devices) use crate::spec::abi::Abi; use crate::spec::{LinkerFlavor, LldFlavor, RelocModel}; From 1a232cb97611651f2e3c7b61c0be8f48616861ce Mon Sep 17 00:00:00 2001 From: Stephan Date: Mon, 2 Nov 2020 23:29:00 +0100 Subject: [PATCH 4/5] indicate calling convention --- compiler/rustc_target/src/spec/mipsel_unknown_none.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/rustc_target/src/spec/mipsel_unknown_none.rs b/compiler/rustc_target/src/spec/mipsel_unknown_none.rs index 3288281cc030f..1651ff9c2d6fc 100644 --- a/compiler/rustc_target/src/spec/mipsel_unknown_none.rs +++ b/compiler/rustc_target/src/spec/mipsel_unknown_none.rs @@ -1,4 +1,4 @@ -//! Bare MIPS32r2, little endian, softfloat +//! Bare MIPS32r2, little endian, softfloat, O32 calling convention //! //! Can be used for MIPS M4K core (e.g. on PIC32MX devices) From 5130f2e777b1f83783e5a148e6de1fb03e9ad1ef Mon Sep 17 00:00:00 2001 From: Stephan Date: Mon, 2 Nov 2020 23:31:15 +0100 Subject: [PATCH 5/5] add mipsel-unknown-none target --- src/doc/rustc/src/platform-support.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/doc/rustc/src/platform-support.md b/src/doc/rustc/src/platform-support.md index ae55297b78c49..85c6f91f08582 100644 --- a/src/doc/rustc/src/platform-support.md +++ b/src/doc/rustc/src/platform-support.md @@ -180,6 +180,7 @@ target | std | host | notes `i686-wrs-vxworks` | ? | | `mips-unknown-linux-uclibc` | ✓ | | MIPS Linux with uClibc `mipsel-unknown-linux-uclibc` | ✓ | | MIPS (LE) Linux with uClibc +`mipsel-unknown-none` | * | | Bare MIPS (LE) softfloat `mipsel-sony-psp` | * | | MIPS (LE) Sony PlayStation Portable (PSP) `mipsisa32r6-unknown-linux-gnu` | ? | | `mipsisa32r6el-unknown-linux-gnu` | ? | |