diff --git a/ChangeLog b/ChangeLog
index 15a5429132..514753d9ec 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,97 @@
 2017-02-16  Zack Weinberg  <zackw@panix.com>
 
+	* crypt/md5.h: Test _LIBC with #if defined, not #if.
+	* dirent/opendir-tst1.c: Include sys/stat.h.
+	* dirent/tst-fdopendir.c: Include sys/stat.h.
+	* dirent/tst-fdopendir2.c: Include stdlib.h.
+	* dirent/tst-scandir.c: Include stdbool.h.
+	* elf/tst-auditmod1.c: Include link.h and stddef.h.
+	* elf/tst-tls15.c: Include stdlib.h.
+	* elf/tst-tls16.c: Include stdlib.h.
+	* elf/tst-tls17.c: Include stdlib.h.
+	* elf/tst-tls18.c: Include stdlib.h.
+	* iconv/tst-iconv6.c: Include endian.h.
+	* iconvdata/bug-iconv11.c: Include limits.h.
+	* io/test-utime.c: Include stdint.h.
+	* io/tst-faccessat.c: Include sys/stat.h.
+	* io/tst-fchmodat.c: Include sys/stat.h.
+	* io/tst-fchownat.c: Include sys/stat.h.
+	* io/tst-fstatat.c: Include sys/stat.h.
+	* io/tst-futimesat.c: Include sys/stat.h.
+	* io/tst-linkat.c: Include sys/stat.h.
+	* io/tst-mkdirat.c: Include sys/stat.h and stdbool.h.
+	* io/tst-mkfifoat.c: Include sys/stat.h and stdbool.h.
+	* io/tst-mknodat.c: Include sys/stat.h and stdbool.h.
+	* io/tst-openat.c: Include stdbool.h.
+	* io/tst-readlinkat.c: Include sys/stat.h.
+	* io/tst-renameat.c: Include sys/stat.h.
+	* io/tst-symlinkat.c: Include sys/stat.h.
+	* io/tst-unlinkat.c: Include stdbool.h.
+	* libio/bug-memstream1.c: Include stdlib.h.
+	* libio/bug-wmemstream1.c: Include stdlib.h.
+	* libio/tst-fwrite-error.c: Include stdlib.h.
+	* libio/tst-memstream1.c: Include stdlib.h.
+	* libio/tst-memstream2.c: Include stdlib.h.
+	* libio/tst-memstream3.c: Include stdlib.h.
+	* malloc/tst-interpose-aux.c: Include stdint.h.
+	* misc/tst-preadvwritev-common.c: Include sys/stat.h.
+	* nptl/tst-basic7.c: Include limits.h.
+	* nptl/tst-cancel25.c: Include pthread.h, not pthreadP.h.
+	* nptl/tst-cancel4.c: Include stddef.h, limits.h, and sys/stat.h.
+	* nptl/tst-cancel4_1.c: Include stddef.h.
+	* nptl/tst-cancel4_2.c: Include stddef.h.
+	* nptl/tst-cond16.c: Include limits.h.
+	Use sysconf(_SC_PAGESIZE) instead of __getpagesize.
+	* nptl/tst-cond18.c: Include limits.h.
+	Use sysconf(_SC_PAGESIZE) instead of __getpagesize.
+	* nptl/tst-cond4.c: Include stdint.h.
+	* nptl/tst-cond6.c: Include stdint.h.
+	* nptl/tst-stack2.c: Include limits.h.
+	* nptl/tst-stackguard1.c: Include stddef.h.
+	* nptl/tst-tls4.c: Include stdint.h. Don't include tls.h.
+	* nptl/tst-tls4moda.c: Include stddef.h.
+	Don't include stdio.h, unistd.h, or tls.h.
+	* nptl/tst-tls4modb.c: Include stddef.h.
+	Don't include stdio.h, unistd.h, or tls.h.
+	* nptl/tst-tls5.h: Include stddef.h. Don't include stdlib.h or tls.h.
+	* posix/tst-getaddrinfo2.c: Include stdio.h.
+	* posix/tst-getaddrinfo5.c: Include stdio.h.
+	* posix/tst-pathconf.c: Include sys/stat.h.
+	* posix/tst-posix_fadvise-common.c: Include stdint.h.
+	* posix/tst-preadwrite-common.c: Include sys/stat.h.
+	* posix/tst-regex.c: Include stdint.h.
+	Don't include spawn.h or spawn_int.h.
+	* posix/tst-regexloc.c: Don't include spawn.h or spawn_int.h.
+	* posix/tst-vfork3.c: Include sys/stat.h.
+	* resolv/tst-bug18665-tcp.c: Include stdlib.h.
+	* resolv/tst-res_hconf_reorder.c: Include stdlib.h.
+	* resolv/tst-resolv-search.c: Include stdlib.h.
+	* stdio-common/tst-fmemopen2.c: Include stdint.h.
+	* stdio-common/tst-vfprintf-width-prec.c: Include stdlib.h.
+	* stdlib/test-canon.c: Include sys/stat.h.
+	* stdlib/tst-tls-atexit.c: Include stdbool.h.
+	* string/test-memchr.c: Include stdint.h.
+	* string/tst-cmp.c: Include stdint.h.
+	* sysdeps/pthread/tst-timer.c: Include stdint.h.
+	* sysdeps/unix/sysv/linux/tst-sync_file_range.c: Include stdint.h.
+	* sysdeps/wordsize-64/tst-writev.c: Include limits.h and stdint.h.
+	* sysdeps/x86_64/fpu/math-tests-arch.h: Include cpu-features.h.
+	Don't include init-arch.h.
+	* sysdeps/x86_64/multiarch/test-multiarch.h: Include cpu-features.h.
+	Don't include init-arch.h.
+	* sysdeps/x86_64/tst-auditmod10b.c: Include link.h and stddef.h.
+	* sysdeps/x86_64/tst-auditmod3b.c: Include link.h and stddef.h.
+	* sysdeps/x86_64/tst-auditmod4b.c: Include link.h and stddef.h.
+	* sysdeps/x86_64/tst-auditmod5b.c: Include link.h and stddef.h.
+	* sysdeps/x86_64/tst-auditmod6b.c: Include link.h and stddef.h.
+	* sysdeps/x86_64/tst-auditmod6c.c: Include link.h and stddef.h.
+	* sysdeps/x86_64/tst-auditmod7b.c: Include link.h and stddef.h.
+	* time/clocktest.c: Include stdint.h.
+	* time/tst-posixtz.c: Include stdint.h.
+	* timezone/tst-timezone.c: Include stdint.h.
+
+2017-02-16  Zack Weinberg  <zackw@panix.com>
+
 	* string/string.h [__USE_MISC]: Include strings.h.
 	(__bzero, bcmp, bcopy, bzero, index, rindex)
 	(strcasecmp, strncasecmp, strcasecmp_l, strncasecmp_l)
