about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2017-05-23 11:49:48 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-05-23 11:49:48 +0000
commitcfed8ece799b6e6540193a14b41d9de52dc3b08f (patch)
treea19540c22cdece934b1a6082bae5f53a3a647cd1
parent231a59ce2c5719d2d77752c21092960e28837b4a (diff)
downloadglibc-cfed8ece799b6e6540193a14b41d9de52dc3b08f.tar.gz
glibc-cfed8ece799b6e6540193a14b41d9de52dc3b08f.tar.xz
glibc-cfed8ece799b6e6540193a14b41d9de52dc3b08f.zip
Fix sys/ucontext.h namespace from signal.h etc. inclusion (bug 21457).
The various sys/ucontext.h headers include <signal.h> and all the
headers split out of <bits/sigstack.h>.  (Except that the powerpc
version does not include <signal.h>.)

None of the standard versions defining ucontext.h require or permit
such inclusions; rather, they all say that the stack_t and sigset_t
types from signal.h are defined.  This patch fixes the headers to
include just the bits/ headers for those types (and the existing
includes of bits/sigcontext.h).  Since bits/types/sigset_t.h is now
being included instead of bits/types/__sigset_t.h, __sigset_t uses in
the headers are replaced by direct use of the public sigset_t type.
sysdeps/unix/sysv/linux/x86/bits/sigcontext.h was relying on the prior
inclusion of <signal.h> to define types such as __uint32_t, so gets a
bits/types.h include added to provide those types.

Although one could keep some or all of the includes under a __USE_MISC
conditional, that seems unnecessary to me, especially given the lack
of a <signal.h> include in the powerpc version meaning that portable
programs already cannot rely on such an include.

