diff --git a/rust-version b/rust-version index 8ed0e6ba35..53979b82cf 100644 --- a/rust-version +++ b/rust-version @@ -1 +1 @@ -14b15521c52549ebbb113173b4abecd124b5a823 +e83f7563495dbe2629b0cbc738afb0808c4482e1 diff --git a/tests/compile-fail/shim_arg_size.rs b/tests/compile-fail/shim_arg_size.rs new file mode 100644 index 0000000000..dd8d6dac51 --- /dev/null +++ b/tests/compile-fail/shim_arg_size.rs @@ -0,0 +1,17 @@ +#![feature(rustc_private)] + +fn main() { + extern "C" { + // Use the wrong type(ie. not the pointer width) for the `size` + // argument. + #[cfg(target_pointer_width="64")] + fn malloc(size: u32) -> *mut std::ffi::c_void; + + #[cfg(target_pointer_width="32")] + fn malloc(size: u16) -> *mut std::ffi::c_void; + } + + unsafe { + let _p1 = malloc(42); //~ ERROR Undefined Behavior: scalar size mismatch + }; +}