]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Condition signal.h inclusion in sys/wait.h (bug 21560).
authorJoseph Myers <joseph@codesourcery.com>
Fri, 9 Jun 2017 13:45:37 +0000 (13:45 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Fri, 9 Jun 2017 13:45:37 +0000 (13:45 +0000)
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.

ChangeLog
posix/sys/wait.h

index bb61911610951143cb7f2651699aa3af1287a520..1d0d2fb22184f71e8b6ee8168f84420411dfbb36 100644 (file)
--- 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__
index d5b7e4d8d4f4ab88c2ceb8fe12f03551580de1a9..909979bc9d585527a90188ffd3c3c21625728d45 100644 (file)
 
 __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