Tested for x86_64 and x86, and with build-many-glibcs.py.  As with
other such fixes, more namespace issues remain so this does not permit
any XFAILs to be removed or bugs to be closed.

	[BZ #21457]
	* sysdeps/arm/sys/ucontext.h: Do not include <signal.h>,
	<bits/sigstack.h>, <bits/types/struct_sigstack.h> or
	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
	<bits/types/__sigset_t.h>.
	(ucontext_t): Use sigset_t instead of __sigset_t.
	* sysdeps/generic/sys/ucontext.h: Do not include <signal.h>,
	<bits/sigstack.h>, <bits/types/struct_sigstack.h> or
	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
	<bits/types/__sigset_t.h>.
	(ucontext_t): Use sigset_t instead of __sigset_t.
	* sysdeps/i386/sys/ucontext.h: Do not include <signal.h>,
	<bits/sigstack.h>, <bits/types/struct_sigstack.h> or
	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
	<bits/types/__sigset_t.h>.
	(ucontext_t): Use sigset_t instead of __sigset_t.
	* sysdeps/m68k/sys/ucontext.h: Do not include <signal.h>,
	<bits/sigstack.h>, <bits/types/struct_sigstack.h> or
	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
	<bits/types/__sigset_t.h>.
	(ucontext_t): Use sigset_t instead of __sigset_t.
	* sysdeps/mips/sys/ucontext.h: Do not include <signal.h>,
	<bits/sigstack.h>, <bits/types/struct_sigstack.h> or
	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
	<bits/types/__sigset_t.h>.
	(ucontext_t): Use sigset_t instead of __sigset_t.
	* sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h: Do not include
	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
	<bits/types/__sigset_t.h>.
	(ucontext_t): Use sigset_t instead of __sigset_t.
	* sysdeps/unix/sysv/linux/alpha/sys/ucontext.h: Do not include
	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
	<bits/types/__sigset_t.h>.
	(ucontext_t): Use sigset_t instead of __sigset_t.
	* sysdeps/unix/sysv/linux/arm/sys/ucontext.h: Do not include
	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
	<bits/types/__sigset_t.h>.
	(ucontext_t): Use sigset_t instead of __sigset_t.
	* sysdeps/unix/sysv/linux/hppa/sys/ucontext.h: Do not include
	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
	<bits/types/__sigset_t.h>.
	(ucontext_t): Use sigset_t instead of __sigset_t.
	* sysdeps/unix/sysv/linux/ia64/sys/ucontext.h: Do not include
	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h>.
	* sysdeps/unix/sysv/linux/m68k/sys/ucontext.h: Do not include
	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
	<bits/types/__sigset_t.h>.
	(ucontext_t): Use sigset_t instead of __sigset_t.
	* sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Do not include
	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
	<bits/types/__sigset_t.h>.
	(ucontext_t): Use sigset_t instead of __sigset_t.
	* sysdeps/unix/sysv/linux/nios2/sys/ucontext.h: Do not include
	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
	<bits/types/__sigset_t.h>.
	(ucontext_t): Use sigset_t instead of __sigset_t.
	* sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h: Do not include
	<bits/sigstack.h>, <bits/types/struct_sigstack.h> or
	<bits/ss_flags.h>.
	* sysdeps/unix/sysv/linux/s390/sys/ucontext.h: Do not include
	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
	<bits/types/__sigset_t.h>.
	(ucontext_t): Use sigset_t instead of __sigset_t.
	* sysdeps/unix/sysv/linux/sh/sys/ucontext.h: Do not include
	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
	<bits/types/__sigset_t.h>.
	(ucontext_t): Use sigset_t instead of __sigset_t.
	* sysdeps/unix/sysv/linux/sparc/sys/ucontext.h: Do not include
	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
	<bits/types/__sigset_t.h>.
	(ucontext_t): Use sigset_t instead of __sigset_t.
	* sysdeps/unix/sysv/linux/tile/sys/ucontext.h: Do not include
	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
	<bits/types/__sigset_t.h>.
	(ucontext_t): Use sigset_t instead of __sigset_t.
	* sysdeps/unix/sysv/linux/x86/bits/sigcontext.h: Include
	<bits/types.h>.
	* sysdeps/unix/sysv/linux/x86/sys/ucontext.h: Do not include
	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
	<bits/types/__sigset_t.h>.
	(ucontext_t): Use sigset_t instead of __sigset_t.
-rw-r--r--ChangeLog97
-rw-r--r--sysdeps/arm/sys/ucontext.h10
-rw-r--r--sysdeps/generic/sys/ucontext.h10
-rw-r--r--sysdeps/i386/sys/ucontext.h10
-rw-r--r--sysdeps/m68k/sys/ucontext.h10
-rw-r--r--sysdeps/mips/sys/ucontext.h10
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h10
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sys/ucontext.h10
-rw-r--r--sysdeps/unix/sysv/linux/arm/sys/ucontext.h10
-rw-r--r--sysdeps/unix/sysv/linux/hppa/sys/ucontext.h10
-rw-r--r--sysdeps/unix/sysv/linux/ia64/sys/ucontext.h7
-rw-r--r--sysdeps/unix/sysv/linux/m68k/sys/ucontext.h10
-rw-r--r--sysdeps/unix/sysv/linux/mips/sys/ucontext.h10
-rw-r--r--sysdeps/unix/sysv/linux/nios2/sys/ucontext.h10
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h5
-rw-r--r--sysdeps/unix/sysv/linux/s390/sys/ucontext.h10
-rw-r--r--sysdeps/unix/sysv/linux/sh/sys/ucontext.h10
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sys/ucontext.h12
-rw-r--r--sysdeps/unix/sysv/linux/tile/sys/ucontext.h10
-rw-r--r--sysdeps/unix/sysv/linux/x86/bits/sigcontext.h2
-rw-r--r--sysdeps/unix/sysv/linux/x86/sys/ucontext.h12
21 files changed, 136 insertions, 149 deletions
diff --git a/ChangeLog b/ChangeLog
index f432020496..85722c8f86 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,100 @@
+2017-05-23  Joseph Myers  <joseph@codesourcery.com>
+
+	[BZ #21457]
+	* sysdeps/arm/sys/ucontext.h: Do not include <signal.h>,
+	<bits/sigstack.h>, <bits/types/struct_sigstack.h> or
+	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
+	<bits/types/__sigset_t.h>.
+	(ucontext_t): Use sigset_t instead of __sigset_t.
+	* sysdeps/generic/sys/ucontext.h: Do not include <signal.h>,
+	<bits/sigstack.h>, <bits/types/struct_sigstack.h> or
+	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
+	<bits/types/__sigset_t.h>.
+	(ucontext_t): Use sigset_t instead of __sigset_t.
+	* sysdeps/i386/sys/ucontext.h: Do not include <signal.h>,
+	<bits/sigstack.h>, <bits/types/struct_sigstack.h> or
+	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
+	<bits/types/__sigset_t.h>.
+	(ucontext_t): Use sigset_t instead of __sigset_t.
+	* sysdeps/m68k/sys/ucontext.h: Do not include <signal.h>,
+	<bits/sigstack.h>, <bits/types/struct_sigstack.h> or
+	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
+	<bits/types/__sigset_t.h>.
+	(ucontext_t): Use sigset_t instead of __sigset_t.
+	* sysdeps/mips/sys/ucontext.h: Do not include <signal.h>,
+	<bits/sigstack.h>, <bits/types/struct_sigstack.h> or
+	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
+	<bits/types/__sigset_t.h>.
+	(ucontext_t): Use sigset_t instead of __sigset_t.
+	* sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h: Do not include
+	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
+	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
+	<bits/types/__sigset_t.h>.
+	(ucontext_t): Use sigset_t instead of __sigset_t.
+	* sysdeps/unix/sysv/linux/alpha/sys/ucontext.h: Do not include
+	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
+	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
+	<bits/types/__sigset_t.h>.
+	(ucontext_t): Use sigset_t instead of __sigset_t.
+	* sysdeps/unix/sysv/linux/arm/sys/ucontext.h: Do not include
+	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
+	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
+	<bits/types/__sigset_t.h>.
+	(ucontext_t): Use sigset_t instead of __sigset_t.
+	* sysdeps/unix/sysv/linux/hppa/sys/ucontext.h: Do not include
+	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
+	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
+	<bits/types/__sigset_t.h>.
+	(ucontext_t): Use sigset_t instead of __sigset_t.
+	* sysdeps/unix/sysv/linux/ia64/sys/ucontext.h: Do not include
+	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
+	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h>.
+	* sysdeps/unix/sysv/linux/m68k/sys/ucontext.h: Do not include
+	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
+	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
+	<bits/types/__sigset_t.h>.
+	(ucontext_t): Use sigset_t instead of __sigset_t.
+	* sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Do not include
+	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
+	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
+	<bits/types/__sigset_t.h>.
+	(ucontext_t): Use sigset_t instead of __sigset_t.
+	* sysdeps/unix/sysv/linux/nios2/sys/ucontext.h: Do not include
+	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
+	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
+	<bits/types/__sigset_t.h>.
+	(ucontext_t): Use sigset_t instead of __sigset_t.
+	* sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h: Do not include
+	<bits/sigstack.h>, <bits/types/struct_sigstack.h> or
+	<bits/ss_flags.h>.
+	* sysdeps/unix/sysv/linux/s390/sys/ucontext.h: Do not include
+	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
+	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
+	<bits/types/__sigset_t.h>.
+	(ucontext_t): Use sigset_t instead of __sigset_t.
+	* sysdeps/unix/sysv/linux/sh/sys/ucontext.h: Do not include
+	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
+	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
+	<bits/types/__sigset_t.h>.
+	(ucontext_t): Use sigset_t instead of __sigset_t.
+	* sysdeps/unix/sysv/linux/sparc/sys/ucontext.h: Do not include
+	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
+	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
+	<bits/types/__sigset_t.h>.
+	(ucontext_t): Use sigset_t instead of __sigset_t.
+	* sysdeps/unix/sysv/linux/tile/sys/ucontext.h: Do not include
+	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
+	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
+	<bits/types/__sigset_t.h>.
+	(ucontext_t): Use sigset_t instead of __sigset_t.
+	* sysdeps/unix/sysv/linux/x86/bits/sigcontext.h: Include
+	<bits/types.h>.
+	* sysdeps/unix/sysv/linux/x86/sys/ucontext.h: Do not include
+	<signal.h>, <bits/sigstack.h>, <bits/types/struct_sigstack.h> or
+	<bits/ss_flags.h>.  Include <bits/types/sigset_t.h> instead of
+	<bits/types/__sigset_t.h>.
+	(ucontext_t): Use sigset_t instead of __sigset_t.
+
 2017-05-22  Zack Weinberg  <zackw@panix.com>
 
 	* sysdeps/unix/sysv/linux/bits/siginfo-consts.h
diff --git a/sysdeps/arm/sys/ucontext.h b/sysdeps/arm/sys/ucontext.h
index bbfeb20bb5..37277f0811 100644
--- a/sysdeps/arm/sys/ucontext.h
+++ b/sysdeps/arm/sys/ucontext.h
@@ -21,16 +21,10 @@
 #define _SYS_UCONTEXT_H	1
 
 #include <features.h>
-#include <signal.h>
 
-/* We need the signal context definitions even if they are not exposed
-   by <signal.h>.  */
-#include <bits/types/__sigset_t.h>
+#include <bits/types/sigset_t.h>
 #include <bits/sigcontext.h>
-#include <bits/sigstack.h>
-#include <bits/types/struct_sigstack.h>
 #include <bits/types/stack_t.h>
-#include <bits/ss_flags.h>
 
 
 typedef int greg_t;
@@ -97,7 +91,7 @@ typedef struct ucontext
   {
     unsigned long int uc_flags;
     struct ucontext *uc_link;
-    __sigset_t uc_sigmask;
+    sigset_t uc_sigmask;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
     long int uc_filler[5];
diff --git a/sysdeps/generic/sys/ucontext.h b/sysdeps/generic/sys/ucontext.h
index a0602a7ad3..a64460c9ae 100644
--- a/sysdeps/generic/sys/ucontext.h
+++ b/sysdeps/generic/sys/ucontext.h
@@ -23,16 +23,10 @@
 #define _SYS_UCONTEXT_H	1
 
 #include <features.h>
-#include <signal.h>
 
-/* We need the signal context definitions even if they are not exposed
-   by <signal.h>.  */
-#include <bits/types/__sigset_t.h>
+#include <bits/types/sigset_t.h>
 #include <bits/sigcontext.h>
-#include <bits/sigstack.h>
-#include <bits/types/struct_sigstack.h>
 #include <bits/types/stack_t.h>
-#include <bits/ss_flags.h>
 
 
 typedef struct sigcontext mcontext_t;
@@ -44,7 +38,7 @@ typedef struct ucontext
     struct ucontext *uc_link;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
-    __sigset_t uc_sigmask;
+    sigset_t uc_sigmask;
   } ucontext_t;
 
 #endif /* sys/ucontext.h */
diff --git a/sysdeps/i386/sys/ucontext.h b/sysdeps/i386/sys/ucontext.h
index 92deea92ea..a6b936a4c8 100644
--- a/sysdeps/i386/sys/ucontext.h
+++ b/sysdeps/i386/sys/ucontext.h
@@ -21,16 +21,10 @@
 #define _SYS_UCONTEXT_H	1
 
 #include <features.h>
-#include <signal.h>
 
-/* We need the signal context definitions even if they are not exposed
-   by <signal.h>.  */
-#include <bits/types/__sigset_t.h>
+#include <bits/types/sigset_t.h>
 #include <bits/sigcontext.h>
-#include <bits/sigstack.h>
-#include <bits/types/struct_sigstack.h>
 #include <bits/types/stack_t.h>
-#include <bits/ss_flags.h>
 
 
 /* Type for general register.  */
@@ -122,7 +116,7 @@ typedef struct ucontext
   {
     unsigned long int uc_flags;
     struct ucontext *uc_link;
-    __sigset_t uc_sigmask;
+    sigset_t uc_sigmask;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
     long int uc_filler[5];
diff --git a/sysdeps/m68k/sys/ucontext.h b/sysdeps/m68k/sys/ucontext.h
index 4f185ce63f..2b70e72fc4 100644
--- a/sysdeps/m68k/sys/ucontext.h
+++ b/sysdeps/m68k/sys/ucontext.h
@@ -21,16 +21,10 @@
 #define _SYS_UCONTEXT_H	1
 
 #include <features.h>
-#include <signal.h>
 
-/* We need the signal context definitions even if they are not exposed
-   by <signal.h>.  */
-#include <bits/types/__sigset_t.h>
+#include <bits/types/sigset_t.h>
 #include <bits/sigcontext.h>
-#include <bits/sigstack.h>
-#include <bits/types/struct_sigstack.h>
 #include <bits/types/stack_t.h>
-#include <bits/ss_flags.h>
 
 
 /* Type for general register.  */
@@ -112,7 +106,7 @@ typedef struct ucontext
 {
   unsigned long int uc_flags;
   struct ucontext *uc_link;
-  __sigset_t uc_sigmask;
+  sigset_t uc_sigmask;
   stack_t uc_stack;
   mcontext_t uc_mcontext;
   long int uc_filler[201];
diff --git a/sysdeps/mips/sys/ucontext.h b/sysdeps/mips/sys/ucontext.h
index 9c6f8f8221..ebc06099ac 100644
--- a/sysdeps/mips/sys/ucontext.h
+++ b/sysdeps/mips/sys/ucontext.h
@@ -21,16 +21,10 @@
 #define _SYS_UCONTEXT_H	1
 
 #include <features.h>
-#include <signal.h>
 
-/* We need the signal context definitions even if they are not exposed
-   by <signal.h>.  */
-#include <bits/types/__sigset_t.h>
+#include <bits/types/sigset_t.h>
 #include <bits/sigcontext.h>
-#include <bits/sigstack.h>
-#include <bits/types/struct_sigstack.h>
 #include <bits/types/stack_t.h>
-#include <bits/ss_flags.h>
 
 #include <sgidefs.h>
 
@@ -162,7 +156,7 @@ typedef struct ucontext
   __uint64_t uc_flags;
 #endif
   struct ucontext *uc_link;
-  __sigset_t uc_sigmask;
+  sigset_t uc_sigmask;
   stack_t uc_stack;
   mcontext_t uc_mcontext;
   int uc_filler[48];
diff --git a/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h b/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h
index 597f9eac2f..16c7acf221 100644
--- a/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h
@@ -22,16 +22,10 @@
 #define _SYS_UCONTEXT_H	1
 
 #include <features.h>
-#include <signal.h>
 
-/* We need the signal context definitions even if they are not exposed
-   by <signal.h>.  */
-#include <bits/types/__sigset_t.h>
+#include <bits/types/sigset_t.h>
 #include <bits/sigcontext.h>
-#include <bits/sigstack.h>
-#include <bits/types/struct_sigstack.h>
 #include <bits/types/stack_t.h>
-#include <bits/ss_flags.h>
 
 #ifdef __USE_MISC
 # include <sys/procfs.h>
@@ -58,7 +52,7 @@ typedef struct ucontext
     unsigned long uc_flags;
     struct ucontext *uc_link;
     stack_t uc_stack;
-    __sigset_t uc_sigmask;
+    sigset_t uc_sigmask;
     mcontext_t uc_mcontext;
   } ucontext_t;
 
diff --git a/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h b/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h
index 4491ff7c81..09e24a1f85 100644
--- a/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h
@@ -19,16 +19,10 @@
 #define _SYS_UCONTEXT_H	1
 
 #include <features.h>
-#include <signal.h>
 
-/* We need the signal context definitions even if they are not exposed
-   by <signal.h>.  */
-#include <bits/types/__sigset_t.h>
+#include <bits/types/sigset_t.h>
 #include <bits/sigcontext.h>
-#include <bits/sigstack.h>
-#include <bits/types/struct_sigstack.h>
 #include <bits/types/stack_t.h>
-#include <bits/ss_flags.h>
 
 
 /* Type for general register.  */
@@ -61,7 +55,7 @@ typedef struct ucontext
     unsigned long __uc_osf_sigmask;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
-    __sigset_t uc_sigmask;
+    sigset_t uc_sigmask;
   } ucontext_t;
 
 #endif /* sys/ucontext.h */
diff --git a/sysdeps/unix/sysv/linux/arm/sys/ucontext.h b/sysdeps/unix/sysv/linux/arm/sys/ucontext.h
index d7c7d9ec47..0ce9b14ba5 100644
--- a/sysdeps/unix/sysv/linux/arm/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/arm/sys/ucontext.h
@@ -21,16 +21,10 @@
 #define _SYS_UCONTEXT_H	1
 
 #include <features.h>
-#include <signal.h>
 
-/* We need the signal context definitions even if they are not exposed
-   by <signal.h>.  */
-#include <bits/types/__sigset_t.h>
+#include <bits/types/sigset_t.h>
 #include <bits/sigcontext.h>
-#include <bits/sigstack.h>
-#include <bits/types/struct_sigstack.h>
 #include <bits/types/stack_t.h>
-#include <bits/ss_flags.h>
 
 
 #ifdef __USE_MISC
@@ -113,7 +107,7 @@ typedef struct ucontext
     struct ucontext *uc_link;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
-    __sigset_t uc_sigmask;
+    sigset_t uc_sigmask;
     unsigned long uc_regspace[128] __attribute__((__aligned__(8)));
   } ucontext_t;
 
diff --git a/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h b/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h
index 79b99ff6a2..982b4c44c2 100644
--- a/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h
@@ -21,16 +21,10 @@
 #define _SYS_UCONTEXT_H	1
 
 #include <features.h>
-#include <signal.h>
 
-/* We need the signal context definitions even if they are not exposed
-   by <signal.h>.  */
-#include <bits/types/__sigset_t.h>
+#include <bits/types/sigset_t.h>
 #include <bits/sigcontext.h>
-#include <bits/sigstack.h>
-#include <bits/types/struct_sigstack.h>
 #include <bits/types/stack_t.h>
-#include <bits/ss_flags.h>
 
 
 #ifdef __USE_MISC
@@ -67,7 +61,7 @@ typedef struct ucontext
     struct ucontext *uc_link;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
-    __sigset_t uc_sigmask;
+    sigset_t uc_sigmask;
   } ucontext_t;
 
 #endif /* sys/ucontext.h */
