From 2e2fbffd009b2b79cd1c0d8da6b34d95297168b2 Mon Sep 17 00:00:00 2001 From: dybucc <149513579+dybucc@users.noreply.github.com> Date: Thu, 4 Jun 2026 19:23:53 +0200 Subject: [PATCH] linux(uclibc): move definition of `time_t` A recent patch [1] overhauled the `uclibc` module to add support for "toggling" 64-bit `time_t`. That patch, though, was centered around supported 32-bit arm targets. This patch extends that to all platforms whose target environment matches `uclibc`. This option is mahine word-independent. [1]: https://github.com/rust-lang/libc/commit/2549bd4a98192194ff655d0184cb7adb6152427f --- src/unix/linux_like/linux/uclibc/arm/mod.rs | 11 ----------- src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs | 2 -- src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs | 2 -- src/unix/linux_like/linux/uclibc/mod.rs | 11 +++++++++++ src/unix/linux_like/linux/uclibc/x86_64/mod.rs | 2 -- 5 files changed, 11 insertions(+), 17 deletions(-) diff --git a/src/unix/linux_like/linux/uclibc/arm/mod.rs b/src/unix/linux_like/linux/uclibc/arm/mod.rs index 1c09954cc834d..56e37a113410f 100644 --- a/src/unix/linux_like/linux/uclibc/arm/mod.rs +++ b/src/unix/linux_like/linux/uclibc/arm/mod.rs @@ -3,17 +3,6 @@ use crate::prelude::*; pub type wchar_t = c_uint; -cfg_if! { - // Set cfg(libc_unstable_uclibc_time64) in rustflags if your uclibc has 64-bit time - if #[cfg(linux_time_bits64)] { - pub type time_t = c_longlong; - pub type suseconds_t = c_longlong; - } else { - pub type time_t = c_long; - pub type suseconds_t = c_long; - } -} - pub type clock_t = c_long; pub type fsblkcnt_t = c_ulong; pub type fsfilcnt_t = c_ulong; diff --git a/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs b/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs index 93ed7ab213335..92a3d218eb0d2 100644 --- a/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs +++ b/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs @@ -2,8 +2,6 @@ use crate::off64_t; use crate::prelude::*; pub type clock_t = i32; -pub type time_t = i32; -pub type suseconds_t = i32; pub type wchar_t = i32; pub type off_t = i32; pub type ino_t = u32; diff --git a/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs b/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs index 4495181400d48..a6a63a33a93b3 100644 --- a/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs +++ b/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs @@ -8,8 +8,6 @@ pub type fsfilcnt_t = c_ulong; pub type ino_t = u64; pub type nlink_t = u64; pub type off_t = i64; -pub type suseconds_t = i64; -pub type time_t = i64; pub type wchar_t = i32; s! { diff --git a/src/unix/linux_like/linux/uclibc/mod.rs b/src/unix/linux_like/linux/uclibc/mod.rs index ead968a1c65c5..6c3d8013f9173 100644 --- a/src/unix/linux_like/linux/uclibc/mod.rs +++ b/src/unix/linux_like/linux/uclibc/mod.rs @@ -12,6 +12,17 @@ pub type rlim_t = c_ulong; pub type __rlimit_resource_t = c_ulong; pub type __priority_which_t = c_uint; +cfg_if! { + // Set `--cfg=libc_unstable_uclibc_time64` in RUSTFLAGS if your uClibc has 64-bit `time_t`. + if #[cfg(linux_time_bits64)] { + pub type time_t = i64; + pub type suseconds_t = i64; + } else { + pub type time_t = c_long; + pub type suseconds_t = c_long; + } +} + cfg_if! { if #[cfg(doc)] { // Used in `linux::arch` to define ioctl constants. diff --git a/src/unix/linux_like/linux/uclibc/x86_64/mod.rs b/src/unix/linux_like/linux/uclibc/x86_64/mod.rs index 510b90b599108..94fe6a6a7f656 100644 --- a/src/unix/linux_like/linux/uclibc/x86_64/mod.rs +++ b/src/unix/linux_like/linux/uclibc/x86_64/mod.rs @@ -14,8 +14,6 @@ pub type nlink_t = c_uint; pub type off_t = c_long; // [uClibc docs] Note stat64 has the same shape as stat for x86-64. pub type stat64 = stat; -pub type suseconds_t = c_long; -pub type time_t = c_int; pub type wchar_t = c_int; pub type pthread_t = c_ulong;