diff --git a/src/bootstrap/bin/rustc.rs b/src/bootstrap/bin/rustc.rs index a8f0d24ce63db..383b3a3cf0ad5 100644 --- a/src/bootstrap/bin/rustc.rs +++ b/src/bootstrap/bin/rustc.rs @@ -262,6 +262,7 @@ fn main() { // The flags here should be kept in sync with `add_miri_default_args` // in miri's `src/lib.rs`. cmd.arg("-Zalways-encode-mir"); + cmd.arg("--cfg=miri"); // These options are preferred by miri, to be able to perform better validation, // but the bootstrap compiler might not understand them. if stage != "0" { diff --git a/src/libstd/sys/unix/rand.rs b/src/libstd/sys/unix/rand.rs index 77f1439e17b10..e923b9aa29b01 100644 --- a/src/libstd/sys/unix/rand.rs +++ b/src/libstd/sys/unix/rand.rs @@ -13,6 +13,7 @@ pub fn hashmap_random_keys() -> (u64, u64) { #[cfg(all(unix, not(target_os = "ios"), + not(all(target_os = "macos", miri)), not(target_os = "openbsd"), not(target_os = "freebsd"), not(target_os = "fuchsia")))] @@ -106,7 +107,9 @@ mod imp { // once per thread in `hashmap_random_keys`. Therefore `SecRandomCopyBytes` is // only used on iOS where direct access to `/dev/urandom` is blocked by the // sandbox. -#[cfg(target_os = "ios")] +// HACK: However, we do use this when running in Miri on macOS; intercepting this is much +// easier than intercepting accesses to /dev/urandom. +#[cfg(any(target_os = "ios", all(target_os = "macos", miri)))] mod imp { use crate::io; use crate::ptr;