diff --git a/sysdeps/unix/sysv/linux/ia64/sys/ucontext.h b/sysdeps/unix/sysv/linux/ia64/sys/ucontext.h
index 17474a55c7..5ed6929af4 100644
--- a/sysdeps/unix/sysv/linux/ia64/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/ia64/sys/ucontext.h
@@ -19,15 +19,10 @@
 #define _SYS_UCONTEXT_H	1
 
 #include <features.h>
-#include <signal.h>
 
-/* 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>
 #include <bits/types/stack_t.h>
-#include <bits/ss_flags.h>
 
 
 /*
diff --git a/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h b/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h
index 62dd96e9f2..0570ec3c3d 100644
--- a/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h
@@ -21,16 +21,10 @@
 #define _SYS_UCONTEXT_H	1
 
 #include <features.h>
-#include <signal.h>
 
-/* We need the signal context definitions even if they are not exposed
-   by <signal.h>.  */
-#include <bits/types/__sigset_t.h>
+#include <bits/types/sigset_t.h>
 #include <bits/sigcontext.h>
-#include <bits/sigstack.h>
-#include <bits/types/struct_sigstack.h>
 #include <bits/types/stack_t.h>
-#include <bits/ss_flags.h>
 
 
 /* Type for general register.  */
@@ -120,7 +114,7 @@ typedef struct ucontext
   stack_t uc_stack;
   mcontext_t uc_mcontext;
   unsigned long uc_filler[80];
