diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs index d04b9ac083ce5..0aff0158c615b 100644 --- a/src/librustc/session/mod.rs +++ b/src/librustc/session/mod.rs @@ -678,6 +678,13 @@ impl Session { } } + pub fn crt_debug_feature(&self) -> bool { + // Since the debug crt is opt-in only, checking for the negative feature + // does not make sense. + let requested_features = self.opts.cg.target_feature.split(','); + requested_features.clone().any(|r| r == "+crt-debug") + } + pub fn must_not_eliminate_frame_pointers(&self) -> bool { // "mcount" function relies on stack pointer. // See https://sourceware.org/binutils/docs/gprof/Implementation.html diff --git a/src/librustc_interface/util.rs b/src/librustc_interface/util.rs index a86d3cc43948d..dc642e36e8af5 100644 --- a/src/librustc_interface/util.rs +++ b/src/librustc_interface/util.rs @@ -80,6 +80,10 @@ pub fn add_configuration( if sess.crt_static_feature() { cfg.insert((tf, Some(Symbol::intern("crt-static")))); } + + if sess.crt_debug_feature() { + cfg.insert((tf, Some(Symbol::intern("crt-debug")))); + } } pub fn create_session(