diff --git a/library/std/src/sys/unix/time.rs b/library/std/src/sys/unix/time.rs index d5abd9b581c65..d6e29969e756c 100644 --- a/library/std/src/sys/unix/time.rs +++ b/library/std/src/sys/unix/time.rs @@ -291,8 +291,13 @@ mod inner { pub fn now() -> Instant { #[cfg(target_os = "macos")] const clock_id: libc::clockid_t = libc::CLOCK_UPTIME_RAW; - #[cfg(not(target_os = "macos"))] + + #[cfg(target_os = "linux")] + const clock_id: libc::clockid_t = libc::CLOCK_BOOTTIME; + + #[cfg(not(any(target_os = "macos", target_os = "linux")))] const clock_id: libc::clockid_t = libc::CLOCK_MONOTONIC; + Instant { t: Timespec::now(clock_id) } } diff --git a/src/tools/miri/src/shims/time.rs b/src/tools/miri/src/shims/time.rs index bc0b71fbc2096..2fc5c2fb5ecf2 100644 --- a/src/tools/miri/src/shims/time.rs +++ b/src/tools/miri/src/shims/time.rs @@ -45,6 +45,9 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> { relative_clocks = vec![ this.eval_libc_i32("CLOCK_MONOTONIC")?, this.eval_libc_i32("CLOCK_MONOTONIC_COARSE")?, + // This is the equivalent to `CLOCK_UPTIME_RAW` in the macos section + // We support it, because std relies on it + this.eval_libc_i32("CLOCK_BOOTTIME")?, ]; } "macos" => {