Improve miri's error reporting in check_in_alloc
This commit is contained in:
parent
15d50deeb4
commit
a54e3cc9e7
2 changed files with 6 additions and 6 deletions
|
@ -228,7 +228,7 @@ impl<'tcx, Tag: Copy, Extra> Allocation<Tag, Extra> {
|
||||||
// FIXME: Working around https://github.com/rust-lang/rust/issues/56209
|
// FIXME: Working around https://github.com/rust-lang/rust/issues/56209
|
||||||
where Extra: AllocationExtra<Tag, MemoryExtra>
|
where Extra: AllocationExtra<Tag, MemoryExtra>
|
||||||
{
|
{
|
||||||
self.get_bytes_internal(cx, ptr, size, true, CheckInAllocMsg::MemoryAccess)
|
self.get_bytes_internal(cx, ptr, size, true, CheckInAllocMsg::MemoryAccessTest)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// It is the caller's responsibility to handle undefined and pointer bytes.
|
/// It is the caller's responsibility to handle undefined and pointer bytes.
|
||||||
|
@ -243,7 +243,7 @@ impl<'tcx, Tag: Copy, Extra> Allocation<Tag, Extra> {
|
||||||
// FIXME: Working around https://github.com/rust-lang/rust/issues/56209
|
// FIXME: Working around https://github.com/rust-lang/rust/issues/56209
|
||||||
where Extra: AllocationExtra<Tag, MemoryExtra>
|
where Extra: AllocationExtra<Tag, MemoryExtra>
|
||||||
{
|
{
|
||||||
self.get_bytes_internal(cx, ptr, size, false, CheckInAllocMsg::MemoryAccess)
|
self.get_bytes_internal(cx, ptr, size, false, CheckInAllocMsg::MemoryAccessTest)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Just calling this already marks everything as defined and removes relocations,
|
/// Just calling this already marks everything as defined and removes relocations,
|
||||||
|
@ -258,7 +258,7 @@ impl<'tcx, Tag: Copy, Extra> Allocation<Tag, Extra> {
|
||||||
where Extra: AllocationExtra<Tag, MemoryExtra>
|
where Extra: AllocationExtra<Tag, MemoryExtra>
|
||||||
{
|
{
|
||||||
assert_ne!(size.bytes(), 0, "0-sized accesses should never even get a `Pointer`");
|
assert_ne!(size.bytes(), 0, "0-sized accesses should never even get a `Pointer`");
|
||||||
self.check_bounds(cx, ptr, size, CheckInAllocMsg::MemoryAccess)?;
|
self.check_bounds(cx, ptr, size, CheckInAllocMsg::MemoryAccessTest)?;
|
||||||
|
|
||||||
self.mark_definedness(ptr, size, true)?;
|
self.mark_definedness(ptr, size, true)?;
|
||||||
self.clear_relocations(cx, ptr, size)?;
|
self.clear_relocations(cx, ptr, size)?;
|
||||||
|
|
|
@ -461,9 +461,9 @@ impl<'tcx, O: fmt::Debug> fmt::Debug for InterpError<'tcx, O> {
|
||||||
use self::InterpError::*;
|
use self::InterpError::*;
|
||||||
match *self {
|
match *self {
|
||||||
PointerOutOfBounds { ptr, msg, allocation_size } => {
|
PointerOutOfBounds { ptr, msg, allocation_size } => {
|
||||||
write!(f, "{} test failed: pointer must be in-bounds at offset {}, but is outside bounds of \
|
write!(f, "{} test failed: pointer must be in-bounds at offset {}, \
|
||||||
allocation {} which has size {}", msg,
|
but is outside bounds of allocation {} which has size {}",
|
||||||
ptr.offset.bytes(), ptr.alloc_id, allocation_size.bytes())
|
msg, ptr.offset.bytes(), ptr.alloc_id, allocation_size.bytes())
|
||||||
},
|
},
|
||||||
ValidationFailure(ref err) => {
|
ValidationFailure(ref err) => {
|
||||||
write!(f, "type validation failed: {}", err)
|
write!(f, "type validation failed: {}", err)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue