22 lines
538 B
Rust
22 lines
538 B
Rust
//@normalize-stderr-test: "\+0x[48]" -> "+HALF_PTR"
|
|
#![allow(dead_code)]
|
|
|
|
// We use packed structs to get around alignment restrictions
|
|
#[repr(packed)]
|
|
struct Data {
|
|
pad: u8,
|
|
ptr: &'static i32,
|
|
}
|
|
|
|
static G: i32 = 0;
|
|
|
|
fn main() {
|
|
let mut d = Data { pad: 0, ptr: &G };
|
|
|
|
// Get a pointer to the beginning of the Data struct (one u8 byte, then the pointer bytes).
|
|
let d_alias = &mut d as *mut _ as *mut *const u8;
|
|
unsafe {
|
|
let _x = d_alias.read_unaligned(); //~ERROR: unable to copy parts of a pointer
|
|
}
|
|
}
|