]>
Commit | Line | Data |
---|---|---|
2b03887a | 1 | use crate::spec::{Cc, FramePointer, LinkerFlavor, Lld, StackProbeType, Target, TargetOptions}; |
1a4d82fc | 2 | |
29967ef6 | 3 | pub fn target() -> Target { |
f2b60f7d FG |
4 | // ld64 only understand i386 and not i686 |
5 | let mut base = super::apple_base::opts("macos", "i386", ""); | |
5e7ed085 | 6 | base.cpu = "yonah".into(); |
c30ab7b3 | 7 | base.max_atomic_width = Some(64); |
2b03887a | 8 | base.add_pre_link_args(LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-m32"]); |
5e7ed085 | 9 | base.link_env_remove.to_mut().extend(super::apple_base::macos_link_env_remove()); |
2b03887a | 10 | base.stack_probes = StackProbeType::X86; |
136023e0 | 11 | base.frame_pointer = FramePointer::Always; |
1a4d82fc | 12 | |
48663c56 XL |
13 | // Clang automatically chooses a more specific target based on |
14 | // MACOSX_DEPLOYMENT_TARGET. To enable cross-language LTO to work | |
15 | // correctly, we do too. | |
16 | let arch = "i686"; | |
17 | let llvm_target = super::apple_base::macos_llvm_target(&arch); | |
18 | ||
29967ef6 | 19 | Target { |
5e7ed085 | 20 | llvm_target: llvm_target.into(), |
29967ef6 | 21 | pointer_width: 32, |
dfeec247 XL |
22 | data_layout: "e-m:o-p:32:32-p270:32:32-p271:32:32-p272:64:64-\ |
23 | f64:32:64-f80:128-n8:16:32-S128" | |
5e7ed085 FG |
24 | .into(), |
25 | arch: "x86".into(), | |
26 | options: TargetOptions { mcount: "\u{1}mcount".into(), ..base }, | |
29967ef6 | 27 | } |
1a4d82fc | 28 | } |