Rollup merge of #88137 - joshtriplett:osx-strip-symbols-no-option, r=michaelwoerister
On macOS, make strip="symbols" not pass any options to strip This makes the output with `strip="symbols"` match the result of just calling `strip` on the output binary, minimizing the size of the binary.
This commit is contained in:
commit
cbb561fdab
@ -1024,14 +1024,20 @@ fn is_illegal_instruction(_status: &ExitStatus) -> bool {
|
||||
}
|
||||
|
||||
if sess.target.is_like_osx {
|
||||
if let Some(option) = osx_strip_opt(sess.opts.debugging_opts.strip) {
|
||||
strip_symbols_in_osx(sess, &out_filename, option);
|
||||
match sess.opts.debugging_opts.strip {
|
||||
Strip::Debuginfo => strip_symbols_in_osx(sess, &out_filename, Some("-S")),
|
||||
Strip::Symbols => strip_symbols_in_osx(sess, &out_filename, None),
|
||||
Strip::None => {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn strip_symbols_in_osx<'a>(sess: &'a Session, out_filename: &Path, option: &str) {
|
||||
let prog = Command::new("strip").arg(option).arg(out_filename).output();
|
||||
fn strip_symbols_in_osx<'a>(sess: &'a Session, out_filename: &Path, option: Option<&str>) {
|
||||
let mut cmd = Command::new("strip");
|
||||
if let Some(option) = option {
|
||||
cmd.arg(option);
|
||||
}
|
||||
let prog = cmd.arg(out_filename).output();
|
||||
match prog {
|
||||
Ok(prog) => {
|
||||
if !prog.status.success() {
|
||||
@ -1049,14 +1055,6 @@ fn strip_symbols_in_osx<'a>(sess: &'a Session, out_filename: &Path, option: &str
|
||||
}
|
||||
}
|
||||
|
||||
fn osx_strip_opt<'a>(strip: Strip) -> Option<&'a str> {
|
||||
match strip {
|
||||
Strip::Debuginfo => Some("-S"),
|
||||
Strip::Symbols => Some("-x"),
|
||||
Strip::None => None,
|
||||
}
|
||||
}
|
||||
|
||||
fn escape_string(s: &[u8]) -> String {
|
||||
str::from_utf8(s).map(|s| s.to_owned()).unwrap_or_else(|_| {
|
||||
let mut x = "Non-UTF-8 output: ".to_string();
|
||||
|
Loading…
Reference in New Issue
Block a user