interpret: do not call machine read hooks during validation
This commit is contained in:
parent
b054da8155
commit
bf47df8b0b
6 changed files with 107 additions and 12 deletions
25
src/tools/miri/tests/pass/alloc-access-tracking.rs
Normal file
25
src/tools/miri/tests/pass/alloc-access-tracking.rs
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
#![feature(start)]
|
||||
#![no_std]
|
||||
//@compile-flags: -Zmiri-track-alloc-id=17 -Zmiri-track-alloc-accesses -Cpanic=abort
|
||||
//@only-target-linux: alloc IDs differ between OSes for some reason
|
||||
|
||||
extern "Rust" {
|
||||
fn miri_alloc(size: usize, align: usize) -> *mut u8;
|
||||
fn miri_dealloc(ptr: *mut u8, size: usize, align: usize);
|
||||
}
|
||||
|
||||
#[start]
|
||||
fn start(_: isize, _: *const *const u8) -> isize {
|
||||
unsafe {
|
||||
let ptr = miri_alloc(123, 1);
|
||||
*ptr = 42; // Crucially, only a write is printed here, no read!
|
||||
assert_eq!(*ptr, 42);
|
||||
miri_dealloc(ptr, 123, 1);
|
||||
}
|
||||
0
|
||||
}
|
||||
|
||||
#[panic_handler]
|
||||
fn panic_handler(_: &core::panic::PanicInfo) -> ! {
|
||||
loop {}
|
||||
}
|
||||
37
src/tools/miri/tests/pass/alloc-access-tracking.stderr
Normal file
37
src/tools/miri/tests/pass/alloc-access-tracking.stderr
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
note: tracking was triggered
|
||||
--> $DIR/alloc-access-tracking.rs:LL:CC
|
||||
|
|
||||
LL | let ptr = miri_alloc(123, 1);
|
||||
| ^^^^^^^^^^^^^^^^^^ created Miri bare-metal heap allocation of 123 bytes (alignment ALIGN bytes) with id 17
|
||||
|
|
||||
= note: BACKTRACE:
|
||||
= note: inside `start` at $DIR/alloc-access-tracking.rs:LL:CC
|
||||
|
||||
note: tracking was triggered
|
||||
--> $DIR/alloc-access-tracking.rs:LL:CC
|
||||
|
|
||||
LL | *ptr = 42; // Crucially, only a write is printed here, no read!
|
||||
| ^^^^^^^^^ write access to allocation with id 17
|
||||
|
|
||||
= note: BACKTRACE:
|
||||
= note: inside `start` at $DIR/alloc-access-tracking.rs:LL:CC
|
||||
|
||||
note: tracking was triggered
|
||||
--> $DIR/alloc-access-tracking.rs:LL:CC
|
||||
|
|
||||
LL | assert_eq!(*ptr, 42);
|
||||
| ^^^^^^^^^^^^^^^^^^^^ read access to allocation with id 17
|
||||
|
|
||||
= note: BACKTRACE:
|
||||
= note: inside `start` at RUSTLIB/core/src/macros/mod.rs:LL:CC
|
||||
= note: this note originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
note: tracking was triggered
|
||||
--> $DIR/alloc-access-tracking.rs:LL:CC
|
||||
|
|
||||
LL | miri_dealloc(ptr, 123, 1);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ freed allocation with id 17
|
||||
|
|
||||
= note: BACKTRACE:
|
||||
= note: inside `start` at $DIR/alloc-access-tracking.rs:LL:CC
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue