Rollup merge of #90058 - joshtriplett:stabilize-strip, r=wesleywiser
Stabilize -Z strip as -C strip Leave -Z strip available temporarily as an alias, to avoid breaking cargo until cargo transitions to using -C strip.
This commit is contained in:
commit
a0dc4abe98
6 changed files with 40 additions and 27 deletions
|
@ -1034,8 +1034,10 @@ fn link_natively<'a, B: ArchiveBuilder<'a>>(
|
|||
SplitDebuginfo::Packed => link_dwarf_object(sess, &out_filename),
|
||||
}
|
||||
|
||||
let strip = strip_value(sess);
|
||||
|
||||
if sess.target.is_like_osx {
|
||||
match sess.opts.debugging_opts.strip {
|
||||
match strip {
|
||||
Strip::Debuginfo => strip_symbols_in_osx(sess, &out_filename, Some("-S")),
|
||||
Strip::Symbols => strip_symbols_in_osx(sess, &out_filename, None),
|
||||
Strip::None => {}
|
||||
|
@ -1043,6 +1045,14 @@ fn link_natively<'a, B: ArchiveBuilder<'a>>(
|
|||
}
|
||||
}
|
||||
|
||||
// Temporarily support both -Z strip and -C strip
|
||||
fn strip_value(sess: &Session) -> Strip {
|
||||
match (sess.opts.debugging_opts.strip, sess.opts.cg.strip) {
|
||||
(s, Strip::None) => s,
|
||||
(_, s) => s,
|
||||
}
|
||||
}
|
||||
|
||||
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 {
|
||||
|
@ -2014,7 +2024,7 @@ fn add_order_independent_options(
|
|||
cmd.optimize();
|
||||
|
||||
// Pass debuginfo and strip flags down to the linker.
|
||||
cmd.debuginfo(sess.opts.debugging_opts.strip);
|
||||
cmd.debuginfo(strip_value(sess));
|
||||
|
||||
// We want to prevent the compiler from accidentally leaking in any system libraries,
|
||||
// so by default we tell linkers not to link to any default libraries.
|
||||
|
|
|
@ -551,6 +551,7 @@ fn test_codegen_options_tracking_hash() {
|
|||
untracked!(remark, Passes::Some(vec![String::from("pass1"), String::from("pass2")]));
|
||||
untracked!(rpath, true);
|
||||
untracked!(save_temps, true);
|
||||
untracked!(strip, Strip::Debuginfo);
|
||||
|
||||
macro_rules! tracked {
|
||||
($name: ident, $non_default_value: expr) => {
|
||||
|
@ -684,7 +685,6 @@ fn test_debugging_options_tracking_hash() {
|
|||
untracked!(self_profile_events, Some(vec![String::new()]));
|
||||
untracked!(span_debug, true);
|
||||
untracked!(span_free_formats, true);
|
||||
untracked!(strip, Strip::Debuginfo);
|
||||
untracked!(temps_dir, Some(String::from("abc")));
|
||||
untracked!(terminal_width, Some(80));
|
||||
untracked!(threads, 99);
|
||||
|
|
|
@ -37,7 +37,7 @@ use std::iter::{self, FromIterator};
|
|||
use std::path::{Path, PathBuf};
|
||||
use std::str::{self, FromStr};
|
||||
|
||||
/// The different settings that the `-Z strip` flag can have.
|
||||
/// The different settings that the `-C strip` flag can have.
|
||||
#[derive(Clone, Copy, PartialEq, Hash, Debug)]
|
||||
pub enum Strip {
|
||||
/// Do not strip at all.
|
||||
|
|
|
@ -219,7 +219,7 @@ top_level_options!(
|
|||
/// generated code to parse an option into its respective field in the struct. There are a few
|
||||
/// hand-written parsers for parsing specific types of values in this module.
|
||||
macro_rules! options {
|
||||
($struct_name:ident, $stat:ident, $prefix:expr, $outputname:expr,
|
||||
($struct_name:ident, $stat:ident, $optmod:ident, $prefix:expr, $outputname:expr,
|
||||
$($( #[$attr:meta] )* $opt:ident : $t:ty = (
|
||||
$init:expr,
|
||||
$parse:ident,
|
||||
|
@ -264,13 +264,15 @@ macro_rules! options {
|
|||
}
|
||||
|
||||
pub const $stat: OptionDescrs<$struct_name> =
|
||||
&[ $( (stringify!($opt), $opt, desc::$parse, $desc) ),* ];
|
||||
&[ $( (stringify!($opt), $optmod::$opt, desc::$parse, $desc) ),* ];
|
||||
|
||||
mod $optmod {
|
||||
$(
|
||||
fn $opt(cg: &mut $struct_name, v: Option<&str>) -> bool {
|
||||
parse::$parse(&mut redirect_field!(cg.$opt), v)
|
||||
pub(super) fn $opt(cg: &mut super::$struct_name, v: Option<&str>) -> bool {
|
||||
super::parse::$parse(&mut redirect_field!(cg.$opt), v)
|
||||
}
|
||||
)*
|
||||
}
|
||||
|
||||
) }
|
||||
|
||||
|
@ -918,7 +920,7 @@ mod parse {
|
|||
}
|
||||
|
||||
options! {
|
||||
CodegenOptions, CG_OPTIONS, "C", "codegen",
|
||||
CodegenOptions, CG_OPTIONS, cgopts, "C", "codegen",
|
||||
|
||||
// This list is in alphabetical order.
|
||||
//
|
||||
|
@ -1013,6 +1015,8 @@ options! {
|
|||
"use soft float ABI (*eabihf targets only) (default: no)"),
|
||||
split_debuginfo: Option<SplitDebuginfo> = (None, parse_split_debuginfo, [TRACKED],
|
||||
"how to handle split-debuginfo, a platform-specific option"),
|
||||
strip: Strip = (Strip::None, parse_strip, [UNTRACKED],
|
||||
"tell the linker which information to strip (`none` (default), `debuginfo` or `symbols`)"),
|
||||
target_cpu: Option<String> = (None, parse_opt_string, [TRACKED],
|
||||
"select target processor (`rustc --print target-cpus` for details)"),
|
||||
target_feature: String = (String::new(), parse_target_feature, [TRACKED],
|
||||
|
@ -1027,7 +1031,7 @@ options! {
|
|||
}
|
||||
|
||||
options! {
|
||||
DebuggingOptions, DB_OPTIONS, "Z", "debugging",
|
||||
DebuggingOptions, DB_OPTIONS, dbopts, "Z", "debugging",
|
||||
|
||||
// This list is in alphabetical order.
|
||||
//
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue