Expand description
Panic runtime for Miri.
The core pieces of the runtime are:
- An implementation of
__rust_maybe_catch_panic
that pushes the invoked stack frame with some extra metadata derived from the panic-catching arguments of__rust_maybe_catch_panic
. - A hack in
libpanic_unwind
that calls themiri_start_panic
intrinsic instead of the target-native panic runtime. (This lives in the rustc repo.) - An implementation of
miri_start_panic
that stores its argument (the panic payload), and then immediately returns, but on the unwind edge (not the normal return edge), thus initiating unwinding. - A hook executed each time a frame is popped, such that if the frame pushed by
__rust_maybe_catch_panic
gets popped during unwinding, we take the panic payload and store it according to the extra metadata we remembered when pushing said frame.
Structs
- Holds all of the relevant data for when unwinding hits a
try
frame.