diff --git a/libc-test/build.rs b/libc-test/build.rs index 69231fc060efc..18200800519b1 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -2967,6 +2967,11 @@ fn test_linux(target: &str) { if (musl || sparc64) && ty.starts_with("uinput_") { return true; } + // FIXME(https://github.com/rust-lang/libc/issues/1558): passing by + // value corrupts the value for reasons not understood. + if (gnu && sparc64) && ty == "ip_mreqn" { + return true; + } match ty { // These cannot be tested when "resolv.h" is included and are tested // in the `linux_elf.rs` file. diff --git a/libc-test/semver/linux-aarch64.txt b/libc-test/semver/linux-aarch64.txt index 5a68d5e68b933..18fa63fed70b5 100644 --- a/libc-test/semver/linux-aarch64.txt +++ b/libc-test/semver/linux-aarch64.txt @@ -87,7 +87,6 @@ TIOCGRS485 TIOCSBRK TIOCSRS485 flock64 -ip_mreqn max_align_t mcontext_t ucontext_t diff --git a/libc-test/semver/linux-i686.txt b/libc-test/semver/linux-i686.txt index 3529cd69bc283..97e9f741a8929 100644 --- a/libc-test/semver/linux-i686.txt +++ b/libc-test/semver/linux-i686.txt @@ -211,7 +211,6 @@ fsblkcnt64_t fsfilcnt64_t getcontext greg_t -ip_mreqn makecontext max_align_t mcontext_t diff --git a/libc-test/semver/linux-mips.txt b/libc-test/semver/linux-mips.txt index 3fed27958a288..80aa25a60bf84 100644 --- a/libc-test/semver/linux-mips.txt +++ b/libc-test/semver/linux-mips.txt @@ -112,5 +112,4 @@ SYS_vserver SYS_waitpid TIOCCBRK TIOCSBRK -ip_mreqn max_align_t diff --git a/libc-test/semver/linux-powerpc.txt b/libc-test/semver/linux-powerpc.txt index b83ae9c798337..1d162417608fa 100644 --- a/libc-test/semver/linux-powerpc.txt +++ b/libc-test/semver/linux-powerpc.txt @@ -155,5 +155,4 @@ TIOCSRS485 flock64 fsblkcnt64_t fsfilcnt64_t -ip_mreqn sysctl diff --git a/libc-test/semver/linux-powerpc64.txt b/libc-test/semver/linux-powerpc64.txt index 013a25d8cff32..983c7e7d30c28 100644 --- a/libc-test/semver/linux-powerpc64.txt +++ b/libc-test/semver/linux-powerpc64.txt @@ -158,6 +158,5 @@ TIOCGRS485 TIOCSBRK TIOCSRS485 flock64 -ip_mreqn max_align_t sysctl diff --git a/libc-test/semver/linux-powerpc64le.txt b/libc-test/semver/linux-powerpc64le.txt index 013a25d8cff32..983c7e7d30c28 100644 --- a/libc-test/semver/linux-powerpc64le.txt +++ b/libc-test/semver/linux-powerpc64le.txt @@ -158,6 +158,5 @@ TIOCGRS485 TIOCSBRK TIOCSRS485 flock64 -ip_mreqn max_align_t sysctl diff --git a/libc-test/semver/linux-riscv64gc.txt b/libc-test/semver/linux-riscv64gc.txt index 8397f37dbb994..cc4d97fe6fa51 100644 --- a/libc-test/semver/linux-riscv64gc.txt +++ b/libc-test/semver/linux-riscv64gc.txt @@ -69,4 +69,3 @@ TIOCSRS485 flock64 fsblkcnt64_t fsfilcnt64_t -ip_mreqn diff --git a/libc-test/semver/linux-x86_64.txt b/libc-test/semver/linux-x86_64.txt index 9f5d9b734da9c..64126fbc841e1 100644 --- a/libc-test/semver/linux-x86_64.txt +++ b/libc-test/semver/linux-x86_64.txt @@ -136,7 +136,6 @@ TIOCGRS485 TIOCSBRK TIOCSRS485 greg_t -ip_mreqn max_align_t mcontext_t ucontext_t diff --git a/libc-test/semver/linux.txt b/libc-test/semver/linux.txt index 822405ab841bc..96e38bf005f15 100644 --- a/libc-test/semver/linux.txt +++ b/libc-test/semver/linux.txt @@ -2794,6 +2794,7 @@ input_event input_id input_keymap_entry input_mask +ip_mreqn ip_mreq_source ipc_perm itimerspec diff --git a/src/unix/linux_like/android/mod.rs b/src/unix/linux_like/android/mod.rs index 3c614f5f9bc6f..c39a70d33fa93 100644 --- a/src/unix/linux_like/android/mod.rs +++ b/src/unix/linux_like/android/mod.rs @@ -73,12 +73,6 @@ s! { pub cmsg_type: ::c_int, } - pub struct ip_mreqn { - pub imr_multiaddr: ::in_addr, - pub imr_address: ::in_addr, - pub imr_ifindex: ::c_int, - } - pub struct termios { pub c_iflag: ::tcflag_t, pub c_oflag: ::tcflag_t, diff --git a/src/unix/linux_like/linux/gnu/b32/mod.rs b/src/unix/linux_like/linux/gnu/b32/mod.rs index 7a2603cbabdb3..fe3836ca92738 100644 --- a/src/unix/linux_like/linux/gnu/b32/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/mod.rs @@ -135,12 +135,6 @@ s! { pub _f: [::c_char; 8], } - pub struct ip_mreqn { - pub imr_multiaddr: ::in_addr, - pub imr_address: ::in_addr, - pub imr_ifindex: ::c_int, - } - pub struct semid_ds { pub sem_perm: ipc_perm, #[cfg(target_arch = "powerpc")] diff --git a/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs b/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs index 9275e75253992..dd7c058b67233 100644 --- a/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs @@ -197,12 +197,6 @@ s! { pub ss_size: ::size_t } - pub struct ip_mreqn { - pub imr_multiaddr: ::in_addr, - pub imr_address: ::in_addr, - pub imr_ifindex: ::c_int, - } - pub struct seccomp_notif_sizes { pub seccomp_notif: ::__u16, pub seccomp_notif_resp: ::__u16, 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 0e3a7640d1a4b..0a71e2240262e 100644 --- a/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs @@ -191,12 +191,6 @@ s! { pub ss_flags: ::c_int, pub ss_size: ::size_t } - - pub struct ip_mreqn { - pub imr_multiaddr: ::in_addr, - pub imr_address: ::in_addr, - pub imr_ifindex: ::c_int, - } } pub const POSIX_FADV_DONTNEED: ::c_int = 4; diff --git a/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs b/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs index 3a5c1a626f1fc..60d93a2780114 100644 --- a/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs @@ -192,12 +192,6 @@ s! { pub l_len: ::off64_t, pub l_pid: ::pid_t, } - - pub struct ip_mreqn { - pub imr_multiaddr: ::in_addr, - pub imr_address: ::in_addr, - pub imr_ifindex: ::c_int, - } } pub const POSIX_FADV_DONTNEED: ::c_int = 4; 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 d2d0867050e60..281f23e8a275c 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 @@ -260,12 +260,6 @@ s! { __unused5: u64 } - pub struct ip_mreqn { - pub imr_multiaddr: ::in_addr, - pub imr_address: ::in_addr, - pub imr_ifindex: ::c_int, - } - pub struct seccomp_notif_sizes { pub seccomp_notif: ::__u16, pub seccomp_notif_resp: ::__u16, diff --git a/src/unix/linux_like/linux/musl/mod.rs b/src/unix/linux_like/linux/musl/mod.rs index 97d29ed7184d7..5a20ae596f93a 100644 --- a/src/unix/linux_like/linux/musl/mod.rs +++ b/src/unix/linux_like/linux/musl/mod.rs @@ -218,12 +218,6 @@ s! { pub rt_irtt: ::c_ushort, } - pub struct ip_mreqn { - pub imr_multiaddr: ::in_addr, - pub imr_address: ::in_addr, - pub imr_ifindex: ::c_int, - } - pub struct __exit_status { pub e_termination: ::c_short, pub e_exit: ::c_short, diff --git a/src/unix/linux_like/mod.rs b/src/unix/linux_like/mod.rs index bdef476aa31cd..d749e11ae034a 100644 --- a/src/unix/linux_like/mod.rs +++ b/src/unix/linux_like/mod.rs @@ -25,6 +25,12 @@ s! { pub imr_interface: in_addr, } + pub struct ip_mreqn { + pub imr_multiaddr: in_addr, + pub imr_address: in_addr, + pub imr_ifindex: ::c_int, + } + pub struct ip_mreq_source { pub imr_multiaddr: in_addr, pub imr_interface: in_addr,