diff --git a/crypt/md5.h b/crypt/md5.h
index 67398475bd..9164a4fec3 100644
--- a/crypt/md5.h
+++ b/crypt/md5.h
@@ -22,7 +22,7 @@
 
 #include <stdio.h>
 
-#if defined HAVE_LIMITS_H || _LIBC
+#if defined HAVE_LIMITS_H || defined _LIBC
 # include <limits.h>
 #endif
 
diff --git a/dirent/opendir-tst1.c b/dirent/opendir-tst1.c
index c05ec48ffc..6171d617aa 100644
--- a/dirent/opendir-tst1.c
+++ b/dirent/opendir-tst1.c
@@ -23,6 +23,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <sys/stat.h>
 
 /* Name of the FIFO.  */
 char tmpname[] = "fifoXXXXXX";
diff --git a/dirent/tst-fdopendir.c b/dirent/tst-fdopendir.c
index 0780c19916..89bdca9086 100644
--- a/dirent/tst-fdopendir.c
+++ b/dirent/tst-fdopendir.c
@@ -5,6 +5,7 @@
 #include <dirent.h>
 #include <stdbool.h>
 #include <string.h>
+#include <sys/stat.h>
 
 #ifndef O_NOATIME
 # define O_NOATIME	0
diff --git a/dirent/tst-fdopendir2.c b/dirent/tst-fdopendir2.c
index 3720809dc2..7709e4b3bc 100644
--- a/dirent/tst-fdopendir2.c
+++ b/dirent/tst-fdopendir2.c
@@ -1,6 +1,7 @@
 #include <errno.h>
 #include <dirent.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <unistd.h>
 
 
diff --git a/dirent/tst-scandir.c b/dirent/tst-scandir.c
index 6c1ff51f01..09d19ab4e4 100644
--- a/dirent/tst-scandir.c
+++ b/dirent/tst-scandir.c
@@ -16,6 +16,7 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#include <stdbool.h>
 #include <dirent.h>
 #include <errno.h>
 #include <stdio.h>
diff --git a/elf/tst-auditmod1.c b/elf/tst-auditmod1.c
index 227a3b623a..573e37abd6 100644
--- a/elf/tst-auditmod1.c
+++ b/elf/tst-auditmod1.c
@@ -1,4 +1,6 @@
 #include <dlfcn.h>
+#include <link.h>
+#include <stddef.h>
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/elf/tst-tls15.c b/elf/tst-tls15.c
index 7ac963aa2d..d2e1f3d86c 100644
--- a/elf/tst-tls15.c
+++ b/elf/tst-tls15.c
@@ -1,4 +1,5 @@
 #include <dlfcn.h>
+#include <stdlib.h>
 #include <stdio.h>
 
 static int
diff --git a/elf/tst-tls16.c b/elf/tst-tls16.c
index b3519858a0..347b2f5184 100644
--- a/elf/tst-tls16.c
+++ b/elf/tst-tls16.c
@@ -1,4 +1,5 @@
 #include <dlfcn.h>
+#include <stdlib.h>
 #include <stdio.h>
 
 static int
diff --git a/elf/tst-tls17.c b/elf/tst-tls17.c
index c768fb6a5b..6dde974158 100644
--- a/elf/tst-tls17.c
+++ b/elf/tst-tls17.c
@@ -1,4 +1,5 @@
 #include <dlfcn.h>