-  __sigset_t uc_sigmask;
+  sigset_t uc_sigmask;
 } ucontext_t;
 
 #endif /* sys/ucontext.h */
diff --git a/sysdeps/unix/sysv/linux/mips/sys/ucontext.h b/sysdeps/unix/sysv/linux/mips/sys/ucontext.h
index 06b45a8726..d15d85dc64 100644
--- a/sysdeps/unix/sysv/linux/mips/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/mips/sys/ucontext.h
@@ -20,16 +20,10 @@
 #define _SYS_UCONTEXT_H	1
 
 #include <features.h>
-#include <signal.h>
 
-/* We need the signal context definitions even if they are not exposed
-   by <signal.h>.  */
-#include <bits/types/__sigset_t.h>
+#include <bits/types/sigset_t.h>
 #include <bits/sigcontext.h>
-#include <bits/sigstack.h>
-#include <bits/types/struct_sigstack.h>
 #include <bits/types/stack_t.h>
-#include <bits/ss_flags.h>
 
 #include <sgidefs.h>
 
@@ -113,7 +107,7 @@ typedef struct ucontext
     struct ucontext *uc_link;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
-    __sigset_t uc_sigmask;
+    sigset_t uc_sigmask;
   } ucontext_t;
 
 #endif /* sys/ucontext.h */
