diff --git a/libc-test/build.rs b/libc-test/build.rs index 8a353e5d4a5fb..31a5e390e1831 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -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, @@ -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, @@ -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, diff --git a/src/unix/bsd/apple/mod.rs b/src/unix/bsd/apple/mod.rs index 057bdfe7432e3..34bd285666610 100644 --- a/src/unix/bsd/apple/mod.rs +++ b/src/unix/bsd/apple/mod.rs @@ -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 { diff --git a/src/unix/bsd/freebsdlike/dragonfly/mod.rs b/src/unix/bsd/freebsdlike/dragonfly/mod.rs index 88292afdb1208..9bf25b335cc7e 100644 --- a/src/unix/bsd/freebsdlike/dragonfly/mod.rs +++ b/src/unix/bsd/freebsdlike/dragonfly/mod.rs @@ -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 { diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs index cb62ee608a8b4..f62b77ba8e3c2 100644 --- a/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs +++ b/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs @@ -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. diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs index c2a168a501e58..c5b85f99c1d49 100644 --- a/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs +++ b/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs @@ -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. diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs index a663a3b5db1a7..b0a2786022011 100644 --- a/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs +++ b/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs @@ -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. diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs index afca6890711ae..265cc2ba595d9 100644 --- a/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs +++ b/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs @@ -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. diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs index 031f41364804d..47012e38b7db7 100644 --- a/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs +++ b/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs @@ -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. diff --git a/src/unix/bsd/freebsdlike/freebsd/mod.rs b/src/unix/bsd/freebsdlike/freebsd/mod.rs index 43c2d0dfbe7f1..e9bc592ddd61d 100644 --- a/src/unix/bsd/freebsdlike/freebsd/mod.rs +++ b/src/unix/bsd/freebsdlike/freebsd/mod.rs @@ -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 { @@ -1144,7 +1144,7 @@ s! { pub sinfo_assoc_id: ::sctp_assoc_t, pub sinfo_keynumber: u16, pub sinfo_keynumber_valid: u16, - pub __reserve_pad: [u8; SCTP_ALIGN_RESV_PAD], + pub __reserve_pad: [[u8; 23]; 4], } pub struct sctp_extrcvinfo { @@ -1164,7 +1164,7 @@ s! { pub serinfo_next_ppid: u32, pub sinfo_keynumber: u16, pub sinfo_keynumber_valid: u16, - pub __reserve_pad: [u8; SCTP_ALIGN_RESV_PAD_SHORT], + pub __reserve_pad: [[u8; 19]; 4], } pub struct sctp_sndinfo { @@ -4865,11 +4865,6 @@ pub const SCTP_ASSOC_RESET_FAILED: ::c_int = 0x0008; pub const SCTP_STREAM_CHANGE_DENIED: ::c_int = 0x0004; pub const SCTP_STREAM_CHANGE_FAILED: ::c_int = 0x0008; -// sctp_uio.h - -pub const SCTP_ALIGN_RESV_PAD: usize = 92; -pub const SCTP_ALIGN_RESV_PAD_SHORT: usize = 76; - pub const KENV_DUMP_LOADER: ::c_int = 4; pub const KENV_DUMP_STATIC: ::c_int = 5; diff --git a/src/unix/bsd/freebsdlike/mod.rs b/src/unix/bsd/freebsdlike/mod.rs index 0ef069c8a4fd4..7628eee7f5c11 100644 --- a/src/unix/bsd/freebsdlike/mod.rs +++ b/src/unix/bsd/freebsdlike/mod.rs @@ -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; 256 - 16], } pub struct ptrace_io_desc { diff --git a/src/unix/bsd/netbsdlike/netbsd/mod.rs b/src/unix/bsd/netbsdlike/netbsd/mod.rs index 84358eb06dc81..a0b1c232d69d9 100644 --- a/src/unix/bsd/netbsdlike/netbsd/mod.rs +++ b/src/unix/bsd/netbsdlike/netbsd/mod.rs @@ -520,7 +520,7 @@ s! { pub struct accept_filter_arg { pub af_name: [::c_char; 16], - pub af_arg: [::c_char; 256 - 16], + af_arg: [::c_char; 256 - 16], } pub struct ki_sigset_t { @@ -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 {