+#include <stdlib.h>
 #include <stdio.h>
 
 static int
diff --git a/elf/tst-tls18.c b/elf/tst-tls18.c
index 96b8e6bf7b..ba4b8008d6 100644
--- a/elf/tst-tls18.c
+++ b/elf/tst-tls18.c
@@ -1,4 +1,5 @@
 #include <dlfcn.h>
+#include <stdlib.h>
 #include <stdio.h>
 
 static int
diff --git a/iconv/tst-iconv6.c b/iconv/tst-iconv6.c
index 4e099d09f1..ace7dc68b2 100644
--- a/iconv/tst-iconv6.c
+++ b/iconv/tst-iconv6.c
@@ -22,6 +22,7 @@
 #include <inttypes.h>
 #include <iconv.h>
 #include <byteswap.h>
+#include <endian.h>
 
 static int
 do_test (void)
diff --git a/iconvdata/bug-iconv11.c b/iconvdata/bug-iconv11.c
index 277cf3143e..d208164621 100644
--- a/iconvdata/bug-iconv11.c
+++ b/iconvdata/bug-iconv11.c
@@ -23,6 +23,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
+#include <limits.h>
 
 // The longest test input sequence.
 #define MAXINBYTES    8
diff --git a/io/test-utime.c b/io/test-utime.c
index e0207e679b..3e7583c9c0 100644
--- a/io/test-utime.c
+++ b/io/test-utime.c
@@ -16,6 +16,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <fcntl.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <sys/stat.h>
diff --git a/io/tst-faccessat.c b/io/tst-faccessat.c
index 48532070a7..7bdeed008c 100644
--- a/io/tst-faccessat.c
+++ b/io/tst-faccessat.c
@@ -6,6 +6,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <sys/stat.h>
 
 
 static void prepare (void);
diff --git a/io/tst-fchmodat.c b/io/tst-fchmodat.c
index bfb75d62e5..7d4a8717ff 100644
--- a/io/tst-fchmodat.c
+++ b/io/tst-fchmodat.c
@@ -6,6 +6,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <sys/stat.h>
 
 
 static void prepare (void);
diff --git a/io/tst-fchownat.c b/io/tst-fchownat.c
index da8fd3b023..e8adf6229f 100644
--- a/io/tst-fchownat.c
+++ b/io/tst-fchownat.c
@@ -4,6 +4,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <sys/stat.h>
 
 
 static void prepare (void);
diff --git a/io/tst-fstatat.c b/io/tst-fstatat.c
index 5493102167..4766bb2e71 100644
--- a/io/tst-fstatat.c
+++ b/io/tst-fstatat.c
@@ -4,6 +4,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <sys/stat.h>
 
 
 static void prepare (void);
diff --git a/io/tst-futimesat.c b/io/tst-futimesat.c
index c1e8d93f41..af58ad06dd 100644
--- a/io/tst-futimesat.c
+++ b/io/tst-futimesat.c
@@ -4,6 +4,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <sys/stat.h>
 #include <sys/time.h>
 
 
diff --git a/io/tst-linkat.c b/io/tst-linkat.c
index d63c982751..97445b7954 100644
--- a/io/tst-linkat.c
+++ b/io/tst-linkat.c
@@ -4,6 +4,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <sys/stat.h>
 
 
 static void prepare (void);
diff --git a/io/tst-mkdirat.c b/io/tst-mkdirat.c
index 3efa4622ef..a960c6651d 100644
--- a/io/tst-mkdirat.c
+++ b/io/tst-mkdirat.c
@@ -1,9 +1,11 @@
 #include <dirent.h>
 #include <fcntl.h>
+#include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <sys/stat.h>
 
 
 static void prepare (void);
diff --git a/io/tst-mkfifoat.c b/io/tst-mkfifoat.c
index 2bf29f63af..d87b587384 100644
--- a/io/tst-mkfifoat.c
+++ b/io/tst-mkfifoat.c
@@ -1,9 +1,11 @@
 #include <dirent.h>
 #include <fcntl.h>
+#include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <sys/stat.h>
 
 
 static void prepare (void);
diff --git a/io/tst-mknodat.c b/io/tst-mknodat.c
index cba4dffadf..9d58fdbe3a 100644
--- a/io/tst-mknodat.c
+++ b/io/tst-mknodat.c
@@ -1,9 +1,11 @@
 #include <dirent.h>
 #include <fcntl.h>
+#include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <sys/stat.h>
 
 
 static void prepare (void);
diff --git a/io/tst-openat.c b/io/tst-openat.c
index 0ceb745880..741b8d0ad2 100644
--- a/io/tst-openat.c
+++ b/io/tst-openat.c
@@ -1,5 +1,6 @@
 #include <dirent.h>
 #include <fcntl.h>
+#include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/io/tst-readlinkat.c b/io/tst-readlinkat.c
index 891b6e6817..51fafc92d3 100644
--- a/io/tst-readlinkat.c
+++ b/io/tst-readlinkat.c
@@ -4,6 +4,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <sys/stat.h>
 
 
 static void prepare (void);
