]> git.lizzy.rs Git - rust.git/commitdiff
Update targets to use target_abi
authorJosh Triplett <josh@joshtriplett.org>
Wed, 7 Jul 2021 05:00:53 +0000 (22:00 -0700)
committerJosh Triplett <josh@joshtriplett.org>
Wed, 7 Jul 2021 15:52:35 +0000 (08:52 -0700)
All eabi targets have target_abi = "eabi".
All eabihf targets have target_abi = "eabihf".
armv6_unknown_freebsd and armv7_unknown_freebsd have target_abi = "eabihf".
All abi64 targets have target_abi = "abi64".
All ilp32 targets have target_abi = "ilp32".
All softfloat targets have target_abi = "softfloat".
All *-uwp-windows-* targets have target_abi = "uwp".
All spe targets have target_abi = "spe".
All macabi targets have target_abi = "macabi".
aarch64-apple-ios-sim has target_abi = "sim".
x86_64-fortanix-unknown-sgx has target_abi = "fortanix".
x86_64-unknown-linux-gnux32 has target_abi = "x32".

Add FIXME entries for targets for which existing values need to change
once cfg_target_abi becomes stable. (All of them are tier 3 targets.)

Add a test for target_abi in `--print cfg`.

53 files changed:
compiler/rustc_target/src/spec/aarch64_be_unknown_linux_gnu_ilp32.rs
compiler/rustc_target/src/spec/aarch64_unknown_linux_gnu_ilp32.rs
compiler/rustc_target/src/spec/aarch64_unknown_none_softfloat.rs
compiler/rustc_target/src/spec/apple_sdk_base.rs
compiler/rustc_target/src/spec/arm_linux_androideabi.rs
compiler/rustc_target/src/spec/arm_unknown_linux_gnueabi.rs
compiler/rustc_target/src/spec/arm_unknown_linux_gnueabihf.rs
compiler/rustc_target/src/spec/arm_unknown_linux_musleabi.rs
compiler/rustc_target/src/spec/arm_unknown_linux_musleabihf.rs
compiler/rustc_target/src/spec/armebv7r_none_eabi.rs
compiler/rustc_target/src/spec/armebv7r_none_eabihf.rs
compiler/rustc_target/src/spec/armv4t_unknown_linux_gnueabi.rs
compiler/rustc_target/src/spec/armv5te_unknown_linux_gnueabi.rs
compiler/rustc_target/src/spec/armv5te_unknown_linux_musleabi.rs
compiler/rustc_target/src/spec/armv5te_unknown_linux_uclibceabi.rs
compiler/rustc_target/src/spec/armv6_unknown_freebsd.rs
compiler/rustc_target/src/spec/armv6_unknown_netbsd_eabihf.rs
compiler/rustc_target/src/spec/armv7_linux_androideabi.rs
compiler/rustc_target/src/spec/armv7_unknown_freebsd.rs
compiler/rustc_target/src/spec/armv7_unknown_linux_gnueabi.rs
compiler/rustc_target/src/spec/armv7_unknown_linux_gnueabihf.rs
compiler/rustc_target/src/spec/armv7_unknown_linux_musleabi.rs
compiler/rustc_target/src/spec/armv7_unknown_linux_musleabihf.rs
compiler/rustc_target/src/spec/armv7_unknown_netbsd_eabihf.rs
compiler/rustc_target/src/spec/armv7_wrs_vxworks_eabihf.rs
compiler/rustc_target/src/spec/armv7a_none_eabi.rs
compiler/rustc_target/src/spec/armv7a_none_eabihf.rs
compiler/rustc_target/src/spec/armv7r_none_eabi.rs
compiler/rustc_target/src/spec/armv7r_none_eabihf.rs
compiler/rustc_target/src/spec/mips64_unknown_linux_gnuabi64.rs
compiler/rustc_target/src/spec/mips64_unknown_linux_muslabi64.rs
compiler/rustc_target/src/spec/mips64el_unknown_linux_gnuabi64.rs
compiler/rustc_target/src/spec/mips64el_unknown_linux_muslabi64.rs
compiler/rustc_target/src/spec/mipsisa64r6_unknown_linux_gnuabi64.rs
compiler/rustc_target/src/spec/mipsisa64r6el_unknown_linux_gnuabi64.rs
compiler/rustc_target/src/spec/powerpc_unknown_linux_gnuspe.rs
compiler/rustc_target/src/spec/powerpc_wrs_vxworks_spe.rs
compiler/rustc_target/src/spec/thumbv4t_none_eabi.rs
compiler/rustc_target/src/spec/thumbv6m_none_eabi.rs
compiler/rustc_target/src/spec/thumbv7em_none_eabi.rs
compiler/rustc_target/src/spec/thumbv7em_none_eabihf.rs
compiler/rustc_target/src/spec/thumbv7m_none_eabi.rs
compiler/rustc_target/src/spec/thumbv7neon_linux_androideabi.rs
compiler/rustc_target/src/spec/thumbv7neon_unknown_linux_gnueabihf.rs
compiler/rustc_target/src/spec/thumbv7neon_unknown_linux_musleabihf.rs
compiler/rustc_target/src/spec/thumbv8m_base_none_eabi.rs
compiler/rustc_target/src/spec/thumbv8m_main_none_eabi.rs
compiler/rustc_target/src/spec/thumbv8m_main_none_eabihf.rs
compiler/rustc_target/src/spec/windows_uwp_gnu_base.rs
compiler/rustc_target/src/spec/windows_uwp_msvc_base.rs
compiler/rustc_target/src/spec/x86_64_fortanix_unknown_sgx.rs
compiler/rustc_target/src/spec/x86_64_unknown_linux_gnux32.rs
src/test/run-make-fulldeps/print-cfg/Makefile