diff --git a/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h b/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h
index 7099b458d4..72ae1a05c7 100644
--- a/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h
@@ -22,16 +22,10 @@
 #define _SYS_UCONTEXT_H	1
 
 #include <features.h>
-#include <signal.h>
 
-/* We need the signal context definitions even if they are not exposed
-   by <signal.h>.  */
-#include <bits/types/__sigset_t.h>
+#include <bits/types/sigset_t.h>
 #include <bits/sigcontext.h>
-#include <bits/sigstack.h>
-#include <bits/types/struct_sigstack.h>
 #include <bits/types/stack_t.h>
-#include <bits/ss_flags.h>
 
 
 /* These definitions must be in sync with the kernel.  */
@@ -54,7 +48,7 @@ typedef struct ucontext
     struct ucontext *uc_link;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
-    __sigset_t uc_sigmask;
+    sigset_t uc_sigmask;
   } ucontext_t;
 
 #endif /* sys/ucontext.h */
diff --git a/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h b/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
index d91a5ac59f..c10741cf53 100644
--- a/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
@@ -20,14 +20,9 @@
 
 #include <features.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>
 
 
 #if __WORDSIZE == 32
diff --git a/sysdeps/unix/sysv/linux/s390/sys/ucontext.h b/sysdeps/unix/sysv/linux/s390/sys/ucontext.h
index fcbd48ddad..80410fa38c 100644
--- a/sysdeps/unix/sysv/linux/s390/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/s390/sys/ucontext.h
@@ -20,16 +20,10 @@
 #define _SYS_UCONTEXT_H	1
 
 #include <features.h>
