| #[repr(C)] |
| struct MiriFrame { |
| name_len: usize, |
| filename_len: usize, |
| lineno: u32, |
| colno: u32, |
| fn_ptr: *mut (), |
| } |
| |
| extern "Rust" { |
| fn miri_backtrace_size(flags: u64) -> usize; |
| fn miri_get_backtrace(flags: u64, buf: *mut *mut ()); |
| fn miri_resolve_frame(ptr: *mut (), flags: u64) -> MiriFrame; |
| } |
| |
| fn main() { |
| unsafe { |
| let mut buf = vec![std::ptr::null_mut(); miri_backtrace_size(0)]; |
| |
| miri_get_backtrace(1, buf.as_mut_ptr()); |
| |
| // miri_resolve_frame will error from an invalid backtrace before it will from invalid flags |
| miri_resolve_frame(buf[0], 2); //~ ERROR: unsupported operation: unknown `miri_resolve_frame` flags 2 |
| } |
| } |