diff --git a/libc-test/semver/apple.txt b/libc-test/semver/apple.txt index 90de2724456a..bd18afc5822f 100644 --- a/libc-test/semver/apple.txt +++ b/libc-test/semver/apple.txt @@ -2155,6 +2155,7 @@ shmctl shmdt shmget shmid_ds +sig_t sigevent siginfo_t sigsuspend diff --git a/libc-test/semver/dragonfly.txt b/libc-test/semver/dragonfly.txt index 45e67dc8541e..6a14a615b8bb 100644 --- a/libc-test/semver/dragonfly.txt +++ b/libc-test/semver/dragonfly.txt @@ -1667,6 +1667,7 @@ shmctl shmdt shmget shmid_ds +sig_t sigaltstack sigevent siginfo_t diff --git a/libc-test/semver/freebsd.txt b/libc-test/semver/freebsd.txt index 7edf6575d00b..252f7fff4686 100644 --- a/libc-test/semver/freebsd.txt +++ b/libc-test/semver/freebsd.txt @@ -2430,6 +2430,7 @@ shmctl shmdt shmget shmid_ds +sig_t sigaltstack sigevent siginfo_t diff --git a/libc-test/semver/netbsd.txt b/libc-test/semver/netbsd.txt index c70af78952e0..1169ec12b012 100644 --- a/libc-test/semver/netbsd.txt +++ b/libc-test/semver/netbsd.txt @@ -1598,6 +1598,7 @@ shmctl shmdt shmget shmid_ds +sig_t sigaltstack sigevent siginfo_t diff --git a/libc-test/semver/openbsd.txt b/libc-test/semver/openbsd.txt index bdbf6fb07d46..f7933a856d64 100644 --- a/libc-test/semver/openbsd.txt +++ b/libc-test/semver/openbsd.txt @@ -1385,6 +1385,7 @@ shmctl shmdt shmget shmid_ds +sig_t sigaltstack siginfo_t sigsuspend diff --git a/src/unix/bsd/apple/mod.rs b/src/unix/bsd/apple/mod.rs index 8aa5085ad311..376319109ef8 100644 --- a/src/unix/bsd/apple/mod.rs +++ b/src/unix/bsd/apple/mod.rs @@ -326,9 +326,11 @@ s! { _pad: Padding<[usize; 9]>, } + // FIXME(1.0): This should not implement `PartialEq` + #[allow(unpredictable_function_pointer_comparisons)] pub struct sigaction { // FIXME(union): this field is actually a union - pub sa_sigaction: crate::sighandler_t, + pub sa_sigaction: crate::sig_t, pub sa_mask: sigset_t, pub sa_flags: c_int, } diff --git a/src/unix/bsd/freebsdlike/mod.rs b/src/unix/bsd/freebsdlike/mod.rs index 7d963eabf071..aa680abd097b 100644 --- a/src/unix/bsd/freebsdlike/mod.rs +++ b/src/unix/bsd/freebsdlike/mod.rs @@ -156,8 +156,10 @@ s! { _pad2: Padding<[c_int; 7]>, } + // FIXME(1.0): This should not implement `PartialEq` + #[allow(unpredictable_function_pointer_comparisons)] pub struct sigaction { - pub sa_sigaction: crate::sighandler_t, + pub sa_sigaction: crate::sig_t, pub sa_flags: c_int, pub sa_mask: sigset_t, } diff --git a/src/unix/bsd/mod.rs b/src/unix/bsd/mod.rs index 09b6484d3622..e925289796e5 100644 --- a/src/unix/bsd/mod.rs +++ b/src/unix/bsd/mod.rs @@ -11,6 +11,7 @@ pub type nfds_t = c_uint; pub type regoff_t = c_int; #[cfg(not(target_os = "dragonfly"))] pub type regoff_t = off_t; +pub type sig_t = Option; s! { pub struct sockaddr { diff --git a/src/unix/bsd/netbsdlike/mod.rs b/src/unix/bsd/netbsdlike/mod.rs index 522039f63b02..1d0db5795052 100644 --- a/src/unix/bsd/netbsdlike/mod.rs +++ b/src/unix/bsd/netbsdlike/mod.rs @@ -26,8 +26,10 @@ s! { pub sched_priority: c_int, } + // FIXME(1.0): This should not implement `PartialEq` + #[allow(unpredictable_function_pointer_comparisons)] pub struct sigaction { - pub sa_sigaction: crate::sighandler_t, + pub sa_sigaction: crate::sig_t, pub sa_mask: crate::sigset_t, pub sa_flags: c_int, } diff --git a/src/unix/mod.rs b/src/unix/mod.rs index 75f7a965ab3a..19ac0bf33bb1 100644 --- a/src/unix/mod.rs +++ b/src/unix/mod.rs @@ -1336,8 +1336,24 @@ extern "C" { #[cfg_attr(gnu_file_offset_bits64, link_name = "ftruncate64")] pub fn ftruncate(fd: c_int, length: off_t) -> c_int; + #[cfg(not(any( + target_vendor = "apple", + target_os = "freebsd", + target_os = "dragonfly", + target_os = "netbsd", + target_os = "openbsd" + )))] pub fn signal(signum: c_int, handler: sighandler_t) -> sighandler_t; + #[cfg(any( + target_vendor = "apple", + target_os = "freebsd", + target_os = "dragonfly", + target_os = "netbsd", + target_os = "openbsd" + ))] + pub fn signal(signum: c_int, handler: sig_t) -> sig_t; + #[cfg_attr(target_os = "netbsd", link_name = "__getrusage50")] #[cfg_attr(gnu_time_bits64, link_name = "__getrusage64")] #[cfg_attr(musl_redir_time64, link_name = "__getrusage_time64")]