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.