From 5338a16018878f27ac15bb353a7d1d719b3ddcd6 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sun, 18 Jul 2021 12:47:04 +0200 Subject: [PATCH 1/3] adjust for ERR_ON_PARTIAL_PTR_OVERWRITE --- src/machine.rs | 4 ++++ ..._makes_the_rest_uninit.rs => pointer_partial_overwrite.rs} | 3 +++ .../{pointer_byte_read.rs => pointer_partial_read.rs} | 2 ++ 3 files changed, 9 insertions(+) rename tests/compile-fail/{overwriting_part_of_relocation_makes_the_rest_uninit.rs => pointer_partial_overwrite.rs} (82%) rename tests/compile-fail/{pointer_byte_read.rs => pointer_partial_read.rs} (67%) diff --git a/src/machine.rs b/src/machine.rs index 90e3d06aba..03f53033b7 100644 --- a/src/machine.rs +++ b/src/machine.rs @@ -128,8 +128,12 @@ pub struct Tag { } impl Provenance for Tag { + // We use absolute addresses in the `offset` of a `Pointer`. const OFFSET_IS_ADDR: bool = true; + // We cannot err on partial overwrites, it happens too often in practice (due to unions). + const ERR_ON_PARTIAL_PTR_OVERWRITE: bool = false; + fn fmt(ptr: &Pointer, f: &mut fmt::Formatter<'_>) -> fmt::Result { let (tag, addr) = ptr.into_parts(); // address is absolute write!(f, "0x{:x}", addr.bytes())?; diff --git a/tests/compile-fail/overwriting_part_of_relocation_makes_the_rest_uninit.rs b/tests/compile-fail/pointer_partial_overwrite.rs similarity index 82% rename from tests/compile-fail/overwriting_part_of_relocation_makes_the_rest_uninit.rs rename to tests/compile-fail/pointer_partial_overwrite.rs index 3eab4c0f3d..8bee58d20a 100644 --- a/tests/compile-fail/overwriting_part_of_relocation_makes_the_rest_uninit.rs +++ b/tests/compile-fail/pointer_partial_overwrite.rs @@ -1,6 +1,9 @@ // Make sure we find these even with many checks disabled. // compile-flags: -Zmiri-disable-alignment-check -Zmiri-disable-stacked-borrows -Zmiri-disable-validation +// Test what happens when we overwrite parts of a pointer. +// Also see . + fn main() { let mut p = &42; unsafe { diff --git a/tests/compile-fail/pointer_byte_read.rs b/tests/compile-fail/pointer_partial_read.rs similarity index 67% rename from tests/compile-fail/pointer_byte_read.rs rename to tests/compile-fail/pointer_partial_read.rs index dcb0fd3fb9..a4a5071f5d 100644 --- a/tests/compile-fail/pointer_byte_read.rs +++ b/tests/compile-fail/pointer_partial_read.rs @@ -1,3 +1,5 @@ +// Test what happens when we read parts of a pointer. +// Related to . fn main() { let x = 13; let y = &x; From 257e9cef66666cfce885fb44ca8f1edad2c79ac6 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sun, 18 Jul 2021 15:22:09 +0200 Subject: [PATCH 2/3] docify some comments --- src/machine.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/machine.rs b/src/machine.rs index 03f53033b7..62c1a93079 100644 --- a/src/machine.rs +++ b/src/machine.rs @@ -123,15 +123,15 @@ impl fmt::Display for MiriMemoryKind { #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub struct Tag { pub alloc_id: AllocId, - // Stacked Borrows tag. + /// Stacked Borrows tag. pub sb: SbTag, } impl Provenance for Tag { - // We use absolute addresses in the `offset` of a `Pointer`. + /// We use absolute addresses in the `offset` of a `Pointer`. const OFFSET_IS_ADDR: bool = true; - // We cannot err on partial overwrites, it happens too often in practice (due to unions). + /// We cannot err on partial overwrites, it happens too often in practice (due to unions). const ERR_ON_PARTIAL_PTR_OVERWRITE: bool = false; fn fmt(ptr: &Pointer, f: &mut fmt::Formatter<'_>) -> fmt::Result { From 3a922286e31801a03ed52a31151f7b5f9f8ae4aa Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Mon, 2 Aug 2021 17:59:48 +0200 Subject: [PATCH 3/3] rustup --- rust-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust-version b/rust-version index 9b74f391bc..ebcec429d1 100644 --- a/rust-version +++ b/rust-version @@ -1 +1 @@ -3bc9dd0dd293ab82945e35888ed6d7ab802761ef +3227e35765bab6d02c581928e26ad1d34bacf394