Skip to content

Commit f300247

Browse files
committed
Use /usr/bin/strip on macOS -> iOS cross as a temporary workaround
For <#138212>. 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) that shouldn't have this offset problem.
1 parent dea1661 commit f300247

File tree

1 file changed

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

1 file changed

+10
-1
lines changed

compiler/rustc_codegen_ssa/src/back/link.rs

+10-1
Original file line numberDiff line numberDiff line change
@@ -1046,7 +1046,16 @@ 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.host.os == "macos" && sess.target.os != "macos" {
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). This can only be used on macOS -> iOS cross because other linux
1053+
// hosts may not have a (good) system strip in this location.
1054+
"/usr/bin/strip"
1055+
} else {
1056+
"rust-objcopy"
1057+
};
1058+
10501059
match (strip, crate_type) {
10511060
(Strip::Debuginfo, _) => {
10521061
strip_with_external_utility(sess, stripcmd, out_filename, &["--strip-debug"])

0 commit comments

Comments
 (0)