1
Fork 0

Move personality functions to std

These were previously in the panic_unwind crate with dummy stubs in the
panic_abort crate. However it turns out that this is insufficient: we
still need a proper personality function even with -C panic=abort to
handle the following cases:

1) `extern "C-unwind"` still needs to catch foreign exceptions with -C
panic=abort to turn them into aborts. This requires landing pads and a
personality function.

2) ARM EHABI uses the personality function when creating backtraces.
The dummy personality function in panic_abort was causing backtrace
generation to get stuck in a loop since the personality function is
responsible for advancing the unwind state to the next frame.
This commit is contained in:
Amanieu d'Antras 2022-02-09 14:11:51 +00:00
parent db94dbc597
commit 5ff0876694
12 changed files with 347 additions and 277 deletions

View file

@ -591,6 +591,7 @@ pub mod alloc;
// Private support modules
mod panicking;
mod personality;
#[path = "../../backtrace/src/lib.rs"]
#[allow(dead_code, unused_attributes)]