diff options
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/rustc_target/src/spec/aarch64_unknown_uefi.rs | 27 | ||||
| -rw-r--r-- | compiler/rustc_target/src/spec/mod.rs | 1 | 
2 files changed, 28 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 7f349ef10d3..9c957cba6cc 100644 --- a/compiler/rustc_target/src/spec/mod.rs +++ b/compiler/rustc_target/src/spec/mod.rs @@ -918,6 +918,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),  | 
