Skip to content

Commit 6c41545

Browse files
Provide separate option for std debug asserts
1 parent d903a9d commit 6c41545

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

config.toml.example

+4
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,10 @@
314314
# library.
315315
#debug-assertions = false
316316

317+
# Whether or not debug assertions are enabled for the standard library.
318+
# Overrides the `debug-assertions` option, if defined.
319+
#debug-assertions-std = false
320+
317321
# Debuginfo level for most of Rust code, corresponds to the `-C debuginfo=N` option of `rustc`.
318322
# `0` - no debug info
319323
# `1` - line tables only

src/bootstrap/builder.rs

+8-1
Original file line numberDiff line numberDiff line change
@@ -916,7 +916,14 @@ impl<'a> Builder<'a> {
916916
.env("RUSTC", self.out.join("bootstrap/debug/rustc"))
917917
.env("RUSTC_REAL", self.rustc(compiler))
918918
.env("RUSTC_STAGE", stage.to_string())
919-
.env("RUSTC_DEBUG_ASSERTIONS", self.config.rust_debug_assertions.to_string())
919+
.env(
920+
"RUSTC_DEBUG_ASSERTIONS",
921+
if mode == Mode::Std {
922+
self.config.rust_debug_assertions_std.to_string()
923+
} else {
924+
self.config.rust_debug_assertions.to_string()
925+
},
926+
)
920927
.env("RUSTC_SYSROOT", &sysroot)
921928
.env("RUSTC_LIBDIR", &libdir)
922929
.env("RUSTDOC", self.out.join("bootstrap/debug/rustdoc"))

src/bootstrap/config.rs

+6
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ pub struct Config {
9898
pub rust_codegen_units: Option<u32>,
9999
pub rust_codegen_units_std: Option<u32>,
100100
pub rust_debug_assertions: bool,
101+
pub rust_debug_assertions_std: bool,
101102
pub rust_debuginfo_level_rustc: u32,
102103
pub rust_debuginfo_level_std: u32,
103104
pub rust_debuginfo_level_tools: u32,
@@ -315,6 +316,7 @@ struct Rust {
315316
codegen_units: Option<u32>,
316317
codegen_units_std: Option<u32>,
317318
debug_assertions: Option<bool>,
319+
debug_assertions_std: Option<bool>,
318320
debuginfo_level: Option<u32>,
319321
debuginfo_level_rustc: Option<u32>,
320322
debuginfo_level_std: Option<u32>,
@@ -520,6 +522,7 @@ impl Config {
520522
let mut llvm_assertions = None;
521523
let mut debug = None;
522524
let mut debug_assertions = None;
525+
let mut debug_assertions_std = None;
523526
let mut debuginfo_level = None;
524527
let mut debuginfo_level_rustc = None;
525528
let mut debuginfo_level_std = None;
@@ -562,6 +565,7 @@ impl Config {
562565
if let Some(ref rust) = toml.rust {
563566
debug = rust.debug;
564567
debug_assertions = rust.debug_assertions;
568+
debug_assertions_std = rust.debug_assertions_std;
565569
debuginfo_level = rust.debuginfo_level;
566570
debuginfo_level_rustc = rust.debuginfo_level_rustc;
567571
debuginfo_level_std = rust.debuginfo_level_std;
@@ -661,6 +665,8 @@ impl Config {
661665

662666
let default = debug == Some(true);
663667
config.rust_debug_assertions = debug_assertions.unwrap_or(default);
668+
config.rust_debug_assertions_std =
669+
debug_assertions_std.unwrap_or(config.rust_debug_assertions);
664670

665671
let with_defaults = |debuginfo_level_specific: Option<u32>| {
666672
debuginfo_level_specific.or(debuginfo_level).unwrap_or(if debug == Some(true) {

0 commit comments

Comments
 (0)