about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBen Kimock <kimockb@gmail.com>2022-10-14 20:04:27 -0400
committerBen Kimock <kimockb@gmail.com>2022-10-14 20:04:27 -0400
commit26186d7ff247b74287f21dfebcd08d0d5e0152aa (patch)
tree89469d966a937b6624d90409351ad4daaf66a40c
parent79cd6f38f3546505f5e7a6e5ce4f696ea6b19d19 (diff)
downloadrust-26186d7ff247b74287f21dfebcd08d0d5e0152aa.tar.gz
rust-26186d7ff247b74287f21dfebcd08d0d5e0152aa.zip
Add a test
-rw-r--r--src/tools/miri/tests/pass/stacked-borrows/stack-printing.rs29
-rw-r--r--src/tools/miri/tests/pass/stacked-borrows/stack-printing.stdout5
2 files changed, 34 insertions, 0 deletions
diff --git a/src/tools/miri/tests/pass/stacked-borrows/stack-printing.rs b/src/tools/miri/tests/pass/stacked-borrows/stack-printing.rs
new file mode 100644
index 00000000000..8d96a2e1ca9
--- /dev/null
+++ b/src/tools/miri/tests/pass/stacked-borrows/stack-printing.rs
@@ -0,0 +1,29 @@
+use std::{
+    alloc::{self, Layout},
+    mem::ManuallyDrop,
+};
+
+extern "Rust" {
+    fn miri_get_alloc_id(ptr: *const u8) -> u64;
+    fn miri_print_stacks(alloc_id: u64);
+}
+
+fn main() {
+    let ptr = unsafe { alloc::alloc(Layout::new::<u8>()) };
+    let alloc_id = unsafe { miri_get_alloc_id(ptr) };
+    unsafe { miri_print_stacks(alloc_id) };
+
+    assert!(!ptr.is_null());
+    unsafe { miri_print_stacks(alloc_id) };
+
+    unsafe { *ptr = 42 };
+    unsafe { miri_print_stacks(alloc_id) };
+
+    let _b = unsafe { ManuallyDrop::new(Box::from_raw(ptr)) };
+    unsafe { miri_print_stacks(alloc_id) };
+
+    let _ptr = unsafe { &*ptr };
+    unsafe { miri_print_stacks(alloc_id) };
+
+    unsafe { alloc::dealloc(ptr, Layout::new::<u8>()) };
+}
diff --git a/src/tools/miri/tests/pass/stacked-borrows/stack-printing.stdout b/src/tools/miri/tests/pass/stacked-borrows/stack-printing.stdout
new file mode 100644
index 00000000000..6d4f15453d2
--- /dev/null
+++ b/src/tools/miri/tests/pass/stacked-borrows/stack-printing.stdout
@@ -0,0 +1,5 @@
+0..1: [ SharedReadWrite<2794> ]
+0..1: [ SharedReadWrite<2794> ]
+0..1: [ SharedReadWrite<2794> ]
+0..1: [ SharedReadWrite<2794> Unique<2822> Unique<2823> Unique<2824> Unique<2828> Unique<2830> ]
+0..1: [ SharedReadWrite<2794> Disabled<2822> Disabled<2823> Disabled<2824> Disabled<2828> Disabled<2830> SharedReadOnly<2832> ]