about summary refs log tree commit diff
path: root/library/std/src/personality/dwarf
AgeCommit message (Collapse)AuthorLines
2023-07-09move personality to sysGus Caplan-300/+0
2023-05-07Parse catch filter in personality functionGary Guo-1/+4
2023-01-09Add commentKai Luo-1/+3
2023-01-09Move to intepret_cs_actionKai Luo-24/+17
2023-01-09Add commentsKai Luo-0/+2
2023-01-09Also check ttype_index when using SJLJKai Luo-2/+10
2023-01-04[LSDA] Take ttype_index into account when taking actionKai Luo-2/+10
If cs_action != 0, we should check the ttype_index field in action record. If ttype_index == 0, a clean up action is taken.
2022-11-20enable fuzzy_provenance_casts lint in libstdRalf Jung-3/+4
2022-10-05Interpret EH actions properlyGary Guo-3/+2
The EH actions stored in the LSDA follows the format of GCC except table (even for LLVM-generated code). An missing action in the table is the encoding for `Terminate`, see [1]. The currently code interprets it as `None`, as a workaround for #35011, an issue that seems to occur in LLVM 3.7 and not after 3.9. These are very old versions of LLVM and we don't support them anymore, so remove this workaround and interpret them properly. Note that LLVM currently does not emit any `Terminate` actions, but GCC does. Although GCC backend currently doesn't do unwinding, removing it preemptively would prevent future developers from wasting time to figure out what's wrong. [1]: https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/libsupc%2B%2B/eh_personality.cc#L522-L526
2022-08-23Move personality functions to stdAmanieu d'Antras-0/+284
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.