Rollup merge of #140254 - bjorn3:rustc_panic_abort_abort, r=petrochenkov
Pass -Cpanic=abort for the panic_abort crate The panic_abort crate must be compiled with panic=abort, but cargo doesn't allow setting the panic strategy for a single crate the usual way using `panic="abort"`, but luckily per-package rustflags do allow this. Bootstrap previously handled this in its rustc wrapper, but for example the build systems of cg_clif and cg_gcc don't use the rustc wrapper, so they would either need to add one, patch the standard library or be unable to build a sysroot suitable for both panic=abort and panic=unwind (as is currently the case). Required for https://github.com/rust-lang/rustc_codegen_cranelift/issues/1567
This commit is contained in:
commit
aef8a76ce0
2 changed files with 10 additions and 12 deletions
|
|
@ -1,3 +1,5 @@
|
|||
cargo-features = ["profile-rustflags"]
|
||||
|
||||
[workspace]
|
||||
resolver = "1"
|
||||
members = [
|
||||
|
|
@ -44,6 +46,14 @@ object.debug = 0
|
|||
rustc-demangle.debug = 0
|
||||
rustc-demangle.opt-level = "s"
|
||||
|
||||
# panic_abort must always be compiled with panic=abort, even when the rest of the
|
||||
# sysroot is panic=unwind.
|
||||
[profile.dev.package.panic_abort]
|
||||
rustflags = ["-Cpanic=abort"]
|
||||
|
||||
[profile.release.package.panic_abort]
|
||||
rustflags = ["-Cpanic=abort"]
|
||||
|
||||
[patch.crates-io]
|
||||
# See comments in `library/rustc-std-workspace-core/README.md` for what's going on
|
||||
# here
|
||||
|
|
|
|||
|
|
@ -151,18 +151,6 @@ fn main() {
|
|||
cmd.arg("--sysroot").arg(&sysroot);
|
||||
}
|
||||
|
||||
// If we're compiling specifically the `panic_abort` crate then we pass
|
||||
// the `-C panic=abort` option. Note that we do not do this for any
|
||||
// other crate intentionally as this is the only crate for now that we
|
||||
// ship with panic=abort.
|
||||
//
|
||||
// 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 == Some("panic_abort") {
|
||||
cmd.arg("-C").arg("panic=abort");
|
||||
}
|
||||
|
||||
let crate_type = parse_value_from_args(&orig_args, "--crate-type");
|
||||
// `-Ztls-model=initial-exec` must not be applied to proc-macros, see
|
||||
// issue https://github.com/rust-lang/rust/issues/100530
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue