Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/fuchsia/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<c_int>,
#[cfg(target_endian = "big")]
pub f_fsid: c_ulong,
pub f_flag: c_ulong,
Expand Down Expand Up @@ -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 {
Expand Down
8 changes: 4 additions & 4 deletions src/new/musl/sys/socket.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<c_int>,
pub msg_iovlen: c_int,
#[cfg(all(target_pointer_width = "64", target_endian = "little"))]
__pad1: c_int,
__pad1: Padding<c_int>,
pub msg_control: *mut c_void,
#[cfg(all(target_pointer_width = "64", target_endian = "big"))]
__pad2: c_int,
__pad2: Padding<c_int>,
pub msg_controllen: crate::socklen_t,
#[cfg(all(target_pointer_width = "64", target_endian = "little"))]
__pad2: c_int,
__pad2: Padding<c_int>,
pub msg_flags: c_int,
}

Expand Down
2 changes: 1 addition & 1 deletion src/new/netbsd/utmpx_.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
12 changes: 12 additions & 0 deletions src/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,18 @@ impl<T: Copy> Default for Padding<T> {
}
}

impl<T: Copy> Padding<T> {
/// 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<T: Copy> fmt::Debug for Padding<T> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
// Taken frmo `MaybeUninit`'s debug implementation
Expand Down
4 changes: 2 additions & 2 deletions src/unix/bsd/apple/b64/x86_64/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<unsafe extern "C" fn(zone: *mut malloc_zone_t, ptr: *const c_void) -> size_t>,
pub malloc:
Expand Down
2 changes: 1 addition & 1 deletion src/unix/bsd/apple/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
10 changes: 5 additions & 5 deletions src/unix/bsd/freebsdlike/dragonfly/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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<u64>,
cp_unused02: Padding<u64>,
pub cp_sample_pc: u64,
pub cp_sample_sp: u64,
pub cp_msg: [c_char; 32],
Expand Down Expand Up @@ -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<c_int>,
_unused2: Padding<c_int>,
pub vm_pagesupply: c_int,
pub vm_holdcnt: c_uint,
pub vm_refcnt: c_uint,
Expand Down
4 changes: 2 additions & 2 deletions src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<i16>,
pub st_uid: crate::uid_t,
pub st_gid: crate::gid_t,
st_padding1: i32,
st_padding1: Padding<i32>,
pub st_rdev: crate::dev_t,
#[cfg(target_arch = "x86")]
st_atim_ext: i32,
Expand Down
4 changes: 2 additions & 2 deletions src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<i16>,
pub st_uid: crate::uid_t,
pub st_gid: crate::gid_t,
st_padding1: i32,
st_padding1: Padding<i32>,
pub st_rdev: crate::dev_t,
#[cfg(target_arch = "x86")]
st_atim_ext: i32,
Expand Down
4 changes: 2 additions & 2 deletions src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<i16>,
pub st_uid: crate::uid_t,
pub st_gid: crate::gid_t,
st_padding1: i32,
st_padding1: Padding<i32>,
pub st_rdev: crate::dev_t,
#[cfg(target_arch = "x86")]
st_atim_ext: i32,
Expand Down
4 changes: 2 additions & 2 deletions src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<i16>,
pub st_uid: crate::uid_t,
pub st_gid: crate::gid_t,
st_padding1: i32,
st_padding1: Padding<i32>,
pub st_rdev: crate::dev_t,
#[cfg(target_arch = "x86")]
st_atim_ext: i32,
Expand Down
6 changes: 3 additions & 3 deletions src/unix/bsd/freebsdlike/freebsd/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<u32>,
m_spare: [u32; 2],
}

Expand Down Expand Up @@ -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,
}

Expand Down Expand Up @@ -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,
}

Expand Down
14 changes: 7 additions & 7 deletions src/unix/bsd/netbsdlike/netbsd/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -230,16 +230,16 @@ 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,
ptm_unused: Padding<__pthread_spin_t>,
#[cfg(any(
target_arch = "sparc",
target_arch = "sparc64",
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,
Expand Down Expand Up @@ -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_unused: 0,
ptm_pad2: [0; 3],
ptm_pad1: Padding::uninit(),
ptm_unused: Padding::uninit(),
ptm_pad2: Padding::uninit(),
ptm_waiters: 0 as *mut _,
ptm_owner: 0,
ptm_recursed: 0,
Expand All @@ -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,
Expand Down
2 changes: 1 addition & 1 deletion src/unix/bsd/netbsdlike/openbsd/aarch64.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ pub type ucontext_t = sigcontext;

s! {
pub struct sigcontext {
__sc_unused: c_int,
__sc_unused: Padding<c_int>,
pub sc_mask: c_int,
pub sc_sp: c_ulong,
pub sc_lr: c_ulong,
Expand Down
12 changes: 6 additions & 6 deletions src/unix/bsd/netbsdlike/openbsd/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -616,16 +616,16 @@ 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],
}

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<i64>,
__ss_pad3: Padding<[u8; 240]>,
}

pub struct siginfo_t {
Expand All @@ -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 {
Expand Down
2 changes: 1 addition & 1 deletion src/unix/bsd/netbsdlike/openbsd/riscv64.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ pub type ucontext_t = sigcontext;

s! {
pub struct sigcontext {
__sc_unused: c_int,
__sc_unused: Padding<c_int>,
pub sc_mask: c_int,
pub sc_ra: c_long,
pub sc_sp: c_long,
Expand Down
6 changes: 3 additions & 3 deletions src/unix/bsd/netbsdlike/openbsd/x86_64.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<c_int>,
pub sc_mask: c_int,
pub sc_cookie: c_long,
}
Expand All @@ -42,15 +42,15 @@ s! {
pub fx_fcw: u16,
pub fx_fsw: u16,
pub fx_ftw: u8,
__fx_unused1: u8,
__fx_unused1: Padding<u8>,
pub fx_fop: u16,
pub fx_rip: u64,
pub fx_rdp: u64,
pub fx_mxcsr: u32,
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]>,
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/unix/cygwin/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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],
}
Expand Down
10 changes: 5 additions & 5 deletions src/unix/haiku/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -292,14 +292,14 @@ s! {
pub struct pthread_mutex_t {
flags: u32,
lock: i32,
unused: i32,
unused: Padding<i32>,
owner: i32,
owner_count: i32,
}

pub struct pthread_cond_t {
flags: u32,
unused: i32,
unused: Padding<i32>,
mutex: *mut c_void,
waiter_count: i32,
lock: i32,
Expand Down Expand Up @@ -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]>,
}
}

Expand Down Expand Up @@ -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,
Expand Down
4 changes: 2 additions & 2 deletions src/unix/haiku/native.rs
Original file line number Diff line number Diff line change
Expand Up @@ -422,10 +422,10 @@ s! {
pub model: u32,
pub family: u32,
pub tpe: u32,
__reserved_0: u32,
__reserved_0: Padding<u32>,
pub extended_model: u32,
pub extended_family: u32,
__reserved_1: u32,
__reserved_1: Padding<u32>,
pub brand_index: u32,
pub clflush: u32,
pub logical_cpus: u32,
Expand Down
Loading