summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--conform/data/signal.h-data4
-rw-r--r--signal/signal.h21
3 files changed, 26 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 85722c8f86..865c7e9960 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2017-05-23 Joseph Myers <joseph@codesourcery.com>
+ [BZ #21511]
+ * signal/signal.h: Include <bits/types/struct_sigstack.h> only if
+ [(__USE_XOPEN_EXTENDED && !__USE_XOPEN2K8) || __USE_MISC].
+ (sigstack): Declare only if [(__USE_XOPEN_EXTENDED &&
+ !__USE_XOPEN2K) || __USE_MISC].
+ * conform/data/signal.h-data (struct sigstack): Expect type only
+ if [!XOPEN2K8 && !POSIX2008].
+ (sigstack): Expect function only if [XPG42 || UNIX98].
+
[BZ #21457]
* sysdeps/arm/sys/ucontext.h: Do not include <signal.h>,
<bits/sigstack.h>, <bits/types/struct_sigstack.h> or
diff --git a/conform/data/signal.h-data b/conform/data/signal.h-data
index 3651e86ae1..8fbe3ac55d 100644
--- a/conform/data/signal.h-data
+++ b/conform/data/signal.h-data
@@ -141,10 +141,12 @@ element stack_t {void*} ss_sp
element stack_t size_t ss_size
element stack_t int ss_flags
+# if !defined XOPEN2K8 && !defined POSIX2008
type {struct sigstack}
element {struct sigstack} int ss_onstack
element {struct sigstack} {void*} ss_sp
+# endif
# endif
# ifndef XPG4
@@ -249,7 +251,7 @@ function int sigqueue (pid_t, int, const union sigval)
function int sigrelse (int)
function void (*sigset (int, void(*)(int)))(int)
# endif
-# if !defined POSIX
+# if defined XPG42 || defined UNIX98
function int sigstack (struct sigstack*, struct sigstack*)
# endif
function int sigsuspend (const sigset_t*)
diff --git a/signal/signal.h b/signal/signal.h
index a51e912d08..947873ea8e 100644
--- a/signal/signal.h
+++ b/signal/signal.h
@@ -297,7 +297,6 @@ extern int sigreturn (struct sigcontext *__scp) __THROW;
extern int siginterrupt (int __sig, int __interrupt) __THROW;
# include <bits/sigstack.h>
-# include <bits/types/struct_sigstack.h>
# include <bits/types/stack_t.h>
# include <bits/ss_flags.h>
# if defined __USE_XOPEN || defined __USE_XOPEN2K8
@@ -305,12 +304,6 @@ extern int siginterrupt (int __sig, int __interrupt) __THROW;
# include <sys/ucontext.h>
# endif
-/* Run signals handlers on the stack specified by SS (if not NULL).
- If OSS is not NULL, it is filled in with the old signal stack status.
- This interface is obsolete and on many platform not implemented. */
-extern int sigstack (struct sigstack *__ss, struct sigstack *__oss)
- __THROW __attribute_deprecated__;
-
/* Alternate signal handler stack interface.
This interface should always be preferred over `sigstack'. */
extern int sigaltstack (const struct sigaltstack *__restrict __ss,
@@ -318,6 +311,20 @@ extern int sigaltstack (const struct sigaltstack *__restrict __ss,
#endif /* Use POSIX.1-2008 or X/Open Unix. */
+#if ((defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8) \
+ || defined __USE_MISC)
+# include <bits/types/struct_sigstack.h>
+#endif
+
+#if ((defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K) \
+ || defined __USE_MISC)
+/* Run signals handlers on the stack specified by SS (if not NULL).
+ If OSS is not NULL, it is filled in with the old signal stack status.
+ This interface is obsolete and on many platform not implemented. */
+extern int sigstack (struct sigstack *__ss, struct sigstack *__oss)
+ __THROW __attribute_deprecated__;
+#endif
+
#ifdef __USE_XOPEN_EXTENDED
/* Simplified interface for signal management. */