diff --git a/libc-test/build.rs b/libc-test/build.rs index 0e5cd9f9fea739f7f16c7b7af25ebb8230f08c11..233983d9644eef26c9b20dfee7659c4ed7f71c66 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -189,5 +189,10 @@ fn main() { // Windows dllimport oddness? cfg.skip_fn_ptrcheck(move |_| windows); + cfg.skip_field_type(|struct_, field| { + // This is a weird union, don't check the type. + struct_ == "ifaddrs" && field == "ifa_ifu" + }); + cfg.generate("../src/lib.rs", "all.rs"); } diff --git a/src/unix/mod.rs b/src/unix/mod.rs index 14c427fd3aab86f75dff88559ce2f599b9696f38..cacecbc3adfc2315e3cb270fb23aabf12b368bb9 100644 --- a/src/unix/mod.rs +++ b/src/unix/mod.rs @@ -48,7 +48,7 @@ s! { } pub struct in6_addr { - pub s6_addr: [u16; 8], + pub s6_addr16: [u16; 8], __align: [u32; 0], } diff --git a/src/unix/notbsd/mod.rs b/src/unix/notbsd/mod.rs index 87fec5e17ff92fd62ab42419fcb4fc64bde7b80f..8591420ce5b8e8f1415acc38d62996a6c8a3c1c4 100644 --- a/src/unix/notbsd/mod.rs +++ b/src/unix/notbsd/mod.rs @@ -24,7 +24,7 @@ pub enum timezone {} s! { pub struct sockaddr { pub sa_family: sa_family_t, - pub sa_data: [u8; 14], + pub sa_data: [::c_char; 14], } pub struct sockaddr_in { @@ -49,7 +49,7 @@ s! { pub struct sockaddr_storage { pub ss_family: sa_family_t, - __ss_align: isize, + __ss_align: ::size_t, #[cfg(target_pointer_width = "32")] __ss_pad2: [u8; 128 - 2 * 4], #[cfg(target_pointer_width = "64")]