index c1adc963425ea6791eb756429f568d738d7d80f4..e05360ea45c6c5b677f07ace67752a0a11f3a31b 100644 (file)
@@ -10,6 +10,11 @@ pub fn target() -> Target {
         pointer_width: 32,
         data_layout: "E-m:e-p:32:32-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".to_string(),
         arch: "aarch64".to_string(),
-        options: TargetOptions { mcount: "\u{1}_mcount".to_string(), endian: Endian::Big, ..base },
+        options: TargetOptions {
+            abi: "ilp32".to_string(),
+            mcount: "\u{1}_mcount".to_string(),
+            endian: Endian::Big,
+            ..base
+        },
     }
 }
index e2618447f2810e69166efb79abbb87f2878a986e..8522405f61feb50fbb2972a9990f72994b6816f6 100644 (file)
@@ -7,6 +7,7 @@ pub fn target() -> Target {
         data_layout: "e-m:e-p:32:32-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".to_string(),
         arch: "aarch64".to_string(),
         options: TargetOptions {
+            abi: "ilp32".to_string(),
             max_atomic_width: Some(128),
             mcount: "\u{1}_mcount".to_string(),
             ..super::linux_gnu_base::opts()
index 482db0c53420e70ad8caeb0b705552bf263160fc..fa93ca80549cf1abc5656565809334845faccc66 100644 (file)
@@ -10,6 +10,7 @@
 
 pub fn target() -> Target {
     let opts = TargetOptions {
+        abi: "softfloat".to_string(),
         linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
         linker: Some("rust-lld".to_owned()),
         features: "+strict-align,-neon,-fp-armv8".to_string(),
index e7f7bb343d0c534541dd31261b886b7a0870efe7..39bc699eef04a366bba8d4b03e253bc9038bf34d 100644 (file)
@@ -14,6 +14,15 @@ pub enum Arch {
     Arm64_sim,
 }
 
+fn target_abi(arch: Arch) -> String {
+    match arch {
+        Armv7 | Armv7s | Arm64 | I386 | X86_64 => "",
+        X86_64_macabi | Arm64_macabi => "macabi",
+        Arm64_sim => "sim",
+    }
+    .to_string()
+}
+
 fn target_cpu(arch: Arch) -> String {
     match arch {
         Armv7 => "cortex-a8", // iOS7 is supported on iPhone 4 and higher
@@ -39,6 +48,7 @@ fn link_env_remove(arch: Arch) -> Vec<String> {
 
 pub fn opts(os: &str, arch: Arch) -> TargetOptions {
     TargetOptions {
+        abi: target_abi(arch),
         cpu: target_cpu(arch),
         dynamic_linking: false,
         executables: true,
index f2430830afca584484d819d4de987b1e0f62e490..9b5366c576ec6a30b54b0113d61b509a300fb841 100644 (file)
@@ -7,6 +7,7 @@ pub fn target() -> Target {
         data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
         options: TargetOptions {
+            abi: "eabi".to_string(),
             // https://developer.android.com/ndk/guides/abis.html#armeabi
             features: "+strict-align,+v5te".to_string(),
             max_atomic_width: Some(32),
index 225db0032a89d2d9815426c63f368381dc92f200..442f56d4fb5de73ed6697295dca4a304646ad2da 100644 (file)
@@ -7,6 +7,7 @@ pub fn target() -> Target {
         data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
         options: TargetOptions {
+            abi: "eabi".to_string(),
             features: "+strict-align,+v6".to_string(),
             max_atomic_width: Some(64),
             mcount: "\u{1}__gnu_mcount_nc".to_string(),
index 33703195ee751a3df2fcf400a772e8c34e89db3c..2c12a71e29fb825ee9a2a1e57dcf5cfc31da9392 100644 (file)
@@ -7,6 +7,7 @@ pub fn target() -> Target {
         data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
         options: TargetOptions {
+            abi: "eabihf".to_string(),
             features: "+strict-align,+v6,+vfp2,-d32".to_string(),
             max_atomic_width: Some(64),
             mcount: "\u{1}__gnu_mcount_nc".to_string(),
index 850844993f95cca9337977e9e90cee5fdba87306..d187dfd918955d0d1c717b08a5692c822daf93a7 100644 (file)
@@ -10,6 +10,7 @@ pub fn target() -> Target {
         data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
         options: TargetOptions {
+            abi: "eabi".to_string(),
             // Most of these settings are copied from the arm_unknown_linux_gnueabi
             // target.
             features: "+strict-align,+v6".to_string(),
index ff69c462e8ed233d9ef438d998f3b206d8b0e5a2..3d72734f5fadc5bb8fb81cce0cd834601451d206 100644 (file)
@@ -10,6 +10,7 @@ pub fn target() -> Target {
         data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
         options: TargetOptions {
+            abi: "eabihf".to_string(),
             // Most of these settings are copied from the arm_unknown_linux_gnueabihf
             // target.
             features: "+strict-align,+v6,+vfp2,-d32".to_string(),
index 547f48c5d3b61d2ad92fd068f688e4e82d9c8279..c98a12cfc4977f7d392340ad3543193e49fac5c0 100644 (file)
@@ -11,6 +11,7 @@ pub fn target() -> Target {
         data_layout: "E-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
         options: TargetOptions {
+            abi: "eabi".to_string(),
             endian: Endian::Big,
             linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
             executables: true,
index f4f61e87ab9448e2072446228d00c62ba43381bb..292635403fbd476c9d4bc12eb214a960b4fed986 100644 (file)
@@ -11,6 +11,7 @@ pub fn target() -> Target {
         data_layout: "E-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
         options: TargetOptions {
+            abi: "eabihf".to_string(),
             endian: Endian::Big,
             linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
             executables: true,
index 8a289fee7812f4456d9320d5bdee9cdefbf6badc..f1b193a384fc1bc9fc1d01d5eb454fde2ac58eb7 100644 (file)
@@ -7,6 +7,7 @@ pub fn target() -> Target {
         data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
         options: TargetOptions {
+            abi: "eabi".to_string(),
             features: "+soft-float,+strict-align".to_string(),
             // Atomic operations provided by compiler-builtins
             max_atomic_width: Some(32),
index 177ab453b04c49ec05d7ebe09eb9c63e20dcab3a..a6c4f2304c2c12f83a6e98c904f98a5d5b69d749 100644 (file)
@@ -7,6 +7,7 @@ pub fn target() -> Target {
         data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
         options: TargetOptions {
+            abi: "eabi".to_string(),
             features: "+soft-float,+strict-align".to_string(),
             // Atomic operations provided by compiler-builtins
             max_atomic_width: Some(32),
index 1f084443bd991f608504ca20b38f6c6637d4dd54..de2a350e23120b685ebffcfdcf04985dc7b0a6d6 100644 (file)
@@ -11,6 +11,7 @@ pub fn target() -> Target {
         data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
         options: TargetOptions {
+            abi: "eabi".to_string(),
             features: "+soft-float,+strict-align".to_string(),
             // Atomic operations provided by compiler-builtins
             max_atomic_width: Some(32),
index 4e5b714bded7c93f9829822ca4d774192a5697c5..91b4bd27caa8124b8f56d429b3fc82ed0a322ca6 100644 (file)
@@ -7,6 +7,7 @@ pub fn target() -> Target {
         data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
         options: TargetOptions {
+            abi: "eabi".to_string(),
             features: "+soft-float,+strict-align".to_string(),
             // Atomic operations provided by compiler-builtins
             max_atomic_width: Some(32),
index 08fc51e8a8b57d86b1b6e95ee49ea70e976c6953..ee2f8f6238b592165f4fce97680269b3e4ba93b3 100644 (file)
@@ -7,6 +7,8 @@ pub fn target() -> Target {
         data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
         options: TargetOptions {
+            abi: "eabihf".to_string(),
+            // FIXME: change env to "gnu" when cfg_target_abi becomes stable
             env: "gnueabihf".to_string(),
             features: "+v6,+vfp2,-d32".to_string(),
             max_atomic_width: Some(64),
index b109aa1e1ab152ab9296b71247ff7d95f5295f71..b046819d4d78442c0a0aa9e16240630fbe30e415 100644 (file)
@@ -7,6 +7,8 @@ pub fn target() -> Target {
         data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
         options: TargetOptions {
+            abi: "eabihf".to_string(),
+            // FIXME: remove env when cfg_target_abi becomes stable
             env: "eabihf".to_string(),
             features: "+v6,+vfp2,-d32".to_string(),
             max_atomic_width: Some(64),
index 821080ec07de8f370dad99885073d2471ce466ea..55956f3bad4fa7cad5be88bb6b8c4b2aa6977ada 100644 (file)
@@ -17,6 +17,7 @@ pub fn target() -> Target {
         data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
         options: TargetOptions {
+            abi: "eabi".to_string(),
             features: "+v7,+thumb-mode,+thumb2,+vfp3,-d32,-neon".to_string(),
             max_atomic_width: Some(64),
             ..base
index 190d3bb691aab8a8ab63d3cc79f2938a18b67c6a..fbfb1c27681eaa81de06c6b5191fef2711f72637 100644 (file)
@@ -7,6 +7,8 @@ pub fn target() -> Target {
         data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
         options: TargetOptions {
+            abi: "eabihf".to_string(),
+            // FIXME: change env to "gnu" when cfg_target_abi becomes stable
             env: "gnueabihf".to_string(),
             features: "+v7,+vfp3,-d32,+thumb2,-neon".to_string(),
             max_atomic_width: Some(64),
index 088a8cf753402ac32b6987533828ad742cc71066..0a3b8033dd17ccd58497a497ed6619248afceb04 100644 (file)
@@ -10,6 +10,7 @@ pub fn target() -> Target {
         data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
         options: TargetOptions {
+            abi: "eabi".to_string(),
             features: "+v7,+thumb2,+soft-float,-neon".to_string(),
             max_atomic_width: Some(64),
             mcount: "\u{1}__gnu_mcount_nc".to_string(),
index 521053ec2d3178f76c4cd6d13bfe3b4fc09cc52b..662b81cae3e65acbdaff42f546ac613f77e77815 100644 (file)
@@ -10,6 +10,7 @@ pub fn target() -> Target {
         data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
         options: TargetOptions {
+            abi: "eabihf".to_string(),
             // Info about features at https://wiki.debian.org/ArmHardFloatPort
             features: "+v7,+vfp3,-d32,+thumb2,-neon".to_string(),
             max_atomic_width: Some(64),
index 0ee2c3e45e0b1d538c2ce9c7092d9f80d70ecfb1..c0fd1de17cfdd976637d85ac763e4b0c04976a26 100644 (file)
@@ -16,6 +16,7 @@ pub fn target() -> Target {
         arch: "arm".to_string(),
 
         options: TargetOptions {
+            abi: "eabi".to_string(),
             features: "+v7,+thumb2,+soft-float,-neon".to_string(),
             max_atomic_width: Some(64),
             mcount: "\u{1}mcount".to_string(),
index a6ce382c7a6661caa20b80d433af52ff6ddc11df..67ff7999dea856f51e959c434aa6bcdcc66f6853 100644 (file)
@@ -15,6 +15,7 @@ pub fn target() -> Target {
         // Most of these settings are copied from the armv7_unknown_linux_gnueabihf
         // target.
         options: TargetOptions {
+            abi: "eabihf".to_string(),
             features: "+v7,+vfp3,-d32,+thumb2,-neon".to_string(),
             max_atomic_width: Some(64),
             mcount: "\u{1}mcount".to_string(),
index e509dcaddaa371de692697c9251181c870f2e8c1..60a552b018d69fab91a9f49a0056deefd82dc842 100644 (file)
@@ -7,6 +7,8 @@ pub fn target() -> Target {
         data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
         options: TargetOptions {
+            abi: "eabihf".to_string(),
+            // FIXME: remove env when cfg_target_abi becomes stable
             env: "eabihf".to_string(),
             features: "+v7,+vfp3,-d32,+thumb2,-neon".to_string(),
             max_atomic_width: Some(64),
index 0aabf2fe48669915b949a5c8edb3f6b17c4e16d0..27d404b101f3a4de12b5e7625a5d1cdd40c52526 100644 (file)
@@ -7,6 +7,7 @@ pub fn target() -> Target {
         data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
         options: TargetOptions {
+            abi: "eabihf".to_string(),
             // Info about features at https://wiki.debian.org/ArmHardFloatPort
             features: "+v7,+vfp3,-d32,+thumb2,-neon".to_string(),
             max_atomic_width: Some(64),
index bd703ee3e45e4f78bc61900428b9116342fdb3c3..8bff60e9ed99a64f5f4ca87f7558ac4222441b8c 100644 (file)
@@ -18,6 +18,7 @@
 
 pub fn target() -> Target {
     let opts = TargetOptions {
+        abi: "eabi".to_string(),
         linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
         linker: Some("rust-lld".to_owned()),
         features: "+v7,+thumb2,+soft-float,-neon,+strict-align".to_string(),
index ad86ae1cedcc012ebd5ca66c98eecb5c1ae8dc4e..ea2751e375e0b6078145c92c34fff2e1372d50d9 100644 (file)
@@ -9,6 +9,7 @@
 
 pub fn target() -> Target {
     let opts = TargetOptions {
+        abi: "eabihf".to_string(),
         linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
         linker: Some("rust-lld".to_owned()),
         features: "+v7,+vfp3,-d32,+thumb2,-neon,+strict-align".to_string(),
index c07d6adc37eb5ceb0be80280a8387f0794a0d3ef..c695542805599b00a40a63f02a2e157c6043b8f3 100644 (file)
@@ -11,6 +11,7 @@ pub fn target() -> Target {
         arch: "arm".to_string(),
 
         options: TargetOptions {
+            abi: "eabi".to_string(),
             linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
             executables: true,
             linker: Some("rust-lld".to_owned()),
index fbf2f8e9b72786c7a71bbdf122647269ea01ae23..50c37021b74e9b9b93529e15e656999741d5080f 100644 (file)
@@ -11,6 +11,7 @@ pub fn target() -> Target {
         arch: "arm".to_string(),
 
         options: TargetOptions {
+            abi: "eabihf".to_string(),
             linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
             executables: true,
             linker: Some("rust-lld".to_owned()),
index 53398539ac20f86019266c45276a8ebc3a1ef9e9..161a27ab6890b452edfe7ab5e53d0a7a626588ea 100644 (file)
@@ -8,6 +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 {
+            abi: "abi64".to_string(),
             endian: Endian::Big,
             // NOTE(mips64r2) matches C toolchain
             cpu: "mips64r2".to_string(),
index 329fbd22721770d0b62560d7b4f6f0f5167f114d..a898464569813aacf43f76e8e7ed30131ec82740 100644 (file)
@@ -12,6 +12,11 @@ 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: Endian::Big, mcount: "_mcount".to_string(), ..base },
+        options: TargetOptions {
+            abi: "abi64".to_string(),
+            endian: Endian::Big,
+            mcount: "_mcount".to_string(),
+            ..base
+        },
     }
 }
index d767705b0459b38c8b6c9c1a0c7d6359042deb4c..2f58560d45021944666871357b8fc472abe374a7 100644 (file)
@@ -7,6 +7,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 {
+            abi: "abi64".to_string(),
             // NOTE(mips64r2) matches C toolchain
             cpu: "mips64r2".to_string(),
             features: "+mips64r2".to_string(),
index 766ed69df4bb8444ecb6ec8b4bedbcaa1ed0275b..01c34bc39924f1afdec9436a0d98f817471e2d30 100644 (file)
@@ -11,6 +11,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 { mcount: "_mcount".to_string(), ..base },
+        options: TargetOptions { abi: "abi64".to_string(), mcount: "_mcount".to_string(), ..base },
     }
 }
index 3bf837fbb411eff6e11ba5ad036753b865b72184..80a155a4865d7fc8b25781684e553cdc6a0bc10f 100644 (file)
@@ -8,6 +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 {
+            abi: "abi64".to_string(),
             endian: Endian::Big,
             // NOTE(mips64r6) matches C toolchain
             cpu: "mips64r6".to_string(),
index 589d7acba68045f67f9d8b67b9bf52bbec49e667..58f9862715f73099b3881d86e202d756659ed3ed 100644 (file)
@@ -7,6 +7,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 {
+            abi: "abi64".to_string(),
             // NOTE(mips64r6) matches C toolchain
             cpu: "mips64r6".to_string(),
             features: "+mips64r6".to_string(),
index 8d8f746f97f121d2f9838815ad214a385fad9606..362d8a104e448d5b89f8613167902592eff8bd32 100644 (file)
@@ -11,6 +11,11 @@ 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: Endian::Big, mcount: "_mcount".to_string(), ..base },
+        options: TargetOptions {
+            abi: "spe".to_string(),
+            endian: Endian::Big,
+            mcount: "_mcount".to_string(),
+            ..base
+        },
     }
 }
index 215f1a36227d79571181aa2739c3ef987d0f03f6..a2b85f7dd869afc4c4ff1b6f1b0874a17e6b49fe 100644 (file)
@@ -13,6 +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 {
+            abi: "spe".to_string(),
             endian: Endian::Big,
             // feature msync would disable instruction 'fsync' which is not supported by fsl_p1p2
             features: "+secure-plt,+msync".to_string(),
index f996009f830633a15e3865641aa7a3c6b597063e..f86efd5d0f49081c7f0466f4cec7b643b0ad30e5 100644 (file)
@@ -26,6 +26,7 @@ pub fn target() -> Target {
          */
         data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         options: TargetOptions {
+            abi: "eabi".to_string(),
             linker_flavor: LinkerFlavor::Ld,
             linker: Some("arm-none-eabi-ld".to_string()),
 
index 11c8bf46348738ed19fd75c389590771381b5877..40e3281060f9fa9f6608a9461cb915e33c1e8c78 100644 (file)
@@ -10,6 +10,7 @@ pub fn target() -> Target {
         arch: "arm".to_string(),
 
         options: TargetOptions {
+            abi: "eabi".to_string(),
             // The ARMv6-M architecture doesn't support unaligned loads/stores so we disable them
             // with +strict-align.
             features: "+strict-align".to_string(),
index 141eb7e78b9e4902f6227273fe0db3f507448090..107474a86bbb28c496fc96d4e84afee42e0adc6c 100644 (file)
@@ -18,6 +18,10 @@ pub fn target() -> Target {
         data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
 
-        options: TargetOptions { max_atomic_width: Some(32), ..super::thumb_base::opts() },
+        options: TargetOptions {
+            abi: "eabi".to_string(),
+            max_atomic_width: Some(32),
+            ..super::thumb_base::opts()
+        },
     }
 }
index f5bd054f8598ca61ba69e1a1e91b4167fe24ed0c..65fc0db65285d8b936ceea752ff0d3e5dd0f50da 100644 (file)
@@ -18,6 +18,7 @@ pub fn target() -> Target {
         arch: "arm".to_string(),
 
         options: TargetOptions {
+            abi: "eabihf".to_string(),
             // `+vfp4` is the lowest common denominator between the Cortex-M4 (vfp4-16) and the
             // Cortex-M7 (vfp5)
             // `-d32` both the Cortex-M4 and the Cortex-M7 only have 16 double-precision registers
index 7af28cd9c9f9b9a2d001a1fde3369663a8fea099..ff939348c35f3aad006c06698a350dccd2df2d04 100644 (file)
@@ -9,6 +9,10 @@ pub fn target() -> Target {
         data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
 
-        options: TargetOptions { max_atomic_width: Some(32), ..super::thumb_base::opts() },
+        options: TargetOptions {
+            abi: "eabi".to_string(),
+            max_atomic_width: Some(32),
+            ..super::thumb_base::opts()
+        },
     }
 }
index 14020b88695ac15a762739e8f31bd40e21ed98df..fcb7b5d718cfbc8b7406446a549be51ea75feadc 100644 (file)
@@ -17,6 +17,7 @@ pub fn target() -> Target {
         data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
         options: TargetOptions {
+            abi: "eabi".to_string(),
             features: "+v7,+thumb-mode,+thumb2,+vfp3,+neon".to_string(),
             max_atomic_width: Some(64),
             ..base
index 4042d5394167695326012dc6c4a6efbc414ab384..9d34d9ac874b0ee43d2369eb1aa0cb8a88074dba 100644 (file)
@@ -13,6 +13,7 @@ pub fn target() -> Target {
         data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
         options: TargetOptions {
+            abi: "eabihf".to_string(),
             // Info about features at https://wiki.debian.org/ArmHardFloatPort
             features: "+v7,+thumb-mode,+thumb2,+vfp3,+neon".to_string(),
             max_atomic_width: Some(64),
index 318b864a9cf08ebcaf3b26319b7a8f35a98f4eb4..4e339cbd6be27e9a9129e2d1f3d0d36af5fe59ec 100644 (file)
@@ -19,6 +19,7 @@ pub fn target() -> Target {
         // Most of these settings are copied from the thumbv7neon_unknown_linux_gnueabihf
         // target.
         options: TargetOptions {
+            abi: "eabihf".to_string(),
             features: "+v7,+thumb-mode,+thumb2,+vfp3,+neon".to_string(),
             max_atomic_width: Some(64),
             mcount: "\u{1}mcount".to_string(),
index a2200bc64e7d1bc01972bed9928c017b4927cb71..ef0f52d21992c0fdebb2780919593102f4c5f12b 100644 (file)
@@ -10,6 +10,7 @@ pub fn target() -> Target {
         arch: "arm".to_string(),
 
         options: TargetOptions {
+            abi: "eabi".to_string(),
             // ARMv8-M baseline doesn't support unaligned loads/stores so we disable them
             // with +strict-align.
             features: "+strict-align".to_string(),
index 67cdbab4860a3a6f469dfcbd7bb66eaaa465fd8b..dbd184debcb083f1d180b75cc8844bc64f42e0ba 100644 (file)
@@ -10,6 +10,10 @@ pub fn target() -> Target {
         data_layout: "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
         arch: "arm".to_string(),
 
-        options: TargetOptions { max_atomic_width: Some(32), ..super::thumb_base::opts() },
+        options: TargetOptions {
+            abi: "eabi".to_string(),
+            max_atomic_width: Some(32),
+            ..super::thumb_base::opts()
+        },
     }
 }
index 49748f5ec6da4e7f8091b8aeac5fed1be8774854..3caf705421c6d35d6bab3ed6499ad854a59d381a 100644 (file)
@@ -11,6 +11,7 @@ pub fn target() -> Target {
         arch: "arm".to_string(),
 
         options: TargetOptions {
+            abi: "eabihf".to_string(),
             // If the Floating Point extension is implemented in the Cortex-M33
             // processor, the Cortex-M33 Technical Reference Manual states that
             // the FPU uses the FPv5 architecture, single-precision instructions
index 67d1be399b3f1f7141a8674f7676394f9830036a..86df816f10dc214d019700352596fdd6cef17f05 100644 (file)
@@ -25,6 +25,7 @@ pub fn opts() -> TargetOptions {
     late_link_args.insert(LinkerFlavor::Lld(LldFlavor::Ld), mingw_libs);
 
     TargetOptions {
+        abi: "uwp".to_string(),
         vendor: "uwp".to_string(),
         executables: false,
         limit_rdylib_exports: false,
index b3fa5c22f98221127cf8b380e623d4eda5ce5241..7b56b468c28ed2a2050297f28775d36ba177fbea 100644 (file)
@@ -3,6 +3,7 @@
 pub fn opts() -> TargetOptions {
     let mut opts = super::windows_msvc_base::opts();
 
+    opts.abi = "uwp".to_string();
     opts.vendor = "uwp".to_string();
     let pre_link_args_msvc = vec!["/APPCONTAINER".to_string(), "mincore.lib".to_string()];
     opts.pre_link_args.entry(LinkerFlavor::Msvc).or_default().extend(pre_link_args_msvc.clone());
index 06eb33d8d82e97d1f2750c406d31ad4d8f103e1a..59cd56ebcd535eb8d0a00d2c3f99b7c4e5a87d4e 100644 (file)
@@ -55,6 +55,7 @@ pub fn target() -> Target {
         os: "unknown".into(),
         env: "sgx".into(),
         vendor: "fortanix".into(),
+        abi: "fortanix".into(),
         linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
         executables: true,
         linker: Some("rust-lld".to_owned()),
index 7b77ad668cd2ff4ec042d4e8e43839ed0f67ff65..1ffaa9b78c85ef6d7aae8e869f68d4965ef3fcb7 100644 (file)
@@ -3,6 +3,7 @@
 pub fn target() -> Target {
     let mut base = super::linux_gnu_base::opts();
     base.cpu = "x86-64".to_string();
+    base.abi = "x32".to_string();
     base.max_atomic_width = Some(64);
     base.pre_link_args.entry(LinkerFlavor::Gcc).or_default().push("-mx32".to_string());
     // don't use probe-stack=inline-asm until rust#83139 and rust#84667 are resolved
index 08303a46d19299e590e59b1e1d38a74632d87bf2..013bf3baca45f1d18d321ba80ea4641bbc72ecbc 100644 (file)
@@ -6,6 +6,8 @@ all: default
        $(RUSTC) --target i686-pc-windows-msvc --print cfg | $(CGREP) msvc
        $(RUSTC) --target i686-apple-darwin --print cfg | $(CGREP) macos
        $(RUSTC) --target i686-unknown-linux-gnu --print cfg | $(CGREP) gnu
+       $(RUSTC) --target arm-unknown-linux-gnueabihf --print cfg | $(CGREP) target_abi=
+       $(RUSTC) --target arm-unknown-linux-gnueabihf --print cfg | $(CGREP) eabihf
 
 ifdef IS_WINDOWS
 default: