Skip dsymutil by default for compiler bootstrap

`dsymutil` adds time to builds on Apple platforms for no clear benefit, and also
makes it more difficult for debuggers to find debug info. The compiler currently
defaults to running `dsymutil` to preserve its historical default, but when
compiling the compiler itself, we skip it by default since we know it's safe to
do so in that case.
This commit is contained in:
J. Ryan Stinnett 2020-12-20 02:49:18 +00:00
parent 1f5bc176b0
commit e628fcfcb5
3 changed files with 24 additions and 0 deletions

View File

@ -426,6 +426,14 @@ changelog-seen = 2
# FIXME(#61117): Some tests fail when this option is enabled.
#debuginfo-level-tests = 0
# Whether to run `dsymutil` on Apple platforms to gather debug info into .dSYM
# bundles. `dsymutil` adds time to builds for no clear benefit, and also makes
# it more difficult for debuggers to find debug info. The compiler currently
# defaults to running `dsymutil` to preserve its historical default, but when
# compiling the compiler itself, we skip it by default since we know it's safe
# to do so in that case.
#run-dsymutil = false
# Whether or not `panic!`s generate backtraces (RUST_BACKTRACE)
#backtrace = true

View File

@ -1126,6 +1126,19 @@ impl<'a> Builder<'a> {
},
);
// `dsymutil` adds time to builds on Apple platforms for no clear benefit, and also makes
// it more difficult for debuggers to find debug info. The compiler currently defaults to
// running `dsymutil` to preserve its historical default, but when compiling the compiler
// itself, we skip it by default since we know it's safe to do so in that case.
// See https://github.com/rust-lang/rust/issues/79361 for more info on this flag.
if target.contains("apple") {
if self.config.rust_run_dsymutil {
rustflags.arg("-Zrun-dsymutil=yes");
} else {
rustflags.arg("-Zrun-dsymutil=no");
}
}
if self.config.cmd.bless() {
// Bless `expect!` tests.
cargo.env("UPDATE_EXPECT", "1");

View File

@ -123,6 +123,7 @@ pub struct Config {
pub rust_debuginfo_level_std: u32,
pub rust_debuginfo_level_tools: u32,
pub rust_debuginfo_level_tests: u32,
pub rust_run_dsymutil: bool,
pub rust_rpath: bool,
pub rustc_parallel: bool,
pub rustc_default_linker: Option<String>,
@ -466,6 +467,7 @@ struct Rust {
debuginfo_level_std: Option<u32>,
debuginfo_level_tools: Option<u32>,
debuginfo_level_tests: Option<u32>,
run_dsymutil: Option<bool>,
backtrace: Option<bool>,
incremental: Option<bool>,
parallel_compiler: Option<bool>,
@ -830,6 +832,7 @@ impl Config {
debuginfo_level_std = rust.debuginfo_level_std;
debuginfo_level_tools = rust.debuginfo_level_tools;
debuginfo_level_tests = rust.debuginfo_level_tests;
config.rust_run_dsymutil = rust.run_dsymutil.unwrap_or(false);
optimize = rust.optimize;
ignore_git = rust.ignore_git;
set(&mut config.rust_new_symbol_mangling, rust.new_symbol_mangling);