Skip to content

Commit b331e6f

Browse files
authored
Rollup merge of rust-lang#121210 - madsmtm:fix-target-abi-i386-apple-ios, r=workingjubilee
Fix `cfg(target_abi = "sim")` on `i386-apple-ios` Since rust-lang#80970 is stabilizing, I went and had a look, and found that the result was wrong on `i386-apple-ios`. r? rust-lang/macos
2 parents b865d9b + d801985 commit b331e6f

File tree

4 files changed

+15
-10
lines changed

4 files changed

+15
-10
lines changed

compiler/rustc_target/src/spec/base/apple/mod.rs

+8-9
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ pub enum Arch {
1717
Arm64e,
1818
Arm64_32,
1919
I386,
20+
I386_sim,
2021
I686,
2122
X86_64,
2223
X86_64h,
@@ -34,7 +35,7 @@ impl Arch {
3435
Arm64 | Arm64_macabi | Arm64_sim => "arm64",
3536
Arm64e => "arm64e",
3637
Arm64_32 => "arm64_32",
37-
I386 => "i386",
38+
I386 | I386_sim => "i386",
3839
I686 => "i686",
3940
X86_64 | X86_64_sim | X86_64_macabi => "x86_64",
4041
X86_64h => "x86_64h",
@@ -45,7 +46,7 @@ impl Arch {
4546
Cow::Borrowed(match self {
4647
Armv7k | Armv7s => "arm",
4748
Arm64 | Arm64e | Arm64_32 | Arm64_macabi | Arm64_sim => "aarch64",
48-
I386 | I686 => "x86",
49+
I386 | I386_sim | I686 => "x86",
4950
X86_64 | X86_64_sim | X86_64_macabi | X86_64h => "x86_64",
5051
})
5152
}
@@ -54,9 +55,7 @@ impl Arch {
5455
match self {
5556
Armv7k | Armv7s | Arm64 | Arm64e | Arm64_32 | I386 | I686 | X86_64 | X86_64h => "",
5657
X86_64_macabi | Arm64_macabi => "macabi",
57-
// x86_64-apple-ios is a simulator target, even though it isn't
58-
// declared that way in the target like the other ones...
59-
Arm64_sim | X86_64_sim => "sim",
58+
I386_sim | Arm64_sim | X86_64_sim => "sim",
6059
}
6160
}
6261

@@ -70,7 +69,7 @@ impl Arch {
7069
// Only macOS 10.12+ is supported, which means
7170
// all x86_64/x86 CPUs must be running at least penryn
7271
// https://github.com/llvm/llvm-project/blob/01f924d0e37a5deae51df0d77e10a15b63aa0c0f/clang/lib/Driver/ToolChains/Arch/X86.cpp#L79-L82
73-
I386 | I686 => "penryn",
72+
I386 | I386_sim | I686 => "penryn",
7473
X86_64 | X86_64_sim => "penryn",
7574
X86_64_macabi => "penryn",
7675
// Note: `core-avx2` is slightly more advanced than `x86_64h`, see
@@ -85,7 +84,7 @@ impl Arch {
8584
fn stack_probes(self) -> StackProbeType {
8685
match self {
8786
Armv7k | Armv7s => StackProbeType::None,
88-
Arm64 | Arm64e | Arm64_32 | I386 | I686 | X86_64 | X86_64h | X86_64_sim
87+
Arm64 | Arm64e | Arm64_32 | I386 | I386_sim | I686 | X86_64 | X86_64h | X86_64_sim
8988
| X86_64_macabi | Arm64_macabi | Arm64_sim => StackProbeType::Inline,
9089
}
9190
}
@@ -302,8 +301,8 @@ fn link_env_remove(arch: Arch, os: &'static str) -> StaticCow<[StaticCow<str>]>
302301
// Otherwise if cross-compiling for a different OS/SDK, remove any part
303302
// of the linking environment that's wrong and reversed.
304303
match arch {
305-
Armv7k | Armv7s | Arm64 | Arm64e | Arm64_32 | I386 | I686 | X86_64 | X86_64_sim
306-
| X86_64h | Arm64_sim => {
304+
Armv7k | Armv7s | Arm64 | Arm64e | Arm64_32 | I386 | I386_sim | I686 | X86_64
305+
| X86_64_sim | X86_64h | Arm64_sim => {
307306
cvs!["MACOSX_DEPLOYMENT_TARGET"]
308307
}
309308
X86_64_macabi | Arm64_macabi => cvs!["IPHONEOS_DEPLOYMENT_TARGET"],

compiler/rustc_target/src/spec/targets/i386_apple_ios.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ use crate::spec::base::apple::{ios_sim_llvm_target, opts, Arch};
22
use crate::spec::{Target, TargetOptions};
33

44
pub fn target() -> Target {
5-
let arch = Arch::I386;
5+
// i386-apple-ios is a simulator target, even though it isn't declared
6+
// that way in the target name like the other ones...
7+
let arch = Arch::I386_sim;
68
Target {
79
// Clang automatically chooses a more specific target based on
810
// IPHONEOS_DEPLOYMENT_TARGET.

compiler/rustc_target/src/spec/targets/x86_64_apple_ios.rs

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ use crate::spec::base::apple::{ios_sim_llvm_target, opts, Arch};
22
use crate::spec::{SanitizerSet, Target, TargetOptions};
33

44
pub fn target() -> Target {
5+
// x86_64-apple-ios is a simulator target, even though it isn't declared
6+
// that way in the target name like the other ones...
57
let arch = Arch::X86_64_sim;
68
let mut base = opts("ios", arch);
79
base.supported_sanitizers = SanitizerSet::ADDRESS | SanitizerSet::THREAD;

compiler/rustc_target/src/spec/targets/x86_64_apple_tvos.rs

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ use crate::spec::base::apple::{opts, tvos_sim_llvm_target, Arch};
22
use crate::spec::{Target, TargetOptions};
33

44
pub fn target() -> Target {
5+
// x86_64-apple-tvos is a simulator target, even though it isn't declared
6+
// that way in the target name like the other ones...
57
let arch = Arch::X86_64_sim;
68
Target {
79
llvm_target: tvos_sim_llvm_target(arch).into(),

0 commit comments

Comments
 (0)