This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Enumerate tests with special rules in tests-special variable
- From: "Carlos O'Donell" <carlos at redhat dot com>
- To: "Joseph S. Myers" <joseph at codesourcery dot com>, libc-alpha at sourceware dot org
- Date: Thu, 06 Mar 2014 13:22:36 -0500
- Subject: Re: Enumerate tests with special rules in tests-special variable
- Authentication-results: sourceware.org; auth=none
- References: <Pine dot LNX dot 4 dot 64 dot 1403012358250 dot 15569 at digraph dot polyomino dot org dot uk>
Joseph,
Despite reviewing the old patch this is very similar, and quick
to review and test since it matches your old patch closely.
Still OK to checkin.
On 03/01/2014 06:58 PM, Joseph S. Myers wrote:
> This patch is a revised and updated verison of
> <https://sourceware.org/ml/libc-alpha/2014-01/msg00196.html> now
> proposed for inclusion in glibc.
>
> In order to generate overall summaries of the results of all tests in
> the glibc testsuite, we need to identify and concatenate the files
> with the results of individual tests.
>
> Tomas Dohnalek's patch used $(common-objpfx)*/*.test-result for this.
> However, the normal glibc approach is explicit enumeration of the
> expected set of files with a given property, rather than all files
> matching some pattern like that. Furthermore, we would like to be
> able to mark tests as UNRESOLVED if the file with their results is for
> some reason missing, and in future we would like to be able to mark
> tests as UNSUPPORTED if they are disabled for a particular
> configuration (rather than simply having them missing from the list of
> tests as at present). Such handling of tests that were not run or did
> not record results requires an explicit enumeration of tests.
>
> For the tests following the default makefile rules, $(tests) (and
> $(xtests)) provides such an enumeration. Others, however, are added
> directly as dependencies of the "tests" and "xtests" makefile
> targets. This patch changes the makefiles to put them in variables
> tests-special and xtests-special, with appropriate dependencies on the
> tests listed there then being added centrally.
>
> Those variables are used in Rules and so need to be set before Rules
> is included in a subdirectory makefile, which is often earlier in the
> makefile than the dependencies were present before. We previously
> discussed the question of where to include Rules; see the question at
> <https://sourceware.org/ml/libc-alpha/2012-11/msg00798.html>, and a
> discussion in
> <https://sourceware.org/ml/libc-alpha/2013-01/msg00337.html> of why
> Rules is included early rather than late in subdirectory makefiles.
>
> It was necessary to avoid an indirection through the check-abi target
> and get the check-abi-* targets for individual libraries into the
> tests-special variable. The intl/ test $(objpfx)tst-gettext.out,
> previously built only because of dependencies from other tests, was
> also added to tests-special for the same reason.
>
> The entries in tests-special are the full makefile targets, complete
> with $(objpfx) and .out. If a future change causes tests to be named
> consistently with a .out suffix, this can be changed to include just
> the path relative to $(objpfx), without .out.
>
> Tested x86_64, including that the same set of files is generated in
> the build directory by a build and testsuite run both before and after
> the patch (except for changes to the
> elf/tst-null-argv.debug.out.<number> file name), and a build with
> run-built-tests=no to verify there aren't any more obvious instances
> of the issue Marcus Shawcroft reported with a previous version in
> <https://sourceware.org/ml/libc-alpha/2014-01/msg00462.html>.
> (However, I still recommend careful review that the sets of targets
> added to tests-special and xtests-special are identical to those
> previously given as dependencies of tests and xtests, under the same
> makefile conditions, except for the cases I noted above where
> indirection needed to be removed.)
>
> 2014-03-01 Joseph Myers <joseph@codesourcery.com>
>
> * Makefile (tests): Change dependencies to ....
> (tests-special): ... additions to this variable.
> (tests): Depend on $(tests-special).
> * Makerules (check-abi-list): New variable.
> (check-abi): Depend on $(check-abi-list).
> [$(subdir) = elf] (tests-special): Add
> $(objpfx)check-abi-libc.out.
> [$(build-shared) = yes && subdir] (tests-special): Add
> $(check-abi-list).
> [$(build-shared) = yes && subdir] (tests): Do not depend on
> check-abi.
> * Rules (tests): Depend on $(tests-special).
> (xtests): Depend on $(xtests-special).
> * catgets/Makefile (tests): Change dependencies to ....
> (tests-special): ... additions to this variable.
> * conform/Makefile (tests): Change dependencies to ....
> (tests-special): ... additions to this variable.
> * elf/Makefile (tests): Change dependencies to ....
> (tests-special): ... additions to this variable.
> * grp/Makefile (tests): Change dependencies to ....
> (tests-special): ... additions to this variable.
> * iconv/Makefile (xtests): Change dependencies to ....
> (xtests-special): ... additions to this variable.
> * iconvdata/Makefile (tests): Change dependencies to ....
> (tests-special): ... additions to this variable.
> * intl/Makefile (tests): Change dependencies to ....
> (tests-special): ... additions to this variable. Also add
> $(objpfx)tst-gettext.out.
> * io/Makefile (tests): Change dependencies to ....
> (tests-special): ... additions to this variable.
> * libio/Makefile (tests): Change dependencies to ....
> (tests-special): ... additions to this variable.
> * malloc/Makefile (tests): Change dependencies to ....
> (tests-special): ... additions to this variable.
> * misc/Makefile (tests): Change dependencies to ....
> (tests-special): ... additions to this variable.
> * posix/Makefile (tests): Change dependencies to ....
> (tests-special): ... additions to this variable.
> (xtests): Change dependencies to ....
> (xtests-special): ... additions to this variable.
> * resolv/Makefile (tests): Change dependencies to ....
> (tests-special): ... additions to this variable.
> (xtests): Change dependencies to ....
> (xtests-special): ... additions to this variable.
> * stdio-common/Makefile (tests): Change dependencies to ....
> (tests-special): ... additions to this variable.
> (do-tst-unbputc): Remove target.
> (do-tst-printf): Likewise.
> * stdlib/Makefile (tests): Change dependencies to ....
> (tests-special): ... additions to this variable.
> * string/Makefile (tests): Change dependencies to ....
> (tests-special): ... additions to this variable.
> * sysdeps/x86/Makefile (tests): Change dependencies to ....
> (tests-special): ... additions to this variable.
>
> localedata:
> 2014-03-01 Joseph Myers <joseph@codesourcery.com>
>
> * Makefile (tests): Change dependencies to ....
> (tests-special): ... additions to this variable.
>
> nptl:
> 2014-03-01 Joseph Myers <joseph@codesourcery.com>
>
> * Makefile (tests): Change dependencies to ....
> (tests-special): ... additions to this variable.
>
> nptl_db:
> 2014-03-01 Joseph Myers <joseph@codesourcery.com>
>
> * Makefile (tests): Change dependencies to ....
> (tests-special): ... additions to this variable.
>
> diff --git a/Makefile b/Makefile
> index a9b5597..aee88e1 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -250,7 +250,7 @@ mostlyclean: parent-mostlyclean
> tests-clean:
> @$(MAKE) subdir_testclean no_deps=t
>
> -tests: $(objpfx)c++-types-check.out $(objpfx)check-local-headers.out
> +tests-special += $(objpfx)c++-types-check.out $(objpfx)check-local-headers.out
> ifneq ($(CXX),no)
>
> vpath c++-types.data $(+sysdep_dirs)
> @@ -310,12 +310,14 @@ installed-headers = argp/argp.h assert/assert.h catgets/nl_types.h \
> time/sys/time.h time/sys/timeb.h wcsmbs/wchar.h \
> wctype/wctype.h
>
> -tests: $(objpfx)begin-end-check.out
> +tests-special += $(objpfx)begin-end-check.out
> $(objpfx)begin-end-check.out: scripts/begin-end-check.pl
> $(PERL) scripts/begin-end-check.pl $(installed-headers) > $@; \
> $(evaluate-test)
> endif
>
> +tests: $(tests-special)
> +
> # The realclean target is just like distclean for the parent, but we want
> # the subdirs to know the difference in case they care.
> realclean distclean: parent-clean
> diff --git a/Makerules b/Makerules
> index c232436..ad81ea9 100644
> --- a/Makerules
> +++ b/Makerules
> @@ -1246,7 +1246,9 @@ endef
>
> .PHONY: update-abi check-abi
> update-abi: $(patsubst %.so,update-abi-%,$(install-lib.so-versioned))
> -check-abi: $(patsubst %.so,$(objpfx)check-abi-%.out,$(install-lib.so-versioned))
> +check-abi-list = $(patsubst %.so,$(objpfx)check-abi-%.out, \
> + $(install-lib.so-versioned))
> +check-abi: $(check-abi-list)
> ifdef subdir
> subdir_check-abi: check-abi
> subdir_update-abi: update-abi
> @@ -1257,13 +1259,14 @@ endif
>
> ifeq ($(subdir),elf)
> check-abi: $(objpfx)check-abi-libc.out
> +tests-special += $(objpfx)check-abi-libc.out
> update-abi: update-abi-libc
> common-generated += libc.symlist
> endif
>
> ifeq ($(build-shared),yes)
> ifdef subdir
> -tests: check-abi
> +tests-special += $(check-abi-list)
> endif
> endif
>
> diff --git a/Rules b/Rules
> index 3e305dd..d37ae52 100644
> --- a/Rules
> +++ b/Rules
> @@ -95,11 +95,11 @@ else
> others: $(addprefix $(objpfx),$(extra-objs))
> endif
> ifeq ($(run-built-tests),no)
> -tests: $(addprefix $(objpfx),$(tests) $(test-srcs))
> -xtests: tests
> +tests: $(addprefix $(objpfx),$(tests) $(test-srcs)) $(tests-special)
> +xtests: tests $(xtests-special)
> else
> -tests: $(tests:%=$(objpfx)%.out)
> -xtests: tests $(xtests:%=$(objpfx)%.out)
> +tests: $(tests:%=$(objpfx)%.out) $(tests-special)
> +xtests: tests $(xtests:%=$(objpfx)%.out) $(xtests-special)
> endif
>
> ifeq ($(build-programs),yes)
> diff --git a/catgets/Makefile b/catgets/Makefile
> index 5eba3b5..02ca263 100644
> --- a/catgets/Makefile
> +++ b/catgets/Makefile
> @@ -31,6 +31,11 @@ extra-objs = $(gencat-modules:=.o)
> tests = tst-catgets
> test-srcs = test-gencat
>
> +ifeq ($(run-built-tests),yes)
> +tests-special += $(objpfx)de/libc.cat $(objpfx)test1.cat $(objpfx)test2.cat \
> + $(objpfx)test-gencat.out
> +endif
> +
> gencat-modules = xmalloc
>
> # To find xmalloc.c
> @@ -53,8 +58,6 @@ generated-dirs += de
> tst-catgets-ENV = NLSPATH="$(objpfx)%l/%N.cat" LANG=de
>
> ifeq ($(run-built-tests),yes)
> -tests: $(objpfx)de/libc.cat $(objpfx)test1.cat $(objpfx)test2.cat \
> - $(objpfx)test-gencat.out
> # This test just checks whether the program produces any error or not.
> # The result is not tested.
> $(objpfx)test1.cat: test1.msg $(objpfx)gencat
> diff --git a/conform/Makefile b/conform/Makefile
> index 40081f3..3f76773 100644
> --- a/conform/Makefile
> +++ b/conform/Makefile
> @@ -22,14 +22,14 @@ subdir := conform
>
> include ../Makeconfig
>
> -include ../Rules
> -
> ifneq (yes,$(fast-check))
> ifeq (no,$(cross-compiling))
> -tests: $(objpfx)run-conformtest.out
> +tests-special += $(objpfx)run-conformtest.out
> endif
> endif
>
> +include ../Rules
> +
> test-xfail-run-conformtest = yes
> $(objpfx)run-conformtest.out: run-conformtest.sh conformtest.pl \
> $(wildcard data/*.h-data) \
> diff --git a/elf/Makefile b/elf/Makefile
> index 5637b48..1007a63 100644
> --- a/elf/Makefile
> +++ b/elf/Makefile
> @@ -157,8 +157,8 @@ tests-execstack-yes = tst-execstack tst-execstack-needed tst-execstack-prog
> endif
> endif
> ifeq ($(run-built-tests),yes)
> -tests: $(objpfx)tst-leaks1-mem $(objpfx)tst-leaks1-static-mem \
> - $(objpfx)noload-mem
> +tests-special += $(objpfx)tst-leaks1-mem $(objpfx)tst-leaks1-static-mem \
> + $(objpfx)noload-mem
> endif
> tlsmod17a-suffixes = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
> tlsmod18a-suffixes = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
> @@ -253,12 +253,31 @@ modules-names += ifuncmod1 ifuncmod3 ifuncmod5 ifuncmod6
> endif
> endif
>
> +ifeq (yes,$(build-shared))
> +ifeq ($(run-built-tests),yes)
> +tests-special += $(objpfx)tst-pathopt.out $(objpfx)tst-rtld-load-self.out
> +endif
> +tests-special += $(objpfx)check-textrel.out $(objpfx)check-execstack.out \
> + $(objpfx)check-localplt.out
> +endif
>
> -include ../Rules
> +ifeq ($(run-built-tests),yes)
> +tests-special += $(objpfx)order-cmp.out $(objpfx)tst-array1-cmp.out \
> + $(objpfx)tst-array1-static-cmp.out \
> + $(objpfx)tst-array2-cmp.out $(objpfx)tst-array3-cmp.out \
> + $(objpfx)tst-array4-cmp.out $(objpfx)tst-array5-cmp.out \
> + $(objpfx)tst-array5-static-cmp.out $(objpfx)order2-cmp.out \
> + $(objpfx)tst-initorder-cmp.out \
> + $(objpfx)tst-initorder2-cmp.out $(objpfx)tst-unused-dep.out \
> + $(objpfx)tst-unused-dep-cmp.out
> +endif
>
> check-abi: $(objpfx)check-abi-ld.out
> +tests-special += $(objpfx)check-abi-ld.out
> update-abi: update-abi-ld
>
> +include ../Rules
> +
> ifeq (yes,$(build-shared))
> # Make sure these things are built in the `make lib' pass so they can be used
> # to run programs during the `make others' pass.
> @@ -430,12 +449,6 @@ CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\
> test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(strip $(modules-names))))
> generated += $(addsuffix .so,$(strip $(modules-names)))
>
> -ifeq (yes,$(build-shared))
> -ifeq ($(run-built-tests),yes)
> -tests: $(objpfx)tst-pathopt.out $(objpfx)tst-rtld-load-self.out
> -endif
> -endif
> -
> $(objpfx)testobj1.so: $(libdl)
> $(objpfx)testobj1_1.so: $(objpfx)testobj1.so $(libdl)
> $(objpfx)testobj2.so: $(objpfx)testobj1.so $(libdl)
> @@ -640,9 +653,6 @@ $(objpfx)circlemod2a.so: $(objpfx)circlemod3a.so
>
> $(objpfx)order: $(addprefix $(objpfx),dep4.so dep3.so dep2.so dep1.so)
>
> -ifeq ($(run-built-tests),yes)
> -tests: $(objpfx)order-cmp.out
> -endif
> $(objpfx)order-cmp.out: $(objpfx)order.out
> (echo "0123456789" | cmp $< -) > $@; \
> $(evaluate-test)
> @@ -856,13 +866,6 @@ endif
> LDFLAGS-tst-array2 = $(no-as-needed)
> LDFLAGS-tst-array5 = $(no-as-needed)
>
> -ifeq ($(run-built-tests),yes)
> -tests: $(objpfx)tst-array1-cmp.out $(objpfx)tst-array1-static-cmp.out \
> - $(objpfx)tst-array2-cmp.out $(objpfx)tst-array3-cmp.out \
> - $(objpfx)tst-array4-cmp.out $(objpfx)tst-array5-cmp.out \
> - $(objpfx)tst-array5-static-cmp.out
> -endif
> -
> $(objpfx)tst-array1-cmp.out: tst-array1.exp $(objpfx)tst-array1.out
> cmp $^ > $@; \
> $(evaluate-test)
> @@ -902,8 +905,6 @@ CFLAGS-tst-pie1.c += $(pie-ccflag)
> $(objpfx)tst-pie1: $(objpfx)tst-piemod1.so
>
> ifeq (yes,$(build-shared))
> -tests: $(objpfx)check-textrel.out $(objpfx)check-execstack.out
> -
> all-built-dso := $(common-objpfx)libc.so \
> $(filter-out $(common-objpfx)linkobj/libc.so, \
> $(sort $(wildcard $(addprefix $(common-objpfx), \
> @@ -961,8 +962,6 @@ $(all-built-dso:=.jmprel): %.jmprel: % Makefile
> mv -f $@T $@
> common-generated += $(all-built-dso:$(common-objpfx)%=%.jmprel)
>
> -tests: $(objpfx)check-localplt.out
> -
> localplt-built-dso := $(addprefix $(common-objpfx),\
> libc.so \
> math/libm.so \
> @@ -1026,9 +1025,6 @@ tst-audit8-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so
> $(objpfx)tst-global1: $(libdl)
> $(objpfx)tst-global1.out: $(objpfx)testobj6.so $(objpfx)testobj2.so
>
> -ifeq ($(run-built-tests),yes)
> -tests: $(objpfx)order2-cmp.out
> -endif
> $(objpfx)order2: $(libdl)
> $(objpfx)order2.out: $(objpfx)order2mod1.so $(objpfx)order2mod2.so
> $(objpfx)order2-cmp.out: $(objpfx)order2.out
> @@ -1131,9 +1127,6 @@ $(objpfx)tst-unique3.out: $(objpfx)tst-unique3lib2.so
>
> $(objpfx)tst-unique4: $(objpfx)tst-unique4lib.so
>
> -ifeq ($(run-built-tests),yes)
> -tests: $(objpfx)tst-initorder-cmp.out
> -endif
> $(objpfx)tst-initorder-cmp.out: tst-initorder.exp $(objpfx)tst-initorder.out
> cmp $^ > $@; \
> $(evaluate-test)
> @@ -1153,9 +1146,6 @@ endef
> object-suffixes-left := a b c d
> include $(o-iterator)
>
> -ifeq ($(run-built-tests),yes)
> -tests: $(objpfx)tst-initorder2-cmp.out
> -endif
> $(objpfx)tst-initorder2-cmp.out: tst-initorder2.exp $(objpfx)tst-initorder2.out
> cmp $^ > $@; \
> $(evaluate-test)
> @@ -1166,10 +1156,6 @@ $(objpfx)tst-relsort1mod2.so: $(libm)
> $(objpfx)tst-relsort1.out: $(objpfx)tst-relsort1mod1.so \
> $(objpfx)tst-relsort1mod2.so
>
> -ifeq ($(run-built-tests),yes)
> -tests: $(objpfx)tst-unused-dep.out $(objpfx)tst-unused-dep-cmp.out
> -endif
> -
> $(objpfx)tst-unused-dep.out: $(objpfx)testobj1.so
> $(test-wrapper-env) \
> LD_TRACE_LOADED_OBJECTS=1 \
> diff --git a/grp/Makefile b/grp/Makefile
> index 3ed8471..a60d2f9 100644
> --- a/grp/Makefile
> +++ b/grp/Makefile
> @@ -32,6 +32,9 @@ tests := testgrp
>
> ifeq (yes,$(build-shared))
> test-srcs := tst_fgetgrent
> +ifeq ($(run-built-tests),yes)
> +tests-special += $(objpfx)tst_fgetgrent.out
> +endif
> endif
>
>
> @@ -54,7 +57,6 @@ endif
> ifeq ($(run-built-tests),yes)
> # tst_fgetgrent currently only works with shared libraries
> ifeq (yes,$(build-shared))
> -tests: $(objpfx)tst_fgetgrent.out
> $(objpfx)tst_fgetgrent.out: tst_fgetgrent.sh $(objpfx)tst_fgetgrent
> $(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \
> $(evaluate-test)
> diff --git a/iconv/Makefile b/iconv/Makefile
> index ec35354..8728fef 100644
> --- a/iconv/Makefile
> +++ b/iconv/Makefile
> @@ -60,6 +60,10 @@ CPPFLAGS-strtab = -DNOT_IN_libc
> CPPFLAGS-charmap = -DNOT_IN_libc
> CPPFLAGS-charmap-dir = -DNOT_IN_libc
>
> +ifeq ($(run-built-tests),yes)
> +xtests-special += test-iconvconfig
> +endif
> +
> include ../Rules
>
> $(inst_bindir)/iconv: $(objpfx)iconv_prog $(+force)
> @@ -68,10 +72,6 @@ $(inst_bindir)/iconv: $(objpfx)iconv_prog $(+force)
> $(objpfx)iconv_prog: $(iconv_prog-modules:%=$(objpfx)%.o)
> $(objpfx)iconvconfig: $(iconvconfig-modules:%=$(objpfx)%.o)
>
> -ifeq ($(run-built-tests),yes)
> -xtests: test-iconvconfig
> -endif
> -
> .PHONY: test-iconvconfig
> test-iconvconfig: /dev/null $(objpfx)iconvconfig
> tmp=$(objpfx)gconv-modules.cache.$$$$; \
> diff --git a/iconvdata/Makefile b/iconvdata/Makefile
> index 8fabe52..f0d832a 100644
> --- a/iconvdata/Makefile
> +++ b/iconvdata/Makefile
> @@ -265,17 +265,17 @@ endif
>
> endif # build-shared = yes
>
> -include ../Rules
> -
> ifeq ($(run-built-tests),yes)
> ifeq (yes,$(build-shared))
> -tests: $(objpfx)iconv-test.out $(objpfx)tst-tables.out
> +tests-special += $(objpfx)iconv-test.out $(objpfx)tst-tables.out
> ifneq (no,$(PERL))
> -tests: $(objpfx)mtrace-tst-loading
> +tests-special += $(objpfx)mtrace-tst-loading
> endif
> endif
> endif
>
> +include ../Rules
> +
> tst-loading-ENV = MALLOC_TRACE=$(objpfx)tst-loading.mtrace
> $(objpfx)mtrace-tst-loading: $(objpfx)tst-loading.out
> $(common-objpfx)malloc/mtrace $(objpfx)tst-loading.mtrace > $@; \
> diff --git a/intl/Makefile b/intl/Makefile
> index 61ba07f..5676954 100644
> --- a/intl/Makefile
> +++ b/intl/Makefile
> @@ -47,22 +47,27 @@ plural.c: plural.y
> endif
> $(objpfx)plural.o: plural.c
>
> -include ../Rules
> -
> ifeq ($(run-built-tests),yes)
> ifeq (yes,$(build-shared))
> ifneq ($(strip $(MSGFMT)),:)
> -tests: $(objpfx)tst-translit.out $(objpfx)tst-gettext2.out \
> - $(objpfx)tst-codeset.out $(objpfx)tst-gettext3.out
> +tests-special += $(objpfx)tst-translit.out $(objpfx)tst-gettext.out \
> + $(objpfx)tst-gettext2.out $(objpfx)tst-codeset.out \
> + $(objpfx)tst-gettext3.out
> ifeq ($(have-thread-library),yes)
> -tests: $(objpfx)tst-gettext4.out $(objpfx)tst-gettext5.out \
> - $(objpfx)tst-gettext6.out
> +tests-special += $(objpfx)tst-gettext4.out $(objpfx)tst-gettext5.out \
> + $(objpfx)tst-gettext6.out
> endif
> ifneq (no,$(PERL))
> -tests: $(objpfx)mtrace-tst-gettext
> +tests-special += $(objpfx)mtrace-tst-gettext
> +endif
> +endif
> endif
> endif
>
> +include ../Rules
> +
> +ifeq ($(run-built-tests),yes)
> +ifeq (yes,$(build-shared))
> # Multiple tests use this data. Create it once to avoid racing and
> # spurious test failures.
> codeset_mo = $(objpfx)domaindir/de_DE/LC_MESSAGES/codeset.mo
> diff --git a/io/Makefile b/io/Makefile
> index 8d38612..8a6562e 100644
> --- a/io/Makefile
> +++ b/io/Makefile
> @@ -73,6 +73,10 @@ tests := test-utime test-stat test-stat2 test-lfs tst-getcwd \
> tst-mknodat tst-mkfifoat tst-ttyname_r bug-ftw5 \
> tst-posix_fallocate
>
> +ifeq ($(run-built-tests),yes)
> +tests-special += $(objpfx)ftwtest.out
> +endif
> +
> include ../Rules
>
> CFLAGS-open.c = -fexceptions -fasynchronous-unwind-tables
> @@ -103,8 +107,6 @@ test-stat2-ARGS = Makefile . $(objpfx)test-stat2
> tst-statvfs-ARGS = $(objpfx)tst-statvfs tst-statvfs.c /tmp
>
> ifeq ($(run-built-tests),yes)
> -tests: $(objpfx)ftwtest.out
> -
> $(objpfx)ftwtest.out: ftwtest-sh $(objpfx)ftwtest
> $(SHELL) $< $(common-objpfx) '$(test-program-cmd)' > $@; \
> $(evaluate-test)
> diff --git a/libio/Makefile b/libio/Makefile
> index 22dbcae..6f5b731 100644
> --- a/libio/Makefile
> +++ b/libio/Makefile
> @@ -172,17 +172,17 @@ shared-only-routines = oldiofopen oldiofdopen oldiofclose oldfileops \
> oldiofgetpos oldiofgetpos64 oldiofsetpos \
> oldiofsetpos64
>
> -include ../Rules
> -
> ifeq ($(run-built-tests),yes)
> -tests: $(objpfx)test-freopen.out
> +tests-special += $(objpfx)test-freopen.out
> ifeq (yes,$(build-shared))
> # Run tst-fopenloc-cmp.out and tst-openloc-mem.out only if shared
> # library is enabled since they depend on tst-fopenloc.out.
> -tests: $(objpfx)tst-fopenloc-cmp.out $(objpfx)tst-fopenloc-mem.out
> +tests-special += $(objpfx)tst-fopenloc-cmp.out $(objpfx)tst-fopenloc-mem.out
> endif
> endif
>
> +include ../Rules
> +
> $(objpfx)test-freopen.out: test-freopen.sh $(objpfx)test-freopen
> $(SHELL) $< $(common-objpfx) '$(test-program-prefix)' \
> $(common-objpfx)libio/; \
> diff --git a/localedata/Makefile b/localedata/Makefile
> index ad801b7..5f01b61 100644
> --- a/localedata/Makefile
> +++ b/localedata/Makefile
> @@ -79,7 +79,7 @@ tests-static = bug-setlocale1-static
> tests += $(tests-static)
> ifeq (yes,$(build-shared))
> ifneq (no,$(PERL))
> -tests: $(objpfx)mtrace-tst-leaks
> +tests-special += $(objpfx)mtrace-tst-leaks
> endif
> endif
> endif
> @@ -91,6 +91,12 @@ install-others := $(addprefix $(inst_i18ndir)/, \
>
> tests: $(objdir)/iconvdata/gconv-modules
>
> +tests-special += $(objpfx)sort-test.out $(objpfx)tst-fmon.out \
> + $(objpfx)tst-locale.out $(objpfx)tst-rpmatch.out \
> + $(objpfx)tst-trans.out $(objpfx)tst-mbswcs.out \
> + $(objpfx)tst-ctype.out $(objpfx)tst-wctype.out \
> + $(objpfx)tst-langinfo.out $(objpfx)tst-numeric.out
> +
> include ../Rules
>
> # Install the charmap files in gzipped format.
> @@ -137,11 +143,6 @@ $(addprefix $(objpfx),$(CTYPE_FILES)): %: \
> $(addsuffix .out,$(addprefix $(objpfx),$(tests))): %: \
> $(addprefix $(objpfx),$(CTYPE_FILES))
>
> -tests: $(objpfx)sort-test.out $(objpfx)tst-fmon.out $(objpfx)tst-locale.out \
> - $(objpfx)tst-rpmatch.out $(objpfx)tst-trans.out \
> - $(objpfx)tst-mbswcs.out $(objpfx)tst-ctype.out $(objpfx)tst-wctype.out \
> - $(objpfx)tst-langinfo.out $(objpfx)tst-numeric.out
> -
> $(objpfx)sort-test.out: sort-test.sh $(objpfx)collate-test $(objpfx)xfrm-test \
> $(test-input-data) $(addprefix $(objpfx),$(CTYPE_FILES))
> $(SHELL) $< $(common-objpfx) '$(test-program-prefix)' $(test-input) \
> diff --git a/malloc/Makefile b/malloc/Makefile
> index 1b47ce2..2871726 100644
> --- a/malloc/Makefile
> +++ b/malloc/Makefile
> @@ -92,6 +92,14 @@ memusagestat-modules = memusagestat
> $(objpfx)memusagestat: $(memusagestat-modules:%=$(objpfx)%.o)
> $(LINK.o) -o $@ $^ $(libgd-LDFLAGS) -lgd -lpng -lz -lm
>
> +ifeq ($(run-built-tests),yes)
> +ifeq (yes,$(build-shared))
> +ifneq ($(PERL),no)
> +tests-special += $(objpfx)tst-mtrace.out
> +endif
> +endif
> +endif
> +
> include ../Rules
>
> CFLAGS-mcheck-init.c = $(PIC-ccflag)
> @@ -107,7 +115,6 @@ lib: $(objpfx)libmcheck.a
> ifeq ($(run-built-tests),yes)
> ifeq (yes,$(build-shared))
> ifneq ($(PERL),no)
> -tests: $(objpfx)tst-mtrace.out
> $(objpfx)tst-mtrace.out: tst-mtrace.sh $(objpfx)tst-mtrace
> $(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \
> $(evaluate-test)
> diff --git a/misc/Makefile b/misc/Makefile
> index 65dcc48..c08f95a 100644
> --- a/misc/Makefile
> +++ b/misc/Makefile
> @@ -78,7 +78,7 @@ 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
> ifeq ($(run-built-tests),yes)
> -tests: $(objpfx)tst-error1-mem
> +tests-special += $(objpfx)tst-error1-mem
> endif
>
> CFLAGS-select.c = -fexceptions -fasynchronous-unwind-tables
> diff --git a/nptl/Makefile b/nptl/Makefile
> index 320facf..9fcf3d6 100644
> --- a/nptl/Makefile
> +++ b/nptl/Makefile
> @@ -367,6 +367,14 @@ xtests-static += tst-setuid1-static
> # These tests are linked with libc before libpthread
> tests-reverse += tst-cancel5 tst-cancel23 tst-vfork1x tst-vfork2x
>
> +ifeq ($(run-built-tests),yes)
> +tests-special += $(objpfx)tst-stack3-mem $(objpfx)tst-oddstacklimit.out
> +ifeq ($(build-shared),yes)
> +tests-special += $(objpfx)tst-tls6.out $(objpfx)tst-cleanup0-cmp.out \
> + $(objpfx)tst-cancel-wrappers.out
> +endif
> +endif
> +
> include ../Rules
>
> ifeq (yes,$(build-shared))
> @@ -457,9 +465,6 @@ LDFLAGS-tst-atfork2 = -rdynamic
> tst-atfork2-ENV = MALLOC_TRACE=$(objpfx)tst-atfork2.mtrace
> $(objpfx)tst-atfork2mod.so: $(shared-thread-library)
>
> -ifeq ($(run-built-tests),yes)
> -tests: $(objpfx)tst-stack3-mem
> -endif
> tst-stack3-ENV = MALLOC_TRACE=$(objpfx)tst-stack3.mtrace
> $(objpfx)tst-stack3-mem: $(objpfx)tst-stack3.out
> $(common-objpfx)malloc/mtrace $(objpfx)tst-stack3.mtrace > $@; \
> @@ -482,9 +487,6 @@ LDFLAGS-tst-tls5 = $(no-as-needed)
> LDFLAGS-tst-tls5mod.so = -Wl,-soname,tst-tls5mod.so
>
> ifeq ($(build-shared),yes)
> -ifeq ($(run-built-tests),yes)
> -tests: $(objpfx)tst-tls6.out
> -endif
> $(objpfx)tst-tls6.out: tst-tls6.sh $(objpfx)tst-tls5 \
> $(objpfx)tst-tls5moda.so $(objpfx)tst-tls5modb.so \
> $(objpfx)tst-tls5modc.so $(objpfx)tst-tls5modd.so \
> @@ -547,9 +549,6 @@ $(objpfx)tst-cleanup0.out: /dev/null $(objpfx)tst-cleanup0
> $(make-test-out) > $@ 2>&1; \
> $(evaluate-test)
>
> -ifeq ($(run-built-tests),yes)
> -tests: $(objpfx)tst-cleanup0-cmp.out
> -endif
> $(objpfx)tst-cleanup0-cmp.out: tst-cleanup0.expect $(objpfx)tst-cleanup0.out
> cmp $^ > $@; \
> $(evaluate-test)
> @@ -583,7 +582,6 @@ endif
>
> ifeq ($(run-built-tests),yes)
> ifeq (yes,$(build-shared))
> -tests: $(objpfx)tst-cancel-wrappers.out
> $(objpfx)tst-cancel-wrappers.out: tst-cancel-wrappers.sh
> $(SHELL) $< '$(NM)' \
> $(common-objpfx)libc_pic.a \
> @@ -606,8 +604,6 @@ tst-stackguard1-ARGS = --command "$(host-test-program-cmd) --child"
> tst-stackguard1-static-ARGS = --command "$(objpfx)tst-stackguard1-static --child"
>
> ifeq ($(run-built-tests),yes)
> -tests: $(objpfx)tst-oddstacklimit.out
> -
> $(objpfx)tst-oddstacklimit.out: $(objpfx)tst-oddstacklimit $(objpfx)tst-basic1
> $(test-program-prefix) $< --command '$(host-test-program-cmd)' > $@; \
> $(evaluate-test)
> diff --git a/nptl_db/Makefile b/nptl_db/Makefile
> index f321b53..ff873ca 100644
> --- a/nptl_db/Makefile
> +++ b/nptl_db/Makefile
> @@ -51,9 +51,10 @@ libthread_db-inhibit-o = $(filter-out .os,$(object-suffixes))
> # The ps_* callback functions are not defined.
> libthread_db.so-no-z-defs = yes
>
> +tests-special += $(objpfx)db-symbols.out
> +
> include ../Rules
>
> -tests: $(objpfx)db-symbols.out
> $(objpfx)db-symbols.out: $(objpfx)db-symbols.v.i \
> $(common-objpfx)nptl/libpthread.so
> LC_ALL=C $(READELF) -W -s $(filter %.so,$^) | $(AWK) -f $< > $@; \
> diff --git a/posix/Makefile b/posix/Makefile
> index a9bbff2..3af936f 100644
> --- a/posix/Makefile
> +++ b/posix/Makefile
> @@ -113,12 +113,30 @@ generated += $(addprefix wordexp-test-result, 1 2 3 4 5 6 7 8 9 10) \
> tst-vfork3-mem tst-vfork3.mtrace getconf.speclist \
> tst-fnmatch-mem tst-fnmatch.mtrace
>
> +ifeq ($(run-built-tests),yes)
> +ifeq (yes,$(build-shared))
> +tests-special += $(objpfx)globtest.out $(objpfx)wordexp-tst.out
> +endif
> +endif
> +
> +# Run a test on the header files we use.
> +# XXX Please note that for now we ignore the result of this test.
Same nit as before about XXX.
> +tests-special += $(objpfx)annexc.out
> +ifeq ($(run-built-tests),yes)
> +tests-special += $(objpfx)bug-regex2-mem $(objpfx)bug-regex14-mem \
> + $(objpfx)bug-regex21-mem $(objpfx)bug-regex31-mem \
> + $(objpfx)tst-rxspencer-no-utf8-mem $(objpfx)tst-pcre-mem \
> + $(objpfx)tst-boost-mem $(objpfx)tst-getconf.out \
> + $(objpfx)bug-glob2-mem $(objpfx)tst-vfork3-mem \
> + $(objpfx)tst-fnmatch-mem
> +xtests-special += $(objpfx)bug-ga2-mem
> +endif
> +
> include ../Rules
>
> ifeq ($(run-built-tests),yes)
> # globtest and wordexp-test currently only works with shared libraries
> ifeq (yes,$(build-shared))
> -tests: $(objpfx)globtest.out $(objpfx)wordexp-tst.out
> $(objpfx)globtest.out: globtest.sh $(objpfx)globtest
> $(SHELL) $< $(common-objpfx) '$(test-via-rtld-prefix)' \
> '$(test-program-prefix)' '$(test-wrapper-env)'; \
> @@ -221,18 +239,6 @@ ptestcases.h: PTESTS PTESTS2C.sed
> LC_ALL=C sed -f PTESTS2C.sed < $< > $@T
> mv -f $@T $@
>
> -# Run a test on the header files we use.
> -# XXX Please note that for now we ignore the result of this test.
> -tests: $(objpfx)annexc.out
> -ifeq ($(run-built-tests),yes)
> -tests: $(objpfx)bug-regex2-mem $(objpfx)bug-regex14-mem \
> - $(objpfx)bug-regex21-mem $(objpfx)bug-regex31-mem \
> - $(objpfx)tst-rxspencer-no-utf8-mem \
> - $(objpfx)tst-pcre-mem $(objpfx)tst-boost-mem $(objpfx)tst-getconf.out \
> - $(objpfx)bug-glob2-mem $(objpfx)tst-vfork3-mem $(objpfx)tst-fnmatch-mem
> -xtests: $(objpfx)bug-ga2-mem
> -endif
> -
> test-xfail-annexc = yes
> $(objpfx)annexc.out: $(objpfx)annexc
> $(dir $<)$(notdir $<) '$(CC)' \
> diff --git a/resolv/Makefile b/resolv/Makefile
> index 5763469..4ce7619 100644
> --- a/resolv/Makefile
> +++ b/resolv/Makefile
> @@ -64,6 +64,13 @@ ifeq (yesyes,$(build-shared)$(have-thread-library))
> tests: $(objpfx)ga_test
> endif
>
> +ifeq ($(run-built-tests),yes)
> +ifneq (no,$(PERL))
> +tests-special += $(objpfx)mtrace-tst-leaks
> +xtests-special += $(objpfx)mtrace-tst-leaks2
> +endif
> +endif
> +
> generated += mtrace-tst-leaks tst-leaks.mtrace \
> mtrace-tst-leaks2 tst-leaks2.mtrace
>
> @@ -96,18 +103,8 @@ tst-leaks-ENV = MALLOC_TRACE=$(objpfx)tst-leaks.mtrace
> $(objpfx)mtrace-tst-leaks: $(objpfx)tst-leaks.out
> $(common-objpfx)malloc/mtrace $(objpfx)tst-leaks.mtrace > $@; \
> $(evaluate-test)
> -ifeq ($(run-built-tests),yes)
> -ifneq (no,$(PERL))
> -tests: $(objpfx)mtrace-tst-leaks
> -endif
> -endif
>
> tst-leaks2-ENV = MALLOC_TRACE=$(objpfx)tst-leaks2.mtrace
> $(objpfx)mtrace-tst-leaks2: $(objpfx)tst-leaks2.out
> $(common-objpfx)malloc/mtrace $(objpfx)tst-leaks2.mtrace > $@; \
> $(evaluate-test)
> -ifeq ($(run-built-tests),yes)
> -ifneq (no,$(PERL))
> -xtests: $(objpfx)mtrace-tst-leaks2
> -endif
> -endif
> diff --git a/stdio-common/Makefile b/stdio-common/Makefile
> index ba0bf64..332f205 100644
> --- a/stdio-common/Makefile
> +++ b/stdio-common/Makefile
> @@ -61,11 +61,14 @@ tests := tstscanf test_rdwr test-popen tstgetln test-fseek \
>
> test-srcs = tst-unbputc tst-printf
>
> +ifeq ($(run-built-tests),yes)
> +tests-special += $(objpfx)tst-unbputc.out $(objpfx)tst-printf.out \
> + $(objpfx)tst-setvbuf1-cmp.out
> +endif
> +
> include ../Rules
>
> ifeq ($(run-built-tests),yes)
> -tests: $(objpfx)tst-unbputc.out $(objpfx)tst-printf.out
> -
> $(objpfx)tst-unbputc.out: tst-unbputc.sh $(objpfx)tst-unbputc
> $(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \
> $(evaluate-test)
> @@ -126,10 +129,6 @@ tst-grouping-ENV = LOCPATH=$(common-objpfx)localedata
>
> CPPFLAGS += $(libio-mtsafe)
>
> -ifeq ($(run-built-tests),yes)
> -tests: $(objpfx)tst-setvbuf1-cmp.out
> -endif
> -
> $(objpfx)tst-setvbuf1.out: /dev/null $(objpfx)tst-setvbuf1
> $(test-program-cmd) > $@ 2>&1; \
> $(evaluate-test)
> diff --git a/stdlib/Makefile b/stdlib/Makefile
> index 5f2c10c..42482a2 100644
> --- a/stdlib/Makefile
> +++ b/stdlib/Makefile
> @@ -111,6 +111,13 @@ CFLAGS-tst-bsearch.c = $(stack-align-test-flags)
> CFLAGS-tst-qsort.c = $(stack-align-test-flags)
> CFLAGS-tst-makecontext2.c = $(stack-align-test-flags)
>
> +# Run a test on the header files we use.
> +tests-special += $(objpfx)isomac.out
> +
> +ifeq ($(run-built-tests),yes)
> +tests-special += $(objpfx)tst-fmtmsg.out
> +endif
> +
> include ../Rules
>
> # Testdir has to be named stdlib and needs to be writable
> @@ -123,13 +130,6 @@ tst-strtod5-ENV = LOCPATH=$(common-objpfx)localedata
> testmb2-ENV = LOCPATH=$(common-objpfx)localedata
> bug-fmtmsg1-ENV = SEV_LEVEL=foo,11,newsev
>
> -# Run a test on the header files we use.
> -tests: $(objpfx)isomac.out
> -
> -ifeq ($(run-built-tests),yes)
> -tests: $(objpfx)tst-fmtmsg.out
> -endif
> -
> $(objpfx)isomac.out: $(objpfx)isomac
> $(dir $<)$(notdir $<) '$(CC)' \
> '-I../include $(+sysdep-includes) $(sysincludes) -I..' > $<.out; \
> diff --git a/string/Makefile b/string/Makefile
> index 543b5f6..5a76872 100644
> --- a/string/Makefile
> +++ b/string/Makefile
> @@ -58,6 +58,10 @@ tests := tester inl-tester noinl-tester testcopy test-ffs \
>
> xtests = tst-strcoll-overflow
>
> +ifeq ($(run-built-tests),yes)
> +tests-special += $(objpfx)tst-svc-cmp.out
> +endif
> +
> include ../Rules
>
> tester-ENV = LANGUAGE=C
> @@ -76,7 +80,6 @@ CFLAGS-test-ffs.c = -fno-builtin
> CFLAGS-tst-inlcall.c = -fno-builtin
>
> ifeq ($(run-built-tests),yes)
> -tests: $(objpfx)tst-svc-cmp.out
> $(objpfx)tst-svc-cmp.out: tst-svc.expect $(objpfx)tst-svc.out
> cmp $^ > $@; \
> $(evaluate-test)
> diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile
> index 80d03d5..a96c8bd 100644
> --- a/sysdeps/x86/Makefile
> +++ b/sysdeps/x86/Makefile
> @@ -2,7 +2,7 @@ ifeq ($(subdir),elf)
> CFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\
> -mno-sse -mno-mmx)
>
> -tests: $(objpfx)tst-xmmymm.out
> +tests-special += $(objpfx)tst-xmmymm.out
> $(objpfx)tst-xmmymm.out: ../sysdeps/x86/tst-xmmymm.sh $(objpfx)ld.so
> @echo "Checking ld.so for SSE register use. This will take a few seconds..."
> $(SHELL) $< $(objpfx) '$(NM)' '$(OBJDUMP)' '$(READELF)' > $@; \
>
Cheers,
Carlos.