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

95 files changed:
ChangeLog
bits/sigevent-consts.h [moved from signal/sigsetops.h with 55% similarity]
bits/siginfo-consts.h [moved 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
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 [new file with mode: 0644]
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 [new file with mode: 0644]
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

index 43beed2..62341b8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,132 @@
 2017-05-20  Zack Weinberg  <zackw@panix.com>
 
+       * 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.
+
+       * resolv/resolv.h: Remove __need_res_state logic.
+       Move definition of res_state and related constants to ...
+       * resolv/bits/types/res_state.h: ...this new file.
+       * resolv/Makefile: Install bits/types/res_state.h.
+       * include/bits/types/res_state.h: New wrapper.
+       * include/list.h: Remove __need_list_t logic.
+       Move definition of list_t to ...
+       * include/list_t.h: ...this new file.
+
+       * nptl/descr.h: Include list_t.h and bits/types/res_state.h
+       instead of list.h and resolv.h.
+
        * resolv/resolv.h: Remove __need_res_state logic.
        Move definition of res_state and related constants to ...
        * resolv/bits/types/res_state.h: ...this new file.
similarity index 55%
rename from signal/sigsetops.h
rename to bits/sigevent-consts.h
index cd12820..f5940e0 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991-2017 Free Software Foundation, Inc.
+/* sigevent constants.  Stub version.
+   Copyright (C) 1997-2017 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-/* Definitions relevant to functions that operate on `sigset_t's.  */
+#ifndef _BITS_SIGEVENT_CONSTS_H
+#define _BITS_SIGEVENT_CONSTS_H 1
 
-#include <errno.h>
-#include <signal.h>
-#include <string.h>
+#if !defined _SIGNAL_H && !defined _AIO_H
+#error "Don't include <bits/sigevent-consts.h> directly; use <signal.h> instead."
+#endif
 
-#define        BITS            (_NSIG - 1)
-#define        ELT(signo)      (((signo) - 1) / BITS)
-#define        MASK(signo)     (1 << (((signo) - 1) % BITS))
+/* `sigev_notify' values.  */
+enum
+{
+  SIGEV_SIGNAL = 0,            /* Notify via signal.  */
+# define SIGEV_SIGNAL  SIGEV_SIGNAL
+  SIGEV_NONE,                  /* Other notification: meaningless.  */
+# define SIGEV_NONE    SIGEV_NONE
+  SIGEV_THREAD                 /* Deliver via thread creation.  */
+# define SIGEV_THREAD  SIGEV_THREAD
+};
 
-#undef sigemptyset
-#undef sigfillset
-#undef sigaddset
-#undef sigdelset
-#undef sigismember
+#endif
similarity index 68%
rename from bits/siginfo.h
rename to bits/siginfo-consts.h
index 4919df5..a58ac4b 100644 (file)
@@ -1,4 +1,4 @@
-/* siginfo_t, sigevent and constants.  Stub version.
+/* siginfo_t constants.  Stub version.
    Copyright (C) 1997-2017 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#if !defined _SIGNAL_H && !defined __need_siginfo_t \
-    && !defined __need_sigevent_t
-# error "Never include this file directly.  Use <signal.h> instead"
-#endif
-
-#if (!defined __have_sigval_t \
-     && (defined _SIGNAL_H || defined __need_siginfo_t \
-        || defined __need_sigevent_t))
-# define __have_sigval_t 1
-
-/* Type for data associated with a signal.  */
-typedef union sigval
-  {
-    int sival_int;
-    void *sival_ptr;
-  } sigval_t;
-#endif
-
-#if (!defined __have_siginfo_t \
-     && (defined _SIGNAL_H || defined __need_siginfo_t))
-# define __have_siginfo_t      1
-
-typedef struct siginfo
-  {
-    int si_signo;              /* Signal number.  */
-    int si_errno;              /* If non-zero, an errno value associated with
-                                  this signal, as defined in <errno.h>.  */
-    int si_code;               /* Signal code.  */
-    __pid_t si_pid;            /* Sending process ID.  */
-    __uid_t si_uid;            /* Real user ID of sending process.  */
-    void *si_addr;             /* Address of faulting instruction.  */
-    int si_status;             /* Exit value or signal.  */
-    long int si_band;          /* Band event for SIGPOLL.  */
-    union sigval si_value;     /* Signal value.  */
-  } siginfo_t;
-
+#ifndef _BITS_SIGINFO_CONSTS_H
+#define _BITS_SIGINFO_CONSTS_H 1
 
 /* Values for `si_code'.  Positive values are reserved for kernel-generated
    signals.  */
@@ -181,36 +147,4 @@ enum
 };
 # endif
 
-# undef __need_siginfo_t
-#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t).  */
-
-
-#if (defined _SIGNAL_H || defined __need_sigevent_t) \
-    && !defined __have_sigevent_t
-# define __have_sigevent_t     1
-
-/* Structure to transport application-defined values with signals.  */
-# define SIGEV_MAX_SIZE        64
-# define SIGEV_PAD_SIZE        ((SIGEV_MAX_SIZE / sizeof (int)) - 3)
-
-typedef struct sigevent
-  {
-    sigval_t sigev_value;
-    int sigev_signo;
-    int sigev_notify;
-    void (*sigev_notify_function) (sigval_t);      /* Function to start.  */
-    void *sigev_notify_attributes;                 /* Really pthread_attr_t.*/
-  } sigevent_t;
-
-/* `sigev_notify' values.  */
-enum
-{
-  SIGEV_SIGNAL = 0,            /* Notify via signal.  */
-# define SIGEV_SIGNAL  SIGEV_SIGNAL
-  SIGEV_NONE,                  /* Other notification: meaningless.  */
-# define SIGEV_NONE    SIGEV_NONE
-  SIGEV_THREAD                 /* Deliver via thread creation.  */
-# define SIGEV_THREAD  SIGEV_THREAD
-};
-
-#endif /* have _SIGNAL_H.  */
+#endif
diff --git a/bits/sigset.h b/bits/sigset.h
deleted file mode 100644 (file)
index 4099cc7..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-/* __sig_atomic_t, __sigset_t, and related definitions.  Generic/BSD version.
-   Copyright (C) 1991-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef        _SIGSET_H_types
-#define        _SIGSET_H_types 1
-
-typedef int __sig_atomic_t;
-
-/* A `sigset_t' has a bit for each signal.  */
-typedef unsigned long int __sigset_t;
-
-#endif
-
-
-/* We only want to define these functions if <signal.h> was actually
-   included; otherwise we were included just to define the types.  Since we
-   are namespace-clean, it wouldn't hurt to define extra macros.  But
-   trouble can be caused by functions being defined (e.g., any global
-   register vars declared later will cause compilation errors).  */
-
-#if !defined _SIGSET_H_fns && defined _SIGNAL_H
-#define _SIGSET_H_fns 1
-
-#ifndef _EXTERN_INLINE
-# define _EXTERN_INLINE __extern_inline
-#endif
-
-/* Return a mask that includes SIG only.  The cast to `sigset_t' avoids
-   overflow if `sigset_t' is wider than `int'.  */
-#define        __sigmask(sig)  (((__sigset_t) 1) << ((sig) - 1))
-
-#define        __sigemptyset(set)      \
-  (__extension__ ({ *(set) = (__sigset_t) 0; 0; })
-#define        __sigfillset(set)       \
-  (__extension__ ({ *(set) = ~(__sigset_t) 0; 0; }))
-
-#ifdef _GNU_SOURCE
-# define __sigisemptyset(set)  (*(set) == (__sigset_t) 0)
-# define __sigandset(dest, left, right) \
-  (__extension__ ({ *(dest) = *(left) & *(right); 0; }))
-# define __sigorset(dest, left, right) \
-  (__extension__ ({ *(dest) = *(left) | *(right); 0; }))
-#endif
-
-/* These functions needn't check for a bogus signal number -- error
-   checking is done in the non __ versions.  */
-
-extern int __sigismember (const __sigset_t *, int);
-extern int __sigaddset (__sigset_t *, int);
-extern int __sigdelset (__sigset_t *, int);
-
-#ifdef __USE_EXTERN_INLINES
-# define __SIGSETFN(NAME, BODY, CONST)                                       \
-  _EXTERN_INLINE int                                                         \
-  NAME (CONST __sigset_t *__set, int __sig)                                  \
-  {                                                                          \
-    __sigset_t __mask = __sigmask (__sig);                                   \
-    return BODY;                                                             \
-  }
-
-__SIGSETFN (__sigismember, (*__set & __mask) ? 1 : 0, const)
-__SIGSETFN (__sigaddset, ((*__set |= __mask), 0), )
-__SIGSETFN (__sigdelset, ((*__set &= ~__mask), 0), )
-
-# undef __SIGSETFN
-#endif
-
-
-#endif /* ! _SIGSET_H_fns.  */
diff --git a/bits/types/__sigset_t.h b/bits/types/__sigset_t.h
new file mode 100644 (file)
index 0000000..c90d760
--- /dev/null
@@ -0,0 +1,7 @@
+#ifndef ____sigset_t_defined
+#define ____sigset_t_defined 1
+
+/* A `sigset_t' has a bit for each signal.  */
+typedef unsigned long int __sigset_t;
+
+#endif
diff --git a/bits/types/sigevent_t.h b/bits/types/sigevent_t.h
new file mode 100644 (file)
index 0000000..7b8cb05
--- /dev/null
@@ -0,0 +1,17 @@
+#ifndef __sigevent_t_defined
+#define __sigevent_t_defined 1
+
+#include <bits/types.h>
+#include <bits/types/sigval_t.h>
+
+/* Structure to transport application-defined values with signals.  */
+typedef struct sigevent
+  {
+    sigval_t sigev_value;
+    int sigev_signo;
+    int sigev_notify;
+    void (*sigev_notify_function) (sigval_t);      /* Function to start.  */
+    void *sigev_notify_attributes;                 /* Really pthread_attr_t.*/
+  } sigevent_t;
+
+#endif
diff --git a/bits/types/siginfo_t.h b/bits/types/siginfo_t.h
new file mode 100644 (file)
index 0000000..ab6bf18
--- /dev/null
@@ -0,0 +1,21 @@
+#ifndef __siginfo_t_defined
+#define __siginfo_t_defined 1
+
+#include <bits/types.h>
+#include <bits/types/sigval_t.h>
+
+typedef struct siginfo
+  {
+    int si_signo;              /* Signal number.  */
+    int si_errno;              /* If non-zero, an errno value associated with
+                                  this signal, as defined in <errno.h>.  */
+    int si_code;               /* Signal code.  */
+    __pid_t si_pid;            /* Sending process ID.  */
+    __uid_t si_uid;            /* Real user ID of sending process.  */
+    void *si_addr;             /* Address of faulting instruction.  */
+    int si_status;             /* Exit value or signal.  */
+    long int si_band;          /* Band event for SIGPOLL.  */
+    sigval_t si_value;         /* Signal value.  */
+  } siginfo_t;
+
+#endif
diff --git a/include/bits/types/sig_atomic_t.h b/include/bits/types/sig_atomic_t.h
new file mode 100644 (file)
index 0000000..783693f
--- /dev/null
@@ -0,0 +1 @@
+#include <signal/bits/types/sig_atomic_t.h>
diff --git a/include/bits/types/sigset_t.h b/include/bits/types/sigset_t.h
new file mode 100644 (file)
index 0000000..20c3dc2
--- /dev/null
@@ -0,0 +1 @@
+#include <signal/bits/types/sigset_t.h>
diff --git a/include/bits/types/sigval_t.h b/include/bits/types/sigval_t.h
new file mode 100644 (file)
index 0000000..296734e
--- /dev/null
@@ -0,0 +1 @@
+#include <signal/bits/types/sigval_t.h>
index 276a99d..e39ddc6 100644 (file)
@@ -1,7 +1,4 @@
 #ifndef _SIGNAL_H
-#if defined __need_sig_atomic_t || defined __need_sigset_t
-# include <signal/signal.h>
-#else
 # include <signal/signal.h>
 
 # ifndef _ISOMAC
@@ -53,12 +50,6 @@ libc_hidden_proto (__libc_sigaction)
 extern int __default_sigpause (int mask);
 extern int __xpg_sigpause (int sig);
 
-/* Simplified sigemptyset() implementation without the parameter checking.  */
-#undef __sigemptyset
-#define __sigemptyset(ss) \
-  ({ __builtin_memset (ss, '\0', sizeof (sigset_t)); 0; })
-
-
 /* Allocate real-time signal with highest/lowest available priority.  */
 extern int __libc_allocate_rtsig (int __high);
 
@@ -66,6 +57,6 @@ extern int __libc_allocate_rtsig (int __high);
 extern __typeof (__sigaction) __sigaction attribute_hidden;
 extern __typeof (__libc_sigaction) __libc_sigaction attribute_hidden;
 #  endif
-# endif
-#endif
-#endif
+
+# endif /* _ISOMAC */
+#endif /* signal.h */
index c285b9e..e970123 100644 (file)
@@ -78,6 +78,7 @@
 #include <stdlib.h>
 #include <wchar.h>
 #include <sys/uio.h>
+#include <sigsetops.h>
 
 
 int __ivaliduser (FILE *, u_int32_t, const char *, const char *);
@@ -112,7 +113,8 @@ rcmd_af (char **ahost, u_short rport, const char *locuser, const char *remuser,
                struct sockaddr_in6 sin6;
        } from;
        struct pollfd pfd[2];
-       int32_t oldmask;
+       sigset_t mask, omask;
+
        pid_t pid;
        int s, lport, timo, error;
        char c;
@@ -160,7 +162,9 @@ rcmd_af (char **ahost, u_short rport, const char *locuser, const char *remuser,
                *ahost = NULL;
        ai = res;
        refused = 0;
-       oldmask = __sigblock(sigmask(SIGURG));
+       __sigemptyset(&mask);
+       __sigaddset(&mask, SIGURG);
+       __sigprocmask (SIG_BLOCK, &mask, &omask);
        for (timo = 1, lport = IPPORT_RESERVED - 1;;) {
                char errbuf[200];
 
@@ -172,7 +176,7 @@ rcmd: socket: All ports in use\n"));
                        else
                                __fxprintf(NULL, "rcmd: socket: %m\n");
 
-                       __sigsetmask(oldmask);
+                       __sigprocmask (SIG_SETMASK, &omask, 0);
                        freeaddrinfo(res);
                        return -1;
                }
@@ -225,7 +229,7 @@ rcmd: socket: All ports in use\n"));
                freeaddrinfo(res);
                (void)__fxprintf(NULL, "%s: %s\n", *ahost,
                                 __strerror_r(errno, errbuf, sizeof (errbuf)));
-               __sigsetmask(oldmask);
+               __sigprocmask (SIG_SETMASK, &omask, 0);
                return -1;
        }
        lport--;
@@ -337,7 +341,7 @@ socket: protocol failure in circuit setup\n")) >= 0)
                }
                goto bad2;
        }
-       __sigsetmask(oldmask);
+       __sigprocmask (SIG_SETMASK, &omask, 0);
        freeaddrinfo(res);
        return s;
 bad2:
@@ -345,7 +349,7 @@ bad2:
                (void)__close(*fd2p);
 bad:
        (void)__close(s);
-       __sigsetmask(oldmask);
+       __sigprocmask (SIG_SETMASK, &omask, 0);
        freeaddrinfo(res);
        return -1;
 }
index 7356fb9..e34c2db 100644 (file)
 /* Get the platform dependent bits of `poll'.  */
 #include <bits/poll.h>
 #ifdef __USE_GNU
-/* Get the __sigset_t definition.  */
-# include <bits/sigset.h>
-/* Get the timespec definition.  */
-#include <bits/types/struct_timespec.h>
+# include <bits/types/__sigset_t.h>
+# include <bits/types/struct_timespec.h>
 #endif
 
 
index 6ebe1ef..240e0e3 100644 (file)
@@ -28,6 +28,7 @@
 #include <utmp.h>
 #include <not-cancel.h>
 #include <kernel-features.h>
+#include <sigsetops.h>
 
 #include "utmp-private.h"
 #include "utmp-equal.h"
index e27fb44..06dd31b 100644 (file)
 /* Get __FD_* definitions.  */
 #include <bits/select.h>
 
-/* Get __sigset_t.  */
-#include <bits/sigset.h>
-
-#ifndef __sigset_t_defined
-# define __sigset_t_defined
-typedef __sigset_t sigset_t;
-#endif
+/* Get sigset_t.  */
+#include <bits/types/sigset_t.h>
 
 /* Get definition of timer specification structures.  */
 #include <bits/types/time_t.h>
index 7638bd0..e2f73a8 100644 (file)
@@ -197,6 +197,10 @@ __STD_TYPE __SWORD_TYPE __intptr_t;
 /* Duplicate info from sys/socket.h.  */
 __STD_TYPE __U32_TYPE __socklen_t;
 
+/* C99: An integer type that can be accessed as an atomic entity,
+   even in the presence of asynchronous interrupts.
+   It is not currently necessary for this to be machine-specific.  */
+typedef int __sig_atomic_t;
 
 #undef __STD_TYPE
 
index a1154a3..2fa5f54 100644 (file)
@@ -21,9 +21,8 @@
 
 #include <features.h>
 #include <sched.h>
-#define __need_sigset_t
-#include <signal.h>
 #include <sys/types.h>
+#include <bits/types/sigset_t.h>
 
 
 /* Data structure to contain attributes for thread creation.  */
index 897bfae..d5b7e4d 100644 (file)
@@ -103,8 +103,7 @@ typedef __id_t id_t;
 #  define __id_t_defined
 # endif
 
-# define __need_siginfo_t
-# include <bits/siginfo.h>
+# include <bits/types/siginfo_t.h>
 
 /* Wait for a childing matching IDTYPE and ID to change the status and
    place appropriate information in *INFOP.
index 936fab9..f76ccf1 100644 (file)
@@ -33,8 +33,7 @@
 #endif
 
 #ifdef __USE_GNU
-# define __need_sigevent_t
-# include <bits/siginfo.h>
+# include <bits/types/sigevent_t.h>
 # include <bits/types/struct_timespec.h>
 #endif
 
index 5647e52..d72ad5d 100644 (file)
--- a/rt/aio.h
+++ b/rt/aio.h
@@ -24,8 +24,8 @@
 
 #include <features.h>
 #include <sys/types.h>
-#define __need_sigevent_t
-#include <bits/siginfo.h>
+#include <bits/types/sigevent_t.h>
+#include <bits/sigevent-consts.h>
 #include <bits/types/struct_timespec.h>
 
 __BEGIN_DECLS
index d65871e..c79aa53 100644 (file)
@@ -21,8 +21,7 @@
 #include <features.h>
 #include <sys/types.h>
 #include <fcntl.h>
-#define __need_sigevent_t
-#include <bits/siginfo.h>
+#include <bits/types/sigevent_t.h>
 #include <bits/types/struct_timespec.h>
 /* Get the definition of mqd_t and struct mq_attr.  */
 #include <bits/mqueue.h>
index e10adaf..86fb2ed 100644 (file)
@@ -27,8 +27,7 @@
 __BEGIN_DECLS
 
 #include <bits/setjmp.h>               /* Get `__jmp_buf'.  */
-#include <bits/sigset.h>               /* Get `__sigset_t'.  */
-
+#include <bits/types/__sigset_t.h>
 
 /* Calling environment, plus possibly a saved signal mask.  */
 struct __jmp_buf_tag
index 09427eb..15602ef 100644 (file)
@@ -24,6 +24,7 @@
 #include <string.h>
 #include <unistd.h>
 #include <sys/file.h>
+#include <sigsetops.h>
 
 #include <kernel-features.h>
 
index 077aaea..de92558 100644 (file)
@@ -22,10 +22,14 @@ subdir      := signal
 
 include ../Makeconfig
 
-headers        := signal.h sys/signal.h bits/signum.h bits/sigcontext.h \
-          bits/sigaction.h bits/sigset.h bits/siginfo.h bits/sigstack.h \
-          bits/sigthread.h bits/types/struct_sigstack.h bits/types/stack_t.h \
-          bits/ss_flags.h
+headers := signal.h sys/signal.h \
+          bits/signum.h bits/sigcontext.h bits/sigaction.h \
+          bits/sigevent-consts.h bits/siginfo-consts.h \
+          bits/sigstack.h bits/sigthread.h bits/ss_flags.h \
+          bits/types/__sigset_t.h bits/types/sig_atomic_t.h \
+          bits/types/sigevent_t.h bits/types/siginfo_t.h \
+          bits/types/sigset_t.h bits/types/stack_t.h \
+          bits/types/struct_sigstack.h
 
 routines       := signal raise killpg \
                   sigaction sigprocmask kill \
index 4d86930..a915ef4 100644 (file)
@@ -1,13 +1,13 @@
 libc {
   GLIBC_2.0 {
     # functions with special/multiple interfaces
-    __sigaddset; __sigdelset; __sigismember; __sysv_signal;
+    __sigpause;  __sysv_signal;
 
-    # functions used in inline functions or macros
-    __sigpause;
+    # functions formerly used in inline functions or macros
+    __sigaddset; __sigdelset; __sigismember;
 
     # functions used in other libraries
-     __sigaction;
+    __sigaction;
 
     # b*
     bsd_signal;
diff --git a/signal/bits/types/sig_atomic_t.h b/signal/bits/types/sig_atomic_t.h
new file mode 100644 (file)
index 0000000..47eaa28
--- /dev/null
@@ -0,0 +1,10 @@
+#ifndef __sig_atomic_t_defined
+#define __sig_atomic_t_defined 1
+
+#include <bits/types.h>
+
+/* An integral type that can be modified atomically, without the
+   possibility of a signal arriving in the middle of the operation.  */
+typedef __sig_atomic_t sig_atomic_t;
+
+#endif
diff --git a/signal/bits/types/sigset_t.h b/signal/bits/types/sigset_t.h
new file mode 100644 (file)
index 0000000..8b27e91
--- /dev/null
@@ -0,0 +1,9 @@
+#ifndef __sigset_t_defined
+#define __sigset_t_defined 1
+
+#include <bits/types/__sigset_t.h>
+
+/* A set of signals to be blocked, unblocked, or waited for.  */
+typedef __sigset_t sigset_t;
+
+#endif
diff --git a/signal/bits/types/sigval_t.h b/signal/bits/types/sigval_t.h
new file mode 100644 (file)
index 0000000..666598f
--- /dev/null
@@ -0,0 +1,13 @@
+#ifndef __sigval_t_defined
+#define __sigval_t_defined
+
+/* Type for data associated with a signal.  */
+union sigval
+{
+  int sival_int;
+  void *sival_ptr;
+};
+
+typedef union sigval sigval_t;
+
+#endif
index ca280d8..161be7b 100644 (file)
@@ -15,7 +15,9 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include "sigsetops.h"
+#include <errno.h>
+#include <signal.h>
+#include <sigsetops.h>
 
 /* Add SIGNO to SET.  */
 int
@@ -27,6 +29,7 @@ sigaddset (sigset_t *set, int signo)
       return -1;
     }
 
-  return __sigaddset (set, signo);
+  __sigaddset (set, signo);
+  return 0;
 }
 libc_hidden_def (sigaddset)