diff --git a/io/tst-renameat.c b/io/tst-renameat.c
index a7c0ec16c4..435302b52b 100644
--- a/io/tst-renameat.c
+++ b/io/tst-renameat.c
@@ -4,6 +4,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <sys/stat.h>
 
 
 static void prepare (void);
diff --git a/io/tst-symlinkat.c b/io/tst-symlinkat.c
index 1e98588fc8..214a8e348e 100644
--- a/io/tst-symlinkat.c
+++ b/io/tst-symlinkat.c
@@ -4,6 +4,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <sys/stat.h>
 
 
 static void prepare (void);
diff --git a/io/tst-unlinkat.c b/io/tst-unlinkat.c
index c25443c27f..e21d56f9f7 100644
--- a/io/tst-unlinkat.c
+++ b/io/tst-unlinkat.c
@@ -1,5 +1,6 @@
 #include <dirent.h>
 #include <fcntl.h>
+#include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/libio/bug-memstream1.c b/libio/bug-memstream1.c
index 8af36fee2d..d1ecc79564 100644
--- a/libio/bug-memstream1.c
+++ b/libio/bug-memstream1.c
@@ -1,5 +1,6 @@
 #include <stdio.h>
 #include <string.h>
+#include <stdlib.h>
 
 
 static int
diff --git a/libio/bug-wmemstream1.c b/libio/bug-wmemstream1.c
index 22d67f71e9..709a3c6d66 100644
--- a/libio/bug-wmemstream1.c
+++ b/libio/bug-wmemstream1.c
@@ -1,4 +1,5 @@
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
 #include <wchar.h>
 
diff --git a/libio/tst-fwrite-error.c b/libio/tst-fwrite-error.c
index d29df87fc1..fa64d5f0dc 100644
--- a/libio/tst-fwrite-error.c
+++ b/libio/tst-fwrite-error.c
@@ -18,6 +18,7 @@
 #include <fcntl.h>
 #include <unistd.h>
 #include <stdio.h>
+#include <stdlib.h>
 
 static int
 do_test (void)
diff --git a/libio/tst-memstream1.c b/libio/tst-memstream1.c
index d18f5cc22a..adc2aec257 100644
--- a/libio/tst-memstream1.c
+++ b/libio/tst-memstream1.c
@@ -1,5 +1,6 @@
 #include <mcheck.h>
 #include <stdio.h>
+#include <stdlib.h>
 
 
 #ifndef CHAR_T
diff --git a/libio/tst-memstream2.c b/libio/tst-memstream2.c
index cbea4b2f97..d3874faaad 100644
--- a/libio/tst-memstream2.c
+++ b/libio/tst-memstream2.c
@@ -1,5 +1,6 @@
 #include <mcheck.h>
 #include <stdio.h>
+#include <stdlib.h>
 
 
 #ifndef CHAR_T
diff --git a/libio/tst-memstream3.c b/libio/tst-memstream3.c
index d8c82d74cd..ce201d15eb 100644
--- a/libio/tst-memstream3.c
+++ b/libio/tst-memstream3.c
@@ -18,6 +18,7 @@
 
 #include <mcheck.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
 #include <stdarg.h>
 #include <errno.h>
diff --git a/malloc/tst-interpose-aux.c b/malloc/tst-interpose-aux.c
index 535b055a40..e80e979299 100644
--- a/malloc/tst-interpose-aux.c
+++ b/malloc/tst-interpose-aux.c
@@ -21,6 +21,7 @@
 #include <errno.h>
 #include <stdarg.h>
 #include <stddef.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/misc/tst-preadvwritev-common.c b/misc/tst-preadvwritev-common.c
index 07f1f95d03..29433123a2 100644
--- a/misc/tst-preadvwritev-common.c
+++ b/misc/tst-preadvwritev-common.c
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sys/uio.h>
+#include <sys/stat.h>
 
 static void do_prepare (void);
 #define PREPARE(argc, argv)     do_prepare ()
diff --git a/nptl/tst-basic7.c b/nptl/tst-basic7.c
index ff6b36be42..29a2461efe 100644
--- a/nptl/tst-basic7.c
+++ b/nptl/tst-basic7.c
@@ -1,4 +1,5 @@
 #include <errno.h>
+#include <limits.h>
 #include <pthread.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/nptl/tst-cancel25.c b/nptl/tst-cancel25.c
index ed4205ec45..c724d8ae2d 100644
--- a/nptl/tst-cancel25.c
+++ b/nptl/tst-cancel25.c
@@ -1,4 +1,4 @@
-#include <pthreadP.h>
+#include <pthread.h>
 #include <signal.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/nptl/tst-cancel4.c b/nptl/tst-cancel4.c
index 62e26222cc..a68a3efb68 100644
--- a/nptl/tst-cancel4.c
+++ b/nptl/tst-cancel4.c
@@ -19,6 +19,7 @@
 /* NOTE: this tests functionality beyond POSIX.  POSIX does not allow
    exit to be called more than once.  */
 
