Remove __need macros from signal.h.
commita992f506ff7162da2afa5a6151cc6f15949ceef4
authorZack Weinberg <zackw@panix.com>
Fri, 2 Dec 2016 00:24:13 +0000 (1 19:24 -0500)
committerZack Weinberg <zackw@panix.com>
Sat, 20 May 2017 23:04:43 +0000 (20 19:04 -0400)
tree93ed5242c166dde96fd0ec244801d9f5fdaca86a
parent500b3a499fff61157db464a99f459c772d7eb6c0
Remove __need macros from signal.h.

The types affected are __sig_atomic_t, sig_atomic_t, __sigset_t,
sigset_t, sigval_t, sigevent_t, and siginfo_t. __sig_atomic_t is a
scalar, so it's now directly available from bits/types.h.  The others
get bits/types/ headers.

Side effects include: There have been small changes to which
non-signal headers expose which subset of the signal-related types.
A couple of architectures' nested siginfo_t fields had to be renamed
to prevent undesired macro expansion.  Internal code that wants to
manipulate signal masks must now include <sigsetops.h> (which is not
installed) and should be aware that __sigaddset, __sigandset,
__sigdelset, __sigemptyset, and __sigorset no longer return a value
(unlike the public API).  Relatedly, the public signal.h no longer
declares any of those functions.  The obsolete sigmask() macro no
longer has a system-specific definition -- in the cases where it
matters, it didn't work anyway.

New Linux architectures should create bits/siginfo-arch.h and/or
bits/siginfo-consts-arch.h to customize their siginfo_t, rather than
duplicating everything in bits/siginfo.h (which no longer exists).
Add new __SI_* macros if necessary.  Ports to other operating systems
are strongly encouraged to generalize this scheme further.

* bits/sigevent-consts.h
* bits/siginfo-consts.h
* bits/types/__sigset_t.h
* bits/types/sigevent_t.h
* bits/types/siginfo_t.h
* sysdeps/unix/sysv/linux/bits/sigevent-consts.h
* sysdeps/unix/sysv/linux/bits/siginfo-consts.h
* sysdeps/unix/sysv/linux/bits/types/__sigset_t.h
* sysdeps/unix/sysv/linux/bits/types/sigevent_t.h
* sysdeps/unix/sysv/linux/bits/types/siginfo_t.h:
New system-dependent bits headers.

* sysdeps/unix/sysv/linux/bits/siginfo-arch.h
* sysdeps/unix/sysv/linux/bits/siginfo-consts-arch.h
* sysdeps/unix/sysv/linux/ia64/bits/siginfo-arch.h
* sysdeps/unix/sysv/linux/ia64/bits/siginfo-consts-arch.h
* sysdeps/unix/sysv/linux/mips/bits/siginfo-arch.h
* sysdeps/unix/sysv/linux/sparc/bits/siginfo-arch.h
* sysdeps/unix/sysv/linux/tile/bits/siginfo-arch.h
* sysdeps/unix/sysv/linux/tile/bits/siginfo-consts-arch.h
* sysdeps/unix/sysv/linux/x86/bits/siginfo-arch.h:
New Linux-only system-dependent bits headers.

* signal/bits/types/sig_atomic_t.h
* signal/bits/types/sigset_t.h
* signal/bits/types/sigval_t.h:
New non-system-dependent bits headers.

* sysdeps/generic/sigsetops.h
* sysdeps/unix/sysv/linux/sigsetops.h:
New internal headers.

* include/bits/types/sig_atomic_t.h
* include/bits/types/sigset_t.h
* include/bits/types/sigval_t.h:
New wrappers.

* signal/sigsetops.h
* bits/siginfo.h
* bits/sigset.h
* sysdeps/unix/sysv/linux/bits/siginfo.h
* sysdeps/unix/sysv/linux/bits/sigset.h
* sysdeps/unix/sysv/linux/ia64/bits/siginfo.h
* sysdeps/unix/sysv/linux/mips/bits/siginfo.h
* sysdeps/unix/sysv/linux/s390/bits/siginfo.h
* sysdeps/unix/sysv/linux/sparc/bits/siginfo.h
* sysdeps/unix/sysv/linux/tile/bits/siginfo.h
* sysdeps/unix/sysv/linux/x86/bits/siginfo.h:
Deleted.

