Skip to content

Commit 44b81fb

Browse files
Add the aarch64-unknown-uefi target
* This commit adds the aarch64-unknown-uefi target and also adds it into the supported targets list under the tier-3 target table. * Uses the small code model by default Signed-off-by: Andy-Python-Programmer <[email protected]>
1 parent ac8c3bf commit 44b81fb

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// This defines the aarch64 target for UEFI systems as described in the UEFI specification. See the
2+
// uefi-base module for generic UEFI options.
3+
4+
use super::uefi_msvc_base;
5+
use crate::spec::{LinkerFlavor, LldFlavor, Target};
6+
7+
pub fn target() -> Target {
8+
let mut base = uefi_msvc_base::opts();
9+
10+
base.max_atomic_width = Some(64);
11+
12+
let pre_link_args_msvc = vec!["/machine:arm64".to_string()];
13+
14+
base.pre_link_args.get_mut(&LinkerFlavor::Msvc).unwrap().extend(pre_link_args_msvc.clone());
15+
base.pre_link_args
16+
.get_mut(&LinkerFlavor::Lld(LldFlavor::Link))
17+
.unwrap()
18+
.extend(pre_link_args_msvc);
19+
20+
Target {
21+
llvm_target: "aarch64-unknown-windows".to_string(),
22+
pointer_width: 64,
23+
data_layout: "e-m:w-p:64:64-i32:32-i64:64-i128:128-n32:64-S128".to_string(),
24+
arch: "aarch64".to_string(),
25+
options: base,
26+
}
27+
}

compiler/rustc_target/src/spec/mod.rs

+1
Original file line numberDiff line numberDiff line change
@@ -917,6 +917,7 @@ supported_targets! {
917917

918918
("x86_64-unknown-uefi", x86_64_unknown_uefi),
919919
("i686-unknown-uefi", i686_unknown_uefi),
920+
("aarch64-unknown-uefi", aarch64_unknown_uefi),
920921

921922
("nvptx64-nvidia-cuda", nvptx64_nvidia_cuda),
922923

src/doc/rustc/src/platform-support.md

+1
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ target | std | host | notes
200200
`aarch64-apple-tvos` | * | | ARM64 tvOS
201201
`aarch64-unknown-freebsd` | ✓ | ✓ | ARM64 FreeBSD
202202
`aarch64-unknown-hermit` | ? | |
203+
`aarch64-unknown-uefi` | * | | ARM64 UEFI
203204
`aarch64-unknown-linux-gnu_ilp32` | ✓ | ✓ | ARM64 Linux (ILP32 ABI)
204205
`aarch64-unknown-netbsd` | ✓ | ✓ |
205206
`aarch64-unknown-openbsd` | ✓ | ✓ | ARM64 OpenBSD

0 commit comments

Comments
 (0)