]> git.lizzy.rs Git - rust.git/blob - tests/run-pass/backtrace-api.rs
51da6cf9c4dc5842a2900ab6aa0e28eee02164f8
[rust.git] / tests / run-pass / backtrace-api.rs
1 // normalize-stderr-test ".*rustlib" -> "RUSTLIB"
2 // normalize-stderr-test "RUSTLIB/(.*):\d+:\d+ "-> "RUSTLIB/$1:LL:COL "
3
4 extern "Rust" {
5     fn miri_get_backtrace() -> Box<[*mut ()]>;
6     fn miri_resolve_frame(version: u8, ptr: *mut ()) -> MiriFrame;
7 }
8
9 #[derive(Debug)]
10 struct MiriFrame {
11     name: Box<[u8]>,
12     filename: Box<[u8]>,
13     lineno: u32,
14     colno: u32
15 }
16
17 fn main() {
18     let frames = unsafe { miri_get_backtrace() };
19     for frame in frames.into_iter() {
20         let miri_frame = unsafe { miri_resolve_frame(0, *frame) };
21         let name = String::from_utf8(miri_frame.name.into()).unwrap();
22         let filename = String::from_utf8(miri_frame.filename.into()).unwrap();
23         eprintln!("{}:{}:{} ({})", filename, miri_frame.lineno, miri_frame.colno, name);
24     }
25 }