index f81a593..ffea141 100644 (file)
 
 #include <errno.h>
 #include <signal.h>
-#define __need_NULL
-#include <stddef.h>
+#include <sigsetops.h>
 
 /* Combine sets LEFT and RIGHT by logical AND and place result in DEST.  */
 int
 sigandset (sigset_t *dest, const sigset_t *left, const sigset_t *right)
 {
-  if (dest == NULL || left == NULL || right == NULL)
+  if (!dest || !left || !right)
     {
       __set_errno (EINVAL);
       return -1;
     }
 
-  return __sigandset (dest, left, right);
+  __sigandset (dest, left, right);
+  return 0;
 }
index 4632103..2aaa536 100644 (file)
@@ -15,7 +15,9 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include "sigsetops.h"
+#include <errno.h>
+#include <signal.h>
+#include <sigsetops.h>
 
 /* Add SIGNO to SET.  */
 int
@@ -27,6 +29,7 @@ sigdelset (sigset_t *set, int signo)
       return -1;
     }
 
-  return __sigdelset (set, signo);
+  __sigdelset (set, signo);
+  return 0;
 }
 libc_hidden_def (sigdelset)
index eabe71c..bea03f1 100644 (file)
 
 #include <errno.h>
 #include <signal.h>
-#define __need_NULL
-#include <stddef.h>
+#include <sigsetops.h>
 
 /* Test whether SET is empty.  */
 int
 sigisemptyset (const sigset_t *set)
 {
-  if (set == NULL)
+  if (!set)
     {
       __set_errno (EINVAL);
       return -1;
     }
 
-    return __sigisemptyset (set);
+  return __sigisemptyset (set);
 }
index 8da14ac..6ef4a4d 100644 (file)
@@ -15,7 +15,9 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include "sigsetops.h"
+#include <errno.h>
+#include <signal.h>
+#include <sigsetops.h>
 
 /* Return 1 if SIGNO is in SET, 0 if not.  */
 int
index d01df32..a51e912 100644 (file)
  */
 
 #ifndef        _SIGNAL_H
-
-#if !defined __need_sig_atomic_t && !defined __need_sigset_t
-# define _SIGNAL_H
-#endif
+#define _SIGNAL_H
 
 #include <features.h>
 
 __BEGIN_DECLS
 
-#include <bits/sigset.h>               /* __sigset_t, __sig_atomic_t.  */
+#include <bits/types.h>
+#include <bits/signum.h>
 
-/* An integral type that can be modified atomically, without the
-   possibility of a signal arriving in the middle of the operation.  */
-#if defined __need_sig_atomic_t || defined _SIGNAL_H
-# ifndef __sig_atomic_t_defined
-#  define __sig_atomic_t_defined
-typedef __sig_atomic_t sig_atomic_t;
-# endif
-# undef __need_sig_atomic_t
-#endif
+#include <bits/types/sig_atomic_t.h>
 
-#if defined __need_sigset_t || (defined _SIGNAL_H && defined __USE_POSIX)
-# ifndef __sigset_t_defined
-#  define __sigset_t_defined
-typedef __sigset_t sigset_t;
-# endif
-# undef __need_sigset_t
+#if defined __USE_POSIX
+#include <bits/types/sigset_t.h>
 #endif
 
-#ifdef _SIGNAL_H
-
-#include <bits/types.h>
-#include <bits/signum.h>
-
 #if defined __USE_XOPEN || defined __USE_XOPEN2K
 # ifndef __pid_t_defined
 typedef __pid_t pid_t;
@@ -73,8 +54,10 @@ typedef __uid_t uid_t;
 #endif
 
 #if defined __USE_POSIX199309 || defined __USE_XOPEN_EXTENDED
-/* Get the `siginfo_t' type plus the needed symbols.  */
-# include <bits/siginfo.h>
+# include <bits/types/siginfo_t.h>
+# include <bits/types/sigevent_t.h>
+# include <bits/siginfo-consts.h>
+# include <bits/sigevent-consts.h>
 #endif
 
 
@@ -174,7 +157,7 @@ extern int __sigpause (int __sig_or_mask, int __is_sig);
    simply do not work in many situations.  Use `sigprocmask' instead.  */
 
 /* Compute mask for signal SIG.  */
-# define sigmask(sig)  __sigmask(sig)
+# define sigmask(sig) ((int)(1u << ((sig) - 1)))
 
 /* Block signals in MASK, returning the old mask.  */
 extern int sigblock (int __mask) __THROW __attribute_deprecated__;
@@ -366,8 +349,6 @@ extern int __libc_current_sigrtmin (void) __THROW;
 /* Return number of available real-time signal with lowest priority.  */
 extern int __libc_current_sigrtmax (void) __THROW;
 
-#endif /* signal.h  */
-
 __END_DECLS
 
 #endif /* not signal.h */
index 9ea867d..8a586db 100644 (file)
 
 #include <errno.h>
 #include <signal.h>
-#define __need_NULL
-#include <stddef.h>
+#include <sigsetops.h>
 
 /* Combine sets LEFT and RIGHT by logical OR and place result in DEST.  */
 int
 sigorset (sigset_t *dest, const sigset_t *left, const sigset_t *right)
 {
-  if (dest == NULL || left == NULL || right == NULL)
+  if (!dest || !left || !right)
     {
       __set_errno (EINVAL);
       return -1;
     }
 
-  return __sigorset (dest, left, right);
+  __sigorset (dest, left, right);
+  return 0;
 }
index 0317662..d56412f 100644 (file)
@@ -1,11 +1,53 @@
-/* Define the real-function versions of all inline functions
-   defined in signal.h (or bits/sigset.h).  */
+/* Compatibility symbols for old versions of signal.h.
+   Copyright (C) 2017 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
 
-#include <features.h>
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
 
-#define _EXTERN_INLINE
-#ifndef __USE_EXTERN_INLINES
-# define __USE_EXTERN_INLINES  1
-#endif
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <signal.h>
+#include <sigsetops.h>
+#include <shlib-compat.h>
+
+/* These were formerly defined by <signal.h> as inline functions,
+   so they require out-of-line compatibility definitions.  */
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_26)
 
-#include "signal.h"
+int
+attribute_compat_text_section
+(__sigismember) (const __sigset_t *set, int sig)
+{
+  return __sigismember (set, sig);
+}
+compat_symbol (libc, __sigismember, __sigismember, GLIBC_2_0);
+
+int
+attribute_compat_text_section
+(__sigaddset) (__sigset_t *set, int sig)
+{
+  __sigaddset (set, sig);
+  return 0;
+}
+compat_symbol (libc, __sigaddset, __sigaddset, GLIBC_2_0);
+
+int
+attribute_compat_text_section
+(__sigdelset) (__sigset_t *set, int sig)
+{
+  __sigdelset (set, sig);
+  return 0;
+}
+compat_symbol (libc, __sigdelset, __sigdelset, GLIBC_2_0);
+
+#endif
index 7af4109..bbfde8f 100644 (file)
@@ -26,11 +26,6 @@ __BEGIN_DECLS
 #include <bits/types/struct_iovec.h>
 #define        __need_size_t
 #include <stddef.h>
-#ifdef __USE_GNU
-/* Get the __sigset_t definition.  */
-# include <bits/sigset.h>
-#endif
-
 
 /* This operating system-specific header file defines the SOCK_*, PF_*,
    AF_*, MSG_*, SOL_*, and SO_* constants, and the `struct sockaddr',
index d30de0b..19882f3 100644 (file)
@@ -21,6 +21,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <sigsetops.h>
 
 /* Try to get a machine dependent instruction which will make the
    program crash.  This is used in case everything else fails.  */
@@ -57,13 +58,13 @@ abort (void)
 
   /* Now it's for sure we are alone.  But recursive calls are possible.  */
 
-  /* Unlock SIGABRT.  */
+  /* Unblock SIGABRT.  */
   if (stage == 0)
     {
       ++stage;
-      if (__sigemptyset (&sigs) == 0 &&
-         __sigaddset (&sigs, SIGABRT) == 0)
-       __sigprocmask (SIG_UNBLOCK, &sigs, (sigset_t *) NULL);
+      __sigemptyset (&sigs);
+      __sigaddset (&sigs, SIGABRT);
+      __sigprocmask (SIG_UNBLOCK, &sigs, 0);
     }
 
   /* Flush all streams.  We cannot close them now because the user
index 49d6039..bbfeb20 100644 (file)
@@ -25,6 +25,7 @@
 
 /* We need the signal context definitions even if they are not exposed
    by <signal.h>.  */
+#include <bits/types/__sigset_t.h>
 #include <bits/sigcontext.h>
 #include <bits/sigstack.h>
 #include <bits/types/struct_sigstack.h>
diff --git a/sysdeps/generic/sigsetops.h b/sysdeps/generic/sigsetops.h
new file mode 100644 (file)
index 0000000..e8e5553
--- /dev/null
@@ -0,0 +1,77 @@
+/* __sigset_t manipulators.  Generic/BSD version.
+   Copyright (C) 1991-2017 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _SIGSETOPS_H
+#define _SIGSETOPS_H 1
+
+#include <signal.h>
+
+/* Return a mask that includes SIG only.  The cast to `sigset_t' avoids
+   overflow if `sigset_t' is wider than `int'.  */
+# define __sigmask(sig) (((__sigset_t) 1) << ((sig) - 1))
+
+#define __sigemptyset(set)                     \
+  (__extension__ ({                            \
+    *(set) = (__sigset_t) 0;                   \
+    (void)0;                                   \
+  }))
+#define __sigfillset(set)                      \
+  (__extension__ ({                            \
+    *(set) = ~(__sigset_t) 0;                  \
+    (void)0;                                   \
+  }))
+
+# define __sigisemptyset(set)                  \
+  (*(set) == (__sigset_t) 0)
+
+# define __sigandset(dest, left, right)                \
+  (__extension__ ({                            \
+    *(dest) = *(left) & *(right);              \
+    (void)0;                                   \
+  }))
+
+# define __sigorset(dest, left, right)         \
+  (__extension__ ({                            \
+    *(dest) = *(left) | *(right);              \
+    (void)0;                                   \
+  }))
+#endif
+
+/* These macros needn't check for a bogus signal number;
+   checking is done in the non-__ versions.  */
+# define __sigismember(set, sig)               \
+  (__extension__ ({                            \
+    __sigset_t __mask = __sigmask (sig);       \
+    (set) & __mask ? 1 : 0;                    \
+  }))
+
+# define __sigaddset(set, sig)                 \
+  (__extension__ ({                            \
+    __sigset_t __mask = __sigmask (sig);       \
+    (set) |= __mask;                           \
+    (void)0;                                   \
+  }))
+
+# define __sigdelset(set, sig)                 \
+  (__extension__ ({                            \
+    __sigset_t __mask = __sigmask (sig);       \
+    (set) &= ~__mask;                          \
+    (void)0;                                   \
+  }))
+
+#endif
index 052c540..a0602a7 100644 (file)
@@ -27,6 +27,7 @@
 
 /* We need the signal context definitions even if they are not exposed
    by <signal.h>.  */
+#include <bits/types/__sigset_t.h>
 #include <bits/sigcontext.h>
 #include <bits/sigstack.h>
 #include <bits/types/struct_sigstack.h>
index 241f270..92deea9 100644 (file)
@@ -25,6 +25,7 @@
 
 /* We need the signal context definitions even if they are not exposed
    by <signal.h>.  */
+#include <bits/types/__sigset_t.h>
 #include <bits/sigcontext.h>
 #include <bits/sigstack.h>
 #include <bits/types/struct_sigstack.h>
index 4e5ec3b..4f185ce 100644 (file)
@@ -25,6 +25,7 @@
 
 /* We need the signal context definitions even if they are not exposed
    by <signal.h>.  */
+#include <bits/types/__sigset_t.h>
 #include <bits/sigcontext.h>
 #include <bits/sigstack.h>
 #include <bits/types/struct_sigstack.h>
index 286b80e..3d5a673 100644 (file)
@@ -26,6 +26,7 @@
 /* Signal handlers are actually called:
    void handler (int sig, int code, struct sigcontext *scp);  */
 
+#include <bits/types/__sigset_t.h>
 #include <mach/machine/fp_reg.h>
 
 /* State of this thread when the signal was taken.  */
index cb8fbcd..9c6f8f8 100644 (file)
@@ -25,6 +25,7 @@
 
 /* We need the signal context definitions even if they are not exposed
    by <signal.h>.  */
+#include <bits/types/__sigset_t.h>
 #include <bits/sigcontext.h>
 #include <bits/sigstack.h>
 #include <bits/types/struct_sigstack.h>
index f5b8ee1..4d3fbe0 100644 (file)
@@ -22,6 +22,7 @@
 #include <signal.h>
 #include <sys/time.h>
 #include <libc-internal.h>
+#include <sigsetops.h>
 
 #ifndef SIGPROF
 
index e797573..601ae96 100644 (file)
@@ -22,7 +22,7 @@
 #include <stddef.h>
 #include <signal.h>
 #include <string.h>    /* For the real memset prototype.  */
-
+#include <sigsetops.h>
 
 int
 sigignore (int sig)
@@ -30,8 +30,7 @@ sigignore (int sig)
   struct sigaction act;
 
   act.sa_handler = SIG_IGN;
-  if (__sigemptyset (&act.sa_mask) < 0)
-    return -1;
+  __sigemptyset (&act.sa_mask);
   act.sa_flags = 0;
 
   return __sigaction (sig, &act, NULL);
index d02469a..a6202de 100644 (file)
@@ -18,6 +18,7 @@
 #include <stddef.h>
 #include <signal.h>
 #include <errno.h>
+#include <sigsetops.h>
 
 /* If INTERRUPT is nonzero, make signal SIG interrupt system calls
    (causing them to fail with EINTR); if INTERRUPT is zero, make system
index 32db07b..81ba177 100644 (file)
@@ -19,7 +19,7 @@
 #include <errno.h>
 #include <signal.h>
 #include <string.h>    /* For the real memset prototype.  */
-
+#include <sigsetops.h>
 
 sigset_t _sigintr attribute_hidden;            /* Set by siginterrupt.  */
 
@@ -38,9 +38,8 @@ __bsd_signal (int sig, __sighandler_t handler)
     }
 
   act.sa_handler = handler;
-  if (__sigemptyset (&act.sa_mask) < 0
-      || __sigaddset (&act.sa_mask, sig) < 0)
-    return SIG_ERR;
+  __sigemptyset (&act.sa_mask);
+  __sigaddset (&act.sa_mask, sig);
   act.sa_flags = __sigismember (&_sigintr, sig) ? 0 : SA_RESTART;
   if (__sigaction (sig, &act, &oact) < 0)
     return SIG_ERR;
index 0c2aa76..a4dfe0a 100644 (file)
@@ -8,7 +8,7 @@
 
    The GNU C Library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the GNU
    Lesser General Public License for more details.
 
    You should have received a copy of the GNU Lesser General Public
@@ -20,7 +20,7 @@
 #include <stddef.h>
 #include <signal.h>
 #include <string.h>    /* For the real memset prototype.  */
-
+#include <sigsetops.h>
 
 /* Set the disposition for SIG.  */
 __sighandler_t
@@ -31,19 +31,19 @@ sigset (int sig, __sighandler_t disp)
   sigset_t set;
   sigset_t oset;
 
-#ifdef SIG_HOLD
-  /* Handle SIG_HOLD first.  */
-  if (disp == SIG_HOLD)
+  /* Check signal extents to protect __sigismember.  */
+  if (disp == SIG_ERR || sig < 1 || sig >= NSIG)
     {
-      /* Create an empty signal set.  */
-      if (__sigemptyset (&set) < 0)
-       return SIG_ERR;
+      __set_errno (EINVAL);
+      return SIG_ERR;
+    }
 
-      /* Add the specified signal.  */
-      if (__sigaddset (&set, sig) < 0)
-       return SIG_ERR;
+  __sigemptyset (&set);
+  __sigaddset (&set, sig);
 
-      /* Add the signal set to the current signal mask.  */
+  if (disp == SIG_HOLD)
+    {
+      /* Add the signal to the current signal mask.  */
       if (__sigprocmask (SIG_BLOCK, &set, &oset) < 0)
        return SIG_ERR;
 
@@ -57,34 +57,19 @@ sigset (int sig, __sighandler_t disp)
 
       return oact.sa_handler;
     }
-#endif /* SIG_HOLD */
-
-  /* Check signal extents to protect __sigismember.  */
-  if (disp == SIG_ERR || sig < 1 || sig >= NSIG)
+  else
     {
-      __set_errno (EINVAL);
-      return SIG_ERR;
-    }
-
-  act.sa_handler = disp;
-  if (__sigemptyset (&act.sa_mask) < 0)
-    return SIG_ERR;
-  act.sa_flags = 0;
-  if (__sigaction (sig, &act, &oact) < 0)
-    return SIG_ERR;
-
-  /* Create an empty signal set.  */
-  if (__sigemptyset (&set) < 0)
-    return SIG_ERR;
-
-  /* Add the specified signal.  */
-  if (__sigaddset (&set, sig) < 0)
-    return SIG_ERR;
+      act.sa_handler = disp;
+      __sigemptyset (&act.sa_mask);
+      act.sa_flags = 0;
+      if (__sigaction (sig, &act, &oact) < 0)
+       return SIG_ERR;
 
-  /* Remove the signal set from the current signal mask.  */
-  if (__sigprocmask (SIG_UNBLOCK, &set, &oset) < 0)
-    return SIG_ERR;
+      /* Remove the signal from the current signal mask.  */
+      if (__sigprocmask (SIG_UNBLOCK, &set, &oset) < 0)
+       return SIG_ERR;
 
-  /* If the signal was already blocked return SIG_HOLD.  */
-  return __sigismember (&oset, sig) ? SIG_HOLD : oact.sa_handler;
+      /* If the signal was already blocked return SIG_HOLD.  */
+      return __sigismember (&oset, sig) ? SIG_HOLD : oact.sa_handler;
+    }
 }
index f72245c..f704b9e 100644 (file)
@@ -21,6 +21,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <sigsetops.h>
 
 #include <sys/time.h>
 #include <sys/profil.h>
index 6d80803..6893ec2 100644 (file)
@@ -18,7 +18,7 @@
 #include <errno.h>
 #include <signal.h>
 #include <string.h>    /* For the real memset prototype.  */
-
+#include <sigsetops.h>
 
 /* Tolerate non-threads versions of Posix */
 #ifndef SA_ONESHOT
@@ -46,8 +46,7 @@ __sysv_signal (int sig, __sighandler_t handler)
     }
 
   act.sa_handler = handler;
-  if (__sigemptyset (&act.sa_mask) < 0)
-    return SIG_ERR;
+  __sigemptyset (&act.sa_mask);
   act.sa_flags = SA_ONESHOT | SA_NOMASK | SA_INTERRUPT;
   act.sa_flags &= ~SA_RESTART;
   if (__sigaction (sig, &act, &oact) < 0)
index ed87eff..aa76bf9 100644 (file)
@@ -54,7 +54,7 @@ typedef long int __jmp_buf[40];
 typedef long int __jmp_buf[58];
 # endif
 
-# include <bits/sigset.h>              /* Get `__sigset_t'.  */
+# include <bits/types/__sigset_t.h>
 
 /* Calling environment, plus possibly a saved signal mask.  */
 typedef struct __novmx__jmp_buf_tag
index 4302ee4..a7a861c 100644 (file)
@@ -24,6 +24,7 @@
 #endif
 
 /* Functions for handling signals. */
+#include <bits/types/__sigset_t.h>
 
 /* Modify the signal mask for the calling thread.  The arguments have
    the same meaning as for sigprocmask(2). */
index fc6b3a9..99b3f9d 100644 (file)
@@ -45,7 +45,8 @@ sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h \
                  sys/timerfd.h sys/fanotify.h bits/eventfd.h bits/inotify.h \
                  bits/signalfd.h bits/timerfd.h bits/epoll.h \
                  bits/socket_type.h bits/syscall.h bits/sysctl.h \
-                 bits/mman-linux.h
+                 bits/mman-linux.h \
+                 bits/siginfo-arch.h bits/siginfo-consts-arch.h
 
 tests += tst-clone tst-clone2 tst-fanotify tst-personality tst-quota \
         tst-sync_file_range test-errno-linux
index 1a5fa29..597f9ea 100644 (file)
@@ -26,6 +26,7 @@
 
 /* We need the signal context definitions even if they are not exposed
    by <signal.h>.  */
+#include <bits/types/__sigset_t.h>
 #include <bits/sigcontext.h>
 #include <bits/sigstack.h>
 #include <bits/types/struct_sigstack.h>
index 912c61c..4491ff7 100644 (file)
@@ -23,6 +23,7 @@
 
 /* We need the signal context definitions even if they are not exposed
    by <signal.h>.  */
+#include <bits/types/__sigset_t.h>
 #include <bits/sigcontext.h>
 #include <bits/sigstack.h>
 #include <bits/types/struct_sigstack.h>
index 8a5ea71..d7c7d9e 100644 (file)
@@ -25,6 +25,7 @@
 
 /* We need the signal context definitions even if they are not exposed
    by <signal.h>.  */
+#include <bits/types/__sigset_t.h>
 #include <bits/sigcontext.h>
 #include <bits/sigstack.h>
 #include <bits/types/struct_sigstack.h>
diff --git a/sysdeps/unix/sysv/linux/bits/sigevent-consts.h b/sysdeps/unix/sysv/linux/bits/sigevent-consts.h
new file mode 100644 (file)
index 0000000..df3513b
--- /dev/null
@@ -0,0 +1,41 @@
+/* sigevent constants.  Linux version.
+   Copyright (C) 1997-2017 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _BITS_SIGEVENT_CONSTS_H
+#define _BITS_SIGEVENT_CONSTS_H 1
+
+#if !defined _SIGNAL_H && !defined _AIO_H
+#error "Don't include <bits/sigevent-consts.h> directly; use <signal.h> instead."
+#endif
+
+/* `sigev_notify' values.  */
+enum
+{
+  SIGEV_SIGNAL = 0,            /* Notify via signal.  */
+# define SIGEV_SIGNAL  SIGEV_SIGNAL
+  SIGEV_NONE,                  /* Other notification: meaningless.  */
+# define SIGEV_NONE    SIGEV_NONE
+  SIGEV_THREAD,                        /* Deliver via thread creation.  */
+# define SIGEV_THREAD  SIGEV_THREAD
+
+  SIGEV_THREAD_ID = 4          /* Send signal to specific thread.
+                                  This is a Linux extension.  */
+#define SIGEV_THREAD_ID        SIGEV_THREAD_ID
+};
+
+#endif
diff --git a/sysdeps/unix/sysv/linux/bits/siginfo-arch.h b/sysdeps/unix/sysv/linux/bits/siginfo-arch.h
new file mode 100644 (file)
index 0000000..00018fa
--- /dev/null
@@ -0,0 +1,7 @@
+/* Architecture-specific adjustments to siginfo_t.  */
+#ifndef _BITS_SIGINFO_ARCH_H
+#define _BITS_SIGINFO_ARCH_H 1
+
+/* This architecture has no adjustments to make to siginfo_t.  */
+
+#endif
diff --git a/sysdeps/unix/sysv/linux/bits/siginfo-consts-arch.h b/sysdeps/unix/sysv/linux/bits/siginfo-consts-arch.h
new file mode 100644 (file)
index 0000000..96b4edb
--- /dev/null
@@ -0,0 +1,7 @@
+/* Architecture-specific additional siginfo constants.  */
+#ifndef _BITS_SIGINFO_CONSTS_ARCH_H
+#define _BITS_SIGINFO_CONSTS_ARCH_H 1
+
+/* This architecture has no additional siginfo constants.  */
+
+#endif
diff --git a/sysdeps/unix/sysv/linux/bits/siginfo-consts.h b/sysdeps/unix/sysv/linux/bits/siginfo-consts.h
new file mode 100644 (file)
index 0000000..a7a31bf
--- /dev/null
@@ -0,0 +1,185 @@
+/* siginfo constants.  Linux version.
+   Copyright (C) 1997-2017 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _BITS_SIGINFO_CONSTS_H
+#define _BITS_SIGINFO_CONSTS_H 1
+
+#ifndef _SIGNAL_H
+#error "Don't include <bits/siginfo-consts.h> directly; use <signal.h> instead."
+#endif
+
+/* Most of these constants are uniform across all architectures, but there
+   is one exception.  */
+#define __SI_ASYNCIO_AFTER_SIGIO 1
+#include <bits/siginfo-arch.h>
+
+/* Values for `si_code'.  Positive values are reserved for kernel-generated
+   signals.  */
+enum
+{
+  SI_ASYNCNL = -60,            /* Sent by asynch name lookup completion.  */
+  SI_TKILL = -6,               /* Sent by tkill.  */
+  SI_SIGIO,                    /* Sent by queued SIGIO. */
+#if __SI_ASYNCIO_AFTER_SIGIO
+  SI_ASYNCIO,                  /* Sent by AIO completion.  */
+  SI_MESGQ,                    /* Sent by real time mesq state change.  */
+  SI_TIMER,                    /* Sent by timer expiration.  */
+#else
+  SI_MESGQ,
+  SI_TIMER,
+  SI_ASYNCIO,
+#endif
+  SI_QUEUE,                    /* Sent by sigqueue.  */
+  SI_USER,                     /* Sent by kill, sigsend.  */
+  SI_KERNEL = 0x80             /* Send by kernel.  */
+
+#define SI_ASYNCNL     SI_ASYNCNL
+#define SI_TKILL       SI_TKILL
+#define SI_SIGIO       SI_SIGIO
+#define SI_ASYNCIO     SI_ASYNCIO
+#define SI_MESGQ       SI_MESGQ
+#define SI_TIMER       SI_TIMER
+#define SI_ASYNCIO     SI_ASYNCIO
+#define SI_QUEUE       SI_QUEUE
+#define SI_USER                SI_USER
+#define SI_KERNEL      SI_KERNEL
+};
+
+
+# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
+/* `si_code' values for SIGILL signal.  */
+enum
+{
+  ILL_ILLOPC = 1,              /* Illegal opcode.  */
+#  define ILL_ILLOPC   ILL_ILLOPC
+  ILL_ILLOPN,                  /* Illegal operand.  */
+#  define ILL_ILLOPN   ILL_ILLOPN
+  ILL_ILLADR,                  /* Illegal addressing mode.  */
+#  define ILL_ILLADR   ILL_ILLADR
+  ILL_ILLTRP,                  /* Illegal trap. */
+#  define ILL_ILLTRP   ILL_ILLTRP
+  ILL_PRVOPC,                  /* Privileged opcode.  */
+#  define ILL_PRVOPC   ILL_PRVOPC
+  ILL_PRVREG,                  /* Privileged register.  */
+#  define ILL_PRVREG   ILL_PRVREG
+  ILL_COPROC,                  /* Coprocessor error.  */
+#  define ILL_COPROC   ILL_COPROC
+  ILL_BADSTK                   /* Internal stack error.  */
+#  define ILL_BADSTK   ILL_BADSTK
+};
+
+/* `si_code' values for SIGFPE signal.  */
+enum
+{
+  FPE_INTDIV = 1,              /* Integer divide by zero.  */
+#  define FPE_INTDIV   FPE_INTDIV
+  FPE_INTOVF,                  /* Integer overflow.  */
+#  define FPE_INTOVF   FPE_INTOVF
+  FPE_FLTDIV,                  /* Floating point divide by zero.  */
+#  define FPE_FLTDIV   FPE_FLTDIV
+  FPE_FLTOVF,                  /* Floating point overflow.  */
+#  define FPE_FLTOVF   FPE_FLTOVF
+  FPE_FLTUND,                  /* Floating point underflow.  */
+#  define FPE_FLTUND   FPE_FLTUND
+  FPE_FLTRES,                  /* Floating point inexact result.  */
+#  define FPE_FLTRES   FPE_FLTRES
+  FPE_FLTINV,                  /* Floating point invalid operation.  */
+#  define FPE_FLTINV   FPE_FLTINV
+  FPE_FLTSUB                   /* Subscript out of range.  */
+#  define FPE_FLTSUB   FPE_FLTSUB
+};
+
+/* `si_code' values for SIGSEGV signal.  */
+enum
+{
+  SEGV_MAPERR = 1,             /* Address not mapped to object.  */
+#  define SEGV_MAPERR  SEGV_MAPERR
+  SEGV_ACCERR                  /* Invalid permissions for mapped object.  */
+#  define SEGV_ACCERR  SEGV_ACCERR
+};
+
+/* `si_code' values for SIGBUS signal.  */
+enum
+{
+  BUS_ADRALN = 1,              /* Invalid address alignment.  */
+#  define BUS_ADRALN   BUS_ADRALN
+  BUS_ADRERR,                  /* Non-existant physical address.  */
+#  define BUS_ADRERR   BUS_ADRERR
+  BUS_OBJERR,                  /* Object specific hardware error.  */
+#  define BUS_OBJERR   BUS_OBJERR
+  BUS_MCEERR_AR,               /* Hardware memory error: action required.  */
+#  define BUS_MCEERR_AR        BUS_MCEERR_AR
+  BUS_MCEERR_AO                        /* Hardware memory error: action optional.  */
+#  define BUS_MCEERR_AO        BUS_MCEERR_AO
+};
+# endif
+
+# ifdef __USE_XOPEN_EXTENDED
+/* `si_code' values for SIGTRAP signal.  */
+enum
+{
+  TRAP_BRKPT = 1,              /* Process breakpoint.  */
+#  define TRAP_BRKPT   TRAP_BRKPT
+  TRAP_TRACE                   /* Process trace trap.  */
+#  define TRAP_TRACE   TRAP_TRACE
+};
+# endif
+
+# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
+/* `si_code' values for SIGCHLD signal.  */
+enum
+{
+  CLD_EXITED = 1,              /* Child has exited.  */
+#  define CLD_EXITED   CLD_EXITED
+  CLD_KILLED,                  /* Child was killed.  */
+#  define CLD_KILLED   CLD_KILLED
+  CLD_DUMPED,                  /* Child terminated abnormally.  */
+#  define CLD_DUMPED   CLD_DUMPED
+  CLD_TRAPPED,                 /* Traced child has trapped.  */
+#  define CLD_TRAPPED  CLD_TRAPPED
+  CLD_STOPPED,                 /* Child has stopped.  */
+#  define CLD_STOPPED  CLD_STOPPED
+  CLD_CONTINUED                        /* Stopped child has continued.  */
+#  define CLD_CONTINUED        CLD_CONTINUED
+};
+
+/* `si_code' values for SIGPOLL signal.  */
+enum
+{
+  POLL_IN = 1,                 /* Data input available.  */
+#  define POLL_IN      POLL_IN
+  POLL_OUT,                    /* Output buffers available.  */
+#  define POLL_OUT     POLL_OUT
+  POLL_MSG,                    /* Input message available.   */
+#  define POLL_MSG     POLL_MSG
+  POLL_ERR,                    /* I/O error.  */
+#  define POLL_ERR     POLL_ERR
+  POLL_PRI,                    /* High priority input available.  */
+#  define POLL_PRI     POLL_PRI
+  POLL_HUP                     /* Device disconnected.  */
+#  define POLL_HUP     POLL_HUP
+};
+# endif
+
+/* Architectures might also add architecture-specific constants.
+   These are all considered GNU extensions.  */
+#ifdef __USE_GNU
+# include <bits/siginfo-consts-arch.h>
+#endif
+
+#endif
diff --git a/sysdeps/unix/sysv/linux/bits/siginfo.h b/sysdeps/unix/sysv/linux/bits/siginfo.h
deleted file mode 100644 (file)
index 7b0d4f6..0000000
+++ /dev/null
@@ -1,341 +0,0 @@
-/* siginfo_t, sigevent and constants.  Linux version.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if !defined _SIGNAL_H && !defined __need_siginfo_t \
-    && !defined __need_sigevent_t
-# error "Never include this file directly.  Use <signal.h> instead"
-#endif
-
-#include <bits/wordsize.h>
-
-#if (!defined __have_sigval_t \
-     && (defined _SIGNAL_H || defined __need_siginfo_t \
-        || defined __need_sigevent_t))
-# define __have_sigval_t       1
-
-/* Type for data associated with a signal.  */
-typedef union sigval
-  {
-    int sival_int;
-    void *sival_ptr;
-  } sigval_t;
-#endif
-
-#if (!defined __have_siginfo_t \
-     && (defined _SIGNAL_H || defined __need_siginfo_t))
-# define __have_siginfo_t      1
-
-# define __SI_MAX_SIZE     128
-# if __WORDSIZE == 64
-#  define __SI_PAD_SIZE     ((__SI_MAX_SIZE / sizeof (int)) - 4)
-# else
-#  define __SI_PAD_SIZE     ((__SI_MAX_SIZE / sizeof (int)) - 3)
-# endif
-
-typedef struct
-  {
-    int si_signo;              /* Signal number.  */
-    int si_errno;              /* If non-zero, an errno value associated with
-                                  this signal, as defined in <errno.h>.  */
-    int si_code;               /* Signal code.  */
-
-    union
-      {
-       int _pad[__SI_PAD_SIZE];
-
-        /* kill().  */
-       struct
-         {
-           __pid_t si_pid;     /* Sending process ID.  */
-           __uid_t si_uid;     /* Real user ID of sending process.  */
-         } _kill;
-
-       /* POSIX.1b timers.  */
-       struct
-         {
-           int si_tid;         /* Timer ID.  */
-           int si_overrun;     /* Overrun count.  */
-           sigval_t si_sigval; /* Signal value.  */
-         } _timer;
-
-       /* POSIX.1b signals.  */
-       struct
-         {
-           __pid_t si_pid;     /* Sending process ID.  */
-           __uid_t si_uid;     /* Real user ID of sending process.  */
-           sigval_t si_sigval; /* Signal value.  */
-         } _rt;
-
-       /* SIGCHLD.  */
-       struct
-         {
-           __pid_t si_pid;     /* Which child.  */
-           __uid_t si_uid;     /* Real user ID of sending process.  */
-           int si_status;      /* Exit value or signal.  */
-           __clock_t si_utime;
-           __clock_t si_stime;
-         } _sigchld;
-
-       /* SIGILL, SIGFPE, SIGSEGV, SIGBUS.  */
-       struct
-         {
-           void *si_addr;      /* Faulting insn/memory ref.  */
-           short int si_addr_lsb;      /* Valid LSB of the reported address.  */
-         } _sigfault;
-
-       /* SIGPOLL.  */
-       struct
-         {
-           long int si_band;   /* Band event for SIGPOLL.  */
-           int si_fd;
-         } _sigpoll;
-
-       /* SIGSYS.  */
-       struct
-         {
-           void *_call_addr;   /* Calling user insn.  */
-           int _syscall;       /* Triggering system call number.  */
-           unsigned int _arch; /* AUDIT_ARCH_* of syscall.  */
-         } _sigsys;
-      } _sifields;
-  } siginfo_t;
-
-
-/* X/Open requires some more fields with fixed names.  */
-# define si_pid                _sifields._kill.si_pid
-# define si_uid                _sifields._kill.si_uid
-# define si_timerid    _sifields._timer.si_tid
-# define si_overrun    _sifields._timer.si_overrun
-# define si_status     _sifields._sigchld.si_status
-# define si_utime      _sifields._sigchld.si_utime
-# define si_stime      _sifields._sigchld.si_stime
-# define si_value      _sifields._rt.si_sigval
-# define si_int                _sifields._rt.si_sigval.sival_int
-# define si_ptr                _sifields._rt.si_sigval.sival_ptr
-# define si_addr       _sifields._sigfault.si_addr
-# define si_addr_lsb   _sifields._sigfault.si_addr_lsb
-# define si_band       _sifields._sigpoll.si_band
-# define si_fd         _sifields._sigpoll.si_fd
-# define si_call_addr  _sifields._sigsys._call_addr
-# define si_syscall    _sifields._sigsys._syscall
-# define si_arch       _sifields._sigsys._arch
-
-
-/* Values for `si_code'.  Positive values are reserved for kernel-generated
-   signals.  */
-enum
-{
-  SI_ASYNCNL = -60,            /* Sent by asynch name lookup completion.  */
-# define SI_ASYNCNL    SI_ASYNCNL
-  SI_TKILL = -6,               /* Sent by tkill.  */
-# define SI_TKILL      SI_TKILL
-  SI_SIGIO,                    /* Sent by queued SIGIO. */
-# define SI_SIGIO      SI_SIGIO
-  SI_ASYNCIO,                  /* Sent by AIO completion.  */
-# define SI_ASYNCIO    SI_ASYNCIO
-  SI_MESGQ,                    /* Sent by real time mesq state change.  */
-# define SI_MESGQ      SI_MESGQ
-  SI_TIMER,                    /* Sent by timer expiration.  */
-# define SI_TIMER      SI_TIMER
-  SI_QUEUE,                    /* Sent by sigqueue.  */
-# define SI_QUEUE      SI_QUEUE
-  SI_USER,                     /* Sent by kill, sigsend.  */
-# define SI_USER       SI_USER
-  SI_KERNEL = 0x80             /* Send by kernel.  */
-#define SI_KERNEL      SI_KERNEL
-};
-
-
-# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
-/* `si_code' values for SIGILL signal.  */
-enum
-{
-  ILL_ILLOPC = 1,              /* Illegal opcode.  */
-#  define ILL_ILLOPC   ILL_ILLOPC
-  ILL_ILLOPN,                  /* Illegal operand.  */
-#  define ILL_ILLOPN   ILL_ILLOPN
-  ILL_ILLADR,                  /* Illegal addressing mode.  */
-#  define ILL_ILLADR   ILL_ILLADR
-  ILL_ILLTRP,                  /* Illegal trap. */
-#  define ILL_ILLTRP   ILL_ILLTRP
-  ILL_PRVOPC,                  /* Privileged opcode.  */
-#  define ILL_PRVOPC   ILL_PRVOPC
-  ILL_PRVREG,                  /* Privileged register.  */
-#  define ILL_PRVREG   ILL_PRVREG
-  ILL_COPROC,                  /* Coprocessor error.  */
-#  define ILL_COPROC   ILL_COPROC
-  ILL_BADSTK                   /* Internal stack error.  */
-#  define ILL_BADSTK   ILL_BADSTK
-};
-
-/* `si_code' values for SIGFPE signal.  */
-enum
-{
-  FPE_INTDIV = 1,              /* Integer divide by zero.  */
-#  define FPE_INTDIV   FPE_INTDIV
-  FPE_INTOVF,                  /* Integer overflow.  */
-#  define FPE_INTOVF   FPE_INTOVF
-  FPE_FLTDIV,                  /* Floating point divide by zero.  */
-#  define FPE_FLTDIV   FPE_FLTDIV
-  FPE_FLTOVF,                  /* Floating point overflow.  */
-#  define FPE_FLTOVF   FPE_FLTOVF
-  FPE_FLTUND,                  /* Floating point underflow.  */
-#  define FPE_FLTUND   FPE_FLTUND
-  FPE_FLTRES,                  /* Floating point inexact result.  */
-#  define FPE_FLTRES   FPE_FLTRES
-  FPE_FLTINV,                  /* Floating point invalid operation.  */
-#  define FPE_FLTINV   FPE_FLTINV
-  FPE_FLTSUB                   /* Subscript out of range.  */
-#  define FPE_FLTSUB   FPE_FLTSUB
-};
-
-/* `si_code' values for SIGSEGV signal.  */
-enum
-{
-  SEGV_MAPERR = 1,             /* Address not mapped to object.  */
-#  define SEGV_MAPERR  SEGV_MAPERR
-  SEGV_ACCERR                  /* Invalid permissions for mapped object.  */
-#  define SEGV_ACCERR  SEGV_ACCERR
-};
-
-/* `si_code' values for SIGBUS signal.  */
-enum
-{
-  BUS_ADRALN = 1,              /* Invalid address alignment.  */
-#  define BUS_ADRALN   BUS_ADRALN
-  BUS_ADRERR,                  /* Non-existant physical address.  */
-#  define BUS_ADRERR   BUS_ADRERR
-  BUS_OBJERR,                  /* Object specific hardware error.  */
-#  define BUS_OBJERR   BUS_OBJERR
-  BUS_MCEERR_AR,               /* Hardware memory error: action required.  */
-#  define BUS_MCEERR_AR        BUS_MCEERR_AR
-  BUS_MCEERR_AO                        /* Hardware memory error: action optional.  */
-#  define BUS_MCEERR_AO        BUS_MCEERR_AO
-};
-# endif
-
-# ifdef __USE_XOPEN_EXTENDED
-/* `si_code' values for SIGTRAP signal.  */
-enum
-{
-  TRAP_BRKPT = 1,              /* Process breakpoint.  */
-#  define TRAP_BRKPT   TRAP_BRKPT
-  TRAP_TRACE                   /* Process trace trap.  */
-#  define TRAP_TRACE   TRAP_TRACE
-};
-# endif
-
-# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
-/* `si_code' values for SIGCHLD signal.  */
-enum
-{
-  CLD_EXITED = 1,              /* Child has exited.  */
-#  define CLD_EXITED   CLD_EXITED
-  CLD_KILLED,                  /* Child was killed.  */
-#  define CLD_KILLED   CLD_KILLED
-  CLD_DUMPED,                  /* Child terminated abnormally.  */
-#  define CLD_DUMPED   CLD_DUMPED
-  CLD_TRAPPED,                 /* Traced child has trapped.  */
-#  define CLD_TRAPPED  CLD_TRAPPED
-  CLD_STOPPED,                 /* Child has stopped.  */
-#  define CLD_STOPPED  CLD_STOPPED
-  CLD_CONTINUED                        /* Stopped child has continued.  */
-#  define CLD_CONTINUED        CLD_CONTINUED
-};
-
-/* `si_code' values for SIGPOLL signal.  */
-enum
-{
-  POLL_IN = 1,                 /* Data input available.  */
-#  define POLL_IN      POLL_IN
-  POLL_OUT,                    /* Output buffers available.  */
-#  define POLL_OUT     POLL_OUT
-  POLL_MSG,                    /* Input message available.   */
-#  define POLL_MSG     POLL_MSG
-  POLL_ERR,                    /* I/O error.  */
-#  define POLL_ERR     POLL_ERR
-  POLL_PRI,                    /* High priority input available.  */
-#  define POLL_PRI     POLL_PRI
-  POLL_HUP                     /* Device disconnected.  */
-#  define POLL_HUP     POLL_HUP
-};
-# endif
-
-# undef __need_siginfo_t
-#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t).  */
-
-
-#if (defined _SIGNAL_H || defined __need_sigevent_t) \
-    && !defined __have_sigevent_t
-# define __have_sigevent_t     1
-
-/* Structure to transport application-defined values with signals.  */
-# define __SIGEV_MAX_SIZE      64
-# if __WORDSIZE == 64
-#  define __SIGEV_PAD_SIZE     ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
-# else
-#  define __SIGEV_PAD_SIZE     ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
-# endif
-
-/* Forward declaration.  */
-# ifndef __have_pthread_attr_t
-typedef union pthread_attr_t pthread_attr_t;
-#  define __have_pthread_attr_t        1
-# endif
-
-typedef struct sigevent
-  {
-    sigval_t sigev_value;
-    int sigev_signo;
-    int sigev_notify;
-
-    union
-      {
-       int _pad[__SIGEV_PAD_SIZE];
-
-       /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
-          thread to receive the signal.  */
-       __pid_t _tid;
-
-       struct
-         {
-           void (*_function) (sigval_t);       /* Function to start.  */
-           pthread_attr_t *_attribute;         /* Thread attributes.  */
-         } _sigev_thread;
-      } _sigev_un;
-  } sigevent_t;
-
-/* POSIX names to access some of the members.  */
-# define sigev_notify_function   _sigev_un._sigev_thread._function
-# define sigev_notify_attributes _sigev_un._sigev_thread._attribute
-
-/* `sigev_notify' values.  */
-enum
-{
-  SIGEV_SIGNAL = 0,            /* Notify via signal.  */
-# define SIGEV_SIGNAL  SIGEV_SIGNAL
-  SIGEV_NONE,                  /* Other notification: meaningless.  */
-# define SIGEV_NONE    SIGEV_NONE
-  SIGEV_THREAD,                        /* Deliver via thread creation.  */
-# define SIGEV_THREAD  SIGEV_THREAD
-
-  SIGEV_THREAD_ID = 4          /* Send signal to specific thread.  */
-#define SIGEV_THREAD_ID        SIGEV_THREAD_ID
-};
-
-#endif /* have _SIGNAL_H.  */
diff --git a/sysdeps/unix/sysv/linux/bits/sigset.h b/sysdeps/unix/sysv/linux/bits/sigset.h
deleted file mode 100644 (file)
index 4b2916f..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-/* __sig_atomic_t, __sigset_t, and related definitions.  Linux version.
-   Copyright (C) 1991-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef        _SIGSET_H_types
-# define _SIGSET_H_types       1
-
-typedef int __sig_atomic_t;
-
-/* A `sigset_t' has a bit for each signal.  */
-
-# define _SIGSET_NWORDS        (1024 / (8 * sizeof (unsigned long int)))
-typedef struct
-  {
-    unsigned long int __val[_SIGSET_NWORDS];
-  } __sigset_t;
-
-#endif
-
-
-/* We only want to define these functions if <signal.h> was actually
-   included; otherwise we were included just to define the types.  Since we
-   are namespace-clean, it wouldn't hurt to define extra macros.  But
-   trouble can be caused by functions being defined (e.g., any global
-   register vars declared later will cause compilation errors).  */
-
-#if !defined _SIGSET_H_fns && defined _SIGNAL_H
-# define _SIGSET_H_fns 1
-
-# ifndef _EXTERN_INLINE
-#  define _EXTERN_INLINE __extern_inline
-# endif
-
-/* Return a mask that includes the bit for SIG only.  */
-# define __sigmask(sig) \
-  (((unsigned long int) 1) << (((sig) - 1) % (8 * sizeof (unsigned long int))))
-
-/* Return the word index for SIG.  */
-# define __sigword(sig)        (((sig) - 1) / (8 * sizeof (unsigned long int)))
-
-# if defined __GNUC__ && __GNUC__ >= 2
-#  define __sigemptyset(set) \
-  (__extension__ ({ int __cnt = _SIGSET_NWORDS;                                      \
-                   sigset_t *__set = (set);                                  \
-                   while (--__cnt >= 0) __set->__val[__cnt] = 0;             \
-                   0; }))
-#  define __sigfillset(set) \
-  (__extension__ ({ int __cnt = _SIGSET_NWORDS;                                      \
-                   sigset_t *__set = (set);                                  \
-                   while (--__cnt >= 0) __set->__val[__cnt] = ~0UL;          \
-                   0; }))
-
-#  ifdef __USE_GNU
-/* The POSIX does not specify for handling the whole signal set in one
-   command.  This is often wanted and so we define three more functions
-   here.  */
-#   define __sigisemptyset(set) \
-  (__extension__ ({ int __cnt = _SIGSET_NWORDS;                                      \
-                   const sigset_t *__set = (set);                            \
-                   int __ret = __set->__val[--__cnt];                        \
-                   while (!__ret && --__cnt >= 0)                            \
-                       __ret = __set->__val[__cnt];                          \
-                   __ret == 0; }))
-#   define __sigandset(dest, left, right) \
-  (__extension__ ({ int __cnt = _SIGSET_NWORDS;                                      \
-                   sigset_t *__dest = (dest);                                \
-                   const sigset_t *__left = (left);                          \
-                   const sigset_t *__right = (right);                        \
-                   while (--__cnt >= 0)                                      \
-                     __dest->__val[__cnt] = (__left->__val[__cnt]            \
-                                             & __right->__val[__cnt]);       \
-                   0; }))
-#   define __sigorset(dest, left, right) \
-  (__extension__ ({ int __cnt = _SIGSET_NWORDS;                                      \
-                   sigset_t *__dest = (dest);                                \
-                   const sigset_t *__left = (left);                          \
-                   const sigset_t *__right = (right);                        \
-                   while (--__cnt >= 0)                                      \
-                     __dest->__val[__cnt] = (__left->__val[__cnt]            \
-                                             | __right->__val[__cnt]);       \
-                   0; }))
-#  endif
-# endif
-
-/* These functions needn't check for a bogus signal number -- error
-   checking is done in the non __ versions.  */
-
-extern int __sigismember (const __sigset_t *, int);
-extern int __sigaddset (__sigset_t *, int);
-extern int __sigdelset (__sigset_t *, int);
-
-# ifdef __USE_EXTERN_INLINES
-#  define __SIGSETFN(NAME, BODY, CONST)                                              \
-  _EXTERN_INLINE int                                                         \
-  NAME (CONST __sigset_t *__set, int __sig)                                  \
-  {                                                                          \
-    unsigned long int __mask = __sigmask (__sig);                            \
-    unsigned long int __word = __sigword (__sig);                            \
-    return BODY;                                                             \
-  }
-
-__SIGSETFN (__sigismember, (__set->__val[__word] & __mask) ? 1 : 0, const)
-__SIGSETFN (__sigaddset, ((__set->__val[__word] |= __mask), 0), )
-__SIGSETFN (__sigdelset, ((__set->__val[__word] &= ~__mask), 0), )
-
-#  undef __SIGSETFN
-# endif
-
-
-#endif /* ! _SIGSET_H_fns.  */
diff --git a/sysdeps/unix/sysv/linux/bits/types/__sigset_t.h b/sysdeps/unix/sysv/linux/bits/types/__sigset_t.h
new file mode 100644 (file)
index 0000000..e2f18ac
--- /dev/null
@@ -0,0 +1,10 @@
+#ifndef ____sigset_t_defined
+#define ____sigset_t_defined
+
+#define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int)))
+typedef struct
+{
+  unsigned long int __val[_SIGSET_NWORDS];
+} __sigset_t;
+
+#endif
diff --git a/sysdeps/unix/sysv/linux/bits/types/sigevent_t.h b/sysdeps/unix/sysv/linux/bits/types/sigevent_t.h
new file mode 100644 (file)
index 0000000..0d4857b
--- /dev/null
@@ -0,0 +1,48 @@
+#ifndef __sigevent_t_defined
+#define __sigevent_t_defined 1
+
+#include <bits/wordsize.h>
+#include <bits/types.h>
+#include <bits/types/sigval_t.h>
+
+#define __SIGEV_MAX_SIZE       64
+#if __WORDSIZE == 64
+# define __SIGEV_PAD_SIZE      ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
+#else
+# define __SIGEV_PAD_SIZE      ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
+#endif
+
+/* Forward declaration.  */
+#ifndef __have_pthread_attr_t
+typedef union pthread_attr_t pthread_attr_t;
+# define __have_pthread_attr_t 1
+#endif
+
+/* Structure to transport application-defined values with signals.  */
+typedef struct sigevent
+  {
+    sigval_t sigev_value;
+    int sigev_signo;
+    int sigev_notify;
+
+    union
+      {
+       int _pad[__SIGEV_PAD_SIZE];
+
+       /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
+          thread to receive the signal.  */
+       __pid_t _tid;
+
+       struct
+         {
+           void (*_function) (sigval_t);       /* Function to start.  */
+           pthread_attr_t *_attribute;         /* Thread attributes.  */
+         } _sigev_thread;
+      } _sigev_un;
+  } sigevent_t;
+
+/* POSIX names to access some of the members.  */
+#define sigev_notify_function   _sigev_un._sigev_thread._function
+#define sigev_notify_attributes _sigev_un._sigev_thread._attribute
+
+#endif
diff --git a/sysdeps/unix/sysv/linux/bits/types/siginfo_t.h b/sysdeps/unix/sysv/linux/bits/types/siginfo_t.h
new file mode 100644 (file)
index 0000000..1bb6da5
--- /dev/null
@@ -0,0 +1,139 @@
+#ifndef __siginfo_t_defined
+#define __siginfo_t_defined 1
+
+#include <bits/wordsize.h>
+#include <bits/types.h>
+#include <bits/types/sigval_t.h>
+
+#define __SI_MAX_SIZE  128
+#if __WORDSIZE == 64
+# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4)
+#else
+# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3)
+#endif
+
+/* Some fields of siginfo_t have architecture-specific variations.  */
+#define __SI_ALIGNMENT         /* nothing */
+#define __SI_BAND_TYPE         long int
+#define __SI_CLOCK_T           __clock_t
+#define __SI_ERRNO_THEN_CODE   1
+#define __SI_HAVE_SIGSYS       1
+#define __SI_SIGFAULT_ADDL     /* nothing */
+#include <bits/siginfo-arch.h>
+
+typedef struct
+  {
+    int si_signo;              /* Signal number.  */
+#if __SI_ERRNO_THEN_CODE
+    int si_errno;              /* If non-zero, an errno value associated with
+                                  this signal, as defined in <errno.h>.  */
+    int si_code;               /* Signal code.  */
+#else
+    int si_code;
+    int si_errno;
+#endif
+#if __WORDSIZE == 64
+    int __pad0;                        /* Explicit padding.  */
+#endif
+
+    union
+      {
+       int _pad[__SI_PAD_SIZE];
+
+        /* kill().  */
+       struct
+         {
+           __pid_t si_pid;     /* Sending process ID.  */
+           __uid_t si_uid;     /* Real user ID of sending process.  */
+         } _kill;
+
+       /* POSIX.1b timers.  */
+       struct
+         {
+           int si_tid;         /* Timer ID.  */
+           int si_overrun;     /* Overrun count.  */
+           sigval_t si_sigval; /* Signal value.  */
+         } _timer;
+
+       /* POSIX.1b signals.  */
+       struct
+         {
+           __pid_t si_pid;     /* Sending process ID.  */
+           __uid_t si_uid;     /* Real user ID of sending process.  */
+           sigval_t si_sigval; /* Signal value.  */
+         } _rt;
+
+       /* SIGCHLD.  */
+       struct
+         {
+           __pid_t si_pid;     /* Which child.  */
+           __uid_t si_uid;     /* Real user ID of sending process.  */
+           int si_status;      /* Exit value or signal.  */
+           __SI_CLOCK_T si_utime;
+           __SI_CLOCK_T si_stime;
+         } _sigchld;
+
+       /* SIGILL, SIGFPE, SIGSEGV, SIGBUS.  */
+       struct
+         {
+           void *si_addr;          /* Faulting insn/memory ref.  */
+           __SI_SIGFAULT_ADDL
+           short int si_addr_lsb;  /* Valid LSB of the reported address.  */
+           union
+             {
+               /* used when si_code=SEGV_BNDERR */
+               struct
+                 {
+                   void *_lower;
+                   void *_upper;
+                 } _addr_bnd;
+               /* used when si_code=SEGV_PKUERR */
+               __uint32_t _pkey;
+             } _bounds;
+         } _sigfault;
+
+       /* SIGPOLL.  */
+       struct
+         {
+           long int si_band;   /* Band event for SIGPOLL.  */
+           int si_fd;
+         } _sigpoll;
+
+       /* SIGSYS.  */
+#if __SI_HAVE_SIGSYS
+       struct
+         {
+           void *_call_addr;   /* Calling user insn.  */
+           int _syscall;       /* Triggering system call number.  */
+           unsigned int _arch; /* AUDIT_ARCH_* of syscall.  */
+         } _sigsys;
+#endif
+      } _sifields;
+  } siginfo_t __SI_ALIGNMENT;
+
+
+/* X/Open requires some more fields with fixed names.  */
+#define si_pid         _sifields._kill.si_pid
+#define si_uid         _sifields._kill.si_uid
+#define si_timerid     _sifields._timer.si_tid
+#define si_overrun     _sifields._timer.si_overrun
+#define si_status      _sifields._sigchld.si_status
+#define si_utime       _sifields._sigchld.si_utime
+#define si_stime       _sifields._sigchld.si_stime
+#define si_value       _sifields._rt.si_sigval
+#define si_int         _sifields._rt.si_sigval.sival_int
+#define si_ptr         _sifields._rt.si_sigval.sival_ptr
+#define si_addr                _sifields._sigfault.si_addr
+#define si_addr_lsb    _sifields._sigfault.si_addr_lsb
+#define si_lower       _sifields._sigfault._bounds._addr_bnd._lower
+#define si_upper       _sifields._sigfault._bounds._addr_bnd._upper
+#define si_pkey                _sifields._sigfault._bounds._pkey
+#define si_band                _sifields._sigpoll.si_band
+#define si_fd          _sifields._sigpoll.si_fd
+#if __SI_HAVE_SIGSYS
+# define si_call_addr  _sifields._sigsys._call_addr
+# define si_syscall    _sifields._sigsys._syscall
+# define si_arch       _sifields._sigsys._arch
+#endif
+
+#endif
index 50e585d..79b99ff 100644 (file)
@@ -25,6 +25,7 @@
 
 /* We need the signal context definitions even if they are not exposed
    by <signal.h>.  */
+#include <bits/types/__sigset_t.h>
 #include <bits/sigcontext.h>
 #include <bits/sigstack.h>
 #include <bits/types/struct_sigstack.h>
diff --git a/sysdeps/unix/sysv/linux/ia64/bits/siginfo-arch.h b/sysdeps/unix/sysv/linux/ia64/bits/siginfo-arch.h
new file mode 100644 (file)
index 0000000..f824adb
--- /dev/null
@@ -0,0 +1,19 @@
+/* Architecture-specific adjustments to siginfo_t.  ia64 version.  */
+#ifndef _BITS_SIGINFO_ARCH_H
+
+#undef __SI_HAVE_SIGSYS
+#define __SI_HAVE_SIGSYS 0
+
+#undef __SI_SIGFAULT_ADDL
+#define __SI_SIGFAULT_ADDL                     \
+  int _si_imm;                                 \
+  unsigned int _si_flags;                      \
+  unsigned long int _si_isr;
+
+#ifdef __USE_GNU
+# define si_imm                _sifields._sigfault._si_imm
+# define si_segvflags  _sifields._sigfault._si_flags
+# define si_isr                _sifields._sigfault._si_isr
+#endif
+
+#endif
diff --git a/sysdeps/unix/sysv/linux/ia64/bits/siginfo-consts-arch.h b/sysdeps/unix/sysv/linux/ia64/bits/siginfo-consts-arch.h
new file mode 100644 (file)
index 0000000..4c5c4da
--- /dev/null
@@ -0,0 +1,45 @@
+/* Architecture-specific additional siginfo constants.  ia64 version.  */
+#ifndef _BITS_SIGINFO_CONSTS_ARCH_H
+#define _BITS_SIGINFO_CONSTS_ARCH_H 1
+
+/* `si_code' values for SIGILL signal.  */
+enum
+{
+  ILL_BADIADDR = ILL_BADSTK + 1, /* Unimplemented instruction address. */
+#define ILL_BADIADDR ILL_BADIADDR
+  ILL_BREAK
+#define ILL_BREAK ILL_BREAK
+};
+
+/* `si_code' values for SIGFPE signal.  */
+enum
+{
+   FPE_DECOVF   = FPE_FLTSUB + 1,
+#define FPE_DECOVF  FPE_DECOVF
+   FPE_DECDIV,
+#define FPE_DECDIV  FPE_DECDIV
+   FPE_DECERR,
+#define FPE_DECERR  FPE_DECERR
+   FPE_INVASC,
+#define FPE_INVASC  FPE_INVASC
+   FPE_INVDEC
+#define FPE_INVDEC  FPE_INVDEC
+};
+
+/* `si_code' values for SIGSEGV signal.  */
+enum
+{
+  SEGV_PSTKOVF = SEGV_ACCERR + 1
+#define SEGV_PSTKOVF SEGV_PSTKOVF
+};
+
+/* `si_code' values for SIGTRAP signal.  */
+enum
+{
+  TRAP_BRANCH = TRAP_TRACE + 1,
+#define TRAP_BRANCH TRAP_BRANCH
+  TRAP_HWBKPT
+#define TRAP_HWBKPT TRAP_HWBKPT
+};
+
+#endif
diff --git a/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h b/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h
deleted file mode 100644 (file)
index b2a7338..0000000
+++ /dev/null
@@ -1,360 +0,0 @@
-/* siginfo_t, sigevent and constants.  Linux/ia64 version.
-   Copyright (C) 2000-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if !defined _SIGNAL_H && !defined __need_siginfo_t \
-    && !defined __need_sigevent_t
-# error "Never include this file directly.  Use <signal.h> instead"
-#endif
-
-#if (!defined __have_sigval_t \
-     && (defined _SIGNAL_H || defined __need_siginfo_t \
-        || defined __need_sigevent_t))
-# define __have_sigval_t       1
-
-/* Type for data associated with a signal.  */
-typedef union sigval
-  {
-    int sival_int;
-    void *sival_ptr;
-  } sigval_t;
-#endif
-
-#if (!defined __have_siginfo_t \
-     && (defined _SIGNAL_H || defined __need_siginfo_t))
-# define __have_siginfo_t      1
-
-# define __SI_MAX_SIZE     128
-# define __SI_PAD_SIZE     ((__SI_MAX_SIZE / sizeof (int)) - 4)
-
-typedef struct
-  {
-    int si_signo;              /* Signal number.  */
-    int si_errno;              /* If non-zero, an errno value associated with
-                                  this signal, as defined in <errno.h>.  */
-    int si_code;               /* Signal code.  */
-    int __pad0;                        /* Explicit padding.  */
-
-    union
-      {
-       int _pad[__SI_PAD_SIZE];
-
-        /* kill().  */
-       struct
-         {
-           __pid_t si_pid;     /* Sending process ID.  */
-           __uid_t si_uid;     /* Real user ID of sending process.  */
-         } _kill;
-
-       /* POSIX.1b timers.  */
-       struct
-         {
-           int si_tid;         /* Timer ID.  */
-           int si_overrun;     /* Overrun count.  */
-           sigval_t si_sigval; /* Signal value.  */
-         } _timer;
-
-       /* POSIX.1b signals.  */
-       struct
-         {
-           __pid_t si_pid;     /* Sending process ID.  */
-           __uid_t si_uid;     /* Real user ID of sending process.  */
-           sigval_t si_sigval; /* Signal value.  */
-         } _rt;
-
-       /* SIGCHLD.  */
-       struct
-         {
-           __pid_t si_pid;     /* Which child.  */
-           __uid_t si_uid;     /* Real user ID of sending process.  */
-           int si_status;      /* Exit value or signal.  */
-           __clock_t si_utime;
-           __clock_t si_stime;
-         } _sigchld;
-
-       /* SIGILL, SIGFPE, SIGSEGV, SIGBUS.  */
-       struct
-         {
-           void *si_addr;      /* Faulting insn/memory ref.  */
-           int _si_imm;
-           unsigned int _si_flags;
-           unsigned long int _si_isr;
-           short int si_addr_lsb;      /* Valid LSB of the reported address.  */
-         } _sigfault;
-
-       /* SIGPOLL.  */
-       struct
-         {
-           long int si_band;   /* Band event for SIGPOLL.  */
-           int si_fd;
-         } _sigpoll;
-      } _sifields;
-  } siginfo_t;
-
-
-/* X/Open requires some more fields with fixed names.  */
-# define si_pid                _sifields._kill.si_pid
-# define si_uid                _sifields._kill.si_uid
-# define si_timerid    _sifields._timer.si_tid
-# define si_overrun    _sifields._timer.si_overrun
-# define si_status     _sifields._sigchld.si_status
-# define si_utime      _sifields._sigchld.si_utime
-# define si_stime      _sifields._sigchld.si_stime
-# define si_value      _sifields._rt.si_sigval
-# define si_int                _sifields._rt.si_sigval.sival_int
-# define si_ptr                _sifields._rt.si_sigval.sival_ptr
-# define si_addr       _sifields._sigfault.si_addr
-# define si_addr_lsb   _sifields._sigfault.si_addr_lsb
-# define si_band       _sifields._sigpoll.si_band
-# define si_fd         _sifields._sigpoll.si_fd
-
-# ifdef __USE_GNU
-#  define si_imm       _sifields._sigfault._si_imm
-#  define si_segvflags _sifields._sigfault._si_flags
-#  define si_isr       _sifields._sigfault._si_isr
-# endif
-
-/* Values for `si_code'.  Positive values are reserved for kernel-generated
-   signals.  */
-enum
-{
-  SI_ASYNCNL = -60,            /* Sent by asynch name lookup completion.  */
-# define SI_ASYNCNL    SI_ASYNCNL
-  SI_TKILL = -6,               /* Sent by tkill.  */
-# define SI_TKILL      SI_TKILL
-  SI_SIGIO,                    /* Sent by queued SIGIO. */
-# define SI_SIGIO      SI_SIGIO
-  SI_ASYNCIO,                  /* Sent by AIO completion.  */
-# define SI_ASYNCIO    SI_ASYNCIO
-  SI_MESGQ,                    /* Sent by real time mesq state change.  */
-# define SI_MESGQ      SI_MESGQ
-  SI_TIMER,                    /* Sent by timer expiration.  */
-# define SI_TIMER      SI_TIMER
-  SI_QUEUE,                    /* Sent by sigqueue.  */
-# define SI_QUEUE      SI_QUEUE
-  SI_USER,                     /* Sent by kill, sigsend.  */
-# define SI_USER       SI_USER
-  SI_KERNEL = 0x80             /* Send by kernel.  */
-#define SI_KERNEL      SI_KERNEL
-};
-
-
-# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
-/* `si_code' values for SIGILL signal.  */
-enum
-{
-  ILL_ILLOPC = 1,              /* Illegal opcode.  */
-#  define ILL_ILLOPC   ILL_ILLOPC
-  ILL_ILLOPN,                  /* Illegal operand.  */
-#  define ILL_ILLOPN   ILL_ILLOPN
-  ILL_ILLADR,                  /* Illegal addressing mode.  */
-#  define ILL_ILLADR   ILL_ILLADR
-  ILL_ILLTRP,                  /* Illegal trap. */
-#  define ILL_ILLTRP   ILL_ILLTRP
-  ILL_PRVOPC,                  /* Privileged opcode.  */
-#  define ILL_PRVOPC   ILL_PRVOPC
-  ILL_PRVREG,                  /* Privileged register.  */
-#  define ILL_PRVREG   ILL_PRVREG
-  ILL_COPROC,                  /* Coprocessor error.  */
-#  define ILL_COPROC   ILL_COPROC
-  ILL_BADSTK,                  /* Internal stack error.  */
-#  define ILL_BADSTK   ILL_BADSTK
-  ILL_BADIADDR                 /* Unimplemented instruction address. */
-#  define ILL_BADIADDR ILL_BADIADDR
-
-#  ifdef __USE_GNU
-   , ILL_BREAK
-#   define ILL_BREAK   ILL_BREAK
-#  endif
-};
-
-/* `si_code' values for SIGFPE signal.  */
-enum
-{
-  FPE_INTDIV = 1,              /* Integer divide by zero.  */
-#  define FPE_INTDIV   FPE_INTDIV
-  FPE_INTOVF,                  /* Integer overflow.  */
-#  define FPE_INTOVF   FPE_INTOVF
-  FPE_FLTDIV,                  /* Floating point divide by zero.  */
-#  define FPE_FLTDIV   FPE_FLTDIV
-  FPE_FLTOVF,                  /* Floating point overflow.  */
-#  define FPE_FLTOVF   FPE_FLTOVF
-  FPE_FLTUND,                  /* Floating point underflow.  */
-#  define FPE_FLTUND   FPE_FLTUND
-  FPE_FLTRES,                  /* Floating point inexact result.  */
-#  define FPE_FLTRES   FPE_FLTRES
-  FPE_FLTINV,                  /* Floating point invalid operation.  */
-#  define FPE_FLTINV   FPE_FLTINV
-  FPE_FLTSUB                   /* Subscript out of range.  */
-#  define FPE_FLTSUB   FPE_FLTSUB
-#  ifdef __USE_GNU
-   , FPE_DECOVF
-#   define FPE_DECOVF  FPE_DECOVF
-   , FPE_DECDIV
-#   define FPE_DECDIV  FPE_DECDIV
-   , FPE_DECERR
-#   define FPE_DECERR  FPE_DECERR
-   , FPE_INVASC
-#   define FPE_INVASC  FPE_INVASC
-   , FPE_INVDEC
-#   define FPE_INVDEC  FPE_INVDEC
-#  endif
-};
-
-/* `si_code' values for SIGSEGV signal.  */
-enum
-{
-  SEGV_MAPERR = 1,             /* Address not mapped to object.  */
-#  define SEGV_MAPERR  SEGV_MAPERR
-  SEGV_ACCERR                  /* Invalid permissions for mapped object.  */
-#  define SEGV_ACCERR  SEGV_ACCERR
-#  ifdef __USE_GNU
-  , SEGV_PSTKOVF               /* Paragraph stack overflow. */
-#   define SEGV_PSTKOVF        SEGV_PSTKOVF
-#  endif
-};
-
-/* `si_code' values for SIGBUS signal.  */
-enum
-{
-  BUS_ADRALN = 1,              /* Invalid address alignment.  */
-#  define BUS_ADRALN   BUS_ADRALN
-  BUS_ADRERR,                  /* Non-existant physical address.  */
-#  define BUS_ADRERR   BUS_ADRERR
-  BUS_OBJERR,                  /* Object specific hardware error.  */
-#  define BUS_OBJERR   BUS_OBJERR
-  BUS_MCEERR_AR,               /* Hardware memory error: action required.  */
-#  define BUS_MCEERR_AR        BUS_MCEERR_AR
-  BUS_MCEERR_AO                        /* Hardware memory error: action optional.  */
-#  define BUS_MCEERR_AO        BUS_MCEERR_AO
-};
-# endif
-
-# ifdef __USE_XOPEN_EXTENDED
-/* `si_code' values for SIGTRAP signal.  */
-enum
-{
-  TRAP_BRKPT = 1,              /* Process breakpoint.  */
-#  define TRAP_BRKPT   TRAP_BRKPT
-  TRAP_TRACE                   /* Process trace trap.  */
-#  define TRAP_TRACE   TRAP_TRACE
-
-#  ifdef __USE_GNU
-  , TRAP_BRANCH
-#   define TRAP_BRANCH TRAP_BRANCH
-  , TRAP_HWBKPT
-#   define TRAP_HWBKPT TRAP_HWBKPT
-#  endif
-};
-# endif
-
-# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
-/* `si_code' values for SIGCHLD signal.  */
-enum
-{
-  CLD_EXITED = 1,              /* Child has exited.  */
-#  define CLD_EXITED   CLD_EXITED
-  CLD_KILLED,                  /* Child was killed.  */
-#  define CLD_KILLED   CLD_KILLED
-  CLD_DUMPED,                  /* Child terminated abnormally.  */
-#  define CLD_DUMPED   CLD_DUMPED
-  CLD_TRAPPED,                 /* Traced child has trapped.  */
-#  define CLD_TRAPPED  CLD_TRAPPED
-  CLD_STOPPED,                 /* Child has stopped.  */
-#  define CLD_STOPPED  CLD_STOPPED
-  CLD_CONTINUED                        /* Stopped child has continued.  */
-#  define CLD_CONTINUED        CLD_CONTINUED
-};
-
-/* `si_code' values for SIGPOLL signal.  */
-enum
-{
-  POLL_IN = 1,                 /* Data input available.  */
-#  define POLL_IN      POLL_IN
-  POLL_OUT,                    /* Output buffers available.  */
-#  define POLL_OUT     POLL_OUT
-  POLL_MSG,                    /* Input message available.   */
-#  define POLL_MSG     POLL_MSG
-  POLL_ERR,                    /* I/O error.  */
-#  define POLL_ERR     POLL_ERR
-  POLL_PRI,                    /* High priority input available.  */
-#  define POLL_PRI     POLL_PRI
-  POLL_HUP                     /* Device disconnected.  */
-#  define POLL_HUP     POLL_HUP
-};
-# endif
-
-# undef __need_siginfo_t
-#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t).  */
-
-
-#if (defined _SIGNAL_H || defined __need_sigevent_t) \
-    && !defined __have_sigevent_t
-# define __have_sigevent_t     1
-
-/* Structure to transport application-defined values with signals.  */
-# define __SIGEV_MAX_SIZE      64
-# define __SIGEV_PAD_SIZE      ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
-
-/* Forward declaration.  */
-# ifndef __have_pthread_attr_t
-typedef union pthread_attr_t pthread_attr_t;
-#  define __have_pthread_attr_t        1
-# endif
-
-typedef struct sigevent
-  {
-    sigval_t sigev_value;
-    int sigev_signo;
-    int sigev_notify;
-
-    union
-      {
-       int _pad[__SIGEV_PAD_SIZE];
-
-       /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
-          thread to receive the signal.  */
-       __pid_t _tid;
-
-       struct
-         {
-           void (*_function) (sigval_t);       /* Function to start.  */
-           pthread_attr_t *_attribute;         /* Thread attributes.  */
-         } _sigev_thread;
-      } _sigev_un;
-  } sigevent_t;
-
-/* POSIX names to access some of the members.  */
-# define sigev_notify_function   _sigev_un._sigev_thread._function
-# define sigev_notify_attributes _sigev_un._sigev_thread._attribute
-
-/* `sigev_notify' values.  */
-enum
-{
-  SIGEV_SIGNAL = 0,            /* Notify via signal.  */
-# define SIGEV_SIGNAL  SIGEV_SIGNAL
-  SIGEV_NONE,                  /* Other notification: meaningless.  */
-# define SIGEV_NONE    SIGEV_NONE
-  SIGEV_THREAD,                        /* Deliver via thread creation.  */
-# define SIGEV_THREAD  SIGEV_THREAD
-
-  SIGEV_THREAD_ID = 4          /* Send signal to specific thread.  */
-#define SIGEV_THREAD_ID        SIGEV_THREAD_ID
-};
-
-#endif /* have _SIGNAL_H.  */
index 18ff022..62dd96e 100644 (file)
@@ -25,6 +25,7 @@
 
 /* We need the signal context definitions even if they are not exposed
    by <signal.h>.  */
