File tree Expand file tree Collapse file tree 2 files changed +6
-4
lines changed
tests/compile-fail/unaligned_pointers Expand file tree Collapse file tree 2 files changed +6
-4
lines changed Original file line number Diff line number Diff line change 1
1
fn main ( ) {
2
- // miri always gives allocations the worst possible alignment, so a `u8` array is guaranteed
3
- // to be at the virtual location 1 (so one byte offset from the ultimate alignemnt location 0)
4
2
let mut x = [ 0u8 ; 20 ] ;
5
3
let x_ptr: * mut u8 = x. as_mut_ptr ( ) ;
6
- let y_ptr = x_ptr as * mut u64 ;
4
+ // At least one of these is definitely unaligned.
5
+ // Currently, we guarantee to complain about the first one already (https://github.com/rust-lang/miri/issues/1074).
7
6
unsafe {
8
- * y_ptr = 42 ; //~ ERROR accessing memory with alignment 1, but alignment
7
+ * ( x_ptr as * mut u64 ) = 42 ; //~ ERROR accessing memory with alignment 1, but alignment
8
+ * ( x_ptr. add ( 1 ) as * mut u64 ) = 42 ;
9
9
}
10
10
panic ! ( "unreachable in miri" ) ;
11
11
}
Original file line number Diff line number Diff line change 2
2
// that arise from pointers being insufficiently aligned. The only way to achieve
3
3
// that is not not let programs exploit integer information for alignment, so here
4
4
// we test that this is indeed the case.
5
+ //
6
+ // See https://github.com/rust-lang/miri/issues/1074.
5
7
fn main ( ) {
6
8
let x = & mut [ 0u8 ; 3 ] ;
7
9
let base_addr = x as * mut _ as usize ;
You can’t perform that action at this time.
0 commit comments