* signal/Makefile, sysdeps/unix/sysv/linux/Makefile:
Update lists of installed headers.

* posix/bits/types.h: Define __sig_atomic_t here.
* signal/signal.h: Use the new bits headers; no need to handle
__need_sig_atomic_t nor __need_sigset_t.  Don't use __sigmask
to define sigmask.
* include/signal.h: No need to handle __need_sig_atomic_t
nor __need_sigset_t.  Don't define __sigemptyset.

* io/sys/poll.h, setjmp/setjmp.h
* sysdeps/arm/sys/ucontext.h, sysdeps/generic/sys/ucontext.h
* sysdeps/i386/sys/ucontext.h, sysdeps/m68k/sys/ucontext.h
* sysdeps/mach/hurd/i386/bits/sigcontext.h
* sysdeps/mips/sys/ucontext.h, sysdeps/powerpc/novmxsetjmp.h
* sysdeps/pthread/bits/sigthread.h
* sysdeps/unix/sysv/linux/hppa/sys/ucontext.h
* sysdeps/unix/sysv/linux/m68k/sys/ucontext.h
* sysdeps/unix/sysv/linux/mips/sys/ucontext.h
* sysdeps/unix/sysv/linux/nios2/sys/ucontext.h
* sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
* sysdeps/unix/sysv/linux/s390/sys/ucontext.h
* sysdeps/unix/sysv/linux/sh/sys/ucontext.h
* sysdeps/unix/sysv/linux/sparc/sys/ucontext.h
* sysdeps/unix/sysv/linux/tile/sys/ucontext.h
* sysdeps/unix/sysv/linux/x86/sys/ucontext.h:
Use bits/types/__sigset_t.h.

* misc/sys/select.h, posix/spawn.h
* sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
* sysdeps/unix/sysv/linux/sys/epoll.h
* sysdeps/unix/sysv/linux/sys/signalfd.h:
Use bits/types/sigset_t.h.

* resolv/netdb.h, rt/mqueue.h: Use bits/types/sigevent_t.h.
* rt/aio.h: Use bits/types/sigevent_t.h and bits/sigevent-consts.h.
* socket/sys/socket.h: Don't include bits/sigset.h.

* login/utmp_file.c, shadow/lckpwdf.c, signal/sigandset.c
* signal/sigisempty.c, stdlib/abort.c, sysdeps/posix/profil.c
* sysdeps/posix/sigignore.c, sysdeps/posix/sigintr.c
* sysdeps/posix/signal.c, sysdeps/posix/sigset.c
* sysdeps/posix/sprofil.c, sysdeps/posix/sysv_signal.c
* sysdeps/unix/sysv/linux/nptl-signals.h:
Include sigsetops.h.

* signal/sigaddset.c, signal/sigandset.c, signal/sigdelset.c
* signal/sigorset.c, stdlib/abort.c, sysdeps/posix/sigignore.c
* sysdeps/posix/signal.c, sysdeps/posix/sigset.c:
__sigaddset, __sigandset, __sigdelset, __sigemptyset, __sigorset
now return no value.

* signal/sigaddset.c, signal/sigdelset.c, signal/sigismem.c
Include <errno.h>, <signal.h>, and <sigsetops.h> instead of
"sigsetops.h".

* signal/sigsetops.c: Explicitly define __sigismember,
__sigaddset, and __sigdelset as compatibility symbols.

* signal/Versions: Correct commentary on __sigpause,
__sigaddset, __sigdelset, __sigismember.