+#include <bits/types/__sigset_t.h>
 #include <bits/sigcontext.h>
 #include <bits/sigstack.h>
 #include <bits/types/struct_sigstack.h>
diff --git a/sysdeps/unix/sysv/linux/mips/bits/siginfo-arch.h b/sysdeps/unix/sysv/linux/mips/bits/siginfo-arch.h
new file mode 100644 (file)
index 0000000..4292d7c
--- /dev/null
@@ -0,0 +1,15 @@
+/* Architecture-specific adjustments to siginfo_t.  MIPS version.  */
+#ifndef _BITS_SIGINFO_ARCH_H
+#define _BITS_SIGINFO_ARCH_H 1
+
+/* MIPS has the si_code and si_errno fields in the opposite order from
+   all other architectures.  */
+#undef __SI_ERRNO_THEN_CODE
+#define __SI_ERRNO_THEN_CODE 0
+
+/* MIPS also has different values for SI_ASYNCIO, SI_MESGQ, and SI_TIMER
+   than all other architectures.  */
+#undef __SI_ASYNCIO_AFTER_SIGIO
+#define __SI_ASYNCIO_AFTER_SIGIO 0
+
+#endif
diff --git a/sysdeps/unix/sysv/linux/mips/bits/siginfo.h b/sysdeps/unix/sysv/linux/mips/bits/siginfo.h
deleted file mode 100644 (file)
index 8d3f1df..0000000
+++ /dev/null
@@ -1,344 +0,0 @@
-/* siginfo_t, sigevent and constants.  Linux/MIPS version.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if !defined _SIGNAL_H && !defined __need_siginfo_t \
-    && !defined __need_sigevent_t
-# error "Never include this file directly.  Use <signal.h> instead"
-#endif
-
-#include <bits/wordsize.h>
-
-#if (!defined __have_sigval_t \
-     && (defined _SIGNAL_H || defined __need_siginfo_t \
-        || defined __need_sigevent_t))
-# define __have_sigval_t       1
-
-/* Type for data associated with a signal.  */
-typedef union sigval
-  {
-    int sival_int;
-    void *sival_ptr;
-  } sigval_t;
-#endif
-
-#if (!defined __have_siginfo_t \
-     && (defined _SIGNAL_H || defined __need_siginfo_t))
-# define __have_siginfo_t      1
-
-# define __SI_MAX_SIZE         128
-# if __WORDSIZE == 64
-#  define __SI_PAD_SIZE                ((__SI_MAX_SIZE / sizeof (int)) - 4)
-# else
-#  define __SI_PAD_SIZE                ((__SI_MAX_SIZE / sizeof (int)) - 3)
-# endif
-
-
-typedef struct
-  {
-    int si_signo;              /* Signal number.  */
-    int si_code;               /* Signal code.  */
-    int si_errno;              /* If non-zero, an errno value associated with
-                                  this signal, as defined in <errno.h>.  */
-    int __pad0[__SI_MAX_SIZE / sizeof (int) - __SI_PAD_SIZE - 3];
-                               /* Explicit padding.  */
-
-    union
-      {
-       int _pad[__SI_PAD_SIZE];
-
-        /* kill().  */
-       struct
-         {
-           __pid_t si_pid;     /* Sending process ID.  */
-           __uid_t si_uid;     /* Real user ID of sending process.  */
-         } _kill;
-
-       /* POSIX.1b timers.  */
-       struct
-         {
-           int si_tid;         /* Timer ID.  */
-           int si_overrun;     /* Overrun count.  */
-           sigval_t si_sigval; /* Signal value.  */
-         } _timer;
-
-       /* POSIX.1b signals.  */
-       struct
-         {
-           __pid_t si_pid;     /* Sending process ID.  */
-           __uid_t si_uid;     /* Real user ID of sending process.  */
-           sigval_t si_sigval; /* Signal value.  */
-         } _rt;
-
-       /* SIGCHLD.  */
-       struct
-         {
-           __pid_t si_pid;     /* Which child.  */
-           __uid_t si_uid;     /* Real user ID of sending process.  */
-           int si_status;      /* Exit value or signal.  */
-           __clock_t si_utime;
-           __clock_t si_stime;
-         } _sigchld;
-
-       /* SIGILL, SIGFPE, SIGSEGV, SIGBUS.  */
-       struct
-         {
-           void *si_addr;      /* Faulting insn/memory ref.  */
-           short int si_addr_lsb;      /* Valid LSB of the reported address.  */
-         } _sigfault;
-
-       /* SIGPOLL.  */
-       struct
-         {
-           long int si_band;   /* Band event for SIGPOLL.  */
-           int si_fd;
-         } _sigpoll;
-
-       /* SIGSYS.  */
-       struct
-         {
-           void *_call_addr;   /* Calling user insn.  */
-           int _syscall;       /* Triggering system call number.  */
-           unsigned int _arch; /* AUDIT_ARCH_* of syscall.  */
-         } _sigsys;
-      } _sifields;
-  } siginfo_t;
-
-
-/* X/Open requires some more fields with fixed names.  */
-# define si_pid                _sifields._kill.si_pid
-# define si_uid                _sifields._kill.si_uid
-# define si_timerid    _sifields._timer.si_tid
-# define si_overrun    _sifields._timer.si_overrun
-# define si_status     _sifields._sigchld.si_status
-# define si_utime      _sifields._sigchld.si_utime
-# define si_stime      _sifields._sigchld.si_stime
-# define si_value      _sifields._rt.si_sigval
-# define si_int                _sifields._rt.si_sigval.sival_int
-# define si_ptr                _sifields._rt.si_sigval.sival_ptr
-# define si_addr       _sifields._sigfault.si_addr
-# define si_addr_lsb   _sifields._sigfault.si_addr_lsb
-# define si_band       _sifields._sigpoll.si_band
-# define si_fd         _sifields._sigpoll.si_fd
-# define si_call_addr  _sifields._sigsys._call_addr
-# define si_syscall    _sifields._sigsys._syscall
-# define si_arch       _sifields._sigsys._arch
-
-
-/* Values for `si_code'.  Positive values are reserved for kernel-generated
-   signals.  */
-enum
-{
-  SI_ASYNCNL = -60,            /* Sent by asynch name lookup completion.  */
-# define SI_ASYNCNL    SI_ASYNCNL
-  SI_TKILL = -6,               /* Sent by tkill.  */
-# define SI_TKILL      SI_TKILL
-  SI_SIGIO,                    /* Sent by queued SIGIO.  */
-# define SI_SIGIO      SI_SIGIO
-  SI_MESGQ,                    /* Sent by real time mesq state change.  */
-# define SI_MESGQ      SI_MESGQ
-  SI_TIMER,                    /* Sent by real time mesq state change.  */
-# define SI_TIMER      SI_TIMER
-  SI_ASYNCIO,                  /* Sent by AIO completion.  */
-# define SI_ASYNCIO    SI_ASYNCIO
-  SI_QUEUE,                    /* Sent by sigqueue.  */
-# define SI_QUEUE      SI_QUEUE
-  SI_USER,                     /* Sent by kill, sigsend.  */
-# define SI_USER       SI_USER
-  SI_KERNEL = 0x80             /* Send by kernel.  */
-#define SI_KERNEL      SI_KERNEL
-};
-
-
-# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
-/* `si_code' values for SIGILL signal.  */
-enum
-{
-  ILL_ILLOPC = 1,              /* Illegal opcode.  */
-#  define ILL_ILLOPC   ILL_ILLOPC
-  ILL_ILLOPN,                  /* Illegal operand.  */
-#  define ILL_ILLOPN   ILL_ILLOPN
-  ILL_ILLADR,                  /* Illegal addressing mode.  */
-#  define ILL_ILLADR   ILL_ILLADR
-  ILL_ILLTRP,                  /* Illegal trap.  */
-#  define ILL_ILLTRP   ILL_ILLTRP
-  ILL_PRVOPC,                  /* Privileged opcode.  */
-#  define ILL_PRVOPC   ILL_PRVOPC
-  ILL_PRVREG,                  /* Privileged register.  */
-#  define ILL_PRVREG   ILL_PRVREG
-  ILL_COPROC,                  /* Coprocessor error.  */
-#  define ILL_COPROC   ILL_COPROC
-  ILL_BADSTK                   /* Internal stack error.  */
-#  define ILL_BADSTK   ILL_BADSTK
-};
-
-/* `si_code' values for SIGFPE signal.  */
-enum
-{
-  FPE_INTDIV = 1,              /* Integer divide by zero.  */
-#  define FPE_INTDIV   FPE_INTDIV
-  FPE_INTOVF,                  /* Integer overflow.  */
-#  define FPE_INTOVF   FPE_INTOVF
-  FPE_FLTDIV,                  /* Floating point divide by zero.  */
-#  define FPE_FLTDIV   FPE_FLTDIV
-  FPE_FLTOVF,                  /* Floating point overflow.  */
-#  define FPE_FLTOVF   FPE_FLTOVF
-  FPE_FLTUND,                  /* Floating point underflow.  */
-#  define FPE_FLTUND   FPE_FLTUND
-  FPE_FLTRES,                  /* Floating point inexact result.  */
-#  define FPE_FLTRES   FPE_FLTRES
-  FPE_FLTINV,                  /* Floating point invalid operation.  */
-#  define FPE_FLTINV   FPE_FLTINV
-  FPE_FLTSUB                   /* Subscript out of range.  */
-#  define FPE_FLTSUB   FPE_FLTSUB
-};
-
-/* `si_code' values for SIGSEGV signal.  */
-enum
-{
-  SEGV_MAPERR = 1,             /* Address not mapped to object.  */
-#  define SEGV_MAPERR  SEGV_MAPERR
-  SEGV_ACCERR                  /* Invalid permissions for mapped object.  */
-#  define SEGV_ACCERR  SEGV_ACCERR
-};
-
-/* `si_code' values for SIGBUS signal.  */
-enum
-{
-  BUS_ADRALN = 1,              /* Invalid address alignment.  */
-#  define BUS_ADRALN   BUS_ADRALN
-  BUS_ADRERR,                  /* Non-existant physical address.  */
-#  define BUS_ADRERR   BUS_ADRERR
-  BUS_OBJERR,                  /* Object specific hardware error.  */
-#  define BUS_OBJERR   BUS_OBJERR
-  BUS_MCEERR_AR,               /* Hardware memory error: action required.  */
-#  define BUS_MCEERR_AR        BUS_MCEERR_AR
-  BUS_MCEERR_AO                        /* Hardware memory error: action optional.  */
-#  define BUS_MCEERR_AO        BUS_MCEERR_AO
-};
-# endif
-
-# ifdef __USE_XOPEN_EXTENDED
-/* `si_code' values for SIGTRAP signal.  */
-enum
-{
-  TRAP_BRKPT = 1,              /* Process breakpoint.  */
-#  define TRAP_BRKPT   TRAP_BRKPT
-  TRAP_TRACE                   /* Process trace trap.  */
-#  define TRAP_TRACE   TRAP_TRACE
-};
-# endif
-
-# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
-/* `si_code' values for SIGCHLD signal.  */
-enum
-{
-  CLD_EXITED = 1,              /* Child has exited.  */
-#  define CLD_EXITED   CLD_EXITED
-  CLD_KILLED,                  /* Child was killed.  */
-#  define CLD_KILLED   CLD_KILLED
-  CLD_DUMPED,                  /* Child terminated abnormally.  */
-#  define CLD_DUMPED   CLD_DUMPED
-  CLD_TRAPPED,                 /* Traced child has trapped.  */
-#  define CLD_TRAPPED  CLD_TRAPPED
-  CLD_STOPPED,                 /* Child has stopped.  */
-#  define CLD_STOPPED  CLD_STOPPED
-  CLD_CONTINUED                        /* Stopped child has continued.  */
-#  define CLD_CONTINUED        CLD_CONTINUED
-};
-
-/* `si_code' values for SIGPOLL signal.  */
-enum
-{
-  POLL_IN = 1,                 /* Data input available.  */
-#  define POLL_IN      POLL_IN
-  POLL_OUT,                    /* Output buffers available.  */
-#  define POLL_OUT     POLL_OUT
-  POLL_MSG,                    /* Input message available.   */
-#  define POLL_MSG     POLL_MSG
-  POLL_ERR,                    /* I/O error.  */
-#  define POLL_ERR     POLL_ERR
-  POLL_PRI,                    /* High priority input available.  */
-#  define POLL_PRI     POLL_PRI
-  POLL_HUP                     /* Device disconnected.  */
-#  define POLL_HUP     POLL_HUP
-};
-# endif
-
-# undef __need_siginfo_t
-#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t).  */
-
-
-#if (defined _SIGNAL_H || defined __need_sigevent_t) \
-    && !defined __have_sigevent_t
-# define __have_sigevent_t     1
-
-/* Structure to transport application-defined values with signals.  */
-# define __SIGEV_MAX_SIZE      64
-# if __WORDSIZE == 64
-#  define __SIGEV_PAD_SIZE     ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
-# else
-#  define __SIGEV_PAD_SIZE     ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
-# endif
-
-/* Forward declaration.  */
-# ifndef __have_pthread_attr_t
-typedef union pthread_attr_t pthread_attr_t;
-#  define __have_pthread_attr_t        1
-# endif
-
-typedef struct sigevent
-  {
-    sigval_t sigev_value;
-    int sigev_signo;
-    int sigev_notify;
-
-    union
-      {
-       int _pad[__SIGEV_PAD_SIZE];
-
-       /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
-          thread to receive the signal.  */
-       __pid_t _tid;
-
-       struct
-         {
-           void (*_function) (sigval_t);       /* Function to start.  */
-           pthread_attr_t *_attribute;         /* Thread attributes.  */
-         } _sigev_thread;
-      } _sigev_un;
-  } sigevent_t;
-
-/* POSIX names to access some of the members.  */
-# define sigev_notify_function   _sigev_un._sigev_thread._function
-# define sigev_notify_attributes _sigev_un._sigev_thread._attribute
-
-/* `sigev_notify' values.  */
-enum
-{
-  SIGEV_SIGNAL = 0,            /* Notify via signal.  */
-# define SIGEV_SIGNAL  SIGEV_SIGNAL
-  SIGEV_NONE,                  /* Other notification: meaningless.  */
-# define SIGEV_NONE    SIGEV_NONE
-  SIGEV_THREAD,                        /* Deliver via thread creation.  */
-# define SIGEV_THREAD  SIGEV_THREAD
-
-  SIGEV_THREAD_ID = 4          /* Send signal to specific thread.  */
-#define SIGEV_THREAD_ID        SIGEV_THREAD_ID
-};
-
-#endif /* have _SIGNAL_H.  */
index f933780..06b45a8 100644 (file)
@@ -24,6 +24,7 @@
 
 /* We need the signal context definitions even if they are not exposed
    by <signal.h>.  */
