Fix conditionals on mtrace-based tests.

Message ID 20240619154811.2381966-1-carlos@redhat.com
State Committed
Commit a7fe3e805d2ee128ac5f43b2a24201726d41cc04
Delegated to: Adhemerval Zanella Netto
Headers
Series Fix conditionals on mtrace-based tests. |

Checks

Context Check Description
redhat-pt-bot/TryBot-apply_patch success Patch applied to master at the time it was sent
redhat-pt-bot/TryBot-32bit success Build for i686
linaro-tcwg-bot/tcwg_glibc_build--master-aarch64 success Build passed
linaro-tcwg-bot/tcwg_glibc_check--master-aarch64 success Test passed
linaro-tcwg-bot/tcwg_glibc_build--master-arm success Build passed
linaro-tcwg-bot/tcwg_glibc_check--master-arm success Test passed

Commit Message

Carlos O'Donell June 19, 2024, 3:48 p.m. UTC
  The conditionals for several mtrace-based tests in catgets, elf, libio,
malloc, misc, nptl, posix, and stdio-common were incorrect leading to
test failures when bootstrapping glibc without perl.

The correct conditional for mtrace-based tests requires three checks:
first checking for run-built-tests, then build-shared, and lastly that
PERL is not equal to "no" (missing perl).
---
 catgets/Makefile      | 14 +++++++++++++-
 elf/Makefile          | 10 ++++++++--
 libio/Makefile        | 42 +++++++++++++++++++++++++++++++-----------
 misc/Makefile         | 16 ++++++++++++++--
 nptl/Makefile         | 11 ++++++++++-
 posix/Makefile        | 26 ++++++++++++++++++++------
 stdio-common/Makefile | 34 +++++++++++++++++++++++++---------
 7 files changed, 121 insertions(+), 32 deletions(-)
  

Comments

Sam James June 19, 2024, 6:16 p.m. UTC | #1
Carlos O'Donell <carlos@redhat.com> writes:

> The conditionals for several mtrace-based tests in catgets, elf, libio,
> malloc, misc, nptl, posix, and stdio-common were incorrect leading to
> test failures when bootstrapping glibc without perl.
>
> The correct conditional for mtrace-based tests requires three checks:
> first checking for run-built-tests, then build-shared, and lastly that
> PERL is not equal to "no" (missing perl).

Please tag 31892 too, as we discuss the test issue within.
  
Adhemerval Zanella Netto June 26, 2024, 4:22 p.m. UTC | #2
On 19/06/24 12:48, Carlos O'Donell wrote:
> The conditionals for several mtrace-based tests in catgets, elf, libio,
> malloc, misc, nptl, posix, and stdio-common were incorrect leading to
> test failures when bootstrapping glibc without perl.
> 
> The correct conditional for mtrace-based tests requires three checks:
> first checking for run-built-tests, then build-shared, and lastly that
> PERL is not equal to "no" (missing perl).

