diff options
43 files changed, 573 insertions, 257 deletions
@@ -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)) \ @@ -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++ \ @@ -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) \ @@ -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 |
