Skip to content

Commit 57ed636

Browse files
compiler: add AbiMaps to targets
1 parent 0e18800 commit 57ed636

File tree

174 files changed

+367
-47
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

174 files changed

+367
-47
lines changed

compiler/rustc_target/src/spec/base/apple/mod.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,15 @@ pub(crate) fn base(
106106
arch: Arch,
107107
abi: TargetAbi,
108108
) -> (TargetOptions, StaticCow<str>, StaticCow<str>) {
109+
let abi_map = match arch {
110+
Armv7k | Armv7s => super::arm_abi_map(),
111+
Arm64 | Arm64e | Arm64_32 => super::aarch64_abi_map(),
112+
I386 | I686 => super::x86_32_abi_map(),
113+
X86_64 | X86_64h => super::x86_64_abi_map(),
114+
};
109115
let mut opts = TargetOptions {
110116
abi: abi.target_abi().into(),
117+
abi_map,
111118
llvm_floatabi: Some(FloatAbi::Hard),
112119
os: os.into(),
113120
cpu: arch.target_cpu(abi).into(),

compiler/rustc_target/src/spec/base/mod.rs

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,108 @@ pub(crate) mod windows_msvc;
3939
pub(crate) mod windows_uwp_gnu;
4040
pub(crate) mod windows_uwp_msvc;
4141
pub(crate) mod xtensa;
42+
43+
use rustc_abi::{AbiMap, ArmCall, CanonAbi, X86Call};
44+
45+
pub(crate) fn x86_32_abi_map() -> AbiMap {
46+
AbiMap {
47+
system: CanonAbi::C,
48+
system_varargs: CanonAbi::C,
49+
efiapi: Some(CanonAbi::C),
50+
stdcall: Some(CanonAbi::X86(X86Call::Stdcall)),
51+
fastcall: Some(CanonAbi::X86(X86Call::Fastcall)),
52+
thiscall: Some(CanonAbi::X86(X86Call::Thiscall)),
53+
vectorcall: Some(CanonAbi::X86(X86Call::Vectorcall)),
54+
55+
x86_interrupt: true,
56+
57+
..Default::default()
58+
}
59+
}
60+
61+
pub(crate) fn x86_32_windows_abi_map() -> AbiMap {
62+
AbiMap {
63+
system: CanonAbi::X86(X86Call::Stdcall),
64+
system_varargs: CanonAbi::C,
65+
efiapi: Some(CanonAbi::C),
66+
stdcall: Some(CanonAbi::X86(X86Call::Stdcall)),
67+
fastcall: Some(CanonAbi::X86(X86Call::Fastcall)),
68+
thiscall: Some(CanonAbi::X86(X86Call::Thiscall)),
69+
vectorcall: Some(CanonAbi::X86(X86Call::Vectorcall)),
70+
71+
x86_interrupt: true,
72+
73+
..Default::default()
74+
}
75+
}
76+
77+
// // See commentary in `is_abi_supported`.
78+
// Stdcall { unwind } | Thiscall { unwind } | Fastcall { unwind } => {
79+
// if self.arch == "x86" { abi } else { C { unwind } }
80+
// }
81+
pub(crate) fn x86_64_abi_map() -> AbiMap {
82+
AbiMap {
83+
efiapi: Some(CanonAbi::X86(X86Call::Win64)),
84+
85+
win64: Some(CanonAbi::X86(X86Call::Win64)),
86+
sysv64: Some(CanonAbi::X86(X86Call::SysV64)),
87+
vectorcall: Some(CanonAbi::X86(X86Call::Vectorcall)),
88+
89+
x86_interrupt: true,
90+
91+
..Default::default()
92+
}
93+
}
94+
95+
pub(crate) fn x86_64_windows_abi_map() -> AbiMap {
96+
AbiMap {
97+
rust_cold: CanonAbi::Rust,
98+
99+
stdcall: Some(CanonAbi::C),
100+
thiscall: Some(CanonAbi::C),
101+
fastcall: Some(CanonAbi::C),
102+
103+
..x86_64_abi_map()
104+
}
105+
}
106+
107+
pub(crate) fn aarch64_abi_map() -> AbiMap {
108+
AbiMap { efiapi: Some(CanonAbi::C), ..Default::default() }
109+
}
110+
111+
pub(crate) fn aarch64_windows_abi_map() -> AbiMap {
112+
AbiMap {
113+
win64: Some(CanonAbi::C),
114+
sysv64: Some(CanonAbi::C),
115+
stdcall: Some(CanonAbi::C),
116+
thiscall: Some(CanonAbi::C),
117+
fastcall: Some(CanonAbi::C),
118+
119+
vectorcall: Some(CanonAbi::C),
120+
121+
..aarch64_abi_map()
122+
}
123+
}
124+
125+
pub(crate) fn arm_abi_map() -> AbiMap {
126+
AbiMap { aapcs: true, efiapi: Some(CanonAbi::Arm(ArmCall::Aapcs)), ..Default::default() }
127+
}
128+
129+
pub(crate) fn arm_windows_abi_map() -> AbiMap {
130+
AbiMap {
131+
aapcs: true,
132+
efiapi: Some(CanonAbi::Arm(ArmCall::Aapcs)),
133+
stdcall: Some(CanonAbi::C),
134+
thiscall: Some(CanonAbi::C),
135+
fastcall: Some(CanonAbi::C),
136+
137+
vectorcall: Some(CanonAbi::C),
138+
139+
..Default::default()
140+
}
141+
}
142+
143+
// bitness-invariant, for now
144+
pub(crate) fn riscv_abi_map() -> AbiMap {
145+
AbiMap { efiapi: Some(CanonAbi::C), riscv_interrupt: true, ..Default::default() }
146+
}

compiler/rustc_target/src/spec/base/nto_qnx.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ pub(crate) fn aarch64() -> Target {
4040
data_layout: "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32".into(),
4141
arch: "aarch64".into(),
4242
options: TargetOptions {
43+
abi_map: super::aarch64_abi_map(),
4344
features: "+v8a".into(),
4445
max_atomic_width: Some(128),
4546
..opts()
@@ -56,6 +57,7 @@ pub(crate) fn x86_64() -> Target {
5657
"e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128".into(),
5758
arch: "x86_64".into(),
5859
options: TargetOptions {
60+
abi_map: super::x86_64_abi_map(),
5961
cpu: "x86-64".into(),
6062
plt_by_default: false,
6163
max_atomic_width: Some(64),

compiler/rustc_target/src/spec/base/thumb.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ use crate::spec::{Cc, FramePointer, LinkerFlavor, Lld, PanicStrategy, RelocModel
3232
pub(crate) fn opts() -> TargetOptions {
3333
// See rust-lang/rfcs#1645 for a discussion about these defaults
3434
TargetOptions {
35+
abi_map: super::arm_abi_map(),
3536
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
3637
// In most cases, LLD is good enough
3738
linker: Some("rust-lld".into()),

compiler/rustc_target/src/spec/targets/aarch64_be_unknown_linux_gnu.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ pub(crate) fn target() -> Target {
1515
data_layout: "E-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32".into(),
1616
arch: "aarch64".into(),
1717
options: TargetOptions {
18+
abi_map: base::aarch64_abi_map(),
1819
features: "+v8a,+outline-atomics".into(),
1920
// the AAPCS64 expects use of non-leaf frame pointers per
2021
// https://github.com/ARM-software/abi-aa/blob/4492d1570eb70c8fd146623e0db65b2d241f12e7/aapcs64/aapcs64.rst#the-frame-pointer

compiler/rustc_target/src/spec/targets/aarch64_be_unknown_linux_gnu_ilp32.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use crate::spec::{FramePointer, StackProbeType, Target, TargetMetadata, TargetOp
44

55
pub(crate) fn target() -> Target {
66
let mut base = base::linux_gnu::opts();
7+
base.abi_map = base::aarch64_abi_map();
78
base.max_atomic_width = Some(128);
89

910
Target {

compiler/rustc_target/src/spec/targets/aarch64_be_unknown_netbsd.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ pub(crate) fn target() -> Target {
1515
data_layout: "E-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32".into(),
1616
arch: "aarch64".into(),
1717
options: TargetOptions {
18+
abi_map: base::aarch64_abi_map(),
1819
mcount: "__mcount".into(),
1920
max_atomic_width: Some(128),
2021
stack_probes: StackProbeType::Inline,

compiler/rustc_target/src/spec/targets/aarch64_kmc_solid_asp3.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ pub(crate) fn target() -> Target {
1414
data_layout: "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32".into(),
1515
arch: "aarch64".into(),
1616
options: TargetOptions {
17+
abi_map: base::aarch64_abi_map(),
1718
linker: Some("aarch64-kmc-elf-gcc".into()),
1819
features: "+v8a,+neon,+fp-armv8".into(),
1920
relocation_model: RelocModel::Static,

compiler/rustc_target/src/spec/targets/aarch64_linux_android.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ pub(crate) fn target() -> Target {
1818
data_layout: "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32".into(),
1919
arch: "aarch64".into(),
2020
options: TargetOptions {
21+
abi_map: base::aarch64_abi_map(),
2122
max_atomic_width: Some(128),
2223
// As documented in https://developer.android.com/ndk/guides/cpu-features.html
2324
// the neon (ASIMD) and FP must exist on all android aarch64 targets.

compiler/rustc_target/src/spec/targets/aarch64_nintendo_switch_freestanding.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::spec::{
22
Cc, LinkerFlavor, Lld, PanicStrategy, RelroLevel, StackProbeType, Target, TargetMetadata,
3-
TargetOptions,
3+
TargetOptions, base,
44
};
55

66
const LINKER_SCRIPT: &str = include_str!("./aarch64_nintendo_switch_freestanding_linker_script.ld");
@@ -19,6 +19,7 @@ pub(crate) fn target() -> Target {
1919
data_layout: "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32".into(),
2020
arch: "aarch64".into(),
2121
options: TargetOptions {
22+
abi_map: base::aarch64_abi_map(),
2223
features: "+v8a".into(),
2324
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
2425
linker: Some("rust-lld".into()),

compiler/rustc_target/src/spec/targets/aarch64_pc_windows_gnullvm.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use crate::spec::{Target, TargetMetadata, base};
22

33
pub(crate) fn target() -> Target {
44
let mut base = base::windows_gnullvm::opts();
5+
base.abi_map = base::aarch64_windows_abi_map();
56
base.max_atomic_width = Some(128);
67
base.features = "+v8a,+neon,+fp-armv8".into();
78
base.linker = Some("aarch64-w64-mingw32-clang".into());

compiler/rustc_target/src/spec/targets/aarch64_pc_windows_msvc.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
use crate::spec::{FramePointer, Target, TargetMetadata, base};
1+
use crate::spec::base::{self, aarch64_windows_abi_map};
2+
use crate::spec::{FramePointer, Target, TargetMetadata};
23

34
pub(crate) fn target() -> Target {
45
let mut base = base::windows_msvc::opts();
6+
base.abi_map = aarch64_windows_abi_map();
57
base.max_atomic_width = Some(128);
68
base.features = "+v8a,+neon,+fp-armv8".into();
79

compiler/rustc_target/src/spec/targets/aarch64_unknown_freebsd.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ pub(crate) fn target() -> Target {
1313
data_layout: "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32".into(),
1414
arch: "aarch64".into(),
1515
options: TargetOptions {
16+
abi_map: base::aarch64_abi_map(),
1617
features: "+v8a".into(),
1718
max_atomic_width: Some(128),
1819
stack_probes: StackProbeType::Inline,

compiler/rustc_target/src/spec/targets/aarch64_unknown_fuchsia.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use crate::spec::{
44

55
pub(crate) fn target() -> Target {
66
let mut base = base::fuchsia::opts();
7+
base.abi_map = base::aarch64_abi_map();
78
base.cpu = "generic".into();
89
base.features = "+v8a,+crc,+aes,+sha2,+neon".into();
910
base.max_atomic_width = Some(128);

compiler/rustc_target/src/spec/targets/aarch64_unknown_hermit.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ pub(crate) fn target() -> Target {
1313
arch: "aarch64".into(),
1414
data_layout: "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32".into(),
1515
options: TargetOptions {
16+
abi_map: base::aarch64_abi_map(),
1617
features: "+v8a,+strict-align,+neon,+fp-armv8".into(),
1718
max_atomic_width: Some(128),
1819
stack_probes: StackProbeType::Inline,

compiler/rustc_target/src/spec/targets/aarch64_unknown_illumos.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use crate::spec::{Cc, LinkerFlavor, SanitizerSet, Target, TargetMetadata, base};
22

33
pub(crate) fn target() -> Target {
44
let mut base = base::illumos::opts();
5+
base.abi_map = base::aarch64_abi_map();
56
base.add_pre_link_args(LinkerFlavor::Unix(Cc::Yes), &["-std=c99"]);
67
base.max_atomic_width = Some(128);
78
base.supported_sanitizers = SanitizerSet::ADDRESS | SanitizerSet::CFI;

compiler/rustc_target/src/spec/targets/aarch64_unknown_linux_gnu.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ pub(crate) fn target() -> Target {
1515
data_layout: "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32".into(),
1616
arch: "aarch64".into(),
1717
options: TargetOptions {
18+
abi_map: base::aarch64_abi_map(),
1819
features: "+v8a,+outline-atomics".into(),
1920
// the AAPCS64 expects use of non-leaf frame pointers per
2021
// https://github.com/ARM-software/abi-aa/blob/4492d1570eb70c8fd146623e0db65b2d241f12e7/aapcs64/aapcs64.rst#the-frame-pointer

compiler/rustc_target/src/spec/targets/aarch64_unknown_linux_gnu_ilp32.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ pub(crate) fn target() -> Target {
1313
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(),
1414
arch: "aarch64".into(),
1515
options: TargetOptions {
16+
abi_map: base::aarch64_abi_map(),
1617
abi: "ilp32".into(),
1718
features: "+v8a,+outline-atomics".into(),
1819
// the AAPCS64 expects use of non-leaf frame pointers per

compiler/rustc_target/src/spec/targets/aarch64_unknown_linux_musl.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,13 @@ pub(crate) fn target() -> Target {
2929
data_layout: "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32".into(),
3030
arch: "aarch64".into(),
3131
options: TargetOptions {
32+
abi_map: base::aarch64_abi_map(),
3233
// the AAPCS64 expects use of non-leaf frame pointers per
3334
// https://github.com/ARM-software/abi-aa/blob/4492d1570eb70c8fd146623e0db65b2d241f12e7/aapcs64/aapcs64.rst#the-frame-pointer
3435
// and we tend to encounter interesting bugs in AArch64 unwinding code if we do not
3536
frame_pointer: FramePointer::NonLeaf,
36-
mcount: "\u{1}_mcount".into(), ..base
37+
mcount: "\u{1}_mcount".into(),
38+
..base
3739
},
3840
}
3941
}

compiler/rustc_target/src/spec/targets/aarch64_unknown_linux_ohos.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ pub(crate) fn target() -> Target {
1818
data_layout: "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32".into(),
1919
arch: "aarch64".into(),
2020
options: TargetOptions {
21+
abi_map: base::aarch64_abi_map(),
2122
// the AAPCS64 expects use of non-leaf frame pointers per
2223
// https://github.com/ARM-software/abi-aa/blob/4492d1570eb70c8fd146623e0db65b2d241f12e7/aapcs64/aapcs64.rst#the-frame-pointer
2324
// and we tend to encounter interesting bugs in AArch64 unwinding code if we do not

compiler/rustc_target/src/spec/targets/aarch64_unknown_netbsd.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ pub(crate) fn target() -> Target {
1313
data_layout: "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32".into(),
1414
arch: "aarch64".into(),
1515
options: TargetOptions {
16+
abi_map: base::aarch64_abi_map(),
1617
features: "+v8a".into(),
1718
mcount: "__mcount".into(),
1819
max_atomic_width: Some(128),

compiler/rustc_target/src/spec/targets/aarch64_unknown_none.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@
88

99
use crate::spec::{
1010
Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, SanitizerSet, StackProbeType, Target,
11-
TargetMetadata, TargetOptions,
11+
TargetMetadata, TargetOptions, base,
1212
};
1313

1414
pub(crate) fn target() -> Target {
1515
let opts = TargetOptions {
16+
abi_map: base::aarch64_abi_map(),
1617
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
1718
linker: Some("rust-lld".into()),
1819
// Enable the Cortex-A53 errata 843419 mitigation by default

compiler/rustc_target/src/spec/targets/aarch64_unknown_none_softfloat.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@
88

99
use crate::spec::{
1010
Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, SanitizerSet, StackProbeType, Target,
11-
TargetMetadata, TargetOptions,
11+
TargetMetadata, TargetOptions, base,
1212
};
1313

1414
pub(crate) fn target() -> Target {
1515
let opts = TargetOptions {
16+
abi_map: base::aarch64_abi_map(),
17+
1618
abi: "softfloat".into(),
1719
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
1820
linker: Some("rust-lld".into()),

compiler/rustc_target/src/spec/targets/aarch64_unknown_nuttx.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@
88

99
use crate::spec::{
1010
Cc, LinkerFlavor, Lld, PanicStrategy, RelocModel, SanitizerSet, StackProbeType, Target,
11-
TargetMetadata, TargetOptions, cvs,
11+
TargetMetadata, TargetOptions, base, cvs,
1212
};
1313

1414
pub(crate) fn target() -> Target {
1515
let opts = TargetOptions {
16+
abi_map: base::aarch64_abi_map(),
1617
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
1718
linker: Some("rust-lld".into()),
1819
// Enable the Cortex-A53 errata 843419 mitigation by default

compiler/rustc_target/src/spec/targets/aarch64_unknown_openbsd.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ pub(crate) fn target() -> Target {
1313
data_layout: "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32".into(),
1414
arch: "aarch64".into(),
1515
options: TargetOptions {
16+
abi_map: base::aarch64_abi_map(),
1617
features: "+v8a".into(),
1718
max_atomic_width: Some(128),
1819
stack_probes: StackProbeType::Inline,

compiler/rustc_target/src/spec/targets/aarch64_unknown_redox.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use crate::spec::{StackProbeType, Target, TargetMetadata, base};
22

33
pub(crate) fn target() -> Target {
44
let mut base = base::redox::opts();
5+
base.abi_map = base::aarch64_abi_map();
56
base.max_atomic_width = Some(128);
67
base.stack_probes = StackProbeType::Inline;
78
base.features = "+v8a".into();

compiler/rustc_target/src/spec/targets/aarch64_unknown_teeos.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use crate::spec::{StackProbeType, Target, TargetMetadata, base};
22

33
pub(crate) fn target() -> Target {
44
let mut base = base::teeos::opts();
5+
base.abi_map = base::aarch64_abi_map();
56
base.features = "+strict-align,+neon,+fp-armv8".into();
67
base.max_atomic_width = Some(128);
78
base.stack_probes = StackProbeType::Inline;

compiler/rustc_target/src/spec/targets/aarch64_unknown_trusty.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
use crate::spec::{
44
LinkSelfContainedDefault, PanicStrategy, RelroLevel, Target, TargetMetadata, TargetOptions,
5+
base,
56
};
67

78
pub(crate) fn target() -> Target {
@@ -17,6 +18,7 @@ pub(crate) fn target() -> Target {
1718
data_layout: "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32".into(),
1819
arch: "aarch64".into(),
1920
options: TargetOptions {
21+
abi_map: base::aarch64_abi_map(),
2022
features: "+neon,+fp-armv8,+reserve-x18".into(),
2123
executables: true,
2224
max_atomic_width: Some(128),

compiler/rustc_target/src/spec/targets/aarch64_unknown_uefi.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use crate::spec::{LinkerFlavor, Lld, Target, TargetMetadata, base};
55

66
pub(crate) fn target() -> Target {
77
let mut base = base::uefi_msvc::opts();
8-
8+
base.abi_map = base::aarch64_abi_map();
99
base.max_atomic_width = Some(128);
1010
base.add_pre_link_args(LinkerFlavor::Msvc(Lld::No), &["/machine:arm64"]);
1111
base.features = "+v8a".into();

0 commit comments

Comments
 (0)