+#include <bits/types/__sigset_t.h>
 #include <bits/sigcontext.h>
 #include <bits/sigstack.h>
 #include <bits/types/struct_sigstack.h>
index c961e5b..7099b45 100644 (file)
@@ -26,6 +26,7 @@
 
 /* We need the signal context definitions even if they are not exposed
    by <signal.h>.  */
+#include <bits/types/__sigset_t.h>
 #include <bits/sigcontext.h>
 #include <bits/sigstack.h>
 #include <bits/types/struct_sigstack.h>
index 43aa1a9..f30c597 100644 (file)
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <signal.h>
+#include <sigsetops.h>
 
 /* The signal used for asynchronous cancelation.  */
 #define SIGCANCEL       __SIGRTMIN
index d9fad4c..d91a5ac 100644 (file)
 #define _SYS_UCONTEXT_H        1
 
 #include <features.h>
-#define __need_sigset_t
-#include <signal.h>
 
 /* We need the signal context definitions even if they are not exposed
    by <signal.h>.  */
 #include <bits/sigcontext.h>
 #include <bits/sigstack.h>
+#include <bits/types/sigset_t.h>
 #include <bits/types/struct_sigstack.h>
 #include <bits/types/stack_t.h>
 #include <bits/ss_flags.h>
diff --git a/sysdeps/unix/sysv/linux/s390/bits/siginfo.h b/sysdeps/unix/sysv/linux/s390/bits/siginfo.h
deleted file mode 100644 (file)
index b32b9eb..0000000
+++ /dev/null
@@ -1,341 +0,0 @@
-/* siginfo_t, sigevent and constants.  S/390 version.
-   Copyright (C) 2001-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if !defined _SIGNAL_H && !defined __need_siginfo_t \
-    && !defined __need_sigevent_t
-# error "Never include this file directly.  Use <signal.h> instead"
-#endif
-
-#include <bits/wordsize.h>
-
-#if (!defined __have_sigval_t \
-     && (defined _SIGNAL_H || defined __need_siginfo_t \
-        || defined __need_sigevent_t))
-# define __have_sigval_t       1
-
-/* Type for data associated with a signal.  */
-typedef union sigval
-  {
-    int sival_int;
-    void *sival_ptr;
-  } sigval_t;
-#endif
-
-#if (!defined __have_siginfo_t \
-     && (defined _SIGNAL_H || defined __need_siginfo_t))
-# define __have_siginfo_t      1
-
-# define __SI_MAX_SIZE    128
-# if __WORDSIZE == 64
-#  define __SI_PAD_SIZE     ((__SI_MAX_SIZE / sizeof (int)) - 4)
-# else
-#  define __SI_PAD_SIZE     ((__SI_MAX_SIZE / sizeof (int)) - 3)
-# endif
-
-typedef struct
-  {
-    int si_signo;              /* Signal number.  */
-    int si_errno;              /* If non-zero, an errno value associated with
-                                  this signal, as defined in <errno.h>.  */
-    int si_code;               /* Signal code.  */
-
-    union
-      {
-       int _pad[__SI_PAD_SIZE];
-
-        /* kill().  */
-       struct
-         {
-           __pid_t si_pid;     /* Sending process ID.  */
-           __uid_t si_uid;     /* Real user ID of sending process.  */
-         } _kill;
-
-       /* POSIX.1b timers.  */
-       struct
-         {
-           int si_tid;         /* Timer ID.  */
-           int si_overrun;     /* Overrun count.  */
-           sigval_t si_sigval; /* Signal value.  */
-         } _timer;
-
-       /* POSIX.1b signals.  */
-       struct
-         {
-           __pid_t si_pid;     /* Sending process ID.  */
-           __uid_t si_uid;     /* Real user ID of sending process.  */
-           sigval_t si_sigval; /* Signal value.  */
-         } _rt;
-
-       /* SIGCHLD.  */
-       struct
-         {
-           __pid_t si_pid;     /* Which child.  */
-           __uid_t si_uid;     /* Real user ID of sending process.  */
-           int si_status;      /* Exit value or signal.  */
-           __clock_t si_utime;
-           __clock_t si_stime;
-         } _sigchld;
-
-       /* SIGILL, SIGFPE, SIGSEGV, SIGBUS.  */
-       struct
-         {
-           void *si_addr;      /* Faulting insn/memory ref.  */
-           short si_addr_lsb;  /* Valid LSB of the reported address.  */
-         } _sigfault;
-
-       /* SIGPOLL.  */
-       struct
-         {
-           long int si_band;   /* Band event for SIGPOLL.  */
-           int si_fd;
-         } _sigpoll;
-
-       /* SIGSYS.  */
-       struct
-         {
-           void *_call_addr;   /* Calling user insn.  */
-           int _syscall;       /* Triggering system call number.  */
-           unsigned int _arch; /* AUDIT_ARCH_* of syscall.  */
-         } _sigsys;
-      } _sifields;
-  } siginfo_t;
-
-
-/* X/Open requires some more fields with fixed names.  */
-# define si_pid                _sifields._kill.si_pid
-# define si_uid                _sifields._kill.si_uid
-# define si_timerid    _sifields._timer.si_tid
-# define si_overrun    _sifields._timer.si_overrun
-# define si_status     _sifields._sigchld.si_status
-# define si_utime      _sifields._sigchld.si_utime
-# define si_stime      _sifields._sigchld.si_stime
-# define si_value      _sifields._rt.si_sigval
-# define si_int                _sifields._rt.si_sigval.sival_int
-# define si_ptr                _sifields._rt.si_sigval.sival_ptr
-# define si_addr       _sifields._sigfault.si_addr
-# define si_addr_lsb   _sifields._sigfault.si_addr_lsb
-# define si_band       _sifields._sigpoll.si_band
-# define si_fd         _sifields._sigpoll.si_fd
-# define si_call_addr  _sifields._sigsys._call_addr
-# define si_syscall    _sifields._sigsys._syscall
-# define si_arch       _sifields._sigsys._arch
-
-
-/* Values for `si_code'.  Positive values are reserved for kernel-generated
-   signals.  */
-enum
-{
-  SI_ASYNCNL = -60,            /* Sent by asynch name lookup completion.  */
-# define SI_ASYNCNL    SI_ASYNCNL
-  SI_TKILL = -6,               /* Sent by tkill.  */
-# define SI_TKILL      SI_TKILL
-  SI_SIGIO,                    /* Sent by queued SIGIO. */
-# define SI_SIGIO      SI_SIGIO
-  SI_ASYNCIO,                  /* Sent by AIO completion.  */
-# define SI_ASYNCIO    SI_ASYNCIO
-  SI_MESGQ,                    /* Sent by real time mesq state change.  */
-# define SI_MESGQ      SI_MESGQ
-  SI_TIMER,                    /* Sent by timer expiration.  */
-# define SI_TIMER      SI_TIMER
-  SI_QUEUE,                    /* Sent by sigqueue.  */
-# define SI_QUEUE      SI_QUEUE
-  SI_USER,                     /* Sent by kill, sigsend.  */
-# define SI_USER       SI_USER
-  SI_KERNEL = 0x80             /* Send by kernel.  */
-#define SI_KERNEL      SI_KERNEL
-};
-
-
-# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
-/* `si_code' values for SIGILL signal. */
-enum
-{
-  ILL_ILLOPC = 1,              /* Illegal opcode.  */
-#  define ILL_ILLOPC   ILL_ILLOPC
-  ILL_ILLOPN,                  /* Illegal operand.  */
-#  define ILL_ILLOPN   ILL_ILLOPN
-  ILL_ILLADR,                  /* Illegal addressing mode.  */
-#  define ILL_ILLADR   ILL_ILLADR
-  ILL_ILLTRP,                  /* Illegal trap. */
-#  define ILL_ILLTRP   ILL_ILLTRP
-  ILL_PRVOPC,                  /* Privileged opcode.  */
-#  define ILL_PRVOPC   ILL_PRVOPC
-  ILL_PRVREG,                  /* Privileged register.  */
-#  define ILL_PRVREG   ILL_PRVREG
-  ILL_COPROC,                  /* Coprocessor error.  */
-#  define ILL_COPROC   ILL_COPROC
-  ILL_BADSTK                   /* Internal stack error.  */
-#  define ILL_BADSTK   ILL_BADSTK
-};
-
-/* `si_code' values for SIGFPE signal. */
-enum
-{
-  FPE_INTDIV = 1,              /* Integer divide by zero.  */
-#  define FPE_INTDIV   FPE_INTDIV
-  FPE_INTOVF,                  /* Integer overflow.  */
-#  define FPE_INTOVF   FPE_INTOVF
-  FPE_FLTDIV,                  /* Floating point divide by zero.  */
-#  define FPE_FLTDIV   FPE_FLTDIV
-  FPE_FLTOVF,                  /* Floating point overflow.  */
-#  define FPE_FLTOVF   FPE_FLTOVF
-  FPE_FLTUND,                  /* Floating point underflow.  */
-#  define FPE_FLTUND   FPE_FLTUND
-  FPE_FLTRES,                  /* Floating point inexact result.  */
-#  define FPE_FLTRES   FPE_FLTRES
-  FPE_FLTINV,                  /* Floating point invalid operation.  */
-#  define FPE_FLTINV   FPE_FLTINV
-  FPE_FLTSUB                   /* Subscript out of range.  */
-#  define FPE_FLTSUB   FPE_FLTSUB
-};
-
-/* `si_code' values for SIGSEGV signal.         */
-enum
-{
-  SEGV_MAPERR = 1,             /* Address not mapped to object.  */
-#  define SEGV_MAPERR  SEGV_MAPERR
-  SEGV_ACCERR                  /* Invalid permissions for mapped object.  */
-#  define SEGV_ACCERR  SEGV_ACCERR
-};
-
-/* `si_code' values for SIGBUS signal. */
-enum
-{
-  BUS_ADRALN = 1,              /* Invalid address alignment.  */
-#  define BUS_ADRALN   BUS_ADRALN
-  BUS_ADRERR,                  /* Non-existant physical address.  */
-#  define BUS_ADRERR   BUS_ADRERR
-  BUS_OBJERR,                  /* Object specific hardware error.  */
-#  define BUS_OBJERR   BUS_OBJERR
-  BUS_MCEERR_AR,               /* Hardware memory error: action required.  */
-#  define BUS_MCEERR_AR        BUS_MCEERR_AR
-  BUS_MCEERR_AO                        /* Hardware memory error: action optional.  */
-#  define BUS_MCEERR_AO        BUS_MCEERR_AO
-};
-# endif
-
-# ifdef __USE_XOPEN_EXTENDED
-/* `si_code' values for SIGTRAP signal.         */
-enum
-{
-  TRAP_BRKPT = 1,              /* Process breakpoint.  */
-#  define TRAP_BRKPT   TRAP_BRKPT
-  TRAP_TRACE                   /* Process trace trap.  */
-#  define TRAP_TRACE   TRAP_TRACE
-};
-# endif
-
-# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
-/* `si_code' values for SIGCHLD signal.         */
-enum
-{
-  CLD_EXITED = 1,              /* Child has exited.  */
-#  define CLD_EXITED   CLD_EXITED
-  CLD_KILLED,                  /* Child was killed.  */
-#  define CLD_KILLED   CLD_KILLED
-  CLD_DUMPED,                  /* Child terminated abnormally.  */
-#  define CLD_DUMPED   CLD_DUMPED
-  CLD_TRAPPED,                 /* Traced child has trapped.  */
-#  define CLD_TRAPPED  CLD_TRAPPED
-  CLD_STOPPED,                 /* Child has stopped.  */
-#  define CLD_STOPPED  CLD_STOPPED
-  CLD_CONTINUED                        /* Stopped child has continued.  */
-#  define CLD_CONTINUED        CLD_CONTINUED
-};
-
-/* `si_code' values for SIGPOLL signal.         */
-enum
-{
-  POLL_IN = 1,                 /* Data input available.  */
-#  define POLL_IN      POLL_IN
-  POLL_OUT,                    /* Output buffers available.  */
-#  define POLL_OUT     POLL_OUT
-  POLL_MSG,                    /* Input message available.   */
-#  define POLL_MSG     POLL_MSG
-  POLL_ERR,                    /* I/O error.  */
-#  define POLL_ERR     POLL_ERR
-  POLL_PRI,                    /* High priority input available.  */
-#  define POLL_PRI     POLL_PRI
-  POLL_HUP                     /* Device disconnected.  */
-#  define POLL_HUP     POLL_HUP
-};
-# endif
-
-# undef __need_siginfo_t
-#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t).  */
-
-
-#if (defined _SIGNAL_H || defined __need_sigevent_t) \
-    && !defined __have_sigevent_t
-# define __have_sigevent_t     1
-
-/* Structure to transport application-defined values with signals.  */
-# define __SIGEV_MAX_SIZE      64
-# if __WORDSIZE == 64
-#  define __SIGEV_PAD_SIZE     ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
-# else
-#  define __SIGEV_PAD_SIZE     ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
-# endif
-
-/* Forward declaration.  */
-# ifndef __have_pthread_attr_t
-typedef union pthread_attr_t pthread_attr_t;
-#  define __have_pthread_attr_t        1
-# endif
-
-typedef struct sigevent
-  {
-    sigval_t sigev_value;
-    int sigev_signo;
-    int sigev_notify;
-
-    union
-      {
-       int _pad[__SIGEV_PAD_SIZE];
-
-       /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
-          thread to receive the signal.  */
-       __pid_t _tid;
-
-       struct
-         {
-           void (*_function) (sigval_t);       /* Function to start.    */
-           pthread_attr_t *_attribute;         /* Thread attributes.  */
-         } _sigev_thread;
-      } _sigev_un;
-  } sigevent_t;
-
-/* POSIX names to access some of the members.  */
-# define sigev_notify_function  _sigev_un._sigev_thread._function
-# define sigev_notify_attributes _sigev_un._sigev_thread._attribute
-
-/* `sigev_notify' values.  */
-enum
-{
-  SIGEV_SIGNAL = 0,            /* Notify via signal.  */
-# define SIGEV_SIGNAL  SIGEV_SIGNAL
-  SIGEV_NONE,                  /* Other notification: meaningless.  */
-# define SIGEV_NONE    SIGEV_NONE
-  SIGEV_THREAD,                        /* Deliver via thread creation.  */
-# define SIGEV_THREAD  SIGEV_THREAD
-
-  SIGEV_THREAD_ID = 4          /* Send signal to specific thread.  */
-#define SIGEV_THREAD_ID        SIGEV_THREAD_ID
-};
-
-#endif /* have _SIGNAL_H.  */
index 955a8fe..fcbd48d 100644 (file)
@@ -24,6 +24,7 @@
 
 /* We need the signal context definitions even if they are not exposed
    by in <signal.h>.  */
+#include <bits/types/__sigset_t.h>
 #include <bits/sigcontext.h>
 #include <bits/sigstack.h>
 #include <bits/types/struct_sigstack.h>
index 3ce381d..cefb918 100644 (file)
@@ -25,6 +25,7 @@
 
 /* We need the signal context definitions even if they are not exposed
    by <signal.h>.  */
+#include <bits/types/__sigset_t.h>
 #include <bits/sigcontext.h>
 #include <bits/sigstack.h>
 #include <bits/types/struct_sigstack.h>
