about summary refs log tree commit diff
path: root/src/tools/miri/tests/pass-dep/shims/linux-getrandom.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/miri/tests/pass-dep/shims/linux-getrandom.rs')
-rw-r--r--src/tools/miri/tests/pass-dep/shims/linux-getrandom.rs40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/tools/miri/tests/pass-dep/shims/linux-getrandom.rs b/src/tools/miri/tests/pass-dep/shims/linux-getrandom.rs
new file mode 100644
index 00000000000..a1436c7319d
--- /dev/null
+++ b/src/tools/miri/tests/pass-dep/shims/linux-getrandom.rs
@@ -0,0 +1,40 @@
+//@only-target-linux
+
+use std::ptr;
+
+fn main() {
+    let mut buf = [0u8; 5];
+    unsafe {
+        assert_eq!(
+            libc::syscall(
+                libc::SYS_getrandom,
+                ptr::null_mut::<libc::c_void>(),
+                0 as libc::size_t,
+                0 as libc::c_uint,
+            ),
+            0,
+        );
+        assert_eq!(
+            libc::syscall(
+                libc::SYS_getrandom,
+                buf.as_mut_ptr() as *mut libc::c_void,
+                5 as libc::size_t,
+                0 as libc::c_uint,
+            ),
+            5,
+        );
+
+        assert_eq!(
+            libc::getrandom(ptr::null_mut::<libc::c_void>(), 0 as libc::size_t, 0 as libc::c_uint),
+            0,
+        );
+        assert_eq!(
+            libc::getrandom(
+                buf.as_mut_ptr() as *mut libc::c_void,
+                5 as libc::size_t,
+                0 as libc::c_uint,
+            ),
+            5,
+        );
+    }
+}