From 912393a2f00438560ec8b5eab7b0651e87bed783 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Wed, 3 Dec 2025 00:19:36 +0100 Subject: [PATCH 1/5] types: Add Padding::uninit() It allows to uninitialize padding areas in const contextes. --- src/types.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/types.rs b/src/types.rs index 4a7514564b22b..2d6e83f67fcde 100644 --- a/src/types.rs +++ b/src/types.rs @@ -22,6 +22,18 @@ impl Default for Padding { } } +impl Padding { + /// Const constructor for uninitialized padding in const contexts. + // FIXME: Change this into zeroed() and use MaybeUninit::zeroed() + // when we depend on rustc 1.75.0. + #[allow(unused)] + pub(crate) const fn uninit() -> Self { + // We can still safely use uninit here, since padding are is something + // that can are not meant to be read or written anyways. + Self(MaybeUninit::uninit()) + } +} + impl fmt::Debug for Padding { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { // Taken frmo `MaybeUninit`'s debug implementation From 1b19f4ace3acc84428333aa660c39b2d449db781 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Tue, 2 Dec 2025 22:40:58 +0100 Subject: [PATCH 2/5] cleanup: Declare more private padding fields Padding's We have more private fields that are padding areas that are currently not marked as Padding, which is causing the generated Hash and PartialEq implementations to take care of them wrongly. Fix them --- src/fuchsia/mod.rs | 2 +- src/new/musl/sys/socket.rs | 8 ++++---- src/new/netbsd/utmpx_.rs | 2 +- src/unix/bsd/apple/mod.rs | 2 +- src/unix/bsd/freebsdlike/freebsd/mod.rs | 4 ++-- src/unix/bsd/netbsdlike/netbsd/mod.rs | 8 ++++---- src/unix/bsd/netbsdlike/openbsd/mod.rs | 10 +++++----- src/unix/linux_like/linux/gnu/b32/arm/mod.rs | 6 +++--- src/unix/linux_like/linux/gnu/b32/mips/mod.rs | 12 ++++++------ src/unix/linux_like/linux/gnu/b32/mod.rs | 6 +++--- src/unix/linux_like/linux/gnu/b32/powerpc.rs | 12 ++++++------ src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs | 8 ++++---- src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs | 2 +- src/unix/linux_like/mod.rs | 4 ++-- src/unix/solarish/mod.rs | 2 +- 15 files changed, 44 insertions(+), 44 deletions(-) diff --git a/src/fuchsia/mod.rs b/src/fuchsia/mod.rs index 5c2a4ba56a70b..e2abe83f2f147 100644 --- a/src/fuchsia/mod.rs +++ b/src/fuchsia/mod.rs @@ -520,7 +520,7 @@ s! { pub ssi_syscall: i32, pub ssi_call_addr: u64, pub ssi_arch: u32, - _pad: [u8; 28], + _pad: Padding<[u8; 28]>, } pub struct itimerspec { diff --git a/src/new/musl/sys/socket.rs b/src/new/musl/sys/socket.rs index f7105c9bbca16..24731914641cc 100644 --- a/src/new/musl/sys/socket.rs +++ b/src/new/musl/sys/socket.rs @@ -10,16 +10,16 @@ s! { pub msg_namelen: crate::socklen_t, pub msg_iov: *mut crate::iovec, #[cfg(all(target_pointer_width = "64", target_endian = "big"))] - __pad1: c_int, + __pad1: Padding, pub msg_iovlen: c_int, #[cfg(all(target_pointer_width = "64", target_endian = "little"))] - __pad1: c_int, + __pad1: Padding, pub msg_control: *mut c_void, #[cfg(all(target_pointer_width = "64", target_endian = "big"))] - __pad2: c_int, + __pad2: Padding, pub msg_controllen: crate::socklen_t, #[cfg(all(target_pointer_width = "64", target_endian = "little"))] - __pad2: c_int, + __pad2: Padding, pub msg_flags: c_int, } diff --git a/src/new/netbsd/utmpx_.rs b/src/new/netbsd/utmpx_.rs index 813c8fb69712e..7b07b0c126643 100644 --- a/src/new/netbsd/utmpx_.rs +++ b/src/new/netbsd/utmpx_.rs @@ -46,7 +46,7 @@ s! { pub ut_exit: __exit_status, // FIXME(netbsd): when anonymous struct are supported pub ut_ss: crate::sockaddr_storage, pub ut_tv: crate::timeval, - ut_pad: [u8; _UTX_PADSIZE], + ut_pad: Padding<[u8; _UTX_PADSIZE]>, } pub struct __exit_status { diff --git a/src/unix/bsd/apple/mod.rs b/src/unix/bsd/apple/mod.rs index 4501cb40b0268..7b084251d3b8e 100644 --- a/src/unix/bsd/apple/mod.rs +++ b/src/unix/bsd/apple/mod.rs @@ -1313,7 +1313,7 @@ s! { pub ut_type: c_short, pub ut_tv: crate::timeval, pub ut_host: [c_char; _UTX_HOSTSIZE], - ut_pad: [u32; 16], + ut_pad: Padding<[u32; 16]>, } pub struct sigevent { diff --git a/src/unix/bsd/freebsdlike/freebsd/mod.rs b/src/unix/bsd/freebsdlike/freebsd/mod.rs index 6827ab069bf5d..3d5f192ed46b3 100644 --- a/src/unix/bsd/freebsdlike/freebsd/mod.rs +++ b/src/unix/bsd/freebsdlike/freebsd/mod.rs @@ -346,7 +346,7 @@ s! { m_ceilings: [u32; 2], m_rb_link: crate::uintptr_t, #[cfg(target_pointer_width = "32")] - m_pad: u32, + m_pad: Padding, m_spare: [u32; 2], } @@ -1684,7 +1684,7 @@ s_no_extra_traits! { } pub struct in_addr_4in6 { - _ia46_pad32: [u32; 3], + _ia46_pad32: Padding<[u32; 3]>, pub ia46_addr4: crate::in_addr, } diff --git a/src/unix/bsd/netbsdlike/netbsd/mod.rs b/src/unix/bsd/netbsdlike/netbsd/mod.rs index c8fb9c582a57e..af55f5a2aa5bc 100644 --- a/src/unix/bsd/netbsdlike/netbsd/mod.rs +++ b/src/unix/bsd/netbsdlike/netbsd/mod.rs @@ -230,7 +230,7 @@ s! { target_arch = "x86", target_arch = "x86_64" ))] - ptm_pad1: [u8; 3], + ptm_pad1: Padding<[u8; 3]>, // actually a union with a non-unused, 0-initialized field ptm_unused: __pthread_spin_t, #[cfg(any( @@ -239,7 +239,7 @@ s! { target_arch = "x86", target_arch = "x86_64" ))] - ptm_pad2: [u8; 3], + ptm_pad2: Padding<[u8; 3]>, ptm_owner: crate::pthread_t, ptm_waiters: *mut u8, ptm_recursed: c_uint, @@ -1281,9 +1281,9 @@ cfg_if! { pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t { ptm_magic: 0x33330003, ptm_errorcheck: 0, - ptm_pad1: [0; 3], + ptm_pad1: Padding::uninit(), ptm_unused: 0, - ptm_pad2: [0; 3], + ptm_pad2: Padding::uninit(), ptm_waiters: 0 as *mut _, ptm_owner: 0, ptm_recursed: 0, diff --git a/src/unix/bsd/netbsdlike/openbsd/mod.rs b/src/unix/bsd/netbsdlike/openbsd/mod.rs index c9095a0aa66b3..4c35e761ac5a3 100644 --- a/src/unix/bsd/netbsdlike/openbsd/mod.rs +++ b/src/unix/bsd/netbsdlike/openbsd/mod.rs @@ -623,9 +623,9 @@ s! { pub struct sockaddr_storage { pub ss_len: u8, pub ss_family: crate::sa_family_t, - __ss_pad1: [u8; 6], - __ss_pad2: i64, - __ss_pad3: [u8; 240], + __ss_pad1: Padding<[u8; 6]>, + __ss_pad2: Padding, + __ss_pad3: Padding<[u8; 240]>, } pub struct siginfo_t { @@ -634,9 +634,9 @@ s! { pub si_errno: c_int, pub si_addr: *mut c_char, #[cfg(target_pointer_width = "32")] - __pad: [u8; 112], + __pad: Padding<[u8; 112]>, #[cfg(target_pointer_width = "64")] - __pad: [u8; 108], + __pad: Padding<[u8; 108]>, } pub struct lastlog { diff --git a/src/unix/linux_like/linux/gnu/b32/arm/mod.rs b/src/unix/linux_like/linux/gnu/b32/arm/mod.rs index dadaa7a8f6892..930797fbe189d 100644 --- a/src/unix/linux_like/linux/gnu/b32/arm/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/arm/mod.rs @@ -84,15 +84,15 @@ s! { pub st_atime: crate::time_t, pub st_atime_nsec: c_long, #[cfg(gnu_time_bits64)] - _atime_pad: c_int, + _atime_pad: Padding, pub st_mtime: crate::time_t, pub st_mtime_nsec: c_long, #[cfg(gnu_time_bits64)] - _mtime_pad: c_int, + _mtime_pad: Padding, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, #[cfg(gnu_time_bits64)] - _ctime_pad: c_int, + _ctime_pad: Padding, #[cfg(not(gnu_time_bits64))] pub st_ino: crate::ino64_t, } diff --git a/src/unix/linux_like/linux/gnu/b32/mips/mod.rs b/src/unix/linux_like/linux/gnu/b32/mips/mod.rs index 99af57a4460c0..781da2124d2ed 100644 --- a/src/unix/linux_like/linux/gnu/b32/mips/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/mips/mod.rs @@ -45,15 +45,15 @@ s! { pub st_atime: crate::time_t, #[cfg(gnu_time_bits64)] - _atime_pad: c_int, + _atime_pad: Padding, pub st_atime_nsec: c_long, pub st_mtime: crate::time_t, #[cfg(gnu_time_bits64)] - _mtime_pad: c_int, + _mtime_pad: Padding, pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, #[cfg(gnu_time_bits64)] - _ctime_pad: c_int, + _ctime_pad: Padding, pub st_ctime_nsec: c_long, #[cfg(not(gnu_time_bits64))] @@ -98,15 +98,15 @@ s! { pub st_atime: crate::time_t, #[cfg(gnu_time_bits64)] - _atime_pad: c_int, + _atime_pad: Padding, pub st_atime_nsec: c_long, pub st_mtime: crate::time_t, #[cfg(gnu_time_bits64)] - _mtime_pad: c_int, + _mtime_pad: Padding, pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, #[cfg(gnu_time_bits64)] - _ctime_pad: c_int, + _ctime_pad: Padding, pub st_ctime_nsec: c_long, #[cfg(not(gnu_time_bits64))] diff --git a/src/unix/linux_like/linux/gnu/b32/mod.rs b/src/unix/linux_like/linux/gnu/b32/mod.rs index 1855693dc6c7a..f27e1440b6028 100644 --- a/src/unix/linux_like/linux/gnu/b32/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/mod.rs @@ -106,15 +106,15 @@ cfg_if! { pub st_atime: crate::time_t, pub st_atime_nsec: c_long, #[cfg(gnu_time_bits64)] - _atime_pad: c_int, + _atime_pad: Padding, pub st_mtime: crate::time_t, pub st_mtime_nsec: c_long, #[cfg(gnu_time_bits64)] - _mtime_pad: c_int, + _mtime_pad: Padding, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, #[cfg(gnu_time_bits64)] - _ctime_pad: c_int, + _ctime_pad: Padding, #[cfg(not(gnu_file_offset_bits64))] __glibc_reserved4: c_long, diff --git a/src/unix/linux_like/linux/gnu/b32/powerpc.rs b/src/unix/linux_like/linux/gnu/b32/powerpc.rs index c84ee0c95cad5..2b73e355f400d 100644 --- a/src/unix/linux_like/linux/gnu/b32/powerpc.rs +++ b/src/unix/linux_like/linux/gnu/b32/powerpc.rs @@ -79,15 +79,15 @@ s! { pub st_blocks: crate::blkcnt_t, pub st_atime: crate::time_t, #[cfg(gnu_time_bits64)] - _atime_pad: c_int, + _atime_pad: Padding, pub st_atime_nsec: c_long, pub st_mtime: crate::time_t, #[cfg(gnu_time_bits64)] - _mtime_pad: c_int, + _mtime_pad: Padding, pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, #[cfg(gnu_time_bits64)] - _ctime_pad: c_int, + _ctime_pad: Padding, pub st_ctime_nsec: c_long, #[cfg(not(gnu_time_bits64))] __glibc_reserved4: c_ulong, @@ -110,15 +110,15 @@ s! { pub st_blocks: crate::blkcnt64_t, pub st_atime: crate::time_t, #[cfg(gnu_time_bits64)] - _atime_pad: c_int, + _atime_pad: Padding, pub st_atime_nsec: c_long, pub st_mtime: crate::time_t, #[cfg(gnu_time_bits64)] - _mtime_pad: c_int, + _mtime_pad: Padding, pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, #[cfg(gnu_time_bits64)] - _ctime_pad: c_int, + _ctime_pad: Padding, pub st_ctime_nsec: c_long, #[cfg(not(gnu_time_bits64))] __glibc_reserved4: c_ulong, diff --git a/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs b/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs index 2d6957d5e51c7..8d4a642c6e61f 100644 --- a/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs @@ -247,7 +247,7 @@ s_no_extra_traits! { pub struct mcontext_t { __glibc_reserved: [c_ulong; 4], pub signal: c_int, - __pad0: c_int, + __pad0: Padding, pub handler: c_ulong, pub oldmask: c_ulong, pub regs: *mut pt_regs, @@ -262,20 +262,20 @@ s_no_extra_traits! { pub vrregs: [[c_uint; 4]; 32], pub vscr: vscr_t, pub vrsave: c_uint, - __pad: [c_uint; 3], + __pad: Padding<[c_uint; 3]>, } #[repr(align(4))] pub struct vscr_t { #[cfg(target_endian = "big")] - __pad: [c_uint; 3], + __pad: Padding<[c_uint; 3]>, #[cfg(target_endian = "big")] pub vscr_word: c_uint, #[cfg(target_endian = "little")] pub vscr_word: c_uint, #[cfg(target_endian = "little")] - __pad: [c_uint; 3], + __pad: Padding<[c_uint; 3]>, } } 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 56137bdc38e6d..7fe990ae1efb0 100644 --- a/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs +++ b/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs @@ -235,7 +235,7 @@ s! { pub l_len: off_t, pub l_sysid: c_long, pub l_pid: crate::pid_t, - pad: [c_long; 4], + pad: Padding<[c_long; 4]>, } pub struct sysinfo { diff --git a/src/unix/linux_like/mod.rs b/src/unix/linux_like/mod.rs index f4fd1c804144a..dfa62533dfb0c 100644 --- a/src/unix/linux_like/mod.rs +++ b/src/unix/linux_like/mod.rs @@ -220,9 +220,9 @@ s! { pub struct sockaddr_storage { pub ss_family: sa_family_t, #[cfg(target_pointer_width = "32")] - __ss_pad2: [u8; 128 - 2 - 4], + __ss_pad2: Padding<[u8; 128 - 2 - 4]>, #[cfg(target_pointer_width = "64")] - __ss_pad2: [u8; 128 - 2 - 8], + __ss_pad2: Padding<[u8; 128 - 2 - 8]>, __ss_align: size_t, } diff --git a/src/unix/solarish/mod.rs b/src/unix/solarish/mod.rs index 248c90a9ea17e..963246732c437 100644 --- a/src/unix/solarish/mod.rs +++ b/src/unix/solarish/mod.rs @@ -252,7 +252,7 @@ s! { pub ai_socktype: c_int, pub ai_protocol: c_int, #[cfg(target_arch = "sparc64")] - __sparcv9_pad: c_int, + __sparcv9_pad: Padding, pub ai_addrlen: crate::socklen_t, pub ai_canonname: *mut c_char, pub ai_addr: *mut crate::sockaddr, From 5c2fa2f07273aaf92add16af0581e4c9f94026bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Tue, 2 Dec 2025 23:01:54 +0100 Subject: [PATCH 3/5] cleanup: Also padding is padding! As previous commit, but tackle the *padding* fields --- src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs | 4 ++-- src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs | 4 ++-- src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs | 4 ++-- src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs | 4 ++-- src/unix/bsd/netbsdlike/openbsd/mod.rs | 2 +- src/unix/linux_like/android/b32/arm.rs | 2 +- src/unix/linux_like/android/b32/x86/mod.rs | 4 ++-- src/unix/linux_like/android/b64/x86_64/mod.rs | 2 +- src/unix/linux_like/emscripten/mod.rs | 4 ++-- src/unix/linux_like/linux/gnu/b32/x86/mod.rs | 2 +- src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs | 2 +- src/unix/linux_like/linux/musl/b32/arm/mod.rs | 8 ++++---- src/unix/linux_like/linux/musl/b32/hexagon.rs | 4 ++-- src/unix/linux_like/linux/musl/b32/powerpc.rs | 4 ++-- src/unix/linux_like/linux/musl/b32/x86/mod.rs | 10 +++++----- src/unix/linux_like/linux/musl/b64/x86_64/mod.rs | 2 +- src/unix/linux_like/linux/musl/mod.rs | 2 +- src/unix/nto/mod.rs | 2 +- src/unix/redox/mod.rs | 2 +- 19 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs index dc63bdd5e322d..418c1b34f02b7 100644 --- a/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs +++ b/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs @@ -226,10 +226,10 @@ s! { pub st_ino: crate::ino_t, pub st_nlink: crate::nlink_t, pub st_mode: crate::mode_t, - st_padding0: i16, + st_padding0: Padding, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, - st_padding1: i32, + st_padding1: Padding, pub st_rdev: crate::dev_t, #[cfg(target_arch = "x86")] st_atim_ext: i32, diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs index 8c33d611b736d..3367a1e2be418 100644 --- a/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs +++ b/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs @@ -239,10 +239,10 @@ s! { pub st_ino: crate::ino_t, pub st_nlink: crate::nlink_t, pub st_mode: crate::mode_t, - st_padding0: i16, + st_padding0: Padding, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, - st_padding1: i32, + st_padding1: Padding, pub st_rdev: crate::dev_t, #[cfg(target_arch = "x86")] st_atim_ext: i32, diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs index c85f242754ce1..61fa838b5b20e 100644 --- a/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs +++ b/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs @@ -240,10 +240,10 @@ s! { pub st_ino: crate::ino_t, pub st_nlink: crate::nlink_t, pub st_mode: crate::mode_t, - st_padding0: i16, + st_padding0: Padding, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, - st_padding1: i32, + st_padding1: Padding, pub st_rdev: crate::dev_t, #[cfg(target_arch = "x86")] st_atim_ext: i32, diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs index 5e939543c65b5..ca2dcd5c8f4e8 100644 --- a/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs +++ b/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs @@ -242,10 +242,10 @@ s! { pub st_ino: crate::ino_t, pub st_nlink: crate::nlink_t, pub st_mode: crate::mode_t, - st_padding0: i16, + st_padding0: Padding, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, - st_padding1: i32, + st_padding1: Padding, pub st_rdev: crate::dev_t, #[cfg(target_arch = "x86")] st_atim_ext: i32, diff --git a/src/unix/bsd/netbsdlike/openbsd/mod.rs b/src/unix/bsd/netbsdlike/openbsd/mod.rs index 4c35e761ac5a3..769527b810fa2 100644 --- a/src/unix/bsd/netbsdlike/openbsd/mod.rs +++ b/src/unix/bsd/netbsdlike/openbsd/mod.rs @@ -616,7 +616,7 @@ s! { pub d_reclen: u16, pub d_type: u8, pub d_namlen: u8, - __d_padding: [u8; 4], + __d_padding: Padding<[u8; 4]>, pub d_name: [c_char; 256], } diff --git a/src/unix/linux_like/android/b32/arm.rs b/src/unix/linux_like/android/b32/arm.rs index 1d2d34dfedc40..66375876e7760 100644 --- a/src/unix/linux_like/android/b32/arm.rs +++ b/src/unix/linux_like/android/b32/arm.rs @@ -32,7 +32,7 @@ s! { pub struct __c_anonymous_uc_sigmask_with_padding { pub uc_sigmask: crate::sigset_t, /* Android has a wrong (smaller) sigset_t on x86. */ - __padding_rt_sigset: u32, + __padding_rt_sigset: Padding, } pub struct ucontext_t { diff --git a/src/unix/linux_like/android/b32/x86/mod.rs b/src/unix/linux_like/android/b32/x86/mod.rs index 22a8766e88bb3..7266cf2c31363 100644 --- a/src/unix/linux_like/android/b32/x86/mod.rs +++ b/src/unix/linux_like/android/b32/x86/mod.rs @@ -31,7 +31,7 @@ s! { pub struct __c_anonymous_uc_sigmask_with_padding { pub uc_sigmask: crate::sigset_t, /* Android has a wrong (smaller) sigset_t on x86. */ - __padding_rt_sigset: u32, + __padding_rt_sigset: Padding, } pub struct ucontext_t { @@ -40,7 +40,7 @@ s! { pub uc_stack: crate::stack_t, pub uc_mcontext: mcontext_t, pub uc_sigmask__c_anonymous_union: __c_anonymous_uc_sigmask, - __padding_rt_sigset: u32, + __padding_rt_sigset: Padding, __fpregs_mem: _libc_fpstate, } } diff --git a/src/unix/linux_like/android/b64/x86_64/mod.rs b/src/unix/linux_like/android/b64/x86_64/mod.rs index 801235d13ec1b..0f3b74131449a 100644 --- a/src/unix/linux_like/android/b64/x86_64/mod.rs +++ b/src/unix/linux_like/android/b64/x86_64/mod.rs @@ -151,7 +151,7 @@ s! { pub mxcr_mask: c_uint, pub st_space: [c_uint; 32], pub xmm_space: [c_uint; 64], - padding: [c_uint; 24], + padding: Padding<[c_uint; 24]>, } } diff --git a/src/unix/linux_like/emscripten/mod.rs b/src/unix/linux_like/emscripten/mod.rs index 6bb961520d55f..72433bf471986 100644 --- a/src/unix/linux_like/emscripten/mod.rs +++ b/src/unix/linux_like/emscripten/mod.rs @@ -223,7 +223,7 @@ s! { pub struct stat { pub st_dev: crate::dev_t, #[cfg(emscripten_old_stat_abi)] - __st_dev_padding: c_int, + __st_dev_padding: Padding, #[cfg(emscripten_old_stat_abi)] __st_ino_truncated: c_long, pub st_mode: mode_t, @@ -232,7 +232,7 @@ s! { pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, #[cfg(emscripten_old_stat_abi)] - __st_rdev_padding: c_int, + __st_rdev_padding: Padding, pub st_size: off_t, pub st_blksize: crate::blksize_t, pub st_blocks: crate::blkcnt_t, diff --git a/src/unix/linux_like/linux/gnu/b32/x86/mod.rs b/src/unix/linux_like/linux/gnu/b32/x86/mod.rs index 8c80598f84f41..a5514b585c6e6 100644 --- a/src/unix/linux_like/linux/gnu/b32/x86/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/x86/mod.rs @@ -275,7 +275,7 @@ s! { __reserved: Padding, pub st_space: [c_long; 32], pub xmm_space: [c_long; 32], - padding: [c_long; 56], + padding: Padding<[c_long; 56]>, } pub struct ucontext_t { diff --git a/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs b/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs index 8654559b148fb..7edd7c5664001 100644 --- a/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs @@ -301,7 +301,7 @@ s! { pub mxcr_mask: c_uint, pub st_space: [c_uint; 32], pub xmm_space: [c_uint; 64], - padding: [c_uint; 24], + padding: Padding<[c_uint; 24]>, } pub struct ucontext_t { 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 8051e6cf8253b..dea804a527026 100644 --- a/src/unix/linux_like/linux/musl/b32/arm/mod.rs +++ b/src/unix/linux_like/linux/musl/b32/arm/mod.rs @@ -6,14 +6,14 @@ pub type wchar_t = u32; s! { pub struct stat { pub st_dev: crate::dev_t, - __st_dev_padding: c_int, + __st_dev_padding: Padding, __st_ino_truncated: c_long, pub st_mode: crate::mode_t, pub st_nlink: crate::nlink_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __st_rdev_padding: c_int, + __st_rdev_padding: Padding, pub st_size: off_t, pub st_blksize: crate::blksize_t, pub st_blocks: crate::blkcnt_t, @@ -28,14 +28,14 @@ s! { pub struct stat64 { pub st_dev: crate::dev_t, - __st_dev_padding: c_int, + __st_dev_padding: Padding, __st_ino_truncated: c_long, pub st_mode: crate::mode_t, pub st_nlink: crate::nlink_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __st_rdev_padding: c_int, + __st_rdev_padding: Padding, pub st_size: off_t, pub st_blksize: crate::blksize_t, pub st_blocks: crate::blkcnt_t, diff --git a/src/unix/linux_like/linux/musl/b32/hexagon.rs b/src/unix/linux_like/linux/musl/b32/hexagon.rs index 54bfbda97ed5c..8ce439cee5bf9 100644 --- a/src/unix/linux_like/linux/musl/b32/hexagon.rs +++ b/src/unix/linux_like/linux/musl/b32/hexagon.rs @@ -12,10 +12,10 @@ s! { pub st_uid: c_uint, pub st_gid: c_uint, pub st_rdev: c_ulonglong, - __st_rdev_padding: c_ulong, + __st_rdev_padding: Padding, pub st_size: c_longlong, pub st_blksize: crate::blksize_t, - __st_blksize_padding: c_int, + __st_blksize_padding: Padding, pub st_blocks: crate::blkcnt_t, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, diff --git a/src/unix/linux_like/linux/musl/b32/powerpc.rs b/src/unix/linux_like/linux/musl/b32/powerpc.rs index 984c88b86d143..4bf82c7b0cac4 100644 --- a/src/unix/linux_like/linux/musl/b32/powerpc.rs +++ b/src/unix/linux_like/linux/musl/b32/powerpc.rs @@ -23,7 +23,7 @@ s! { pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __st_rdev_padding: c_short, + __st_rdev_padding: Padding, pub st_size: off_t, pub st_blksize: crate::blksize_t, pub st_blocks: crate::blkcnt_t, @@ -44,7 +44,7 @@ s! { pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __st_rdev_padding: c_short, + __st_rdev_padding: Padding, pub st_size: off_t, pub st_blksize: crate::blksize_t, pub st_blocks: crate::blkcnt_t, 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 c51614240dbc3..ada436fc99b56 100644 --- a/src/unix/linux_like/linux/musl/b32/x86/mod.rs +++ b/src/unix/linux_like/linux/musl/b32/x86/mod.rs @@ -6,14 +6,14 @@ pub type wchar_t = i32; s! { pub struct stat { pub st_dev: crate::dev_t, - __st_dev_padding: c_int, + __st_dev_padding: Padding, __st_ino_truncated: c_long, pub st_mode: crate::mode_t, pub st_nlink: crate::nlink_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __st_rdev_padding: c_int, + __st_rdev_padding: Padding, pub st_size: off_t, pub st_blksize: crate::blksize_t, pub st_blocks: crate::blkcnt_t, @@ -28,14 +28,14 @@ s! { pub struct stat64 { pub st_dev: crate::dev_t, - __st_dev_padding: c_int, + __st_dev_padding: Padding, __st_ino_truncated: c_long, pub st_mode: crate::mode_t, pub st_nlink: crate::nlink_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __st_rdev_padding: c_int, + __st_rdev_padding: Padding, pub st_size: off_t, pub st_blksize: crate::blksize_t, pub st_blocks: crate::blkcnt_t, @@ -124,7 +124,7 @@ s! { __reserved: Padding, pub st_space: [c_long; 32], pub xmm_space: [c_long; 32], - padding: [c_long; 56], + padding: Padding<[c_long; 56]>, } pub struct ucontext_t { diff --git a/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs b/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs index 364e16b5c9257..f7f449cbc8936 100644 --- a/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs +++ b/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs @@ -157,7 +157,7 @@ s! { pub mxcr_mask: c_uint, pub st_space: [c_uint; 32], pub xmm_space: [c_uint; 64], - padding: [c_uint; 24], + padding: Padding<[c_uint; 24]>, } pub struct ucontext_t { diff --git a/src/unix/linux_like/linux/musl/mod.rs b/src/unix/linux_like/linux/musl/mod.rs index 17dd00fa79e50..ea6bac7872c16 100644 --- a/src/unix/linux_like/linux/musl/mod.rs +++ b/src/unix/linux_like/linux/musl/mod.rs @@ -230,7 +230,7 @@ s! { __opaque: *mut c_void, __padding: Padding<[*mut c_void; 4usize]>, __nsub2: size_t, - __padding2: c_char, + __padding2: Padding, } pub struct rtentry { diff --git a/src/unix/nto/mod.rs b/src/unix/nto/mod.rs index 69b835d68c094..e04e00929b430 100644 --- a/src/unix/nto/mod.rs +++ b/src/unix/nto/mod.rs @@ -615,7 +615,7 @@ s! { pub bs_recv: u64, pub bs_drop: u64, pub bs_capt: u64, - bs_padding: [u64; 13], + bs_padding: Padding<[u64; 13]>, } #[cfg(target_env = "nto71_iosock")] diff --git a/src/unix/redox/mod.rs b/src/unix/redox/mod.rs index 79f3e579b353e..6dc5fcc1198ed 100644 --- a/src/unix/redox/mod.rs +++ b/src/unix/redox/mod.rs @@ -61,7 +61,7 @@ s! { pub struct sockaddr_storage { pub ss_family: crate::sa_family_t, - __ss_padding: [u8; 128 - size_of::() - size_of::()], + __ss_padding: Padding<[u8; 128 - size_of::() - size_of::()]>, __ss_align: c_ulong, } From cac4bf0466495f1012c88a319e97cadc45a579d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Wed, 3 Dec 2025 01:38:27 +0100 Subject: [PATCH 4/5] cleanup: Also mark reserved fields as Padding Some were already done, more were missing --- src/unix/bsd/apple/b64/x86_64/mod.rs | 4 +-- src/unix/haiku/mod.rs | 2 +- src/unix/haiku/native.rs | 4 +-- src/unix/hurd/mod.rs | 4 +-- src/unix/linux_like/android/b32/mod.rs | 4 +-- src/unix/linux_like/android/b64/mod.rs | 12 +++---- src/unix/linux_like/android/mod.rs | 2 +- src/unix/linux_like/linux/gnu/b32/arm/mod.rs | 10 +++--- src/unix/linux_like/linux/gnu/b32/csky/mod.rs | 10 +++--- src/unix/linux_like/linux/gnu/b32/m68k/mod.rs | 24 ++++++------- src/unix/linux_like/linux/gnu/b32/mips/mod.rs | 18 +++++----- src/unix/linux_like/linux/gnu/b32/mod.rs | 8 ++--- src/unix/linux_like/linux/gnu/b32/powerpc.rs | 34 +++++++++---------- .../linux_like/linux/gnu/b32/riscv32/mod.rs | 4 +-- .../linux_like/linux/gnu/b32/sparc/mod.rs | 12 +++---- src/unix/linux_like/linux/gnu/b32/x86/mod.rs | 10 +++--- src/unix/linux_like/linux/gnu/b64/mod.rs | 8 ++--- .../linux_like/linux/gnu/b64/powerpc64/mod.rs | 2 +- src/unix/linux_like/linux/gnu/b64/s390x.rs | 6 ++-- src/unix/linux_like/linux/gnu/mod.rs | 6 ++-- src/unix/linux_like/linux/musl/mod.rs | 4 +-- .../linux/uclibc/mips/mips32/mod.rs | 16 ++++----- .../linux/uclibc/mips/mips64/mod.rs | 4 +-- src/unix/nto/mod.rs | 2 +- src/unix/nto/neutrino.rs | 12 +++---- src/unix/nto/x86_64.rs | 2 +- 26 files changed, 112 insertions(+), 112 deletions(-) diff --git a/src/unix/bsd/apple/b64/x86_64/mod.rs b/src/unix/bsd/apple/b64/x86_64/mod.rs index 2b22f489b9c6b..dac8c9e3d336d 100644 --- a/src/unix/bsd/apple/b64/x86_64/mod.rs +++ b/src/unix/bsd/apple/b64/x86_64/mod.rs @@ -10,8 +10,8 @@ s! { // FIXME(1.0): This should not implement `PartialEq` #[allow(unpredictable_function_pointer_comparisons)] pub struct malloc_zone_t { - _reserved1: *mut c_void, - _reserved2: *mut c_void, + _reserved1: Padding<*mut c_void>, + _reserved2: Padding<*mut c_void>, pub size: Option size_t>, pub malloc: diff --git a/src/unix/haiku/mod.rs b/src/unix/haiku/mod.rs index 31f867f2264bd..d9397750c4821 100644 --- a/src/unix/haiku/mod.rs +++ b/src/unix/haiku/mod.rs @@ -495,7 +495,7 @@ s! { pub ut_user: [c_char; 32], pub ut_line: [c_char; 16], pub ut_host: [c_char; 128], - __ut_reserved: [c_char; 64], + __ut_reserved: Padding<[c_char; 64]>, } } diff --git a/src/unix/haiku/native.rs b/src/unix/haiku/native.rs index acf6b3486de79..99ceab8a7519b 100644 --- a/src/unix/haiku/native.rs +++ b/src/unix/haiku/native.rs @@ -422,10 +422,10 @@ s! { pub model: u32, pub family: u32, pub tpe: u32, - __reserved_0: u32, + __reserved_0: Padding, pub extended_model: u32, pub extended_family: u32, - __reserved_1: u32, + __reserved_1: Padding, pub brand_index: u32, pub clflush: u32, pub logical_cpus: u32, diff --git a/src/unix/hurd/mod.rs b/src/unix/hurd/mod.rs index d4f444f7b7f39..26bad333af2db 100644 --- a/src/unix/hurd/mod.rs +++ b/src/unix/hurd/mod.rs @@ -596,7 +596,7 @@ s! { pub aio_offset: off_t, #[cfg(all(not(target_arch = "x86_64"), target_pointer_width = "32"))] __unused1: Padding<[c_char; 4]>, - __glibc_reserved: [c_char; 32], + __glibc_reserved: Padding<[c_char; 32]>, } pub struct mq_attr { @@ -1041,7 +1041,7 @@ s! { pub ut_tv: __timeval, pub ut_addr_v6: [i32; 4], - __glibc_reserved: [c_char; 20], + __glibc_reserved: Padding<[c_char; 20]>, } } diff --git a/src/unix/linux_like/android/b32/mod.rs b/src/unix/linux_like/android/b32/mod.rs index 62c3c4c32a4b6..7927a2390ccf2 100644 --- a/src/unix/linux_like/android/b32/mod.rs +++ b/src/unix/linux_like/android/b32/mod.rs @@ -124,7 +124,7 @@ s! { pendingReaders: c_int, pendingWriters: c_int, attr: i32, - __reserved: [c_char; 12], + __reserved: Padding<[c_char; 12]>, } pub struct pthread_barrier_t { @@ -209,7 +209,7 @@ pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t { pendingReaders: 0, pendingWriters: 0, attr: 0, - __reserved: [0; 12], + __reserved: Padding::uninit(), }; pub const PTHREAD_STACK_MIN: size_t = 4096 * 2; pub const CPU_SETSIZE: size_t = 32; diff --git a/src/unix/linux_like/android/b64/mod.rs b/src/unix/linux_like/android/b64/mod.rs index 05ec19d85ad5e..9fc1819379e56 100644 --- a/src/unix/linux_like/android/b64/mod.rs +++ b/src/unix/linux_like/android/b64/mod.rs @@ -118,12 +118,12 @@ s! { pub struct pthread_mutex_t { value: c_int, - __reserved: [c_char; 36], + __reserved: Padding<[c_char; 36]>, } pub struct pthread_cond_t { value: c_int, - __reserved: [c_char; 44], + __reserved: Padding<[c_char; 44]>, } pub struct pthread_rwlock_t { @@ -132,7 +132,7 @@ s! { pendingReaders: c_int, pendingWriters: c_int, attr: i32, - __reserved: [c_char; 36], + __reserved: Padding<[c_char; 36]>, } pub struct sigset64_t { @@ -155,11 +155,11 @@ pub const RTLD_DEFAULT: *mut c_void = ptr::null_mut(); pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t { value: 0, - __reserved: [0; 36], + __reserved: Padding::uninit(), }; pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t { value: 0, - __reserved: [0; 44], + __reserved: Padding::uninit(), }; pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t { numLocks: 0, @@ -167,7 +167,7 @@ pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t { pendingReaders: 0, pendingWriters: 0, attr: 0, - __reserved: [0; 36], + __reserved: Padding::uninit(), }; pub const PTHREAD_STACK_MIN: size_t = 4096 * 4; pub const CPU_SETSIZE: size_t = 1024; diff --git a/src/unix/linux_like/android/mod.rs b/src/unix/linux_like/android/mod.rs index 61bd8608287ef..e3aee924c8f64 100644 --- a/src/unix/linux_like/android/mod.rs +++ b/src/unix/linux_like/android/mod.rs @@ -158,7 +158,7 @@ s! { pub f_flag: c_ulong, pub f_namemax: c_ulong, #[cfg(target_pointer_width = "64")] - __f_reserved: [u32; 6], + __f_reserved: Padding<[u32; 6]>, } pub struct signalfd_siginfo { diff --git a/src/unix/linux_like/linux/gnu/b32/arm/mod.rs b/src/unix/linux_like/linux/gnu/b32/arm/mod.rs index 930797fbe189d..57d6d74bef620 100644 --- a/src/unix/linux_like/linux/gnu/b32/arm/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/arm/mod.rs @@ -151,20 +151,20 @@ s! { pub msg_perm: crate::ipc_perm, pub msg_stime: crate::time_t, #[cfg(not(gnu_time_bits64))] - __glibc_reserved1: c_ulong, + __glibc_reserved1: Padding, pub msg_rtime: crate::time_t, #[cfg(not(gnu_time_bits64))] - __glibc_reserved2: c_ulong, + __glibc_reserved2: Padding, pub msg_ctime: crate::time_t, #[cfg(not(gnu_time_bits64))] - __glibc_reserved3: c_ulong, + __glibc_reserved3: Padding, pub __msg_cbytes: c_ulong, pub msg_qnum: crate::msgqnum_t, pub msg_qbytes: crate::msglen_t, pub msg_lspid: crate::pid_t, pub msg_lrpid: crate::pid_t, - __glibc_reserved4: c_ulong, - __glibc_reserved5: c_ulong, + __glibc_reserved4: Padding, + __glibc_reserved5: Padding, } pub struct siginfo_t { diff --git a/src/unix/linux_like/linux/gnu/b32/csky/mod.rs b/src/unix/linux_like/linux/gnu/b32/csky/mod.rs index 978b4398e9073..f346034e09525 100644 --- a/src/unix/linux_like/linux/gnu/b32/csky/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/csky/mod.rs @@ -134,18 +134,18 @@ s! { pub struct msqid_ds { pub msg_perm: crate::ipc_perm, pub msg_stime: crate::time_t, - __glibc_reserved1: c_ulong, + __glibc_reserved1: Padding, pub msg_rtime: crate::time_t, - __glibc_reserved2: c_ulong, + __glibc_reserved2: Padding, pub msg_ctime: crate::time_t, - __glibc_reserved3: c_ulong, + __glibc_reserved3: Padding, pub __msg_cbytes: c_ulong, pub msg_qnum: crate::msgqnum_t, pub msg_qbytes: crate::msglen_t, pub msg_lspid: crate::pid_t, pub msg_lrpid: crate::pid_t, - __glibc_reserved4: c_ulong, - __glibc_reserved5: c_ulong, + __glibc_reserved4: Padding, + __glibc_reserved5: Padding, } pub struct siginfo_t { diff --git a/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs b/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs index d2eb7ee3ec9b4..01244f4277b2a 100644 --- a/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs @@ -58,8 +58,8 @@ s! { pub mode: crate::mode_t, __seq: c_ushort, __pad1: Padding, - __glibc_reserved1: c_ulong, - __glibc_reserved2: c_ulong, + __glibc_reserved1: Padding, + __glibc_reserved2: Padding, } pub struct stat64 { @@ -119,33 +119,33 @@ s! { pub shm_perm: crate::ipc_perm, pub shm_segsz: size_t, pub shm_atime: crate::time_t, - __glibc_reserved1: c_long, + __glibc_reserved1: Padding, pub shm_dtime: crate::time_t, - __glibc_reserved2: c_long, + __glibc_reserved2: Padding, pub shm_ctime: crate::time_t, - __glibc_reserved3: c_long, + __glibc_reserved3: Padding, pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: crate::shmatt_t, - __glibc_reserved5: c_ulong, - __glibc_reserved6: c_ulong, + __glibc_reserved5: Padding, + __glibc_reserved6: Padding, } pub struct msqid_ds { pub msg_perm: crate::ipc_perm, pub msg_stime: crate::time_t, - __glibc_reserved1: c_uint, + __glibc_reserved1: Padding, pub msg_rtime: crate::time_t, - __glibc_reserved2: c_uint, + __glibc_reserved2: Padding, pub msg_ctime: crate::time_t, - __glibc_reserved3: c_uint, + __glibc_reserved3: Padding, pub __msg_cbytes: c_ulong, pub msg_qnum: crate::msgqnum_t, pub msg_qbytes: crate::msglen_t, pub msg_lspid: crate::pid_t, pub msg_lrpid: crate::pid_t, - __glibc_reserved4: c_ulong, - __glibc_reserved5: c_ulong, + __glibc_reserved4: Padding, + __glibc_reserved5: Padding, } pub struct siginfo_t { diff --git a/src/unix/linux_like/linux/gnu/b32/mips/mod.rs b/src/unix/linux_like/linux/gnu/b32/mips/mod.rs index 781da2124d2ed..d7f8a6077a5be 100644 --- a/src/unix/linux_like/linux/gnu/b32/mips/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/mips/mod.rs @@ -218,27 +218,27 @@ s! { pub struct msqid_ds { pub msg_perm: crate::ipc_perm, #[cfg(all(not(gnu_time_bits64), target_endian = "big"))] - __glibc_reserved1: c_ulong, + __glibc_reserved1: Padding, pub msg_stime: crate::time_t, #[cfg(all(not(gnu_time_bits64), target_endian = "little"))] - __glibc_reserved1: c_ulong, + __glibc_reserved1: Padding, #[cfg(all(not(gnu_time_bits64), target_endian = "big"))] - __glibc_reserved2: c_ulong, + __glibc_reserved2: Padding, pub msg_rtime: crate::time_t, #[cfg(all(not(gnu_time_bits64), target_endian = "little"))] - __glibc_reserved2: c_ulong, + __glibc_reserved2: Padding, #[cfg(all(not(gnu_time_bits64), target_endian = "big"))] - __glibc_reserved3: c_ulong, + __glibc_reserved3: Padding, pub msg_ctime: crate::time_t, #[cfg(target_endian = "little")] - __glibc_reserved3: c_ulong, + __glibc_reserved3: Padding, __msg_cbytes: c_ulong, pub msg_qnum: crate::msgqnum_t, pub msg_qbytes: crate::msglen_t, pub msg_lspid: crate::pid_t, pub msg_lrpid: crate::pid_t, - __glibc_reserved4: c_ulong, - __glibc_reserved5: c_ulong, + __glibc_reserved4: Padding, + __glibc_reserved5: Padding, } pub struct flock { @@ -250,7 +250,7 @@ s! { pub l_sysid: c_long, pub l_pid: crate::pid_t, #[cfg(not(gnu_file_offset_bits64))] - __glibc_reserved0: [c_long; 4], + __glibc_reserved0: Padding<[c_long; 4]>, } } diff --git a/src/unix/linux_like/linux/gnu/b32/mod.rs b/src/unix/linux_like/linux/gnu/b32/mod.rs index f27e1440b6028..418b4d6774bca 100644 --- a/src/unix/linux_like/linux/gnu/b32/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/mod.rs @@ -117,9 +117,9 @@ cfg_if! { _ctime_pad: Padding, #[cfg(not(gnu_file_offset_bits64))] - __glibc_reserved4: c_long, + __glibc_reserved4: Padding, #[cfg(not(gnu_file_offset_bits64))] - __glibc_reserved5: c_long, + __glibc_reserved5: Padding, #[cfg(all(not(gnu_time_bits64), gnu_file_offset_bits64))] pub st_ino: crate::ino_t, } @@ -207,8 +207,8 @@ s! { )) ))] __reserved2: Padding, - __glibc_reserved3: crate::__syscall_ulong_t, - __glibc_reserved4: crate::__syscall_ulong_t, + __glibc_reserved3: Padding, + __glibc_reserved4: Padding, } #[cfg(gnu_time_bits64)] diff --git a/src/unix/linux_like/linux/gnu/b32/powerpc.rs b/src/unix/linux_like/linux/gnu/b32/powerpc.rs index 2b73e355f400d..690ff78da17d9 100644 --- a/src/unix/linux_like/linux/gnu/b32/powerpc.rs +++ b/src/unix/linux_like/linux/gnu/b32/powerpc.rs @@ -58,8 +58,8 @@ s! { pub mode: crate::mode_t, __seq: u32, __pad1: Padding, - __glibc_reserved1: u64, - __glibc_reserved2: u64, + __glibc_reserved1: Padding, + __glibc_reserved2: Padding, } pub struct stat { @@ -90,9 +90,9 @@ s! { _ctime_pad: Padding, pub st_ctime_nsec: c_long, #[cfg(not(gnu_time_bits64))] - __glibc_reserved4: c_ulong, + __glibc_reserved4: Padding, #[cfg(not(gnu_time_bits64))] - __glibc_reserved5: c_ulong, + __glibc_reserved5: Padding, } pub struct stat64 { @@ -121,9 +121,9 @@ s! { _ctime_pad: Padding, pub st_ctime_nsec: c_long, #[cfg(not(gnu_time_bits64))] - __glibc_reserved4: c_ulong, + __glibc_reserved4: Padding, #[cfg(not(gnu_time_bits64))] - __glibc_reserved5: c_ulong, + __glibc_reserved5: Padding, } pub struct statfs64 { @@ -162,43 +162,43 @@ s! { #[cfg(gnu_time_bits64)] pub shm_segsz: size_t, #[cfg(not(gnu_time_bits64))] - __glibc_reserved1: c_uint, + __glibc_reserved1: Padding, pub shm_atime: crate::time_t, #[cfg(not(gnu_time_bits64))] - __glibc_reserved2: c_uint, + __glibc_reserved2: Padding, pub shm_dtime: crate::time_t, #[cfg(not(gnu_time_bits64))] - __glibc_reserved3: c_uint, + __glibc_reserved3: Padding, pub shm_ctime: crate::time_t, #[cfg(not(gnu_time_bits64))] - __glibc_reserved4: c_uint, + __glibc_reserved4: Padding, #[cfg(not(gnu_time_bits64))] pub shm_segsz: size_t, pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: crate::shmatt_t, - __glibc_reserved5: c_ulong, - __glibc_reserved6: c_ulong, + __glibc_reserved5: Padding, + __glibc_reserved6: Padding, } pub struct msqid_ds { pub msg_perm: crate::ipc_perm, #[cfg(not(gnu_time_bits64))] - __glibc_reserved1: c_uint, + __glibc_reserved1: Padding, pub msg_stime: crate::time_t, #[cfg(not(gnu_time_bits64))] - __glibc_reserved2: c_uint, + __glibc_reserved2: Padding, pub msg_rtime: crate::time_t, #[cfg(not(gnu_time_bits64))] - __glibc_reserved3: c_uint, + __glibc_reserved3: Padding, pub msg_ctime: crate::time_t, pub __msg_cbytes: c_ulong, pub msg_qnum: crate::msgqnum_t, pub msg_qbytes: crate::msglen_t, pub msg_lspid: crate::pid_t, pub msg_lrpid: crate::pid_t, - __glibc_reserved4: c_ulong, - __glibc_reserved5: c_ulong, + __glibc_reserved4: Padding, + __glibc_reserved5: Padding, } pub struct siginfo_t { diff --git a/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs b/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs index 8da10a3c543b6..5484a68bd1ec1 100644 --- a/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs @@ -19,8 +19,8 @@ s! { pub msg_qbytes: crate::msglen_t, pub msg_lspid: crate::pid_t, pub msg_lrpid: crate::pid_t, - __glibc_reserved4: c_ulong, - __glibc_reserved5: c_ulong, + __glibc_reserved4: Padding, + __glibc_reserved5: Padding, } pub struct stat64 { diff --git a/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs b/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs index 303d4a1135715..70959422e496d 100644 --- a/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs @@ -86,8 +86,8 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __glibc_reserved4: c_ulong, - __glibc_reserved5: c_ulong, + __glibc_reserved4: Padding, + __glibc_reserved5: Padding, } pub struct stat64 { @@ -108,8 +108,8 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __glibc_reserved4: c_ulong, - __glibc_reserved5: c_ulong, + __glibc_reserved4: Padding, + __glibc_reserved5: Padding, } pub struct statfs64 { @@ -195,8 +195,8 @@ s! { pub msg_qbytes: crate::msglen_t, pub msg_lspid: crate::pid_t, pub msg_lrpid: crate::pid_t, - __glibc_reserved4: c_ulong, - __glibc_reserved5: c_ulong, + __glibc_reserved4: Padding, + __glibc_reserved5: Padding, } } diff --git a/src/unix/linux_like/linux/gnu/b32/x86/mod.rs b/src/unix/linux_like/linux/gnu/b32/x86/mod.rs index a5514b585c6e6..4b3c1166ef33e 100644 --- a/src/unix/linux_like/linux/gnu/b32/x86/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/x86/mod.rs @@ -225,20 +225,20 @@ s! { pub msg_perm: crate::ipc_perm, pub msg_stime: crate::time_t, #[cfg(not(gnu_time_bits64))] - __glibc_reserved1: c_ulong, + __glibc_reserved1: Padding, pub msg_rtime: crate::time_t, #[cfg(not(gnu_time_bits64))] - __glibc_reserved2: c_ulong, + __glibc_reserved2: Padding, pub msg_ctime: crate::time_t, #[cfg(not(gnu_time_bits64))] - __glibc_reserved3: c_ulong, + __glibc_reserved3: Padding, pub __msg_cbytes: c_ulong, pub msg_qnum: crate::msgqnum_t, pub msg_qbytes: crate::msglen_t, pub msg_lspid: crate::pid_t, pub msg_lrpid: crate::pid_t, - __glibc_reserved4: c_ulong, - __glibc_reserved5: c_ulong, + __glibc_reserved4: Padding, + __glibc_reserved5: Padding, } pub struct siginfo_t { diff --git a/src/unix/linux_like/linux/gnu/b64/mod.rs b/src/unix/linux_like/linux/gnu/b64/mod.rs index 5a3022117c2a3..3d442a6d8129d 100644 --- a/src/unix/linux_like/linux/gnu/b64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/mod.rs @@ -63,8 +63,8 @@ s! { pub msg_qbytes: crate::msglen_t, pub msg_lspid: crate::pid_t, pub msg_lrpid: crate::pid_t, - __glibc_reserved4: u64, - __glibc_reserved5: u64, + __glibc_reserved4: Padding, + __glibc_reserved5: Padding, } pub struct semid_ds { @@ -94,8 +94,8 @@ s! { )))] __reserved2: Padding, pub sem_nsems: crate::__syscall_ulong_t, - __glibc_reserved3: crate::__syscall_ulong_t, - __glibc_reserved4: crate::__syscall_ulong_t, + __glibc_reserved3: Padding, + __glibc_reserved4: Padding, } pub struct timex { diff --git a/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs b/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs index 8d4a642c6e61f..ee2cd21dec783 100644 --- a/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs @@ -245,7 +245,7 @@ s_no_extra_traits! { } pub struct mcontext_t { - __glibc_reserved: [c_ulong; 4], + __glibc_reserved: Padding<[c_ulong; 4]>, pub signal: c_int, __pad0: Padding, pub handler: c_ulong, diff --git a/src/unix/linux_like/linux/gnu/b64/s390x.rs b/src/unix/linux_like/linux/gnu/b64/s390x.rs index 2d7256a8722b8..9c4c2f81772b6 100644 --- a/src/unix/linux_like/linux/gnu/b64/s390x.rs +++ b/src/unix/linux_like/linux/gnu/b64/s390x.rs @@ -20,7 +20,7 @@ s! { #[allow(unpredictable_function_pointer_comparisons)] pub struct sigaction { pub sa_sigaction: crate::sighandler_t, - __glibc_reserved0: c_int, + __glibc_reserved0: Padding, pub sa_flags: c_int, pub sa_restorer: Option, pub sa_mask: crate::sigset_t, @@ -89,7 +89,7 @@ s! { pub st_ctime_nsec: c_long, pub st_blksize: crate::blksize_t, pub st_blocks: crate::blkcnt_t, - __glibc_reserved: [c_long; 3], + __glibc_reserved: Padding<[c_long; 3]>, } pub struct stat64 { @@ -110,7 +110,7 @@ s! { pub st_ctime_nsec: c_long, pub st_blksize: crate::blksize_t, pub st_blocks: crate::blkcnt64_t, - __glibc_reserved: [c_long; 3], + __glibc_reserved: Padding<[c_long; 3]>, } pub struct pthread_attr_t { diff --git a/src/unix/linux_like/linux/gnu/mod.rs b/src/unix/linux_like/linux/gnu/mod.rs index 6a265560ddd40..2025c315bc1ea 100644 --- a/src/unix/linux_like/linux/gnu/mod.rs +++ b/src/unix/linux_like/linux/gnu/mod.rs @@ -233,7 +233,7 @@ s! { pub aio_buf: crate::__u64, pub aio_nbytes: crate::__u64, pub aio_offset: crate::__s64, - aio_reserved2: crate::__u64, + aio_reserved2: Padding, pub aio_flags: crate::__u32, pub aio_resfd: crate::__u32, } @@ -370,7 +370,7 @@ s! { pub ut_tv: __timeval, pub ut_addr_v6: [i32; 4], - __glibc_reserved: [c_char; 20], + __glibc_reserved: Padding<[c_char; 20]>, } } @@ -421,7 +421,7 @@ s_no_extra_traits! { target_pointer_width = "32" ))] __pad: Padding<[c_char; 4]>, - __glibc_reserved: [c_char; 32], + __glibc_reserved: Padding<[c_char; 32]>, } // Internal, for casts to access union fields diff --git a/src/unix/linux_like/linux/musl/mod.rs b/src/unix/linux_like/linux/musl/mod.rs index ea6bac7872c16..17f79556b534e 100644 --- a/src/unix/linux_like/linux/musl/mod.rs +++ b/src/unix/linux_like/linux/musl/mod.rs @@ -173,7 +173,7 @@ s! { pub f_fsid: c_ulong, pub f_flag: c_ulong, pub f_namemax: c_ulong, - __f_reserved: [c_int; 6], + __f_reserved: Padding<[c_int; 6]>, } pub struct statvfs64 { @@ -193,7 +193,7 @@ s! { pub f_fsid: c_ulong, pub f_flag: c_ulong, pub f_namemax: c_ulong, - __f_reserved: [c_int; 6], + __f_reserved: Padding<[c_int; 6]>, } // PowerPC implementations are special, see the subfolders 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 7fe990ae1efb0..93ed7ab213335 100644 --- a/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs +++ b/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs @@ -150,27 +150,27 @@ s! { pub struct msqid_ds { pub msg_perm: crate::ipc_perm, #[cfg(target_endian = "big")] - __glibc_reserved1: c_ulong, + __glibc_reserved1: Padding, pub msg_stime: crate::time_t, #[cfg(target_endian = "little")] - __glibc_reserved1: c_ulong, + __glibc_reserved1: Padding, #[cfg(target_endian = "big")] - __glibc_reserved2: c_ulong, + __glibc_reserved2: Padding, pub msg_rtime: crate::time_t, #[cfg(target_endian = "little")] - __glibc_reserved2: c_ulong, + __glibc_reserved2: Padding, #[cfg(target_endian = "big")] - __glibc_reserved3: c_ulong, + __glibc_reserved3: Padding, pub msg_ctime: crate::time_t, #[cfg(target_endian = "little")] - __glibc_reserved3: c_ulong, + __glibc_reserved3: Padding, pub __msg_cbytes: c_ulong, pub msg_qnum: crate::msgqnum_t, pub msg_qbytes: crate::msglen_t, pub msg_lspid: crate::pid_t, pub msg_lrpid: crate::pid_t, - __glibc_reserved4: c_ulong, - __glibc_reserved5: c_ulong, + __glibc_reserved4: Padding, + __glibc_reserved5: Padding, } pub struct statfs { 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 b6adb637493bb..4495181400d48 100644 --- a/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs +++ b/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs @@ -125,8 +125,8 @@ s! { pub msg_qbytes: crate::msglen_t, pub msg_lspid: crate::pid_t, pub msg_lrpid: crate::pid_t, - __glibc_reserved4: c_ulong, - __glibc_reserved5: c_ulong, + __glibc_reserved4: Padding, + __glibc_reserved5: Padding, } pub struct statfs { diff --git a/src/unix/nto/mod.rs b/src/unix/nto/mod.rs index e04e00929b430..60202cddd7b9a 100644 --- a/src/unix/nto/mod.rs +++ b/src/unix/nto/mod.rs @@ -563,7 +563,7 @@ s! { pub mode: mode_t, pub seq: c_uint, pub key: crate::key_t, - _reserved: [c_int; 4], + _reserved: Padding<[c_int; 4]>, } pub struct regex_t { diff --git a/src/unix/nto/neutrino.rs b/src/unix/nto/neutrino.rs index 5d12d24047188..fda8b4839dfcb 100644 --- a/src/unix/nto/neutrino.rs +++ b/src/unix/nto/neutrino.rs @@ -41,7 +41,7 @@ s! { pub srcmsglen: isize, pub dstmsglen: isize, pub type_id: u32, - reserved: u32, + reserved: Padding, } pub struct _cred_info { @@ -75,7 +75,7 @@ s! { pub num_pulses: c_uint, pub rearm_threshold: c_uint, pub options: c_uint, - reserved: [c_uint; 3], + reserved: Padding<[c_uint; 3]>, } // TODO: The following structures are defined in a header file which doesn't @@ -106,7 +106,7 @@ s! { // pub max_num_buffer: c_uint, // pub trigger_num_msg: c_uint, // pub trigger_time: crate::_itimer, - // reserve: c_uint, + // reserve: Padding, //} //pub struct _asyncmsg_connection_descriptor { @@ -121,9 +121,9 @@ s! { // pub ttimer: crate::timer_t, // pub block_con: crate::pthread_cond_t, // pub mu: crate::pthread_mutex_t, - // reserved: c_uint, + // reserved: Padding, // pub attr: crate::_asyncmsg_connection_attr, - // pub reserves: [c_uint; 3], + // reserves: Padding<[c_uint; 3]>, // pub sendq: [crate::_asyncmsg_put_header; 1], // flexarray //} @@ -196,7 +196,7 @@ s! { pub priority_max: c_int, pub interval: u64, pub priority_priv: c_int, - reserved: [c_int; 11], + reserved: Padding<[c_int; 11]>, } pub struct _timer_info { diff --git a/src/unix/nto/x86_64.rs b/src/unix/nto/x86_64.rs index 1fbfe3bb449bf..b8e0b221363dc 100644 --- a/src/unix/nto/x86_64.rs +++ b/src/unix/nto/x86_64.rs @@ -64,7 +64,7 @@ s! { pub mxcsr_mask: u32, pub st_regs: [u8; 128], pub xmm_regs: [u8; 128], - reserved2: [u8; 224], + reserved2: Padding<[u8; 224]>, } pub struct fpu_extention_savearea_64 { From 29b49bb5c9d401a0cc81c61af17f9e7c3db9ccb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Wed, 3 Dec 2025 00:01:37 +0100 Subject: [PATCH 5/5] cleanup: Also unused fields are Padding ones --- src/fuchsia/mod.rs | 2 +- src/unix/bsd/freebsdlike/dragonfly/mod.rs | 10 +++++----- src/unix/bsd/freebsdlike/freebsd/mod.rs | 2 +- src/unix/bsd/netbsdlike/netbsd/mod.rs | 6 +++--- src/unix/bsd/netbsdlike/openbsd/aarch64.rs | 2 +- src/unix/bsd/netbsdlike/openbsd/riscv64.rs | 2 +- src/unix/bsd/netbsdlike/openbsd/x86_64.rs | 6 +++--- src/unix/cygwin/mod.rs | 2 +- src/unix/haiku/mod.rs | 8 ++++---- src/unix/hurd/mod.rs | 2 +- src/unix/linux_like/android/mod.rs | 2 +- src/unix/linux_like/emscripten/mod.rs | 2 +- src/unix/linux_like/linux/gnu/b32/arm/mod.rs | 2 +- src/unix/linux_like/linux/gnu/b32/csky/mod.rs | 2 +- src/unix/linux_like/linux/gnu/b32/m68k/mod.rs | 2 +- src/unix/linux_like/linux/gnu/b32/mips/mod.rs | 2 +- src/unix/linux_like/linux/gnu/b32/mod.rs | 2 +- src/unix/linux_like/linux/gnu/b32/powerpc.rs | 2 +- src/unix/linux_like/linux/gnu/b32/sparc/mod.rs | 2 +- src/unix/linux_like/linux/gnu/b32/x86/mod.rs | 2 +- src/unix/linux_like/linux/uclibc/arm/mod.rs | 2 +- src/unix/linux_like/linux/uclibc/mod.rs | 2 +- src/unix/linux_like/linux/uclibc/x86_64/mod.rs | 2 +- 23 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/fuchsia/mod.rs b/src/fuchsia/mod.rs index e2abe83f2f147..d02f3f87ae5c5 100644 --- a/src/fuchsia/mod.rs +++ b/src/fuchsia/mod.rs @@ -478,7 +478,7 @@ s! { #[cfg(target_endian = "little")] pub f_fsid: c_ulong, #[cfg(all(target_pointer_width = "32", not(target_arch = "x86_64")))] - __f_unused: c_int, + __f_unused: Padding, #[cfg(target_endian = "big")] pub f_fsid: c_ulong, pub f_flag: c_ulong, diff --git a/src/unix/bsd/freebsdlike/dragonfly/mod.rs b/src/unix/bsd/freebsdlike/dragonfly/mod.rs index de6ba65a14d44..2e3d333f7a4de 100644 --- a/src/unix/bsd/freebsdlike/dragonfly/mod.rs +++ b/src/unix/bsd/freebsdlike/dragonfly/mod.rs @@ -215,7 +215,7 @@ s! { pub cr_uid: crate::uid_t, pub cr_ngroups: c_short, pub cr_groups: [crate::gid_t; 16], - __cr_unused1: *mut c_void, + __cr_unused1: Padding<*mut c_void>, } pub struct stack_t { @@ -260,8 +260,8 @@ s! { pub cp_sys: u64, pub cp_intr: u64, pub cp_idel: u64, - cp_unused01: u64, - cp_unused02: u64, + cp_unused01: Padding, + cp_unused02: Padding, pub cp_sample_pc: u64, pub cp_sample_sp: u64, pub cp_msg: [c_char; 32], @@ -382,8 +382,8 @@ s! { pub vm_daddr: *mut c_char, pub vm_maxsaddr: *mut c_char, pub vm_minsaddr: *mut c_char, - _unused1: c_int, - _unused2: c_int, + _unused1: Padding, + _unused2: Padding, pub vm_pagesupply: c_int, pub vm_holdcnt: c_uint, pub vm_refcnt: c_uint, diff --git a/src/unix/bsd/freebsdlike/freebsd/mod.rs b/src/unix/bsd/freebsdlike/freebsd/mod.rs index 3d5f192ed46b3..136a29e6b4194 100644 --- a/src/unix/bsd/freebsdlike/freebsd/mod.rs +++ b/src/unix/bsd/freebsdlike/freebsd/mod.rs @@ -1616,7 +1616,7 @@ s_no_extra_traits! { } pub union __c_anonymous_cr_pid { - __cr_unused: *mut c_void, + __cr_unused: Padding<*mut c_void>, pub cr_pid: crate::pid_t, } diff --git a/src/unix/bsd/netbsdlike/netbsd/mod.rs b/src/unix/bsd/netbsdlike/netbsd/mod.rs index af55f5a2aa5bc..f04997cf5aea7 100644 --- a/src/unix/bsd/netbsdlike/netbsd/mod.rs +++ b/src/unix/bsd/netbsdlike/netbsd/mod.rs @@ -232,7 +232,7 @@ s! { ))] ptm_pad1: Padding<[u8; 3]>, // actually a union with a non-unused, 0-initialized field - ptm_unused: __pthread_spin_t, + ptm_unused: Padding<__pthread_spin_t>, #[cfg(any( target_arch = "sparc", target_arch = "sparc64", @@ -1282,7 +1282,7 @@ cfg_if! { ptm_magic: 0x33330003, ptm_errorcheck: 0, ptm_pad1: Padding::uninit(), - ptm_unused: 0, + ptm_unused: Padding::uninit(), ptm_pad2: Padding::uninit(), ptm_waiters: 0 as *mut _, ptm_owner: 0, @@ -1293,7 +1293,7 @@ cfg_if! { pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t { ptm_magic: 0x33330003, ptm_errorcheck: 0, - ptm_unused: 0, + ptm_unused: Padding::uninit(), ptm_waiters: 0 as *mut _, ptm_owner: 0, ptm_recursed: 0, diff --git a/src/unix/bsd/netbsdlike/openbsd/aarch64.rs b/src/unix/bsd/netbsdlike/openbsd/aarch64.rs index e0d347fb5e6b8..13142ea0f9366 100644 --- a/src/unix/bsd/netbsdlike/openbsd/aarch64.rs +++ b/src/unix/bsd/netbsdlike/openbsd/aarch64.rs @@ -4,7 +4,7 @@ pub type ucontext_t = sigcontext; s! { pub struct sigcontext { - __sc_unused: c_int, + __sc_unused: Padding, pub sc_mask: c_int, pub sc_sp: c_ulong, pub sc_lr: c_ulong, diff --git a/src/unix/bsd/netbsdlike/openbsd/riscv64.rs b/src/unix/bsd/netbsdlike/openbsd/riscv64.rs index 3545763d12c54..e0ecf2ac28b50 100644 --- a/src/unix/bsd/netbsdlike/openbsd/riscv64.rs +++ b/src/unix/bsd/netbsdlike/openbsd/riscv64.rs @@ -4,7 +4,7 @@ pub type ucontext_t = sigcontext; s! { pub struct sigcontext { - __sc_unused: c_int, + __sc_unused: Padding, pub sc_mask: c_int, pub sc_ra: c_long, pub sc_sp: c_long, diff --git a/src/unix/bsd/netbsdlike/openbsd/x86_64.rs b/src/unix/bsd/netbsdlike/openbsd/x86_64.rs index 4abe8a1a7c5ed..74889a743b9aa 100644 --- a/src/unix/bsd/netbsdlike/openbsd/x86_64.rs +++ b/src/unix/bsd/netbsdlike/openbsd/x86_64.rs @@ -32,7 +32,7 @@ s! { pub sc_rsp: c_long, pub sc_ss: c_long, pub sc_fpstate: *mut fxsave64, - __sc_unused: c_int, + __sc_unused: Padding, pub sc_mask: c_int, pub sc_cookie: c_long, } @@ -42,7 +42,7 @@ s! { pub fx_fcw: u16, pub fx_fsw: u16, pub fx_ftw: u8, - __fx_unused1: u8, + __fx_unused1: Padding, pub fx_fop: u16, pub fx_rip: u64, pub fx_rdp: u64, @@ -50,7 +50,7 @@ s! { pub fx_mxcsr_mask: u32, pub fx_st: [[u64; 2]; 8], pub fx_xmm: [[u64; 2]; 16], - __fx_unused3: [u8; 96], + __fx_unused3: Padding<[u8; 96]>, } } diff --git a/src/unix/cygwin/mod.rs b/src/unix/cygwin/mod.rs index 94c156c8f41ce..9d3a3b55cfeae 100644 --- a/src/unix/cygwin/mod.rs +++ b/src/unix/cygwin/mod.rs @@ -468,7 +468,7 @@ s! { __d_version: u32, pub d_ino: ino_t, pub d_type: c_uchar, - __d_unused1: [c_uchar; 3], + __d_unused1: Padding<[c_uchar; 3]>, __d_internal1: u32, pub d_name: [c_char; 256], } diff --git a/src/unix/haiku/mod.rs b/src/unix/haiku/mod.rs index d9397750c4821..c1259fe6e0c97 100644 --- a/src/unix/haiku/mod.rs +++ b/src/unix/haiku/mod.rs @@ -292,14 +292,14 @@ s! { pub struct pthread_mutex_t { flags: u32, lock: i32, - unused: i32, + unused: Padding, owner: i32, owner_count: i32, } pub struct pthread_cond_t { flags: u32, - unused: i32, + unused: Padding, mutex: *mut c_void, waiter_count: i32, lock: i32, @@ -1090,13 +1090,13 @@ pub const PTHREAD_STACK_MIN: size_t = 8192; pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t { flags: 0, lock: 0, - unused: -42, + unused: Padding::uninit(), owner: -1, owner_count: 0, }; pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t { flags: 0, - unused: -42, + unused: Padding::uninit(), mutex: 0 as *mut _, waiter_count: 0, lock: 0, diff --git a/src/unix/hurd/mod.rs b/src/unix/hurd/mod.rs index 26bad333af2db..3f2e3dd65b7f2 100644 --- a/src/unix/hurd/mod.rs +++ b/src/unix/hurd/mod.rs @@ -708,7 +708,7 @@ s! { } pub struct _IO_FILE { - _unused: [u8; 0], + _unused: Padding<[u8; 0]>, } pub struct sched_param { diff --git a/src/unix/linux_like/android/mod.rs b/src/unix/linux_like/android/mod.rs index e3aee924c8f64..040349f8a6911 100644 --- a/src/unix/linux_like/android/mod.rs +++ b/src/unix/linux_like/android/mod.rs @@ -549,7 +549,7 @@ s! { pub ut_session: c_long, pub ut_tv: crate::timeval, pub ut_addr_v6: [i32; 4], - unused: [c_char; 20], + unused: Padding<[c_char; 20]>, } pub struct sockaddr_alg { diff --git a/src/unix/linux_like/emscripten/mod.rs b/src/unix/linux_like/emscripten/mod.rs index 72433bf471986..59afc245eec54 100644 --- a/src/unix/linux_like/emscripten/mod.rs +++ b/src/unix/linux_like/emscripten/mod.rs @@ -91,7 +91,7 @@ s! { pub f_ffree: crate::fsfilcnt_t, pub f_favail: crate::fsfilcnt_t, pub f_fsid: c_ulong, - __f_unused: c_int, + __f_unused: Padding, pub f_flag: c_ulong, pub f_namemax: c_ulong, __f_spare: [c_int; 6], diff --git a/src/unix/linux_like/linux/gnu/b32/arm/mod.rs b/src/unix/linux_like/linux/gnu/b32/arm/mod.rs index 57d6d74bef620..d05bccf3811ac 100644 --- a/src/unix/linux_like/linux/gnu/b32/arm/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/arm/mod.rs @@ -122,7 +122,7 @@ s! { pub f_ffree: u64, pub f_favail: u64, pub f_fsid: c_ulong, - __f_unused: c_int, + __f_unused: Padding, pub f_flag: c_ulong, pub f_namemax: c_ulong, __f_spare: [c_int; 6], diff --git a/src/unix/linux_like/linux/gnu/b32/csky/mod.rs b/src/unix/linux_like/linux/gnu/b32/csky/mod.rs index f346034e09525..dc88c635f1168 100644 --- a/src/unix/linux_like/linux/gnu/b32/csky/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/csky/mod.rs @@ -109,7 +109,7 @@ s! { pub f_ffree: u64, pub f_favail: u64, pub f_fsid: c_ulong, - __f_unused: c_int, + __f_unused: Padding, pub f_flag: c_ulong, pub f_namemax: c_ulong, __f_spare: [c_int; 6], diff --git a/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs b/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs index 01244f4277b2a..2d91f986b76a0 100644 --- a/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs @@ -109,7 +109,7 @@ s! { pub f_ffree: crate::fsblkcnt64_t, pub f_favail: crate::fsblkcnt64_t, pub f_fsid: c_ulong, - __f_unused: c_int, + __f_unused: Padding, pub f_flag: c_ulong, pub f_namemax: c_ulong, __f_spare: [c_int; 6], diff --git a/src/unix/linux_like/linux/gnu/b32/mips/mod.rs b/src/unix/linux_like/linux/gnu/b32/mips/mod.rs index d7f8a6077a5be..18bb1933925f0 100644 --- a/src/unix/linux_like/linux/gnu/b32/mips/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/mips/mod.rs @@ -160,7 +160,7 @@ s! { pub f_ffree: u64, pub f_favail: u64, pub f_fsid: c_ulong, - __f_unused: c_int, + __f_unused: Padding, pub f_flag: c_ulong, pub f_namemax: c_ulong, __f_spare: [c_int; 6], diff --git a/src/unix/linux_like/linux/gnu/b32/mod.rs b/src/unix/linux_like/linux/gnu/b32/mod.rs index 418b4d6774bca..d9aebbe0efda8 100644 --- a/src/unix/linux_like/linux/gnu/b32/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/mod.rs @@ -138,7 +138,7 @@ s! { pub f_ffree: crate::fsfilcnt_t, pub f_favail: crate::fsfilcnt_t, pub f_fsid: c_ulong, - __f_unused: c_int, + __f_unused: Padding, pub f_flag: c_ulong, pub f_namemax: c_ulong, __f_spare: [c_int; 6], diff --git a/src/unix/linux_like/linux/gnu/b32/powerpc.rs b/src/unix/linux_like/linux/gnu/b32/powerpc.rs index 690ff78da17d9..b5d3631a6fcf2 100644 --- a/src/unix/linux_like/linux/gnu/b32/powerpc.rs +++ b/src/unix/linux_like/linux/gnu/b32/powerpc.rs @@ -151,7 +151,7 @@ s! { pub f_ffree: u64, pub f_favail: u64, pub f_fsid: c_ulong, - __f_unused: c_int, + __f_unused: Padding, pub f_flag: c_ulong, pub f_namemax: c_ulong, __f_spare: [c_int; 6], diff --git a/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs b/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs index 70959422e496d..75fefcd9401a8 100644 --- a/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs @@ -137,7 +137,7 @@ s! { pub f_ffree: u64, pub f_favail: u64, pub f_fsid: c_ulong, - __f_unused: c_int, + __f_unused: Padding, pub f_flag: c_ulong, pub f_namemax: c_ulong, __f_spare: [c_int; 6], diff --git a/src/unix/linux_like/linux/gnu/b32/x86/mod.rs b/src/unix/linux_like/linux/gnu/b32/x86/mod.rs index 4b3c1166ef33e..97429dad64285 100644 --- a/src/unix/linux_like/linux/gnu/b32/x86/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/x86/mod.rs @@ -196,7 +196,7 @@ s! { pub f_ffree: u64, pub f_favail: u64, pub f_fsid: c_ulong, - __f_unused: c_int, + __f_unused: Padding, pub f_flag: c_ulong, pub f_namemax: c_ulong, __f_spare: [c_int; 6], diff --git a/src/unix/linux_like/linux/uclibc/arm/mod.rs b/src/unix/linux_like/linux/uclibc/arm/mod.rs index 7052d9daac2d2..26dd49b24465b 100644 --- a/src/unix/linux_like/linux/uclibc/arm/mod.rs +++ b/src/unix/linux_like/linux/uclibc/arm/mod.rs @@ -153,7 +153,7 @@ s! { pub f_ffree: u64, pub f_favail: u64, pub f_fsid: c_ulong, - __f_unused: c_int, + __f_unused: Padding, pub f_flag: c_ulong, pub f_namemax: c_ulong, __f_spare: [c_int; 6], diff --git a/src/unix/linux_like/linux/uclibc/mod.rs b/src/unix/linux_like/linux/uclibc/mod.rs index 69f1b006e1c01..8ce6d2328f3c5 100644 --- a/src/unix/linux_like/linux/uclibc/mod.rs +++ b/src/unix/linux_like/linux/uclibc/mod.rs @@ -36,7 +36,7 @@ s! { #[cfg(target_endian = "little")] pub f_fsid: c_ulong, #[cfg(target_pointer_width = "32")] - __f_unused: c_int, + __f_unused: Padding, #[cfg(target_endian = "big")] pub f_fsid: c_ulong, pub f_flag: c_ulong, 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 885d8ef477a0e..047fb21cc52aa 100644 --- a/src/unix/linux_like/linux/uclibc/x86_64/mod.rs +++ b/src/unix/linux_like/linux/uclibc/x86_64/mod.rs @@ -188,7 +188,7 @@ s! { pub f_ffree: u64, pub f_favail: u64, pub f_fsid: c_ulong, - __f_unused: c_int, + __f_unused: Padding, pub f_flag: c_ulong, pub f_namemax: c_ulong, __f_spare: [c_int; 6],