From b1823dc5fb7d11e4dd82f35812737eb4fd521ac7 Mon Sep 17 00:00:00 2001 From: Reagan Bohan Date: Mon, 5 Jan 2026 08:29:39 +0000 Subject: [PATCH] musl: Fix incorrect definitions of struct stat on some architectures Fixes: #4913 --- src/unix/linux_like/linux/musl/b32/arm/mod.rs | 18 ++++++++++++------ src/unix/linux_like/linux/musl/b32/mips/mod.rs | 18 ++++++++++++------ src/unix/linux_like/linux/musl/b32/powerpc.rs | 18 ++++++++++++------ src/unix/linux_like/linux/musl/b32/x86/mod.rs | 18 ++++++++++++------ 4 files changed, 48 insertions(+), 24 deletions(-) diff --git a/src/unix/linux_like/linux/musl/b32/arm/mod.rs b/src/unix/linux_like/linux/musl/b32/arm/mod.rs index 0f96453fde4f4..ae8e4939bbcb2 100644 --- a/src/unix/linux_like/linux/musl/b32/arm/mod.rs +++ b/src/unix/linux_like/linux/musl/b32/arm/mod.rs @@ -27,12 +27,18 @@ s! { #[cfg(musl32_time64)] __st_ctim32: Padding<__c_anonymous_timespec32>, - #[cfg(not(musl32_time64))] - pub st_atim: crate::timespec, - #[cfg(not(musl32_time64))] - pub st_mtim: crate::timespec, - #[cfg(not(musl32_time64))] - pub st_ctim: crate::timespec, + #[cfg(not(musl_v1_2_3))] + pub st_atime: crate::time_t, + #[cfg(not(musl_v1_2_3))] + pub st_atime_nsec: c_long, + #[cfg(not(musl_v1_2_3))] + pub st_mtime: crate::time_t, + #[cfg(not(musl_v1_2_3))] + pub st_mtime_nsec: c_long, + #[cfg(not(musl_v1_2_3))] + pub st_ctime: crate::time_t, + #[cfg(not(musl_v1_2_3))] + pub st_ctime_nsec: c_long, pub st_ino: crate::ino_t, diff --git a/src/unix/linux_like/linux/musl/b32/mips/mod.rs b/src/unix/linux_like/linux/musl/b32/mips/mod.rs index 0771a7f67c888..8c7ccbfc07450 100644 --- a/src/unix/linux_like/linux/musl/b32/mips/mod.rs +++ b/src/unix/linux_like/linux/musl/b32/mips/mod.rs @@ -25,12 +25,18 @@ s! { #[cfg(musl32_time64)] __st_ctim32: Padding<__c_anonymous_timespec32>, - #[cfg(not(musl32_time64))] - pub st_atim: crate::timespec, - #[cfg(not(musl32_time64))] - pub st_mtim: crate::timespec, - #[cfg(not(musl32_time64))] - pub st_ctim: crate::timespec, + #[cfg(not(musl_v1_2_3))] + pub st_atime: crate::time_t, + #[cfg(not(musl_v1_2_3))] + pub st_atime_nsec: c_long, + #[cfg(not(musl_v1_2_3))] + pub st_mtime: crate::time_t, + #[cfg(not(musl_v1_2_3))] + pub st_mtime_nsec: c_long, + #[cfg(not(musl_v1_2_3))] + pub st_ctime: crate::time_t, + #[cfg(not(musl_v1_2_3))] + pub st_ctime_nsec: c_long, pub st_blksize: crate::blksize_t, __st_padding3: Padding, diff --git a/src/unix/linux_like/linux/musl/b32/powerpc.rs b/src/unix/linux_like/linux/musl/b32/powerpc.rs index 64a2719abbc11..cd11a44e43cd4 100644 --- a/src/unix/linux_like/linux/musl/b32/powerpc.rs +++ b/src/unix/linux_like/linux/musl/b32/powerpc.rs @@ -37,12 +37,18 @@ s! { #[cfg(musl32_time64)] __st_ctim32: Padding<__c_anonymous_timespec32>, - #[cfg(not(musl32_time64))] - pub st_atim: crate::timespec, - #[cfg(not(musl32_time64))] - pub st_mtim: crate::timespec, - #[cfg(not(musl32_time64))] - pub st_ctim: crate::timespec, + #[cfg(not(musl_v1_2_3))] + pub st_atime: crate::time_t, + #[cfg(not(musl_v1_2_3))] + pub st_atime_nsec: c_long, + #[cfg(not(musl_v1_2_3))] + pub st_mtime: crate::time_t, + #[cfg(not(musl_v1_2_3))] + pub st_mtime_nsec: c_long, + #[cfg(not(musl_v1_2_3))] + pub st_ctime: crate::time_t, + #[cfg(not(musl_v1_2_3))] + pub st_ctime_nsec: c_long, __unused: Padding<[c_long; 2]>, diff --git a/src/unix/linux_like/linux/musl/b32/x86/mod.rs b/src/unix/linux_like/linux/musl/b32/x86/mod.rs index 3f2145bc266ef..737438a594efb 100644 --- a/src/unix/linux_like/linux/musl/b32/x86/mod.rs +++ b/src/unix/linux_like/linux/musl/b32/x86/mod.rs @@ -27,12 +27,18 @@ s! { #[cfg(musl32_time64)] __st_ctim32: Padding<__c_anonymous_timespec32>, - #[cfg(not(musl32_time64))] - pub st_atim: crate::timespec, - #[cfg(not(musl32_time64))] - pub st_mtim: crate::timespec, - #[cfg(not(musl32_time64))] - pub st_ctim: crate::timespec, + #[cfg(not(musl_v1_2_3))] + pub st_atime: crate::time_t, + #[cfg(not(musl_v1_2_3))] + pub st_atime_nsec: c_long, + #[cfg(not(musl_v1_2_3))] + pub st_mtime: crate::time_t, + #[cfg(not(musl_v1_2_3))] + pub st_mtime_nsec: c_long, + #[cfg(not(musl_v1_2_3))] + pub st_ctime: crate::time_t, + #[cfg(not(musl_v1_2_3))] + pub st_ctime_nsec: c_long, pub st_ino: crate::ino_t,