support for mips32r6 as a target_arch value
This commit is contained in:
parent
a132b3ec03
commit
d3727148a0
@ -10,6 +10,7 @@
|
||||
#[cfg(any(target_arch = "x86",
|
||||
target_arch = "arm",
|
||||
target_arch = "mips",
|
||||
target_arch = "mips32r6",
|
||||
target_arch = "powerpc",
|
||||
target_arch = "powerpc64"))]
|
||||
const MIN_ALIGN: usize = 8;
|
||||
|
@ -193,7 +193,7 @@ pub(crate) fn create_object_file(sess: &Session) -> Option<write::Object<'static
|
||||
}
|
||||
"x86" => Architecture::I386,
|
||||
"s390x" => Architecture::S390x,
|
||||
"mips" => Architecture::Mips,
|
||||
"mips" | "mips32r6" => Architecture::Mips,
|
||||
"mips64" | "mips64r6" => Architecture::Mips64,
|
||||
"x86_64" => {
|
||||
if sess.target.pointer_width == 32 {
|
||||
|
@ -321,7 +321,7 @@ pub fn supported_target_features(sess: &Session) -> &'static [(&'static str, Opt
|
||||
"aarch64" => AARCH64_ALLOWED_FEATURES,
|
||||
"x86" | "x86_64" => X86_ALLOWED_FEATURES,
|
||||
"hexagon" => HEXAGON_ALLOWED_FEATURES,
|
||||
"mips" | "mips64" | "mips64r6" => MIPS_ALLOWED_FEATURES,
|
||||
"mips" | "mips32r6" | "mips64" | "mips64r6" => MIPS_ALLOWED_FEATURES,
|
||||
"powerpc" | "powerpc64" => POWERPC_ALLOWED_FEATURES,
|
||||
"riscv32" | "riscv64" => RISCV_ALLOWED_FEATURES,
|
||||
"wasm32" | "wasm64" => WASM_ALLOWED_FEATURES,
|
||||
|
@ -693,7 +693,7 @@ pub fn adjust_for_foreign_abi<C>(
|
||||
"avr" => avr::compute_abi_info(self),
|
||||
"loongarch64" => loongarch::compute_abi_info(cx, self),
|
||||
"m68k" => m68k::compute_abi_info(self),
|
||||
"mips" => mips::compute_abi_info(cx, self),
|
||||
"mips" | "mips32r6" => mips::compute_abi_info(cx, self),
|
||||
"mips64" | "mips64r6" => mips64::compute_abi_info(cx, self),
|
||||
"powerpc" => powerpc::compute_abi_info(self),
|
||||
"powerpc64" => powerpc64::compute_abi_info(cx, self),
|
||||
|
@ -238,7 +238,7 @@ fn from_str(s: &str) -> Result<InlineAsmArch, ()> {
|
||||
"powerpc64" => Ok(Self::PowerPC64),
|
||||
"hexagon" => Ok(Self::Hexagon),
|
||||
"loongarch64" => Ok(Self::LoongArch64),
|
||||
"mips" => Ok(Self::Mips),
|
||||
"mips" | "mips32r6" => Ok(Self::Mips),
|
||||
"mips64" | "mips64r6" => Ok(Self::Mips64),
|
||||
"s390x" => Ok(Self::S390x),
|
||||
"spirv" => Ok(Self::SpirV),
|
||||
|
@ -6,7 +6,7 @@ pub fn target() -> Target {
|
||||
llvm_target: "mipsisa32r6-unknown-linux-gnu".into(),
|
||||
pointer_width: 32,
|
||||
data_layout: "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64".into(),
|
||||
arch: "mips".into(),
|
||||
arch: "mips32r6".into(),
|
||||
options: TargetOptions {
|
||||
endian: Endian::Big,
|
||||
cpu: "mips32r6".into(),
|
||||
|
@ -5,7 +5,7 @@ pub fn target() -> Target {
|
||||
llvm_target: "mipsisa32r6el-unknown-linux-gnu".into(),
|
||||
pointer_width: 32,
|
||||
data_layout: "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64".into(),
|
||||
arch: "mips".into(),
|
||||
arch: "mips32r6".into(),
|
||||
|
||||
options: TargetOptions {
|
||||
cpu: "mips32r6".into(),
|
||||
|
@ -94,7 +94,7 @@ pub struct stat {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(target_arch = "mips")]
|
||||
#[cfg(any(target_arch = "mips", target_arch = "mips32r6"))]
|
||||
mod arch {
|
||||
use crate::os::raw::{c_long, c_ulong};
|
||||
|
||||
|
@ -35,6 +35,7 @@
|
||||
any(
|
||||
target_arch = "arm",
|
||||
target_arch = "mips",
|
||||
target_arch = "mips32r6",
|
||||
target_arch = "mips64",
|
||||
target_arch = "mips64r6",
|
||||
target_arch = "riscv64",
|
||||
@ -60,6 +61,7 @@
|
||||
target_arch = "powerpc64",
|
||||
target_arch = "arm",
|
||||
target_arch = "mips",
|
||||
target_arch = "mips32r6",
|
||||
target_arch = "mips64",
|
||||
target_arch = "mips64r6",
|
||||
target_arch = "riscv64",
|
||||
|
@ -9,6 +9,7 @@
|
||||
target_arch = "arm",
|
||||
target_arch = "m68k",
|
||||
target_arch = "mips",
|
||||
target_arch = "mips32r6",
|
||||
target_arch = "powerpc",
|
||||
target_arch = "powerpc64",
|
||||
target_arch = "sparc",
|
||||
|
@ -59,7 +59,12 @@
|
||||
#[cfg(target_arch = "m68k")]
|
||||
const UNWIND_DATA_REG: (i32, i32) = (0, 1); // D0, D1
|
||||
|
||||
#[cfg(any(target_arch = "mips", target_arch = "mips64", target_arch = "mips64r6"))]
|
||||
#[cfg(any(
|
||||
target_arch = "mips",
|
||||
target_arch = "mips32r6",
|
||||
target_arch = "mips64",
|
||||
target_arch = "mips64r6"
|
||||
))]
|
||||
const UNWIND_DATA_REG: (i32, i32) = (4, 5); // A0, A1
|
||||
|
||||
#[cfg(any(target_arch = "powerpc", target_arch = "powerpc64"))]
|
||||
|
@ -51,7 +51,7 @@ pub enum _Unwind_Reason_Code {
|
||||
#[cfg(target_arch = "m68k")]
|
||||
pub const unwinder_private_data_size: usize = 2;
|
||||
|
||||
#[cfg(target_arch = "mips")]
|
||||
#[cfg(any(target_arch = "mips", target_arch = "mips32r6"))]
|
||||
pub const unwinder_private_data_size: usize = 2;
|
||||
|
||||
#[cfg(any(target_arch = "mips64", target_arch = "mips64r6"))]
|
||||
|
@ -133,8 +133,12 @@ pub unsafe fn setup(_build: &mut crate::Build) {}
|
||||
/* Extra values not defined in the built-in targets yet, but used in std */
|
||||
(Some(Mode::Std), "target_env", Some(&["libnx"])),
|
||||
// (Some(Mode::Std), "target_os", Some(&[])),
|
||||
// #[cfg(bootstrap)] mips64r6
|
||||
(Some(Mode::Std), "target_arch", Some(&["asmjs", "spirv", "nvptx", "xtensa", "mips64r6"])),
|
||||
// #[cfg(bootstrap)] mips32r6, mips64r6
|
||||
(
|
||||
Some(Mode::Std),
|
||||
"target_arch",
|
||||
Some(&["asmjs", "spirv", "nvptx", "xtensa", "mips32r6", "mips64r6"]),
|
||||
),
|
||||
/* Extra names used by dependencies */
|
||||
// FIXME: Used by serde_json, but we should not be triggering on external dependencies.
|
||||
(Some(Mode::Rustc), "no_btreemap_remove_entry", None),
|
||||
|
@ -520,6 +520,7 @@ fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
"loongarch64" => "LoongArch LA64",
|
||||
"m68k" => "M68k",
|
||||
"mips" => "MIPS",
|
||||
"mips32r6" => "MIPS Release 6",
|
||||
"mips64" => "MIPS-64",
|
||||
"mips64r6" => "MIPS-64 Release 6",
|
||||
"msp430" => "MSP430",
|
||||
|
@ -45,8 +45,9 @@ fn min_align(&self, size: u64, kind: MiriMemoryKind) -> Align {
|
||||
// List taken from `library/std/src/sys/common/alloc.rs`.
|
||||
// This list should be kept in sync with the one from libstd.
|
||||
let min_align = match this.tcx.sess.target.arch.as_ref() {
|
||||
"x86" | "arm" | "mips" | "powerpc" | "powerpc64" | "asmjs" | "wasm32" => 8,
|
||||
"x86_64" | "aarch64" | "mips64" | "mips64r6" | "s390x" | "sparc64" | "loongarch64" => 16,
|
||||
"x86" | "arm" | "mips" | "mips32r6" | "powerpc" | "powerpc64" | "asmjs" | "wasm32" => 8,
|
||||
"x86_64" | "aarch64" | "mips64" | "mips64r6" | "s390x" | "sparc64" | "loongarch64" =>
|
||||
16,
|
||||
arch => bug!("unsupported target architecture for malloc: `{}`", arch),
|
||||
};
|
||||
// Windows always aligns, even small allocations.
|
||||
|
@ -4,7 +4,7 @@ warning: unexpected `cfg` condition value
|
||||
LL | #[cfg(target(os = "linux", arch = "X"))]
|
||||
| ^^^^^^^^^^
|
||||
|
|
||||
= note: expected values for `target_arch` are: `aarch64`, `arm`, `avr`, `bpf`, `hexagon`, `loongarch64`, `m68k`, `mips`, `mips64`, `mips64r6`, `msp430`, `nvptx64`, `powerpc`, `powerpc64`, `riscv32`, `riscv64`, `s390x`, `sparc`, `sparc64`, `wasm32`, `wasm64`, `x86`, `x86_64`
|
||||
= note: expected values for `target_arch` are: `aarch64`, `arm`, `avr`, `bpf`, `hexagon`, `loongarch64`, `m68k`, `mips`, `mips32r6`, `mips64`, `mips64r6`, `msp430`, `nvptx64`, `powerpc`, `powerpc64`, `riscv32`, `riscv64`, `s390x`, `sparc`, `sparc64`, `wasm32`, `wasm64`, `x86`, `x86_64`
|
||||
= note: `#[warn(unexpected_cfgs)]` on by default
|
||||
|
||||
warning: 1 warning emitted
|
||||
|
Loading…
Reference in New Issue
Block a user