* inet/rcmd.c: Include sigsetops.h.  Convert old code using
__sigblock/__sigsetmask to use __sigprocmask and friends.
96 files changed:
ChangeLog
bits/sigevent-consts.h [copied from sysdeps/posix/sigignore.c with 55% similarity]
bits/siginfo-consts.h [copied from bits/siginfo.h with 68% similarity]
bits/sigset.h [deleted file]
bits/types/__sigset_t.h [new file with mode: 0644]
bits/types/sigevent_t.h [new file with mode: 0644]
bits/types/siginfo_t.h [new file with mode: 0644]
include/bits/types/sig_atomic_t.h [new file with mode: 0644]
include/bits/types/sigset_t.h [new file with mode: 0644]
include/bits/types/sigval_t.h [new file with mode: 0644]
include/signal.h
inet/rcmd.c
io/sys/poll.h
login/utmp_file.c
misc/sys/select.h
posix/bits/types.h
posix/spawn.h
posix/sys/wait.h
resolv/netdb.h
rt/aio.h
rt/mqueue.h
setjmp/setjmp.h
shadow/lckpwdf.c
signal/Makefile
signal/Versions
signal/bits/types/sig_atomic_t.h [new file with mode: 0644]
signal/bits/types/sigset_t.h [new file with mode: 0644]
signal/bits/types/sigval_t.h [new file with mode: 0644]
signal/sigaddset.c
signal/sigandset.c
signal/sigdelset.c
signal/sigisempty.c
signal/sigismem.c
signal/signal.h
signal/sigorset.c
signal/sigsetops.c
signal/sigsetops.h [deleted file]
socket/sys/socket.h
stdlib/abort.c
sysdeps/arm/sys/ucontext.h
sysdeps/generic/sigsetops.h [new file with mode: 0644]
sysdeps/generic/sys/ucontext.h
sysdeps/i386/sys/ucontext.h
sysdeps/m68k/sys/ucontext.h
sysdeps/mach/hurd/i386/bits/sigcontext.h
sysdeps/mips/sys/ucontext.h
sysdeps/posix/profil.c
sysdeps/posix/sigignore.c
sysdeps/posix/sigintr.c
sysdeps/posix/signal.c
sysdeps/posix/sigset.c
sysdeps/posix/sprofil.c
sysdeps/posix/sysv_signal.c
sysdeps/powerpc/novmxsetjmp.h
sysdeps/pthread/bits/sigthread.h
sysdeps/unix/sysv/linux/Makefile
sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h
sysdeps/unix/sysv/linux/alpha/sys/ucontext.h
sysdeps/unix/sysv/linux/arm/sys/ucontext.h
sysdeps/unix/sysv/linux/bits/sigevent-consts.h [copied from sysdeps/posix/sigignore.c with 50% similarity]
sysdeps/unix/sysv/linux/bits/siginfo-arch.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/bits/siginfo-consts-arch.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/bits/siginfo-consts.h [moved from bits/siginfo.h with 64% similarity]
sysdeps/unix/sysv/linux/bits/siginfo.h [deleted file]
sysdeps/unix/sysv/linux/bits/sigset.h [deleted file]
sysdeps/unix/sysv/linux/bits/types/__sigset_t.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/bits/types/sigevent_t.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/bits/types/siginfo_t.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/hppa/sys/ucontext.h
sysdeps/unix/sysv/linux/ia64/bits/siginfo-arch.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/ia64/bits/siginfo-consts-arch.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/ia64/bits/siginfo.h [deleted file]
sysdeps/unix/sysv/linux/m68k/sys/ucontext.h
sysdeps/unix/sysv/linux/mips/bits/siginfo-arch.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/mips/bits/siginfo.h [deleted file]
sysdeps/unix/sysv/linux/mips/sys/ucontext.h
sysdeps/unix/sysv/linux/nios2/sys/ucontext.h
sysdeps/unix/sysv/linux/nptl-signals.h
sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
sysdeps/unix/sysv/linux/s390/bits/siginfo.h [deleted file]
sysdeps/unix/sysv/linux/s390/sys/ucontext.h
sysdeps/unix/sysv/linux/sh/sys/ucontext.h
sysdeps/unix/sysv/linux/sigsetops.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/sparc/bits/siginfo-arch.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/sparc/bits/siginfo-consts-arch.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/sparc/bits/siginfo.h [deleted file]
sysdeps/unix/sysv/linux/sparc/sys/ucontext.h
sysdeps/unix/sysv/linux/sys/epoll.h
sysdeps/unix/sysv/linux/sys/signalfd.h
sysdeps/unix/sysv/linux/tile/bits/siginfo-arch.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/tile/bits/siginfo-consts-arch.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/tile/bits/siginfo.h [deleted file]
sysdeps/unix/sysv/linux/tile/sys/ucontext.h
sysdeps/unix/sysv/linux/x86/bits/siginfo-arch.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/x86/bits/siginfo.h [deleted file]
sysdeps/unix/sysv/linux/x86/sys/ucontext.h