+#include <stddef.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -29,12 +30,14 @@
 #include <sys/msg.h>
 #include <unistd.h>
 #include <errno.h>
+#include <limits.h>
 #include <pthread.h>
 #include <fcntl.h>
 #include <termios.h>
 #include <sys/mman.h>
 #include <sys/poll.h>
 #include <sys/wait.h>
+#include <sys/stat.h>
 
 
 /* Since STREAMS are not supported in the standard Linux kernel and
diff --git a/nptl/tst-cancel4_1.c b/nptl/tst-cancel4_1.c
index 14f5b964d5..05b5f7bfd0 100644
--- a/nptl/tst-cancel4_1.c
+++ b/nptl/tst-cancel4_1.c
@@ -18,6 +18,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <stdio.h>
+#include <stddef.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sys/types.h>
diff --git a/nptl/tst-cancel4_2.c b/nptl/tst-cancel4_2.c
index a568c10e69..f7a87978b7 100644
--- a/nptl/tst-cancel4_2.c
+++ b/nptl/tst-cancel4_2.c
@@ -18,6 +18,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <stdio.h>
+#include <stddef.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sys/types.h>
diff --git a/nptl/tst-cond16.c b/nptl/tst-cond16.c
index d3d7cca40e..032677adcc 100644
--- a/nptl/tst-cond16.c
+++ b/nptl/tst-cond16.c
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <errno.h>
+#include <limits.h>
 #include <pthread.h>
 #include <stdbool.h>
 #include <stdio.h>
@@ -79,7 +80,7 @@ do_test (void)
   pthread_attr_t attr;
   int i, ret, sz;
   pthread_attr_init (&attr);
-  sz = __getpagesize ();
+  sz = sysconf (_SC_PAGESIZE);
   if (sz < PTHREAD_STACK_MIN)
 	  sz = PTHREAD_STACK_MIN;
   pthread_attr_setstacksize (&attr, sz);
diff --git a/nptl/tst-cond18.c b/nptl/tst-cond18.c
index 8d77025d79..187f3af1df 100644
--- a/nptl/tst-cond18.c
+++ b/nptl/tst-cond18.c
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <errno.h>
+#include <limits.h>
 #include <fcntl.h>
 #include <pthread.h>
 #include <stdbool.h>
@@ -90,7 +91,7 @@ do_test (void)
   pthread_attr_t attr;
   int i, ret, sz;
   pthread_attr_init (&attr);
-  sz = __getpagesize ();
+  sz = sysconf (_SC_PAGESIZE);
   if (sz < PTHREAD_STACK_MIN)
 	  sz = PTHREAD_STACK_MIN;
   pthread_attr_setstacksize (&attr, sz);
diff --git a/nptl/tst-cond4.c b/nptl/tst-cond4.c
index c07218c282..cc9c5c908a 100644
--- a/nptl/tst-cond4.c
+++ b/nptl/tst-cond4.c
@@ -18,6 +18,7 @@
 
 #include <errno.h>
 #include <pthread.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/nptl/tst-cond6.c b/nptl/tst-cond6.c
index 2dbe811634..ebfd449ffb 100644
--- a/nptl/tst-cond6.c
+++ b/nptl/tst-cond6.c
@@ -18,6 +18,7 @@
 
 #include <errno.h>
 #include <pthread.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/nptl/tst-stack2.c b/nptl/tst-stack2.c
index d7fdc8a8ee..fe319572e8 100644
--- a/nptl/tst-stack2.c
+++ b/nptl/tst-stack2.c
@@ -22,6 +22,7 @@
 #include <pthread.h>
 #include <stdlib.h>
 #include <stdio.h>
+#include <limits.h>
 
 static int seen;
 
diff --git a/nptl/tst-stackguard1.c b/nptl/tst-stackguard1.c
index 7829349c6f..0f21d0ddc3 100644
--- a/nptl/tst-stackguard1.c
+++ b/nptl/tst-stackguard1.c
@@ -19,6 +19,7 @@
 #include <errno.h>
 #include <pthread.h>
 #include <stdbool.h>
+#include <stddef.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/nptl/tst-tls4.c b/nptl/tst-tls4.c
index 5913f16577..15da980ea2 100644
--- a/nptl/tst-tls4.c
+++ b/nptl/tst-tls4.c
@@ -19,11 +19,10 @@
 #include <dlfcn.h>
 #include <errno.h>
 #include <pthread.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <tls.h>
-
 
 #define N 3
 
diff --git a/nptl/tst-tls4moda.c b/nptl/tst-tls4moda.c
index da902d9d61..cd44f4ec98 100644
--- a/nptl/tst-tls4moda.c
+++ b/nptl/tst-tls4moda.c
@@ -16,11 +16,8 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <stdio.h>
+#include <stddef.h>
 #include <stdlib.h>
-#include <unistd.h>
-#include <tls.h>
-
 
 static __thread unsigned char foo [32]
   __attribute__ ((tls_model ("initial-exec"), aligned (sizeof (void *))));
diff --git a/nptl/tst-tls4modb.c b/nptl/tst-tls4modb.c
index ebb1e53402..a0b1f623cb 100644
--- a/nptl/tst-tls4modb.c
+++ b/nptl/tst-tls4modb.c
@@ -16,11 +16,8 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <stdio.h>
+#include <stddef.h>
 #include <stdlib.h>
-#include <unistd.h>
-#include <tls.h>
-
 
 static int i;
 int bar;
diff --git a/nptl/tst-tls5.h b/nptl/tst-tls5.h
index 12f68b8196..6c2e1b0d09 100644
--- a/nptl/tst-tls5.h
+++ b/nptl/tst-tls5.h
@@ -1,7 +1,5 @@
 #include <stdint.h>
-#include <stdlib.h>
-#include <tls.h>
-
+#include <stddef.h>
 
 struct tls_obj
 {
diff --git a/posix/tst-getaddrinfo2.c b/posix/tst-getaddrinfo2.c
index 13edca0a34..d8be4a8e8f 100644
--- a/posix/tst-getaddrinfo2.c
+++ b/posix/tst-getaddrinfo2.c
@@ -2,6 +2,7 @@
 #include <errno.h>
 #include <netdb.h>
 #include <unistd.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sys/socket.h>
diff --git a/posix/tst-getaddrinfo5.c b/posix/tst-getaddrinfo5.c
index eb3934492f..acb1c29964 100644
--- a/posix/tst-getaddrinfo5.c
+++ b/posix/tst-getaddrinfo5.c
@@ -19,6 +19,7 @@
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <netdb.h>
+#include <stdio.h>
 #include <string.h>
 
 static int
diff --git a/posix/tst-pathconf.c b/posix/tst-pathconf.c
index 5014a2b2ac..cce59e6d47 100644
--- a/posix/tst-pathconf.c
+++ b/posix/tst-pathconf.c
@@ -21,6 +21,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <sys/stat.h>
 
 
 static void prepare (void);
diff --git a/posix/tst-posix_fadvise-common.c b/posix/tst-posix_fadvise-common.c
index 2e7c07f3b0..45e36fc56f 100644
--- a/posix/tst-posix_fadvise-common.c
+++ b/posix/tst-posix_fadvise-common.c
@@ -19,6 +19,7 @@
 #include <errno.h>
 #include <fcntl.h>
 #include <limits.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <sys/types.h>
 #include <sys/stat.h>
diff --git a/posix/tst-preadwrite-common.c b/posix/tst-preadwrite-common.c
index 034f84d696..9468ed85a9 100644
--- a/posix/tst-preadwrite-common.c
+++ b/posix/tst-preadwrite-common.c
@@ -20,6 +20,7 @@
 #include <error.h>
 #include <string.h>
 #include <unistd.h>
+#include <sys/stat.h>
 
 static void do_prepare (void);
 #define PREPARE(argc, argv)	do_prepare ()
diff --git a/posix/tst-regex.c b/posix/tst-regex.c
index 112acf02f2..df2c108be5 100644
--- a/posix/tst-regex.c
+++ b/posix/tst-regex.c
@@ -15,9 +15,6 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <spawn.h>
-#include "spawn_int.h"
-
 #include <assert.h>
 #include <errno.h>
 #include <error.h>
@@ -26,6 +23,7 @@
 #include <iconv.h>
 #include <locale.h>
 #include <mcheck.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/posix/tst-regexloc.c b/posix/tst-regexloc.c
index 8fbb4b1f5d..0dbd061973 100644
--- a/posix/tst-regexloc.c
+++ b/posix/tst-regexloc.c
@@ -15,9 +15,6 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <spawn.h>
-#include "spawn_int.h"
-
 #include <sys/types.h>
 #include <regex.h>
 #include <locale.h>
diff --git a/posix/tst-vfork3.c b/posix/tst-vfork3.c
index 4ee19733b4..c104271c44 100644
--- a/posix/tst-vfork3.c
+++ b/posix/tst-vfork3.c
@@ -23,6 +23,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <sys/stat.h>
 #include <sys/wait.h>
 
 static int do_test (void);
diff --git a/resolv/tst-bug18665-tcp.c b/resolv/tst-bug18665-tcp.c
index 8ad069c245..4bc0c262b1 100644
--- a/resolv/tst-bug18665-tcp.c
+++ b/resolv/tst-bug18665-tcp.c
@@ -20,6 +20,7 @@
 #include <netdb.h>
 #include <resolv.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
 #include <support/check.h>
 #include <support/check_nss.h>
diff --git a/resolv/tst-res_hconf_reorder.c b/resolv/tst-res_hconf_reorder.c
index 73a0bc793f..20e5a5a448 100644
--- a/resolv/tst-res_hconf_reorder.c
+++ b/resolv/tst-res_hconf_reorder.c
@@ -19,6 +19,7 @@
 
 #include <errno.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
 #include <time.h>
 #include <dlfcn.h>
diff --git a/resolv/tst-resolv-search.c b/resolv/tst-resolv-search.c
index 53c22973ba..a5406b3b0e 100644
--- a/resolv/tst-resolv-search.c
+++ b/resolv/tst-resolv-search.c
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <resolv.h>
+#include <stdlib.h>
 #include <string.h>
 #include <support/check.h>
 #include <support/check_nss.h>
diff --git a/stdio-common/tst-fmemopen2.c b/stdio-common/tst-fmemopen2.c
index 9721b0c2ce..891b7ca111 100644
--- a/stdio-common/tst-fmemopen2.c
+++ b/stdio-common/tst-fmemopen2.c
@@ -21,6 +21,7 @@
 #include <stdio.h>
 #include <string.h>
 #include <sys/types.h>
+#include <stdint.h>
 #include <errno.h>
 
 /* Check fmemopen with user provided buffer open for write.  */
