Skip to content

Commit fa5b936

Browse files
committed
Update functions for Miri changes
1 parent 085ee70 commit fa5b936

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

src/backtrace/miri.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ use std::vec::Vec;
44
use std::boxed::Box;
55

66
extern "Rust" {
7-
fn miri_get_backtrace() -> Box<[*mut ()]>;
8-
fn miri_resolve_frame(version: u8, ptr: *mut ()) -> MiriFrame;
7+
fn miri_get_backtrace(flags: u64) -> Box<[*mut ()]>;
8+
fn miri_resolve_frame(ptr: *mut (), flags: u64) -> MiriFrame;
99
}
1010

1111
#[derive(Debug)]
@@ -27,9 +27,8 @@ pub struct Frame {
2727
pub inner: MiriFrame
2828
}
2929

30-
// Miri is single threaded, and the raw
31-
// pointer isn't really a pointer (it's a magic value
32-
// returned by Miri)
30+
// SAFETY: Miri guarantees that the returned pointer
31+
// can be used from any thread.
3332
unsafe impl Send for Frame {}
3433
unsafe impl Sync for Frame {}
3534

@@ -52,21 +51,22 @@ impl Frame {
5251
}
5352

5453
pub fn trace<F: FnMut(&super::Frame) -> bool>(cb: F) {
55-
// Miri is single threaded
54+
// SAFETY: Miri guarnatees that the backtrace API functions
55+
// can be called from any thread.
5656
unsafe { trace_unsynchronized(cb) };
5757
}
5858

5959

6060
pub fn resolve_addr(ptr: *mut c_void) -> Frame {
61-
let frame: MiriFrame = unsafe { miri_resolve_frame(0, ptr as *mut ()) };
61+
let frame: MiriFrame = unsafe { miri_resolve_frame(ptr as *mut (), 0) };
6262
Frame {
6363
addr: ptr,
6464
inner: frame
6565
}
6666
}
6767

6868
pub unsafe fn trace_unsynchronized<F: FnMut(&super::Frame) -> bool>(mut cb: F) {
69-
let frames = miri_get_backtrace();
69+
let frames = miri_get_backtrace(0);
7070
for ptr in frames.iter() {
7171
let frame = resolve_addr(*ptr as *mut c_void);
7272
cb(&super::Frame {

0 commit comments

Comments
 (0)