diff options
| author | unknown <andypythonappdeveloper@gmail.com> | 2021-05-16 13:28:16 +1000 |
|---|---|---|
| committer | Andy-Python-Programmer <andypythonappdeveloper@gmail.com> | 2021-08-09 16:49:04 +1000 |
| commit | 44b81fb8fc565610d88156608f21a2e3efce2aac (patch) | |
| tree | 7704cc06549e7e05249fdc5c7fdcecb5558bd2d2 | |
| parent | ac8c3bfffb2829d0af075a5d4020fb7e9e86c3a2 (diff) | |
| download | rust-44b81fb8fc565610d88156608f21a2e3efce2aac.tar.gz rust-44b81fb8fc565610d88156608f21a2e3efce2aac.zip | |
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 <andypythonappdeveloper@gmail.com>
| -rw-r--r-- | compiler/rustc_target/src/spec/aarch64_unknown_uefi.rs | 27 | ||||
| -rw-r--r-- | compiler/rustc_target/src/spec/mod.rs | 1 | ||||
| -rw-r--r-- | src/doc/rustc/src/platform-support.md | 1 |
3 files changed, 29 insertions, 0 deletions
diff --git a/compiler/rustc_target/src/spec/aarch64_unknown_uefi.rs b/compiler/rustc_target/src/spec/aarch64_unknown_uefi.rs new file mode 100644 index 00000000000..20c528d25f3 --- /dev/null +++ b/compiler/rustc_target/src/spec/aarch64_unknown_uefi.rs @@ -0,0 +1,27 @@ +// This defines the aarch64 target for UEFI systems as described in the UEFI specification. See the +// uefi-base module for generic UEFI options. + +use super::uefi_msvc_base; +use crate::spec::{LinkerFlavor, LldFlavor, Target}; + +pub fn target() -> Target { + let mut base = uefi_msvc_base::opts(); + + base.max_atomic_width = Some(64); + + let pre_link_args_msvc = vec!["/machine:arm64".to_string()]; + + base.pre_link_args.get_mut(&LinkerFlavor::Msvc).unwrap().extend(pre_link_args_msvc.clone()); + base.pre_link_args + .get_mut(&LinkerFlavor::Lld(LldFlavor::Link)) + .unwrap() + .extend(pre_link_args_msvc); + + Target { + llvm_target: "aarch64-unknown-windows".to_string(), + pointer_width: 64, + data_layout: "e-m:w-p:64:64-i32:32-i64:64-i128:128-n32:64-S128".to_string(), + arch: "aarch64".to_string(), + options: base, + } +} diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs index 0a5f8c17c63..d00534481ff 100644 --- a/compiler/rustc_target/src/spec/mod.rs +++ b/compiler/rustc_target/src/spec/mod.rs @@ -917,6 +917,7 @@ supported_targets! { ("x86_64-unknown-uefi", x86_64_unknown_uefi), ("i686-unknown-uefi", i686_unknown_uefi), + ("aarch64-unknown-uefi", aarch64_unknown_uefi), ("nvptx64-nvidia-cuda", nvptx64_nvidia_cuda), diff --git a/src/doc/rustc/src/platform-support.md b/src/doc/rustc/src/platform-support.md index 885010b039e..253e37043e3 100644 --- a/src/doc/rustc/src/platform-support.md +++ b/src/doc/rustc/src/platform-support.md @@ -200,6 +200,7 @@ target | std | host | notes `aarch64-apple-tvos` | * | | ARM64 tvOS `aarch64-unknown-freebsd` | ✓ | ✓ | ARM64 FreeBSD `aarch64-unknown-hermit` | ? | | +`aarch64-unknown-uefi` | * | | ARM64 UEFI `aarch64-unknown-linux-gnu_ilp32` | ✓ | ✓ | ARM64 Linux (ILP32 ABI) `aarch64-unknown-netbsd` | ✓ | ✓ | `aarch64-unknown-openbsd` | ✓ | ✓ | ARM64 OpenBSD |
