aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix
diff options
context:
space:
mode:
authorZack Weinberg <zackw@panix.com>2016-07-13 16:11:57 -0400
committerZack Weinberg <zackw@panix.com>2016-09-23 08:43:56 -0400
commitc66b29f9cce9bf7c67d55879dff5e4cd03ecfac1 (patch)
treeea38f75200f4a9d374ae7f3cf0ca5c7838c18c1c /sysdeps/unix
parent05b68e14b146586c46121730241142256f0ef850 (diff)
downloadglibc-c66b29f9cce9bf7c67d55879dff5e4cd03ecfac1.tar
glibc-c66b29f9cce9bf7c67d55879dff5e4cd03ecfac1.tar.gz
glibc-c66b29f9cce9bf7c67d55879dff5e4cd03ecfac1.tar.bz2
glibc-c66b29f9cce9bf7c67d55879dff5e4cd03ecfac1.zip
Installed-header hygiene (BZ#20366): stack_t.
sys/ucontext.h unconditionally uses stack_t, and it does not make sense to change that. But signal.h only declares stack_t under __USE_XOPEN_EXTENDED || __USE_XOPEN2K8. The actual definition is already in a bits header, bits/sigstack.h, but that header insists on only being included by signal.h, so we have to change that as well as all of the sys/ucontext.h variants. (Some but not all variants of bits/sigcontext.h, which sys/ucontext.h may also need, had already received this adjustment; for consistency, I made them all the same, even if that's not strictly necessary in some configurations.) bits/sigcontext.h and bits/sigstack.h also all need to receive multiple inclusion guards. * sysdeps/generic/sys/ucontext.h * sysdeps/arm/sys/ucontext.h * sysdeps/i386/sys/ucontext.h * sysdeps/m68k/sys/ucontext.h * sysdeps/mips/sys/ucontext.h * 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/hppa/sys/ucontext.h * sysdeps/unix/sysv/linux/ia64/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: Include both bits/sigcontext.h and bits/sigstack.h. Fix grammar error in comment, if present. * bits/sigstack.h * sysdeps/unix/sysv/linux/aarch64/bits/sigstack.h * sysdeps/unix/sysv/linux/alpha/bits/sigstack.h * sysdeps/unix/sysv/linux/bits/sigstack.h * sysdeps/unix/sysv/linux/ia64/bits/sigstack.h * sysdeps/unix/sysv/linux/mips/bits/sigstack.h * sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h * sysdeps/unix/sysv/linux/sparc/bits/sigstack.h * bits/sigcontext.h * sysdeps/mach/hurd/i386/bits/sigcontext.h * sysdeps/unix/sysv/linux/bits/sigcontext.h * sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h * sysdeps/unix/sysv/linux/sparc/bits/sigcontext.h: Add multiple inclusion guard. Permit inclusion by sys/ucontext.h as well as signal.h, if this was not already allowed. Request definition of size_t if necessary. Minimize semantically-null differences across files.
Diffstat (limited to 'sysdeps/unix')
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/bits/sigstack.h25
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h9
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/sigstack.h25
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sys/ucontext.h3
-rw-r--r--sysdeps/unix/sysv/linux/arm/sys/ucontext.h6
-rw-r--r--sysdeps/unix/sysv/linux/bits/sigcontext.h5
-rw-r--r--sysdeps/unix/sysv/linux/bits/sigstack.h25
-rw-r--r--sysdeps/unix/sysv/linux/hppa/sys/ucontext.h5
-rw-r--r--sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h6
-rw-r--r--sysdeps/unix/sysv/linux/ia64/bits/sigstack.h29
-rw-r--r--sysdeps/unix/sysv/linux/ia64/sys/ucontext.h4
-rw-r--r--sysdeps/unix/sysv/linux/m68k/sys/ucontext.h6
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/sigstack.h25
-rw-r--r--sysdeps/unix/sysv/linux/mips/sys/ucontext.h9
-rw-r--r--sysdeps/unix/sysv/linux/nios2/sys/ucontext.h6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h25
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h6
-rw-r--r--sysdeps/unix/sysv/linux/s390/sys/ucontext.h10
-rw-r--r--sysdeps/unix/sysv/linux/sh/sys/ucontext.h5
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/sigcontext.h5
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/sigstack.h25
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sys/ucontext.h7
-rw-r--r--sysdeps/unix/sysv/linux/tile/sys/ucontext.h6
-rw-r--r--sysdeps/unix/sysv/linux/x86/sys/ucontext.h6
24 files changed, 183 insertions, 100 deletions
diff --git a/sysdeps/unix/sysv/linux/aarch64/bits/sigstack.h b/sysdeps/unix/sysv/linux/aarch64/bits/sigstack.h
index 5b09b7c8c3..cb3e97d90d 100644
--- a/sysdeps/unix/sysv/linux/aarch64/bits/sigstack.h
+++ b/sysdeps/unix/sysv/linux/aarch64/bits/sigstack.h
@@ -16,10 +16,15 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SIGNAL_H
+#ifndef _BITS_SIGSTACK_H
+#define _BITS_SIGSTACK_H 1
+
+#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
# error "Never include this file directly. Use <signal.h> instead"
#endif
+#define __need_size_t
+#include <stddef.h>
/* Structure describing a signal stack (obsolete). */
struct sigstack
@@ -28,8 +33,15 @@ struct sigstack
int ss_onstack; /* Nonzero if executing on this stack. */
};
+/* Alternate, preferred interface. */
+typedef struct sigaltstack
+ {
+ void *ss_sp;
+ int ss_flags;
+ size_t ss_size;
+ } stack_t;
-/* Possible values for `ss_flags.'. */
+/* Possible values for `ss_flags'. */
enum
{
SS_ONSTACK = 1,
@@ -44,11 +56,4 @@ enum
/* System default stack size. */
#define SIGSTKSZ 16384
-
-/* Alternate, preferred interface. */
-typedef struct sigaltstack
- {
- void *ss_sp;
- int ss_flags;
- size_t ss_size;
- } stack_t;
+#endif /* bits/sigstack.h */
diff --git a/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h b/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h
index 01da3ca858..2e3e1ee87d 100644
--- a/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h
@@ -23,11 +23,14 @@
#include <features.h>
#include <signal.h>
-#include <sys/procfs.h>
-/* We need the signal context definitions even if they are not used
- included in <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 <sys/procfs.h>
+
typedef elf_greg_t greg_t;
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/sigstack.h b/sysdeps/unix/sysv/linux/alpha/bits/sigstack.h
index 6ad3363ddf..b2de7a1d3e 100644
--- a/sysdeps/unix/sysv/linux/alpha/bits/sigstack.h
+++ b/sysdeps/unix/sysv/linux/alpha/bits/sigstack.h
@@ -16,10 +16,15 @@
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SIGNAL_H
+#ifndef _BITS_SIGSTACK_H
+#define _BITS_SIGSTACK_H 1
+
+#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
# error "Never include this file directly. Use <signal.h> instead"
#endif
+#define __need_size_t
+#include <stddef.h>
/* Structure describing a signal stack (obsolete). */
struct sigstack
@@ -28,8 +33,15 @@ struct sigstack
int ss_onstack; /* Nonzero if executing on this stack. */
};
+/* Alternate, preferred interface. */
+typedef struct sigaltstack
+ {
+ __ptr_t ss_sp;
+ int ss_flags;
+ size_t ss_size;
+ } stack_t;
-/* Possible values for `ss_flags.'. */
+/* Possible values for `ss_flags'. */
enum
{
SS_ONSTACK = 1,
@@ -44,11 +56,4 @@ enum
/* System default stack size. */
#define SIGSTKSZ 16384
-
-/* Alternate, preferred interface. */
-typedef struct sigaltstack
- {
- __ptr_t ss_sp;
- int ss_flags;
- size_t ss_size;
- } stack_t;
+#endif /* bits/sigstack.h */
diff --git a/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h b/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h
index a42e662cf5..0fa4c1f996 100644
--- a/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h
@@ -21,7 +21,10 @@
#include <features.h>
#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>
/* Type for general register. */
diff --git a/sysdeps/unix/sysv/linux/arm/sys/ucontext.h b/sysdeps/unix/sysv/linux/arm/sys/ucontext.h
index f32eadc099..c7aceadb7d 100644
--- a/sysdeps/unix/sysv/linux/arm/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/arm/sys/ucontext.h
@@ -23,9 +23,11 @@
#include <features.h>
#include <signal.h>
-/* We need the signal context definitions even if they are not used
- included in <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>
+
typedef int greg_t;
diff --git a/sysdeps/unix/sysv/linux/bits/sigcontext.h b/sysdeps/unix/sysv/linux/bits/sigcontext.h
index 46cacb7b2c..bdeaae8ad2 100644
--- a/sysdeps/unix/sysv/linux/bits/sigcontext.h
+++ b/sysdeps/unix/sysv/linux/bits/sigcontext.h
@@ -15,6 +15,9 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_SIGCONTEXT_H
+#define _BITS_SIGCONTEXT_H 1
+
#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
# error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
#endif
@@ -30,3 +33,5 @@
# define __need_NULL
# include <stddef.h>
#endif
+
+#endif /* bits/sigcontext.h */
diff --git a/sysdeps/unix/sysv/linux/bits/sigstack.h b/sysdeps/unix/sysv/linux/bits/sigstack.h
index 115a98ec6b..d858f09b73 100644
--- a/sysdeps/unix/sysv/linux/bits/sigstack.h
+++ b/sysdeps/unix/sysv/linux/bits/sigstack.h
@@ -16,10 +16,15 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SIGNAL_H
+#ifndef _BITS_SIGSTACK_H
+#define _BITS_SIGSTACK_H 1
+
+#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
# error "Never include this file directly. Use <signal.h> instead"
#endif
+#define __need_size_t
+#include <stddef.h>
/* Structure describing a signal stack (obsolete). */
struct sigstack
@@ -28,8 +33,15 @@ struct sigstack
int ss_onstack; /* Nonzero if executing on this stack. */
};
+/* Alternate, preferred interface. */
+typedef struct sigaltstack
+ {
+ void *ss_sp;
+ int ss_flags;
+ size_t ss_size;
+ } stack_t;
-/* Possible values for `ss_flags.'. */
+/* Possible values for `ss_flags'. */
enum
{
SS_ONSTACK = 1,
@@ -44,11 +56,4 @@ enum
/* System default stack size. */
#define SIGSTKSZ 8192
-
-/* Alternate, preferred interface. */
-typedef struct sigaltstack
- {
- void *ss_sp;
- int ss_flags;
- size_t ss_size;
- } stack_t;
+#endif /* bits/sigstack.h */
diff --git a/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h b/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h
index f6fd367bd9..fa2bd8c048 100644
--- a/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h
@@ -23,9 +23,10 @@
#include <features.h>
#include <signal.h>
-/* We need the signal context definitions even if they are not used
- included in <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>
/* Type for general register. */
diff --git a/sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h b/sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h
index 591e7a22f0..af15ee856b 100644
--- a/sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h
+++ b/sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h
@@ -16,13 +16,13 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_SIGCONTEXT_H
+#define _BITS_SIGCONTEXT_H 1
+
#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
# error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
#endif
-#ifndef _BITS_SIGCONTEXT_H
-#define _BITS_SIGCONTEXT_H 1
-
#define __need_size_t
#include <stddef.h>
#include <bits/sigstack.h>
diff --git a/sysdeps/unix/sysv/linux/ia64/bits/sigstack.h b/sysdeps/unix/sysv/linux/ia64/bits/sigstack.h
index 0cd5e84043..f22e503f48 100644
--- a/sysdeps/unix/sysv/linux/ia64/bits/sigstack.h
+++ b/sysdeps/unix/sysv/linux/ia64/bits/sigstack.h
@@ -16,12 +16,15 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SIGNAL_H
+#ifndef _BITS_SIGSTACK_H
+#define _BITS_SIGSTACK_H 1
+
+#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
# error "Never include this file directly. Use <signal.h> instead"
#endif
-#ifndef _SIGSTACK_H
-#define _SIGSTACK_H 1
+#define __need_size_t
+#include <stddef.h>
/* Structure describing a signal stack (obsolete). */
struct sigstack
@@ -30,8 +33,15 @@ struct sigstack
int ss_onstack; /* Nonzero if executing on this stack. */
};
+/* Alternate, preferred interface. */
+typedef struct sigaltstack
+ {
+ __ptr_t ss_sp;
+ int ss_flags;
+ size_t ss_size;
+ } stack_t;
-/* Possible values for `ss_flags.'. */
+/* Possible values for `ss_flags'. */
enum
{
SS_ONSTACK = 1,
@@ -50,13 +60,4 @@ enum
/* System default stack size. */
#define SIGSTKSZ 262144
-
-/* Alternate, preferred interface. */
-typedef struct sigaltstack
- {
- __ptr_t ss_sp;
- int ss_flags;
- size_t ss_size;
- } stack_t;
-
-#endif /* bits/sigstack.h */
+#endif /* bits/sigstack.h */
diff --git a/sysdeps/unix/sysv/linux/ia64/sys/ucontext.h b/sysdeps/unix/sysv/linux/ia64/sys/ucontext.h
index c79fced452..730aa78fda 100644
--- a/sysdeps/unix/sysv/linux/ia64/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/ia64/sys/ucontext.h
@@ -21,7 +21,11 @@
#include <features.h>
#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>
+
/*
* These are here mostly for backwards compatibility with older Unices.
diff --git a/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h b/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h
index d8ee5423a5..66f4b55307 100644
--- a/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h
@@ -23,6 +23,12 @@
#include <features.h>
#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>
+
+
/* Type for general register. */
typedef int greg_t;
diff --git a/sysdeps/unix/sysv/linux/mips/bits/sigstack.h b/sysdeps/unix/sysv/linux/mips/bits/sigstack.h
index 2e9665444a..9e1ace9fdd 100644
--- a/sysdeps/unix/sysv/linux/mips/bits/sigstack.h
+++ b/sysdeps/unix/sysv/linux/mips/bits/sigstack.h
@@ -16,10 +16,15 @@
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SIGNAL_H
+#ifndef _BITS_SIGSTACK_H
+#define _BITS_SIGSTACK_H 1
+
+#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
# error "Never include this file directly. Use <signal.h> instead"
#endif
+#define __need_size_t
+#include <stddef.h>
/* Structure describing a signal stack (obsolete). */
struct sigstack
@@ -28,8 +33,15 @@ struct sigstack
int ss_onstack; /* Nonzero if executing on this stack. */
};
+/* Alternate, preferred interface. */
+typedef struct sigaltstack
+ {
+ void *ss_sp;
+ size_t ss_size;
+ int ss_flags;
+ } stack_t;
-/* Possible values for `ss_flags.'. */
+/* Possible values for `ss_flags'. */
enum
{
SS_ONSTACK = 1,
@@ -44,11 +56,4 @@ enum
/* System default stack size. */
#define SIGSTKSZ 8192
-
-/* Alternate, preferred interface. */
-typedef struct sigaltstack
- {
- void *ss_sp;
- size_t ss_size;
- int ss_flags;
- } stack_t;
+#endif /* bits/sigstack.h */
diff --git a/sysdeps/unix/sysv/linux/mips/sys/ucontext.h b/sysdeps/unix/sysv/linux/mips/sys/ucontext.h
index b5d2e2ab10..1ab0c686ef 100644
--- a/sysdeps/unix/sysv/linux/mips/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/mips/sys/ucontext.h
@@ -20,12 +20,15 @@
#define _SYS_UCONTEXT_H 1
#include <features.h>
-#include <sgidefs.h>
#include <signal.h>
-/* We need the signal context definitions even if they are not used
- included in <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 <sgidefs.h>
+
/* Type for general register. Even in o32 we assume 64-bit registers,
like the kernel. */
diff --git a/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h b/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h
index a44ec61fa0..26c55de312 100644
--- a/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h
@@ -24,6 +24,12 @@
#include <features.h>
#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>
+
+
/* These definitions must be in sync with the kernel. */
#define MCONTEXT_VERSION 2
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h b/sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h
index 5b9c0c1be9..b06f439306 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h
@@ -16,10 +16,15 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SIGNAL_H
+#ifndef _BITS_SIGSTACK_H
+#define _BITS_SIGSTACK_H 1
+
+#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
# error "Never include this file directly. Use <signal.h> instead"
#endif
+#define __need_size_t
+#include <stddef.h>
/* Structure describing a signal stack (obsolete). */
struct sigstack
@@ -28,8 +33,15 @@ struct sigstack
int ss_onstack; /* Nonzero if executing on this stack. */
};
+/* Alternate, preferred interface. */
+typedef struct sigaltstack
+ {
+ void *ss_sp;
+ int ss_flags;
+ size_t ss_size;
+ } stack_t;
-/* Possible values for `ss_flags.'. */
+/* Possible values for `ss_flags'. */
enum
{
SS_ONSTACK = 1,
@@ -44,11 +56,4 @@ enum
/* System default stack size. */
#define SIGSTKSZ 16384
-
-/* Alternate, preferred interface. */
-typedef struct sigaltstack
- {
- void *ss_sp;
- int ss_flags;
- size_t ss_size;
- } stack_t;
+#endif /* bits/sigstack.h */
diff --git a/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h b/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
index 2b97bc71bd..c4634f68b5 100644
--- a/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
@@ -21,9 +21,11 @@
#include <features.h>
#include <signal.h>
-/* We need the signal context definitions even if they are not used
- included in <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>
+
#if __WORDSIZE == 32
diff --git a/sysdeps/unix/sysv/linux/s390/sys/ucontext.h b/sysdeps/unix/sysv/linux/s390/sys/ucontext.h
index 78f5fd77a1..0128d1fa55 100644
--- a/sysdeps/unix/sysv/linux/s390/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/s390/sys/ucontext.h
@@ -18,15 +18,15 @@
#ifndef _SYS_UCONTEXT_H
#define _SYS_UCONTEXT_H 1
-/* Forward definition to avoid parse errors */
-struct ucontext;
-typedef struct ucontext ucontext_t;
+
#include <features.h>
#include <signal.h>
-/* We need the signal context definitions even if they are not used
- included in <signal.h>. */
+/* We need the signal context definitions even if they are not exposed
+ by in <signal.h>. */
#include <bits/sigcontext.h>
+#include <bits/sigstack.h>
+
/* Type for a program status word. */
typedef struct
diff --git a/sysdeps/unix/sysv/linux/sh/sys/ucontext.h b/sysdeps/unix/sysv/linux/sh/sys/ucontext.h
index ab9a7e66bf..2c5fa0431c 100644
--- a/sysdeps/unix/sysv/linux/sh/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/sh/sys/ucontext.h
@@ -23,9 +23,10 @@
#include <features.h>
#include <signal.h>
-/* We need the signal context definitions even if they are not used
- included in <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>
typedef int greg_t;
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/sigcontext.h b/sysdeps/unix/sysv/linux/sparc/bits/sigcontext.h
index 43253f2c99..8794dddfa4 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/sigcontext.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/sigcontext.h
@@ -15,6 +15,9 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_SIGCONTEXT_H
+#define _BITS_SIGCONTEXT_H 1
+
#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
# error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
#endif
@@ -75,3 +78,5 @@ struct sigcontext
};
#endif /* sparc64 */
+
+#endif /* bits/sigcontext.h */
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/sigstack.h b/sysdeps/unix/sysv/linux/sparc/bits/sigstack.h
index 5b9c0c1be9..b06f439306 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/sigstack.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/sigstack.h
@@ -16,10 +16,15 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SIGNAL_H
+#ifndef _BITS_SIGSTACK_H
+#define _BITS_SIGSTACK_H 1
+
+#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
# error "Never include this file directly. Use <signal.h> instead"
#endif
+#define __need_size_t
+#include <stddef.h>
/* Structure describing a signal stack (obsolete). */
struct sigstack
@@ -28,8 +33,15 @@ struct sigstack
int ss_onstack; /* Nonzero if executing on this stack. */
};
+/* Alternate, preferred interface. */
+typedef struct sigaltstack
+ {
+ void *ss_sp;
+ int ss_flags;
+ size_t ss_size;
+ } stack_t;
-/* Possible values for `ss_flags.'. */
+/* Possible values for `ss_flags'. */
enum
{
SS_ONSTACK = 1,
@@ -44,11 +56,4 @@ enum
/* System default stack size. */
#define SIGSTKSZ 16384
-
-/* Alternate, preferred interface. */
-typedef struct sigaltstack
- {
- void *ss_sp;
- int ss_flags;
- size_t ss_size;
- } stack_t;
+#endif /* bits/sigstack.h */
diff --git a/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h b/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h
index d7bf2aedb9..5856398e62 100644
--- a/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h
@@ -20,8 +20,15 @@
#include <features.h>
#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/wordsize.h>
+
#if __WORDSIZE == 64
#define MC_TSTATE 0
diff --git a/sysdeps/unix/sysv/linux/tile/sys/ucontext.h b/sysdeps/unix/sysv/linux/tile/sys/ucontext.h
index d930a1fea6..59c9bd1c4c 100644
--- a/sysdeps/unix/sysv/linux/tile/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/tile/sys/ucontext.h
@@ -22,13 +22,15 @@
#include <features.h>
#include <signal.h>
-/* We need the signal context definitions even if they are not used
- included in <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>
/* Get register type and register names. */
#include <arch/abi.h>
+
/* Type for general register. */
typedef uint_reg_t greg_t;
diff --git a/sysdeps/unix/sysv/linux/x86/sys/ucontext.h b/sysdeps/unix/sysv/linux/x86/sys/ucontext.h
index 062063526b..99ee9463ea 100644
--- a/sysdeps/unix/sysv/linux/x86/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/x86/sys/ucontext.h
@@ -21,9 +21,11 @@
#include <features.h>
#include <signal.h>
-/* We need the signal context definitions even if they are not used
- included in <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>
+
#ifdef __x86_64__