Skip to content

Commit

Permalink
Miri Tests
Browse files Browse the repository at this point in the history
  • Loading branch information
spastorino committed May 4, 2024
1 parent f6f8e91 commit 06ee971
Show file tree
Hide file tree
Showing 85 changed files with 97 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/tools/miri/src/bin/miri.rs
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,7 @@ fn jemalloc_magic() {
// linking, so we need to explicitly depend on the function.
#[cfg(target_os = "macos")]
{
#[allow(missing_unsafe_on_extern)]
extern "C" {
fn _rjem_je_zone_register();
}
Expand Down
1 change: 1 addition & 0 deletions src/tools/miri/test-cargo-miri/no-std-smoke/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

// Plumbing to let us use `writeln!` to host stdout:

#[allow(missing_unsafe_on_extern)]
extern "Rust" {
fn miri_write_to_stdout(bytes: &[u8]);
}
Expand Down
2 changes: 2 additions & 0 deletions src/tools/miri/test-cargo-miri/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ fn main() {
let mut out = Vec::with_capacity(1024);

unsafe {
#[allow(missing_unsafe_on_extern)]
extern "Rust" {
fn miri_host_to_target_path(
path: *const c_char,
Expand Down Expand Up @@ -80,6 +81,7 @@ mod test {
// Test calling exported symbols in (transitive) dependencies.
// Repeat calls to make sure the `Instance` cache is not broken.
for _ in 0..3 {
#[allow(missing_unsafe_on_extern)]
extern "Rust" {
fn exported_symbol() -> i32;
fn assoc_fn_as_exported_symbol() -> i32;
Expand Down
1 change: 1 addition & 0 deletions src/tools/miri/test-cargo-miri/subcrate/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ fn main() {
let mut out = Vec::with_capacity(1024);

unsafe {
#[allow(missing_unsafe_on_extern)]
extern "Rust" {
fn miri_host_to_target_path(
path: *const c_char,
Expand Down
1 change: 1 addition & 0 deletions src/tools/miri/test-cargo-miri/subcrate/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ fn main() {
let mut out = Vec::with_capacity(1024);

unsafe {
#[allow(missing_unsafe_on_extern)]
extern "Rust" {
fn miri_host_to_target_path(
path: *const c_char,
Expand Down
1 change: 1 addition & 0 deletions src/tools/miri/tests/extern-so/fail/function_not_in_so.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
//@only-on-host
//@normalize-stderr-test: "OS `.*`" -> "$$OS"

#[allow(missing_unsafe_on_extern)]
extern "C" {
fn foo();
}
Expand Down
1 change: 1 addition & 0 deletions src/tools/miri/tests/extern-so/pass/call_extern_c_fn.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
//@only-target-linux
//@only-on-host

#[allow(missing_unsafe_on_extern)]
extern "C" {
fn add_one_int(x: i32) -> i32;
fn add_int16(x: i16) -> i16;
Expand Down
1 change: 1 addition & 0 deletions src/tools/miri/tests/fail/alloc/no_global_allocator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#![feature(start)]
#![no_std]

#[allow(missing_unsafe_on_extern)]
extern "Rust" {
fn __rust_alloc(size: usize, align: usize) -> *mut u8;
}
Expand Down
1 change: 1 addition & 0 deletions src/tools/miri/tests/fail/data_race/dealloc_read_race1.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ struct EvilSend<T>(pub T);
unsafe impl<T> Send for EvilSend<T> {}
unsafe impl<T> Sync for EvilSend<T> {}

#[allow(missing_unsafe_on_extern)]
extern "Rust" {
fn __rust_dealloc(ptr: *mut u8, size: usize, align: usize);
}
Expand Down
1 change: 1 addition & 0 deletions src/tools/miri/tests/fail/data_race/dealloc_read_race2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ struct EvilSend<T>(pub T);
unsafe impl<T> Send for EvilSend<T> {}
unsafe impl<T> Sync for EvilSend<T> {}

#[allow(missing_unsafe_on_extern)]
extern "Rust" {
fn __rust_dealloc(ptr: *mut u8, size: usize, align: usize);
}
Expand Down
1 change: 1 addition & 0 deletions src/tools/miri/tests/fail/data_race/dealloc_write_race1.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ struct EvilSend<T>(pub T);
unsafe impl<T> Send for EvilSend<T> {}
unsafe impl<T> Sync for EvilSend<T> {}

#[allow(missing_unsafe_on_extern)]
extern "Rust" {
fn __rust_dealloc(ptr: *mut u8, size: usize, align: usize);
}
Expand Down
1 change: 1 addition & 0 deletions src/tools/miri/tests/fail/data_race/dealloc_write_race2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ struct EvilSend<T>(pub T);
unsafe impl<T> Send for EvilSend<T> {}
unsafe impl<T> Sync for EvilSend<T> {}

#[allow(missing_unsafe_on_extern)]
extern "Rust" {
fn __rust_dealloc(ptr: *mut u8, size: usize, align: usize);
}
Expand Down
2 changes: 2 additions & 0 deletions src/tools/miri/tests/fail/environ-gets-deallocated.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

#[cfg(any(target_os = "linux", target_os = "freebsd"))]
fn get_environ() -> *const *const u8 {
#[allow(missing_unsafe_on_extern)]
extern "C" {
static mut environ: *const *const u8;
}
Expand All @@ -10,6 +11,7 @@ fn get_environ() -> *const *const u8 {

#[cfg(target_os = "macos")]
fn get_environ() -> *const *const u8 {
#[allow(missing_unsafe_on_extern)]
extern "C" {
fn _NSGetEnviron() -> *mut *const *const u8;
}
Expand Down
1 change: 1 addition & 0 deletions src/tools/miri/tests/fail/extern-type-field-offset.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#![feature(extern_types)]

#[allow(missing_unsafe_on_extern)]
extern "C" {
type Opaque;
}
Expand Down
1 change: 1 addition & 0 deletions src/tools/miri/tests/fail/extern_static.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
//! Even referencing an unknown `extern static` already triggers an error.

#[allow(missing_unsafe_on_extern)]
extern "C" {
static mut FOO: i32;
}
Expand Down
1 change: 1 addition & 0 deletions src/tools/miri/tests/fail/extern_static_in_const.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
//! Even referencing an unknown `extern static` already triggers an error.

#[allow(missing_unsafe_on_extern)]
extern "C" {
static E: [u8; 0];
}
Expand Down
1 change: 1 addition & 0 deletions src/tools/miri/tests/fail/extern_static_wrong_size.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
//@ only-target-linux: we need a specific extern supported on this target
//@normalize-stderr-test: "[48] bytes" -> "N bytes"

#[allow(missing_unsafe_on_extern)]
extern "C" {
static mut environ: i8;
}
Expand Down
1 change: 1 addition & 0 deletions src/tools/miri/tests/fail/function_calls/check_arg_abi.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
fn main() {
#[allow(missing_unsafe_on_extern)]
extern "Rust" {
fn malloc(size: usize) -> *mut std::ffi::c_void;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
fn main() {
#[allow(missing_unsafe_on_extern)]
extern "C" {
fn abort(_: i32) -> !;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
fn main() {
#[allow(missing_unsafe_on_extern)]
extern "C" {
fn malloc() -> *mut std::ffi::c_void;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
fn main() {
#[allow(missing_unsafe_on_extern)]
extern "C" {
fn malloc(_: i32, _: i32) -> *mut std::ffi::c_void;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ fn foo() {}

fn main() {
#[cfg(any(cache, fn_ptr))]
#[allow(missing_unsafe_on_extern)]
extern "Rust" {
fn foo();
}
Expand All @@ -23,6 +24,7 @@ fn main() {

{
#[cfg_attr(any(cache, fn_ptr), allow(clashing_extern_declarations))]
#[allow(missing_unsafe_on_extern)]
extern "C" {
fn foo();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ extern "C-unwind" fn unwind() {
}

fn main() {
#[allow(missing_unsafe_on_extern)]
extern "C" {
fn unwind();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ extern "C-unwind" fn nounwind() {
}

fn main() {
#[allow(missing_unsafe_on_extern)]
extern "C-unwind" {
#[cfg_attr(any(extern_block, both), rustc_nounwind)]
fn nounwind();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ fn bar() {}
//~^ HELP: then it's defined here again, in crate `exported_symbol_clashing`

fn main() {
#[allow(missing_unsafe_on_extern)]
extern "Rust" {
fn foo();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ extern "C" fn malloc(_: usize) -> *mut std::ffi::c_void {
}

fn main() {
#[allow(missing_unsafe_on_extern)]
extern "C" {
fn malloc(_: usize) -> *mut std::ffi::c_void;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
fn foo() {}

fn main() {
#[allow(missing_unsafe_on_extern)]
extern "Rust" {
fn foo(_: i32);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
static FOO: () = ();

fn main() {
#[allow(missing_unsafe_on_extern)]
extern "C" {
fn FOO();
}
Expand Down
1 change: 1 addition & 0 deletions src/tools/miri/tests/fail/intrinsics/copy_null.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#![feature(intrinsics)]

// Directly call intrinsic to avoid debug assertions in libstd
#[allow(missing_unsafe_on_extern)]
extern "rust-intrinsic" {
fn copy_nonoverlapping<T>(src: *const T, dst: *mut T, count: usize);
}
Expand Down
1 change: 1 addition & 0 deletions src/tools/miri/tests/fail/intrinsics/copy_overlapping.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#![feature(intrinsics)]

// Directly call intrinsic to avoid debug assertions in libstd
#[allow(missing_unsafe_on_extern)]
extern "rust-intrinsic" {
fn copy_nonoverlapping<T>(src: *const T, dst: *mut T, count: usize);
}
Expand Down
1 change: 1 addition & 0 deletions src/tools/miri/tests/fail/intrinsics/copy_unaligned.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#![feature(intrinsics)]

// Directly call intrinsic to avoid debug assertions in libstd
#[allow(missing_unsafe_on_extern)]
extern "rust-intrinsic" {
fn copy_nonoverlapping<T>(src: *const T, dst: *mut T, count: usize);
}
Expand Down
1 change: 1 addition & 0 deletions src/tools/miri/tests/fail/intrinsics/ctlz_nonzero.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#![feature(intrinsics)]

mod rusti {
#[allow(missing_unsafe_on_extern)]
extern "rust-intrinsic" {
pub fn ctlz_nonzero<T>(x: T) -> u32;
}
Expand Down
1 change: 1 addition & 0 deletions src/tools/miri/tests/fail/intrinsics/cttz_nonzero.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#![feature(intrinsics)]

mod rusti {
#[allow(missing_unsafe_on_extern)]
extern "rust-intrinsic" {
pub fn cttz_nonzero<T>(x: T) -> u32;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#![feature(intrinsics)]

// Directly call intrinsic to avoid debug assertions in libstd
#[allow(missing_unsafe_on_extern)]
extern "rust-intrinsic" {
fn float_to_int_unchecked<Float: Copy, Int: Copy>(value: Float) -> Int;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#![feature(intrinsics)]

// Directly call intrinsic to avoid debug assertions in libstd
#[allow(missing_unsafe_on_extern)]
extern "rust-intrinsic" {
fn float_to_int_unchecked<Float: Copy, Int: Copy>(value: Float) -> Int;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#![feature(intrinsics)]

// Directly call intrinsic to avoid debug assertions in libstd
#[allow(missing_unsafe_on_extern)]
extern "rust-intrinsic" {
fn float_to_int_unchecked<Float: Copy, Int: Copy>(value: Float) -> Int;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#![feature(intrinsics)]

// Directly call intrinsic to avoid debug assertions in libstd
#[allow(missing_unsafe_on_extern)]
extern "rust-intrinsic" {
fn float_to_int_unchecked<Float: Copy, Int: Copy>(value: Float) -> Int;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#![feature(intrinsics)]

// Directly call intrinsic to avoid debug assertions in libstd
#[allow(missing_unsafe_on_extern)]
extern "rust-intrinsic" {
fn float_to_int_unchecked<Float: Copy, Int: Copy>(value: Float) -> Int;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#![feature(intrinsics)]

// Directly call intrinsic to avoid debug assertions in libstd
#[allow(missing_unsafe_on_extern)]
extern "rust-intrinsic" {
fn float_to_int_unchecked<Float: Copy, Int: Copy>(value: Float) -> Int;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#![feature(intrinsics)]

// Directly call intrinsic to avoid debug assertions in libstd
#[allow(missing_unsafe_on_extern)]
extern "rust-intrinsic" {
fn float_to_int_unchecked<Float: Copy, Int: Copy>(value: Float) -> Int;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#![feature(intrinsics)]

// Directly call intrinsic to avoid debug assertions in libstd
#[allow(missing_unsafe_on_extern)]
extern "rust-intrinsic" {
fn float_to_int_unchecked<Float: Copy, Int: Copy>(value: Float) -> Int;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#![feature(intrinsics)]

// Directly call intrinsic to avoid debug assertions in libstd
#[allow(missing_unsafe_on_extern)]
extern "rust-intrinsic" {
fn float_to_int_unchecked<Float: Copy, Int: Copy>(value: Float) -> Int;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#![feature(intrinsics)]

// Directly call intrinsic to avoid debug assertions in libstd
#[allow(missing_unsafe_on_extern)]
extern "rust-intrinsic" {
fn float_to_int_unchecked<Float: Copy, Int: Copy>(value: Float) -> Int;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#![feature(intrinsics)]

// Directly call intrinsic to avoid debug assertions in libstd
#[allow(missing_unsafe_on_extern)]
extern "rust-intrinsic" {
fn float_to_int_unchecked<Float: Copy, Int: Copy>(value: Float) -> Int;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#![feature(intrinsics)]

// Directly call intrinsic to avoid debug assertions in libstd
#[allow(missing_unsafe_on_extern)]
extern "rust-intrinsic" {
fn float_to_int_unchecked<Float: Copy, Int: Copy>(value: Float) -> Int;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#![feature(intrinsics)]

// Directly call intrinsic to avoid debug assertions in libstd
#[allow(missing_unsafe_on_extern)]
extern "rust-intrinsic" {
fn float_to_int_unchecked<Float: Copy, Int: Copy>(value: Float) -> Int;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#![feature(intrinsics)]

// Directly call intrinsic to avoid debug assertions in libstd
#[allow(missing_unsafe_on_extern)]
extern "rust-intrinsic" {
fn float_to_int_unchecked<Float: Copy, Int: Copy>(value: Float) -> Int;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#![feature(intrinsics)]

// Directly call intrinsic to avoid debug assertions in libstd
#[allow(missing_unsafe_on_extern)]
extern "rust-intrinsic" {
fn float_to_int_unchecked<Float: Copy, Int: Copy>(value: Float) -> Int;
}
Expand Down

0 comments on commit 06ee971

Please sign in to comment.