This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch zack/testsuite-isomac created. glibc-2.25-74-g5814718


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, zack/testsuite-isomac has been created
        at  581471821d183800be1fafcbeebf3f821b43d673 (commit)

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=581471821d183800be1fafcbeebf3f821b43d673

commit 581471821d183800be1fafcbeebf3f821b43d673
Author: Zack Weinberg <zackw@panix.com>
Date:   Sun Nov 20 20:46:30 2016 -0500

    Suppress internal declarations for most of the testsuite.
    
    And here finally is the main change, adding a new build module called
    'testsuite'.  IS_IN (testsuite) implies _ISOMAC, as do IS_IN_build and
    __cplusplus (which means several ad-hoc tests for __cplusplus can go
    away).  libc-symbols.h now suppresses almost all of *itself* when
    _ISOMAC is defined; in particular, _ISOMAC mode does not get config.h
    automatically anymore.
    
    There are still quite a few tests that need to see internal gunk of
    one variety or another.  For them, we now have 'tests-internal' and
    'test-internal-extras'; files in this category will still be compiled
    with MODULE_NAME=nonlib, and everything proceeds as it always has.
    The bulk of this patch is moving tests from 'tests' to
    'tests-internal'.  There is also 'modules-names-tests', which has the
    inverse effect on files in 'modules-names'.
    
    In case you didn't realize it was possible for libc-symbols.h to be
    included without MODULE_NAME being defined at all, the most important
    time this happens is when preprocessing Versions files.  These *do*
    need to see config.h, hence the selected behavior.
    
    The remaining changes to C source files in this patch seemed likely to
    cause problems in the absence of the main change.  They should be
    relatively self-explanatory.  In a few cases I duplicated a definition
    from an internal header rather than move the test to tests-internal;
    this was a judgement call each time and I'm happy to change those
    however reviewers feel is more appropriate.
    
    N.B. extra-modules.mk was almost identical to cppflags-iterator.mk; the
    only differences were that it used a different input variable and it
    didn't let the caller control the module.  So I have removed it and
    changed the sole use to use cppflags-iterator.mk instead.
    
    	* Makerules: New subdir configuration variables 'tests-internal'
    	and 'test-internal-extras'.  Test files in these categories will
    	still be compiled with MODULE_NAME=nonlib.  Test files in the
    	existing categories (tests, xtests, test-srcs, test-extras) are
    	now compiled with MODULE_NAME=testsuite.
    	New subdir configuration variable 'modules-names-tests'.  Files
    	which are in both 'modules-names' and 'modules-names-tests' will
    	be compiled with MODULE_NAME=testsuite instead of
    	MODULE_NAME=extramodules.
    	Use cppflags-iterator.mk instead of extra-modules.mk for the
    	files in $(modules-names).
    	(gen-as-const-headers): Move to tests-internal.
    	(do-tests-clean, common-mostlyclean): Support tests-internal.
    	* Makeconfig (built-modules): Add testsuite.
    	* Makefile: Change libof-check-installed-headers-c and
    	libof-check-installed-headers-cxx to 'testsuite'.
    	* Rules: Likewise.  Support tests-internal.
    	* extra-modules.mk: Removed.
    	* benchtests/strcoll-inputs/filelist#en_US.UTF-8:
    	Remove extra-modules.mk.
    
    	* config.h.in: Don't check for __OPTIMIZE__ or __FAST_MATH__ here.
    	* include/libc-symbols.h: Move definitions of _GNU_SOURCE,
    	PASTE_NAME, PASTE_NAME1, IN_MODULE, IS_IN, and IS_IN_LIB to the
    	very top of the file and rationalize their order.
    	If MODULE_NAME is not defined at all, define IS_IN to always be
    	false, and don't define _ISOMAC.
    	If any of IS_IN (testsuite), IS_IN_build, or __cplusplus are
    	true, define _ISOMAC and suppress everything else in this file,
    	starting with the inclusion of config.h.
    	Do check for inappropriate definitions of __OPTIMIZE__ and
    	__FAST_MATH__ here, but only if _ISOMAC is not defined.
            Correct some out-of-date commentary.
    
    	* include/math.h: If _ISOMAC is defined, undefine NO_LONG_DOUBLE
    	and _Mlong_double_ before including math.h.
    	* include/stdio.h: If _ISOMAC is defined, undefine _IO_MTSAFE_IO
    	before including libio/stdio.h (this causes the external version of
    	_IO_lock_t to be visible).
    	* include/string.h: If _ISOMAC is defined, don't expose
    	_STRING_ARCH_unaligned. Move a comment to a more appropriate
    	location.
    
    	* include/errno.h, include/stdio.h, include/stdlib.h, include/string.h
    	* include/time.h, include/unistd.h, include/wchar.h: No need to
    	check __cplusplus nor use __BEGIN_DECLS/__END_DECLS.
    
    	* dlfcn/Makefile: Move tst-dladdr to tests-internal.
    	* elf/Makefile: Move tst-ptrguard1-static, tst-stackguard1-static,
    	tst-tls1-static, tst-tls2-static, tst-tls3-static, loadtest,
    	unload, unload2, circleload1, neededtest, neededtest2,
    	neededtest3, neededtest4, tst-tls1, tst-tls2, tst-tls3,
    	tst-tls6, tst-tls7, tst-tls8, tst-dlmopen2, tst-ptrguard1,
    	tst-stackguard1, tst-_dl_addr_inside_object, and all of the
    	ifunc tests to tests-internal.
    	Don't add $(modules-names) to test-extras.
    	* inet/Makefile: Move tst-inet6_scopeid_pton to tests-internal.
    	* malloc/Makefile: Move tst-mallocstate and tst-scratch_buffer to
    	tests-internal.
    	* misc/Makefile: Move tst-atomic and tst-atomic-long to tests-internal.
    	* nptl/Makefile: Move tst-typesizes, tst-rwlock19, tst-sem11,
    	tst-sem12, tst-sem13, tst-barrier5, tst-signal7, tst-tls3,
    	tst-tls3-malloc, tst-tls5, tst-stackguard1, tst-sem11-static,
    	tst-sem12-static, and tst-stackguard1-static to tests-internal.
            Link tests-internal with libpthread also.
    	Don't add $(modules-names) to test-extras.
    	* nss/Makefile: Move tst-field and tst-cancel-getpwuid_r to
    	tests-internal.
    	* posix/Makefile: Move bug-regex5, bug-regex20, bug-regex33,
    	tst-rfc3484, tst-rfc3484-2, and tst-rfc3484-3 to tests-internal.
    	* stdlib/Makefile: Move tst-strtod1i, tst-strtod3, tst-strtod4,
    	tst-strtod5i, tst-tls-atexit, and tst-tls-atexit-nodelete to
    	tests-internal.
    	* sysdeps/powerpc/Makefile: Move test-get_hwcap and
    	test-get_hwcap-static to tests-internal.
    	* sysdeps/x86_64/fpu/Makefile: Add all libmvec test modules to
    	modules-names-tests.
    
    	* elf/tst-env-setuid-tunables.c: Include config.h with _LIBC
    	defined, for HAVE_TUNABLES.
    	* inet/tst-checks-posix.c: No need to define _ISOMAC.
    	* intl/tst-gettext2.c: Provide own definition of N_.
    	* math/test-signgam-finite-c99.c: No need to define _ISOMAC.
    	* math/test-signgam-main.c: No need to define _ISOMAC.
    	* stdlib/tst-strtod.c: Split locale_test to...
    	* stdlib/tst-strtod1i.c: ...this new file.
    	* stdlib/tst-strtod5.c: Split tests of __strtod_internal to...
    	* stdlib/tst-strtod5i.c: ...this new file.
    	* string/test-string.h: Include stdint.h. Duplicate definition of
    	inhibit_loop_to_libcall here (from libc-symbols.h).
    	* string/test-strstr.c: Provide dummy definition of
    	libc_hidden_builtin_def when including strstr.c.
    	* sysdeps/ia64/fpu/libm-symbols.h: Suppress entire file in _ISOMAC
    	mode; no need to test __STRICT_ANSI__ nor __cplusplus as well.
    	* 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.
    
    	* misc/sys/cdefs.h (__NTHNL): New macro.
    	* sysdeps/m68k/m680x0/fpu/bits/mathinline.h
    	(__m81_defun): Use __NTHNL to avoid errors with GCC 6.

diff --git a/Makeconfig b/Makeconfig
index 97a15b5..f4c4fb4 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -901,7 +901,8 @@ libio-include = -I$(..)libio
 # List of non-library modules that we build.
 built-modules = iconvprogs iconvdata ldconfig lddlibc4 libmemusage \
 		libSegFault libpcprofile librpcsvc locale-programs \