-#include <signal.h>
 
-/* We need the signal context definitions even if they are not exposed
-   by in <signal.h>.  */
-#include <bits/types/__sigset_t.h>
+#include <bits/types/sigset_t.h>
 #include <bits/sigcontext.h>
-#include <bits/sigstack.h>
-#include <bits/types/struct_sigstack.h>
 #include <bits/types/stack_t.h>
-#include <bits/ss_flags.h>
 
 
 /* Type for a program status word.  */
@@ -84,7 +78,7 @@ typedef struct ucontext
     struct ucontext *uc_link;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
-    __sigset_t uc_sigmask;
+    sigset_t uc_sigmask;
   } ucontext_t;
 
 
diff --git a/sysdeps/unix/sysv/linux/sh/sys/ucontext.h b/sysdeps/unix/sysv/linux/sh/sys/ucontext.h
index cefb918831..7444298957 100644
--- a/sysdeps/unix/sysv/linux/sh/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/sh/sys/ucontext.h
@@ -21,16 +21,10 @@
 #define _SYS_UCONTEXT_H	1
 
 #include <features.h>
-#include <signal.h>
 
-/* We need the signal context definitions even if they are not exposed
-   by <signal.h>.  */
-#include <bits/types/__sigset_t.h>
+#include <bits/types/sigset_t.h>
 #include <bits/sigcontext.h>
