X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=tests%2Frun-pass%2Fbacktrace-api.rs;h=19169060038e07d5aee763e8febdd61e9790def5;hb=be51e6bd07c10ff350350fe05f2888c4ce3a08a0;hp=eaf29abfd9f48d16d864367ea8b68e0cfc0f0d1e;hpb=9d4c80e787f400e0ac36685b51460e52c1f31412;p=rust.git diff --git a/tests/run-pass/backtrace-api.rs b/tests/run-pass/backtrace-api.rs index eaf29abfd9f..19169060038 100644 --- a/tests/run-pass/backtrace-api.rs +++ b/tests/run-pass/backtrace-api.rs @@ -2,20 +2,6 @@ // normalize-stderr-test "RUSTLIB/(.*):\d+:\d+ "-> "RUSTLIB/$1:LL:COL " // normalize-stderr-test "::<.*>" -> "" -extern "Rust" { - fn miri_get_backtrace(flags: u64) -> Box<[*mut ()]>; - fn miri_resolve_frame(ptr: *mut (), flags: u64) -> MiriFrame; -} - -#[derive(Debug)] -#[repr(C)] -struct MiriFrame { - name: Box<[u8]>, - filename: Box<[u8]>, - lineno: u32, - colno: u32 -} - #[inline(never)] fn func_a() -> Box<[*mut ()]> { func_b::() } #[inline(never)] fn func_b() -> Box<[*mut ()]> { func_c() } @@ -34,6 +20,10 @@ fn main() { let name = String::from_utf8(miri_frame.name.into()).unwrap(); let filename = String::from_utf8(miri_frame.filename.into()).unwrap(); + if name == "func_a" { + assert_eq!(func_a as *mut (), miri_frame.fn_ptr); + } + // Print every frame to stderr. let out = format!("{}:{}:{} ({})", filename, miri_frame.lineno, miri_frame.colno, name); eprintln!("{}", out); @@ -45,3 +35,22 @@ fn main() { } } } + +// This goes at the bottom of the file so that we can change it +// without disturbing line numbers of the functions in the backtrace. + +extern "Rust" { + fn miri_get_backtrace(flags: u64) -> Box<[*mut ()]>; + fn miri_resolve_frame(ptr: *mut (), flags: u64) -> MiriFrame; +} + +#[derive(Debug)] +#[repr(C)] +struct MiriFrame { + name: Box<[u8]>, + filename: Box<[u8]>, + lineno: u32, + colno: u32, + fn_ptr: *mut (), +} +