-		memusagestat nonlib nscd extramodules libnldbl libsupport
+		memusagestat nonlib nscd extramodules libnldbl libsupport \
+		testsuite
 
 in-module = $(subst -,_,$(firstword $(libof-$(basename $(@F))) \
 				    $(libof-$(<F)) \
diff --git a/Makefile b/Makefile
index 425cb79..0ce12e9 100644
--- a/Makefile
+++ b/Makefile
@@ -321,7 +321,7 @@ endif
 ifneq "$(headers)" ""
 # Special test of all the installed headers in this directory.
 tests-special += $(objpfx)check-installed-headers-c.out
-libof-check-installed-headers-c := nonlib
+libof-check-installed-headers-c := testsuite
 $(objpfx)check-installed-headers-c.out: \
     scripts/check-installed-headers.sh $(headers)
 	$(SHELL) $(..)scripts/check-installed-headers.sh c \
@@ -331,7 +331,7 @@ $(objpfx)check-installed-headers-c.out: \
 
 ifneq "$(CXX)" ""
 tests-special += $(objpfx)check-installed-headers-cxx.out
-libof-check-installed-headers-cxx := nonlib
+libof-check-installed-headers-cxx := testsuite
 $(objpfx)check-installed-headers-cxx.out: \
     scripts/check-installed-headers.sh $(headers)
 	$(SHELL) $(..)scripts/check-installed-headers.sh c++ \
diff --git a/Makerules b/Makerules
index e9194e5..69ab1a3 100644
--- a/Makerules
+++ b/Makerules
@@ -277,7 +277,7 @@ $(common-objpfx)%.h $(common-objpfx)%.h.d: $(..)scripts/gen-as-const.awk \
 vpath %.sym $(sysdirs)
 before-compile += $(gen-as-const-headers:%.sym=$(common-objpfx)%.h)
 
-tests += $(gen-as-const-headers:%.sym=test-as-const-%)
+tests-internal += $(gen-as-const-headers:%.sym=test-as-const-%)
 generated += $(gen-as-const-headers:%.sym=test-as-const-%.c)
 $(objpfx)test-as-const-%.c: $(..)scripts/gen-as-const.awk $(..)Makerules \
 			    %.sym $(common-objpfx)%.h
@@ -797,12 +797,21 @@ endif
 
 # The makefile may define $(modules-names) to build additional modules.
 # These are built with $(build-module), except any in $(modules-names-nobuild).
+# MODULE_NAME=extramodules, except any in $(modules-names-tests).
 ifdef modules-names
-# extra-lib.mk is included once for each extra lib to define rules
-# to build it, and to add its objects to the various variables.
-# During its evaluation, $(lib) is set to the name of the library.
-extra-modules-left := $(modules-names)
-include $(patsubst %,$(..)extra-modules.mk,$(modules-names))
+cpp-srcs-left := $(filter-out $(modules-names-tests),$(modules-names))
+ifneq (,$(cpp-srcs-left))
+lib := extramodules
+include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
+endif
+
+ifdef modules-names-tests
+cpp-srcs-left := $(filter $(modules-names-tests),$(modules-names))
+ifneq (,$(cpp-srcs-left))
+lib := testsuite
+include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
+endif
+endif
 
 extra-modules-build := $(filter-out $(modules-names-nobuild),$(modules-names))
 $(extra-modules-build:%=$(objpfx)%.so): $(objpfx)%.so: \
@@ -814,7 +823,7 @@ endif
 	     $(patsubst %.o,%.d,$(filter %.o,$(extra-objs:.os=.o))) \
 	     $(patsubst %.oS,%.d,$(filter %.oS,$(extra-objs))) \
 	     $(patsubst %.o,%.d,$(filter %.o,$(extra-test-objs:.os=.o))) \
-	     $(addsuffix .d,$(tests) $(xtests) $(test-srcs))
+	     $(addsuffix .d,$(tests) $(tests-internal) $(xtests) $(test-srcs))
 ifeq ($(build-programs),yes)
 +depfiles += $(addsuffix .d,$(others) $(sysdep-others))
 endif
@@ -1326,7 +1335,17 @@ check: tests
 .PHONY: xcheck
 xcheck: xtests
 
-all-nonlib = $(strip $(tests) $(xtests) $(test-srcs) $(test-extras) $(others))
+# The only difference between MODULE_NAME=testsuite and MODULE_NAME=nonlib is
+# that almost all internal declarations from config.h, libc-symbols.h, and
+# include/*.h are not available to 'testsuite' code, but are to 'nonlib' code.
+all-testsuite := $(strip $(tests) $(xtests) $(test-srcs) $(test-extras))
+ifneq (,$(all-testsuite))
+cpp-srcs-left = $(all-testsuite)
+lib := testsuite
+include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
+endif
+
+all-nonlib := $(strip $(tests-internal) $(test-internal-extras) $(others))
 ifneq (,$(all-nonlib))
 cpp-srcs-left = $(all-nonlib)
 lib := nonlib
@@ -1540,22 +1559,32 @@ clean: common-clean
 mostlyclean: common-mostlyclean
 
 do-tests-clean:
-	-rm -f $(addprefix $(objpfx),$(addsuffix .out,$(tests) $(xtests) \
+	-rm -f $(addprefix $(objpfx),$(addsuffix .out,$(tests) \
+						      $(tests-internal) \
+						      $(xtests) \
 						      $(test-srcs)) \
 				     $(addsuffix .test-result,$(tests) \
+							      $(tests-internal) \
 							      $(xtests) \
 							      $(test-srcs)))
 
 # Remove the object files.
 common-mostlyclean:
-	-rm -f $(addprefix $(objpfx),$(tests) $(xtests) $(test-srcs) \
+	-rm -f $(addprefix $(objpfx),$(tests) $(tests-internal) $(xtests) \
+				     $(test-srcs) \
 				     $(others) $(sysdep-others) stubs \
-				     $(addsuffix .o,$(tests) $(xtests) \
-						    $(test-srcs) $(others) \
+				     $(addsuffix .o,$(tests) \
+						    $(tests-internal) \
+						    $(xtests) \
+						    $(test-srcs) \
+						    $(others) \
 						    $(sysdep-others)) \
-				     $(addsuffix .out,$(tests) $(xtests) \
+				     $(addsuffix .out,$(tests) \
+						      $(tests-internal) \
+						      $(xtests) \
 						      $(test-srcs)) \
 				     $(addsuffix .test-result,$(tests) \
+							      $(tests-internal) \
 							      $(xtests) \
 							      $(test-srcs)))
 	-rm -f $(addprefix $(objpfx),$(extra-objs) $(extra-test-objs) \
diff --git a/Rules b/Rules
index 917bc96..168cf50 100644
--- a/Rules
+++ b/Rules
@@ -84,7 +84,7 @@ common-generated += dummy.o dummy.c
 ifneq "$(headers)" ""
 # Special test of all the installed headers in this directory.
 tests-special += $(objpfx)check-installed-headers-c.out
-libof-check-installed-headers-c := nonlib
+libof-check-installed-headers-c := testsuite
 $(objpfx)check-installed-headers-c.out: \
     $(..)scripts/check-installed-headers.sh $(headers)
 	$(SHELL) $(..)scripts/check-installed-headers.sh c \
@@ -94,7 +94,7 @@ $(objpfx)check-installed-headers-c.out: \
 
 ifneq "$(CXX)" ""
 tests-special += $(objpfx)check-installed-headers-cxx.out
-libof-check-installed-headers-cxx := nonlib
+libof-check-installed-headers-cxx := testsuite
 $(objpfx)check-installed-headers-cxx.out: \
     $(..)scripts/check-installed-headers.sh $(headers)
 	$(SHELL) $(..)scripts/check-installed-headers.sh c++ \
@@ -129,12 +129,14 @@ endif
 others: $(py-const)
 
 ifeq ($(run-built-tests),no)
-tests: $(addprefix $(objpfx),$(filter-out $(tests-unsupported),$(tests)) \
+tests: $(addprefix $(objpfx),$(filter-out $(tests-unsupported), \
+                                          $(tests) $(tests-internal)) \
 			     $(test-srcs)) $(tests-special) \
 			     $(tests-printers-programs)
 xtests: tests $(xtests-special)
 else
-tests: $(tests:%=$(objpfx)%.out) $(tests-special) $(tests-printers-out)
+tests: $(tests:%=$(objpfx)%.out) $(tests-internal:%=$(objpfx)%.out) \
+       $(tests-special) $(tests-printers-out)
 xtests: tests $(xtests:%=$(objpfx)%.out) $(xtests-special)
 endif
 
@@ -143,7 +145,7 @@ xtests-special-notdir = $(patsubst $(objpfx)%, %, $(xtests-special))
 ifeq ($(run-built-tests),no)
 tests-expected =
 else
-tests-expected = $(tests) $(tests-printers)
+tests-expected = $(tests) $(tests-internal) $(tests-printers)
 endif
 tests:
 	$(..)scripts/merge-test-results.sh -s $(objpfx) $(subdir) \
@@ -156,7 +158,7 @@ xtests:
 
 ifeq ($(build-programs),yes)
 binaries-all-notests = $(others) $(sysdep-others)
-binaries-all-tests = $(tests) $(xtests) $(test-srcs)
+binaries-all-tests = $(tests) $(tests-internal) $(xtests) $(test-srcs)
 binaries-all = $(binaries-all-notests) $(binaries-all-tests)
 binaries-static-notests = $(others-static)
 binaries-static-tests = $(tests-static) $(xtests-static)
@@ -170,7 +172,7 @@ binaries-pie-notests =
 endif
 else
 binaries-all-notests =
-binaries-all-tests = $(tests) $(xtests) $(test-srcs)
+binaries-all-tests = $(tests) $(tests-internal) $(xtests) $(test-srcs)
 binaries-all = $(binaries-all-tests)
 binaries-static-notests =
 binaries-static-tests =
@@ -230,7 +232,7 @@ $(addprefix $(objpfx),$(binaries-static-tests)): %: %.o \
 	$(+link-static-tests)
 endif
 
-ifneq "$(strip $(tests) $(xtests) $(test-srcs))" ""
+ifneq "$(strip $(tests) $(tests-internal) $(xtests) $(test-srcs))" ""
 # These are the implicit rules for making test outputs
 # from the test programs and whatever input files are present.
 
diff --git a/benchtests/strcoll-inputs/filelist#en_US.UTF-8 b/benchtests/strcoll-inputs/filelist#en_US.UTF-8
index b7b3801..eb23b47 100644
--- a/benchtests/strcoll-inputs/filelist#en_US.UTF-8
+++ b/benchtests/strcoll-inputs/filelist#en_US.UTF-8
@@ -9667,7 +9667,6 @@ hr.po
 libc.pot
 ko.po
 ru.po
-extra-modules.mk
 intl
 tst-gettext4-fr.po
 tstcodeset.po
diff --git a/config.h.in b/config.h.in
index fb2cc51..50f03c0 100644
--- a/config.h.in
+++ b/config.h.in
@@ -1,14 +1,3 @@
-#if !defined IS_IN_build && !defined __ASSEMBLER__ && !defined _ISOMAC \
-    && !defined __OPTIMIZE__
-# error "glibc cannot be compiled without optimization"
-#endif
-
-/* Another evil option when it comes to compiling the C library is
-   --ffast-math since it alters the ABI.  */
-#if defined __FAST_MATH__ && !defined TEST_FAST_MATH
-# error "glibc must not be compiled with -ffast-math"
-#endif
-
 /* Define if building with SELinux support.  Set by --with-selinux.  */
 #undef	HAVE_SELINUX
 
diff --git a/dlfcn/Makefile b/dlfcn/Makefile
index 94f511d..8e4f9d1 100644
--- a/dlfcn/Makefile
+++ b/dlfcn/Makefile
@@ -34,9 +34,10 @@ libdl-shared-only-routines := dlopenold dlfcn
 endif
 
 ifeq (yes,$(build-shared))
-tests = glrefmain failtest tst-dladdr default errmsg1 tstcxaatexit \
+tests = glrefmain failtest default errmsg1 tstcxaatexit \
 	bug-dlopen1 bug-dlsym1 tst-dlinfo bug-atexit1 bug-atexit2 \
 	bug-atexit3 tstatexit bug-dl-leaf tst-rec-dlopen
+tests-internal = tst-dladdr
 endif
 modules-names = glreflib1 glreflib2 glreflib3 failtestmod defaultmod1 \
 		defaultmod2 errmsg1mod modatexit modcxaatexit \
diff --git a/elf/Makefile b/elf/Makefile
index 61abeb5..876641a 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -142,43 +142,49 @@ $(inst_auditdir)/sotruss-lib.so: $(objpfx)sotruss-lib.so $(+force)
 	$(do-install-program)
 endif
 
-tests = tst-tls1 tst-tls2 tst-tls9 tst-leaks1 \
-	tst-array1 tst-array2 tst-array3 tst-array4 tst-array5 \
-	tst-auxv
-tests-static = tst-tls1-static tst-tls2-static tst-stackguard1-static \
-	       tst-leaks1-static tst-array1-static tst-array5-static \
-	       tst-ptrguard1-static tst-dl-iter-static \
+tests-static-normal := tst-leaks1-static tst-array1-static tst-array5-static \
+	       tst-dl-iter-static \
 	       tst-tlsalign-static tst-tlsalign-extern-static \
 	       tst-linkall-static tst-env-setuid tst-env-setuid-tunables
+tests-static-internal := tst-tls1-static tst-tls2-static \
+	       tst-ptrguard1-static tst-stackguard1-static
+
+tests := tst-tls9 tst-leaks1 \
+	tst-array1 tst-array2 tst-array3 tst-array4 tst-array5 \
+	tst-auxv
+tests-internal := tst-tls1 tst-tls2 $(tests-static-internal)
+tests-static := $(tests-static-normal) $(tests-static-internal)
+
 ifeq (yes,$(build-shared))
 tests-static += tst-tls9-static
 tst-tls9-static-ENV = \
        LD_LIBRARY_PATH=$(objpfx):$(common-objpfx):$(common-objpfx)dlfcn
-endif
-tests += $(tests-static)
-ifeq (yes,$(build-shared))
-tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \
-	 constload1 order noload filter unload \
+
+tests += restest1 preloadtest loadfail multiload origtest resolvfail \
+	 constload1 order noload filter \
 	 reldep reldep2 reldep3 reldep4 nodelete nodelete2 \
-	 nodlopen nodlopen2 neededtest neededtest2 \
-	 neededtest3 neededtest4 unload2 lateglobal initfirst global \
+	 nodlopen nodlopen2 lateglobal initfirst global \
 	 restest2 next dblload dblunload reldep5 reldep6 reldep7 reldep8 \
-	 circleload1 tst-tls3 tst-tls4 tst-tls5 tst-tls6 tst-tls7 tst-tls8 \
+	 tst-tls4 tst-tls5 \
 	 tst-tls10 tst-tls11 tst-tls12 tst-tls13 tst-tls14 tst-tls15 \
 	 tst-tls16 tst-tls17 tst-tls18 tst-tls19 tst-tls-dlinfo \
 	 tst-align tst-align2 $(tests-execstack-$(have-z-execstack)) \
 	 tst-dlmodcount tst-dlopenrpath tst-deep1 \
-	 tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \
+	 tst-dlmopen1 tst-dlmopen3 \
 	 unload3 unload4 unload5 unload6 unload7 unload8 tst-global1 order2 \
 	 tst-audit1 tst-audit2 tst-audit8 tst-audit9 \
-	 tst-stackguard1 tst-addr1 tst-thrlock \
+	 tst-addr1 tst-thrlock \
 	 tst-unique1 tst-unique2 $(if $(CXX),tst-unique3 tst-unique4 \
 	 tst-nodelete) \
 	 tst-initorder tst-initorder2 tst-relsort1 tst-null-argv \
-	 tst-ptrguard1 tst-tlsalign tst-tlsalign-extern tst-nodelete-opened \
+	 tst-tlsalign tst-tlsalign-extern tst-nodelete-opened \
 	 tst-nodelete2 tst-audit11 tst-audit12 tst-dlsym-error tst-noload \
 	 tst-latepthread tst-tls-manydynamic tst-nodelete-dlclose
 #	 reldep9
+tests-internal += loadtest unload unload2 circleload1 \
+	 neededtest neededtest2 neededtest3 neededtest4 \
+	 tst-tls3 tst-tls6 tst-tls7 tst-tls8 tst-dlmopen2 \
+	 tst-ptrguard1 tst-stackguard1
 ifeq ($(build-hardcoded-path-in-tests),yes)
 tests += tst-dlopen-aout
 LDFLAGS-tst-dlopen-aout = $(no-pie-ldflag)
@@ -289,21 +295,23 @@ CFLAGS-vismain.c = $(PIE-ccflag)
 endif
 modules-execstack-yes = tst-execstack-mod
 extra-test-objs += $(addsuffix .os,$(strip $(modules-names)))
-# We need this variable to be sure the test modules get the right CPPFLAGS.
-test-extras += $(modules-names)
 
 # filtmod1.so has a special rule
 modules-names-nobuild := filtmod1
 
+tests += $(tests-static)
+
 ifneq (no,$(multi-arch))
-tests-static += ifuncmain1static ifuncmain1picstatic \
+tests-ifuncstatic := ifuncmain1static ifuncmain1picstatic \
 		ifuncmain2static ifuncmain2picstatic \
 		ifuncmain4static ifuncmain4picstatic \
 		ifuncmain5static ifuncmain5picstatic \
 		ifuncmain7static ifuncmain7picstatic
-
+tests-static += $(tests-ifuncstatic)
+tests-internal += $(tests-ifuncstatic)
 ifeq (yes,$(build-shared))
-tests += ifuncmain1 ifuncmain1pic ifuncmain1vis ifuncmain1vispic \
+tests-internal += \
+	 ifuncmain1 ifuncmain1pic ifuncmain1vis ifuncmain1vispic \
 	 ifuncmain1staticpic \
 	 ifuncmain2 ifuncmain2pic ifuncmain3 ifuncmain4 \
 	 ifuncmain5 ifuncmain5pic ifuncmain5staticpic \
@@ -311,11 +319,11 @@ tests += ifuncmain1 ifuncmain1pic ifuncmain1vis ifuncmain1vispic \
 ifunc-test-modules = ifuncdep1 ifuncdep1pic ifuncdep2 ifuncdep2pic \
 		     ifuncdep5 ifuncdep5pic
 extra-test-objs += $(ifunc-test-modules:=.o)
-test-extras += $(ifunc-test-modules)
+test-internal-extras += $(ifunc-test-modules)
 ifeq (yes,$(have-fpie))
 ifunc-pie-tests = ifuncmain1pie ifuncmain1vispie ifuncmain1staticpie \
 		  ifuncmain5pie ifuncmain6pie ifuncmain7pie
-tests += $(ifunc-pie-tests)
+tests-internal += $(ifunc-pie-tests)
 tests-pie += $(ifunc-pie-tests)
 endif
 modules-names += ifuncmod1 ifuncmod3 ifuncmod5 ifuncmod6
@@ -357,7 +365,7 @@ endif
 # unit test driver must be able to link with the shared object
 # that is going to eventually go into an installed DSO.
 ifeq (yesyes,$(have-fpie)$(build-shared))
-tests += tst-_dl_addr_inside_object
+tests-internal += tst-_dl_addr_inside_object
 tests-pie += tst-_dl_addr_inside_object
 $(objpfx)tst-_dl_addr_inside_object: $(objpfx)dl-addr-obj.os
 CFLAGS-tst-_dl_addr_inside_object.c += $(PIE-ccflag)
diff --git a/elf/tst-env-setuid-tunables.c b/elf/tst-env-setuid-tunables.c
index a5f0a81..afcb146 100644
--- a/elf/tst-env-setuid-tunables.c
+++ b/elf/tst-env-setuid-tunables.c
@@ -19,6 +19,12 @@
    glibc.malloc.check and glibc.malloc.mmap_threshold but also retain
    glibc.malloc.mmap_threshold in an unprivileged child.  */
 
+/* This is compiled as part of the testsuite but needs to see
+   HAVE_TUNABLES. */
+#define _LIBC 1
+#include "config.h"
+#undef _LIBC
+
 #define test_parent test_parent_tunables
 #define test_child test_child_tunables
 
diff --git a/extra-modules.mk b/extra-modules.mk
deleted file mode 100644
index 5f8e693..0000000
--- a/extra-modules.mk
+++ /dev/null
@@ -1,9 +0,0 @@
-# This file is included several times in a row, once
-# for each element of $(modules-names).  $(extra-modules-left)
-# is initialized first to $(modules-names) so that with each
-# inclusion, we advance $(module) to the next name.
-
-module := $(firstword $(extra-modules-left))
-extra-modules-left := $(filter-out $(module),$(extra-modules-left))
-
-libof-$(notdir $(module)) := extramodules
diff --git a/include/errno.h b/include/errno.h
index 7df41df..73fc32e 100644
--- a/include/errno.h
+++ b/include/errno.h
@@ -2,7 +2,7 @@
 
 #include <stdlib/errno.h>
 
-#if defined _ERRNO_H && !defined _ISOMAC && !defined __cplusplus
+#if defined _ERRNO_H && !defined _ISOMAC
 
 # if IS_IN (rtld)
 #  include <dl-sysdep.h>
diff --git a/include/libc-symbols.h b/include/libc-symbols.h
index 775d8af..922e4b6 100644
--- a/include/libc-symbols.h
+++ b/include/libc-symbols.h
@@ -20,26 +20,46 @@
 #ifndef _LIBC_SYMBOLS_H
 #define _LIBC_SYMBOLS_H	1
 
-#define IN_MODULE PASTE_NAME (MODULE_, MODULE_NAME)
-#define IS_IN(lib) (IN_MODULE == MODULE_##lib)
+/* This file is included implicitly in the compilation of every source file,
+   using -include.  It includes config.h.  */
 
-/* Returns true if the current module is a versioned library.  Versioned
-   library names culled from shlib-versions files are assigned a MODULE_*
-   value lower than MODULE_LIBS_BEGIN.  */
-#define IS_IN_LIB (IN_MODULE > MODULE_LIBS_BEGIN)
-
-#define PASTE_NAME(a,b)      PASTE_NAME1 (a,b)
-#define PASTE_NAME1(a,b)     a##b
-
-/* This file's macros are included implicitly in the compilation of every
-   file in the C library by -imacros.
-
-   We include config.h which is generated by configure.
-   It should define for us the following symbol:
+/* Enable declarations of GNU extensions, since we are compiling them.  */
+#define _GNU_SOURCE 1
+
+#ifdef MODULE_NAME
+
+/* Use `#if IS_IN (module)` to detect what component is being compiled.  */
+#define PASTE_NAME1(a,b) a##b
+#define PASTE_NAME(a,b)	 PASTE_NAME1 (a,b)
+#define IN_MODULE	 PASTE_NAME (MODULE_, MODULE_NAME)
+#define IS_IN(lib)	 (IN_MODULE == MODULE_##lib)
+
+/* True if the current module is a versioned library.  Versioned
+   library names culled from shlib-versions files are assigned a
+   MODULE_* value greater than MODULE_LIBS_BEGIN.  */
+#define IS_IN_LIB	 (IN_MODULE > MODULE_LIBS_BEGIN)
+
+/* The testsuite, and some other ancillary code, should be compiled against
+   as close an approximation to the installed headers as possible.
+   Defining this symbol disables most internal-use-only declarations
+   provided by this header, and all those provided by other internal
+   wrapper headers.  */
+#if IS_IN (testsuite) || defined IS_IN_build || defined __cplusplus
+# define _ISOMAC 1
+#endif
 
-   * HAVE_ASM_SET_DIRECTIVE if we have `.set B, A' instead of `A = B'.
+#else
+/* The generation process for a few files created very early in the
+   build (notably libc-modules.h itself) involves preprocessing this
+   header without defining MODULE_NAME.  Under these conditions,
+   internal declarations (especially from config.h) must be visible,
+   but IS_IN should always evaluate as false.  */
+# define IS_IN(lib) 0
+# define IS_IN_LIB 0
+# define IN_MODULE (-1)
+#endif
 
-   */
+#ifndef _ISOMAC
 
 /* This is defined for the compilation of all C library code.  features.h
    tests this to avoid inclusion of stubs.h while compiling the library,
@@ -50,8 +70,17 @@
    itself is being compiled, or just some generator program.  */
 #define _LIBC	1
 
-/* Enable declarations of GNU extensions, since we are compiling them.  */
-#define _GNU_SOURCE	1
+/* Some files must be compiled with optimization on.  */
+#if !defined __ASSEMBLER__ && !defined __OPTIMIZE__
+# error "glibc cannot be compiled without optimization"
+#endif
+
+/* -ffast-math cannot be applied to the C library, as it alters the ABI.
+   Some test components that use -ffast-math are currently not part of
+   IS_IN (testsuite) for technical reasons, so we have a secondary override.  */
+#if defined __FAST_MATH__ && !defined TEST_FAST_MATH
+# error "glibc must not be compiled with -ffast-math"
+#endif
 
 #include <config.h>
 
@@ -887,4 +916,5 @@ for linking")
 # define inhibit_loop_to_libcall
 #endif
 
+#endif /* !_ISOMAC */
 #endif /* libc-symbols.h */
diff --git a/include/math.h b/include/math.h
index a4f5562..6ff6783 100644
--- a/include/math.h
+++ b/include/math.h
@@ -1,5 +1,10 @@
 #ifndef	_MATH_H
 
+#ifdef _ISOMAC
+# undef NO_LONG_DOUBLE
+# undef _Mlong_double_
+#endif
+
 #include <math/math.h>
 
 #ifndef _ISOMAC
diff --git a/include/stdio.h b/include/stdio.h
index 17b5a05..6c84dff 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -1,11 +1,13 @@
 #ifndef _STDIO_H
-# if defined __need_FILE || defined __need___FILE || defined _ISOMAC
+# if defined _ISOMAC
+#  undef _IO_MTSAFE_IO
+#  include <libio/stdio.h>
+# elif defined __need_FILE || defined __need___FILE
 #  include <libio/stdio.h>
 # else
 #  include <libio/stdio.h>
 
 /* Now define the internal interfaces.  */
-__BEGIN_DECLS
 
 extern int __fcloseall (void);
 extern int __snprintf (char *__restrict __s, size_t __maxlen,
@@ -30,7 +32,6 @@ extern int __vsscanf (const char *__restrict __s,
 		      _G_va_list __arg)
      __attribute__ ((__format__ (__scanf__, 2, 0)));
 
-#  ifndef __cplusplus
 extern int __sprintf_chk (char *, int, size_t, const char *, ...) __THROW;
 extern int __snprintf_chk (char *, size_t, int, size_t, const char *, ...)
      __THROW;
@@ -52,7 +53,6 @@ extern int __obstack_printf_chk (struct obstack *, int, const char *, ...)
      __THROW;
 extern int __obstack_vprintf_chk (struct obstack *, int, const char *,
 				  _G_va_list) __THROW;
-#  endif
 
 extern int __isoc99_fscanf (FILE *__restrict __stream,
 			    const char *__restrict __format, ...) __wur;
@@ -184,7 +184,5 @@ libc_hidden_proto (__obstack_vprintf_chk)
 extern FILE * __fmemopen (void *buf, size_t len, const char *mode);
 libc_hidden_proto (__fmemopen)
 
-__END_DECLS
 # endif
-
 #endif
diff --git a/include/stdlib.h b/include/stdlib.h
index 352339e..8039876 100644
--- a/include/stdlib.h
+++ b/include/stdlib.h
@@ -13,8 +13,6 @@
 #if !defined __Need_M_And_C && !defined _ISOMAC
 # include <sys/stat.h>
 
-__BEGIN_DECLS
-
 extern __typeof (strtol_l) __strtol_l;
 extern __typeof (strtoul_l) __strtoul_l;
 extern __typeof (strtoll_l) __strtoll_l;
@@ -265,8 +263,6 @@ extern __typeof (unsetenv) unsetenv attribute_hidden;
 extern __typeof (__strtoul_internal) __strtoul_internal attribute_hidden;
 # endif
 
-__END_DECLS
-
 #endif
 
 #undef __Need_M_And_C
diff --git a/include/string.h b/include/string.h
index f166de9..ce71674 100644
--- a/include/string.h
+++ b/include/string.h
@@ -1,6 +1,8 @@
 #ifndef _STRING_H
 
-#if !defined _ISOMAC && !defined __cplusplus
+#ifndef _ISOMAC
+/* Some of these are defined as macros in the real string.h, so we must
+   prototype them before including it.  */
 #include <sys/types.h>
 
 extern void *__memccpy (void *__dest, const void *__src,
@@ -46,16 +48,14 @@ extern void __bzero (void *__s, size_t __n) __THROW __nonnull ((1));
 extern int __ffs (int __i) __attribute__ ((const));
 
 extern char *__strerror_r (int __errnum, char *__buf, size_t __buflen);
-#endif
 
 /* Get _STRING_ARCH_unaligned.  */
 #include <string_private.h>
+#endif
 
-/* Now the real definitions.  We do this here since some of the functions
-   above are defined as macros in the headers.  */
 #include <string/string.h>
 
-#if !defined _ISOMAC && !defined __cplusplus
+#ifndef _ISOMAC
 extern __typeof (strcoll_l) __strcoll_l;
 extern __typeof (strxfrm_l) __strxfrm_l;
 extern __typeof (strcasecmp_l) __strcasecmp_l;
diff --git a/include/time.h b/include/time.h
index 684ceb8..8fe1818 100644
--- a/include/time.h
+++ b/include/time.h
@@ -4,8 +4,6 @@
 #ifndef _ISOMAC
 # include <xlocale.h>
 
-__BEGIN_DECLS
-
 extern __typeof (strftime_l) __strftime_l;
 libc_hidden_proto (__strftime_l)
 extern __typeof (strptime_l) __strptime_l;
@@ -112,7 +110,5 @@ extern double __difftime (time_t time1, time_t time0);
    actual clock ID.  */
 #define CLOCK_IDFIELD_SIZE	3
 
-__END_DECLS
-
 #endif
 #endif
diff --git a/include/unistd.h b/include/unistd.h
index 16d68a1..fbcea1b 100644
--- a/include/unistd.h
+++ b/include/unistd.h
@@ -2,7 +2,6 @@
 # include <posix/unistd.h>
 
 # ifndef _ISOMAC
-__BEGIN_DECLS
 
 libc_hidden_proto (_exit, __noreturn__)
 rtld_hidden_proto (_exit, __noreturn__)
@@ -188,7 +187,5 @@ extern int __getlogin_r_loginuid (char *name, size_t namesize)
 extern __typeof (__access) __access_noerrno attribute_hidden;
 #  endif
 
-__END_DECLS
 # endif
-
 #endif
diff --git a/include/wchar.h b/include/wchar.h
index 6272130..e2579a1 100644
--- a/include/wchar.h
+++ b/include/wchar.h
@@ -172,7 +172,6 @@ extern int __vfwprintf (__FILE *__restrict __s,
 			const wchar_t *__restrict __format,
 			__gnuc_va_list __arg)
      /* __attribute__ ((__format__ (__wprintf__, 2, 0))) */;
-#ifndef __cplusplus
 extern int __vfwprintf_chk (FILE *__restrict __s, int __flag,
 			    const wchar_t *__restrict __format,
 			    __gnuc_va_list __arg)
@@ -184,7 +183,6 @@ extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n,
      /* __attribute__ ((__format__ (__wprintf__, 5, 0))) */;
 libc_hidden_proto (__vfwprintf_chk)
 libc_hidden_proto (__vswprintf_chk)
-#endif
 
 extern int __isoc99_fwscanf (__FILE *__restrict __stream,
 			     const wchar_t *__restrict __format, ...);
diff --git a/inet/Makefile b/inet/Makefile
index 010792a..b333556 100644
--- a/inet/Makefile
+++ b/inet/Makefile
@@ -52,7 +52,9 @@ aux := check_pf check_native ifreq
 tests := htontest test_ifindex tst-ntoa tst-ether_aton tst-network \
 	 tst-gethnm test-ifaddrs bug-if1 test-inet6_opt tst-ether_line \
 	 tst-getni1 tst-getni2 tst-inet6_rth tst-checks tst-checks-posix \
-	 tst-sockaddr tst-inet6_scopeid_pton test-hnto-types
+	 tst-sockaddr test-hnto-types
+
+tests-internal := tst-inet6_scopeid_pton
 
 include ../Rules
 
diff --git a/inet/tst-checks-posix.c b/inet/tst-checks-posix.c
index e46b6a2..cdcb5cb 100644
--- a/inet/tst-checks-posix.c
+++ b/inet/tst-checks-posix.c
@@ -19,6 +19,5 @@
 /* Process tst-checks.c in POSIX mode.  */
 #undef _GNU_SOURCE
 #define _POSIX_C_SOURCE 200112L
-#define _ISOMAC
 
 #include "tst-checks.c"
diff --git a/intl/tst-gettext2.c b/intl/tst-gettext2.c
index bdfe76d..894e09e 100644
--- a/intl/tst-gettext2.c
+++ b/intl/tst-gettext2.c
@@ -24,6 +24,8 @@
 #include <stdlib.h>
 #include <stdio.h>
 
+#define N_(msgid) msgid
+
 struct data_t
 {
   const char *selection;
diff --git a/malloc/Makefile b/malloc/Makefile
index e93b83b..ca83228 100644
--- a/malloc/Makefile
+++ b/malloc/Makefile
@@ -25,9 +25,9 @@ include ../Makeconfig
 dist-headers := malloc.h
 headers := $(dist-headers) obstack.h mcheck.h
 tests := mallocbug tst-malloc tst-valloc tst-calloc tst-obstack \
-	 tst-mallocstate tst-mcheck tst-mallocfork tst-trim1 \
+	 tst-mcheck tst-mallocfork tst-trim1 \
 	 tst-malloc-usable tst-realloc tst-posix_memalign \
-	 tst-pvalloc tst-memalign tst-mallopt tst-scratch_buffer \
+	 tst-pvalloc tst-memalign tst-mallopt \
 	 tst-malloc-backtrace tst-malloc-thread-exit \
 	 tst-malloc-thread-fail tst-malloc-fork-deadlock \
 	 tst-mallocfork2 \
@@ -39,6 +39,8 @@ tests-static := \
 	 tst-interpose-static-thread \
 	 tst-malloc-usable-static \
 
+tests-internal := tst-mallocstate tst-scratch_buffer
+
 ifneq (no,$(have-tunables))
 tests += tst-malloc-usable-tunables
 tests-static += tst-malloc-usable-static-tunables
diff --git a/math/test-signgam-finite-c99.c b/math/test-signgam-finite-c99.c
index a67a803..3dacef5 100644
--- a/math/test-signgam-finite-c99.c
+++ b/math/test-signgam-finite-c99.c
@@ -20,7 +20,6 @@
 #undef __LIBC_INTERNAL_MATH_INLINES
 #undef _GNU_SOURCE
 #undef _Mlong_double_
-#define _ISOMAC
 
 #include <math.h>
 #include <stdio.h>
diff --git a/math/test-signgam-main.c b/math/test-signgam-main.c
index 11ebbe3..e3cecf7 100644
--- a/math/test-signgam-main.c
+++ b/math/test-signgam-main.c
@@ -19,7 +19,6 @@
 #undef _LIBC
 #undef __LIBC_INTERNAL_MATH_INLINES
 #undef _GNU_SOURCE
-#define _ISOMAC
 
 #include <math.h>
 #include <stdio.h>
diff --git a/misc/Makefile b/misc/Makefile
index ed988c3..bd88253 100644
--- a/misc/Makefile
+++ b/misc/Makefile
@@ -79,8 +79,9 @@ gpl2lgpl := error.c error.h
 tests := tst-dirname tst-tsearch tst-fdset tst-efgcvt tst-mntent tst-hsearch \
 	 tst-error1 tst-pselect tst-insremque tst-mntent2 bug-hsearch1 \
 	 tst-mntent-blank-corrupt tst-mntent-blank-passno bug18240 \
-	 tst-preadvwritev tst-preadvwritev64 tst-makedev tst-empty \
-	 tst-atomic tst-atomic-long
+	 tst-preadvwritev tst-preadvwritev64 tst-makedev tst-empty
+
+tests-internal := tst-atomic tst-atomic-long
 tests-static := tst-empty
 
 ifeq ($(run-built-tests),yes)
diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h
index e5fe4f8..39c91e1 100644
--- a/misc/sys/cdefs.h
+++ b/misc/sys/cdefs.h
@@ -55,15 +55,18 @@
 #  define __THROW	__attribute__ ((__nothrow__ __LEAF))
 #  define __THROWNL	__attribute__ ((__nothrow__))
 #  define __NTH(fct)	__attribute__ ((__nothrow__ __LEAF)) fct
+#  define __NTHNL(fct)  __attribute__ ((__nothrow__)) fct
 # else
 #  if defined __cplusplus && __GNUC_PREREQ (2,8)
 #   define __THROW	throw ()
 #   define __THROWNL	throw ()
 #   define __NTH(fct)	__LEAF_ATTR fct throw ()
+#   define __NTHNL(fct) fct throw ()
 #  else
 #   define __THROW
 #   define __THROWNL
 #   define __NTH(fct)	fct
+#   define __NTHNL(fct) fct
 #  endif
 # endif
 
diff --git a/nptl/Makefile b/nptl/Makefile
index 6d48c0c..edffb66 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -220,8 +220,7 @@ LDLIBS-tst-once5 = -lstdc++
 CFLAGS-tst-thread_local1.o = -std=gnu++11
 LDLIBS-tst-thread_local1 = -lstdc++
 
-tests = tst-typesizes \
-	tst-attr1 tst-attr2 tst-attr3 tst-default-attr \
+tests = tst-attr1 tst-attr2 tst-attr3 tst-default-attr \
 	tst-mutex1 tst-mutex2 tst-mutex3 tst-mutex4 tst-mutex5 tst-mutex6 \
 	tst-mutex7 tst-mutex8 tst-mutex9 tst-mutex5a tst-mutex7a \
 	tst-mutexpi1 tst-mutexpi2 tst-mutexpi3 tst-mutexpi4 tst-mutexpi5 \
@@ -241,13 +240,12 @@ tests = tst-typesizes \
 	tst-rwlock4 tst-rwlock5 tst-rwlock6 tst-rwlock7 tst-rwlock8 \
 	tst-rwlock9 tst-rwlock10 tst-rwlock11 tst-rwlock12 tst-rwlock13 \
 	tst-rwlock14 tst-rwlock15 tst-rwlock16 tst-rwlock17 tst-rwlock18 \
-	tst-rwlock19 \
 	tst-once1 tst-once2 tst-once3 tst-once4 tst-once5 \
 	tst-key1 tst-key2 tst-key3 tst-key4 \
 	tst-sem1 tst-sem2 tst-sem3 tst-sem4 tst-sem5 tst-sem6 tst-sem7 \
-	tst-sem8 tst-sem9 tst-sem10 tst-sem11 tst-sem12 tst-sem13 tst-sem14 \
+	tst-sem8 tst-sem9 tst-sem10 tst-sem14 \
 	tst-sem15 tst-sem16 \
-	tst-barrier1 tst-barrier2 tst-barrier3 tst-barrier4 tst-barrier5 \
+	tst-barrier1 tst-barrier2 tst-barrier3 tst-barrier4 \
 	tst-align tst-align3 \
 	tst-basic1 tst-basic2 tst-basic3 tst-basic4 tst-basic5 tst-basic6 \
 	tst-basic7 \
@@ -272,7 +270,7 @@ tests = tst-typesizes \
 	tst-cleanup0 tst-cleanup1 tst-cleanup2 tst-cleanup3 tst-cleanup4 \
 	tst-flock1 tst-flock2 \
 	tst-signal1 tst-signal2 tst-signal3 tst-signal4 tst-signal5 \
-	tst-signal6 tst-signal7 \
+	tst-signal6 \
 	tst-exec1 tst-exec2 tst-exec3 tst-exec4 tst-exec5 \
 	tst-exit1 tst-exit2 tst-exit3 \
 	tst-stdio1 tst-stdio2 \
@@ -297,6 +295,10 @@ tests = tst-typesizes \
 	tst-bad-schedattr \
 	tst-thread_local1 tst-mutex-errorcheck tst-robust10 \
 	tst-robust-fork tst-create-detached
+
+tests-internal := tst-typesizes tst-rwlock19 tst-sem11 tst-sem12 tst-sem13 \
+		  tst-barrier5 tst-signal7
+
 xtests = tst-setuid1 tst-setuid1-static tst-setuid2 \
 	tst-mutexpp1 tst-mutexpp6 tst-mutexpp10
 test-srcs = tst-oddstacklimit
@@ -354,8 +356,8 @@ tests += tst-cancelx2 tst-cancelx3 tst-cancelx4 tst-cancelx5 \
 	 tst-cleanupx0 tst-cleanupx1 tst-cleanupx2 tst-cleanupx3 tst-cleanupx4 \
 	 tst-oncex3 tst-oncex4
 ifeq ($(build-shared),yes)
-tests += tst-atfork2 tst-tls3 tst-tls3-malloc tst-tls4 tst-tls5 tst-_res1 \
-	 tst-fini1 tst-stackguard1
+tests += tst-atfork2 tst-tls4 tst-_res1 tst-fini1
+tests-internal += tst-tls3 tst-tls3-malloc tst-tls5 tst-stackguard1
 tests-nolibpthread += tst-fini1
 ifeq ($(have-z-execstack),yes)
 tests += tst-execstack
@@ -369,7 +371,7 @@ modules-names = tst-atfork2mod tst-tls3mod tst-tls4moda tst-tls4modb \
 		tst-join7mod
 extra-test-objs += $(addsuffix .os,$(strip $(modules-names))) \
 		   tst-cleanup4aux.o tst-cleanupx4aux.o
-test-extras += $(modules-names) tst-cleanup4aux tst-cleanupx4aux
+test-extras += tst-cleanup4aux tst-cleanupx4aux
 test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(modules-names)))
 
 tst-atfork2mod.so-no-z-defs = yes
@@ -422,9 +424,9 @@ tests-static += tst-locale1 tst-locale2 tst-stackguard1-static \
 		tst-cancel21-static tst-cancel24-static tst-cond8-static \
 		tst-mutex8-static tst-mutexpi8-static tst-sem11-static \
 		tst-sem12-static
-tests += tst-stackguard1-static tst-cancel21-static tst-cancel24-static \
-	 tst-cond8-static tst-mutex8-static tst-mutexpi8-static \
-	 tst-sem11-static tst-sem12-static
+tests += tst-cancel21-static tst-cancel24-static \
+	 tst-cond8-static tst-mutex8-static tst-mutexpi8-static
+tests-internal += tst-sem11-static tst-sem12-static tst-stackguard1-static
 xtests-static += tst-setuid1-static
 
 # These tests are linked with libc before libpthread
@@ -619,8 +621,9 @@ ifeq ($(build-shared),yes)
 $(addprefix $(objpfx), \
   $(filter-out $(tests-static) $(xtests-static) $(tests-reverse) \
     $(tests-nolibpthread), \
-    $(tests) $(xtests) $(test-srcs))): $(objpfx)libpthread.so \
-				       $(objpfx)libpthread_nonshared.a
+    $(tests) $(tests-internal) $(xtests) $(test-srcs))): \
+	$(objpfx)libpthread.so \
+	$(objpfx)libpthread_nonshared.a
 $(objpfx)tst-unload: $(libdl)
 # $(objpfx)../libc.so is used instead of $(common-objpfx)libc.so,
 # since otherwise libpthread.so comes before libc.so when linking.
diff --git a/nss/Makefile b/nss/Makefile
index de6c47a..6d165f2 100644
--- a/nss/Makefile
+++ b/nss/Makefile
@@ -49,15 +49,15 @@ makedb-modules = xmalloc hash-string
 extra-objs		+= $(makedb-modules:=.o)
 
 tests-static            = tst-field
+tests-internal		= tst-field
 tests			= test-netdb tst-nss-test1 test-digits-dots \
-			  tst-nss-getpwent bug17079 \
-			  $(tests-static)
+			  tst-nss-getpwent bug17079
 xtests			= bug-erange
 
 # If we have a thread library then we can test cancellation against
 # some routines like getpwuid_r.
 ifeq (yes,$(have-thread-library))
-tests += tst-cancel-getpwuid_r
+tests-internal += tst-cancel-getpwuid_r
 endif
 
 # Specify rules for the nss_* modules.  We have some services.
diff --git a/posix/Makefile b/posix/Makefile
index 8f23d64..e07aae5 100644
--- a/posix/Makefile
+++ b/posix/Makefile
@@ -67,24 +67,23 @@ tests		:= tstgetopt testfnm runtests runptests	     \
 		   tst-mmap tst-mmap-offset tst-getaddrinfo tst-truncate \
 		   tst-truncate64 tst-fork tst-fnmatch tst-regexloc tst-dir \
 		   tst-chmod bug-regex1 bug-regex2 bug-regex3 bug-regex4 \
-		   tst-gnuglob tst-regex bug-regex5 bug-regex6 bug-regex7 \
+		   tst-gnuglob tst-regex bug-regex6 bug-regex7 \
 		   bug-regex8 bug-regex9 bug-regex10 bug-regex11 bug-regex12 \
 		   bug-regex13 bug-regex14 bug-regex15 bug-regex16 \
-		   bug-regex17 bug-regex18 bug-regex19 bug-regex20 \
+		   bug-regex17 bug-regex18 bug-regex19 \
 		   bug-regex21 bug-regex22 bug-regex23 bug-regex24 \
 		   bug-regex25 bug-regex26 bug-regex27 bug-regex28 \
 		   bug-regex29 bug-regex30 bug-regex31 bug-regex32 \
-		   bug-regex33 tst-nice tst-nanosleep tst-regex2 \
+		   tst-nice tst-nanosleep tst-regex2 \
 		   transbug tst-rxspencer tst-pcre tst-boost \
 		   bug-ga1 tst-vfork1 tst-vfork2 tst-vfork3 tst-waitid \
 		   tst-getaddrinfo2 bug-glob1 bug-glob2 bug-glob3 tst-sysconf \
 		   tst-execvp1 tst-execvp2 tst-execlp1 tst-execlp2 \
 		   tst-execv1 tst-execv2 tst-execl1 tst-execl2 \
 		   tst-execve1 tst-execve2 tst-execle1 tst-execle2 \
-		   tst-execvp3 tst-execvp4 tst-rfc3484 tst-rfc3484-2 \
+		   tst-execvp3 tst-execvp4 \
 		   tst-execvpe1 tst-execvpe2 tst-execvpe3 tst-execvpe4 \
 		   tst-execvpe5 tst-execvpe6 \
-		   tst-rfc3484-3 \
 		   tst-getaddrinfo3 tst-fnmatch2 tst-cpucount tst-cpuset \
 		   bug-getopt1 bug-getopt2 bug-getopt3 bug-getopt4 \
 		   bug-getopt5 tst-getopt_long1 bug-regex34 bug-regex35 \
@@ -92,6 +91,8 @@ tests		:= tstgetopt testfnm runtests runptests	     \
 		   tst-fnmatch3 bug-regex36 tst-getaddrinfo5 \
 		   tst-posix_spawn-fd \
 		   tst-posix_fadvise tst-posix_fadvise64
+tests-internal	:= bug-regex5 bug-regex20 bug-regex33 \
+		   tst-rfc3484 tst-rfc3484-2 tst-rfc3484-3
 xtests		:= bug-ga2
 ifeq (yes,$(build-shared))
 test-srcs	:= globtest
diff --git a/stdlib/Makefile b/stdlib/Makefile
index 5751b5d..d4edcf8 100644
--- a/stdlib/Makefile
+++ b/stdlib/Makefile
@@ -68,23 +68,26 @@ test-srcs	:= tst-fmtmsg
 tests		:= tst-strtol tst-strtod testmb testrand testsort testdiv   \
 		   test-canon test-canon2 tst-strtoll tst-environ	    \
 		   tst-xpg-basename tst-random tst-random2 tst-bsearch	    \
-		   tst-limits tst-rand48 bug-strtod tst-setcontext          \
+		   tst-limits tst-rand48 bug-strtod tst-setcontext	    \
 		   tst-setcontext2 test-a64l tst-qsort tst-system testmb2   \
-		   bug-strtod2 tst-atof1 tst-atof2 tst-strtod2 tst-strtod3  \
-		   tst-rand48-2 tst-makecontext tst-strtod4 tst-strtod5     \
+		   bug-strtod2 tst-atof1 tst-atof2 tst-strtod2		    \
+		   tst-rand48-2 tst-makecontext tst-strtod5		    \
 		   tst-qsort2 tst-makecontext2 tst-strtod6 tst-unsetenv1    \
 		   tst-makecontext3 bug-getcontext bug-fmtmsg1		    \
 		   tst-secure-getenv tst-strtod-overflow tst-strtod-round   \
-		   tst-tininess tst-strtod-underflow tst-tls-atexit	    \
-		   tst-setcontext3 tst-tls-atexit-nodelete		    \
+		   tst-tininess tst-strtod-underflow tst-setcontext3	    \
 		   tst-strtol-locale tst-strtod-nan-locale tst-strfmon_l    \
 		   tst-quick_exit tst-thread-quick_exit tst-width	    \
-		   tst-width-stdint tst-strfrom tst-strfrom-locale \
+		   tst-width-stdint tst-strfrom tst-strfrom-locale	    \
 		   tst-getrandom
+tests-internal	:= tst-strtod1i tst-strtod3 tst-strtod4 tst-strtod5i \
+		   tst-tls-atexit tst-tls-atexit-nodelete
+tests-static	:= tst-secure-getenv
+
 ifeq ($(build-hardcoded-path-in-tests),yes)
 tests += tst-empty-env
 endif
-tests-static	:= tst-secure-getenv
+
 ifeq ($(have-cxx-thread_local),yes)
 CFLAGS-tst-quick_exit.o = -std=c++11
 LDLIBS-tst-quick_exit = -lstdc++
diff --git a/stdlib/tst-strtod.c b/stdlib/tst-strtod.c
index ced6d8a..e0f096c 100644
--- a/stdlib/tst-strtod.c
+++ b/stdlib/tst-strtod.c
@@ -79,7 +79,6 @@ static const struct ltest tests[] =
 
 static void expand (char *dst, int c);
 static int long_dbl (void);
-static int locale_test (void);
 
 static int
 do_test (void)
@@ -176,8 +175,6 @@ do_test (void)
 
   status |= long_dbl ();
 
-  status |= locale_test ();
-
   return status ? EXIT_FAILURE : EXIT_SUCCESS;
 }
 
@@ -217,63 +214,6 @@ long_dbl (void)
   return 0;
 }
 
-/* Perform a few tests in a locale with thousands separators.  */
-static int
-locale_test (void)
-{
-  static const struct
-  {
-    const char *loc;
-    const char *str;
-    double exp;
-    ptrdiff_t nread;
-  } tests[] =
-    {
-      { "de_DE.UTF-8", "1,5", 1.5, 3 },
-      { "de_DE.UTF-8", "1.5", 1.0, 1 },
-      { "de_DE.UTF-8", "1.500", 1500.0, 5 },
-      { "de_DE.UTF-8", "36.893.488.147.419.103.232", 0x1.0p65, 26 }
-    };
-#define ntests (sizeof (tests) / sizeof (tests[0]))
-  size_t n;
-  int result = 0;
-
-  puts ("\nLocale tests");
-
-  for (n = 0; n < ntests; ++n)
-    {
-      double d;
-      char *endp;
-
-      if (setlocale (LC_ALL, tests[n].loc) == NULL)
-	{
-	  printf ("cannot set locale %s\n", tests[n].loc);
-	  result = 1;
-	  continue;
-	}
-
-      /* We call __strtod_interal here instead of strtod to tests the
-	 handling of grouping.  */
-      d = __strtod_internal (tests[n].str, &endp, 1);
-      if (d != tests[n].exp)
-	{
-	  printf ("strtod(\"%s\") returns %g and not %g\n",
-		  tests[n].str, d, tests[n].exp);
-	  result = 1;
-	}
-      else if (endp - tests[n].str != tests[n].nread)
-	{
-	  printf ("strtod(\"%s\") read %td bytes and not %td\n",
-		  tests[n].str, endp - tests[n].str, tests[n].nread);
-	  result = 1;
-	}
-    }
-
-  if (result == 0)
-    puts ("all OK");
-
-  return result;
-}
 
 #define TEST_FUNCTION do_test ()
 #include "../test-skeleton.c"
diff --git a/stdlib/tst-strtod1i.c b/stdlib/tst-strtod1i.c
new file mode 100644
index 0000000..5c2ba99
--- /dev/null
+++ b/stdlib/tst-strtod1i.c
@@ -0,0 +1,84 @@
+/* Copyright (C) 1991-2017 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <ctype.h>
+#include <locale.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <string.h>
+#include <math.h>
+
+/* Perform a few tests in a locale with thousands separators.  */
+static int
+do_test (void)
+{
+  static const struct
+  {
+    const char *loc;
+    const char *str;
+    double exp;
+    ptrdiff_t nread;
+  } tests[] =
+    {
+      { "de_DE.UTF-8", "1,5", 1.5, 3 },
+      { "de_DE.UTF-8", "1.5", 1.0, 1 },
+      { "de_DE.UTF-8", "1.500", 1500.0, 5 },
+      { "de_DE.UTF-8", "36.893.488.147.419.103.232", 0x1.0p65, 26 }
+    };
+#define ntests (sizeof (tests) / sizeof (tests[0]))
+  size_t n;
+  int result = 0;
+
+  puts ("\nLocale tests");
+
+  for (n = 0; n < ntests; ++n)
+    {
+      double d;
+      char *endp;
+
+      if (setlocale (LC_ALL, tests[n].loc) == NULL)
+	{
+	  printf ("cannot set locale %s\n", tests[n].loc);
+	  result = 1;
+	  continue;
+	}
+
+      d = __strtod_internal (tests[n].str, &endp, 1);
+      if (d != tests[n].exp)
+	{
+	  printf ("strtod(\"%s\") returns %g and not %g\n",
+		  tests[n].str, d, tests[n].exp);
+	  result = 1;
+	}
+      else if (endp - tests[n].str != tests[n].nread)
+	{
+	  printf ("strtod(\"%s\") read %td bytes and not %td\n",
+		  tests[n].str, endp - tests[n].str, tests[n].nread);
+	  result = 1;
+	}
+    }
+
+  if (result == 0)
+    puts ("all OK");
+
+  return result ? EXIT_FAILURE : EXIT_SUCCESS;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdlib/tst-strtod5.c b/stdlib/tst-strtod5.c
index 337c746..691759e 100644
--- a/stdlib/tst-strtod5.c
+++ b/stdlib/tst-strtod5.c
@@ -9,38 +9,27 @@
 static const struct
 {
   const char *in;
-  int group;
   double expected;
 } tests[] =
   {
-    { "0", 0, 0.0 },
-    { "000", 0, 0.0 },
-    { "-0", 0, -0.0 },
-    { "-000", 0, -0.0 },
-    { "0,", 0, 0.0 },
-    { "-0,", 0, -0.0 },
-    { "0,0", 0, 0.0 },
-    { "-0,0", 0, -0.0 },
-    { "0e-10", 0, 0.0 },
-    { "-0e-10", 0, -0.0 },
-    { "0,e-10", 0, 0.0 },
-    { "-0,e-10", 0, -0.0 },
-    { "0,0e-10", 0, 0.0 },
-    { "-0,0e-10", 0, -0.0 },
-    { "0e-1000000", 0, 0.0 },
-    { "-0e-1000000", 0, -0.0 },
-    { "0,0e-1000000", 0, 0.0 },
-    { "-0,0e-1000000", 0, -0.0 },
-    { "0", 1, 0.0 },
-    { "000", 1, 0.0 },
-    { "-0", 1, -0.0 },
-    { "-000", 1, -0.0 },
-    { "0e-10", 1, 0.0 },
-    { "-0e-10", 1, -0.0 },
-    { "0e-1000000", 1, 0.0 },
-    { "-0e-1000000", 1, -0.0 },
-    { "000"NBSP"000"NBSP"000", 1, 0.0 },
-    { "-000"NBSP"000"NBSP"000", 1, -0.0 }
+    { "0", 0.0 },
+    { "000", 0.0 },
+    { "-0", -0.0 },
+    { "-000", -0.0 },
+    { "0,", 0.0 },
+    { "-0,", -0.0 },
+    { "0,0", 0.0 },
+    { "-0,0", -0.0 },
+    { "0e-10", 0.0 },
+    { "-0e-10", -0.0 },
+    { "0,e-10", 0.0 },
+    { "-0,e-10", -0.0 },
+    { "0,0e-10", 0.0 },
+    { "-0,0e-10", -0.0 },
+    { "0e-1000000", 0.0 },
+    { "-0e-1000000", -0.0 },
+    { "0,0e-1000000", 0.0 },
+    { "-0,0e-1000000", -0.0 },
   };
 #define NTESTS (sizeof (tests) / sizeof (tests[0]))
 
@@ -59,12 +48,7 @@ do_test (void)
   for (int i = 0; i < NTESTS; ++i)
     {
       char *ep;
-      double r;
-
-      if (tests[i].group)
-	r = __strtod_internal (tests[i].in, &ep, 1);
-      else
-	r = strtod (tests[i].in, &ep);
+      double r = strtod (tests[i].in, &ep);
 
       if (*ep != '\0')
 	{
diff --git a/stdlib/tst-strtod5.c b/stdlib/tst-strtod5i.c
similarity index 92%
copy from stdlib/tst-strtod5.c
copy to stdlib/tst-strtod5i.c
index 337c746..92ed983 100644
--- a/stdlib/tst-strtod5.c
+++ b/stdlib/tst-strtod5i.c
@@ -59,12 +59,7 @@ do_test (void)
   for (int i = 0; i < NTESTS; ++i)
     {
       char *ep;
-      double r;
-
-      if (tests[i].group)
-	r = __strtod_internal (tests[i].in, &ep, 1);
-      else
-	r = strtod (tests[i].in, &ep);
+      double r = __strtod_internal (tests[i].in, &ep, tests[i].group);
 
       if (*ep != '\0')
 	{
diff --git a/string/test-string.h b/string/test-string.h
index 2c36b44..9f45898 100644
--- a/string/test-string.h
+++ b/string/test-string.h
@@ -40,6 +40,18 @@ extern impl_t __start_impls[], __stop_impls[];
 
 #undef __USE_STRING_INLINES
 
+/* We are compiled under _ISOMAC, so libc-symbols.h does not do this
+   for us.  */
+#include "config.h"
+#ifdef HAVE_CC_INHIBIT_LOOP_TO_LIBCALL
+# define inhibit_loop_to_libcall \
+    __attribute__ ((__optimize__ ("-fno-tree-loop-distribute-patterns")))
+#else
+# define inhibit_loop_to_libcall
+#endif
+
+
+#include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/string/test-strstr.c b/string/test-strstr.c
index c29d374..404c374 100644
--- a/string/test-strstr.c
+++ b/string/test-strstr.c
@@ -23,6 +23,7 @@
 
 
 #define STRSTR simple_strstr
+#define libc_hidden_builtin_def(arg) /* nothing */
 #include "strstr.c"
 
 
diff --git a/sysdeps/ia64/fpu/libm-symbols.h b/sysdeps/ia64/fpu/libm-symbols.h
index 31d6f36..505131b 100644
--- a/sysdeps/ia64/fpu/libm-symbols.h
+++ b/sysdeps/ia64/fpu/libm-symbols.h
@@ -1,4 +1,4 @@
-#if !defined __STRICT_ANSI__ && !defined __cplusplus
+#ifndef _ISOMAC
 # include <sysdep.h>
 # undef ret	/* get rid of the stupid "ret" macro; it breaks br.ret */
 
diff --git a/sysdeps/m68k/m680x0/fpu/bits/mathinline.h b/sysdeps/m68k/m680x0/fpu/bits/mathinline.h
index c2dca31..8e6bdc4 100644
--- a/sysdeps/m68k/m680x0/fpu/bits/mathinline.h
+++ b/sysdeps/m68k/m680x0/fpu/bits/mathinline.h
@@ -112,19 +112,22 @@ __NTH (__signbitl (long double __x))
 #ifdef	__LIBC_INTERNAL_MATH_INLINES
 /* This is used when defining the functions themselves.  Define them with
    __ names, and with `static inline' instead of `extern inline' so the
-   bodies will always be used, never an external function call.  */
+   bodies will always be used, never an external function call.
+   Note: GCC 6 objects to __attribute__ ((__leaf__)) on static functions.  */
 # define __m81_u(x)		__CONCAT(__,x)
 # define __m81_inline		static __inline
+# define __m81_nth(fn)		__NTHNL (fn)
 #else
 # define __m81_u(x)		x
-# define __m81_inline __MATH_INLINE
+# define __m81_inline		__MATH_INLINE
+# define __m81_nth(fn)		__NTH (fn)
 # define __M81_MATH_INLINES	1
 #endif
 
 /* Define a const math function.  */
 #define __m81_defun(rettype, func, args)				      \
   __m81_inline rettype __attribute__((__const__))			      \
-  __NTH (__m81_u(func) args)
+  __m81_nth (__m81_u(func) args)
 
 /* Define the three variants of a math function that has a direct
    implementation in the m68k fpu.  FUNC is the name for C (which will be
@@ -335,8 +338,8 @@ __inline_functions (long double,l)
 
 # define __inline_functions(float_type, s)				\
 __m81_inline void							\
-__NTH (__m81_u(__CONCAT(__sincos,s))(float_type __x, float_type *__sinx, \
-				     float_type *__cosx))		\
+__m81_nth (__m81_u(__CONCAT(__sincos,s))				\
+	   (float_type __x, float_type *__sinx, float_type *__cosx))	\
 {									\
   __asm __volatile__ ("fsincos%.x %2,%1:%0"				\
 		      : "=f" (*__sinx), "=f" (*__cosx) : "f" (__x));	\
@@ -353,8 +356,6 @@ __inline_functions (long double,l)
 
 /* Define inline versions of the user visible functions.  */
 
-/* Note that there must be no whitespace before the argument passed for
-   NAME, to make token pasting work correctly with -traditional.  */
 # define __inline_forward_c(rettype, name, args1, args2)	\
 __MATH_INLINE rettype __attribute__((__const__))		\
 __NTH (name args1)						\
diff --git a/sysdeps/powerpc/Makefile b/sysdeps/powerpc/Makefile
index 933810f..e03a202 100644
--- a/sysdeps/powerpc/Makefile
+++ b/sysdeps/powerpc/Makefile
@@ -27,7 +27,7 @@ gen-as-const-headers += locale-defines.sym
 endif
 
 ifeq ($(subdir),nptl)
-tests += test-get_hwcap test-get_hwcap-static
+tests-internal += test-get_hwcap test-get_hwcap-static
 tests-static += test-get_hwcap-static
 endif
 
diff --git a/sysdeps/x86_64/fpu/Makefile b/sysdeps/x86_64/fpu/Makefile
index 36f090b..2b7d69b 100644
--- a/sysdeps/x86_64/fpu/Makefile
+++ b/sysdeps/x86_64/fpu/Makefile
@@ -45,6 +45,12 @@ modules-names += test-double-libmvec-alias-mod \
 		 test-float-libmvec-alias-mod \
 		 test-float-libmvec-alias-avx-mod \
 		 test-float-libmvec-alias-avx2-mod
+modules-names-tests += test-double-libmvec-alias-mod \
+		 test-double-libmvec-alias-avx-mod \
+		 test-double-libmvec-alias-avx2-mod \
+		 test-float-libmvec-alias-mod \
+		 test-float-libmvec-alias-avx-mod \
+		 test-float-libmvec-alias-avx2-mod
 extra-test-objs += test-double-libmvec-sincos-avx-main.o \
 		   test-double-libmvec-sincos-avx2-main.o \
 		   test-double-libmvec-sincos-main.o \
@@ -146,6 +152,8 @@ tests += test-double-libmvec-alias-avx512 \
 	 test-float-libmvec-sincosf-avx512
 modules-names += test-double-libmvec-alias-avx512-mod \
 		 test-float-libmvec-alias-avx512-mod
+modules-names-tests += test-double-libmvec-alias-avx512-mod \
+		 test-float-libmvec-alias-avx512-mod
 extra-test-objs += test-double-libmvec-sincos-avx512-main.o \
 		   test-float-libmvec-sincosf-avx512-main.o
 test-double-libmvec-alias-avx512-mod.so-no-z-defs = yes
diff --git a/sysdeps/x86_64/fpu/math-tests-arch.h b/sysdeps/x86_64/fpu/math-tests-arch.h
index 98f7cf6..9278e34 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 3974842..597d64e 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>

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=8272bdaa5319d91b6176c0517591a06a9965c961

commit 8272bdaa5319d91b6176c0517591a06a9965c961
Author: Zack Weinberg <zackw@panix.com>
Date:   Sun Nov 20 20:46:30 2016 -0500

    Miscellaneous 'safe' testsuite changes.
    
    These are a grab bag of changes where the testsuite was using internal
    symbols of some variety, but this was straightforward to fix, and the
    fixed code should work with or without the change to compile the
    testsuite under _ISOMAC.
    
    math/test-misc.c was using #ifndef NO_LONG_DOUBLE, which is an internal
    configuration macro, to decide whether to do certain tests involving
    'long double'.  I changed the test to #if LDBL_MANT_DIG > DBL_MANT_DIG
    instead, which uses only public float.h macros and is equivalent on
    all supported platforms.  (Note that NO_LONG_DOUBLE doesn't mean 'the
    compiler doesn't support long double', it means 'long double is the
    same as double'.)
    
    string/strcasestr.c had an explicit #include <config.h> - this appears
    originally to have been externally maintained code.  Removed.
    
    sysdeps/powerpc/fpu/tst-setcontext-fpscr.c appears to have been
    written before the advent of sys/auxv.h; it was using sysdep.h
    instead, which is obviously a no-go in _ISOMAC mode.  I made the
    minimal change; I think a big chunk of this file could be replaced by
    a simple call to getauxval but I'll let someone who actually has a
    powerpc machine to test on do that.
    
    ia64-linux doesn't supply 'clone', only '__clone2', which is not
    defined in the public headers(!)  All the other clone tests have local
    extern declarations of __clone2, but tst-clone.c doesn't; it was
    getting away with this because include/sched.h does declare __clone2.
    
    tst-writev.c has a configuration macro 'ARTIFICIAL_LIMIT' that the
    Makefiles are expected to define, and sysdeps/unix/sysv/linux/Makefile
    was using the internal __getpagesize in the definition; changed to
    sysconf(_SC_PAGESIZE) which is the POSIX equivalent.
    
    	* math/test-misc.c: Instead of testing NO_LONG_DOUBLE, test
    	whether LDBL_MANT_DIG is greater than DBL_MANT_DIG.
    	* string/strcasestr.c: No need to include config.h.
    	* sysdeps/powerpc/fpu/tst-setcontext-fpscr.c: Include
    	sys/auxv.h. Don't include sysdep.h.
            * sysdeps/unix/sysv/linux/tst-clone.c [__ia64__]: Add extern
            declaration of __clone2.
    	* sysdeps/unix/sysv/linux/Makefile (CFLAGS-tst-writev.c):
    	Use sysconf (_SC_PAGESIZE) instead of __getpagesize in definition of
    	ARTIFICIAL_LIMIT.

diff --git a/math/test-misc.c b/math/test-misc.c
index 8968b80..09812a3 100644
--- a/math/test-misc.c
+++ b/math/test-misc.c
@@ -30,7 +30,7 @@ do_test (void)
 {
   int result = 0;
 
-#ifndef NO_LONG_DOUBLE
+#if LDBL_MANT_DIG > DBL_MANT_DIG
   {
     long double x = 0x100000001ll + (long double) 0.5;
     long double q;
@@ -60,7 +60,7 @@ do_test (void)
 # elif LDBL_MANT_DIG == 113
     m = 0x1.ffffffffffffffffffffffffffffp-1L;
 # else
-#  error "Please adjust"
+#  error "Unsupported LDBL_MANT_DIG, please adjust"
 # endif
 
     for (i = LDBL_MAX_EXP, x = LDBL_MAX; i >= LDBL_MIN_EXP; --i, x /= 2.0L)
@@ -720,7 +720,7 @@ do_test (void)
       }
   }
 
-#ifndef NO_LONG_DOUBLE
+#if LDBL_MANT_DIG > DBL_MANT_DIG
   {
     long double v1, v2;
 
@@ -910,7 +910,7 @@ do_test (void)
       puts ("isnormal (DBL_MIN) failed");
       result = 1;
     }
-#ifndef NO_LONG_DOUBLE
+#if LDBL_MANT_DIG > DBL_MANT_DIG
   if (! isnormal (LDBL_MIN))
     {
       puts ("isnormal (LDBL_MIN) failed");
@@ -960,7 +960,7 @@ do_test (void)
   }
 #endif
 
-#ifndef NO_LONG_DOUBLE
+#if LDBL_MANT_DIG > DBL_MANT_DIG
   {
     long double r;
 
@@ -1027,7 +1027,7 @@ do_test (void)
       puts ("nextafter -DBL_MIN test failed");
       result = 1;
     }
-#ifndef NO_LONG_DOUBLE
+#if LDBL_MANT_DIG > DBL_MANT_DIG
   if (nextafterl (nextafterl (LDBL_MIN, LDBL_MIN / 2.0), LDBL_MIN)
       != LDBL_MIN)
     {
@@ -1072,7 +1072,7 @@ do_test (void)
     }
 #endif
 
-#ifndef NO_LONG_DOUBLE
+#if LDBL_MANT_DIG > DBL_MANT_DIG
   volatile long double ld1 = LDBL_MAX;
   volatile long double ld2 = LDBL_MAX / 2;
   (void) &ld1;
@@ -1087,9 +1087,8 @@ do_test (void)
       result = 1;
     }
 # endif
-#endif
 
-#if !defined NO_LONG_DOUBLE && LDBL_MANT_DIG == 113
+# if LDBL_MANT_DIG == 113
   volatile long double ld3 = 0x1.0000000000010000000100000001p+1;
   volatile long double ld4 = 0x1.0000000000000000000000000001p+1;
   (void) &ld3;
@@ -1100,14 +1099,13 @@ do_test (void)
       printf ("long double subtraction test failed %.28La\n", ld3);
       result = 1;
     }
-#endif
+# endif
 
 /* Skip testing IBM long double format, for 2 reasons:
    1) it only supports FE_TONEAREST
    2) nextafter (0.0, 1.0) == nextafterl (0.0L, 1.0L), so
       nextafter (0.0, 1.0) / 16.0L will be 0.0L.  */
-#if !defined NO_LONG_DOUBLE && LDBL_MANT_DIG >= DBL_MANT_DIG + 4 \
-    && LDBL_MANT_DIG != 106
+# if LDBL_MANT_DIG >= DBL_MANT_DIG + 4 && LDBL_MANT_DIG != 106
   int oldmode = fegetround ();
   int j;
   for (j = 0; j < 4; j++)
@@ -1197,6 +1195,7 @@ do_test (void)
       else
 	puts ("ignoring this failure");
     }
+# endif
 #endif
 
   return result;
diff --git a/nptl/tst-join7mod.c b/nptl/tst-join7mod.c
index 1d9c95d..7b94af6 100644
--- a/nptl/tst-join7mod.c
+++ b/nptl/tst-join7mod.c
@@ -18,6 +18,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
 #include <pthread.h>
 #include <atomic.h>
diff --git a/string/strcasestr.c b/string/strcasestr.c
index a9ff18c..2acf003 100644
--- a/string/strcasestr.c
+++ b/string/strcasestr.c
@@ -25,10 +25,6 @@
  *
  * Stephen R. van den Berg, berg@pool.informatik.rwth-aachen.de	*/
 
-#if HAVE_CONFIG_H
-# include <config.h>
-#endif
-
 /* Specification.  */
 #include <string.h>
 
diff --git a/sysdeps/powerpc/fpu/tst-setcontext-fpscr.c b/sysdeps/powerpc/fpu/tst-setcontext-fpscr.c
index 3a8d699..4e3f90d 100644
--- a/sysdeps/powerpc/fpu/tst-setcontext-fpscr.c
+++ b/sysdeps/powerpc/fpu/tst-setcontext-fpscr.c
@@ -26,8 +26,8 @@
 #include <malloc.h>
 #include <link.h>
 #include <elf.h>
-#include <sysdep.h>
 #include <fpu_control.h>
+#include <sys/auxv.h>
 
 static ucontext_t ctx[3];
 
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index b3d6866..fc29c54 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -20,7 +20,7 @@ sysdep_routines += clone umount umount2 readahead \
 		   personality
 
 CFLAGS-gethostid.c = -fexceptions
-CFLAGS-tst-writev.c += "-DARTIFICIAL_LIMIT=0x80000000-__getpagesize()"
+CFLAGS-tst-writev.c += "-DARTIFICIAL_LIMIT=(0x80000000-sysconf(_SC_PAGESIZE))"
 
 # Note that bits/mman-linux.h is listed here though the file lives in the
 # top-level bits/ subdirectory instead of here in sysdeps/.../linux/bits/.
diff --git a/sysdeps/unix/sysv/linux/tst-clone.c b/sysdeps/unix/sysv/linux/tst-clone.c
index c4e6fbe..1da749d 100644
--- a/sysdeps/unix/sysv/linux/tst-clone.c
+++ b/sysdeps/unix/sysv/linux/tst-clone.c
@@ -23,6 +23,11 @@
 #include <unistd.h>
 #include <sched.h>
 
+#ifdef __ia64__
+extern int __clone2 (int (*__fn) (void *__arg), void *__child_stack_base,
+		     size_t __child_stack_size, int __flags, void *__arg, ...);
+#endif
+
 int child_fn(void *arg)
 {
   puts ("FAIL: in child_fn(); should not be here");

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=8baa3eb75e49d167c286873e1fc9e24d4596b238

commit 8baa3eb75e49d167c286873e1fc9e24d4596b238
Author: Zack Weinberg <zackw@panix.com>
Date:   Sun Feb 26 20:17:52 2017 -0500

    Narrowing the visibility of libc-internal.h even further.
    
    posix/wordexp-test.c used libc-internal.h for PTR_ALIGN_DOWN; similar
    to what was done with libc-diag.h, I have split the definitions of
    cast_to_integer, ALIGN_UP, ALIGN_DOWN, PTR_ALIGN_UP, and PTR_ALIGN_DOWN
    to a new header, libc-pointer-arith.h.
    
    It then occurred to me that the remaining declarations in libc-internal.h
    are mostly to do with early initialization, and probably most of the
    files including it, even in the core code, don't need it anymore.  Indeed,
    only 19 files actually need what remains of libc-internal.h.  23 others
    need libc-diag.h instead, and 12 need libc-pointer-arith.h instead.
    No file needs more than one of them, and 16 don't need any of them!
    
    So, with this patch, libc-internal.h stops including libc-diag.h as
    well as losing the pointer arithmetic macros, and all including files
    are adjusted.
    
            * include/libc-pointer-arith.h: New file.  Define
    	cast_to_integer, ALIGN_UP, ALIGN_DOWN, PTR_ALIGN_UP, and
            PTR_ALIGN_DOWN here.
            * include/libc-internal.h: Definitions of above macros
    	moved from here.  Don't include libc-diag.h anymore either.
    	* posix/wordexp-test.c: Include stdint.h and libc-pointer-arith.h.
            Don't include libc-internal.h.
    
    	* debug/pcprofile.c, elf/dl-tunables.c, elf/soinit.c, io/openat.c
    	* io/openat64.c, misc/ptrace.c, nptl/pthread_clock_gettime.c
    	* nptl/pthread_clock_settime.c, nptl/pthread_cond_common.c
    	* string/strcoll_l.c, sysdeps/nacl/brk.c
    	* sysdeps/unix/clock_settime.c
    	* sysdeps/unix/sysv/linux/i386/get_clockfreq.c
    	* sysdeps/unix/sysv/linux/ia64/get_clockfreq.c
    	* sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c
    	* sysdeps/unix/sysv/linux/sparc/sparc64/get_clockfreq.c:
    	Don't include libc-internal.h.
    
    	* elf/get-dynamic-info.h, iconv/loop.c
    	* iconvdata/iso-2022-cn-ext.c, locale/weight.h, locale/weightwc.h
    	* misc/reboot.c, nis/nis_table.c, nptl_db/thread_dbP.h
    	* nscd/connections.c, resolv/res_send.c, soft-fp/fmadf4.c
    	* soft-fp/fmasf4.c, soft-fp/fmatf4.c, stdio-common/vfscanf.c
    	* sysdeps/ieee754/dbl-64/e_lgamma_r.c
    	* sysdeps/ieee754/dbl-64/k_rem_pio2.c
    	* sysdeps/ieee754/flt-32/e_lgammaf_r.c
    	* sysdeps/ieee754/flt-32/k_rem_pio2f.c
    	* sysdeps/ieee754/ldbl-128/k_tanl.c
    	* sysdeps/ieee754/ldbl-128ibm/k_tanl.c
    	* sysdeps/ieee754/ldbl-96/e_lgammal_r.c
    	* sysdeps/ieee754/ldbl-96/k_tanl.c, sysdeps/nptl/futex-internal.h:
    	Include libc-diag.h instead of libc-internal.h.
    
            * elf/dl-load.c, elf/dl-reloc.c, locale/programs/locarchive.c
            * nptl/nptl-init.c, string/strcspn.c, string/strspn.c
    	* malloc/malloc.c, sysdeps/i386/nptl/tls.h
    	* sysdeps/nacl/dl-map-segments.h, sysdeps/x86_64/atomic-machine.h
    	* sysdeps/unix/sysv/linux/spawni.c
            * sysdeps/x86_64/nptl/tls.h:
            Include libc-pointer-arith.h instead of libc-internal.h.
    
    	* elf/get-dynamic-info.h, sysdeps/nacl/dl-map-segments.h
    	* sysdeps/x86_64/atomic-machine.h:
            Add multiple include guard.

diff --git a/debug/pcprofile.c b/debug/pcprofile.c
index 1643ef6..b6402ef 100644
--- a/debug/pcprofile.c
+++ b/debug/pcprofile.c
@@ -22,7 +22,6 @@
 #include <stdint.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <libc-internal.h>
 
 /* Nonzero if we are actually doing something.  */
 static int active;
diff --git a/elf/dl-load.c b/elf/dl-load.c
index a5318f9..c1b6d4b 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -36,7 +36,7 @@
 #include <caller.h>
 #include <sysdep.h>
 #include <stap-probe.h>
-#include <libc-internal.h>
+#include <libc-pointer-arith.h>
 
 #include <dl-dst.h>
 #include <dl-load.h>
diff --git a/elf/dl-reloc.c b/elf/dl-reloc.c
index 4ac558d..b3c3a9b 100644
--- a/elf/dl-reloc.c
+++ b/elf/dl-reloc.c
@@ -25,8 +25,8 @@
 #include <sys/param.h>
 #include <sys/types.h>
 #include <_itoa.h>
+#include <libc-pointer-arith.h>
 #include "dynamic-link.h"
-#include <libc-internal.h>
 
 /* Statistics function.  */
 #ifdef SHARED
diff --git a/elf/dl-tunables.c b/elf/dl-tunables.c
index e42aa67..ebf48bb 100644
--- a/elf/dl-tunables.c
+++ b/elf/dl-tunables.c
@@ -22,7 +22,6 @@
 #include <stdbool.h>
 #include <unistd.h>
 #include <stdlib.h>
-#include <libc-internal.h>
 #include <sysdep.h>
 #include <fcntl.h>
 #include <ldsodefs.h>
diff --git a/elf/get-dynamic-info.h b/elf/get-dynamic-info.h
index 86760d8..6413558 100644
--- a/elf/get-dynamic-info.h
+++ b/elf/get-dynamic-info.h
@@ -16,8 +16,11 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#ifndef _GET_DYNAMIC_INFO_H
+#define _GET_DYNAMIC_INFO_H 1
+
 #include <assert.h>
-#include <libc-internal.h>
+#include <libc-diag.h>
 
 #ifndef RESOLVE_MAP
 static
@@ -179,3 +182,5 @@ elf_get_dynamic_info (struct link_map *l, ElfW(Dyn) *temp)
     info[DT_RPATH] = NULL;
 #endif
 }
+
+#endif /* get-dynamic-info.h */
diff --git a/elf/soinit.c b/elf/soinit.c
index 7139830..fe99357 100644
--- a/elf/soinit.c
+++ b/elf/soinit.c
@@ -4,7 +4,6 @@
    calling those lists of functions.  */
 
 #ifndef NO_CTORS_DTORS_SECTIONS
-# include <libc-internal.h>
 # include <stdlib.h>
 
 static void (*const __CTOR_LIST__[1]) (void)
diff --git a/iconv/loop.c b/iconv/loop.c
index 42a03e7..0160f72 100644
--- a/iconv/loop.c
+++ b/iconv/loop.c
@@ -56,7 +56,7 @@
 #include <sys/param.h>		/* For MIN.  */
 #define __need_size_t
 #include <stddef.h>
-#include <libc-internal.h>
+#include <libc-diag.h>
 
 /* We have to provide support for machines which are not able to handled
    unaligned memory accesses.  Some of the character encodings have
diff --git a/iconvdata/iso-2022-cn-ext.c b/iconvdata/iso-2022-cn-ext.c
index c9c698e..919524f 100644
--- a/iconvdata/iso-2022-cn-ext.c
+++ b/iconvdata/iso-2022-cn-ext.c
@@ -27,7 +27,7 @@
 #include "cns11643.h"
 #include "cns11643l1.h"
 #include "cns11643l2.h"
-#include <libc-internal.h>
+#include <libc-diag.h>
 
 #include <assert.h>
 
diff --git a/include/libc-internal.h b/include/libc-internal.h
index be6c021..cd2f262 100644
--- a/include/libc-internal.h
+++ b/include/libc-internal.h
@@ -53,42 +53,4 @@ extern void __init_misc (int, char **, char **);
 extern __typeof (__profile_frequency) __profile_frequency attribute_hidden;
 # endif
 
-/* 1 if 'type' is a pointer type, 0 otherwise.  */
-# define __pointer_type(type) (__builtin_classify_type ((type) 0) == 5)
-
-/* __intptr_t if P is true, or T if P is false.  */
-# define __integer_if_pointer_type_sub(T, P) \
-  __typeof__ (*(0 ? (__typeof__ (0 ? (T *) 0 : (void *) (P))) 0 \
-		  : (__typeof__ (0 ? (__intptr_t *) 0 : (void *) (!(P)))) 0))
-
-/* __intptr_t if EXPR has a pointer type, or the type of EXPR otherwise.  */
-# define __integer_if_pointer_type(expr) \
-  __integer_if_pointer_type_sub(__typeof__ ((__typeof__ (expr)) 0), \
-				__pointer_type (__typeof__ (expr)))
-
-/* Cast an integer or a pointer VAL to integer with proper type.  */
-# define cast_to_integer(val) ((__integer_if_pointer_type (val)) (val))
-
-/* Align a value by rounding down to closest size.
-   e.g. Using size of 4096, we get this behavior:
-	{4095, 4096, 4097} = {0, 4096, 4096}.  */
-#define ALIGN_DOWN(base, size)	((base) & -((__typeof__ (base)) (size)))
-
-/* Align a value by rounding up to closest size.
-   e.g. Using size of 4096, we get this behavior:
-	{4095, 4096, 4097} = {4096, 4096, 8192}.
-
-  Note: The size argument has side effects (expanded multiple times).  */
-#define ALIGN_UP(base, size)	ALIGN_DOWN ((base) + (size) - 1, (size))
-
-/* Same as ALIGN_DOWN(), but automatically casts when base is a pointer.  */
-#define PTR_ALIGN_DOWN(base, size) \
-  ((__typeof__ (base)) ALIGN_DOWN ((uintptr_t) (base), (size)))
-
-/* Same as ALIGN_UP(), but automatically casts when base is a pointer.  */
-#define PTR_ALIGN_UP(base, size) \
-  ((__typeof__ (base)) ALIGN_UP ((uintptr_t) (base), (size)))
-
-#include <libc-diag.h>
-
 #endif /* _LIBC_INTERNAL  */
diff --git a/include/libc-internal.h b/include/libc-pointer-arith.h
similarity index 58%
copy from include/libc-internal.h
copy to include/libc-pointer-arith.h
index be6c021..715cbc1 100644
--- a/include/libc-internal.h
+++ b/include/libc-pointer-arith.h
@@ -1,5 +1,5 @@
-/* Internal prototype declarations that don't fit anywhere else.
-   Copyright (C) 2000-2017 Free Software Foundation, Inc.
+/* Helper macros for pointer arithmetic.
+   Copyright (C) 2012-2017 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -16,52 +16,20 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifndef _LIBC_INTERNAL
-# define _LIBC_INTERNAL 1
+#ifndef _LIBC_POINTER_ARITH_H
+#define _LIBC_POINTER_ARITH_H 1
 
-#include <hp-timing.h>
-
-/* Initialize the `__libc_enable_secure' flag.  */
-extern void __libc_init_secure (void);
-
-/* This function will be called from _init in init-first.c.  */
-extern void __libc_global_ctors (void);
-
-/* Discover the tick frequency of the machine if something goes wrong,
-   we return 0, an impossible hertz.  */
-extern int __profile_frequency (void);
-libc_hidden_proto (__profile_frequency)
-
-/* Hooks for the instrumenting functions.  */
-extern void __cyg_profile_func_enter (void *this_fn, void *call_site);
-extern void __cyg_profile_func_exit (void *this_fn, void *call_site);
-
-/* Get frequency of the system processor.  */
-extern hp_timing_t __get_clockfreq (void);
-
-/* Free all allocated resources.  */
-extern void __libc_freeres (void);
-libc_hidden_proto (__libc_freeres)
-
-/* Free resources stored in thread-local variables on thread exit.  */
-extern void __libc_thread_freeres (void);
-
-/* Define and initialize `__progname' et. al.  */
-extern void __init_misc (int, char **, char **);
-
-# if IS_IN (rtld)
-extern __typeof (__profile_frequency) __profile_frequency attribute_hidden;
-# endif
+#include <stdint.h>
 
 /* 1 if 'type' is a pointer type, 0 otherwise.  */
 # define __pointer_type(type) (__builtin_classify_type ((type) 0) == 5)
 
-/* __intptr_t if P is true, or T if P is false.  */
+/* intptr_t if P is true, or T if P is false.  */
 # define __integer_if_pointer_type_sub(T, P) \
   __typeof__ (*(0 ? (__typeof__ (0 ? (T *) 0 : (void *) (P))) 0 \
-		  : (__typeof__ (0 ? (__intptr_t *) 0 : (void *) (!(P)))) 0))
+		  : (__typeof__ (0 ? (intptr_t *) 0 : (void *) (!(P)))) 0))
 
-/* __intptr_t if EXPR has a pointer type, or the type of EXPR otherwise.  */
+/* intptr_t if EXPR has a pointer type, or the type of EXPR otherwise.  */
 # define __integer_if_pointer_type(expr) \
   __integer_if_pointer_type_sub(__typeof__ ((__typeof__ (expr)) 0), \
 				__pointer_type (__typeof__ (expr)))
@@ -89,6 +57,4 @@ extern __typeof (__profile_frequency) __profile_frequency attribute_hidden;
 #define PTR_ALIGN_UP(base, size) \
   ((__typeof__ (base)) ALIGN_UP ((uintptr_t) (base), (size)))
 
-#include <libc-diag.h>
-
-#endif /* _LIBC_INTERNAL  */
+#endif
diff --git a/io/openat.c b/io/openat.c
index c54ee34..529f418 100644
--- a/io/openat.c
+++ b/io/openat.c
@@ -22,7 +22,6 @@
 #include <stdio.h>
 #include <sys/stat.h>
 #include <kernel-features.h>
-#include <libc-internal.h>
 
 /* Some mostly-generic code (e.g. sysdeps/posix/getcwd.c) uses this variable
    if __ASSUME_ATFCTS is not defined.  */
diff --git a/io/openat64.c b/io/openat64.c
index 2f564b5..116becd 100644
--- a/io/openat64.c
+++ b/io/openat64.c
@@ -21,7 +21,6 @@
 #include <stddef.h>
 #include <stdio.h>
 #include <sys/stat.h>
-#include <libc-internal.h>
 
 /* Open FILE with access OFLAG.  Interpret relative paths relative to
    the directory associated with FD.  If O_CREAT or O_TMPFILE is in OFLAG, a
diff --git a/locale/programs/locarchive.c b/locale/programs/locarchive.c
index 13c4e9e..f67b7b8 100644
--- a/locale/programs/locarchive.c
+++ b/locale/programs/locarchive.c
@@ -40,8 +40,8 @@
 #include <sys/shm.h>
 #include <sys/stat.h>
 
-#include <libc-internal.h>
 #include <libc-mmap.h>
+#include <libc-pointer-arith.h>
 #include "../../crypt/md5.h"
 #include "../localeinfo.h"
 #include "../locarchive.h"
diff --git a/locale/weight.h b/locale/weight.h
index f479718..0558123 100644
--- a/locale/weight.h
+++ b/locale/weight.h
@@ -19,7 +19,7 @@
 #ifndef _WEIGHT_H_
 #define _WEIGHT_H_	1
 
-#include <libc-internal.h>
+#include <libc-diag.h>
 
 /* Find index of weight.  */
 static inline int32_t __attribute__ ((always_inline))
diff --git a/locale/weightwc.h b/locale/weightwc.h
index 6a726aa..97ce2b3 100644
--- a/locale/weightwc.h
+++ b/locale/weightwc.h
@@ -19,7 +19,7 @@
 #ifndef _WEIGHTWC_H_
 #define _WEIGHTWC_H_	1
 
-#include <libc-internal.h>
+#include <libc-diag.h>
 
 /* Find index of weight.  */
 static inline int32_t __attribute__ ((always_inline))
diff --git a/malloc/malloc.c b/malloc/malloc.c
index 4885793..e29105c 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -237,7 +237,7 @@
 #include <sys/param.h>
 
 /* For ALIGN_UP et. al.  */
-#include <libc-internal.h>
+#include <libc-pointer-arith.h>
 
 #include <malloc/malloc-internal.h>
 
diff --git a/misc/ptrace.c b/misc/ptrace.c
index 06356c9..aace1b5 100644
--- a/misc/ptrace.c
+++ b/misc/ptrace.c
@@ -19,7 +19,6 @@
 #include <sys/ptrace.h>
 #include <sys/types.h>
 #include <stdarg.h>
-#include <libc-internal.h>
 
 /* Perform process tracing functions.  REQUEST is one of the values
    in <sys/ptrace.h>, and determines the action to be taken.
diff --git a/misc/reboot.c b/misc/reboot.c
index 86b0a50..70549c4 100644
--- a/misc/reboot.c
+++ b/misc/reboot.c
@@ -18,7 +18,7 @@
 #include <errno.h>
 #include <unistd.h>
 #include <sys/reboot.h>
-#include <libc-internal.h>
+#include <libc-diag.h>
 
 /* Reboot the system.  */
 int
diff --git a/nis/nis_table.c b/nis/nis_table.c
index c0b05db..caf3e6a 100644
--- a/nis/nis_table.c
+++ b/nis/nis_table.c
@@ -19,7 +19,7 @@
 #include <assert.h>
 #include <string.h>
 #include <rpcsvc/nis.h>
-#include <libc-internal.h>
+#include <libc-diag.h>
 
 #include "nis_xdr.h"
 #include "nis_intern.h"
diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
index 2f8599b..2921607 100644
--- a/nptl/nptl-init.c
+++ b/nptl/nptl-init.c
@@ -36,7 +36,7 @@
 #include <lowlevellock.h>
 #include <futex-internal.h>
 #include <kernel-features.h>
-#include <libc-internal.h>
+#include <libc-pointer-arith.h>
 #include <pthread-pids.h>
 
 #ifndef TLS_MULTIPLE_THREADS_IN_TCB
diff --git a/nptl/pthread_clock_gettime.c b/nptl/pthread_clock_gettime.c
index e3a82f7..c9abb61 100644
--- a/nptl/pthread_clock_gettime.c
+++ b/nptl/pthread_clock_gettime.c
@@ -18,7 +18,6 @@
 #include <errno.h>
 #include <stdlib.h>
 #include <time.h>
-#include <libc-internal.h>
 #include "pthreadP.h"
 
 
diff --git a/nptl/pthread_clock_settime.c b/nptl/pthread_clock_settime.c
index 6aeb3be..f2722d9 100644
--- a/nptl/pthread_clock_settime.c
+++ b/nptl/pthread_clock_settime.c
@@ -18,7 +18,6 @@
 #include <errno.h>
 #include <stdlib.h>
 #include <time.h>
-#include <libc-internal.h>
 #include "pthreadP.h"
 
 
diff --git a/nptl/pthread_cond_common.c b/nptl/pthread_cond_common.c
index 7c63ef9..ffbbde4 100644
--- a/nptl/pthread_cond_common.c
+++ b/nptl/pthread_cond_common.c
@@ -19,7 +19,6 @@
 #include <atomic.h>
 #include <stdint.h>
 #include <pthread.h>
-#include <libc-internal.h>
 
 /* We need 3 least-significant bits on __wrefs for something else.  */
 #define __PTHREAD_COND_MAX_GROUP_SIZE ((unsigned) 1 << 29)
diff --git a/nptl_db/thread_dbP.h b/nptl_db/thread_dbP.h
index d359e79..c88ee29 100644
--- a/nptl_db/thread_dbP.h
+++ b/nptl_db/thread_dbP.h
@@ -30,7 +30,7 @@
 #include "../nptl/pthreadP.h"  	/* This is for *_BITMASK only.  */
 #include <list.h>
 #include <gnu/lib-names.h>
-#include <libc-internal.h>
+#include <libc-diag.h>
 
 /* Indeces for the symbol names.  */
 enum
diff --git a/nscd/connections.c b/nscd/connections.c
index 26d2c00..205ff42 100644
--- a/nscd/connections.c
+++ b/nscd/connections.c
@@ -59,7 +59,7 @@
 #include <resolv/resolv.h>
 
 #include <kernel-features.h>
-#include <libc-internal.h>
+#include <libc-diag.h>
 
 
 /* Support to run nscd as an unprivileged user */
diff --git a/posix/wordexp-test.c b/posix/wordexp-test.c
index 15eb233..17ae812 100644
--- a/posix/wordexp-test.c
+++ b/posix/wordexp-test.c
@@ -22,10 +22,11 @@
 #include <unistd.h>
 #include <pwd.h>
 #include <stdio.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 #include <wordexp.h>
-#include <libc-internal.h>
+#include <libc-pointer-arith.h>
 
 #define IFS " \n\t"
 
diff --git a/resolv/res_send.c b/resolv/res_send.c
index 93db5b9..28c4cab 100644
--- a/resolv/res_send.c
+++ b/resolv/res_send.c
@@ -108,7 +108,7 @@
 #include <string.h>
 #include <unistd.h>
 #include <kernel-features.h>
-#include <libc-internal.h>
+#include <libc-diag.h>
 
 #if PACKETSZ > 65536
 #define MAXPACKET       PACKETSZ
diff --git a/soft-fp/fmadf4.c b/soft-fp/fmadf4.c
index 7b7342b..74e2360 100644
--- a/soft-fp/fmadf4.c
+++ b/soft-fp/fmadf4.c
@@ -25,8 +25,9 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <libc-internal.h>
-#include <sys/cdefs.h>
+#include <math.h>
+#include <libc-diag.h>
+
 /* R_e is not set in cases where it is not used in packing, but the
    compiler does not see that it is set in all cases where it is
    used, resulting in warnings that it may be used uninitialized.
@@ -35,7 +36,7 @@
    macro is defined.  */
 DIAG_PUSH_NEEDS_COMMENT;
 DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wmaybe-uninitialized");
-#include <math.h>
+
 #include "soft-fp.h"
 #include "double.h"
 
diff --git a/soft-fp/fmasf4.c b/soft-fp/fmasf4.c
index 20c0ca8..2d3120e 100644
--- a/soft-fp/fmasf4.c
+++ b/soft-fp/fmasf4.c
@@ -25,8 +25,9 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <libc-internal.h>
-#include <sys/cdefs.h>
+#include <math.h>
+#include <libc-diag.h>
+
 /* R_e is not set in cases where it is not used in packing, but the
    compiler does not see that it is set in all cases where it is
    used, resulting in warnings that it may be used uninitialized.
@@ -35,7 +36,7 @@
    macro is defined.  */
 DIAG_PUSH_NEEDS_COMMENT;
 DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wmaybe-uninitialized");
-#include <math.h>
+
 #include "soft-fp.h"
 #include "single.h"
 
diff --git a/soft-fp/fmatf4.c b/soft-fp/fmatf4.c
index d3a4ee4..553a7ad 100644
--- a/soft-fp/fmatf4.c
+++ b/soft-fp/fmatf4.c
@@ -25,8 +25,9 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <libc-internal.h>
-#include <sys/cdefs.h>
+#include <math.h>
+#include <libc-diag.h>
+
 /* R_e is not set in cases where it is not used in packing, but the
    compiler does not see that it is set in all cases where it is
    used, resulting in warnings that it may be used uninitialized.
@@ -35,7 +36,7 @@
    macro is defined.  */
 DIAG_PUSH_NEEDS_COMMENT;
 DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wmaybe-uninitialized");
-#include <math.h>
+
 #include "soft-fp.h"
 #include "quad.h"
 
diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c
index 214dab4..1adf27e 100644
--- a/stdio-common/vfscanf.c
+++ b/stdio-common/vfscanf.c
@@ -27,7 +27,7 @@
 #include <string.h>
 #include <wchar.h>
 #include <wctype.h>
-#include <libc-internal.h>
+#include <libc-diag.h>
 #include <libc-lock.h>
 #include <locale/localeinfo.h>
 #include <scratch_buffer.h>
diff --git a/string/strcoll_l.c b/string/strcoll_l.c
index 7e8fbf3..8fd55b0 100644
--- a/string/strcoll_l.c
+++ b/string/strcoll_l.c
@@ -24,7 +24,6 @@
 #include <stdint.h>
 #include <string.h>
 #include <sys/param.h>
-#include <libc-internal.h>
 
 #ifndef STRING_TYPE
 # define STRING_TYPE char
diff --git a/string/strcspn.c b/string/strcspn.c
index 06299e2..1035552 100644
--- a/string/strcspn.c
+++ b/string/strcspn.c
@@ -17,7 +17,7 @@
 
 #include <string.h>
 #include <stdint.h>
-#include <libc-internal.h>
+#include <libc-pointer-arith.h>
 
 #undef strcspn
 
diff --git a/string/strspn.c b/string/strspn.c
index a7fec70..c63197c 100644
--- a/string/strspn.c
+++ b/string/strspn.c
@@ -17,7 +17,7 @@
 
 #include <string.h>
 #include <stdint.h>
-#include <libc-internal.h>
+#include <libc-pointer-arith.h>
 
 #undef strspn
 #ifndef STRSPN
diff --git a/sysdeps/i386/nptl/tls.h b/sysdeps/i386/nptl/tls.h
index 2500c82..04dc6ae 100644
--- a/sysdeps/i386/nptl/tls.h
+++ b/sysdeps/i386/nptl/tls.h
@@ -26,7 +26,7 @@
 # include <stdint.h>
 # include <stdlib.h>
 # include <sysdep.h>
-# include <libc-internal.h>
+# include <libc-pointer-arith.h> /* For cast_to_integer. */
 # include <kernel-features.h>
 # include <dl-dtv.h>
 
diff --git a/sysdeps/ieee754/dbl-64/e_lgamma_r.c b/sysdeps/ieee754/dbl-64/e_lgamma_r.c
index c337679..b5860d8 100644
--- a/sysdeps/ieee754/dbl-64/e_lgamma_r.c
+++ b/sysdeps/ieee754/dbl-64/e_lgamma_r.c
@@ -77,9 +77,9 @@
  *
  */
 
-#include <libc-internal.h>
 #include <math.h>
 #include <math_private.h>
+#include <libc-diag.h>
 
 static const double
 two52=  4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */
diff --git a/sysdeps/ieee754/dbl-64/k_rem_pio2.c b/sysdeps/ieee754/dbl-64/k_rem_pio2.c
index d853b65..2b5add6 100644
--- a/sysdeps/ieee754/dbl-64/k_rem_pio2.c
+++ b/sysdeps/ieee754/dbl-64/k_rem_pio2.c
@@ -132,7 +132,7 @@ static char rcsid[] = "$NetBSD: k_rem_pio2.c,v 1.7 1995/05/10 20:46:25 jtc Exp $
 
 #include <math.h>
 #include <math_private.h>
-#include <libc-internal.h>
+#include <libc-diag.h>
 
 static const int init_jk[] = {2,3,4,6}; /* initial value for jk */
 
diff --git a/sysdeps/ieee754/flt-32/e_lgammaf_r.c b/sysdeps/ieee754/flt-32/e_lgammaf_r.c
index 1bd2122..1b30dcd 100644
--- a/sysdeps/ieee754/flt-32/e_lgammaf_r.c
+++ b/sysdeps/ieee754/flt-32/e_lgammaf_r.c
@@ -13,9 +13,9 @@
  * ====================================================
  */
 
-#include <libc-internal.h>
 #include <math.h>
 #include <math_private.h>
+#include <libc-diag.h>
 
 static const float
 two23=  8.3886080000e+06, /* 0x4b000000 */
diff --git a/sysdeps/ieee754/flt-32/k_rem_pio2f.c b/sysdeps/ieee754/flt-32/k_rem_pio2f.c
index 52ffb09..a8d5b21 100644
--- a/sysdeps/ieee754/flt-32/k_rem_pio2f.c
+++ b/sysdeps/ieee754/flt-32/k_rem_pio2f.c
@@ -19,7 +19,7 @@ static char rcsid[] = "$NetBSD: k_rem_pio2f.c,v 1.4 1995/05/10 20:46:28 jtc Exp
 
 #include <math.h>
 #include <math_private.h>
-#include <libc-internal.h>
+#include <libc-diag.h>
 
 /* In the float version, the input parameter x contains 8 bit
    integers, not 24 bit integers.  113 bit precision is not supported.  */
diff --git a/sysdeps/ieee754/ldbl-128/k_tanl.c b/sysdeps/ieee754/ldbl-128/k_tanl.c
index dc9c457..e79023c 100644
--- a/sysdeps/ieee754/ldbl-128/k_tanl.c
+++ b/sysdeps/ieee754/ldbl-128/k_tanl.c
@@ -57,9 +57,10 @@
  */
 
 #include <float.h>
-#include <libc-internal.h>
 #include <math.h>
 #include <math_private.h>
+#include <libc-diag.h>
+
 static const _Float128
   one = 1,
   pio4hi = L(7.8539816339744830961566084581987569936977E-1),
diff --git a/sysdeps/ieee754/ldbl-128ibm/k_tanl.c b/sysdeps/ieee754/ldbl-128ibm/k_tanl.c
index 3c1bf32..232e00c 100644
--- a/sysdeps/ieee754/ldbl-128ibm/k_tanl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/k_tanl.c
@@ -57,9 +57,10 @@
  */
 
 #include <float.h>
-#include <libc-internal.h>
 #include <math.h>
 #include <math_private.h>
+#include <libc-diag.h>
+
 static const long double
   one = 1.0L,
   pio4hi = 7.8539816339744830961566084581987569936977E-1L,
diff --git a/sysdeps/ieee754/ldbl-96/e_lgammal_r.c b/sysdeps/ieee754/ldbl-96/e_lgammal_r.c
index 9862fe8..4ecd630 100644
--- a/sysdeps/ieee754/ldbl-96/e_lgammal_r.c
+++ b/sysdeps/ieee754/ldbl-96/e_lgammal_r.c
@@ -91,9 +91,9 @@
  *
  */
 
-#include <libc-internal.h>
 #include <math.h>
 #include <math_private.h>
+#include <libc-diag.h>
 
 static const long double
   half = 0.5L,
diff --git a/sysdeps/ieee754/ldbl-96/k_tanl.c b/sysdeps/ieee754/ldbl-96/k_tanl.c
index 0c050c1..f8641d5 100644
--- a/sysdeps/ieee754/ldbl-96/k_tanl.c
+++ b/sysdeps/ieee754/ldbl-96/k_tanl.c
@@ -57,9 +57,10 @@
  */
 
 #include <float.h>
-#include <libc-internal.h>
 #include <math.h>
 #include <math_private.h>
+#include <libc-diag.h>
+
 static const long double
   one = 1.0L,
   pio4hi = 0xc.90fdaa22168c235p-4L,
diff --git a/sysdeps/nacl/brk.c b/sysdeps/nacl/brk.c
index 15e0c4f..c96c66f 100644
--- a/sysdeps/nacl/brk.c
+++ b/sysdeps/nacl/brk.c
@@ -17,7 +17,6 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <errno.h>
-#include <libc-internal.h>
 #include <stdint.h>
 #include <sys/mman.h>
 #include <sys/param.h>
diff --git a/sysdeps/nacl/dl-map-segments.h b/sysdeps/nacl/dl-map-segments.h
index 501d8be..ab2ad43 100644
--- a/sysdeps/nacl/dl-map-segments.h
+++ b/sysdeps/nacl/dl-map-segments.h
@@ -16,12 +16,15 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#ifndef _NACL_DL_MAP_SEGMENTS_H
+#define _NACL_DL_MAP_SEGMENTS_H 1
+
 #include <assert.h>
 #include <dl-load.h>
 #include <errno.h>
 #include <stdbool.h>
 #include <unistd.h>
-#include <libc-internal.h>
+#include <libc-pointer-arith.h>
 
 
 /* This is basically pread, but with iteration after short reads.  */
@@ -262,3 +265,5 @@ _dl_map_segments (struct link_map *l, int fd,
 
   return NULL;
 }
+
+#endif /* dl-map-segments.h */
diff --git a/sysdeps/nptl/futex-internal.h b/sysdeps/nptl/futex-internal.h
index 532d47d..be7a33f 100644
--- a/sysdeps/nptl/futex-internal.h
+++ b/sysdeps/nptl/futex-internal.h
@@ -23,7 +23,7 @@
 #include <sys/time.h>
 #include <stdio.h>
 #include <stdbool.h>
-#include <libc-internal.h>
+#include <libc-diag.h>
 
 /* This file defines futex operations used internally in glibc.  A futex
    consists of the so-called futex word in userspace, which is of type
diff --git a/sysdeps/unix/clock_settime.c b/sysdeps/unix/clock_settime.c
index 957a4b1..e744cae 100644
--- a/sysdeps/unix/clock_settime.c
+++ b/sysdeps/unix/clock_settime.c
@@ -18,7 +18,6 @@
 #include <errno.h>
 #include <time.h>
 #include <sys/time.h>
-#include <libc-internal.h>
 #include <ldsodefs.h>
 
 
diff --git a/sysdeps/unix/sysv/linux/i386/get_clockfreq.c b/sysdeps/unix/sysv/linux/i386/get_clockfreq.c
index bee3fe8..88e14b5 100644
--- a/sysdeps/unix/sysv/linux/i386/get_clockfreq.c
+++ b/sysdeps/unix/sysv/linux/i386/get_clockfreq.c
@@ -20,8 +20,6 @@
 #include <fcntl.h>
 #include <string.h>
 #include <unistd.h>
-#include <libc-internal.h>
-
 
 hp_timing_t
 __get_clockfreq (void)
diff --git a/sysdeps/unix/sysv/linux/ia64/get_clockfreq.c b/sysdeps/unix/sysv/linux/ia64/get_clockfreq.c
index 5dd9c01..603c7d5 100644
--- a/sysdeps/unix/sysv/linux/ia64/get_clockfreq.c
+++ b/sysdeps/unix/sysv/linux/ia64/get_clockfreq.c
@@ -20,7 +20,6 @@
 #include <fcntl.h>
 #include <string.h>
 #include <unistd.h>
-#include <libc-internal.h>
 
 
 hp_timing_t
diff --git a/sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c b/sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c
index ad1622d..b8d01d8 100644
--- a/sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c
+++ b/sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c
@@ -21,7 +21,6 @@
 #include <stdint.h>
 #include <string.h>
 #include <unistd.h>
-#include <libc-internal.h>
 #include <sysdep.h>
 #include <libc-vdso.h>
 #include <not-cancel.h>
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/get_clockfreq.c b/sysdeps/unix/sysv/linux/sparc/sparc64/get_clockfreq.c
index dc9ba69..a034979 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/get_clockfreq.c
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/get_clockfreq.c
@@ -24,7 +24,6 @@
 #include <stdlib.h>
 #include <inttypes.h>
 #include <sys/ioctl.h>
-#include <libc-internal.h>
 #include <asm/openpromio.h>
 
 static hp_timing_t
diff --git a/sysdeps/unix/sysv/linux/spawni.c b/sysdeps/unix/sysv/linux/spawni.c
index 2daf0c5..24f75db 100644
--- a/sysdeps/unix/sysv/linux/spawni.c
+++ b/sysdeps/unix/sysv/linux/spawni.c
@@ -30,8 +30,8 @@
 #include <shlib-compat.h>
 #include <nptl/pthreadP.h>
 #include <dl-sysdep.h>
+#include <libc-pointer-arith.h>
 #include <ldsodefs.h>
-#include <libc-internal.h>
 #include "spawn_int.h"
 
 /* The Linux implementation of posix_spawn{p} uses the clone syscall directly
diff --git a/sysdeps/x86_64/atomic-machine.h b/sysdeps/x86_64/atomic-machine.h
index 672a7eb..2e8a9aa 100644
--- a/sysdeps/x86_64/atomic-machine.h
+++ b/sysdeps/x86_64/atomic-machine.h
@@ -16,10 +16,12 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <stdint.h>
-#include <tls.h>	/* For tcbhead_t.  */
-#include <libc-internal.h>
+#ifndef _X86_64_ATOMIC_MACHINE_H
+#define _X86_64_ATOMIC_MACHINE_H 1
 
+#include <stdint.h>
+#include <tls.h>                   /* For tcbhead_t.  */
+#include <libc-pointer-arith.h>    /* For cast_to_integer.  */
 
 typedef int8_t atomic8_t;
 typedef uint8_t uatomic8_t;
@@ -475,3 +477,5 @@ typedef uintmax_t uatomic_max_t;
     __asm __volatile (LOCK_PREFIX "orl $0, (%%rsp)" ::: "memory")
 #define atomic_read_barrier() __asm ("" ::: "memory")
 #define atomic_write_barrier() __asm ("" ::: "memory")
+
+#endif /* atomic-machine.h */
diff --git a/sysdeps/x86_64/nptl/tls.h b/sysdeps/x86_64/nptl/tls.h
index f2afe85..53b41bc 100644
--- a/sysdeps/x86_64/nptl/tls.h
+++ b/sysdeps/x86_64/nptl/tls.h
@@ -26,7 +26,7 @@
 # include <stdint.h>
 # include <stdlib.h>
 # include <sysdep.h>
-# include <libc-internal.h>
+# include <libc-pointer-arith.h> /* For cast_to_integer.  */
 # include <kernel-features.h>
 # include <dl-dtv.h>
 

-----------------------------------------------------------------------


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]