diff --git a/stdio-common/tst-vfprintf-width-prec.c b/stdio-common/tst-vfprintf-width-prec.c
index 392d9bb9f7..c85190275a 100644
--- a/stdio-common/tst-vfprintf-width-prec.c
+++ b/stdio-common/tst-vfprintf-width-prec.c
@@ -18,6 +18,7 @@
 
 #include <mcheck.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <sys/resource.h>
 #include <wchar.h>
 
diff --git a/stdlib/test-canon.c b/stdlib/test-canon.c
index c52d02a8a9..d664f73c45 100644
--- a/stdlib/test-canon.c
+++ b/stdlib/test-canon.c
@@ -26,6 +26,7 @@
 #include <string.h>
 #include <unistd.h>
 #include <sys/param.h>
+#include <sys/stat.h>
 
 /* Prototype for our test function.  */
 extern int do_test (int argc, char *argv[]);
diff --git a/stdlib/tst-tls-atexit.c b/stdlib/tst-tls-atexit.c
index 42a30e080c..6dbf49d460 100644
--- a/stdlib/tst-tls-atexit.c
+++ b/stdlib/tst-tls-atexit.c
@@ -38,6 +38,7 @@
 #include <string.h>
 #include <errno.h>
 #include <link.h>
+#include <stdbool.h>
 
 #ifndef NO_DELETE
 # define LOADED_IS_GOOD false
