mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 08:13:41 +00:00
[bootstrap] Move the split-debuginfo setting to the per-target section
This commit is contained in:
parent
6554a5645a
commit
0e354c98a8
@ -543,23 +543,15 @@
|
|||||||
# FIXME(#61117): Some tests fail when this option is enabled.
|
# FIXME(#61117): Some tests fail when this option is enabled.
|
||||||
#debuginfo-level-tests = 0
|
#debuginfo-level-tests = 0
|
||||||
|
|
||||||
# Should rustc be build with split debuginfo? Default is platform dependent.
|
# Should rustc and the standard library be built with split debuginfo? Default
|
||||||
# Valid values are the same as those accepted by `-C split-debuginfo`
|
# is platform dependent.
|
||||||
# (`off`/`unpacked`/`packed`).
|
|
||||||
#
|
#
|
||||||
# On Linux, split debuginfo is disabled by default.
|
# This field is deprecated, use `target.<triple>.split-debuginfo` instead.
|
||||||
#
|
#
|
||||||
# On Apple platforms, unpacked split debuginfo is used by default. Unpacked
|
# The value specified here is only used when targeting the `build.build` triple,
|
||||||
# debuginfo does not run `dsymutil`, which packages debuginfo from disparate
|
# and is overridden by `target.<triple>.split-debuginfo` if specified.
|
||||||
# object files into a single `.dSYM` file. `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.
|
|
||||||
#
|
#
|
||||||
# On Windows platforms, packed debuginfo is the only supported option,
|
#split-debuginfo = see target.<triple>.split-debuginfo
|
||||||
# producing a `.pdb` file.
|
|
||||||
#split-debuginfo = if linux { off } else if windows { packed } else if apple { unpacked }
|
|
||||||
|
|
||||||
# Whether or not `panic!`s generate backtraces (RUST_BACKTRACE)
|
# Whether or not `panic!`s generate backtraces (RUST_BACKTRACE)
|
||||||
#backtrace = true
|
#backtrace = true
|
||||||
@ -773,6 +765,26 @@
|
|||||||
# Setting this will override the `use-lld` option for Rust code when targeting MSVC.
|
# Setting this will override the `use-lld` option for Rust code when targeting MSVC.
|
||||||
#linker = "cc" (path)
|
#linker = "cc" (path)
|
||||||
|
|
||||||
|
# Should rustc and the standard library be built with split debuginfo? Default
|
||||||
|
# is platform dependent.
|
||||||
|
#
|
||||||
|
# Valid values are the same as those accepted by `-C split-debuginfo`
|
||||||
|
# (`off`/`unpacked`/`packed`).
|
||||||
|
#
|
||||||
|
# On Linux, split debuginfo is disabled by default.
|
||||||
|
#
|
||||||
|
# On Apple platforms, unpacked split debuginfo is used by default. Unpacked
|
||||||
|
# debuginfo does not run `dsymutil`, which packages debuginfo from disparate
|
||||||
|
# object files into a single `.dSYM` file. `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.
|
||||||
|
#
|
||||||
|
# On Windows platforms, packed debuginfo is the only supported option,
|
||||||
|
# producing a `.pdb` file.
|
||||||
|
#split-debuginfo = if linux { off } else if windows { packed } else if apple { unpacked }
|
||||||
|
|
||||||
# Path to the `llvm-config` binary of the installation of a custom LLVM to link
|
# Path to the `llvm-config` binary of the installation of a custom LLVM to link
|
||||||
# against. Note that if this is specified we don't compile LLVM at all for this
|
# against. Note that if this is specified we don't compile LLVM at all for this
|
||||||
# target.
|
# target.
|
||||||
|
@ -1731,15 +1731,16 @@ impl<'a> Builder<'a> {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let split_debuginfo = self.config.split_debuginfo(target);
|
||||||
let split_debuginfo_is_stable = target.contains("linux")
|
let split_debuginfo_is_stable = target.contains("linux")
|
||||||
|| target.contains("apple")
|
|| target.contains("apple")
|
||||||
|| (target.is_msvc() && self.config.rust_split_debuginfo == SplitDebuginfo::Packed)
|
|| (target.is_msvc() && split_debuginfo == SplitDebuginfo::Packed)
|
||||||
|| (target.is_windows() && self.config.rust_split_debuginfo == SplitDebuginfo::Off);
|
|| (target.is_windows() && split_debuginfo == SplitDebuginfo::Off);
|
||||||
|
|
||||||
if !split_debuginfo_is_stable {
|
if !split_debuginfo_is_stable {
|
||||||
rustflags.arg("-Zunstable-options");
|
rustflags.arg("-Zunstable-options");
|
||||||
}
|
}
|
||||||
match self.config.rust_split_debuginfo {
|
match split_debuginfo {
|
||||||
SplitDebuginfo::Packed => rustflags.arg("-Csplit-debuginfo=packed"),
|
SplitDebuginfo::Packed => rustflags.arg("-Csplit-debuginfo=packed"),
|
||||||
SplitDebuginfo::Unpacked => rustflags.arg("-Csplit-debuginfo=unpacked"),
|
SplitDebuginfo::Unpacked => rustflags.arg("-Csplit-debuginfo=unpacked"),
|
||||||
SplitDebuginfo::Off => rustflags.arg("-Csplit-debuginfo=off"),
|
SplitDebuginfo::Off => rustflags.arg("-Csplit-debuginfo=off"),
|
||||||
|
@ -256,7 +256,7 @@ pub struct Config {
|
|||||||
pub rust_debuginfo_level_std: DebuginfoLevel,
|
pub rust_debuginfo_level_std: DebuginfoLevel,
|
||||||
pub rust_debuginfo_level_tools: DebuginfoLevel,
|
pub rust_debuginfo_level_tools: DebuginfoLevel,
|
||||||
pub rust_debuginfo_level_tests: DebuginfoLevel,
|
pub rust_debuginfo_level_tests: DebuginfoLevel,
|
||||||
pub rust_split_debuginfo: SplitDebuginfo,
|
pub rust_split_debuginfo_for_build_triple: Option<SplitDebuginfo>, // FIXME: Deprecated field. Remove in Q3'24.
|
||||||
pub rust_rpath: bool,
|
pub rust_rpath: bool,
|
||||||
pub rust_strip: bool,
|
pub rust_strip: bool,
|
||||||
pub rust_frame_pointers: bool,
|
pub rust_frame_pointers: bool,
|
||||||
@ -574,6 +574,7 @@ pub struct Target {
|
|||||||
pub ranlib: Option<PathBuf>,
|
pub ranlib: Option<PathBuf>,
|
||||||
pub default_linker: Option<PathBuf>,
|
pub default_linker: Option<PathBuf>,
|
||||||
pub linker: Option<PathBuf>,
|
pub linker: Option<PathBuf>,
|
||||||
|
pub split_debuginfo: Option<SplitDebuginfo>,
|
||||||
pub sanitizers: Option<bool>,
|
pub sanitizers: Option<bool>,
|
||||||
pub profiler: Option<StringOrBool>,
|
pub profiler: Option<StringOrBool>,
|
||||||
pub rpath: Option<bool>,
|
pub rpath: Option<bool>,
|
||||||
@ -1133,6 +1134,7 @@ define_config! {
|
|||||||
ranlib: Option<String> = "ranlib",
|
ranlib: Option<String> = "ranlib",
|
||||||
default_linker: Option<PathBuf> = "default-linker",
|
default_linker: Option<PathBuf> = "default-linker",
|
||||||
linker: Option<String> = "linker",
|
linker: Option<String> = "linker",
|
||||||
|
split_debuginfo: Option<String> = "split-debuginfo",
|
||||||
llvm_config: Option<String> = "llvm-config",
|
llvm_config: Option<String> = "llvm-config",
|
||||||
llvm_has_rust_patches: Option<bool> = "llvm-has-rust-patches",
|
llvm_has_rust_patches: Option<bool> = "llvm-has-rust-patches",
|
||||||
llvm_filecheck: Option<String> = "llvm-filecheck",
|
llvm_filecheck: Option<String> = "llvm-filecheck",
|
||||||
@ -1627,11 +1629,18 @@ impl Config {
|
|||||||
debuginfo_level_tools = debuginfo_level_tools_toml;
|
debuginfo_level_tools = debuginfo_level_tools_toml;
|
||||||
debuginfo_level_tests = debuginfo_level_tests_toml;
|
debuginfo_level_tests = debuginfo_level_tests_toml;
|
||||||
|
|
||||||
config.rust_split_debuginfo = split_debuginfo
|
config.rust_split_debuginfo_for_build_triple = split_debuginfo
|
||||||
.as_deref()
|
.as_deref()
|
||||||
.map(SplitDebuginfo::from_str)
|
.map(SplitDebuginfo::from_str)
|
||||||
.map(|v| v.expect("invalid value for rust.split_debuginfo"))
|
.map(|v| v.expect("invalid value for rust.split-debuginfo"));
|
||||||
.unwrap_or(SplitDebuginfo::default_for_platform(config.build));
|
|
||||||
|
if config.rust_split_debuginfo_for_build_triple.is_some() {
|
||||||
|
println!(
|
||||||
|
"WARNING: specifying `rust.split-debuginfo` is deprecated, use `target.{}.split-debuginfo` instead",
|
||||||
|
config.build
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
optimize = optimize_toml;
|
optimize = optimize_toml;
|
||||||
omit_git_hash = omit_git_hash_toml;
|
omit_git_hash = omit_git_hash_toml;
|
||||||
config.rust_new_symbol_mangling = new_symbol_mangling;
|
config.rust_new_symbol_mangling = new_symbol_mangling;
|
||||||
@ -1853,10 +1862,11 @@ impl Config {
|
|||||||
if let Some(ref s) = cfg.llvm_filecheck {
|
if let Some(ref s) = cfg.llvm_filecheck {
|
||||||
target.llvm_filecheck = Some(config.src.join(s));
|
target.llvm_filecheck = Some(config.src.join(s));
|
||||||
}
|
}
|
||||||
target.llvm_libunwind = cfg
|
target.llvm_libunwind = cfg.llvm_libunwind.as_ref().map(|v| {
|
||||||
.llvm_libunwind
|
v.parse().unwrap_or_else(|_| {
|
||||||
.as_ref()
|
panic!("failed to parse target.{triple}.llvm-libunwind")
|
||||||
.map(|v| v.parse().expect("failed to parse rust.llvm-libunwind"));
|
})
|
||||||
|
});
|
||||||
if let Some(s) = cfg.no_std {
|
if let Some(s) = cfg.no_std {
|
||||||
target.no_std = s;
|
target.no_std = s;
|
||||||
}
|
}
|
||||||
@ -1893,6 +1903,12 @@ impl Config {
|
|||||||
}).collect());
|
}).collect());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
target.split_debuginfo = cfg.split_debuginfo.as_ref().map(|v| {
|
||||||
|
v.parse().unwrap_or_else(|_| {
|
||||||
|
panic!("invalid value for target.{triple}.split-debuginfo")
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
config.target_config.insert(TargetSelection::from_user(&triple), target);
|
config.target_config.insert(TargetSelection::from_user(&triple), target);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2291,6 +2307,16 @@ impl Config {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn split_debuginfo(&self, target: TargetSelection) -> SplitDebuginfo {
|
||||||
|
self.target_config
|
||||||
|
.get(&target)
|
||||||
|
.and_then(|t| t.split_debuginfo)
|
||||||
|
.or_else(|| {
|
||||||
|
if self.build == target { self.rust_split_debuginfo_for_build_triple } else { None }
|
||||||
|
})
|
||||||
|
.unwrap_or_else(|| SplitDebuginfo::default_for_platform(target))
|
||||||
|
}
|
||||||
|
|
||||||
pub fn submodules(&self, rust_info: &GitInfo) -> bool {
|
pub fn submodules(&self, rust_info: &GitInfo) -> bool {
|
||||||
self.submodules.unwrap_or(rust_info.is_managed_git_subrepository())
|
self.submodules.unwrap_or(rust_info.is_managed_git_subrepository())
|
||||||
}
|
}
|
||||||
|
@ -151,4 +151,9 @@ pub const CONFIG_CHANGE_HISTORY: &[ChangeInfo] = &[
|
|||||||
severity: ChangeSeverity::Info,
|
severity: ChangeSeverity::Info,
|
||||||
summary: "New option `rust.llvm-bitcode-linker` that will build the llvm-bitcode-linker.",
|
summary: "New option `rust.llvm-bitcode-linker` that will build the llvm-bitcode-linker.",
|
||||||
},
|
},
|
||||||
|
ChangeInfo {
|
||||||
|
change_id: 121754,
|
||||||
|
severity: ChangeSeverity::Warning,
|
||||||
|
summary: "`rust.split-debuginfo` has been moved to `target.<triple>.split-debuginfo` and its default value is determined for each target individually.",
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
Loading…
Reference in New Issue
Block a user