-
Couldn't load subscription status.
- Fork 13.9k
Closed
Labels
-Zfixed-x18Unstable option: -Zfixed-x18Unstable option: -Zfixed-x18A-panicArea: Panicking machineryArea: Panicking machineryA-testsuiteArea: The testsuite used to check the correctness of rustcArea: The testsuite used to check the correctness of rustcC-enhancementCategory: An issue proposing an enhancement or a PR with one.Category: An issue proposing an enhancement or a PR with one.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Description
The standard library has a feature panic_immediate_abort which is for use with -Zbuild-std to eliminate all the panic formatting code. As a result, we have a lot of checks for that feature across the library code, to remove #[inline(never)] when that feature is enabled, so that panic helpers can be inlined and optimized away.
There are no tests for whether this actually works. I know it mostly works, because I just checked manually. What I did was something like this:
RUSTFLAGS="-Cdebuginfo=1 -Cstrip=none -Cpanic=abort -Cembed-bitcode=yes -Clto=fat" cargo +nightly install cargo-nextest -Zbuild-std=panic_abort,std -Zbuild-std-features=panic_immediate_abort --target=x86_64-unknown-linux-gnu --force
nm ~/.cargo/bin/cargo-nextest | grep panic | grep rustfilt
What comes out is this:
00000000002a1410 t color_eyre::config::panic_verbosity
00000000002a12f0 t color_eyre::config::PanicHook::into_panic_hook::{{closure}}
000000000091e568 b std::panicking::HOOK
00000000002a1110 t core::ptr::drop_in_place<color_eyre::config::PanicHook::into_panic_hook::{{closure}}>
That looks acceptable to me.
Someone should use this general procedure to build a test.
- Put together from scratch or find a small Cargo project, and build it using the above flags except without
-Zbuild-std-features - Write a check that the binary that comes out has everything in a list of panic symbols (the bouds check ones, the ones for
Vec::insertandVec::remove, the ones forRefCell, maybe others?) - Rebuild the project but with
-Zbuild-std-features=panic_immediate_abortand check that all those symbols are gone
thosakwe
Metadata
Metadata
Assignees
Labels
-Zfixed-x18Unstable option: -Zfixed-x18Unstable option: -Zfixed-x18A-panicArea: Panicking machineryArea: Panicking machineryA-testsuiteArea: The testsuite used to check the correctness of rustcArea: The testsuite used to check the correctness of rustcC-enhancementCategory: An issue proposing an enhancement or a PR with one.Category: An issue proposing an enhancement or a PR with one.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.