diff --git a/sysdeps/unix/sysv/linux/sigsetops.h b/sysdeps/unix/sysv/linux/sigsetops.h
new file mode 100644 (file)
index 0000000..05a605f
--- /dev/null
@@ -0,0 +1,108 @@
+/* __sigset_t manipulators.  Linux version.
+   Copyright (C) 1991-2017 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _SIGSETOPS_H
+#define _SIGSETOPS_H 1
+
+#include <signal.h>
+
+/* Return a mask that includes the bit for SIG only.  */
+# define __sigmask(sig) \
+  (((unsigned long int) 1) << (((sig) - 1) % (8 * sizeof (unsigned long int))))
+
+/* Return the word index for SIG.  */
+# define __sigword(sig) (((sig) - 1) / (8 * sizeof (unsigned long int)))
+
+# define __sigemptyset(set)                                    \
+  (__extension__ ({                                            \
+    int __cnt = _SIGSET_NWORDS;                                        \
+    sigset_t *__set = (set);                                   \
+    while (--__cnt >= 0)                                       \
+      __set->__val[__cnt] = 0;                                 \
+    (void)0;                                                   \
+  }))
+
+# define __sigfillset(set)                                     \
+  (__extension__ ({                                            \
+    int __cnt = _SIGSET_NWORDS;                                        \
+    sigset_t *__set = (set);                                   \
+    while (--__cnt >= 0)                                       \
+      __set->__val[__cnt] = ~0UL;                              \
+    (void)0;                                                   \
+  }))
+
+# define __sigisemptyset(set)                                  \
+  (__extension__ ({                                            \
+    int __cnt = _SIGSET_NWORDS;                                        \
+    const sigset_t *__set = (set);                             \
+    int __ret = __set->__val[--__cnt];                         \
+    while (!__ret && --__cnt >= 0)                             \
+      __ret = __set->__val[__cnt];                             \
+    __ret == 0;                                                        \
+  }))
+
+# define __sigandset(dest, left, right)                                \
+  (__extension__ ({                                            \
+    int __cnt = _SIGSET_NWORDS;                                        \
+    sigset_t *__dest = (dest);                                 \
+    const sigset_t *__left = (left);                           \
+    const sigset_t *__right = (right);                         \
+    while (--__cnt >= 0)                                       \
+      __dest->__val[__cnt] = (__left->__val[__cnt]             \
+                             & __right->__val[__cnt]);         \
+    (void)0;                                                   \
+  }))
+
+# define __sigorset(dest, left, right)                         \
+  (__extension__ ({                                            \
+    int __cnt = _SIGSET_NWORDS;                                        \
+    sigset_t *__dest = (dest);                                 \
+    const sigset_t *__left = (left);                           \
+    const sigset_t *__right = (right);                         \
+    while (--__cnt >= 0)                                       \
+      __dest->__val[__cnt] = (__left->__val[__cnt]             \
+                             | __right->__val[__cnt]);         \
+    (void)0;                                                   \
+  }))
+
+/* These macros needn't check for a bogus signal number;
+   error checking is done in the non-__ versions.  */
+# define __sigismember(set, sig)                               \
+  (__extension__ ({                                            \
+    unsigned long int __mask = __sigmask (sig);                        \
+    unsigned long int __word = __sigword (sig);                        \
+    (set)->__val[__word] & __mask ? 1 : 0;                     \
+  }))
+
+# define __sigaddset(set, sig)                                 \
+  (__extension__ ({                                            \
+    unsigned long int __mask = __sigmask (sig);                        \
+    unsigned long int __word = __sigword (sig);                        \
+    (set)->__val[__word] |= __mask;                            \
+    (void)0;                                                   \
+  }))
+
+# define __sigdelset(set, sig)                                 \
+  (__extension__ ({                                            \
+    unsigned long int __mask = __sigmask (sig);                        \
+    unsigned long int __word = __sigword (sig);                        \
+    (set)->__val[__word] &= ~__mask;                           \
+    (void)0;                                                   \
+ }))
+
+#endif /* bits/sigsetops.h */
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/siginfo-arch.h b/sysdeps/unix/sysv/linux/sparc/bits/siginfo-arch.h
new file mode 100644 (file)
index 0000000..92fe30f
--- /dev/null
@@ -0,0 +1,14 @@
+/* Architecture-specific adjustments to siginfo_t.  SPARC version.  */
+#ifndef _BITS_SIGINFO_ARCH_H
+#define _BITS_SIGINFO_ARCH_H 1
+
+#undef __SI_BAND_TYPE
+#define __SI_BAND_TYPE int
+
+#undef __SI_SIGFAULT_ADDL
+#define __SI_SIGFAULT_ADDL \
+  int _si_trapno;
+
+#define si_trapno      _sifields._sigfault._si_trapno
+
+#endif
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/siginfo-consts-arch.h b/sysdeps/unix/sysv/linux/sparc/bits/siginfo-consts-arch.h
new file mode 100644 (file)
index 0000000..721dc9c
--- /dev/null
@@ -0,0 +1,12 @@
+/* Architecture-specific additional siginfo constants.  SPARC version.  */
+#ifndef _BITS_SIGINFO_CONSTS_ARCH_H
+#define _BITS_SIGINFO_CONSTS_ARCH_H 1
+
+/* `si_code' values for SIGEMT signal.  */
+enum
+{
+  EMT_TAGOVF = 1       /* Tag overflow.  */
+#define EMT_TAGOVF     EMT_TAGOVF
+};
+
+#endif
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h b/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h
deleted file mode 100644 (file)
index 5881416..0000000
+++ /dev/null
@@ -1,352 +0,0 @@
-/* siginfo_t, sigevent and constants.  Linux/SPARC version.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if !defined _SIGNAL_H && !defined __need_siginfo_t \
-    && !defined __need_sigevent_t
-# error "Never include this file directly.  Use <signal.h> instead"
-#endif
-
-#include <bits/wordsize.h>
-
-#if (!defined __have_sigval_t \
-     && (defined _SIGNAL_H || defined __need_siginfo_t \
-        || defined __need_sigevent_t))
-# define __have_sigval_t       1
-
-/* Type for data associated with a signal.  */
-typedef union sigval
-  {
-    int sival_int;
-    void *sival_ptr;
-  } sigval_t;
-#endif
-
-#if (!defined __have_siginfo_t \
-     && (defined _SIGNAL_H || defined __need_siginfo_t))
-# define __have_siginfo_t      1
-
-# define __SI_MAX_SIZE     128
-# if __WORDSIZE == 64
-#  define __SI_PAD_SIZE     ((__SI_MAX_SIZE / sizeof (int)) - 4)
-# else
-#  define __SI_PAD_SIZE     ((__SI_MAX_SIZE / sizeof (int)) - 3)
-# endif
-
-typedef struct
-  {
-    int si_signo;              /* Signal number.  */
-    int si_errno;              /* If non-zero, an errno value associated with
-                                  this signal, as defined in <errno.h>.  */
-    int si_code;               /* Signal code.  */
-
-    union
-      {
-       int _pad[__SI_PAD_SIZE];
-
-        /* kill().  */
-       struct
-         {
-           __pid_t si_pid;     /* Sending process ID.  */
-           __uid_t si_uid;     /* Real user ID of sending process.  */
-         } _kill;
-
-       /* POSIX.1b timers.  */
-       struct
-         {
-           int si_tid;         /* Timer ID.  */
-           int si_overrun;     /* Overrun count.  */
-           sigval_t si_sigval; /* Signal value.  */
-         } _timer;
-
-       /* POSIX.1b signals.  */
-       struct
-         {
-           __pid_t si_pid;     /* Sending process ID.  */
-           __uid_t si_uid;     /* Real user ID of sending process.  */
-           sigval_t si_sigval; /* Signal value.  */
-         } _rt;
-
-       /* SIGCHLD.  */
-       struct
-         {
-           __pid_t si_pid;     /* Which child.  */
-           __uid_t si_uid;     /* Real user ID of sending process.  */
-           int si_status;      /* Exit value or signal.  */
-           __clock_t si_utime;
-           __clock_t si_stime;
-         } _sigchld;
-
-       /* SIGILL, SIGFPE, SIGSEGV, SIGBUS.  */
-       struct
-         {
-           void *si_addr;      /* Faulting insn/memory ref.  */
-           int si_trapno;
-           short int si_addr_lsb;      /* Valid LSB of the reported address.  */
-         } _sigfault;
-
-       /* SIGPOLL.  */
-       struct
-         {
-           int si_band;        /* Band event for SIGPOLL.  */
-           int si_fd;
-         } _sigpoll;
-
-       /* SIGSYS.  */
-       struct
-         {
-           void *_call_addr;   /* Calling user insn.  */
-           int _syscall;       /* Triggering system call number.  */
-           unsigned int _arch; /* AUDIT_ARCH_* of syscall.  */
-         } _sigsys;
-      } _sifields;
-  } siginfo_t;
-
-
-/* X/Open requires some more fields with fixed names.  */
-# define si_pid                _sifields._kill.si_pid
-# define si_uid                _sifields._kill.si_uid
-# define si_timerid    _sifields._timer.si_tid
-# define si_overrun    _sifields._timer.si_overrun
-# define si_status     _sifields._sigchld.si_status
-# define si_utime      _sifields._sigchld.si_utime
-# define si_stime      _sifields._sigchld.si_stime
-# define si_value      _sifields._rt.si_sigval
-# define si_int                _sifields._rt.si_sigval.sival_int
-# define si_ptr                _sifields._rt.si_sigval.sival_ptr
-# define si_addr       _sifields._sigfault.si_addr
-# define si_trapno     _sifields._sigfault.si_trapno
-# define si_addr_lsb   _sifields._sigfault.si_addr_lsb
-# define si_band       _sifields._sigpoll.si_band
-# define si_fd         _sifields._sigpoll.si_fd
-# define si_call_addr  _sifields._sigsys._call_addr
-# define si_syscall    _sifields._sigsys._syscall
-# define si_arch       _sifields._sigsys._arch
-
-
-/* Values for `si_code'.  Positive values are reserved for kernel-generated
-   signals.  */
-enum
-{
-  SI_ASYNCNL = -60,            /* Sent by asynch name lookup completion.  */
-# define SI_ASYNCNL    SI_ASYNCNL
-  SI_TKILL = -6,               /* Sent by tkill.  */
-# define SI_TKILL      SI_TKILL
-  SI_SIGIO,                    /* Sent by queued SIGIO. */
-# define SI_SIGIO      SI_SIGIO
-  SI_ASYNCIO,                  /* Sent by AIO completion.  */
-# define SI_ASYNCIO    SI_ASYNCIO
-  SI_MESGQ,                    /* Sent by real time mesq state change.  */
-# define SI_MESGQ      SI_MESGQ
-  SI_TIMER,                    /* Sent by timer expiration.  */
-# define SI_TIMER      SI_TIMER
-  SI_QUEUE,                    /* Sent by sigqueue.  */
-# define SI_QUEUE      SI_QUEUE
-  SI_USER,                     /* Sent by kill, sigsend.  */
-# define SI_USER       SI_USER
-  SI_KERNEL = 0x80             /* Send by kernel.  */
-#define SI_KERNEL      SI_KERNEL
-};
-
-
-# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
-/* `si_code' values for SIGILL signal.  */
-enum
-{
-  ILL_ILLOPC = 1,              /* Illegal opcode.  */
-#  define ILL_ILLOPC   ILL_ILLOPC
-  ILL_ILLOPN,                  /* Illegal operand.  */
-#  define ILL_ILLOPN   ILL_ILLOPN
-  ILL_ILLADR,                  /* Illegal addressing mode.  */
-#  define ILL_ILLADR   ILL_ILLADR
-  ILL_ILLTRP,                  /* Illegal trap. */
-#  define ILL_ILLTRP   ILL_ILLTRP
-  ILL_PRVOPC,                  /* Privileged opcode.  */
-#  define ILL_PRVOPC   ILL_PRVOPC
-  ILL_PRVREG,                  /* Privileged register.  */
-#  define ILL_PRVREG   ILL_PRVREG
-  ILL_COPROC,                  /* Coprocessor error.  */
-#  define ILL_COPROC   ILL_COPROC
-  ILL_BADSTK                   /* Internal stack error.  */
-#  define ILL_BADSTK   ILL_BADSTK
-};
-
-/* `si_code' values for SIGFPE signal.  */
-enum
-{
-  FPE_INTDIV = 1,              /* Integer divide by zero.  */
-#  define FPE_INTDIV   FPE_INTDIV
-  FPE_INTOVF,                  /* Integer overflow.  */
-#  define FPE_INTOVF   FPE_INTOVF
-  FPE_FLTDIV,                  /* Floating point divide by zero.  */
-#  define FPE_FLTDIV   FPE_FLTDIV
-  FPE_FLTOVF,                  /* Floating point overflow.  */
-#  define FPE_FLTOVF   FPE_FLTOVF
-  FPE_FLTUND,                  /* Floating point underflow.  */
-#  define FPE_FLTUND   FPE_FLTUND
-  FPE_FLTRES,                  /* Floating point inexact result.  */
-#  define FPE_FLTRES   FPE_FLTRES
-  FPE_FLTINV,                  /* Floating point invalid operation.  */
-#  define FPE_FLTINV   FPE_FLTINV
-  FPE_FLTSUB                   /* Subscript out of range.  */
-#  define FPE_FLTSUB   FPE_FLTSUB
-};
-
-/* `si_code' values for SIGSEGV signal.  */
-enum
-{
-  SEGV_MAPERR = 1,             /* Address not mapped to object.  */
-#  define SEGV_MAPERR  SEGV_MAPERR
-  SEGV_ACCERR                  /* Invalid permissions for mapped object.  */
-#  define SEGV_ACCERR  SEGV_ACCERR
-};
-
-/* `si_code' values for SIGBUS signal.  */
-enum
-{
-  BUS_ADRALN = 1,              /* Invalid address alignment.  */
-#  define BUS_ADRALN   BUS_ADRALN
-  BUS_ADRERR,                  /* Non-existant physical address.  */
-#  define BUS_ADRERR   BUS_ADRERR
-  BUS_OBJERR,                  /* Object specific hardware error.  */
-#  define BUS_OBJERR   BUS_OBJERR
-  BUS_MCEERR_AR,               /* Hardware memory error: action required.  */
-#  define BUS_MCEERR_AR        BUS_MCEERR_AR
-  BUS_MCEERR_AO                        /* Hardware memory error: action optional.  */
-#  define BUS_MCEERR_AO        BUS_MCEERR_AO
-};
-# endif
-
-# ifdef __USE_XOPEN_EXTENDED
-/* `si_code' values for SIGTRAP signal.  */
-enum
-{
-  TRAP_BRKPT = 1,              /* Process breakpoint.  */
-#  define TRAP_BRKPT   TRAP_BRKPT
-  TRAP_TRACE                   /* Process trace trap.  */
-#  define TRAP_TRACE   TRAP_TRACE
-};
-# endif
-
-# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
-/* `si_code' values for SIGCHLD signal.  */
-enum
-{
-  CLD_EXITED = 1,              /* Child has exited.  */
-#  define CLD_EXITED   CLD_EXITED
-  CLD_KILLED,                  /* Child was killed.  */
-#  define CLD_KILLED   CLD_KILLED
-  CLD_DUMPED,                  /* Child terminated abnormally.  */
-#  define CLD_DUMPED   CLD_DUMPED
-  CLD_TRAPPED,                 /* Traced child has trapped.  */
-#  define CLD_TRAPPED  CLD_TRAPPED
-  CLD_STOPPED,                 /* Child has stopped.  */
-#  define CLD_STOPPED  CLD_STOPPED
-  CLD_CONTINUED                        /* Stopped child has continued.  */
-#  define CLD_CONTINUED        CLD_CONTINUED
-};
-
-/* `si_code' values for SIGPOLL signal.  */
-enum
-{
-  POLL_IN = 1,                 /* Data input available.  */
-#  define POLL_IN      POLL_IN
-  POLL_OUT,                    /* Output buffers available.  */
-#  define POLL_OUT     POLL_OUT
-  POLL_MSG,                    /* Input message available.   */
-#  define POLL_MSG     POLL_MSG
-  POLL_ERR,                    /* I/O error.  */
-#  define POLL_ERR     POLL_ERR
-  POLL_PRI,                    /* High priority input available.  */
-#  define POLL_PRI     POLL_PRI
-  POLL_HUP                     /* Device disconnected.  */
-#  define POLL_HUP     POLL_HUP
-};
-# endif
-
-# if defined __USE_GNU
-/* `si_code' values for SIGEMT signal.  */
-enum
-{
-  EMT_TAGOVF = 1               /* Tag overflow.  */
-# define EMT_TAGOVF    EMT_TAGOVF
-};
-# endif
-
-# undef __need_siginfo_t
-#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t).  */
-
-
-#if (defined _SIGNAL_H || defined __need_sigevent_t) \
-    && !defined __have_sigevent_t
-# define __have_sigevent_t     1
-
-/* Structure to transport application-defined values with signals.  */
-# define __SIGEV_MAX_SIZE      64
-# if __WORDSIZE == 64
-#  define __SIGEV_PAD_SIZE     ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
-# else
-#  define __SIGEV_PAD_SIZE     ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
-# endif
-
-/* Forward declaration.  */
-# ifndef __have_pthread_attr_t
-typedef union pthread_attr_t pthread_attr_t;
-#  define __have_pthread_attr_t        1
-# endif
-
-typedef struct sigevent
-  {
-    sigval_t sigev_value;
-    int sigev_signo;
-    int sigev_notify;
-
-    union
-      {
-       int _pad[__SIGEV_PAD_SIZE];
-
-       /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
-          thread to receive the signal.  */
-       __pid_t _tid;
-
-       struct
-         {
-           void (*_function) (sigval_t);       /* Function to start.  */
-           pthread_attr_t *_attribute;         /* Thread attributes.  */
-         } _sigev_thread;
-      } _sigev_un;
-  } sigevent_t;
-
-/* POSIX names to access some of the members.  */
-# define sigev_notify_function   _sigev_un._sigev_thread._function
-# define sigev_notify_attributes _sigev_un._sigev_thread._attribute
-
-/* `sigev_notify' values.  */
-enum
-{
-  SIGEV_SIGNAL = 0,            /* Notify via signal.  */
-# define SIGEV_SIGNAL  SIGEV_SIGNAL
-  SIGEV_NONE,                  /* Other notification: meaningless.  */
-# define SIGEV_NONE    SIGEV_NONE
-  SIGEV_THREAD,                        /* Deliver via thread creation.  */
-# define SIGEV_THREAD  SIGEV_THREAD
-
-  SIGEV_THREAD_ID = 4          /* Send signal to specific thread.  */
-#define SIGEV_THREAD_ID        SIGEV_THREAD_ID
-};
-
-#endif /* have _SIGNAL_H.  */
index 0d6cbe6..e859b79 100644 (file)
@@ -23,6 +23,7 @@
 
 /* We need the signal context definitions even if they are not exposed
    by <signal.h>.  */
+#include <bits/types/__sigset_t.h>
 #include <bits/sigcontext.h>
 #include <bits/sigstack.h>
 #include <bits/types/struct_sigstack.h>
index 7542e8a..1498058 100644 (file)
 #include <stdint.h>
 #include <sys/types.h>
 
-/* Get __sigset_t.  */
-#include <bits/sigset.h>
-
-#ifndef __sigset_t_defined
-# define __sigset_t_defined
-typedef __sigset_t sigset_t;
-#endif
+#include <bits/types/sigset_t.h>
 
 /* Get the platform-dependent flags.  */
 #include <bits/epoll.h>
index a18db51..a01c7d1 100644 (file)
@@ -18,9 +18,8 @@
 #ifndef        _SYS_SIGNALFD_H
 #define        _SYS_SIGNALFD_H 1
 
-#define __need_sigset_t
-#include <signal.h>
 #include <stdint.h>
+#include <bits/types/sigset_t.h>
 
 /* Get the platform-dependent flags.  */
 #include <bits/signalfd.h>
diff --git a/sysdeps/unix/sysv/linux/tile/bits/siginfo-arch.h b/sysdeps/unix/sysv/linux/tile/bits/siginfo-arch.h
new file mode 100644 (file)
index 0000000..013ad71
--- /dev/null
@@ -0,0 +1,11 @@
+/* Architecture-specific adjustments to siginfo_t.  Tile version.  */
+#ifndef _BITS_SIGINFO_ARCH_H
+#define _BITS_SIGINFO_ARCH_H 1
+
+#undef __SI_SIGFAULT_ADDL
+#define __SI_SIGFAULT_ADDL \
+  int _si_trapno;
+
+#define si_trapno      _sifields._sigfault._si_trapno
+
+#endif
diff --git a/sysdeps/unix/sysv/linux/tile/bits/siginfo-consts-arch.h b/sysdeps/unix/sysv/linux/tile/bits/siginfo-consts-arch.h
new file mode 100644 (file)
index 0000000..2e76d20
--- /dev/null
@@ -0,0 +1,14 @@
+/* Architecture-specific additional siginfo constants.  Tile version.  */
+#ifndef _BITS_SIGINFO_CONSTS_ARCH_H
+#define _BITS_SIGINFO_CONSTS_ARCH_H 1
+
+/* `si_code' values for SIGILL signal.  */
+enum
+{
+  ILL_DBLFLT = ILL_BADSTK + 1, /* Double fault.  */
+#define ILL_DBLFLT ILL_DBLFLT
+  ILL_HARDWALL                 /* User networks hardwall violation.  */
+#define ILL_HARDWALL ILL_HARDWALL
+};
+
+#endif
diff --git a/sysdeps/unix/sysv/linux/tile/bits/siginfo.h b/sysdeps/unix/sysv/linux/tile/bits/siginfo.h
deleted file mode 100644 (file)
index 44d66a0..0000000
+++ /dev/null
@@ -1,347 +0,0 @@
-/* Copyright (C) 2011-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if !defined _SIGNAL_H && !defined __need_siginfo_t \
-    && !defined __need_sigevent_t
-# error "Never include this file directly.  Use <signal.h> instead"
-#endif
-
-#include <bits/wordsize.h>
-
-#if (!defined __have_sigval_t \
-     && (defined _SIGNAL_H || defined __need_siginfo_t \
-        || defined __need_sigevent_t))
-# define __have_sigval_t       1
-
-/* Type for data associated with a signal.  */
-typedef union sigval
-  {
-    int sival_int;
-    void *sival_ptr;
-  } sigval_t;
-#endif
-
-#if (!defined __have_siginfo_t \
-     && (defined _SIGNAL_H || defined __need_siginfo_t))
-# define __have_siginfo_t      1
-
-# define __SI_MAX_SIZE     128
-# if __WORDSIZE == 64
-#  define __SI_PAD_SIZE     ((__SI_MAX_SIZE / sizeof (int)) - 4)
-# else
-#  define __SI_PAD_SIZE     ((__SI_MAX_SIZE / sizeof (int)) - 3)
-# endif
-
-typedef struct
-  {
-    int si_signo;              /* Signal number.  */
-    int si_errno;              /* If non-zero, an errno value associated with
-                                  this signal, as defined in <errno.h>.  */
-    int si_code;               /* Signal code.  */
-
-    union
-      {
-       int _pad[__SI_PAD_SIZE];
-
-        /* kill().  */
-       struct
-         {
-           __pid_t si_pid;     /* Sending process ID.  */
-           __uid_t si_uid;     /* Real user ID of sending process.  */
-         } _kill;
-
-       /* POSIX.1b timers.  */
-       struct
-         {
-           int si_tid;         /* Timer ID.  */
-           int si_overrun;     /* Overrun count.  */
-           sigval_t si_sigval; /* Signal value.  */
-         } _timer;
-
-       /* POSIX.1b signals.  */
-       struct
-         {
-           __pid_t si_pid;     /* Sending process ID.  */
-           __uid_t si_uid;     /* Real user ID of sending process.  */
-           sigval_t si_sigval; /* Signal value.  */
-         } _rt;
-
-       /* SIGCHLD.  */
-       struct
-         {
-           __pid_t si_pid;     /* Which child.  */
-           __uid_t si_uid;     /* Real user ID of sending process.  */
-           int si_status;      /* Exit value or signal.  */
-           __clock_t si_utime;
-           __clock_t si_stime;
-         } _sigchld;
-
-       /* SIGILL, SIGFPE, SIGSEGV, SIGBUS.  */
-       struct
-         {
-           void *si_addr;      /* Faulting insn/memory ref.  */
-           int si_trapno;      /* TRAP # which caused the signal.  */
-           short int si_addr_lsb;      /* Valid LSB of the reported address.  */
-         } _sigfault;
-
-       /* SIGPOLL.  */
-       struct
-         {
-           long int si_band;   /* Band event for SIGPOLL.  */
-           int si_fd;
-         } _sigpoll;
-
-       /* SIGSYS.  */
-       struct
-         {
-           void *_call_addr;   /* Calling user insn.  */
-           int _syscall;       /* Triggering system call number.  */
-           unsigned int _arch; /* AUDIT_ARCH_* of syscall.  */
-         } _sigsys;
-      } _sifields;
-  } siginfo_t;
-
-
-/* X/Open requires some more fields with fixed names.  */
-# define si_pid                _sifields._kill.si_pid
-# define si_uid                _sifields._kill.si_uid
-# define si_timerid    _sifields._timer.si_tid
-# define si_overrun    _sifields._timer.si_overrun
-# define si_status     _sifields._sigchld.si_status
-# define si_utime      _sifields._sigchld.si_utime
-# define si_stime      _sifields._sigchld.si_stime
-# define si_value      _sifields._rt.si_sigval
-# define si_int                _sifields._rt.si_sigval.sival_int
-# define si_ptr                _sifields._rt.si_sigval.sival_ptr
-# define si_addr       _sifields._sigfault.si_addr
-# define si_trapno     _sifields._sigfault.si_trapno
-# define si_addr_lsb   _sifields._sigfault.si_addr_lsb
-# define si_band       _sifields._sigpoll.si_band
-# define si_fd         _sifields._sigpoll.si_fd
-# define si_call_addr  _sifields._sigsys._call_addr
-# define si_syscall    _sifields._sigsys._syscall
-# define si_arch       _sifields._sigsys._arch
-
-
-/* Values for `si_code'.  Positive values are reserved for kernel-generated
-   signals.  */
-enum
-{
-  SI_ASYNCNL = -60,            /* Sent by asynch name lookup completion.  */
-# define SI_ASYNCNL    SI_ASYNCNL
-  SI_TKILL = -6,               /* Sent by tkill.  */
-# define SI_TKILL      SI_TKILL
-  SI_SIGIO,                    /* Sent by queued SIGIO. */
-# define SI_SIGIO      SI_SIGIO
-  SI_ASYNCIO,                  /* Sent by AIO completion.  */
-# define SI_ASYNCIO    SI_ASYNCIO
-  SI_MESGQ,                    /* Sent by real time mesq state change.  */
-# define SI_MESGQ      SI_MESGQ
-  SI_TIMER,                    /* Sent by timer expiration.  */
-# define SI_TIMER      SI_TIMER
-  SI_QUEUE,                    /* Sent by sigqueue.  */
-# define SI_QUEUE      SI_QUEUE
-  SI_USER,                     /* Sent by kill, sigsend, raise.  */
-# define SI_USER       SI_USER
-  SI_KERNEL = 0x80             /* Send by kernel.  */
-#define SI_KERNEL      SI_KERNEL
-};
-
-
-# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
-/* `si_code' values for SIGILL signal.  */
-enum
-{
-  ILL_ILLOPC = 1,              /* Illegal opcode.  */
-#  define ILL_ILLOPC   ILL_ILLOPC
-  ILL_ILLOPN,                  /* Illegal operand.  */
-#  define ILL_ILLOPN   ILL_ILLOPN
-  ILL_ILLADR,                  /* Illegal addressing mode.  */
-#  define ILL_ILLADR   ILL_ILLADR
-  ILL_ILLTRP,                  /* Illegal trap. */
-#  define ILL_ILLTRP   ILL_ILLTRP
-  ILL_PRVOPC,                  /* Privileged opcode.  */
-#  define ILL_PRVOPC   ILL_PRVOPC
-  ILL_PRVREG,                  /* Privileged register.  */
-#  define ILL_PRVREG   ILL_PRVREG
-  ILL_COPROC,                  /* Coprocessor error.  */
-#  define ILL_COPROC   ILL_COPROC
-  ILL_BADSTK,                  /* Internal stack error.  */
-#  define ILL_BADSTK   ILL_BADSTK
-  ILL_DBLFLT,                  /* Double fault.  */
-#  define ILL_DBLFLT   ILL_DBLFLT
-  ILL_HARDWALL                 /* User networks hardwall violation.  */
-#  define ILL_HARDWALL ILL_HARDWALL
-};
-
-/* `si_code' values for SIGFPE signal.  */
-enum
-{
-  FPE_INTDIV = 1,              /* Integer divide by zero.  */
-#  define FPE_INTDIV   FPE_INTDIV
-  FPE_INTOVF,                  /* Integer overflow.  */
-#  define FPE_INTOVF   FPE_INTOVF
-  FPE_FLTDIV,                  /* Floating point divide by zero.  */
-#  define FPE_FLTDIV   FPE_FLTDIV
-  FPE_FLTOVF,                  /* Floating point overflow.  */
-#  define FPE_FLTOVF   FPE_FLTOVF
-  FPE_FLTUND,                  /* Floating point underflow.  */
-#  define FPE_FLTUND   FPE_FLTUND
-  FPE_FLTRES,                  /* Floating point inexact result.  */
-#  define FPE_FLTRES   FPE_FLTRES
-  FPE_FLTINV,                  /* Floating point invalid operation.  */
-#  define FPE_FLTINV   FPE_FLTINV
-  FPE_FLTSUB                   /* Subscript out of range.  */
-#  define FPE_FLTSUB   FPE_FLTSUB
-};
-
-/* `si_code' values for SIGSEGV signal.  */
-enum
-{
-  SEGV_MAPERR = 1,             /* Address not mapped to object.  */
-#  define SEGV_MAPERR  SEGV_MAPERR
-  SEGV_ACCERR                  /* Invalid permissions for mapped object.  */
-#  define SEGV_ACCERR  SEGV_ACCERR
-};
-
-/* `si_code' values for SIGBUS signal.  */
-enum
-{
-  BUS_ADRALN = 1,              /* Invalid address alignment.  */
-#  define BUS_ADRALN   BUS_ADRALN
-  BUS_ADRERR,                  /* Non-existant physical address.  */
-#  define BUS_ADRERR   BUS_ADRERR
-  BUS_OBJERR,                  /* Object specific hardware error.  */
-#  define BUS_OBJERR   BUS_OBJERR
-  BUS_MCEERR_AR,               /* Hardware memory error: action required.  */
-#  define BUS_MCEERR_AR        BUS_MCEERR_AR
-  BUS_MCEERR_AO                        /* Hardware memory error: action optional.  */
-#  define BUS_MCEERR_AO        BUS_MCEERR_AO
-};
-# endif
-
-# ifdef __USE_XOPEN_EXTENDED
-/* `si_code' values for SIGTRAP signal.  */
-enum
-{
-  TRAP_BRKPT = 1,              /* Process breakpoint.  */
-#  define TRAP_BRKPT   TRAP_BRKPT
-  TRAP_TRACE                   /* Process trace trap.  */
-#  define TRAP_TRACE   TRAP_TRACE
-};
-# endif
-
-# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
-/* `si_code' values for SIGCHLD signal.  */
-enum
-{
-  CLD_EXITED = 1,              /* Child has exited.  */
-#  define CLD_EXITED   CLD_EXITED
-  CLD_KILLED,                  /* Child was killed.  */
-#  define CLD_KILLED   CLD_KILLED
-  CLD_DUMPED,                  /* Child terminated abnormally.  */
-#  define CLD_DUMPED   CLD_DUMPED
-  CLD_TRAPPED,                 /* Traced child has trapped.  */
-#  define CLD_TRAPPED  CLD_TRAPPED
-  CLD_STOPPED,                 /* Child has stopped.  */
-#  define CLD_STOPPED  CLD_STOPPED
-  CLD_CONTINUED                        /* Stopped child has continued.  */
-#  define CLD_CONTINUED        CLD_CONTINUED
-};
-
-/* `si_code' values for SIGPOLL signal.  */
-enum
-{
-  POLL_IN = 1,                 /* Data input available.  */
-#  define POLL_IN      POLL_IN
-  POLL_OUT,                    /* Output buffers available.  */
-#  define POLL_OUT     POLL_OUT
-  POLL_MSG,                    /* Input message available.   */
-#  define POLL_MSG     POLL_MSG
-  POLL_ERR,                    /* I/O error.  */
-#  define POLL_ERR     POLL_ERR
-  POLL_PRI,                    /* High priority input available.  */
-#  define POLL_PRI     POLL_PRI
-  POLL_HUP                     /* Device disconnected.  */
-#  define POLL_HUP     POLL_HUP
-};
-# endif
-
-# undef __need_siginfo_t
-#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t).  */
-
-
-#if (defined _SIGNAL_H || defined __need_sigevent_t) \
-    && !defined __have_sigevent_t
-# define __have_sigevent_t     1
-
-/* Structure to transport application-defined values with signals.  */
-# define __SIGEV_MAX_SIZE      64
-# if __WORDSIZE == 64
-#  define __SIGEV_PAD_SIZE     ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
-# else
-#  define __SIGEV_PAD_SIZE     ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
-# endif
-
-/* Forward declaration.  */
-# ifndef __have_pthread_attr_t
-typedef union pthread_attr_t pthread_attr_t;
-#  define __have_pthread_attr_t        1
-# endif
-
-typedef struct sigevent
-  {
-    sigval_t sigev_value;
-    int sigev_signo;
-    int sigev_notify;
-
-    union
-      {
-       int _pad[__SIGEV_PAD_SIZE];
-
-       /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
-          thread to receive the signal.  */
-       __pid_t _tid;
-
-       struct
-         {
-           void (*_function) (sigval_t);       /* Function to start.  */
-           pthread_attr_t *_attribute;         /* Thread attributes.  */
-         } _sigev_thread;
-      } _sigev_un;
-  } sigevent_t;
-
-/* POSIX names to access some of the members.  */
-# define sigev_notify_function   _sigev_un._sigev_thread._function
-# define sigev_notify_attributes _sigev_un._sigev_thread._attribute
-
-/* `sigev_notify' values.  */
-enum
-{
-  SIGEV_SIGNAL = 0,            /* Notify via signal.  */
-# define SIGEV_SIGNAL  SIGEV_SIGNAL
-  SIGEV_NONE,                  /* Other notification: meaningless.  */
-# define SIGEV_NONE    SIGEV_NONE
-  SIGEV_THREAD,                        /* Deliver via thread creation.  */
-# define SIGEV_THREAD  SIGEV_THREAD
-
-  SIGEV_THREAD_ID = 4          /* Send signal to specific thread.  */
-#define SIGEV_THREAD_ID        SIGEV_THREAD_ID
-};
-
-#endif /* have _SIGNAL_H.  */
index 8fc2f13..4a40e57 100644 (file)
@@ -24,6 +24,7 @@
 
 /* We need the signal context definitions even if they are not exposed
    by <signal.h>.  */