diff --git a/string/test-memchr.c b/string/test-memchr.c
index d62889ff8f..d64d10cb0e 100644
--- a/string/test-memchr.c
+++ b/string/test-memchr.c
@@ -23,7 +23,9 @@
 #else
 # define TEST_NAME "wmemchr"
 #endif /* WIDE */
+
 #include "test-string.h"
+#include <stdint.h>
 
 #ifndef WIDE
 # define MEMCHR memchr
diff --git a/string/tst-cmp.c b/string/tst-cmp.c
index 99f958ea16..ae63228318 100644
--- a/string/tst-cmp.c
+++ b/string/tst-cmp.c
@@ -23,6 +23,7 @@
 #include <limits.h>
 #include <malloc.h>
 #include <stdbool.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 
diff --git a/sysdeps/pthread/tst-timer.c b/sysdeps/pthread/tst-timer.c
index 1a09fb78f3..6866180555 100644
--- a/sysdeps/pthread/tst-timer.c
+++ b/sysdeps/pthread/tst-timer.c
@@ -23,6 +23,7 @@
 #include <time.h>
 #include <unistd.h>
 #include <stdlib.h>
+#include <stdint.h>
 
 
 static void
diff --git a/sysdeps/unix/sysv/linux/tst-sync_file_range.c b/sysdeps/unix/sysv/linux/tst-sync_file_range.c
index b0a6104fd0..73cbcb3247 100644
--- a/sysdeps/unix/sysv/linux/tst-sync_file_range.c
+++ b/sysdeps/unix/sysv/linux/tst-sync_file_range.c
@@ -21,6 +21,7 @@
 #include <errno.h>
 #include <fcntl.h>
 #include <limits.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <sys/stat.h>
 
diff --git a/sysdeps/wordsize-64/tst-writev.c b/sysdeps/wordsize-64/tst-writev.c
index 685f20f430..bda2b3fe74 100644
--- a/sysdeps/wordsize-64/tst-writev.c
+++ b/sysdeps/wordsize-64/tst-writev.c
@@ -17,8 +17,10 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <fcntl.h>
+#include <limits.h>
 #include <paths.h>
 #include <stdio.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <unistd.h>
 #include <sys/uio.h>
diff --git a/sysdeps/x86_64/fpu/math-tests-arch.h b/sysdeps/x86_64/fpu/math-tests-arch.h
index 98f7cf6548..9278e3440b 100644
--- a/sysdeps/x86_64/fpu/math-tests-arch.h
+++ b/sysdeps/x86_64/fpu/math-tests-arch.h
@@ -16,11 +16,11 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#include <cpu-features.h>
+
 #if defined REQUIRE_AVX
-# include <init-arch.h>
 
 # define INIT_ARCH_EXT
