diff --git a/crates/std_detect/Cargo.toml b/crates/std_detect/Cargo.toml index 252e42c569..4d0f93d8cf 100644 --- a/crates/std_detect/Cargo.toml +++ b/crates/std_detect/Cargo.toml @@ -25,12 +25,22 @@ maintenance = { status = "experimental" } libc = { version = "0.2", optional = true, default-features = false } cfg-if = "0.1.10" +# When built as part of libstd +core = { version = "1.0.0", optional = true, package = "rustc-std-workspace-core" } +compiler_builtins = { version = "0.1.2", optional = true } +alloc = { version = "1.0.0", optional = true, package = "rustc-std-workspace-alloc" } + [dev-dependencies] auxv = "0.3.3" cupid = "0.6.0" [features] default = [ "std_detect_dlsym_getauxval", "std_detect_file_io" ] -std_detect_file_io = [] +std_detect_file_io = [ "libc" ] std_detect_dlsym_getauxval = [ "libc" ] -std_detect_env_override = [] +std_detect_env_override = [ "libc" ] +rustc-dep-of-std = [ + "core", + "compiler_builtins", + "alloc", +] diff --git a/crates/std_detect/src/detect/os/linux/auxvec.rs b/crates/std_detect/src/detect/os/linux/auxvec.rs index d556b23b1d..077fc9e4c8 100644 --- a/crates/std_detect/src/detect/os/linux/auxvec.rs +++ b/crates/std_detect/src/detect/os/linux/auxvec.rs @@ -89,7 +89,7 @@ pub(crate) fn auxv() -> Result { #[cfg(not(feature = "std_detect_dlsym_getauxval"))] { - let hwcap = unsafe { libc::getauxval(AT_HWCAP) }; + let hwcap = unsafe { libc::getauxval(AT_HWCAP as libc::c_ulong) as usize }; // Targets with only AT_HWCAP: #[cfg(any(target_arch = "aarch64", target_arch = "mips", target_arch = "mips64"))] @@ -106,7 +106,7 @@ pub(crate) fn auxv() -> Result { target_arch = "powerpc64" ))] { - let hwcap2 = unsafe { libc::getauxval(AT_HWCAP2) }; + let hwcap2 = unsafe { libc::getauxval(AT_HWCAP2 as libc::c_ulong) as usize }; if hwcap != 0 && hwcap2 != 0 { return Ok(AuxVec { hwcap, hwcap2 }); } diff --git a/crates/std_detect/src/lib.rs b/crates/std_detect/src/lib.rs index b051be5c0a..6658c3e6bd 100644 --- a/crates/std_detect/src/lib.rs +++ b/crates/std_detect/src/lib.rs @@ -20,6 +20,7 @@ #![cfg_attr(feature = "std_detect_file_io", feature(vec_spare_capacity))] #![no_std] +#[cfg_attr(feature = "rustc-dep-of-std", allow(unused_extern_crates))] #[cfg(feature = "std_detect_file_io")] extern crate alloc;