diff options
| author | bors <bors@rust-lang.org> | 2025-09-29 01:32:14 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2025-09-29 01:32:14 +0000 |
| commit | 772f380092b30680313b70a622cafc17f03e6bff (patch) | |
| tree | e194bbeaa6f1338828018edeb7b3961d5629d988 /compiler/rustc_codegen_llvm/src/consts.rs | |
| parent | f957826bff7a68b267ce75b1ea56352aed0cca0a (diff) | |
| parent | 660a3486fc6da2c3599a167d73d849178f98bc17 (diff) | |
| download | rust-772f380092b30680313b70a622cafc17f03e6bff.tar.gz rust-772f380092b30680313b70a622cafc17f03e6bff.zip | |
Auto merge of #147090 - Noratrieb:immediate-abort-stack-overflow, r=joboet
Skip stack overflow handler for panic=immediate-abort std installs guard pages and a signal handler to ensure that stackoverflows 1) terminate abruptly and 2) print an nice message. Even for panic=immediate-abort, 1) is desirable, we don't want silent data corruption there. But 2) is completely unnecessary, as users deliberately *don't* want nice messages, they want minimum binary size. Therefore, skip the entire guard signal handler setup, which saves a lot of bytes. I tested this with a hello world binary using fat LTO, build-std, panic=immediate-abort, opt-level=s, strip=debuginfo. `size` reports significant savings: ``` text data bss dec hex filename 15252 1032 104 16388 4004 tiny-before 6881 964 48 7893 1ed5 tiny-after2 ``` `nm -U` goes from 71 to 56, getting rid of a bunch of stack overflow related symbols. The disk size goes from `31k` to `24k`. The impact on the error message is minimal, as the message was already missing. before: ``` fish: Job 1, './tiny-so-before' terminated by signal SIGABRT (Abort) ``` after: ``` fish: Job 1, './tiny-so-after' terminated by signal SIGSEGV (Address boundary error) ``` I didn't test the Windows part, but it likely also has savings.
Diffstat (limited to 'compiler/rustc_codegen_llvm/src/consts.rs')
0 files changed, 0 insertions, 0 deletions
