mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-26 08:44:35 +00:00
Auto merge of #80709 - lzutao:target-enumerate, r=petrochenkov
Limit target endian to an enum instead of free string This is #77604 revived.
This commit is contained in:
commit
e02b0f4a55
@ -9,7 +9,7 @@ use rustc_codegen_ssa::{
|
||||
};
|
||||
use rustc_middle::ty::layout::HasTyCtxt;
|
||||
use rustc_middle::ty::Ty;
|
||||
use rustc_target::abi::{Align, HasDataLayout, LayoutOf, Size};
|
||||
use rustc_target::abi::{Align, Endian, HasDataLayout, LayoutOf, Size};
|
||||
|
||||
fn round_pointer_up_to_alignment(
|
||||
bx: &mut Builder<'a, 'll, 'tcx>,
|
||||
@ -52,7 +52,7 @@ fn emit_direct_ptr_va_arg(
|
||||
let next = bx.inbounds_gep(addr, &[full_direct_size]);
|
||||
bx.store(next, va_list_addr, bx.tcx().data_layout.pointer_align.abi);
|
||||
|
||||
if size.bytes() < slot_size.bytes() && &*bx.tcx().sess.target.endian == "big" {
|
||||
if size.bytes() < slot_size.bytes() && bx.tcx().sess.target.endian == Endian::Big {
|
||||
let adjusted_size = bx.cx().const_i32((slot_size.bytes() - size.bytes()) as i32);
|
||||
let adjusted = bx.inbounds_gep(addr, &[adjusted_size]);
|
||||
(bx.bitcast(adjusted, bx.cx().type_ptr_to(llty)), addr_align)
|
||||
@ -105,7 +105,7 @@ fn emit_aapcs_va_arg(
|
||||
let mut end = bx.build_sibling_block("va_arg.end");
|
||||
let zero = bx.const_i32(0);
|
||||
let offset_align = Align::from_bytes(4).unwrap();
|
||||
assert!(&*bx.tcx().sess.target.endian == "little");
|
||||
assert_eq!(bx.tcx().sess.target.endian, Endian::Little);
|
||||
|
||||
let gr_type = target_ty.is_any_ptr() || target_ty.is_integral();
|
||||
let (reg_off, reg_top_index, slot_size) = if gr_type {
|
||||
|
@ -819,7 +819,7 @@ pub fn default_configuration(sess: &Session) -> CrateConfig {
|
||||
}
|
||||
}
|
||||
ret.insert((sym::target_arch, Some(Symbol::intern(arch))));
|
||||
ret.insert((sym::target_endian, Some(Symbol::intern(end))));
|
||||
ret.insert((sym::target_endian, Some(Symbol::intern(end.as_str()))));
|
||||
ret.insert((sym::target_pointer_width, Some(Symbol::intern(&wordsz))));
|
||||
ret.insert((sym::target_env, Some(Symbol::intern(env))));
|
||||
ret.insert((sym::target_vendor, Some(Symbol::intern(vendor))));
|
||||
|
@ -4,11 +4,14 @@ pub use Primitive::*;
|
||||
use crate::spec::Target;
|
||||
|
||||
use std::convert::{TryFrom, TryInto};
|
||||
use std::fmt;
|
||||
use std::num::NonZeroUsize;
|
||||
use std::ops::{Add, AddAssign, Deref, Mul, Range, RangeInclusive, Sub};
|
||||
use std::str::FromStr;
|
||||
|
||||
use rustc_index::vec::{Idx, IndexVec};
|
||||
use rustc_macros::HashStable_Generic;
|
||||
use rustc_serialize::json::{Json, ToJson};
|
||||
use rustc_span::Span;
|
||||
|
||||
pub mod call;
|
||||
@ -152,22 +155,19 @@ impl TargetDataLayout {
|
||||
}
|
||||
|
||||
// Perform consistency checks against the Target information.
|
||||
let endian_str = match dl.endian {
|
||||
Endian::Little => "little",
|
||||
Endian::Big => "big",
|
||||
};
|
||||
if endian_str != target.endian {
|
||||
if dl.endian != target.endian {
|
||||
return Err(format!(
|
||||
"inconsistent target specification: \"data-layout\" claims \
|
||||
architecture is {}-endian, while \"target-endian\" is `{}`",
|
||||
endian_str, target.endian
|
||||
architecture is {}-endian, while \"target-endian\" is `{}`",
|
||||
dl.endian.as_str(),
|
||||
target.endian.as_str(),
|
||||
));
|
||||
}
|
||||
|
||||
if dl.pointer_size.bits() != target.pointer_width.into() {
|
||||
return Err(format!(
|
||||
"inconsistent target specification: \"data-layout\" claims \
|
||||
pointers are {}-bit, while \"target-pointer-width\" is `{}`",
|
||||
pointers are {}-bit, while \"target-pointer-width\" is `{}`",
|
||||
dl.pointer_size.bits(),
|
||||
target.pointer_width
|
||||
));
|
||||
@ -234,6 +234,39 @@ pub enum Endian {
|
||||
Big,
|
||||
}
|
||||
|
||||
impl Endian {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::Little => "little",
|
||||
Self::Big => "big",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Debug for Endian {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
f.write_str(self.as_str())
|
||||
}
|
||||
}
|
||||
|
||||
impl FromStr for Endian {
|
||||
type Err = String;
|
||||
|
||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||
match s {
|
||||
"little" => Ok(Self::Little),
|
||||
"big" => Ok(Self::Big),
|
||||
_ => Err(format!(r#"unknown endian: "{}""#, s)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl ToJson for Endian {
|
||||
fn to_json(&self) -> Json {
|
||||
self.as_str().to_json()
|
||||
}
|
||||
}
|
||||
|
||||
/// Size of a type in bytes.
|
||||
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Encodable, Decodable)]
|
||||
#[derive(HashStable_Generic)]
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Targets the Big endian Cortex-R4/R5 processor (ARMv7-R)
|
||||
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::{LinkerFlavor, LldFlavor, PanicStrategy, RelocModel};
|
||||
use crate::spec::{Target, TargetOptions};
|
||||
|
||||
@ -11,7 +12,7 @@ pub fn target() -> Target {
|
||||
arch: "arm".to_string(),
|
||||
|
||||
options: TargetOptions {
|
||||
endian: "big".to_string(),
|
||||
endian: Endian::Big,
|
||||
linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
|
||||
executables: true,
|
||||
linker: Some("rust-lld".to_owned()),
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Targets the Cortex-R4F/R5F processor (ARMv7-R)
|
||||
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::{LinkerFlavor, LldFlavor, PanicStrategy, RelocModel};
|
||||
use crate::spec::{Target, TargetOptions};
|
||||
|
||||
@ -11,7 +12,7 @@ pub fn target() -> Target {
|
||||
arch: "arm".to_string(),
|
||||
|
||||
options: TargetOptions {
|
||||
endian: "big".to_string(),
|
||||
endian: Endian::Big,
|
||||
linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
|
||||
executables: true,
|
||||
linker: Some("rust-lld".to_owned()),
|
||||
|
@ -1,3 +1,4 @@
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::{Target, TargetOptions};
|
||||
|
||||
pub fn target() -> Target {
|
||||
@ -7,7 +8,7 @@ pub fn target() -> Target {
|
||||
data_layout: "E-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128".to_string(),
|
||||
arch: "mips64".to_string(),
|
||||
options: TargetOptions {
|
||||
endian: "big".to_string(),
|
||||
endian: Endian::Big,
|
||||
// NOTE(mips64r2) matches C toolchain
|
||||
cpu: "mips64r2".to_string(),
|
||||
features: "+mips64r2".to_string(),
|
||||
|
@ -1,3 +1,4 @@
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::{Target, TargetOptions};
|
||||
|
||||
pub fn target() -> Target {
|
||||
@ -11,6 +12,6 @@ pub fn target() -> Target {
|
||||
pointer_width: 64,
|
||||
data_layout: "E-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128".to_string(),
|
||||
arch: "mips64".to_string(),
|
||||
options: TargetOptions { endian: "big".to_string(), mcount: "_mcount".to_string(), ..base },
|
||||
options: TargetOptions { endian: Endian::Big, mcount: "_mcount".to_string(), ..base },
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::{Target, TargetOptions};
|
||||
|
||||
pub fn target() -> Target {
|
||||
@ -7,7 +8,7 @@ pub fn target() -> Target {
|
||||
data_layout: "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64".to_string(),
|
||||
arch: "mips".to_string(),
|
||||
options: TargetOptions {
|
||||
endian: "big".to_string(),
|
||||
endian: Endian::Big,
|
||||
cpu: "mips32r2".to_string(),
|
||||
features: "+mips32r2,+fpxx,+nooddspreg".to_string(),
|
||||
max_atomic_width: Some(32),
|
||||
|
@ -1,3 +1,4 @@
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::{Target, TargetOptions};
|
||||
|
||||
pub fn target() -> Target {
|
||||
@ -11,6 +12,6 @@ pub fn target() -> Target {
|
||||
pointer_width: 32,
|
||||
data_layout: "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64".to_string(),
|
||||
arch: "mips".to_string(),
|
||||
options: TargetOptions { endian: "big".to_string(), mcount: "_mcount".to_string(), ..base },
|
||||
options: TargetOptions { endian: Endian::Big, mcount: "_mcount".to_string(), ..base },
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::{Target, TargetOptions};
|
||||
|
||||
pub fn target() -> Target {
|
||||
@ -7,7 +8,7 @@ pub fn target() -> Target {
|
||||
data_layout: "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64".to_string(),
|
||||
arch: "mips".to_string(),
|
||||
options: TargetOptions {
|
||||
endian: "big".to_string(),
|
||||
endian: Endian::Big,
|
||||
cpu: "mips32r2".to_string(),
|
||||
features: "+mips32r2,+soft-float".to_string(),
|
||||
max_atomic_width: Some(32),
|
||||
|
@ -1,3 +1,4 @@
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::{Target, TargetOptions};
|
||||
|
||||
pub fn target() -> Target {
|
||||
@ -7,7 +8,7 @@ pub fn target() -> Target {
|
||||
data_layout: "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64".to_string(),
|
||||
arch: "mips".to_string(),
|
||||
options: TargetOptions {
|
||||
endian: "big".to_string(),
|
||||
endian: Endian::Big,
|
||||
cpu: "mips32r6".to_string(),
|
||||
features: "+mips32r6".to_string(),
|
||||
max_atomic_width: Some(32),
|
||||
|
@ -1,3 +1,4 @@
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::{Target, TargetOptions};
|
||||
|
||||
pub fn target() -> Target {
|
||||
@ -7,7 +8,7 @@ pub fn target() -> Target {
|
||||
data_layout: "E-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128".to_string(),
|
||||
arch: "mips64".to_string(),
|
||||
options: TargetOptions {
|
||||
endian: "big".to_string(),
|
||||
endian: Endian::Big,
|
||||
// NOTE(mips64r6) matches C toolchain
|
||||
cpu: "mips64r6".to_string(),
|
||||
features: "+mips64r6".to_string(),
|
||||
|
@ -34,6 +34,7 @@
|
||||
//! the target's settings, though `target-feature` and `link-args` will *add*
|
||||
//! to the list specified by the target, rather than replace.
|
||||
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::abi::{lookup as lookup_abi, Abi};
|
||||
use crate::spec::crt_objects::{CrtObjects, CrtObjectsFallback};
|
||||
use rustc_serialize::json::{Json, ToJson};
|
||||
@ -705,8 +706,8 @@ pub struct TargetOptions {
|
||||
/// Whether the target is built-in or loaded from a custom target specification.
|
||||
pub is_builtin: bool,
|
||||
|
||||
/// String to use as the `target_endian` `cfg` variable. Defaults to "little".
|
||||
pub endian: String,
|
||||
/// Used as the `target_endian` `cfg` variable. Defaults to little endian.
|
||||
pub endian: Endian,
|
||||
/// Width of c_int type. Defaults to "32".
|
||||
pub c_int_width: String,
|
||||
/// OS name to use for conditional compilation (`target_os`). Defaults to "none".
|
||||
@ -1010,7 +1011,7 @@ impl Default for TargetOptions {
|
||||
fn default() -> TargetOptions {
|
||||
TargetOptions {
|
||||
is_builtin: false,
|
||||
endian: "little".to_string(),
|
||||
endian: Endian::Little,
|
||||
c_int_width: "32".to_string(),
|
||||
os: "none".to_string(),
|
||||
env: String::new(),
|
||||
@ -1439,8 +1440,10 @@ impl Target {
|
||||
} );
|
||||
}
|
||||
|
||||
if let Some(s) = obj.find("target-endian").and_then(Json::as_string) {
|
||||
base.endian = s.parse()?;
|
||||
}
|
||||
key!(is_builtin, bool);
|
||||
key!(endian = "target-endian");
|
||||
key!(c_int_width = "target-c-int-width");
|
||||
key!(os);
|
||||
key!(env);
|
||||
|
@ -1,3 +1,4 @@
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::{LinkerFlavor, Target, TargetOptions};
|
||||
|
||||
pub fn target() -> Target {
|
||||
@ -11,6 +12,6 @@ pub fn target() -> Target {
|
||||
pointer_width: 64,
|
||||
data_layout: "E-m:e-i64:64-n32:64".to_string(),
|
||||
arch: "powerpc64".to_string(),
|
||||
options: TargetOptions { endian: "big".to_string(), mcount: "_mcount".to_string(), ..base },
|
||||
options: TargetOptions { endian: Endian::Big, mcount: "_mcount".to_string(), ..base },
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::{LinkerFlavor, RelroLevel, Target, TargetOptions};
|
||||
|
||||
pub fn target() -> Target {
|
||||
@ -15,6 +16,6 @@ pub fn target() -> Target {
|
||||
pointer_width: 64,
|
||||
data_layout: "E-m:e-i64:64-n32:64".to_string(),
|
||||
arch: "powerpc64".to_string(),
|
||||
options: TargetOptions { endian: "big".to_string(), mcount: "_mcount".to_string(), ..base },
|
||||
options: TargetOptions { endian: Endian::Big, mcount: "_mcount".to_string(), ..base },
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::{LinkerFlavor, Target, TargetOptions};
|
||||
|
||||
pub fn target() -> Target {
|
||||
@ -11,6 +12,6 @@ pub fn target() -> Target {
|
||||
pointer_width: 64,
|
||||
data_layout: "E-m:e-i64:64-n32:64".to_string(),
|
||||
arch: "powerpc64".to_string(),
|
||||
options: TargetOptions { endian: "big".to_string(), mcount: "_mcount".to_string(), ..base },
|
||||
options: TargetOptions { endian: Endian::Big, mcount: "_mcount".to_string(), ..base },
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::{LinkerFlavor, Target, TargetOptions};
|
||||
|
||||
pub fn target() -> Target {
|
||||
@ -11,6 +12,6 @@ pub fn target() -> Target {
|
||||
pointer_width: 64,
|
||||
data_layout: "E-m:e-i64:64-n32:64".to_string(),
|
||||
arch: "powerpc64".to_string(),
|
||||
options: TargetOptions { endian: "big".to_string(), ..base },
|
||||
options: TargetOptions { endian: Endian::Big, ..base },
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::{LinkerFlavor, Target, TargetOptions};
|
||||
|
||||
pub fn target() -> Target {
|
||||
@ -10,6 +11,6 @@ pub fn target() -> Target {
|
||||
pointer_width: 32,
|
||||
data_layout: "E-m:e-p:32:32-i64:64-n32".to_string(),
|
||||
arch: "powerpc".to_string(),
|
||||
options: TargetOptions { endian: "big".to_string(), mcount: "_mcount".to_string(), ..base },
|
||||
options: TargetOptions { endian: Endian::Big, mcount: "_mcount".to_string(), ..base },
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::{LinkerFlavor, Target, TargetOptions};
|
||||
|
||||
pub fn target() -> Target {
|
||||
@ -10,6 +11,6 @@ pub fn target() -> Target {
|
||||
pointer_width: 32,
|
||||
data_layout: "E-m:e-p:32:32-i64:64-n32".to_string(),
|
||||
arch: "powerpc".to_string(),
|
||||
options: TargetOptions { endian: "big".to_string(), mcount: "_mcount".to_string(), ..base },
|
||||
options: TargetOptions { endian: Endian::Big, mcount: "_mcount".to_string(), ..base },
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::{LinkerFlavor, Target, TargetOptions};
|
||||
|
||||
pub fn target() -> Target {
|
||||
@ -10,6 +11,6 @@ pub fn target() -> Target {
|
||||
pointer_width: 32,
|
||||
data_layout: "E-m:e-p:32:32-i64:64-n32".to_string(),
|
||||
arch: "powerpc".to_string(),
|
||||
options: TargetOptions { endian: "big".to_string(), mcount: "_mcount".to_string(), ..base },
|
||||
options: TargetOptions { endian: Endian::Big, mcount: "_mcount".to_string(), ..base },
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::{LinkerFlavor, Target, TargetOptions};
|
||||
|
||||
pub fn target() -> Target {
|
||||
@ -10,10 +11,6 @@ pub fn target() -> Target {
|
||||
pointer_width: 32,
|
||||
data_layout: "E-m:e-p:32:32-i64:64-n32".to_string(),
|
||||
arch: "powerpc".to_string(),
|
||||
options: TargetOptions {
|
||||
endian: "big".to_string(),
|
||||
mcount: "__mcount".to_string(),
|
||||
..base
|
||||
},
|
||||
options: TargetOptions { endian: Endian::Big, mcount: "__mcount".to_string(), ..base },
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::{LinkerFlavor, Target, TargetOptions};
|
||||
|
||||
pub fn target() -> Target {
|
||||
@ -11,10 +12,6 @@ pub fn target() -> Target {
|
||||
pointer_width: 32,
|
||||
data_layout: "E-m:e-p:32:32-i64:64-n32".to_string(),
|
||||
arch: "powerpc".to_string(),
|
||||
options: TargetOptions {
|
||||
endian: "big".to_string(),
|
||||
features: "+secure-plt".to_string(),
|
||||
..base
|
||||
},
|
||||
options: TargetOptions { endian: Endian::Big, features: "+secure-plt".to_string(), ..base },
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::{LinkerFlavor, Target, TargetOptions};
|
||||
|
||||
pub fn target() -> Target {
|
||||
@ -12,7 +13,7 @@ pub fn target() -> Target {
|
||||
data_layout: "E-m:e-p:32:32-i64:64-n32".to_string(),
|
||||
arch: "powerpc".to_string(),
|
||||
options: TargetOptions {
|
||||
endian: "big".to_string(),
|
||||
endian: Endian::Big,
|
||||
// feature msync would disable instruction 'fsync' which is not supported by fsl_p1p2
|
||||
features: "+secure-plt,+msync".to_string(),
|
||||
..base
|
||||
|
@ -1,8 +1,9 @@
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::Target;
|
||||
|
||||
pub fn target() -> Target {
|
||||
let mut base = super::linux_gnu_base::opts();
|
||||
base.endian = "big".to_string();
|
||||
base.endian = Endian::Big;
|
||||
// z10 is the oldest CPU supported by LLVM
|
||||
base.cpu = "z10".to_string();
|
||||
// FIXME: The data_layout string below and the ABI implementation in
|
||||
|
@ -1,8 +1,9 @@
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::Target;
|
||||
|
||||
pub fn target() -> Target {
|
||||
let mut base = super::linux_gnu_base::opts();
|
||||
base.endian = "big".to_string();
|
||||
base.endian = Endian::Big;
|
||||
base.cpu = "v9".to_string();
|
||||
base.max_atomic_width = Some(64);
|
||||
|
||||
|
@ -1,3 +1,4 @@
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::{LinkerFlavor, Target, TargetOptions};
|
||||
|
||||
pub fn target() -> Target {
|
||||
@ -11,10 +12,6 @@ pub fn target() -> Target {
|
||||
pointer_width: 64,
|
||||
data_layout: "E-m:e-i64:64-n32:64-S128".to_string(),
|
||||
arch: "sparc64".to_string(),
|
||||
options: TargetOptions {
|
||||
endian: "big".to_string(),
|
||||
mcount: "__mcount".to_string(),
|
||||
..base
|
||||
},
|
||||
options: TargetOptions { endian: Endian::Big, mcount: "__mcount".to_string(), ..base },
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,9 @@
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::{LinkerFlavor, Target};
|
||||
|
||||
pub fn target() -> Target {
|
||||
let mut base = super::openbsd_base::opts();
|
||||
base.endian = "big".to_string();
|
||||
base.endian = Endian::Big;
|
||||
base.cpu = "v9".to_string();
|
||||
base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-m64".to_string());
|
||||
base.max_atomic_width = Some(64);
|
||||
|
@ -1,8 +1,9 @@
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::{LinkerFlavor, Target};
|
||||
|
||||
pub fn target() -> Target {
|
||||
let mut base = super::linux_gnu_base::opts();
|
||||
base.endian = "big".to_string();
|
||||
base.endian = Endian::Big;
|
||||
base.cpu = "v9".to_string();
|
||||
base.max_atomic_width = Some(64);
|
||||
base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-mv8plus".to_string());
|
||||
|
@ -1,8 +1,9 @@
|
||||
use crate::abi::Endian;
|
||||
use crate::spec::{LinkerFlavor, Target};
|
||||
|
||||
pub fn target() -> Target {
|
||||
let mut base = super::solaris_base::opts();
|
||||
base.endian = "big".to_string();
|
||||
base.endian = Endian::Big;
|
||||
base.pre_link_args.insert(LinkerFlavor::Gcc, vec!["-m64".to_string()]);
|
||||
// llvm calls this "v9"
|
||||
base.cpu = "v9".to_string();
|
||||
|
Loading…
Reference in New Issue
Block a user