Skip to content

Commit

Permalink
Revert "Remove array size hacks for Rust < 1.47"
Browse files Browse the repository at this point in the history
This reverts commit 27ee6fe.

These array structure changes were breaking changes to the
public API and should not have landed without a major
version bump.
  • Loading branch information
cramertj committed Nov 26, 2024
1 parent 24a8e7e commit 4dc6a1c
Show file tree
Hide file tree
Showing 15 changed files with 28 additions and 15 deletions.
9 changes: 8 additions & 1 deletion libc-test/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -400,7 +400,8 @@ fn test_apple(target: &str) {
// FIXME: the array size has been changed since macOS 10.15 ([8] -> [7]).
("statfs", "f_reserved") => true,
("__darwin_arm_neon_state64", "__v") => true,

// MAXPATHLEN is too big for auto-derive traits on arrays.
("vnode_info_path", "vip_path") => true,
("ifreq", "ifr_ifru") => true,
("in6_ifreq", "ifr_ifru") => true,
("ifkpi", "ifk_data") => true,
Expand Down Expand Up @@ -2763,6 +2764,8 @@ fn test_freebsd(target: &str) {
("umutex", "m_owner") => true,
// c_has_waiters field is a volatile int32_t
("ucond", "c_has_waiters") => true,
// is PATH_MAX long but tests can't accept multi array as equivalent.
("kinfo_vmentry", "kve_path") => true,

// a_un field is a union
("Elf32_Auxinfo", "a_un") => true,
Expand Down Expand Up @@ -2791,6 +2794,10 @@ fn test_freebsd(target: &str) {
// Anonymous type.
("filestat", "next") => true,

// We ignore this field because we needed to use a hack in order to make rust 1.19
// happy...
("kinfo_proc", "ki_sparestrings") => true,

// `__sem_base` is a private struct field
("semid_ds", "__sem_base") => true,

Expand Down
4 changes: 3 additions & 1 deletion src/unix/bsd/apple/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -939,7 +939,9 @@ s! {
pub struct vnode_info_path {
pub vip_vi: vnode_info,
pub vip_path: [::c_char; ::MAXPATHLEN as usize],
// Normally it's `vip_path: [::c_char; MAXPATHLEN]` but because libc supports an old rustc
// version, we go around this limitation like this.
pub vip_path: [[::c_char; 32]; 32],
}

pub struct proc_vnodepathinfo {
Expand Down
2 changes: 1 addition & 1 deletion src/unix/bsd/freebsdlike/dragonfly/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -517,7 +517,7 @@ s_no_extra_traits! {
pub mc_ownedfp: ::c_uint,
__reserved: ::c_uint,
__unused: [::c_uint; 8],
pub mc_fpregs: [::c_uint; 256],
pub mc_fpregs: [[::c_uint; 8]; 32],
}

pub struct ucontext_t {
Expand Down
2 changes: 1 addition & 1 deletion src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ s! {
/// More thread name.
pub ki_moretdname: [::c_char; ::MAXCOMLEN - ::TDNAMLEN + 1],
/// Spare string space.
pub ki_sparestrings: [::c_char; 46],
pub ki_sparestrings: [[::c_char; 23]; 2], // little hack to allow PartialEq
/// Spare room for growth.
pub ki_spareints: [::c_int; ::KI_NSPARE_INT],
/// Which cpu we are on.
Expand Down
2 changes: 1 addition & 1 deletion src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ s! {
/// More thread name.
pub ki_moretdname: [::c_char; ::MAXCOMLEN - ::TDNAMLEN + 1],
/// Spare string space.
pub ki_sparestrings: [::c_char; 46],
pub ki_sparestrings: [[::c_char; 23]; 2], // little hack to allow PartialEq
/// Spare room for growth.
pub ki_spareints: [::c_int; ::KI_NSPARE_INT],
/// Controlling tty dev.
Expand Down
2 changes: 1 addition & 1 deletion src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ s! {
/// More thread name.
pub ki_moretdname: [::c_char; ::MAXCOMLEN - ::TDNAMLEN + 1],
/// Spare string space.
pub ki_sparestrings: [::c_char; 46],
pub ki_sparestrings: [[::c_char; 23]; 2], // little hack to allow PartialEq
/// Spare room for growth.
pub ki_spareints: [::c_int; ::KI_NSPARE_INT],
/// Controlling tty dev.
Expand Down
2 changes: 1 addition & 1 deletion src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ s! {
/// More thread name.
pub ki_moretdname: [::c_char; ::MAXCOMLEN - ::TDNAMLEN + 1],
/// Spare string space.
pub ki_sparestrings: [::c_char; 46],
pub ki_sparestrings: [[::c_char; 23]; 2], // little hack to allow PartialEq
/// Spare room for growth.
pub ki_spareints: [::c_int; ::KI_NSPARE_INT],
/// Controlling tty dev.
Expand Down
2 changes: 1 addition & 1 deletion src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ s! {
/// More thread name.
pub ki_moretdname: [::c_char; ::MAXCOMLEN - ::TDNAMLEN + 1],
/// Spare string space.
pub ki_sparestrings: [::c_char; 46],
pub ki_sparestrings: [[::c_char; 23]; 2], // little hack to allow PartialEq
/// Spare room for growth.
pub ki_spareints: [::c_int; ::KI_NSPARE_INT],
/// Controlling tty dev.
Expand Down
2 changes: 1 addition & 1 deletion src/unix/bsd/freebsdlike/freebsd/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -457,7 +457,7 @@ s! {
_kve_is_spare: [::c_int; 8],
#[cfg(freebsd11)]
_kve_is_spare: [::c_int; 12],
pub kve_path: [::c_char; ::PATH_MAX as usize],
pub kve_path: [[::c_char; 32]; 32],
}

pub struct __c_anonymous_filestat {
Expand Down
2 changes: 1 addition & 1 deletion src/unix/bsd/freebsdlike/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,7 @@ s! {

pub struct accept_filter_arg {
pub af_name: [::c_char; 16],
af_arg: [::c_char; 240],
af_arg: [[::c_char; 10]; 24],
}

pub struct ptrace_io_desc {
Expand Down
2 changes: 1 addition & 1 deletion src/unix/bsd/netbsdlike/netbsd/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -671,7 +671,7 @@ s! {
pub kve_vn_rdev: u64,
pub kve_vn_type: u32,
pub kve_vn_mode: u32,
pub kve_path: [::c_char; ::PATH_MAX as usize],
pub kve_path: [[::c_char; 32]; 32],
}

pub struct __c_anonymous_posix_spawn_fae_open {
Expand Down
4 changes: 3 additions & 1 deletion src/unix/linux_like/android/b64/aarch64/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,9 @@ s! {
pub sp: ::c_ulonglong,
pub pc: ::c_ulonglong,
pub pstate: ::c_ulonglong,
__reserved: [u64; 512],
// nested arrays to get the right size/length while being able to
// auto-derive traits like Debug
__reserved: [[u64; 32]; 16],
}

pub struct user_fpsimd_struct {
Expand Down
2 changes: 1 addition & 1 deletion src/unix/linux_like/android/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -608,7 +608,7 @@ s_no_extra_traits! {
pub struct prop_info {
__name: [::c_char; 32],
__serial: ::c_uint,
__value: [::c_char; 92],
__value: [[::c_char; 4]; 23],
}

pub union __c_anonymous_ifr_ifru {
Expand Down
4 changes: 3 additions & 1 deletion src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,9 @@ s! {
pub sp: ::c_ulonglong,
pub pc: ::c_ulonglong,
pub pstate: ::c_ulonglong,
__reserved: [u64; 512],
// nested arrays to get the right size/length while being able to
// auto-derive traits like Debug
__reserved: [[u64; 32]; 16],
}

pub struct user_fpsimd_struct {
Expand Down
2 changes: 1 addition & 1 deletion src/unix/linux_like/linux/musl/b64/aarch64/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ s! {
pub sp: ::c_ulong,
pub pc: ::c_ulong,
pub pstate: ::c_ulong,
__reserved: [u64; 512],
__reserved: [[u64; 32]; 16],
}

#[repr(align(8))]
Expand Down

0 comments on commit 4dc6a1c

Please sign in to comment.