LGTM with Sam James remark to add the 31892 tag.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  catgets/Makefile      | 14 +++++++++++++-
>  elf/Makefile          | 10 ++++++++--
>  libio/Makefile        | 42 +++++++++++++++++++++++++++++++-----------
>  misc/Makefile         | 16 ++++++++++++++--
>  nptl/Makefile         | 11 ++++++++++-
>  posix/Makefile        | 26 ++++++++++++++++++++------
>  stdio-common/Makefile | 34 +++++++++++++++++++++++++---------
>  7 files changed, 121 insertions(+), 32 deletions(-)
> 
> diff --git a/catgets/Makefile b/catgets/Makefile
> index 24b4560d5f..40c65eac95 100644
> --- a/catgets/Makefile
> +++ b/catgets/Makefile
> @@ -43,8 +43,12 @@ tests-special += \
>    $(objpfx)test-gencat.out \
>    $(objpfx)test1.cat \
>    $(objpfx)test2.cat \
> -  $(objpfx)tst-catgets-mem.out
>    # tests-special
> +ifeq (yes,$(build-shared))
> +ifneq ($(PERL),no)
> +tests-special += $(objpfx)tst-catgets-mem.out
> +endif
> +endif
>  endif
>  
>  gencat-modules	= xmalloc
> @@ -68,9 +72,17 @@ generated += \
>    test1.h \
>    test2.cat \
>    test2.h \
> +  # generated
> +ifeq ($(run-built-tests),yes)
> +ifeq (yes,$(build-shared))
> +ifneq ($(PERL),no)
> +generated += \
>    tst-catgets-mem.out \
>    tst-catgets.mtrace \
>    # generated
> +endif
> +endif
> +endif
>  
>  generated-dirs += \
>    de \
> diff --git a/elf/Makefile b/elf/Makefile
> index bb6cd06dec..1105bee787 100644
> --- a/elf/Makefile
> +++ b/elf/Makefile
> @@ -632,13 +632,19 @@ $(objpfx)tst-rtld-does-not-exist.out: tst-rtld-does-not-exist.sh $(objpfx)ld.so
>  tests += $(tests-execstack-$(have-z-execstack))
>  ifeq ($(run-built-tests),yes)
>  tests-special += \
> -  $(objpfx)noload-mem.out \
>    $(objpfx)tst-ldconfig-X.out \
>    $(objpfx)tst-ldconfig-p.out \
>    $(objpfx)tst-ldconfig-soname.out \
> -  $(objpfx)tst-leaks1-mem.out \
>    $(objpfx)tst-rtld-help.out \
>    # tests-special
> +ifeq (yes,$(build-shared))
> +ifneq ($(PERL),no)
> +tests-special += \
> +  $(objpfx)noload-mem.out \
> +  $(objpfx)tst-leaks1-mem.out \
> +  # tests-special
> +endif
> +endif
>  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
> diff --git a/libio/Makefile b/libio/Makefile
> index f607edbefb..8720381fdc 100644
> --- a/libio/Makefile
> +++ b/libio/Makefile
> @@ -261,15 +261,28 @@ tst-bz22415-ENV = MALLOC_TRACE=$(objpfx)tst-bz22415.mtrace \
>  tst-bz24228-ENV = MALLOC_TRACE=$(objpfx)tst-bz24228.mtrace \
>  		  LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
>  
> -generated += test-fmemopen.mtrace test-fmemopen.check
> -generated += tst-fdopen-seek-failure.mtrace tst-fdopen-seek-failure.check
> -generated += tst-fopenloc.mtrace tst-fopenloc.check
> -generated += tst-bz22415.mtrace tst-bz22415.check
> -
>  aux	:= fileops genops stdfiles stdio strops
>  
> +ifeq ($(run-built-tests),yes)
> +ifeq ($(build-shared),yes)
> +ifneq ($(PERL),no)
> +generated += \
> +  test-fmemopen.check \
> +  test-fmemopen.mtrace \
> +  tst-bz22415.check \
> +  tst-bz22415.mtrace \
> +  tst-bz24228.check \
> +  tst-bz24228.mtrace \
> +  tst-fdopen-seek-failure.check \
> +  tst-fdopen-seek-failure.mtrace \
> +  tst-fopenloc.check \
> +  tst-fopenloc.mtrace \
> +  # generated
> +endif
> +endif
> +endif
> +
>  ifeq ($(build-shared),yes)
> -generated += tst-bz24228.mtrace tst-bz24228.check
>  aux	+= oldfileops oldstdfiles
>  tests += \
>    tst-stderr-compat \
> @@ -286,16 +299,23 @@ shared-only-routines = oldiofopen oldiofdopen oldiofclose oldfileops	\
>  
>  ifeq ($(run-built-tests),yes)
>  tests-special += \
> -  $(objpfx)test-fmemopen-mem.out \
>    $(objpfx)test-freopen.out \
> -  $(objpfx)tst-bz22415-mem.out \
> -  $(objpfx)tst-fdopen-seek-failure-mem.out \
>    # tests-special
>  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-special += $(objpfx)tst-fopenloc-cmp.out $(objpfx)tst-fopenloc-mem.out \
> -		 $(objpfx)tst-bz24228-mem.out
> +tests-special += $(objpfx)tst-fopenloc-cmp.out
> +ifeq ($(build-shared),yes)
> +ifneq ($(PERL),no)
> +tests-special += \
> +  $(objpfx)test-fmemopen-mem.out \
> +  $(objpfx)tst-bz22415-mem.out \
> +  $(objpfx)tst-bz24228-mem.out \
> +  $(objpfx)tst-fdopen-seek-failure-mem.out \
> +  $(objpfx)tst-fopenloc-mem.out \
> +  # tests-special
> +endif
> +endif
>  endif
>  
>  tests += \
> diff --git a/misc/Makefile b/misc/Makefile
> index c273ec6974..5d17c562fe 100644
> --- a/misc/Makefile
> +++ b/misc/Makefile
> @@ -214,12 +214,18 @@ routines_no_fortify += \
>    syslog \
>    # routines_no_fortify
>  
> +ifeq ($(run-built-tests),yes)
> +ifeq (yes,$(build-shared))
> +ifneq ($(PERL),no)
>  generated += \
>    tst-allocate_once-mem.out \
>    tst-allocate_once.mtrace \
>    tst-error1-mem.out \
>    tst-error1.mtrace \
>    # generated
> +endif
> +endif
> +endif
>  
>  aux := init-misc
>  install-lib := libg.a
> @@ -285,8 +291,14 @@ tests-internal += tst-fd_to_filename
>  tests-static += tst-fd_to_filename
>  
>  ifeq ($(run-built-tests),yes)
> -tests-special += $(objpfx)tst-error1-mem.out \
> -  $(objpfx)tst-allocate_once-mem.out
> +ifeq (yes,$(build-shared))
> +ifneq ($(PERL),no)
> +tests-special += \
> +  $(objpfx)tst-allocate_once-mem.out \
> +  $(objpfx)tst-error1-mem.out \
> +  # tests-special
> +endif
> +endif
>  endif
>  
>  tests-container := \
> diff --git a/nptl/Makefile b/nptl/Makefile
> index b3f8af2e1c..096eef54f2 100644
> --- a/nptl/Makefile
> +++ b/nptl/Makefile
> @@ -556,10 +556,12 @@ xtests-static += tst-setuid1-static
>  ifeq ($(run-built-tests),yes)
>  tests-special += \
>    $(objpfx)tst-oddstacklimit.out \
> -  $(objpfx)tst-stack3-mem.out \
>    # tests-special
>  ifeq ($(build-shared),yes)
>  tests-special += $(objpfx)tst-tls6.out
> +ifneq ($(PERL),no)
> +tests-special += $(objpfx)tst-stack3-mem.out
> +endif
>  endif
>  endif
>  
> @@ -617,10 +619,17 @@ tst-stack3-ENV = MALLOC_TRACE=$(objpfx)tst-stack3.mtrace \
>  $(objpfx)tst-stack3-mem.out: $(objpfx)tst-stack3.out
>  	$(common-objpfx)malloc/mtrace $(objpfx)tst-stack3.mtrace > $@; \
>  	$(evaluate-test)
> +
> +ifeq ($(run-built-tests),yes)
> +ifeq (yes,$(build-shared))
> +ifneq ($(PERL),no)
>  generated += \
>    tst-stack3-mem.out \
>    tst-stack3.mtrace \
>    # generated
> +endif
> +endif
> +endif
>  
>  tst-stack4mod.sos=$(shell for i in 0 1 2 3 4 5 6 7 8 9 10 \
>  				   11 12 13 14 15 16 17 18 19; do \
> diff --git a/posix/Makefile b/posix/Makefile
> index a1e84853a8..2c598cd20a 100644
> --- a/posix/Makefile
> +++ b/posix/Makefile
> @@ -418,6 +418,17 @@ generated += \
>    $(addprefix wordexp-test-result, 1 2 3 4 5 6 7 8 9 10) \
>    annexc \
>    annexc.out \
> +  getconf.speclist \
> +  ptestcases.h \
> +  testcases.h \
> +  tst-getconf.out \
> +  wordexp-tst.out \
> +  # generated
> +
> +ifeq ($(run-built-tests),yes)
> +ifeq (yes,$(build-shared))
> +ifneq ($(PERL),no)
> +generated += \
>    bug-ga2-mem.out \
>    bug-ga2.mtrace \
>    bug-glob2-mem.out \
> @@ -430,23 +441,22 @@ generated += \
>    bug-regex21.mtrace \
>    bug-regex31-mem.out \
>    bug-regex31.mtrace \
> +  bug-regex36-mem.out \
>    bug-regex36.mtrace \
> -  getconf.speclist \
> -  ptestcases.h \
> -  testcases.h \
>    tst-boost-mem.out \
>    tst-boost.mtrace \
>    tst-fnmatch-mem.out \
>    tst-fnmatch.mtrace \
> -  tst-getconf.out \
>    tst-pcre-mem.out \
>    tst-pcre.mtrace \
>    tst-rxspencer-no-utf8-mem.out \
>    tst-rxspencer-no-utf8.mtrace \
>    tst-vfork3-mem.out \
>    tst-vfork3.mtrace \
> -  wordexp-tst.out \
>    # generated
> +endif
> +endif
> +endif
>  
>  ifeq ($(run-built-tests),yes)
>  ifeq (yes,$(build-shared))
> @@ -461,6 +471,9 @@ endif
>  # XXX Please note that for now we ignore the result of this test.
>  tests-special += $(objpfx)annexc.out
>  ifeq ($(run-built-tests),yes)
> +tests-special += $(objpfx)tst-getconf.out
> +ifeq (yes,$(build-shared))
> +ifneq ($(PERL),no)
>  tests-special += \
>    $(objpfx)bug-ga2-mem.out \
>    $(objpfx)bug-glob2-mem.out \
> @@ -471,13 +484,14 @@ tests-special += \
>    $(objpfx)bug-regex36-mem.out \
>    $(objpfx)tst-boost-mem.out \
>    $(objpfx)tst-fnmatch-mem.out \
> -  $(objpfx)tst-getconf.out \
>    $(objpfx)tst-glob-tilde-mem.out \
>    $(objpfx)tst-pcre-mem.out \
>    $(objpfx)tst-rxspencer-no-utf8-mem.out \
>    $(objpfx)tst-vfork3-mem.out \
>    # tests-special
>  endif
> +endif
> +endif
>  
>  include ../Rules
>  
> diff --git a/stdio-common/Makefile b/stdio-common/Makefile
> index 6bc972af1a..a63c05a120 100644
> --- a/stdio-common/Makefile
> +++ b/stdio-common/Makefile
> @@ -229,10 +229,6 @@ tests := \
>    tst-popen \
>    tst-popen2 \
>    tst-printf-binary \
> -  tst-printf-bz18872 \
> -  tst-printf-bz25691 \
> -  tst-printf-fp-free \
> -  tst-printf-fp-leak \
>    tst-printf-intn \
>    tst-printf-oct \
>    tst-printf-round \
> @@ -261,7 +257,6 @@ tests := \
>    tst-vfprintf-mbs-prec \
>    tst-vfprintf-user-type \
>    tst-vfprintf-width-i18n \
> -  tst-vfprintf-width-prec \
>    tst-vfprintf-width-prec-alloc \
>    tst-wc-printf \
>    tstdiomisc \
> @@ -270,6 +265,20 @@ tests := \
>    xbug \
>    # tests
>  
> +ifeq ($(run-built-tests),yes)
> +ifeq (yes,$(build-shared))
> +ifneq ($(PERL),no)
> +tests += \
> +  tst-printf-bz18872 \
> +  tst-printf-bz25691 \
> +  tst-printf-fp-free \
> +  tst-printf-fp-leak \
> +  tst-vfprintf-width-prec \
> +  # tests
> +endif
> +endif
> +endif
> +
>  tests-container += \
>    tst-popen3
>    # tests-container
> @@ -293,14 +302,19 @@ test-srcs = \
>  
>  ifeq ($(run-built-tests),yes)
>  tests-special += \
> -  $(objpfx)tst-printf-bz18872-mem.out \
> -  $(objpfx)tst-printf-bz25691-mem.out \
> -  $(objpfx)tst-printf-fp-free-mem.out \
> -  $(objpfx)tst-printf-fp-leak-mem.out \
>    $(objpfx)tst-printf.out \
>    $(objpfx)tst-printfsz-islongdouble.out \
>    $(objpfx)tst-setvbuf1-cmp.out \
>    $(objpfx)tst-unbputc.out \
> +  # tests-special
> +
> +ifeq (yes,$(build-shared))
> +ifneq ($(PERL),no)
> +tests-special += \
> +  $(objpfx)tst-printf-bz18872-mem.out \
> +  $(objpfx)tst-printf-bz25691-mem.out \
> +  $(objpfx)tst-printf-fp-free-mem.out \
> +  $(objpfx)tst-printf-fp-leak-mem.out \
>    $(objpfx)tst-vfprintf-width-prec-mem.out \
>    # tests-special
>  
> @@ -317,6 +331,8 @@ generated += \
>    tst-vfprintf-width-prec-mem.out \
>    tst-vfprintf-width-prec.mtrace \
>    # generated
> +endif
> +endif
>  endif # $(run-built-tests)
>  
>  tests-special += $(objpfx)tst-errno-manual.out
  

Patch

diff --git a/catgets/Makefile b/catgets/Makefile
index 24b4560d5f..40c65eac95 100644
--- a/catgets/Makefile
+++ b/catgets/Makefile
@@ -43,8 +43,12 @@  tests-special += \
   $(objpfx)test-gencat.out \
   $(objpfx)test1.cat \
   $(objpfx)test2.cat \
-  $(objpfx)tst-catgets-mem.out
   # tests-special
+ifeq (yes,$(build-shared))
+ifneq ($(PERL),no)
+tests-special += $(objpfx)tst-catgets-mem.out
+endif
+endif
 endif
 
 gencat-modules	= xmalloc
@@ -68,9 +72,17 @@  generated += \
   test1.h \
   test2.cat \
   test2.h \
+  # generated
+ifeq ($(run-built-tests),yes)
+ifeq (yes,$(build-shared))
+ifneq ($(PERL),no)
+generated += \
   tst-catgets-mem.out \
   tst-catgets.mtrace \
   # generated
+endif
+endif
+endif
 
 generated-dirs += \
   de \
diff --git a/elf/Makefile b/elf/Makefile
index bb6cd06dec..1105bee787 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -632,13 +632,19 @@  $(objpfx)tst-rtld-does-not-exist.out: tst-rtld-does-not-exist.sh $(objpfx)ld.so
 tests += $(tests-execstack-$(have-z-execstack))
 ifeq ($(run-built-tests),yes)
 tests-special += \
-  $(objpfx)noload-mem.out \
   $(objpfx)tst-ldconfig-X.out \
   $(objpfx)tst-ldconfig-p.out \
   $(objpfx)tst-ldconfig-soname.out \
-  $(objpfx)tst-leaks1-mem.out \
   $(objpfx)tst-rtld-help.out \
   # tests-special
+ifeq (yes,$(build-shared))
+ifneq ($(PERL),no)
+tests-special += \
+  $(objpfx)noload-mem.out \
+  $(objpfx)tst-leaks1-mem.out \
+  # tests-special
+endif
+endif
 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
diff --git a/libio/Makefile b/libio/Makefile
index f607edbefb..8720381fdc 100644
--- a/libio/Makefile
+++ b/libio/Makefile
@@ -261,15 +261,28 @@  tst-bz22415-ENV = MALLOC_TRACE=$(objpfx)tst-bz22415.mtrace \
 tst-bz24228-ENV = MALLOC_TRACE=$(objpfx)tst-bz24228.mtrace \
 		  LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
 
-generated += test-fmemopen.mtrace test-fmemopen.check
-generated += tst-fdopen-seek-failure.mtrace tst-fdopen-seek-failure.check
-generated += tst-fopenloc.mtrace tst-fopenloc.check
-generated += tst-bz22415.mtrace tst-bz22415.check
-
 aux	:= fileops genops stdfiles stdio strops
 
+ifeq ($(run-built-tests),yes)
+ifeq ($(build-shared),yes)
+ifneq ($(PERL),no)
+generated += \
+  test-fmemopen.check \
+  test-fmemopen.mtrace \
+  tst-bz22415.check \
+  tst-bz22415.mtrace \
+  tst-bz24228.check \
+  tst-bz24228.mtrace \
+  tst-fdopen-seek-failure.check \
+  tst-fdopen-seek-failure.mtrace \
+  tst-fopenloc.check \
+  tst-fopenloc.mtrace \
+  # generated
+endif
+endif
+endif
+
 ifeq ($(build-shared),yes)
-generated += tst-bz24228.mtrace tst-bz24228.check
 aux	+= oldfileops oldstdfiles
 tests += \
   tst-stderr-compat \
@@ -286,16 +299,23 @@  shared-only-routines = oldiofopen oldiofdopen oldiofclose oldfileops	\
 
 ifeq ($(run-built-tests),yes)
 tests-special += \
-  $(objpfx)test-fmemopen-mem.out \
   $(objpfx)test-freopen.out \
-  $(objpfx)tst-bz22415-mem.out \
-  $(objpfx)tst-fdopen-seek-failure-mem.out \
   # tests-special
 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-special += $(objpfx)tst-fopenloc-cmp.out $(objpfx)tst-fopenloc-mem.out \
-		 $(objpfx)tst-bz24228-mem.out
+tests-special += $(objpfx)tst-fopenloc-cmp.out
+ifeq ($(build-shared),yes)
+ifneq ($(PERL),no)
+tests-special += \
+  $(objpfx)test-fmemopen-mem.out \
+  $(objpfx)tst-bz22415-mem.out \
+  $(objpfx)tst-bz24228-mem.out \
+  $(objpfx)tst-fdopen-seek-failure-mem.out \
+  $(objpfx)tst-fopenloc-mem.out \
+  # tests-special
+endif
+endif
 endif
 
 tests += \
diff --git a/misc/Makefile b/misc/Makefile
index c273ec6974..5d17c562fe 100644
--- a/misc/Makefile
+++ b/misc/Makefile
@@ -214,12 +214,18 @@  routines_no_fortify += \
   syslog \
   # routines_no_fortify
 
+ifeq ($(run-built-tests),yes)
+ifeq (yes,$(build-shared))
+ifneq ($(PERL),no)
 generated += \
   tst-allocate_once-mem.out \
   tst-allocate_once.mtrace \
   tst-error1-mem.out \
   tst-error1.mtrace \
   # generated
+endif
+endif
+endif
 
 aux := init-misc
 install-lib := libg.a
@@ -285,8 +291,14 @@  tests-internal += tst-fd_to_filename
 tests-static += tst-fd_to_filename
 
 ifeq ($(run-built-tests),yes)
-tests-special += $(objpfx)tst-error1-mem.out \
-  $(objpfx)tst-allocate_once-mem.out
+ifeq (yes,$(build-shared))
+ifneq ($(PERL),no)
+tests-special += \
+  $(objpfx)tst-allocate_once-mem.out \
+  $(objpfx)tst-error1-mem.out \
+  # tests-special
+endif
+endif
 endif
 
 tests-container := \
diff --git a/nptl/Makefile b/nptl/Makefile
index b3f8af2e1c..096eef54f2 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -556,10 +556,12 @@  xtests-static += tst-setuid1-static
 ifeq ($(run-built-tests),yes)
 tests-special += \
   $(objpfx)tst-oddstacklimit.out \
-  $(objpfx)tst-stack3-mem.out \
   # tests-special
 ifeq ($(build-shared),yes)
 tests-special += $(objpfx)tst-tls6.out
+ifneq ($(PERL),no)
+tests-special += $(objpfx)tst-stack3-mem.out
+endif
 endif
 endif
 
@@ -617,10 +619,17 @@  tst-stack3-ENV = MALLOC_TRACE=$(objpfx)tst-stack3.mtrace \
 $(objpfx)tst-stack3-mem.out: $(objpfx)tst-stack3.out
 	$(common-objpfx)malloc/mtrace $(objpfx)tst-stack3.mtrace > $@; \
 	$(evaluate-test)
+
+ifeq ($(run-built-tests),yes)
+ifeq (yes,$(build-shared))
+ifneq ($(PERL),no)
 generated += \
   tst-stack3-mem.out \
   tst-stack3.mtrace \
   # generated
+endif
+endif
+endif
 
 tst-stack4mod.sos=$(shell for i in 0 1 2 3 4 5 6 7 8 9 10 \
 				   11 12 13 14 15 16 17 18 19; do \
diff --git a/posix/Makefile b/posix/Makefile
index a1e84853a8..2c598cd20a 100644
--- a/posix/Makefile
+++ b/posix/Makefile
@@ -418,6 +418,17 @@  generated += \
   $(addprefix wordexp-test-result, 1 2 3 4 5 6 7 8 9 10) \
   annexc \
   annexc.out \
+  getconf.speclist \
+  ptestcases.h \
+  testcases.h \
+  tst-getconf.out \
+  wordexp-tst.out \
+  # generated
+
+ifeq ($(run-built-tests),yes)
+ifeq (yes,$(build-shared))
+ifneq ($(PERL),no)
+generated += \
   bug-ga2-mem.out \
   bug-ga2.mtrace \
   bug-glob2-mem.out \
@@ -430,23 +441,22 @@  generated += \
   bug-regex21.mtrace \
   bug-regex31-mem.out \
   bug-regex31.mtrace \
+  bug-regex36-mem.out \
   bug-regex36.mtrace \
-  getconf.speclist \
-  ptestcases.h \
-  testcases.h \
   tst-boost-mem.out \
   tst-boost.mtrace \
   tst-fnmatch-mem.out \
   tst-fnmatch.mtrace \
-  tst-getconf.out \
   tst-pcre-mem.out \
   tst-pcre.mtrace \
   tst-rxspencer-no-utf8-mem.out \
   tst-rxspencer-no-utf8.mtrace \
   tst-vfork3-mem.out \
   tst-vfork3.mtrace \
-  wordexp-tst.out \
   # generated
+endif
+endif
+endif
 
 ifeq ($(run-built-tests),yes)
 ifeq (yes,$(build-shared))
@@ -461,6 +471,9 @@  endif
 # XXX Please note that for now we ignore the result of this test.
 tests-special += $(objpfx)annexc.out
 ifeq ($(run-built-tests),yes)
+tests-special += $(objpfx)tst-getconf.out
+ifeq (yes,$(build-shared))
+ifneq ($(PERL),no)
 tests-special += \
   $(objpfx)bug-ga2-mem.out \
   $(objpfx)bug-glob2-mem.out \
@@ -471,13 +484,14 @@  tests-special += \
   $(objpfx)bug-regex36-mem.out \
   $(objpfx)tst-boost-mem.out \
   $(objpfx)tst-fnmatch-mem.out \
-  $(objpfx)tst-getconf.out \
   $(objpfx)tst-glob-tilde-mem.out \
   $(objpfx)tst-pcre-mem.out \
   $(objpfx)tst-rxspencer-no-utf8-mem.out \
   $(objpfx)tst-vfork3-mem.out \
   # tests-special
 endif
+endif
+endif
 
 include ../Rules
 
diff --git a/stdio-common/Makefile b/stdio-common/Makefile
index 6bc972af1a..a63c05a120 100644
--- a/stdio-common/Makefile
+++ b/stdio-common/Makefile
@@ -229,10 +229,6 @@  tests := \
   tst-popen \
   tst-popen2 \
   tst-printf-binary \
-  tst-printf-bz18872 \
-  tst-printf-bz25691 \
-  tst-printf-fp-free \
-  tst-printf-fp-leak \
   tst-printf-intn \
   tst-printf-oct \
   tst-printf-round \
@@ -261,7 +257,6 @@  tests := \
   tst-vfprintf-mbs-prec \
   tst-vfprintf-user-type \
   tst-vfprintf-width-i18n \
-  tst-vfprintf-width-prec \
   tst-vfprintf-width-prec-alloc \
   tst-wc-printf \
   tstdiomisc \
@@ -270,6 +265,20 @@  tests := \
   xbug \
   # tests
 
+ifeq ($(run-built-tests),yes)
+ifeq (yes,$(build-shared))
+ifneq ($(PERL),no)
+tests += \
+  tst-printf-bz18872 \
+  tst-printf-bz25691 \
+  tst-printf-fp-free \
+  tst-printf-fp-leak \
+  tst-vfprintf-width-prec \
+  # tests
+endif
+endif
+endif
+
 tests-container += \
   tst-popen3
   # tests-container
@@ -293,14 +302,19 @@  test-srcs = \
 
 ifeq ($(run-built-tests),yes)
 tests-special += \
-  $(objpfx)tst-printf-bz18872-mem.out \
-  $(objpfx)tst-printf-bz25691-mem.out \
-  $(objpfx)tst-printf-fp-free-mem.out \
-  $(objpfx)tst-printf-fp-leak-mem.out \
   $(objpfx)tst-printf.out \
   $(objpfx)tst-printfsz-islongdouble.out \
   $(objpfx)tst-setvbuf1-cmp.out \
   $(objpfx)tst-unbputc.out \
+  # tests-special
+
+ifeq (yes,$(build-shared))
+ifneq ($(PERL),no)
+tests-special += \
+  $(objpfx)tst-printf-bz18872-mem.out \
+  $(objpfx)tst-printf-bz25691-mem.out \
+  $(objpfx)tst-printf-fp-free-mem.out \
+  $(objpfx)tst-printf-fp-leak-mem.out \
   $(objpfx)tst-vfprintf-width-prec-mem.out \
   # tests-special
 
@@ -317,6 +331,8 @@  generated += \
   tst-vfprintf-width-prec-mem.out \
   tst-vfprintf-width-prec.mtrace \
   # generated
+endif
+endif
 endif # $(run-built-tests)
 
 tests-special += $(objpfx)tst-errno-manual.out