Move Mach-O platform information to rustc_codegen_ssa:🔙:apple

To align with the general decision to have this sort of information
there instead.

Also use the visionOS values added in newer `object` release.
This commit is contained in:
Mads Marquart 2024-11-01 17:05:10 +01:00
parent e1233153ac
commit e75a7ddad3
4 changed files with 18 additions and 21 deletions

View File

@ -7,6 +7,22 @@
#[cfg(test)]
mod tests;
pub(super) fn macho_platform(target: &Target) -> u32 {
match (&*target.os, &*target.abi) {
("macos", _) => object::macho::PLATFORM_MACOS,
("ios", "macabi") => object::macho::PLATFORM_MACCATALYST,
("ios", "sim") => object::macho::PLATFORM_IOSSIMULATOR,
("ios", _) => object::macho::PLATFORM_IOS,
("watchos", "sim") => object::macho::PLATFORM_WATCHOSSIMULATOR,
("watchos", _) => object::macho::PLATFORM_WATCHOS,
("tvos", "sim") => object::macho::PLATFORM_TVOSSIMULATOR,
("tvos", _) => object::macho::PLATFORM_TVOS,
("visionos", "sim") => object::macho::PLATFORM_XROSSIMULATOR,
("visionos", _) => object::macho::PLATFORM_XROS,
_ => unreachable!("tried to get Mach-O platform for non-Apple target"),
}
}
/// Deployment target or SDK version.
///
/// The size of the numbers in here are limited by Mach-O's `LC_BUILD_VERSION`.

View File

@ -402,8 +402,7 @@ fn pack_version((major, minor, patch): (u16, u8, u8)) -> u32 {
(major << 16) | (minor << 8) | patch
}
let platform =
rustc_target::spec::current_apple_platform(&sess.target).expect("unknown Apple target OS");
let platform = apple::macho_platform(&sess.target);
let min_os = apple::deployment_target(sess);
let mut build_version = object::write::MachOBuildVersion::default();

View File

@ -3,7 +3,7 @@
use crate::spec::{
Cc, DebuginfoKind, FramePointer, LinkerFlavor, Lld, SplitDebuginfo, StackProbeType, StaticCow,
Target, TargetOptions, cvs,
TargetOptions, cvs,
};
#[cfg(test)]
@ -156,23 +156,6 @@ pub(crate) fn base(
(opts, unversioned_llvm_target(os, arch, abi), arch.target_arch())
}
pub fn platform(target: &Target) -> Option<u32> {
Some(match (&*target.os, &*target.abi) {
("macos", _) => object::macho::PLATFORM_MACOS,
("ios", "macabi") => object::macho::PLATFORM_MACCATALYST,
("ios", "sim") => object::macho::PLATFORM_IOSSIMULATOR,
("ios", _) => object::macho::PLATFORM_IOS,
("watchos", "sim") => object::macho::PLATFORM_WATCHOSSIMULATOR,
("watchos", _) => object::macho::PLATFORM_WATCHOS,
("tvos", "sim") => object::macho::PLATFORM_TVOSSIMULATOR,
("tvos", _) => object::macho::PLATFORM_TVOS,
// FIXME: Upgrade to `object-rs` 0.33+ implementation with visionOS platform definition
("visionos", "sim") => 12,
("visionos", _) => 11,
_ => return None,
})
}
/// Generate part of the LLVM target triple.
///
/// See `rustc_codegen_ssa::back::versioned_llvm_target` for the full triple passed to LLVM and

View File

@ -59,7 +59,6 @@
pub mod crt_objects;
mod base;
pub use base::apple::platform as current_apple_platform;
pub use base::avr_gnu::ef_avr_arch;
/// Linker is called through a C/C++ compiler.