This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
[glibc/zack/no-nested-includes] Don’t include signal.h from sys/wait.h
- From: Zack Weinberg <zack at sourceware dot org>
- To: glibc-cvs at sourceware dot org
- Date: 18 Jun 2019 15:37:00 -0000
- Subject: [glibc/zack/no-nested-includes] Don’t include signal.h from sys/wait.h
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a3ec45030d104903c3aabd7a087ab3f70d1bf5a0
commit a3ec45030d104903c3aabd7a087ab3f70d1bf5a0
Author: Zack Weinberg <zackw@panix.com>
Date: Mon Jun 10 11:34:41 2019 -0400
Donâ??t include signal.h from sys/wait.h
sys/wait.h includes signal.h only for the definition of siginfo_t.
We already have a single-type header for that, so use it.
siginfo_t contains a field whose type is uid_t, but sys/wait.h is not
specified to define uid_t, so, as is already done for pid_t, the
conformance test is modified to expect that field to have type __uid_t
instead.
* posix/sys/wait.h: Include bits/types/siginfo_t.h, not signal.h.
* conform/data/sys/wait.h-data: Do not expect a definition of uid_t.
* malloc/tst-mallocfork.c, nptl/tst-fork4.c, nptl/tst-getpid3.c
* nptl/tst-mutex9.c, nptl/tst-rwlock12.c: Include signal.h.
* nptl/tst-cancel4.c, rt/tst-mqueue1.c
* support/tst-support_capture_subprocess.c
* sysdeps/unix/sysv/linux/tst-align-clone.c:
Include signal.h. Sort includes.
* scripts/check-obsolete-constructs.py (HEADER_ALLOWED_INCLUDES):
Update.
Diff:
---
conform/data/sys/wait.h-data | 1 +
malloc/tst-mallocfork.c | 1 +
nptl/tst-cancel4.c | 25 +++++++++++++------------
nptl/tst-fork4.c | 1 +
nptl/tst-getpid3.c | 1 +
nptl/tst-mutex9.c | 1 +
nptl/tst-rwlock12.c | 1 +
posix/sys/wait.h | 2 +-
rt/tst-mqueue1.c | 5 +++--
scripts/check-obsolete-constructs.py | 5 ++---
support/tst-support_capture_subprocess.c | 19 +++++++++++--------
sysdeps/unix/sysv/linux/tst-align-clone.c | 5 +++--
12 files changed, 39 insertions(+), 28 deletions(-)
diff --git a/conform/data/sys/wait.h-data b/conform/data/sys/wait.h-data
index c076142..aa3a87e 100644
--- a/conform/data/sys/wait.h-data
+++ b/conform/data/sys/wait.h-data
@@ -2,6 +2,7 @@
#ifdef POSIX
# define pid_t __pid_t
#endif
+#define uid_t __uid_t
constant WNOHANG
constant WUNTRACED
diff --git a/malloc/tst-mallocfork.c b/malloc/tst-mallocfork.c
index 00851a1..d1d973c 100644
--- a/malloc/tst-mallocfork.c
+++ b/malloc/tst-mallocfork.c
@@ -2,6 +2,7 @@
https://sourceware.org/bugzilla/show_bug.cgi?id=838. */
#include <assert.h>
#include <errno.h>
+#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
diff --git a/nptl/tst-cancel4.c b/nptl/tst-cancel4.c
index dce93dc..575c09d 100644
--- a/nptl/tst-cancel4.c
+++ b/nptl/tst-cancel4.c
@@ -19,27 +19,28 @@
/* NOTE: this tests functionality beyond POSIX. POSIX does not allow
exit to be called more than once. */
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <pthread.h>
+#include <signal.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <sys/types.h>
-#include <sys/select.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <sys/ipc.h>
-#include <sys/msg.h>
-#include <unistd.h>
-#include <errno.h>
-#include <limits.h>
-#include <pthread.h>
-#include <fcntl.h>
#include <termios.h>
+#include <unistd.h>
+#include <sys/ipc.h>
#include <sys/mman.h>
+#include <sys/msg.h>
#include <sys/poll.h>
-#include <sys/wait.h>
+#include <sys/select.h>
+#include <sys/socket.h>
#include <sys/stat.h>
+#include <sys/types.h>
#include <sys/uio.h>
+#include <sys/un.h>
+#include <sys/wait.h>
/* Since STREAMS are not supported in the standard Linux kernel and
diff --git a/nptl/tst-fork4.c b/nptl/tst-fork4.c
index b491d3e..4deaf24 100644
--- a/nptl/tst-fork4.c
+++ b/nptl/tst-fork4.c
@@ -18,6 +18,7 @@
#include <errno.h>
#include <pthread.h>
+#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
diff --git a/nptl/tst-getpid3.c b/nptl/tst-getpid3.c
index f1e77f6..3883a47 100644
--- a/nptl/tst-getpid3.c
+++ b/nptl/tst-getpid3.c
@@ -1,5 +1,6 @@
#include <errno.h>
#include <pthread.h>
+#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
diff --git a/nptl/tst-mutex9.c b/nptl/tst-mutex9.c
index 917276e..0e2c8d8 100644
--- a/nptl/tst-mutex9.c
+++ b/nptl/tst-mutex9.c
@@ -18,6 +18,7 @@
#include <errno.h>
#include <pthread.h>
+#include <signal.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
diff --git a/nptl/tst-rwlock12.c b/nptl/tst-rwlock12.c
index 2d28a5b..70a678f 100644
--- a/nptl/tst-rwlock12.c
+++ b/nptl/tst-rwlock12.c
@@ -18,6 +18,7 @@
#include <errno.h>
#include <pthread.h>
+#include <signal.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
diff --git a/posix/sys/wait.h b/posix/sys/wait.h
index 691be27..7f8e069 100644
--- a/posix/sys/wait.h
+++ b/posix/sys/wait.h
@@ -30,7 +30,7 @@ __BEGIN_DECLS
#include <bits/types/pid_t.h>
#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
-# include <signal.h>
+# include <bits/types/siginfo_t.h>
#endif
#if defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8
diff --git a/rt/tst-mqueue1.c b/rt/tst-mqueue1.c
index fb8d2e2..5e5039a 100644
--- a/rt/tst-mqueue1.c
+++ b/rt/tst-mqueue1.c
@@ -20,13 +20,14 @@
#include <errno.h>
#include <fcntl.h>
#include <mqueue.h>
+#include <signal.h>
+#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <sys/wait.h>
#include <time.h>
#include <unistd.h>
-#include <stdint.h>
+#include <sys/wait.h>
#include "tst-mqueue.h"
static int
diff --git a/scripts/check-obsolete-constructs.py b/scripts/check-obsolete-constructs.py
index ce72b57..5f6e714 100755
--- a/scripts/check-obsolete-constructs.py
+++ b/scripts/check-obsolete-constructs.py
@@ -530,16 +530,15 @@ HEADER_ALLOWED_INCLUDES = {
# sys/sem.h -> sys/ipc.h
# sys/shm.h -> sys/ipc.h
# sys/time.h -> sys/select.h (effectively)
- # allowed: sys/wait.h -> signal.h
"sys/msg.h": [ "sys/ipc.h" ],
"sys/sem.h": [ "sys/ipc.h" ],
"sys/shm.h": [ "sys/ipc.h" ],
"sys/time.h": [ "sys/select.h" ],
+ # necessary for backward compatibility with BSD
"sys/types.h": [ "endian.h" ],
- "sys/wait.h": [ "signal.h" ],
# POSIX networking headers
- # POSIX allows arpa/inet.h -> netinet/in.h
+ # allowed: arpa/inet.h -> netinet/in.h
"arpa/inet.h": [ "netinet/in.h" ],
# necessary for backward compatibility with Sun RPC
"netdb.h": [ "rpc/netdb.h" ],
diff --git a/support/tst-support_capture_subprocess.c b/support/tst-support_capture_subprocess.c
index ab363e4..11e8cb7 100644
--- a/support/tst-support_capture_subprocess.c
+++ b/support/tst-support_capture_subprocess.c
@@ -16,21 +16,23 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#include <errno.h>
+#include <getopt.h>
+#include <limits.h>
+#include <paths.h>
+#include <signal.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <sys/wait.h>
+#include <unistd.h>
+
+#include <array_length.h>
#include <support/capture_subprocess.h>
#include <support/check.h>
#include <support/support.h>
#include <support/temp_file.h>
-#include <sys/wait.h>
-#include <unistd.h>
-#include <paths.h>
-#include <getopt.h>
-#include <limits.h>
-#include <errno.h>
-#include <array_length.h>
/* Nonzero if the program gets called via 'exec'. */
static int restart;
@@ -273,7 +275,8 @@ do_multiple_tests (enum test_type type)
.out = random_string (lengths[length_idx_stdout]),
.err = random_string (lengths[length_idx_stderr]),
.write_mode = write_mode,
- .signal = signal * SIGTERM, /* 0 or SIGTERM. */
+ .signal = signal *
+ SIGTERM, /* 0 or SIGTERM. */
.status = status * 3, /* 0 or 3. */
};
TEST_VERIFY (strlen (test.out) == lengths[length_idx_stdout]);
diff --git a/sysdeps/unix/sysv/linux/tst-align-clone.c b/sysdeps/unix/sysv/linux/tst-align-clone.c
index 82ecf7b..100eacf 100644
--- a/sysdeps/unix/sysv/linux/tst-align-clone.c
+++ b/sysdeps/unix/sysv/linux/tst-align-clone.c
@@ -16,14 +16,15 @@
<http://www.gnu.org/licenses/>. */
#include <sched.h>
+#include <signal.h>
+#include <stackinfo.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
-#include <sys/wait.h>
#include <unistd.h>
+#include <sys/wait.h>
#include <tst-stack-align.h>
-#include <stackinfo.h>
static int
f (void *arg)