From 8be18e9d8a9a6a717c4a5fa9c3636e82ea022e47 Mon Sep 17 00:00:00 2001 From: David Carlier Date: Fri, 8 Dec 2023 12:00:37 +0000 Subject: [PATCH] std: enabling new netbsd (10) calls. Introducing a new config for this purpose as NetBSD 9 or 8 will be still around for a good while. For now, we re finally enabling sys::unix::rand::getrandom. --- library/std/build.rs | 3 +++ library/std/src/sys/unix/rand.rs | 10 ++++++---- src/bootstrap/src/lib.rs | 1 + 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/library/std/build.rs b/library/std/build.rs index 0f5068b59b7e5..4accf2344592c 100644 --- a/library/std/build.rs +++ b/library/std/build.rs @@ -3,6 +3,9 @@ use std::env; fn main() { println!("cargo:rerun-if-changed=build.rs"); let target = env::var("TARGET").expect("TARGET was not set"); + if target.contains("netbsd") && env::var("RUST_STD_NETBSD10").is_ok() { + println!("cargo:rust-cfg=netbsd10"); + } if target.contains("linux") || target.contains("netbsd") || target.contains("dragonfly") diff --git a/library/std/src/sys/unix/rand.rs b/library/std/src/sys/unix/rand.rs index 2825d16774272..9103444f9fe2c 100644 --- a/library/std/src/sys/unix/rand.rs +++ b/library/std/src/sys/unix/rand.rs @@ -62,7 +62,7 @@ mod imp { unsafe { getrandom(buf.as_mut_ptr().cast(), buf.len(), libc::GRND_NONBLOCK) } } - #[cfg(any(target_os = "espidf", target_os = "horizon", target_os = "freebsd"))] + #[cfg(any(target_os = "espidf", target_os = "horizon", target_os = "freebsd", netbsd10))] fn getrandom(buf: &mut [u8]) -> libc::ssize_t { #[cfg(not(target_os = "freebsd"))] use libc::getrandom; @@ -82,7 +82,8 @@ mod imp { target_os = "android", target_os = "espidf", target_os = "horizon", - target_os = "freebsd" + target_os = "freebsd", + netbsd10 )))] fn getrandom_fill_bytes(_buf: &mut [u8]) -> bool { false @@ -93,7 +94,8 @@ mod imp { target_os = "android", target_os = "espidf", target_os = "horizon", - target_os = "freebsd" + target_os = "freebsd", + netbsd10 ))] fn getrandom_fill_bytes(v: &mut [u8]) -> bool { use crate::sync::atomic::{AtomicBool, Ordering}; @@ -229,7 +231,7 @@ mod imp { } // FIXME: once the 10.x release becomes the minimum, this can be dropped for simplification. -#[cfg(target_os = "netbsd")] +#[cfg(all(target_os = "netbsd", not(netbsd10)))] mod imp { use crate::ptr; diff --git a/src/bootstrap/src/lib.rs b/src/bootstrap/src/lib.rs index 60a89e9bf0709..b57b1835e9770 100644 --- a/src/bootstrap/src/lib.rs +++ b/src/bootstrap/src/lib.rs @@ -85,6 +85,7 @@ const EXTRA_CHECK_CFGS: &[(Option, &str, Option<&[&'static str]>)] = &[ (Some(Mode::Std), "no_sync", None), (Some(Mode::Std), "freebsd12", None), (Some(Mode::Std), "freebsd13", None), + (Some(Mode::Std), "netbsd10", None), (Some(Mode::Std), "backtrace_in_libstd", None), /* Extra values not defined in the built-in targets yet, but used in std */ (Some(Mode::Std), "target_env", Some(&["libnx"])),