1 use super::apple_base::{macos_link_env_remove, macos_llvm_target, opts, Arch};
2 use crate::spec::{FramePointer, SanitizerSet, Target, TargetOptions};
4 pub fn target() -> Target {
5 let arch = Arch::Arm64;
6 let mut base = opts("macos", arch);
7 base.cpu = "apple-a14".into();
8 base.max_atomic_width = Some(128);
10 // FIXME: The leak sanitizer currently fails the tests, see #88132.
11 base.supported_sanitizers = SanitizerSet::ADDRESS | SanitizerSet::CFI | SanitizerSet::THREAD;
13 base.link_env_remove.to_mut().extend(macos_link_env_remove());
16 // Clang automatically chooses a more specific target based on
17 // MACOSX_DEPLOYMENT_TARGET. To enable cross-language LTO to work
18 // correctly, we do too.
19 llvm_target: macos_llvm_target(arch).into(),
21 data_layout: "e-m:o-i64:64-i128:128-n32:64-S128".into(),
22 arch: arch.target_arch(),
23 options: TargetOptions {
24 mcount: "\u{1}mcount".into(),
25 frame_pointer: FramePointer::NonLeaf,