-
 # define CHECK_ARCH_EXT                                        \
   do                                                           \
     {                                                          \
@@ -29,10 +29,8 @@
   while (0)
 
 #elif defined REQUIRE_AVX2
-# include <init-arch.h>
 
 # define INIT_ARCH_EXT
-
 # define CHECK_ARCH_EXT                                        \
   do                                                           \
     {                                                          \
@@ -41,10 +39,8 @@
   while (0)
 
 #elif defined REQUIRE_AVX512F
-# include <init-arch.h>
 
 # define INIT_ARCH_EXT
-
 # define CHECK_ARCH_EXT                                        \
   do                                                           \
     {                                                          \
diff --git a/sysdeps/x86_64/multiarch/test-multiarch.c b/sysdeps/x86_64/multiarch/test-multiarch.c
index 3974842c19..597d64e1e8 100644
--- a/sysdeps/x86_64/multiarch/test-multiarch.c
+++ b/sysdeps/x86_64/multiarch/test-multiarch.c
@@ -16,7 +16,7 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <init-arch.h>
+#include <cpu-features.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/sysdeps/x86_64/tst-auditmod10b.c b/sysdeps/x86_64/tst-auditmod10b.c
index c5741b28c1..5b9a985ca2 100644
--- a/sysdeps/x86_64/tst-auditmod10b.c
+++ b/sysdeps/x86_64/tst-auditmod10b.c
@@ -19,6 +19,8 @@
    function parameter passing/return.  */
 
 #include <dlfcn.h>
+#include <link.h>
+#include <stddef.h>
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/sysdeps/x86_64/tst-auditmod3b.c b/sysdeps/x86_64/tst-auditmod3b.c
index 1a41ca80c0..7aad92382e 100644
--- a/sysdeps/x86_64/tst-auditmod3b.c
+++ b/sysdeps/x86_64/tst-auditmod3b.c
@@ -2,6 +2,8 @@
    function parameter passing/return.  */
 
 #include <dlfcn.h>
+#include <link.h>
+#include <stddef.h>
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/sysdeps/x86_64/tst-auditmod4b.c b/sysdeps/x86_64/tst-auditmod4b.c
index 2b0d827e88..1153ea442c 100644
--- a/sysdeps/x86_64/tst-auditmod4b.c
+++ b/sysdeps/x86_64/tst-auditmod4b.c
@@ -2,6 +2,8 @@
    function parameter passing/return.  */
 
 #include <dlfcn.h>
+#include <link.h>
+#include <stddef.h>
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/sysdeps/x86_64/tst-auditmod5b.c b/sysdeps/x86_64/tst-auditmod5b.c
index a74d261f03..6a280fd61b 100644
--- a/sysdeps/x86_64/tst-auditmod5b.c
+++ b/sysdeps/x86_64/tst-auditmod5b.c
@@ -2,6 +2,8 @@
    function parameter passing/return.  */
 
 #include <dlfcn.h>
+#include <link.h>
+#include <stddef.h>
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/sysdeps/x86_64/tst-auditmod6b.c b/sysdeps/x86_64/tst-auditmod6b.c
index 886fc33e9b..3533602c07 100644
--- a/sysdeps/x86_64/tst-auditmod6b.c
+++ b/sysdeps/x86_64/tst-auditmod6b.c
@@ -2,6 +2,8 @@
    function parameter passing/return.  */
 
 #include <dlfcn.h>
+#include <link.h>
+#include <stddef.h>
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/sysdeps/x86_64/tst-auditmod6c.c b/sysdeps/x86_64/tst-auditmod6c.c
index b2ee24d8bf..8000e89224 100644
--- a/sysdeps/x86_64/tst-auditmod6c.c
+++ b/sysdeps/x86_64/tst-auditmod6c.c
@@ -2,6 +2,8 @@
    function parameter passing/return.  */
 
 #include <dlfcn.h>
+#include <link.h>
+#include <stddef.h>
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/sysdeps/x86_64/tst-auditmod7b.c b/sysdeps/x86_64/tst-auditmod7b.c
index f27076d3bb..5abe6d1bc9 100644
--- a/sysdeps/x86_64/tst-auditmod7b.c
+++ b/sysdeps/x86_64/tst-auditmod7b.c
@@ -2,6 +2,8 @@
    function parameter passing/return.  */
 
 #include <dlfcn.h>
+#include <link.h>
+#include <stddef.h>
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/time/clocktest.c b/time/clocktest.c
index 13b7420e2e..779c05d8d9 100644
--- a/time/clocktest.c
+++ b/time/clocktest.c
@@ -3,6 +3,7 @@
 #include <stdlib.h>
 #include <time.h>
 #include <unistd.h>
+#include <stdint.h>
 
 volatile int gotit = 0;
 
diff --git a/time/tst-posixtz.c b/time/tst-posixtz.c
index 16aa19d654..9bec7ae4bb 100644
--- a/time/tst-posixtz.c
+++ b/time/tst-posixtz.c
@@ -2,6 +2,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <time.h>
+#include <stdint.h>
 
 struct
 {
diff --git a/timezone/tst-timezone.c b/timezone/tst-timezone.c
index 95bd7f1b6b..1b505134f3 100644
--- a/timezone/tst-timezone.c
+++ b/timezone/tst-timezone.c
@@ -20,6 +20,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <stdint.h>
 #include <unistd.h>
 
 int failed = 0;
