diff options
author | Joseph Myers <joseph@codesourcery.com> | 2017-06-09 13:45:37 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2017-06-09 13:45:37 +0000 |
commit | 0862cdcdc814185345ab3e6eda4bb1b81efdf76a (patch) | |
tree | 4e46c89e9237410e88caa7f75993a9409cd1da97 | |
parent | b4971123e9e681126cb8eaae6d5de56be84c9e98 (diff) | |
download | glibc-0862cdcdc814185345ab3e6eda4bb1b81efdf76a.tar.gz glibc-0862cdcdc814185345ab3e6eda4bb1b81efdf76a.tar.xz glibc-0862cdcdc814185345ab3e6eda4bb1b81efdf76a.zip |
Condition signal.h inclusion in sys/wait.h (bug 21560).
sys/wait.h includes signal.h unconditionally. But the permission to do so is UX-shaded in XPG4.2, and XSI-shaded in POSIX before 2008, so this should not be unconditional. This patch fixes this conservatively: the include is kept, but conditioned on the standards that permit it (meaning it is still present by default, because non-XSI POSIX.1:2008 is enabled by default). <bits/types.h> is now included unconditionally to provide the required definition of __pid_t; it was previously included via <signal.h>. Some standards require pid_t to be defined here, and all allow it to be defined here; previously defined via <signal.h>, it's now defined directly in this header. Tested for x86_64. This does not fix any of the sys/wait.h conformtest failures, but substantially reduces the number of namespace failures for sys/wait.h for XPG4 and POSIX. [BZ #21560] * posix/sys/wait.h: Condition include of <signal.h> on [__USE_XOPEN_EXTENDED || __USE_XOPEN2K8]. Include <bits/types.h> unconditionally. [!__pid_t_defined] (pid_t): Define typedef.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | posix/sys/wait.h | 11 |
2 files changed, 17 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog index bb61911610..1d0d2fb221 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2017-06-09 Joseph Myers <joseph@codesourcery.com> + + [BZ #21560] + * posix/sys/wait.h: Condition include of <signal.h> on + [__USE_XOPEN_EXTENDED || __USE_XOPEN2K8]. Include <bits/types.h> + unconditionally. + [!__pid_t_defined] (pid_t): Define typedef. + 2017-06-09 Zack Weinberg <zackw@panix.com> * include/errno.h (__errno_location): Use __attribute_const__ diff --git a/posix/sys/wait.h b/posix/sys/wait.h index d5b7e4d8d4..909979bc9d 100644 --- a/posix/sys/wait.h +++ b/posix/sys/wait.h @@ -26,7 +26,15 @@ __BEGIN_DECLS -#include <signal.h> +#include <bits/types.h> +#ifndef __pid_t_defined +typedef __pid_t pid_t; +# define __pid_t_defined +#endif + +#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8 +# include <signal.h> +#endif /* These macros could also be defined in <stdlib.h>. */ #if !defined _STDLIB_H || (!defined __USE_XOPEN && !defined __USE_XOPEN2K8) @@ -98,7 +106,6 @@ extern __pid_t waitpid (__pid_t __pid, int *__stat_loc, int __options); #if defined __USE_XOPEN || defined __USE_XOPEN2K8 # ifndef __id_t_defined -# include <bits/types.h> typedef __id_t id_t; # define __id_t_defined # endif |