-#include <bits/sigstack.h>
-#include <bits/types/struct_sigstack.h>
 #include <bits/types/stack_t.h>
-#include <bits/ss_flags.h>
 
 
 typedef int greg_t;
@@ -113,7 +107,7 @@ typedef struct ucontext
     struct ucontext *uc_link;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
-    __sigset_t uc_sigmask;
+    sigset_t uc_sigmask;
   } ucontext_t;
 
 #endif /* sys/ucontext.h */
diff --git a/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h b/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h
index e859b79c9d..7ce5f2b881 100644
--- a/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h
@@ -19,16 +19,10 @@
 #define _SYS_UCONTEXT_H	1
 
 #include <features.h>
-#include <signal.h>
 
-/* We need the signal context definitions even if they are not exposed
-   by <signal.h>.  */
-#include <bits/types/__sigset_t.h>
+#include <bits/types/sigset_t.h>
 #include <bits/sigcontext.h>
-#include <bits/sigstack.h>
-#include <bits/types/struct_sigstack.h>
 #include <bits/types/stack_t.h>
-#include <bits/ss_flags.h>
 
 #include <bits/wordsize.h>
 
@@ -94,7 +88,7 @@ typedef struct ucontext {
 	unsigned long		__uc_sigmask;
 	mcontext_t		uc_mcontext;
 	stack_t			uc_stack;
-	__sigset_t		uc_sigmask;
+	sigset_t		uc_sigmask;
 } ucontext_t;
 
 #endif /* __WORDISIZE == 64 */