+#include <bits/types/__sigset_t.h>
 #include <bits/sigcontext.h>
 #include <bits/sigstack.h>
 #include <bits/types/struct_sigstack.h>
diff --git a/sysdeps/unix/sysv/linux/x86/bits/siginfo-arch.h b/sysdeps/unix/sysv/linux/x86/bits/siginfo-arch.h
new file mode 100644 (file)
index 0000000..6c85dbb
--- /dev/null
@@ -0,0 +1,19 @@
+/* Architecture-specific adjustments to siginfo_t.  x86 version.  */
+#ifndef _BITS_SIGINFO_ARCH_H
+#define _BITS_SIGINFO_ARCH_H 1
+
+#if defined __x86_64__ && __WORDSIZE == 32
+/* si_utime and si_stime must be 4 byte aligned for x32 to match the
+   kernel.  We align siginfo_t to 8 bytes so that si_utime and
+   si_stime are actually aligned to 8 bytes since their offsets are
+   multiple of 8 bytes.  Note: with some compilers, the alignment
+   attribute would be ignored if it were put in __SI_CLOCK_T instead
+   of encapsulated in a typedef.  */
+typedef __clock_t __attribute__ ((__aligned__ (4))) __sigchld_clock_t;
+# undef  __SI_ALIGNMENT
+# define __SI_ALIGNMENT __attribute__ ((__aligned__ (8)))
+# undef  __SI_CLOCK_T
+# define __SI_CLOCK_T __sigchld_clock_t
+#endif
+
+#endif
diff --git a/sysdeps/unix/sysv/linux/x86/bits/siginfo.h b/sysdeps/unix/sysv/linux/x86/bits/siginfo.h
deleted file mode 100644 (file)
index 5693599..0000000
+++ /dev/null
@@ -1,360 +0,0 @@
-/* siginfo_t, sigevent and constants.  Linux x86-64 version.
-   Copyright (C) 2012-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if !defined _SIGNAL_H && !defined __need_siginfo_t \
-    && !defined __need_sigevent_t
-# error "Never include this file directly.  Use <signal.h> instead"
-#endif
-
-#include <bits/wordsize.h>
-
-#if (!defined __have_sigval_t \
-     && (defined _SIGNAL_H || defined __need_siginfo_t \
-        || defined __need_sigevent_t))
-# define __have_sigval_t       1
-
-/* Type for data associated with a signal.  */
-typedef union sigval
-  {
-    int sival_int;
-    void *sival_ptr;
-  } sigval_t;
-#endif
-
-#if (!defined __have_siginfo_t \
-     && (defined _SIGNAL_H || defined __need_siginfo_t))
-# define __have_siginfo_t      1
-
-# define __SI_MAX_SIZE     128
-# if __WORDSIZE == 64
-#  define __SI_PAD_SIZE     ((__SI_MAX_SIZE / sizeof (int)) - 4)
-# else
-#  define __SI_PAD_SIZE     ((__SI_MAX_SIZE / sizeof (int)) - 3)
-# endif
-
-# if defined __x86_64__ && __WORDSIZE == 32
-/* si_utime and si_stime must be 4 byte aligned for x32 to match the
-   kernel.  We align siginfo_t to 8 bytes so that si_utime and si_stime
-   are actually aligned to 8 bytes since their offsets are multiple of
-   8 bytes.  */
-typedef __clock_t __attribute__ ((__aligned__ (4))) __sigchld_clock_t;
-#  define __SI_ALIGNMENT __attribute__ ((__aligned__ (8)))
-# else
-typedef __clock_t __sigchld_clock_t;
-#  define __SI_ALIGNMENT
-# endif
-
-typedef struct
-  {
-    int si_signo;              /* Signal number.  */
-    int si_errno;              /* If non-zero, an errno value associated with
-                                  this signal, as defined in <errno.h>.  */
-    int si_code;               /* Signal code.  */
-
-    union
-      {
-       int _pad[__SI_PAD_SIZE];
-
-        /* kill().  */
-       struct
-         {
-           __pid_t si_pid;     /* Sending process ID.  */
-           __uid_t si_uid;     /* Real user ID of sending process.  */
-         } _kill;
-
-       /* POSIX.1b timers.  */
-       struct
-         {
-           int si_tid;         /* Timer ID.  */
-           int si_overrun;     /* Overrun count.  */
-           sigval_t si_sigval; /* Signal value.  */
-         } _timer;
-
-       /* POSIX.1b signals.  */
-       struct
-         {
-           __pid_t si_pid;     /* Sending process ID.  */
-           __uid_t si_uid;     /* Real user ID of sending process.  */
-           sigval_t si_sigval; /* Signal value.  */
-         } _rt;
-
-       /* SIGCHLD.  */
-       struct
-         {
-           __pid_t si_pid;     /* Which child.  */
-           __uid_t si_uid;     /* Real user ID of sending process.  */
-           int si_status;      /* Exit value or signal.  */
-           __sigchld_clock_t si_utime;
-           __sigchld_clock_t si_stime;
-         } _sigchld;
-
-       /* SIGILL, SIGFPE, SIGSEGV, SIGBUS.  */
-       struct
-         {
-           void *si_addr;      /* Faulting insn/memory ref.  */
-           short int si_addr_lsb;      /* Valid LSB of the reported address.  */
-           struct
-             {
-               void *_lower;
-               void *_upper;
-             } si_addr_bnd;
-         } _sigfault;
-
-       /* SIGPOLL.  */
-       struct
-         {
-           long int si_band;   /* Band event for SIGPOLL.  */
-           int si_fd;
-         } _sigpoll;
-
-       /* SIGSYS.  */
-       struct
-         {
-           void *_call_addr;   /* Calling user insn.  */
-           int _syscall;       /* Triggering system call number.  */
-           unsigned int _arch; /* AUDIT_ARCH_* of syscall.  */
-         } _sigsys;
-      } _sifields;
-  } siginfo_t __SI_ALIGNMENT;
-
-
-/* X/Open requires some more fields with fixed names.  */
-# define si_pid                _sifields._kill.si_pid
-# define si_uid                _sifields._kill.si_uid
-# define si_timerid    _sifields._timer.si_tid
-# define si_overrun    _sifields._timer.si_overrun
-# define si_status     _sifields._sigchld.si_status
-# define si_utime      _sifields._sigchld.si_utime
-# define si_stime      _sifields._sigchld.si_stime
-# define si_value      _sifields._rt.si_sigval
-# define si_int                _sifields._rt.si_sigval.sival_int
-# define si_ptr                _sifields._rt.si_sigval.sival_ptr
-# define si_addr       _sifields._sigfault.si_addr
-# define si_addr_lsb   _sifields._sigfault.si_addr_lsb
-# define si_lower      _sifields._sigfault.si_addr_bnd._lower
-# define si_upper      _sifields._sigfault.si_addr_bnd._upper
-# define si_band       _sifields._sigpoll.si_band
-# define si_fd         _sifields._sigpoll.si_fd
-# define si_call_addr  _sifields._sigsys._call_addr
-# define si_syscall    _sifields._sigsys._syscall
-# define si_arch       _sifields._sigsys._arch
-
-
-/* Values for `si_code'.  Positive values are reserved for kernel-generated
-   signals.  */
-enum
-{
-  SI_ASYNCNL = -60,            /* Sent by asynch name lookup completion.  */
-# define SI_ASYNCNL    SI_ASYNCNL
-  SI_TKILL = -6,               /* Sent by tkill.  */
-# define SI_TKILL      SI_TKILL
-  SI_SIGIO,                    /* Sent by queued SIGIO. */
-# define SI_SIGIO      SI_SIGIO
-  SI_ASYNCIO,                  /* Sent by AIO completion.  */
-# define SI_ASYNCIO    SI_ASYNCIO
-  SI_MESGQ,                    /* Sent by real time mesq state change.  */
-# define SI_MESGQ      SI_MESGQ
-  SI_TIMER,                    /* Sent by timer expiration.  */
-# define SI_TIMER      SI_TIMER
-  SI_QUEUE,                    /* Sent by sigqueue.  */
-# define SI_QUEUE      SI_QUEUE
-  SI_USER,                     /* Sent by kill, sigsend.  */
-# define SI_USER       SI_USER
-  SI_KERNEL = 0x80             /* Send by kernel.  */
-#define SI_KERNEL      SI_KERNEL
-};
-
-
-# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
-/* `si_code' values for SIGILL signal.  */
-enum
-{
-  ILL_ILLOPC = 1,              /* Illegal opcode.  */
-#  define ILL_ILLOPC   ILL_ILLOPC
-  ILL_ILLOPN,                  /* Illegal operand.  */
-#  define ILL_ILLOPN   ILL_ILLOPN
-  ILL_ILLADR,                  /* Illegal addressing mode.  */
-#  define ILL_ILLADR   ILL_ILLADR
-  ILL_ILLTRP,                  /* Illegal trap. */
-#  define ILL_ILLTRP   ILL_ILLTRP
-  ILL_PRVOPC,                  /* Privileged opcode.  */
-#  define ILL_PRVOPC   ILL_PRVOPC
-  ILL_PRVREG,                  /* Privileged register.  */
-#  define ILL_PRVREG   ILL_PRVREG
-  ILL_COPROC,                  /* Coprocessor error.  */
-#  define ILL_COPROC   ILL_COPROC
-  ILL_BADSTK                   /* Internal stack error.  */
-#  define ILL_BADSTK   ILL_BADSTK
-};
-
-/* `si_code' values for SIGFPE signal.  */
-enum
-{
-  FPE_INTDIV = 1,              /* Integer divide by zero.  */
-#  define FPE_INTDIV   FPE_INTDIV
-  FPE_INTOVF,                  /* Integer overflow.  */
-#  define FPE_INTOVF   FPE_INTOVF
-  FPE_FLTDIV,                  /* Floating point divide by zero.  */
-#  define FPE_FLTDIV   FPE_FLTDIV
-  FPE_FLTOVF,                  /* Floating point overflow.  */
-#  define FPE_FLTOVF   FPE_FLTOVF
-  FPE_FLTUND,                  /* Floating point underflow.  */
-#  define FPE_FLTUND   FPE_FLTUND
-  FPE_FLTRES,                  /* Floating point inexact result.  */
-#  define FPE_FLTRES   FPE_FLTRES
-  FPE_FLTINV,                  /* Floating point invalid operation.  */
-#  define FPE_FLTINV   FPE_FLTINV
-  FPE_FLTSUB                   /* Subscript out of range.  */
-#  define FPE_FLTSUB   FPE_FLTSUB
-};
-
-/* `si_code' values for SIGSEGV signal.  */
-enum
-{
-  SEGV_MAPERR = 1,             /* Address not mapped to object.  */
-#  define SEGV_MAPERR  SEGV_MAPERR
-  SEGV_ACCERR                  /* Invalid permissions for mapped object.  */
-#  define SEGV_ACCERR  SEGV_ACCERR
-};
-
-/* `si_code' values for SIGBUS signal.  */
-enum
-{
-  BUS_ADRALN = 1,              /* Invalid address alignment.  */
-#  define BUS_ADRALN   BUS_ADRALN
-  BUS_ADRERR,                  /* Non-existant physical address.  */
-#  define BUS_ADRERR   BUS_ADRERR
-  BUS_OBJERR,                  /* Object specific hardware error.  */
-#  define BUS_OBJERR   BUS_OBJERR
-  BUS_MCEERR_AR,               /* Hardware memory error: action required.  */
-#  define BUS_MCEERR_AR        BUS_MCEERR_AR
-  BUS_MCEERR_AO                        /* Hardware memory error: action optional.  */
-#  define BUS_MCEERR_AO        BUS_MCEERR_AO
-};
-# endif
-
-# ifdef __USE_XOPEN_EXTENDED
-/* `si_code' values for SIGTRAP signal.  */
-enum
-{
-  TRAP_BRKPT = 1,              /* Process breakpoint.  */
-#  define TRAP_BRKPT   TRAP_BRKPT
-  TRAP_TRACE                   /* Process trace trap.  */
-#  define TRAP_TRACE   TRAP_TRACE
-};
-# endif
-
-# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
-/* `si_code' values for SIGCHLD signal.  */
-enum
-{
-  CLD_EXITED = 1,              /* Child has exited.  */
-#  define CLD_EXITED   CLD_EXITED
-  CLD_KILLED,                  /* Child was killed.  */
-#  define CLD_KILLED   CLD_KILLED
-  CLD_DUMPED,                  /* Child terminated abnormally.  */
-#  define CLD_DUMPED   CLD_DUMPED
-  CLD_TRAPPED,                 /* Traced child has trapped.  */
-#  define CLD_TRAPPED  CLD_TRAPPED
-  CLD_STOPPED,                 /* Child has stopped.  */
-#  define CLD_STOPPED  CLD_STOPPED
-  CLD_CONTINUED                        /* Stopped child has continued.  */
-#  define CLD_CONTINUED        CLD_CONTINUED
-};
-
-/* `si_code' values for SIGPOLL signal.  */
-enum
-{
-  POLL_IN = 1,                 /* Data input available.  */
-#  define POLL_IN      POLL_IN
-  POLL_OUT,                    /* Output buffers available.  */
-#  define POLL_OUT     POLL_OUT
-  POLL_MSG,                    /* Input message available.   */
-#  define POLL_MSG     POLL_MSG
-  POLL_ERR,                    /* I/O error.  */
-#  define POLL_ERR     POLL_ERR
-  POLL_PRI,                    /* High priority input available.  */
-#  define POLL_PRI     POLL_PRI
-  POLL_HUP                     /* Device disconnected.  */
-#  define POLL_HUP     POLL_HUP
-};
-# endif
-
-# undef __need_siginfo_t
-#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t).  */
-
-
-#if (defined _SIGNAL_H || defined __need_sigevent_t) \
-    && !defined __have_sigevent_t
-# define __have_sigevent_t     1
-
-/* Structure to transport application-defined values with signals.  */
-# define __SIGEV_MAX_SIZE      64
-# if __WORDSIZE == 64
-#  define __SIGEV_PAD_SIZE     ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
-# else
-#  define __SIGEV_PAD_SIZE     ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
-# endif
-
-/* Forward declaration.  */
-# ifndef __have_pthread_attr_t
-typedef union pthread_attr_t pthread_attr_t;
-#  define __have_pthread_attr_t        1
-# endif
-
-typedef struct sigevent
-  {
-    sigval_t sigev_value;
-    int sigev_signo;
-    int sigev_notify;
-
-    union
-      {
-       int _pad[__SIGEV_PAD_SIZE];
-
-       /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
-          thread to receive the signal.  */
-       __pid_t _tid;
-
-       struct
-         {
-           void (*_function) (sigval_t);       /* Function to start.  */
-           pthread_attr_t *_attribute;         /* Thread attributes.  */
-         } _sigev_thread;
-      } _sigev_un;
-  } sigevent_t;
-
-/* POSIX names to access some of the members.  */
-# define sigev_notify_function   _sigev_un._sigev_thread._function
-# define sigev_notify_attributes _sigev_un._sigev_thread._attribute
-
-/* `sigev_notify' values.  */
-enum
-{
-  SIGEV_SIGNAL = 0,            /* Notify via signal.  */
-# define SIGEV_SIGNAL  SIGEV_SIGNAL
-  SIGEV_NONE,                  /* Other notification: meaningless.  */
-# define SIGEV_NONE    SIGEV_NONE
-  SIGEV_THREAD,                        /* Deliver via thread creation.  */
-# define SIGEV_THREAD  SIGEV_THREAD
-
-  SIGEV_THREAD_ID = 4          /* Send signal to specific thread.  */
-#define SIGEV_THREAD_ID        SIGEV_THREAD_ID
-};
-
-#endif /* have _SIGNAL_H.  */
index 5dd72ac..60a3edf 100644 (file)
@@ -23,6 +23,7 @@
 
 /* We need the signal context definitions even if they are not exposed
    by <signal.h>.  */
+#include <bits/types/__sigset_t.h>
 #include <bits/sigcontext.h>
 #include <bits/sigstack.h>
 #include <bits/types/struct_sigstack.h>