2020-05-15 03:28:33 -05:00
|
|
|
use std::ptr;
|
|
|
|
|
|
|
|
// normalize-stderr-test "alloc\d+" -> "allocN"
|
2021-07-12 17:21:35 -05:00
|
|
|
// normalize-stderr-test "0x7f+" -> "0x7f..f"
|
|
|
|
|
2020-05-15 03:28:33 -05:00
|
|
|
|
|
|
|
pub const BEFORE_START: *const u8 = unsafe { (&0u8 as *const u8).offset(-1) }; //~NOTE
|
|
|
|
pub const AFTER_END: *const u8 = unsafe { (&0u8 as *const u8).offset(2) }; //~NOTE
|
|
|
|
pub const AFTER_ARRAY: *const u8 = unsafe { [0u8; 100].as_ptr().offset(101) }; //~NOTE
|
|
|
|
|
|
|
|
pub const OVERFLOW: *const u16 = unsafe { [0u16; 1].as_ptr().offset(isize::MAX) }; //~NOTE
|
|
|
|
pub const UNDERFLOW: *const u16 = unsafe { [0u16; 1].as_ptr().offset(isize::MIN) }; //~NOTE
|
|
|
|
pub const OVERFLOW_ADDRESS_SPACE: *const u8 = unsafe { (usize::MAX as *const u8).offset(2) }; //~NOTE
|
|
|
|
pub const UNDERFLOW_ADDRESS_SPACE: *const u8 = unsafe { (1 as *const u8).offset(-2) }; //~NOTE
|
2021-07-17 13:12:28 -05:00
|
|
|
pub const NEGATIVE_OFFSET: *const u8 = unsafe { [0u8; 1].as_ptr().wrapping_offset(-2).offset(-2) }; //~NOTE
|
2020-05-15 03:28:33 -05:00
|
|
|
|
|
|
|
pub const ZERO_SIZED_ALLOC: *const u8 = unsafe { [0u8; 0].as_ptr().offset(1) }; //~NOTE
|
|
|
|
pub const DANGLING: *const u8 = unsafe { ptr::NonNull::<u8>::dangling().as_ptr().offset(4) }; //~NOTE
|
|
|
|
|
|
|
|
// Right now, a zero offset from null is UB
|
|
|
|
pub const NULL_OFFSET_ZERO: *const u8 = unsafe { ptr::null::<u8>().offset(0) }; //~NOTE
|
|
|
|
|
2020-05-26 04:00:02 -05:00
|
|
|
// Make sure that we don't panic when computing abs(offset*size_of::<T>())
|
|
|
|
pub const UNDERFLOW_ABS: *const u8 = unsafe { (usize::MAX as *const u8).offset(isize::MIN) }; //~NOTE
|
|
|
|
|
2020-05-15 03:28:33 -05:00
|
|
|
fn main() {}
|