| #![no_std] |
| #![no_main] |
| //@compile-flags: -Zmiri-track-alloc-id=19 -Zmiri-track-alloc-accesses -Cpanic=abort |
| //@normalize-stderr-test: "id 19" -> "id $$ALLOC" |
| //@only-target: linux # alloc IDs differ between OSes (due to extern static allocations) |
| |
| extern "Rust" { |
| fn miri_alloc(size: usize, align: usize) -> *mut u8; |
| fn miri_dealloc(ptr: *mut u8, size: usize, align: usize); |
| } |
| |
| #[no_mangle] |
| fn miri_start(_argc: isize, _argv: *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 {} |
| } |