Skip to content

Commit 06d1077

Browse files
committed
Auto merge of rust-lang#138250 - jieyouxu:ios-mitigation, r=<try>
[WIP] Use `/usr/bin/strip` on macOS -> iOS cross as a temporary mitigation Mitigation for <rust-lang#138212>. This reintroduces the "hard-coded strip" workaround (but only for iOS) that was initially introduced in rust-lang#130781. Looks like LLVM 20's initial `llvm-objcopy` version that we ship as `rust-objcopy` may be producing stripped iOS binaries with invalid offsets that fail iOS platform consistency checks. For the time being, use macOS system strip at `/usr/bin/strip` which should be available (unlike Linux -> macOS cross where this is not guaranteed to be available, partially why we are shipping `llvm-objcopy` in the first place[^linux-darwin-cross]) that shouldn't have this offset problem. ### Review and testing advice I don't have access to either macOS or iOS platforms, and I can't really write a test for this. This will need to be tested manually. r? `@davidtwco` (or reroll) cc *-apple-ios target maintainers `@badboy` `@deg4uss3r` `@madsmtm` try-job: dist-apple-various try-job: dist-x86_64-apple [^linux-darwin-cross]: rust-lang#131206
2 parents dea1661 + 908c5e4 commit 06d1077

File tree

1 file changed

+9
-1
lines changed
  • compiler/rustc_codegen_ssa/src/back

1 file changed

+9
-1
lines changed

compiler/rustc_codegen_ssa/src/back/link.rs

+9-1
Original file line numberDiff line numberDiff line change
@@ -1046,7 +1046,15 @@ fn link_natively(
10461046
let strip = sess.opts.cg.strip;
10471047

10481048
if sess.target.is_like_osx {
1049-
let stripcmd = "rust-objcopy";
1049+
let stripcmd = if sess.target.os == "ios" {
1050+
// FIXME(#138212): properly fix `llvm-objcopy` upstream when stripping iOS binaries
1051+
// (seemingly producing stripped binaries with incorrect offsets that fail platform
1052+
// consistency checks).
1053+
"/usr/bin/strip"
1054+
} else {
1055+
"rust-objcopy"
1056+
};
1057+
10501058
match (strip, crate_type) {
10511059
(Strip::Debuginfo, _) => {
10521060
strip_with_external_utility(sess, stripcmd, out_filename, &["--strip-debug"])

0 commit comments

Comments
 (0)