Skip to content

Commit 79eedef

Browse files
committed
Fix x86_64-apple-ios target to use the correct target_abi
1 parent 1ca6777 commit 79eedef

File tree

3 files changed

+30
-7
lines changed

3 files changed

+30
-7
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
use crate::spec::{aarch64_apple_ios_sim, aarch64_apple_watchos_sim, x86_64_apple_ios};
2+
3+
#[test]
4+
fn simulator_targets_set_abi() {
5+
let all_sim_targets = [
6+
x86_64_apple_ios::target(),
7+
aarch64_apple_ios_sim::target(),
8+
aarch64_apple_watchos_sim::target(),
9+
// TODO: x86_64-apple-tvos and x86_64-apple-watchos-sim
10+
];
11+
12+
for target in all_sim_targets {
13+
assert_eq!(target.abi, "sim")
14+
}
15+
}

compiler/rustc_target/src/spec/apple_sdk_base.rs

+14-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
use crate::spec::{cvs, TargetOptions};
22
use std::borrow::Cow;
33

4+
#[cfg(test)]
5+
#[path = "apple/tests.rs"]
6+
mod tests;
7+
48
use Arch::*;
59
#[allow(non_camel_case_types)]
610
#[derive(Copy, Clone)]
@@ -12,6 +16,7 @@ pub enum Arch {
1216
Arm64_32,
1317
I386,
1418
X86_64,
19+
X86_64_sim,
1520
X86_64_macabi,
1621
Arm64_macabi,
1722
Arm64_sim,
@@ -25,15 +30,17 @@ fn target_arch_name(arch: Arch) -> &'static str {
2530
Arm64 | Arm64_macabi | Arm64_sim => "arm64",
2631
Arm64_32 => "arm64_32",
2732
I386 => "i386",
28-
X86_64 | X86_64_macabi => "x86_64",
33+
X86_64 | X86_64_sim | X86_64_macabi => "x86_64",
2934
}
3035
}
3136

3237
fn target_abi(arch: Arch) -> &'static str {
3338
match arch {
3439
Armv7 | Armv7k | Armv7s | Arm64 | Arm64_32 | I386 | X86_64 => "",
3540
X86_64_macabi | Arm64_macabi => "macabi",
36-
Arm64_sim => "sim",
41+
// x86_64-apple-ios is a simulator target, even though it isn't
42+
// declared that way in the target like the other ones...
43+
Arm64_sim | X86_64_sim => "sim",
3744
}
3845
}
3946

@@ -45,7 +52,7 @@ fn target_cpu(arch: Arch) -> &'static str {
4552
Arm64 => "apple-a7",
4653
Arm64_32 => "apple-s4",
4754
I386 => "yonah",
48-
X86_64 => "core2",
55+
X86_64 | X86_64_sim => "core2",
4956
X86_64_macabi => "core2",
5057
Arm64_macabi => "apple-a12",
5158
Arm64_sim => "apple-a12",
@@ -54,19 +61,20 @@ fn target_cpu(arch: Arch) -> &'static str {
5461

5562
fn link_env_remove(arch: Arch) -> Cow<'static, [Cow<'static, str>]> {
5663
match arch {
57-
Armv7 | Armv7k | Armv7s | Arm64 | Arm64_32 | I386 | X86_64 | Arm64_sim => {
64+
Armv7 | Armv7k | Armv7s | Arm64 | Arm64_32 | I386 | X86_64 | X86_64_sim | Arm64_sim => {
5865
cvs!["MACOSX_DEPLOYMENT_TARGET"]
5966
}
6067
X86_64_macabi | Arm64_macabi => cvs!["IPHONEOS_DEPLOYMENT_TARGET"],
6168
}
6269
}
6370

6471
pub fn opts(os: &'static str, arch: Arch) -> TargetOptions {
72+
let abi = target_abi(arch);
6573
TargetOptions {
66-
abi: target_abi(arch).into(),
74+
abi: abi.into(),
6775
cpu: target_cpu(arch).into(),
6876
link_env_remove: link_env_remove(arch),
6977
has_thread_local: false,
70-
..super::apple_base::opts(os, target_arch_name(arch), target_abi(arch))
78+
..super::apple_base::opts(os, target_arch_name(arch), abi)
7179
}
7280
}

compiler/rustc_target/src/spec/x86_64_apple_ios.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use super::apple_sdk_base::{opts, Arch};
22
use crate::spec::{StackProbeType, Target, TargetOptions};
33

44
pub fn target() -> Target {
5-
let base = opts("ios", Arch::X86_64);
5+
let base = opts("ios", Arch::X86_64_sim);
66
let llvm_target = super::apple_base::ios_sim_llvm_target("x86_64");
77

88
Target {

0 commit comments

Comments
 (0)