@@ -271,7 +265,7 @@ typedef struct ucontext
   {
     unsigned long   uc_flags;
     struct ucontext *uc_link;
-    __sigset_t	    uc_sigmask;
+    sigset_t	    uc_sigmask;
     stack_t         uc_stack;
     mcontext_t      uc_mcontext;
   } ucontext_t;
diff --git a/sysdeps/unix/sysv/linux/tile/sys/ucontext.h b/sysdeps/unix/sysv/linux/tile/sys/ucontext.h
index 4a40e5710f..7e5cf4a831 100644
--- a/sysdeps/unix/sysv/linux/tile/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/tile/sys/ucontext.h
@@ -20,16 +20,10 @@
 #define _SYS_UCONTEXT_H	1
 
 #include <features.h>
-#include <signal.h>
 
-/* We need the signal context definitions even if they are not exposed
-   by <signal.h>.  */
-#include <bits/types/__sigset_t.h>
+#include <bits/types/sigset_t.h>
 #include <bits/sigcontext.h>
-#include <bits/sigstack.h>
-#include <bits/types/struct_sigstack.h>
 #include <bits/types/stack_t.h>
-#include <bits/ss_flags.h>
 
 #ifdef __USE_MISC
 /* Get register type and register names. */
@@ -72,7 +66,7 @@ typedef struct ucontext
     struct ucontext *uc_link;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
-    __sigset_t uc_sigmask;
+    sigset_t uc_sigmask;
   } ucontext_t;
 
 #endif /* sys/ucontext.h */
diff --git a/sysdeps/unix/sysv/linux/x86/bits/sigcontext.h b/sysdeps/unix/sysv/linux/x86/bits/sigcontext.h
index bc692bcfb1..cff595b94a 100644
--- a/sysdeps/unix/sysv/linux/x86/bits/sigcontext.h
+++ b/sysdeps/unix/sysv/linux/x86/bits/sigcontext.h
@@ -22,6 +22,8 @@
 # error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
 #endif
 
+#include <bits/types.h>
+
 #define FP_XSTATE_MAGIC1	0x46505853U
 #define FP_XSTATE_MAGIC2	0x46505845U
 #define FP_XSTATE_MAGIC2_SIZE	sizeof(FP_XSTATE_MAGIC2)
diff --git a/sysdeps/unix/sysv/linux/x86/sys/ucontext.h b/sysdeps/unix/sysv/linux/x86/sys/ucontext.h
index 60a3edfea0..92a698e4b4 100644
--- a/sysdeps/unix/sysv/linux/x86/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/x86/sys/ucontext.h
@@ -19,16 +19,10 @@
 #define _SYS_UCONTEXT_H	1
 
 #include <features.h>
-#include <signal.h>
 
-/* We need the signal context definitions even if they are not exposed
-   by <signal.h>.  */
-#include <bits/types/__sigset_t.h>
+#include <bits/types/sigset_t.h>
 #include <bits/sigcontext.h>
-#include <bits/sigstack.h>
-#include <bits/types/struct_sigstack.h>
 #include <bits/types/stack_t.h>
-#include <bits/ss_flags.h>
 
 
 #ifdef __x86_64__
@@ -142,7 +136,7 @@ typedef struct ucontext
     struct ucontext *uc_link;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
-    __sigset_t uc_sigmask;
+    sigset_t uc_sigmask;
     struct _libc_fpstate __fpregs_mem;
   } ucontext_t;
 
@@ -243,7 +237,7 @@ typedef struct ucontext
     struct ucontext *uc_link;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
-    __sigset_t uc_sigmask;
+    sigset_t uc_sigmask;
     struct _libc_fpstate __fpregs_mem;
   } ucontext_t;