aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog102
-rw-r--r--Makeconfig3
-rw-r--r--Makefile4
-rw-r--r--Makerules53
-rw-r--r--Rules18
-rw-r--r--config.h.in11
-rw-r--r--elf/Makefile58
-rw-r--r--elf/tst-env-setuid-tunables.c6
-rw-r--r--include/errno.h2
-rw-r--r--include/libc-symbols.h68
-rw-r--r--include/math.h5
-rw-r--r--include/stdio.h7
-rw-r--r--include/stdlib.h4
-rw-r--r--include/string.h10
-rw-r--r--include/time.h4
-rw-r--r--include/unistd.h3
-rw-r--r--include/wchar.h2
-rw-r--r--inet/Makefile7
-rw-r--r--inet/tst-checks-posix.c1
-rw-r--r--intl/tst-gettext2.c2
-rw-r--r--malloc/Makefile6
-rw-r--r--math/test-signgam-finite-c99.c1
-rw-r--r--math/test-signgam-main.c1
-rw-r--r--misc/Makefile5
-rw-r--r--misc/sys/cdefs.h3
-rw-r--r--nptl/Makefile31
-rw-r--r--nss/Makefile4
-rw-r--r--posix/Makefile11
-rw-r--r--stdlib/Makefile17
-rw-r--r--stdlib/tst-strtod.c67
-rw-r--r--stdlib/tst-strtod1i.c84
-rw-r--r--stdlib/tst-strtod5.c75
-rw-r--r--stdlib/tst-strtod5i.c100
-rw-r--r--string/test-string.h11
-rw-r--r--string/test-strstr.c1
-rw-r--r--sunrpc/Makefile3
-rw-r--r--sysdeps/ia64/fpu/libm-symbols.h2
-rw-r--r--sysdeps/m68k/m680x0/fpu/bits/mathinline.h15
-rw-r--r--sysdeps/powerpc/Makefile2
-rw-r--r--sysdeps/unix/sysv/linux/Makefile3
-rw-r--r--sysdeps/x86_64/fpu/Makefile8
-rw-r--r--sysdeps/x86_64/fpu/math-tests-arch.h8
-rw-r--r--sysdeps/x86_64/multiarch/test-multiarch.c2
43 files changed, 573 insertions, 257 deletions
diff --git a/ChangeLog b/ChangeLog
index b08ac488ff..246a8b4eba 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,107 @@
2017-05-11 Zack Weinberg <zackw@panix.com>
+ * 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.
+ (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.
+ * 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/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.
+
+ * misc/sys/cdefs.h (__NTHNL): New macro.
+ * sysdeps/m68k/m680x0/fpu/bits/mathinline.h
+ (__m81_defun): Use __NTHNL to avoid errors with GCC 6.
+
+ * 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: Convert to test-driver. Split locale_test to...
+ * stdlib/tst-strtod1i.c: ...this new file.
+ * stdlib/tst-strtod5.c: Convert to test-driver and add copyright notice.
+ 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.
+
+ * 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.
+ Add tst-deadline to tests-static-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 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.
+ * sunrpc/Makefile: Move tst-svc_register to tests-internal.
+ * sysdeps/powerpc/Makefile: Move test-get_hwcap and
+ test-get_hwcap-static to tests-internal.
+ * sysdeps/unix/sysv/linux/Makefile: Move tst-setgetname to
+ tests-internal.
+ * sysdeps/x86_64/fpu/Makefile: Add all libmvec test modules to
+ modules-names-tests.
+
+2017-05-11 Zack Weinberg <zackw@panix.com>
+
* libio/libio.h: Condition dummy definition of _IO_lock_t on
_IO_lock_t_defined, not _IO_MTSAFE_IO. Unconditionally use the
non-_IO_MTSAFE_IO definitions for _IO_peekc, _IO_flockfile,
diff --git a/Makeconfig b/Makeconfig
index 1c815113b9..b494b82b40 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -908,7 +908,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 1b896b979c..3e0ae6f43b 100644
--- a/Makefile
+++ b/Makefile
@@ -270,7 +270,7 @@ $(objpfx)check-local-headers.out: scripts/check-local-headers.sh
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 \
@@ -280,7 +280,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 15f46e5f3a..2000e543a1 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
@@ -793,10 +793,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
-cpp-srcs-left := $(modules-names)
-lib = extramodules
-include $(patsubst %,$(..)libof-iterator.mk,$(modules-names))
+cpp-srcs-left := $(filter-out $(modules-names-tests),$(modules-names))
+ifneq (,$(cpp-srcs-left))
+lib := extramodules
+include $(patsubst %,$(..)libof-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 %,$(..)libof-iterator.mk,$(cpp-srcs-left))
+endif
+endif
extra-modules-build := $(filter-out $(modules-names-nobuild),$(modules-names))
$(extra-modules-build:%=$(objpfx)%.so): $(objpfx)%.so: \
@@ -808,7 +819,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
@@ -1321,7 +1332,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 %,$(..)libof-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
@@ -1535,22 +1556,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 917bc969b5..168cf508d7 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/config.h.in b/config.h.in
index 2caa412575..22418576a0 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 wi