mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-27 18:57:42 +03:00
rustc_target: introduce Abi
Improve type safety by using an enum rather than strings.
This commit is contained in:
@@ -49,7 +49,7 @@
|
||||
use rustc_session::Session;
|
||||
use rustc_session::config::OutputFilenames;
|
||||
use rustc_span::{Symbol, sym};
|
||||
use rustc_target::spec::Arch;
|
||||
use rustc_target::spec::{Abi, Arch};
|
||||
|
||||
pub use crate::config::*;
|
||||
use crate::prelude::*;
|
||||
@@ -186,7 +186,7 @@ fn target_config(&self, sess: &Session) -> TargetConfig {
|
||||
let has_reliable_f16_f128 = !(sess.target.arch == Arch::X86_64
|
||||
&& sess.target.os == "windows"
|
||||
&& sess.target.env == "gnu"
|
||||
&& sess.target.abi != "llvm");
|
||||
&& sess.target.abi != Abi::Llvm);
|
||||
|
||||
TargetConfig {
|
||||
target_features,
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
use rustc_span::{DUMMY_SP, Span, Symbol};
|
||||
use rustc_symbol_mangling::mangle_internal_symbol;
|
||||
use rustc_target::spec::{
|
||||
Arch, HasTargetSpec, RelocModel, SmallDataThresholdSupport, Target, TlsModel,
|
||||
Abi, Arch, HasTargetSpec, RelocModel, SmallDataThresholdSupport, Target, TlsModel,
|
||||
};
|
||||
use smallvec::SmallVec;
|
||||
|
||||
@@ -337,7 +337,7 @@ pub(crate) unsafe fn create_module<'ll>(
|
||||
if sess.target.is_like_msvc
|
||||
|| (sess.target.options.os == "windows"
|
||||
&& sess.target.options.env == "gnu"
|
||||
&& sess.target.options.abi == "llvm")
|
||||
&& sess.target.options.abi == Abi::Llvm)
|
||||
{
|
||||
match sess.opts.cg.control_flow_guard {
|
||||
CFGuard::Disabled => {}
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
use rustc_middle::bug;
|
||||
use rustc_session::Session;
|
||||
use rustc_session::config::{PrintKind, PrintRequest};
|
||||
use rustc_target::spec::{Arch, MergeFunctions, PanicStrategy, SmallDataThresholdSupport};
|
||||
use rustc_target::spec::{Abi, Arch, MergeFunctions, PanicStrategy, SmallDataThresholdSupport};
|
||||
use smallvec::{SmallVec, smallvec};
|
||||
|
||||
use crate::back::write::create_informational_target_machine;
|
||||
@@ -353,7 +353,7 @@ fn update_target_reliable_float_cfg(sess: &Session, cfg: &mut TargetConfig) {
|
||||
let target_arch = &sess.target.arch;
|
||||
let target_os = sess.target.options.os.as_ref();
|
||||
let target_env = sess.target.options.env.as_ref();
|
||||
let target_abi = sess.target.options.abi.as_ref();
|
||||
let target_abi = &sess.target.options.abi;
|
||||
let target_pointer_width = sess.target.pointer_width;
|
||||
let version = get_version();
|
||||
let lt_20_1_1 = version < (20, 1, 1);
|
||||
@@ -371,7 +371,7 @@ fn update_target_reliable_float_cfg(sess: &Session, cfg: &mut TargetConfig) {
|
||||
// Selection failure <https://github.com/llvm/llvm-project/issues/50374> (fixed in llvm21)
|
||||
(Arch::S390x, _) if lt_21_0_0 => false,
|
||||
// MinGW ABI bugs <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115054>
|
||||
(Arch::X86_64, "windows") if target_env == "gnu" && target_abi != "llvm" => false,
|
||||
(Arch::X86_64, "windows") if target_env == "gnu" && *target_abi != Abi::Llvm => false,
|
||||
// Infinite recursion <https://github.com/llvm/llvm-project/issues/97981>
|
||||
(Arch::CSky, _) => false,
|
||||
(Arch::Hexagon, _) if lt_21_0_0 => false, // (fixed in llvm21)
|
||||
@@ -403,7 +403,7 @@ fn update_target_reliable_float_cfg(sess: &Session, cfg: &mut TargetConfig) {
|
||||
// not fail if our compiler-builtins is linked. (fixed in llvm21)
|
||||
(Arch::X86, _) if lt_21_0_0 => false,
|
||||
// MinGW ABI bugs <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115054>
|
||||
(Arch::X86_64, "windows") if target_env == "gnu" && target_abi != "llvm" => false,
|
||||
(Arch::X86_64, "windows") if target_env == "gnu" && *target_abi != Abi::Llvm => false,
|
||||
// There are no known problems on other platforms, so the only requirement is that symbols
|
||||
// are available. `compiler-builtins` provides all symbols required for core `f128`
|
||||
// support, so this should work for everything else.
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
};
|
||||
use rustc_middle::ty::Ty;
|
||||
use rustc_middle::ty::layout::{HasTyCtxt, LayoutOf};
|
||||
use rustc_target::spec::Arch;
|
||||
use rustc_target::spec::{Abi, Arch};
|
||||
|
||||
use crate::builder::Builder;
|
||||
use crate::llvm::{Type, Value};
|
||||
@@ -270,7 +270,7 @@ fn emit_powerpc_va_arg<'ll, 'tcx>(
|
||||
|
||||
// Rust does not currently support any powerpc softfloat targets.
|
||||
let target = &bx.cx.tcx.sess.target;
|
||||
let is_soft_float_abi = target.abi == "softfloat";
|
||||
let is_soft_float_abi = target.abi == Abi::SoftFloat;
|
||||
assert!(!is_soft_float_abi);
|
||||
|
||||
// All instances of VaArgSafe are passed directly.
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
use rustc_span::Symbol;
|
||||
use rustc_target::spec::crt_objects::CrtObjects;
|
||||
use rustc_target::spec::{
|
||||
BinaryFormat, Cc, LinkOutputKind, LinkSelfContainedComponents, LinkSelfContainedDefault,
|
||||
Abi, BinaryFormat, Cc, LinkOutputKind, LinkSelfContainedComponents, LinkSelfContainedDefault,
|
||||
LinkerFeatures, LinkerFlavor, LinkerFlavorCli, Lld, RelocModel, RelroLevel, SanitizerSet,
|
||||
SplitDebuginfo,
|
||||
};
|
||||
@@ -1819,7 +1819,7 @@ fn self_contained_components(
|
||||
LinkSelfContainedDefault::InferredForMusl => sess.crt_static(Some(crate_type)),
|
||||
LinkSelfContainedDefault::InferredForMingw => {
|
||||
sess.host == sess.target
|
||||
&& sess.target.abi != "uwp"
|
||||
&& sess.target.abi != Abi::Uwp
|
||||
&& detect_self_contained_mingw(sess, linker)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
use rustc_middle::ty::TyCtxt;
|
||||
use rustc_session::Session;
|
||||
use rustc_session::config::{self, CrateType, DebugInfo, LinkerPluginLto, Lto, OptLevel, Strip};
|
||||
use rustc_target::spec::{Arch, Cc, LinkOutputKind, LinkerFlavor, Lld};
|
||||
use rustc_target::spec::{Abi, Arch, Cc, LinkOutputKind, LinkerFlavor, Lld};
|
||||
use tracing::{debug, warn};
|
||||
|
||||
use super::command::Command;
|
||||
@@ -83,7 +83,7 @@ pub(crate) fn get_linker<'a>(
|
||||
// To comply with the Windows App Certification Kit,
|
||||
// MSVC needs to link with the Store versions of the runtime libraries (vcruntime, msvcrt, etc).
|
||||
let t = &sess.target;
|
||||
if matches!(flavor, LinkerFlavor::Msvc(..)) && t.abi == "uwp" {
|
||||
if matches!(flavor, LinkerFlavor::Msvc(..)) && t.abi == Abi::Uwp {
|
||||
if let Some(ref tool) = msvc_tool {
|
||||
let original_path = tool.path();
|
||||
if let Some(root_lib_path) = original_path.ancestors().nth(4) {
|
||||
@@ -134,7 +134,7 @@ pub(crate) fn get_linker<'a>(
|
||||
|
||||
// FIXME: Move `/LIBPATH` addition for uwp targets from the linker construction
|
||||
// to the linker args construction.
|
||||
assert!(cmd.get_args().is_empty() || sess.target.abi == "uwp");
|
||||
assert!(cmd.get_args().is_empty() || sess.target.abi == Abi::Uwp);
|
||||
match flavor {
|
||||
LinkerFlavor::Unix(Cc::No) if sess.target.os == "l4re" => {
|
||||
Box::new(L4Bender::new(cmd, sess)) as Box<dyn Linker>
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
use rustc_middle::bug;
|
||||
use rustc_session::Session;
|
||||
use rustc_span::sym;
|
||||
use rustc_target::spec::{RelocModel, Target, ef_avr_arch};
|
||||
use rustc_target::spec::{Abi, RelocModel, Target, ef_avr_arch};
|
||||
use tracing::debug;
|
||||
|
||||
use super::apple;
|
||||
@@ -379,11 +379,11 @@ pub(super) fn elf_e_flags(architecture: Architecture, sess: &Session) -> u32 {
|
||||
}
|
||||
}
|
||||
Architecture::Csky => {
|
||||
let e_flags = match sess.target.options.abi.as_ref() {
|
||||
"abiv2" => elf::EF_CSKY_ABIV2,
|
||||
_ => elf::EF_CSKY_ABIV1,
|
||||
};
|
||||
e_flags
|
||||
if matches!(sess.target.options.abi, Abi::AbiV2) {
|
||||
elf::EF_CSKY_ABIV2
|
||||
} else {
|
||||
elf::EF_CSKY_ABIV1
|
||||
}
|
||||
}
|
||||
Architecture::PowerPc64 => {
|
||||
const EF_PPC64_ABI_UNKNOWN: u32 = 0;
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
use rustc_middle::{bug, mir, span_bug};
|
||||
use rustc_session::cstore::{DllCallingConvention, DllImport};
|
||||
use rustc_span::Span;
|
||||
use rustc_target::spec::Target;
|
||||
use rustc_target::spec::{Abi, Target};
|
||||
|
||||
use crate::traits::*;
|
||||
|
||||
@@ -171,7 +171,7 @@ pub fn asm_const_to_str<'tcx>(
|
||||
}
|
||||
|
||||
pub fn is_mingw_gnu_toolchain(target: &Target) -> bool {
|
||||
target.os == "windows" && target.env == "gnu" && target.abi.is_empty()
|
||||
target.os == "windows" && target.env == "gnu" && target.abi == Abi::Unspecified
|
||||
}
|
||||
|
||||
pub fn i686_decorated_name(
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
use rustc_session::search_paths::PathKind;
|
||||
use rustc_span::Symbol;
|
||||
use rustc_span::def_id::{DefId, LOCAL_CRATE};
|
||||
use rustc_target::spec::{Arch, BinaryFormat, LinkSelfContainedComponents};
|
||||
use rustc_target::spec::{Abi, Arch, BinaryFormat, LinkSelfContainedComponents};
|
||||
|
||||
use crate::errors;
|
||||
|
||||
@@ -67,7 +67,7 @@ pub fn walk_native_lib_search_dirs<R>(
|
||||
// FIXME: On AIX this also has the side-effect of making the list of library search paths
|
||||
// non-empty, which is needed or the linker may decide to record the LIBPATH env, if
|
||||
// defined, as the search path instead of appending the default search paths.
|
||||
if sess.target.abi == "fortanix"
|
||||
if sess.target.abi == Abi::Fortanix
|
||||
|| sess.target.os == "linux"
|
||||
|| sess.target.os == "fuchsia"
|
||||
|| sess.target.is_like_aix
|
||||
|
||||
@@ -239,7 +239,7 @@ macro_rules! ins_sym {
|
||||
ins_none!(sym::sanitizer_cfi_normalize_integers);
|
||||
}
|
||||
|
||||
ins_str!(sym::target_abi, &sess.target.abi);
|
||||
ins_sym!(sym::target_abi, sess.target.abi.desc_symbol());
|
||||
ins_sym!(sym::target_arch, sess.target.arch.desc_symbol());
|
||||
ins_str!(sym::target_endian, sess.target.endian.as_str());
|
||||
ins_str!(sym::target_env, &sess.target.env);
|
||||
@@ -447,7 +447,7 @@ macro_rules! ins {
|
||||
};
|
||||
|
||||
for target in Target::builtins().chain(iter::once(current_target.clone())) {
|
||||
values_target_abi.insert(Symbol::intern(&target.options.abi));
|
||||
values_target_abi.insert(target.options.abi.desc_symbol());
|
||||
values_target_arch.insert(target.arch.desc_symbol());
|
||||
values_target_endian.insert(Symbol::intern(target.options.endian.as_str()));
|
||||
values_target_env.insert(Symbol::intern(&target.options.env));
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
use rustc_span::Symbol;
|
||||
|
||||
use super::{InlineAsmArch, InlineAsmType, ModifierInfo};
|
||||
use crate::spec::{RelocModel, Target};
|
||||
use crate::spec::{Abi, RelocModel, Target};
|
||||
|
||||
def_reg_class! {
|
||||
PowerPC PowerPCInlineAsmRegClass {
|
||||
@@ -104,10 +104,10 @@ fn reserved_v20to31(
|
||||
_is_clobber: bool,
|
||||
) -> Result<(), &'static str> {
|
||||
if target.is_like_aix {
|
||||
match &*target.options.abi {
|
||||
"vec-default" => Err("v20-v31 (vs52-vs63) are reserved on vec-default ABI"),
|
||||
"vec-extabi" => Ok(()),
|
||||
_ => unreachable!("unrecognized AIX ABI"),
|
||||
match &target.options.abi {
|
||||
Abi::VecDefault => Err("v20-v31 (vs52-vs63) are reserved on vec-default ABI"),
|
||||
Abi::VecExtAbi => Ok(()),
|
||||
abi => unreachable!("unrecognized AIX ABI: {abi}"),
|
||||
}
|
||||
} else {
|
||||
Ok(())
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
use rustc_abi::{BackendRepr, HasDataLayout, Primitive, TyAbiInterface};
|
||||
|
||||
use crate::callconv::{ArgAbi, FnAbi, Reg, RegKind, Uniform};
|
||||
use crate::spec::{HasTargetSpec, Target};
|
||||
use crate::spec::{Abi, HasTargetSpec, Target};
|
||||
|
||||
/// Indicates the variant of the AArch64 ABI we are compiling for.
|
||||
/// Used to accommodate Apple and Microsoft's deviations from the usual AAPCS ABI.
|
||||
@@ -33,7 +33,7 @@ fn is_homogeneous_aggregate<'a, Ty, C>(cx: &C, arg: &mut ArgAbi<'a, Ty>) -> Opti
|
||||
RegKind::Integer => false,
|
||||
// The softfloat ABI treats floats like integers, so they
|
||||
// do not get homogeneous aggregate treatment.
|
||||
RegKind::Float => cx.target_spec().abi != "softfloat",
|
||||
RegKind::Float => cx.target_spec().abi != Abi::SoftFloat,
|
||||
RegKind::Vector => size.bits() == 64 || size.bits() == 128,
|
||||
};
|
||||
|
||||
@@ -42,7 +42,7 @@ fn is_homogeneous_aggregate<'a, Ty, C>(cx: &C, arg: &mut ArgAbi<'a, Ty>) -> Opti
|
||||
}
|
||||
|
||||
fn softfloat_float_abi<Ty>(target: &Target, arg: &mut ArgAbi<'_, Ty>) {
|
||||
if target.abi != "softfloat" {
|
||||
if target.abi != Abi::SoftFloat {
|
||||
return;
|
||||
}
|
||||
// Do *not* use the float registers for passing arguments, as that would make LLVM pick the ABI
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
use rustc_abi::Endian;
|
||||
|
||||
use crate::spec::{
|
||||
BinaryFormat, Cc, CodeModel, LinkOutputKind, LinkerFlavor, TargetOptions, crt_objects, cvs,
|
||||
Abi, BinaryFormat, Cc, CodeModel, LinkOutputKind, LinkerFlavor, TargetOptions, crt_objects, cvs,
|
||||
};
|
||||
|
||||
pub(crate) fn opts() -> TargetOptions {
|
||||
TargetOptions {
|
||||
abi: "vec-extabi".into(),
|
||||
abi: Abi::VecExtAbi,
|
||||
code_model: Some(CodeModel::Large),
|
||||
cpu: "pwr7".into(),
|
||||
os: "aix".into(),
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
use std::str::FromStr;
|
||||
|
||||
use crate::spec::{
|
||||
BinaryFormat, Cc, DebuginfoKind, FloatAbi, FramePointer, LinkerFlavor, Lld, RustcAbi,
|
||||
Abi, BinaryFormat, Cc, DebuginfoKind, FloatAbi, FramePointer, LinkerFlavor, Lld, RustcAbi,
|
||||
SplitDebuginfo, StackProbeType, StaticCow, Target, TargetOptions, cvs,
|
||||
};
|
||||
|
||||
@@ -101,6 +101,14 @@ fn target_env(self) -> &'static str {
|
||||
Self::Simulator => "sim",
|
||||
}
|
||||
}
|
||||
|
||||
fn target_abi(self) -> Abi {
|
||||
match self {
|
||||
Self::Normal => Abi::Unspecified,
|
||||
Self::MacCatalyst => Abi::MacAbi,
|
||||
Self::Simulator => Abi::Sim,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Get the base target options, unversioned LLVM target and `target_arch` from the three
|
||||
@@ -120,7 +128,7 @@ pub(crate) fn base(
|
||||
//
|
||||
// But let's continue setting them for backwards compatibility.
|
||||
// FIXME(madsmtm): Warn about using these in the future.
|
||||
abi: env.target_env().into(),
|
||||
abi: env.target_abi(),
|
||||
cpu: arch.target_cpu(env).into(),
|
||||
link_env_remove: link_env_remove(os),
|
||||
vendor: "apple".into(),
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
use super::OSVersion;
|
||||
use crate::spec::Abi;
|
||||
use crate::spec::targets::{
|
||||
aarch64_apple_darwin, aarch64_apple_ios_sim, aarch64_apple_visionos_sim,
|
||||
aarch64_apple_watchos_sim, i686_apple_darwin, x86_64_apple_darwin, x86_64_apple_ios,
|
||||
@@ -20,7 +21,7 @@ fn simulator_targets_set_env() {
|
||||
for target in &all_sim_targets {
|
||||
assert_eq!(target.env, "sim");
|
||||
// Ensure backwards compat
|
||||
assert_eq!(target.abi, "sim");
|
||||
assert_eq!(target.abi, Abi::Sim);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use std::borrow::Cow;
|
||||
|
||||
use crate::spec::{
|
||||
BinaryFormat, Cc, DebuginfoKind, LinkerFlavor, Lld, SplitDebuginfo, TargetOptions, cvs,
|
||||
Abi, BinaryFormat, Cc, DebuginfoKind, LinkerFlavor, Lld, SplitDebuginfo, TargetOptions, cvs,
|
||||
};
|
||||
|
||||
pub(crate) fn opts() -> TargetOptions {
|
||||
@@ -23,7 +23,7 @@ pub(crate) fn opts() -> TargetOptions {
|
||||
os: "windows".into(),
|
||||
env: "gnu".into(),
|
||||
vendor: "pc".into(),
|
||||
abi: "llvm".into(),
|
||||
abi: Abi::Llvm,
|
||||
linker: Some("clang".into()),
|
||||
dynamic_linking: true,
|
||||
dll_tls_export: false,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Cc, LinkArgs, LinkerFlavor, Lld, TargetOptions, add_link_args, base};
|
||||
use crate::spec::{Abi, Cc, LinkArgs, LinkerFlavor, Lld, TargetOptions, add_link_args, base};
|
||||
|
||||
pub(crate) fn opts() -> TargetOptions {
|
||||
let base = base::windows_gnu::opts();
|
||||
@@ -23,7 +23,7 @@ pub(crate) fn opts() -> TargetOptions {
|
||||
let late_link_args_static = LinkArgs::new();
|
||||
|
||||
TargetOptions {
|
||||
abi: "uwp".into(),
|
||||
abi: Abi::Uwp,
|
||||
vendor: "uwp".into(),
|
||||
limit_rdylib_exports: false,
|
||||
late_link_args,
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
use crate::spec::{LinkerFlavor, Lld, TargetOptions, base};
|
||||
use crate::spec::{Abi, LinkerFlavor, Lld, TargetOptions, base};
|
||||
|
||||
pub(crate) fn opts() -> TargetOptions {
|
||||
let mut opts =
|
||||
TargetOptions { abi: "uwp".into(), vendor: "uwp".into(), ..base::windows_msvc::opts() };
|
||||
TargetOptions { abi: Abi::Uwp, vendor: "uwp".into(), ..base::windows_msvc::opts() };
|
||||
|
||||
opts.add_pre_link_args(LinkerFlavor::Msvc(Lld::No), &["/APPCONTAINER", "mincore.lib"]);
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
use super::crt_objects::CrtObjects;
|
||||
use super::{
|
||||
Arch, BinaryFormat, CodeModel, DebuginfoKind, FloatAbi, FramePointer, LinkArgsCli,
|
||||
Abi, Arch, BinaryFormat, CodeModel, DebuginfoKind, FloatAbi, FramePointer, LinkArgsCli,
|
||||
LinkSelfContainedComponents, LinkSelfContainedDefault, LinkerFlavorCli, LldFlavor,
|
||||
MergeFunctions, PanicStrategy, RelocModel, RelroLevel, RustcAbi, SanitizerSet,
|
||||
SmallDataThresholdSupport, SplitDebuginfo, StackProbeType, StaticCow, SymbolVisibility, Target,
|
||||
@@ -507,7 +507,7 @@ struct TargetSpecJson {
|
||||
c_enum_min_bits: Option<u64>,
|
||||
os: Option<StaticCow<str>>,
|
||||
env: Option<StaticCow<str>>,
|
||||
abi: Option<StaticCow<str>>,
|
||||
abi: Option<Abi>,
|
||||
vendor: Option<StaticCow<str>>,
|
||||
linker: Option<StaticCow<str>>,
|
||||
#[serde(rename = "linker-flavor")]
|
||||
|
||||
@@ -1926,6 +1926,38 @@ pub fn desc_symbol(&self) -> Symbol {
|
||||
}
|
||||
}
|
||||
|
||||
crate::target_spec_enum! {
|
||||
pub enum Abi {
|
||||
Abi64 = "abi64",
|
||||
AbiV2 = "abiv2",
|
||||
AbiV2Hf = "abiv2hf",
|
||||
Eabi = "eabi",
|
||||
EabiHf = "eabihf",
|
||||
ElfV1 = "elfv1",
|
||||
ElfV2 = "elfv2",
|
||||
Fortanix = "fortanix",
|
||||
Ilp32 = "ilp32",
|
||||
Ilp32e = "ilp32e",
|
||||
Llvm = "llvm",
|
||||
MacAbi = "macabi",
|
||||
Sim = "sim",
|
||||
SoftFloat = "softfloat",
|
||||
Spe = "spe",
|
||||
Uwp = "uwp",
|
||||
VecDefault = "vec-default",
|
||||
VecExtAbi = "vec-extabi",
|
||||
X32 = "x32",
|
||||
Unspecified = "",
|
||||
}
|
||||
other_variant = Other;
|
||||
}
|
||||
|
||||
impl Abi {
|
||||
pub fn desc_symbol(&self) -> Symbol {
|
||||
Symbol::intern(self.desc())
|
||||
}
|
||||
}
|
||||
|
||||
/// Everything `rustc` knows about how to compile for a specific target.
|
||||
///
|
||||
/// Every field here must be specified, and has no default value.
|
||||
@@ -2052,10 +2084,10 @@ pub struct TargetOptions {
|
||||
/// Environment name to use for conditional compilation (`target_env`). Defaults to "".
|
||||
pub env: StaticCow<str>,
|
||||
/// ABI name to distinguish multiple ABIs on the same OS and architecture. For instance, `"eabi"`
|
||||
/// or `"eabihf"`. Defaults to "".
|
||||
/// or `"eabihf"`. Defaults to [`Abi::Unspecified`].
|
||||
/// This field is *not* forwarded directly to LLVM; its primary purpose is `cfg(target_abi)`.
|
||||
/// However, parts of the backend do check this field for specific values to enable special behavior.
|
||||
pub abi: StaticCow<str>,
|
||||
pub abi: Abi,
|
||||
/// Vendor name to use for conditional compilation (`target_vendor`). Defaults to "unknown".
|
||||
#[rustc_lint_opt_deny_field_access(
|
||||
"use `Target::is_like_*` instead of this field; see https://github.com/rust-lang/rust/issues/100343 for rationale"
|
||||
@@ -2560,7 +2592,7 @@ fn default() -> TargetOptions {
|
||||
c_int_width: 32,
|
||||
os: "none".into(),
|
||||
env: "".into(),
|
||||
abi: "".into(),
|
||||
abi: Abi::Unspecified,
|
||||
vendor: "unknown".into(),
|
||||
linker: option_env!("CFG_DEFAULT_LINKER").map(|s| s.into()),
|
||||
linker_flavor: LinkerFlavor::Gnu(Cc::Yes, Lld::No),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use rustc_abi::Endian;
|
||||
|
||||
use crate::spec::{
|
||||
Arch, FramePointer, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
Abi, Arch, FramePointer, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
@@ -20,7 +20,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "E-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32".into(),
|
||||
arch: Arch::AArch64,
|
||||
options: TargetOptions {
|
||||
abi: "ilp32".into(),
|
||||
abi: Abi::Ilp32,
|
||||
features: "+v8a,+outline-atomics".into(),
|
||||
// the AAPCS64 expects use of non-leaf frame pointers per
|
||||
// https://github.com/ARM-software/abi-aa/blob/4492d1570eb70c8fd146623e0db65b2d241f12e7/aapcs64/aapcs64.rst#the-frame-pointer
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
use rustc_abi::Endian;
|
||||
|
||||
use crate::spec::{
|
||||
Arch, Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, SanitizerSet, StackProbeType, Target,
|
||||
TargetMetadata, TargetOptions,
|
||||
Abi, Arch, Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, SanitizerSet, StackProbeType,
|
||||
Target, TargetMetadata, TargetOptions,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
let opts = TargetOptions {
|
||||
abi: "softfloat".into(),
|
||||
abi: Abi::SoftFloat,
|
||||
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
|
||||
linker: Some("rust-lld".into()),
|
||||
features: "+v8a,+strict-align,-neon,-fp-armv8".into(),
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use crate::spec::{
|
||||
Arch, FramePointer, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
Abi, Arch, FramePointer, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
@@ -15,7 +15,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32".into(),
|
||||
arch: Arch::AArch64,
|
||||
options: TargetOptions {
|
||||
abi: "ilp32".into(),
|
||||
abi: Abi::Ilp32,
|
||||
features: "+v8a,+outline-atomics".into(),
|
||||
// the AAPCS64 expects use of non-leaf frame pointers per
|
||||
// https://github.com/ARM-software/abi-aa/blob/4492d1570eb70c8fd146623e0db65b2d241f12e7/aapcs64/aapcs64.rst#the-frame-pointer
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
// For example, `-C target-cpu=cortex-a53`.
|
||||
|
||||
use crate::spec::{
|
||||
Arch, Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, SanitizerSet, StackProbeType, Target,
|
||||
TargetMetadata, TargetOptions,
|
||||
Abi, Arch, Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, SanitizerSet, StackProbeType,
|
||||
Target, TargetMetadata, TargetOptions,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
let opts = TargetOptions {
|
||||
abi: "softfloat".into(),
|
||||
abi: Abi::SoftFloat,
|
||||
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
|
||||
linker: Some("rust-lld".into()),
|
||||
features: "+v8a,+strict-align,-neon,-fp-armv8".into(),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, FloatAbi, SanitizerSet, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, SanitizerSet, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -13,7 +13,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: Arch::Arm,
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
// https://developer.android.com/ndk/guides/abis.html#armeabi
|
||||
features: "+strict-align,+v5te".into(),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -13,7 +13,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: Arch::Arm,
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
features: "+strict-align,+v6".into(),
|
||||
max_atomic_width: Some(64),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -13,7 +13,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: Arch::Arm,
|
||||
options: TargetOptions {
|
||||
abi: "eabihf".into(),
|
||||
abi: Abi::EabiHf,
|
||||
llvm_floatabi: Some(FloatAbi::Hard),
|
||||
features: "+strict-align,+v6,+vfp2,-d32".into(),
|
||||
max_atomic_width: Some(64),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -13,7 +13,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: Arch::Arm,
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
// Most of these settings are copied from the arm_unknown_linux_gnueabi
|
||||
// target.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -13,7 +13,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: Arch::Arm,
|
||||
options: TargetOptions {
|
||||
abi: "eabihf".into(),
|
||||
abi: Abi::EabiHf,
|
||||
llvm_floatabi: Some(FloatAbi::Hard),
|
||||
// Most of these settings are copied from the arm_unknown_linux_gnueabihf
|
||||
// target.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use rustc_abi::Endian;
|
||||
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -15,7 +15,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "E-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: Arch::Arm,
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
features: "+strict-align,+v8,+crc".into(),
|
||||
endian: Endian::Big,
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
use rustc_abi::Endian;
|
||||
|
||||
use crate::spec::{
|
||||
Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
Abi, Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
TargetOptions,
|
||||
};
|
||||
|
||||
@@ -20,7 +20,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "E-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: Arch::Arm,
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
endian: Endian::Big,
|
||||
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
use rustc_abi::Endian;
|
||||
|
||||
use crate::spec::{
|
||||
Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
Abi, Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
TargetOptions,
|
||||
};
|
||||
|
||||
@@ -20,7 +20,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "E-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: Arch::Arm,
|
||||
options: TargetOptions {
|
||||
abi: "eabihf".into(),
|
||||
abi: Abi::EabiHf,
|
||||
llvm_floatabi: Some(FloatAbi::Hard),
|
||||
endian: Endian::Big,
|
||||
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
//! `-Clink-arg=-Tmy_script.ld` to override that with a correct linker script.
|
||||
|
||||
use crate::spec::{
|
||||
Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
Abi, Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
TargetOptions, cvs,
|
||||
};
|
||||
|
||||
@@ -36,7 +36,7 @@ pub(crate) fn target() -> Target {
|
||||
*/
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
|
||||
linker: Some("rust-lld".into()),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -13,7 +13,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: Arch::Arm,
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
features: "+soft-float,+strict-align".into(),
|
||||
// Atomic operations provided by compiler-builtins
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
//! Targets the ARMv5TE, with code as `a32` code by default.
|
||||
|
||||
use crate::spec::{Arch, FloatAbi, FramePointer, Target, TargetMetadata, TargetOptions, base, cvs};
|
||||
use crate::spec::{
|
||||
Abi, Arch, FloatAbi, FramePointer, Target, TargetMetadata, TargetOptions, base, cvs,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -25,7 +27,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
// extra args passed to the external assembler (assuming `arm-none-eabi-as`):
|
||||
// * activate t32/a32 interworking
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -13,7 +13,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: Arch::Arm,
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
features: "+soft-float,+strict-align".into(),
|
||||
// Atomic operations provided by compiler-builtins
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -13,7 +13,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: Arch::Arm,
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
features: "+soft-float,+strict-align".into(),
|
||||
// Atomic operations provided by compiler-builtins
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -13,7 +13,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: Arch::Arm,
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
features: "+soft-float,+strict-align".into(),
|
||||
// Atomic operations provided by compiler-builtins
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -13,7 +13,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: Arch::Arm,
|
||||
options: TargetOptions {
|
||||
abi: "eabihf".into(),
|
||||
abi: Abi::EabiHf,
|
||||
llvm_floatabi: Some(FloatAbi::Hard),
|
||||
features: "+v6,+vfp2,-d32".into(),
|
||||
max_atomic_width: Some(64),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -13,7 +13,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: Arch::Arm,
|
||||
options: TargetOptions {
|
||||
abi: "eabihf".into(),
|
||||
abi: Abi::EabiHf,
|
||||
llvm_floatabi: Some(FloatAbi::Hard),
|
||||
features: "+v6,+vfp2,-d32".into(),
|
||||
max_atomic_width: Some(64),
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
use crate::spec::{
|
||||
Arch, Cc, FloatAbi, LinkerFlavor, Lld, RelocModel, Target, TargetMetadata, TargetOptions, cvs,
|
||||
Abi, Arch, Cc, FloatAbi, LinkerFlavor, Lld, RelocModel, Target, TargetMetadata, TargetOptions,
|
||||
cvs,
|
||||
};
|
||||
|
||||
/// A base target for Nintendo 3DS devices using the devkitARM toolchain.
|
||||
@@ -28,7 +29,7 @@ pub(crate) fn target() -> Target {
|
||||
env: "newlib".into(),
|
||||
vendor: "nintendo".into(),
|
||||
cpu: "mpcore".into(),
|
||||
abi: "eabihf".into(),
|
||||
abi: Abi::EabiHf,
|
||||
llvm_floatabi: Some(FloatAbi::Hard),
|
||||
families: cvs!["unix"],
|
||||
linker: Some("arm-none-eabi-gcc".into()),
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use crate::spec::{
|
||||
Arch, Cc, FloatAbi, LinkerFlavor, Lld, SanitizerSet, Target, TargetMetadata, TargetOptions,
|
||||
base,
|
||||
Abi, Arch, Cc, FloatAbi, LinkerFlavor, Lld, SanitizerSet, Target, TargetMetadata,
|
||||
TargetOptions, base,
|
||||
};
|
||||
|
||||
// This target if is for the baseline of the Android v7a ABI
|
||||
@@ -26,7 +26,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: Arch::Arm,
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
features: "+v7,+thumb-mode,+thumb2,+vfp3,-d32,-neon".into(),
|
||||
supported_sanitizers: SanitizerSet::ADDRESS,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use crate::spec::{
|
||||
Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
Abi, Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
TargetOptions, cvs,
|
||||
};
|
||||
|
||||
@@ -19,7 +19,7 @@ pub(crate) fn target() -> Target {
|
||||
options: TargetOptions {
|
||||
os: "rtems".into(),
|
||||
families: cvs!["unix"],
|
||||
abi: "eabihf".into(),
|
||||
abi: Abi::EabiHf,
|
||||
llvm_floatabi: Some(FloatAbi::Hard),
|
||||
linker_flavor: LinkerFlavor::Gnu(Cc::Yes, Lld::No),
|
||||
linker: None,
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
use rustc_abi::Endian;
|
||||
|
||||
use crate::spec::{
|
||||
Arch, Cc, FloatAbi, LinkerFlavor, Lld, RelocModel, Target, TargetMetadata, TargetOptions, cvs,
|
||||
Abi, Arch, Cc, FloatAbi, LinkerFlavor, Lld, RelocModel, Target, TargetMetadata, TargetOptions,
|
||||
cvs,
|
||||
};
|
||||
|
||||
/// A base target for PlayStation Vita devices using the VITASDK toolchain (using newlib).
|
||||
@@ -33,7 +34,7 @@ pub(crate) fn target() -> Target {
|
||||
c_int_width: 32,
|
||||
env: "newlib".into(),
|
||||
vendor: "sony".into(),
|
||||
abi: "eabihf".into(),
|
||||
abi: Abi::EabiHf,
|
||||
llvm_floatabi: Some(FloatAbi::Hard),
|
||||
linker_flavor: LinkerFlavor::Gnu(Cc::Yes, Lld::No),
|
||||
no_default_libraries: false,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -13,7 +13,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: Arch::Arm,
|
||||
options: TargetOptions {
|
||||
abi: "eabihf".into(),
|
||||
abi: Abi::EabiHf,
|
||||
llvm_floatabi: Some(FloatAbi::Hard),
|
||||
features: "+v7,+vfp3,-d32,+thumb2,-neon".into(),
|
||||
max_atomic_width: Some(64),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
// This target is for glibc Linux on ARMv7 without thumb-mode, NEON or
|
||||
// hardfloat.
|
||||
@@ -16,7 +16,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: Arch::Arm,
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
features: "+v7,+thumb2,+soft-float,-neon".into(),
|
||||
max_atomic_width: Some(64),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
// This target is for glibc Linux on ARMv7 without NEON or
|
||||
// thumb-mode. See the thumbv7neon variant for enabling both.
|
||||
@@ -16,7 +16,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: Arch::Arm,
|
||||
options: TargetOptions {
|
||||
abi: "eabihf".into(),
|
||||
abi: Abi::EabiHf,
|
||||
llvm_floatabi: Some(FloatAbi::Hard),
|
||||
// Info about features at https://wiki.debian.org/ArmHardFloatPort
|
||||
features: "+v7,+vfp3,-d32,+thumb2,-neon".into(),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
// This target is for musl Linux on ARMv7 without thumb-mode, NEON or
|
||||
// hardfloat.
|
||||
@@ -19,7 +19,7 @@ pub(crate) fn target() -> Target {
|
||||
arch: Arch::Arm,
|
||||
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
features: "+v7,+thumb2,+soft-float,-neon".into(),
|
||||
max_atomic_width: Some(64),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
// This target is for musl Linux on ARMv7 without thumb-mode or NEON.
|
||||
|
||||
@@ -18,7 +18,7 @@ pub(crate) fn target() -> Target {
|
||||
// Most of these settings are copied from the armv7_unknown_linux_gnueabihf
|
||||
// target.
|
||||
options: TargetOptions {
|
||||
abi: "eabihf".into(),
|
||||
abi: Abi::EabiHf,
|
||||
llvm_floatabi: Some(FloatAbi::Hard),
|
||||
features: "+v7,+vfp3,-d32,+thumb2,-neon".into(),
|
||||
max_atomic_width: Some(64),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
// This target is for OpenHarmony on ARMv7 Linux with thumb-mode, but no NEON or
|
||||
// hardfloat.
|
||||
@@ -19,7 +19,7 @@ pub(crate) fn target() -> Target {
|
||||
arch: Arch::Arm,
|
||||
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
features: "+v7,+thumb2,+soft-float,-neon".into(),
|
||||
max_atomic_width: Some(64),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
// This target is for uclibc Linux on ARMv7 without NEON,
|
||||
// thumb-mode or hardfloat.
|
||||
@@ -18,7 +18,7 @@ pub(crate) fn target() -> Target {
|
||||
arch: Arch::Arm,
|
||||
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
features: "+v7,+thumb2,+soft-float,-neon".into(),
|
||||
cpu: "generic".into(),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
// This target is for uclibc Linux on ARMv7 without NEON or
|
||||
// thumb-mode. See the thumbv7neon variant for enabling both.
|
||||
@@ -23,7 +23,7 @@ pub(crate) fn target() -> Target {
|
||||
cpu: "generic".into(),
|
||||
max_atomic_width: Some(64),
|
||||
mcount: "_mcount".into(),
|
||||
abi: "eabihf".into(),
|
||||
abi: Abi::EabiHf,
|
||||
llvm_floatabi: Some(FloatAbi::Hard),
|
||||
..base
|
||||
},
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -13,7 +13,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: Arch::Arm,
|
||||
options: TargetOptions {
|
||||
abi: "eabihf".into(),
|
||||
abi: Abi::EabiHf,
|
||||
llvm_floatabi: Some(FloatAbi::Hard),
|
||||
features: "+v7,+vfp3,-d32,+thumb2,-neon".into(),
|
||||
max_atomic_width: Some(64),
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use crate::spec::{
|
||||
Arch, FloatAbi, LinkSelfContainedDefault, PanicStrategy, RelroLevel, Target, TargetMetadata,
|
||||
TargetOptions,
|
||||
Abi, Arch, FloatAbi, LinkSelfContainedDefault, PanicStrategy, RelroLevel, Target,
|
||||
TargetMetadata, TargetOptions,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
@@ -19,7 +19,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: Arch::Arm,
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
features: "+v7,+thumb2,+soft-float,-neon".into(),
|
||||
max_atomic_width: Some(64),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -13,7 +13,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: Arch::Arm,
|
||||
options: TargetOptions {
|
||||
abi: "eabihf".into(),
|
||||
abi: Abi::EabiHf,
|
||||
llvm_floatabi: Some(FloatAbi::Hard),
|
||||
// Info about features at https://wiki.debian.org/ArmHardFloatPort
|
||||
features: "+v7,+vfp3,-d32,+thumb2,-neon".into(),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, FloatAbi, RelocModel, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, RelocModel, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
let base = base::solid::opts("asp3");
|
||||
@@ -14,7 +14,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: Arch::Arm,
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
linker: Some("arm-kmc-eabi-gcc".into()),
|
||||
features: "+v7,+soft-float,+thumb2,-neon".into(),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, FloatAbi, RelocModel, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, RelocModel, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
let base = base::solid::opts("asp3");
|
||||
@@ -14,7 +14,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
arch: Arch::Arm,
|
||||
options: TargetOptions {
|
||||
abi: "eabihf".into(),
|
||||
abi: Abi::EabiHf,
|
||||
llvm_floatabi: Some(FloatAbi::Hard),
|
||||
linker: Some("arm-kmc-eabi-gcc".into()),
|
||||
features: "+v7,+vfp3,-d32,+thumb2,-neon".into(),
|
||||
|
||||
@@ -15,13 +15,13 @@
|
||||
// linking. rationale: matches `thumb` targets
|
||||
|
||||
use crate::spec::{
|
||||
Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
Abi, Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
TargetOptions,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
let opts = TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
|
||||
linker: Some("rust-lld".into()),
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
// `thumb` & `aarch64` targets.
|
||||
|
||||
use crate::spec::{
|
||||
Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
Abi, Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
TargetOptions,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
let opts = TargetOptions {
|
||||
abi: "eabihf".into(),
|
||||
abi: Abi::EabiHf,
|
||||
llvm_floatabi: Some(FloatAbi::Hard),
|
||||
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
|
||||
linker: Some("rust-lld".into()),
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
// configuration without hardware floating point support.
|
||||
|
||||
use crate::spec::{
|
||||
Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
Abi, Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
TargetOptions, cvs,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
let opts = TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
|
||||
linker: Some("rust-lld".into()),
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
// configuration with hardware floating point support.
|
||||
|
||||
use crate::spec::{
|
||||
Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
Abi, Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
TargetOptions, cvs,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
let opts = TargetOptions {
|
||||
abi: "eabihf".into(),
|
||||
abi: Abi::EabiHf,
|
||||
llvm_floatabi: Some(FloatAbi::Hard),
|
||||
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
|
||||
linker: Some("rust-lld".into()),
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use crate::spec::{
|
||||
Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
Abi, Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
TargetOptions,
|
||||
};
|
||||
|
||||
@@ -11,7 +11,7 @@ pub(crate) fn target() -> Target {
|
||||
env: "v5".into(),
|
||||
os: "vexos".into(),
|
||||
cpu: "cortex-a9".into(),
|
||||
abi: "eabihf".into(),
|
||||
abi: Abi::EabiHf,
|
||||
is_like_vexos: true,
|
||||
llvm_floatabi: Some(FloatAbi::Hard),
|
||||
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Targets the Little-endian Cortex-R4/R5 processor (ARMv7-R)
|
||||
|
||||
use crate::spec::{
|
||||
Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
Abi, Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
TargetOptions,
|
||||
};
|
||||
|
||||
@@ -19,7 +19,7 @@ pub(crate) fn target() -> Target {
|
||||
arch: Arch::Arm,
|
||||
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
|
||||
linker: Some("rust-lld".into()),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Targets the Little-endian Cortex-R4F/R5F processor (ARMv7-R)
|
||||
|
||||
use crate::spec::{
|
||||
Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
Abi, Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
TargetOptions,
|
||||
};
|
||||
|
||||
@@ -19,7 +19,7 @@ pub(crate) fn target() -> Target {
|
||||
arch: Arch::Arm,
|
||||
|
||||
options: TargetOptions {
|
||||
abi: "eabihf".into(),
|
||||
abi: Abi::EabiHf,
|
||||
llvm_floatabi: Some(FloatAbi::Hard),
|
||||
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
|
||||
linker: Some("rust-lld".into()),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Targets the Little-endian Cortex-R52 processor (ARMv8-R)
|
||||
|
||||
use crate::spec::{
|
||||
Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
Abi, Arch, Cc, FloatAbi, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
TargetOptions,
|
||||
};
|
||||
|
||||
@@ -19,7 +19,7 @@ pub(crate) fn target() -> Target {
|
||||
arch: Arch::Arm,
|
||||
|
||||
options: TargetOptions {
|
||||
abi: "eabihf".into(),
|
||||
abi: Abi::EabiHf,
|
||||
llvm_floatabi: Some(FloatAbi::Hard),
|
||||
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
|
||||
linker: Some("rust-lld".into()),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, Cc, LinkerFlavor, Lld, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, Cc, LinkerFlavor, Lld, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
// This target is for glibc Linux on Csky
|
||||
|
||||
@@ -16,7 +16,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-S32-p:32:32-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:32:32-v128:32:32-a:0:32-Fi32-n32".into(),
|
||||
arch: Arch::CSky,
|
||||
options: TargetOptions {
|
||||
abi: "abiv2".into(),
|
||||
abi: Abi::AbiV2,
|
||||
features: "+2e3,+3e7,+7e10,+cache,+dsp1e2,+dspe60,+e1,+e2,+edsp,+elrw,+hard-tp,+high-registers,+hwdiv,+mp,+mp1e2,+nvic,+trust".into(),
|
||||
late_link_args: TargetOptions::link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-l:libatomic.a"]),
|
||||
max_atomic_width: Some(32),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, Cc, LinkerFlavor, Lld, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, Cc, LinkerFlavor, Lld, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
// This target is for glibc Linux on Csky
|
||||
|
||||
@@ -16,7 +16,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-S32-p:32:32-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:32:32-v128:32:32-a:0:32-Fi32-n32".into(),
|
||||
arch: Arch::CSky,
|
||||
options: TargetOptions {
|
||||
abi: "abiv2hf".into(),
|
||||
abi: Abi::AbiV2Hf,
|
||||
cpu: "ck860fv".into(),
|
||||
features: "+hard-float,+hard-float-abi,+2e3,+3e7,+7e10,+cache,+dsp1e2,+dspe60,+e1,+e2,+edsp,+elrw,+hard-tp,+high-registers,+hwdiv,+mp,+mp1e2,+nvic,+trust".into(),
|
||||
late_link_args: TargetOptions::link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-l:libatomic.a", "-mhard-float"]),
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
use crate::spec::{
|
||||
Arch, Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata, TargetOptions,
|
||||
Abi, Arch, Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
TargetOptions,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
@@ -17,7 +18,7 @@ pub(crate) fn target() -> Target {
|
||||
options: TargetOptions {
|
||||
cpu: "generic".into(),
|
||||
features: "-f,-d".into(),
|
||||
abi: "softfloat".into(),
|
||||
abi: Abi::SoftFloat,
|
||||
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
|
||||
linker: Some("rust-lld".into()),
|
||||
llvm_abiname: "ilp32s".into(),
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use crate::spec::{
|
||||
Arch, Cc, CodeModel, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
Abi, Arch, Cc, CodeModel, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
TargetOptions,
|
||||
};
|
||||
|
||||
@@ -18,7 +18,7 @@ pub(crate) fn target() -> Target {
|
||||
options: TargetOptions {
|
||||
cpu: "generic".into(),
|
||||
features: "-f,-d".into(),
|
||||
abi: "softfloat".into(),
|
||||
abi: Abi::SoftFloat,
|
||||
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
|
||||
linker: Some("rust-lld".into()),
|
||||
llvm_abiname: "lp64s".into(),
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
use rustc_abi::Endian;
|
||||
|
||||
use crate::spec::{Arch, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
let mut base = base::linux_musl::opts();
|
||||
@@ -24,7 +24,7 @@ pub(crate) fn target() -> Target {
|
||||
arch: Arch::Mips64,
|
||||
options: TargetOptions {
|
||||
vendor: "openwrt".into(),
|
||||
abi: "abi64".into(),
|
||||
abi: Abi::Abi64,
|
||||
endian: Endian::Big,
|
||||
mcount: "_mcount".into(),
|
||||
llvm_abiname: "n64".into(),
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use rustc_abi::Endian;
|
||||
|
||||
use crate::spec::{Arch, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -15,7 +15,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "E-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".into(),
|
||||
arch: Arch::Mips64,
|
||||
options: TargetOptions {
|
||||
abi: "abi64".into(),
|
||||
abi: Abi::Abi64,
|
||||
endian: Endian::Big,
|
||||
// NOTE(mips64r2) matches C toolchain
|
||||
cpu: "mips64r2".into(),
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use rustc_abi::Endian;
|
||||
|
||||
use crate::spec::{Arch, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
let mut base = base::linux_musl::opts();
|
||||
@@ -20,7 +20,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "E-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".into(),
|
||||
arch: Arch::Mips64,
|
||||
options: TargetOptions {
|
||||
abi: "abi64".into(),
|
||||
abi: Abi::Abi64,
|
||||
endian: Endian::Big,
|
||||
mcount: "_mcount".into(),
|
||||
llvm_abiname: "n64".into(),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -13,7 +13,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".into(),
|
||||
arch: Arch::Mips64,
|
||||
options: TargetOptions {
|
||||
abi: "abi64".into(),
|
||||
abi: Abi::Abi64,
|
||||
// NOTE(mips64r2) matches C toolchain
|
||||
cpu: "mips64r2".into(),
|
||||
features: "+mips64r2,+xgot".into(),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
let mut base = base::linux_musl::opts();
|
||||
@@ -18,7 +18,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".into(),
|
||||
arch: Arch::Mips64,
|
||||
options: TargetOptions {
|
||||
abi: "abi64".into(),
|
||||
abi: Abi::Abi64,
|
||||
mcount: "_mcount".into(),
|
||||
llvm_abiname: "n64".into(),
|
||||
..base
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use rustc_abi::Endian;
|
||||
|
||||
use crate::spec::{Arch, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -15,7 +15,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "E-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".into(),
|
||||
arch: Arch::Mips64r6,
|
||||
options: TargetOptions {
|
||||
abi: "abi64".into(),
|
||||
abi: Abi::Abi64,
|
||||
endian: Endian::Big,
|
||||
// NOTE(mips64r6) matches C toolchain
|
||||
cpu: "mips64r6".into(),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::spec::{Arch, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -13,7 +13,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".into(),
|
||||
arch: Arch::Mips64r6,
|
||||
options: TargetOptions {
|
||||
abi: "abi64".into(),
|
||||
abi: Abi::Abi64,
|
||||
// NOTE(mips64r6) matches C toolchain
|
||||
cpu: "mips64r6".into(),
|
||||
features: "+mips64r6".into(),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use rustc_abi::Endian;
|
||||
|
||||
use crate::spec::{
|
||||
Arch, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
Abi, Arch, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
@@ -10,7 +10,7 @@ pub(crate) fn target() -> Target {
|
||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
||||
base.max_atomic_width = Some(64);
|
||||
base.stack_probes = StackProbeType::Inline;
|
||||
base.abi = "elfv2".into();
|
||||
base.abi = Abi::ElfV2;
|
||||
base.llvm_abiname = "elfv2".into();
|
||||
|
||||
Target {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use rustc_abi::Endian;
|
||||
|
||||
use crate::spec::{
|
||||
Arch, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
Abi, Arch, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
@@ -10,7 +10,7 @@ pub(crate) fn target() -> Target {
|
||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
||||
base.max_atomic_width = Some(64);
|
||||
base.stack_probes = StackProbeType::Inline;
|
||||
base.abi = "elfv1".into();
|
||||
base.abi = Abi::ElfV1;
|
||||
base.llvm_abiname = "elfv1".into();
|
||||
|
||||
Target {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use rustc_abi::Endian;
|
||||
|
||||
use crate::spec::{
|
||||
Arch, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
Abi, Arch, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
@@ -10,7 +10,7 @@ pub(crate) fn target() -> Target {
|
||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
||||
base.max_atomic_width = Some(64);
|
||||
base.stack_probes = StackProbeType::Inline;
|
||||
base.abi = "elfv2".into();
|
||||
base.abi = Abi::ElfV2;
|
||||
base.llvm_abiname = "elfv2".into();
|
||||
|
||||
Target {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use rustc_abi::Endian;
|
||||
|
||||
use crate::spec::{
|
||||
Arch, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
Abi, Arch, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
@@ -10,7 +10,7 @@ pub(crate) fn target() -> Target {
|
||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
||||
base.max_atomic_width = Some(64);
|
||||
base.stack_probes = StackProbeType::Inline;
|
||||
base.abi = "elfv2".into();
|
||||
base.abi = Abi::ElfV2;
|
||||
base.llvm_abiname = "elfv2".into();
|
||||
|
||||
Target {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use rustc_abi::Endian;
|
||||
|
||||
use crate::spec::{
|
||||
Arch, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
Abi, Arch, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
@@ -10,7 +10,7 @@ pub(crate) fn target() -> Target {
|
||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
||||
base.max_atomic_width = Some(64);
|
||||
base.stack_probes = StackProbeType::Inline;
|
||||
base.abi = "elfv1".into();
|
||||
base.abi = Abi::ElfV1;
|
||||
base.llvm_abiname = "elfv1".into();
|
||||
|
||||
Target {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use crate::spec::{
|
||||
Arch, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
Abi, Arch, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
@@ -8,7 +8,7 @@ pub(crate) fn target() -> Target {
|
||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
||||
base.max_atomic_width = Some(64);
|
||||
base.stack_probes = StackProbeType::Inline;
|
||||
base.abi = "elfv2".into();
|
||||
base.abi = Abi::ElfV2;
|
||||
base.llvm_abiname = "elfv2".into();
|
||||
|
||||
Target {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use crate::spec::{
|
||||
Arch, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
Abi, Arch, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
@@ -8,7 +8,7 @@ pub(crate) fn target() -> Target {
|
||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
||||
base.max_atomic_width = Some(64);
|
||||
base.stack_probes = StackProbeType::Inline;
|
||||
base.abi = "elfv2".into();
|
||||
base.abi = Abi::ElfV2;
|
||||
base.llvm_abiname = "elfv2".into();
|
||||
|
||||
Target {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use crate::spec::{
|
||||
Arch, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
Abi, Arch, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
@@ -10,7 +10,7 @@ pub(crate) fn target() -> Target {
|
||||
base.stack_probes = StackProbeType::Inline;
|
||||
// FIXME(compiler-team#422): musl targets should be dynamically linked by default.
|
||||
base.crt_static_default = true;
|
||||
base.abi = "elfv2".into();
|
||||
base.abi = Abi::ElfV2;
|
||||
base.llvm_abiname = "elfv2".into();
|
||||
|
||||
Target {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use rustc_abi::Endian;
|
||||
|
||||
use crate::spec::{
|
||||
Arch, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
Abi, Arch, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
@@ -22,7 +22,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "E-m:e-p:32:32-Fn32-i64:64-n32".into(),
|
||||
arch: Arch::PowerPC,
|
||||
options: TargetOptions {
|
||||
abi: "spe".into(),
|
||||
abi: Abi::Spe,
|
||||
endian: Endian::Big,
|
||||
features: "+secure-plt,+msync".into(),
|
||||
mcount: "_mcount".into(),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use rustc_abi::Endian;
|
||||
|
||||
use crate::spec::{
|
||||
Arch, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
Abi, Arch, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
@@ -22,7 +22,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "E-m:e-p:32:32-Fn32-i64:64-n32".into(),
|
||||
arch: Arch::PowerPC,
|
||||
options: TargetOptions {
|
||||
abi: "spe".into(),
|
||||
abi: Abi::Spe,
|
||||
endian: Endian::Big,
|
||||
features: "+msync".into(),
|
||||
mcount: "_mcount".into(),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use rustc_abi::Endian;
|
||||
|
||||
use crate::spec::{
|
||||
Arch, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
Abi, Arch, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetMetadata, TargetOptions, base,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
@@ -22,7 +22,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "E-m:e-p:32:32-Fn32-i64:64-n32".into(),
|
||||
arch: Arch::PowerPC,
|
||||
options: TargetOptions {
|
||||
abi: "spe".into(),
|
||||
abi: Abi::Spe,
|
||||
endian: Endian::Big,
|
||||
// feature msync would disable instruction 'fsync' which is not supported by fsl_p1p2
|
||||
features: "+secure-plt,+msync".into(),
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
use crate::spec::{
|
||||
Arch, Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata, TargetOptions,
|
||||
Abi, Arch, Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
TargetOptions,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
let abi = "ilp32e";
|
||||
Target {
|
||||
// The below `data_layout` is explicitly specified by the ilp32e ABI in LLVM. See also
|
||||
// `options.llvm_abiname`.
|
||||
@@ -19,12 +19,12 @@ pub(crate) fn target() -> Target {
|
||||
arch: Arch::RiscV32,
|
||||
|
||||
options: TargetOptions {
|
||||
abi: abi.into(),
|
||||
abi: Abi::Ilp32e,
|
||||
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
|
||||
linker: Some("rust-lld".into()),
|
||||
cpu: "generic-rv32".into(),
|
||||
// The ilp32e ABI specifies the `data_layout`
|
||||
llvm_abiname: abi.into(),
|
||||
llvm_abiname: "ilp32e".into(),
|
||||
max_atomic_width: Some(32),
|
||||
atomic_cas: false,
|
||||
features: "+e,+forced-atomics".into(),
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
use crate::spec::{
|
||||
Arch, Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata, TargetOptions,
|
||||
Abi, Arch, Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
TargetOptions,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
let abi = "ilp32e";
|
||||
Target {
|
||||
// The below `data_layout` is explicitly specified by the ilp32e ABI in LLVM. See also
|
||||
// `options.llvm_abiname`.
|
||||
@@ -19,12 +19,12 @@ pub(crate) fn target() -> Target {
|
||||
arch: Arch::RiscV32,
|
||||
|
||||
options: TargetOptions {
|
||||
abi: abi.into(),
|
||||
abi: Abi::Ilp32e,
|
||||
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
|
||||
linker: Some("rust-lld".into()),
|
||||
cpu: "generic-rv32".into(),
|
||||
// The ilp32e ABI specifies the `data_layout`
|
||||
llvm_abiname: abi.into(),
|
||||
llvm_abiname: "ilp32e".into(),
|
||||
max_atomic_width: Some(32),
|
||||
atomic_cas: false,
|
||||
features: "+e,+m,+forced-atomics".into(),
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
use crate::spec::{
|
||||
Arch, Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata, TargetOptions,
|
||||
Abi, Arch, Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
TargetOptions,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
let abi = "ilp32e";
|
||||
Target {
|
||||
// The below `data_layout` is explicitly specified by the ilp32e ABI in LLVM. See also
|
||||
// `options.llvm_abiname`.
|
||||
@@ -19,12 +19,12 @@ pub(crate) fn target() -> Target {
|
||||
arch: Arch::RiscV32,
|
||||
|
||||
options: TargetOptions {
|
||||
abi: abi.into(),
|
||||
abi: Abi::Ilp32e,
|
||||
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
|
||||
linker: Some("rust-lld".into()),
|
||||
cpu: "generic-rv32".into(),
|
||||
// The ilp32e ABI specifies the `data_layout`
|
||||
llvm_abiname: abi.into(),
|
||||
llvm_abiname: "ilp32e".into(),
|
||||
max_atomic_width: Some(32),
|
||||
atomic_cas: false,
|
||||
features: "+e,+m,+c,+forced-atomics".into(),
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
//! `-Clink-arg=-Tmy_script.ld` to override that with a correct linker script.
|
||||
|
||||
use crate::spec::{
|
||||
Arch, FloatAbi, FramePointer, PanicStrategy, RelocModel, Target, TargetMetadata, TargetOptions,
|
||||
base, cvs,
|
||||
Abi, Arch, FloatAbi, FramePointer, PanicStrategy, RelocModel, Target, TargetMetadata,
|
||||
TargetOptions, base, cvs,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
@@ -36,7 +36,7 @@ pub(crate) fn target() -> Target {
|
||||
*/
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
|
||||
// extra args passed to the external assembler (assuming `arm-none-eabi-as`):
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
//! Targets the ARMv5TE, with code as `t32` code by default.
|
||||
|
||||
use crate::spec::{Arch, FloatAbi, FramePointer, Target, TargetMetadata, TargetOptions, base, cvs};
|
||||
use crate::spec::{
|
||||
Abi, Arch, FloatAbi, FramePointer, Target, TargetMetadata, TargetOptions, base, cvs,
|
||||
};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -25,7 +27,7 @@ pub(crate) fn target() -> Target {
|
||||
data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".into(),
|
||||
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
// extra args passed to the external assembler (assuming `arm-none-eabi-as`):
|
||||
// * activate t32/a32 interworking
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Targets the Cortex-M0, Cortex-M0+ and Cortex-M1 processors (ARMv6-M architecture)
|
||||
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -16,7 +16,7 @@ pub(crate) fn target() -> Target {
|
||||
arch: Arch::Arm,
|
||||
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
// The ARMv6-M architecture doesn't support unaligned loads/stores so we disable them
|
||||
// with +strict-align.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Targets the Cortex-M0, Cortex-M0+ and Cortex-M1 processors (ARMv6-M architecture)
|
||||
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base, cvs};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base, cvs};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -18,7 +18,7 @@ pub(crate) fn target() -> Target {
|
||||
options: TargetOptions {
|
||||
families: cvs!["unix"],
|
||||
os: "nuttx".into(),
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
// The ARMv6-M architecture doesn't support unaligned loads/stores so we disable them
|
||||
// with +strict-align.
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
// and will use software floating point operations. This matches the NuttX EABI
|
||||
// configuration without hardware floating point support.
|
||||
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base, cvs};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base, cvs};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -22,7 +22,7 @@ pub(crate) fn target() -> Target {
|
||||
options: TargetOptions {
|
||||
families: cvs!["unix"],
|
||||
os: "nuttx".into(),
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
// Cortex-A7/A8/A9 with software floating point
|
||||
features: "+soft-float,-neon".into(),
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
// This target uses the "hard" floating convention (ABI) where floating point values
|
||||
// are passed to/from subroutines via FPU registers (S0, S1, D0, D1, etc.).
|
||||
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base, cvs};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base, cvs};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -25,7 +25,7 @@ pub(crate) fn target() -> Target {
|
||||
options: TargetOptions {
|
||||
families: cvs!["unix"],
|
||||
os: "nuttx".into(),
|
||||
abi: "eabihf".into(),
|
||||
abi: Abi::EabiHf,
|
||||
llvm_floatabi: Some(FloatAbi::Hard),
|
||||
// Cortex-A7/A8/A9 support VFPv3-D32/VFPv4-D32 with optional double-precision
|
||||
// and NEON SIMD instructions
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
// To opt-in to hardware accelerated floating point operations, you can use, for example,
|
||||
// `-C target-feature=+vfp4` or `-C target-cpu=cortex-m4`.
|
||||
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -25,7 +25,7 @@ pub(crate) fn target() -> Target {
|
||||
arch: Arch::Arm,
|
||||
|
||||
options: TargetOptions {
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
max_atomic_width: Some(32),
|
||||
..base::thumb::opts()
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
//
|
||||
// To opt into double precision hardware support, use the `-C target-feature=+fp64` flag.
|
||||
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -24,7 +24,7 @@ pub(crate) fn target() -> Target {
|
||||
arch: Arch::Arm,
|
||||
|
||||
options: TargetOptions {
|
||||
abi: "eabihf".into(),
|
||||
abi: Abi::EabiHf,
|
||||
llvm_floatabi: Some(FloatAbi::Hard),
|
||||
// vfp4 is the lowest common denominator between the Cortex-M4F (vfp4) and the
|
||||
// Cortex-M7 (vfp5).
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
// To opt-in to hardware accelerated floating point operations, you can use, for example,
|
||||
// `-C target-feature=+vfp4` or `-C target-cpu=cortex-m4`.
|
||||
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base, cvs};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base, cvs};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -27,7 +27,7 @@ pub(crate) fn target() -> Target {
|
||||
options: TargetOptions {
|
||||
families: cvs!["unix"],
|
||||
os: "nuttx".into(),
|
||||
abi: "eabi".into(),
|
||||
abi: Abi::Eabi,
|
||||
llvm_floatabi: Some(FloatAbi::Soft),
|
||||
max_atomic_width: Some(32),
|
||||
..base::thumb::opts()
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
//
|
||||
// To opt into double precision hardware support, use the `-C target-feature=+fp64` flag.
|
||||
|
||||
use crate::spec::{Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base, cvs};
|
||||
use crate::spec::{Abi, Arch, FloatAbi, Target, TargetMetadata, TargetOptions, base, cvs};
|
||||
|
||||
pub(crate) fn target() -> Target {
|
||||
Target {
|
||||
@@ -26,7 +26,7 @@ pub(crate) fn target() -> Target {
|
||||
options: TargetOptions {
|
||||
families: cvs!["unix"],
|
||||
os: "nuttx".into(),
|
||||
abi: "eabihf".into(),
|
||||
abi: Abi::EabiHf,
|
||||
llvm_floatabi: Some(FloatAbi::Hard),
|
||||
// vfp4 is the lowest common denominator between the Cortex-M4F (vfp4) and the
|
||||
// Cortex-M7 (vfp5).
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user