diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2017-07-16 02:02:34 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2017-07-16 02:02:34 +0300 |
| commit | 5f37110e5e1ae14a19aa7ee036f27e47e08ee73d (patch) | |
| tree | f8553329d2b82d1ed99c8c40c5deff87a4a04666 | |
| parent | 086eaa78ea70075abe4e6b7fb9dc76259867b4be (diff) | |
Compile `compiler_builtins` with `abort` panic strategy
| -rw-r--r-- | src/bootstrap/bin/rustc.rs | 7 | ||||
| -rw-r--r-- | src/librustc/middle/dependency_format.rs | 3 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/bootstrap/bin/rustc.rs b/src/bootstrap/bin/rustc.rs index 497a5ab6c53..134406b1acd 100644 --- a/src/bootstrap/bin/rustc.rs +++ b/src/bootstrap/bin/rustc.rs @@ -150,7 +150,12 @@ fn main() { // This... is a bit of a hack how we detect this. Ideally this // information should be encoded in the crate I guess? Would likely // require an RFC amendment to RFC 1513, however. - if crate_name == "panic_abort" { + // + // `compiler_builtins` are unconditionally compiled with panic=abort to + // workaround undefined references to `rust_eh_unwind_resume` generated + // otherwise, see issue https://github.com/rust-lang/rust/issues/43095. + if crate_name == "panic_abort" || + crate_name == "compiler_builtins" && stage != "0" { cmd.arg("-C").arg("panic=abort"); } diff --git a/src/librustc/middle/dependency_format.rs b/src/librustc/middle/dependency_format.rs index 9af93d0d494..837ab4fd4a3 100644 --- a/src/librustc/middle/dependency_format.rs +++ b/src/librustc/middle/dependency_format.rs @@ -396,7 +396,8 @@ fn verify_ok<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, list: &[Linkage]) { } let cnum = CrateNum::new(i + 1); let found_strategy = sess.cstore.panic_strategy(cnum); - if desired_strategy == found_strategy { + let is_compiler_builtins = sess.cstore.is_compiler_builtins(cnum); + if is_compiler_builtins || desired_strategy == found_strategy { continue } |
