11 kx # Copyright (C) 1991-2023 Free Software Foundation, Inc.
11 kx # This file is part of the GNU C Library.
11 kx
11 kx # The GNU C Library is free software; you can redistribute it and/or
11 kx # modify it under the terms of the GNU Lesser General Public
11 kx # License as published by the Free Software Foundation; either
11 kx # version 2.1 of the License, or (at your option) any later version.
11 kx
11 kx # The GNU C Library is distributed in the hope that it will be useful,
11 kx # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 kx # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 kx # Lesser General Public License for more details.
11 kx
11 kx # You should have received a copy of the GNU Lesser General Public
11 kx # License along with the GNU C Library; if not, see
11 kx # <https://www.gnu.org/licenses/>.
11 kx
11 kx #
11 kx # Specific makefile for stdio-common.
11 kx #
11 kx subdir := stdio-common
11 kx
11 kx include ../Makeconfig
11 kx
11 kx headers := stdio_ext.h printf.h bits/printf-ldbl.h bits/stdio_lim.h
11 kx
11 kx routines := \
11 kx _itoa \
11 kx _itowa \
11 kx asprintf \
11 kx ctermid \
11 kx cuserid \
11 kx dprintf \
11 kx flockfile \
11 kx fprintf \
11 kx fscanf \
11 kx ftrylockfile \
11 kx funlockfile \
11 kx gentempfd \
11 kx getline \
11 kx getw \
11 kx grouping_iterator \
11 kx iovfscanf \
11 kx isoc99_fscanf \
11 kx isoc99_scanf \
11 kx isoc99_sscanf \
11 kx isoc99_vfscanf \
11 kx isoc99_vscanf \
11 kx isoc99_vsscanf \
11 kx itoa-digits \
11 kx itoa-udigits \
11 kx itowa-digits \
11 kx perror \
11 kx printf \
11 kx printf-prs \
11 kx printf_buffer_as_file \
11 kx printf_buffer_done \
11 kx printf_buffer_flush \
11 kx printf_buffer_pad_1 \
11 kx printf_buffer_putc_1 \
11 kx printf_buffer_puts_1 \
11 kx printf_buffer_to_file \
11 kx printf_buffer_write \
11 kx printf_fp \
11 kx printf_fphex \
11 kx printf_function_invoke \
11 kx printf_size \
11 kx psiginfo \
11 kx psignal \
11 kx putw \
11 kx reg-modifier \
11 kx reg-printf \
11 kx reg-type \
11 kx remove \
11 kx rename \
11 kx renameat \
11 kx renameat2 \
11 kx scanf \
11 kx snprintf \
11 kx sprintf \
11 kx sscanf \
11 kx tempnam \
11 kx tempname \
11 kx tmpfile \
11 kx tmpfile64 \
11 kx tmpnam \
11 kx tmpnam_r \
11 kx translated_number_width \
11 kx vfprintf \
11 kx vfprintf-internal \
11 kx vfscanf \
11 kx vfscanf-internal \
11 kx vfwprintf \
11 kx vfwprintf-internal \
11 kx vfwscanf \
11 kx vfwscanf-internal \
11 kx vprintf \
11 kx wprintf_buffer_as_file \
11 kx wprintf_buffer_done \
11 kx wprintf_buffer_flush \
11 kx wprintf_buffer_pad_1 \
11 kx wprintf_buffer_putc_1 \
11 kx wprintf_buffer_puts_1 \
11 kx wprintf_buffer_to_file \
11 kx wprintf_buffer_write \
11 kx wprintf_function_invoke \
11 kx # routines
11 kx
11 kx aux := \
11 kx errlist \
11 kx errlist-data \
11 kx errname \
11 kx fxprintf \
11 kx printf-parsemb \
11 kx printf-parsewc \
11 kx siglist \
11 kx # aux
11 kx
11 kx tests := \
11 kx bug-vfprintf-nargs \
11 kx bug1 \
11 kx bug10 \
11 kx bug11 \
11 kx bug12 \
11 kx bug13 \
11 kx bug14 \
11 kx bug16 \
11 kx bug17 \
11 kx bug18 \
11 kx bug18a \
11 kx bug19 \
11 kx bug19a \
11 kx bug2 \
11 kx bug20 \
11 kx bug21 \
11 kx bug22 \
11 kx bug23 \
11 kx bug23-2 \
11 kx bug23-3 \
11 kx bug23-4 \
11 kx bug24 \
11 kx bug25 \
11 kx bug26 \
11 kx bug3 \
11 kx bug4 \
11 kx bug5 \
11 kx bug6 \
11 kx bug7 \
11 kx bug8 \
11 kx bug9 \
11 kx errnobug \
11 kx scanf1 \
11 kx scanf10 \
11 kx scanf11 \
11 kx scanf12 \
11 kx scanf13 \
11 kx scanf14 \
11 kx scanf14a \
11 kx scanf15 \
11 kx scanf16 \
11 kx scanf16a \
11 kx scanf17 \
11 kx scanf2 \
11 kx scanf3 \
11 kx scanf4 \
11 kx scanf5 \
11 kx scanf7 \
11 kx scanf8 \
11 kx scanf9 \
11 kx temptest \
11 kx test-fseek \
11 kx test-fwrite \
11 kx test-popen \
11 kx test-strerr \
11 kx test-vfprintf \
11 kx test_rdwr \
11 kx tfformat \
11 kx tiformat \
11 kx tllformat \
11 kx tst-bz11319 \
11 kx tst-bz11319-fortify2 \
11 kx tst-cookie \
11 kx tst-dprintf-length \
11 kx tst-fdopen \
11 kx tst-ferror \
11 kx tst-fgets \
11 kx tst-fileno \
11 kx tst-fmemopen \
11 kx tst-fmemopen2 \
11 kx tst-fmemopen3 \
11 kx tst-fmemopen4 \
11 kx tst-fphex \
11 kx tst-fphex-wide \
11 kx tst-fseek \
11 kx tst-fwrite \
11 kx tst-gets \
11 kx tst-grouping \
11 kx tst-grouping2 \
11 kx tst-grouping3 \
11 kx tst-long-dbl-fphex \
11 kx tst-memstream-string \
11 kx tst-obprintf \
11 kx tst-perror \
11 kx tst-popen \
11 kx tst-popen2 \
11 kx tst-printf-binary \
11 kx tst-printf-bz18872 \
11 kx tst-printf-bz25691 \
11 kx tst-printf-fp-free \
11 kx tst-printf-fp-leak \
11 kx tst-printf-oct \
11 kx tst-printf-round \
11 kx tst-printfsz \
11 kx tst-put-error \
11 kx tst-renameat2 \
11 kx tst-rndseek \
11 kx tst-scanf-round \
11 kx tst-setvbuf1 \
11 kx tst-sprintf \
11 kx tst-sprintf-errno \
11 kx tst-sprintf2 \
11 kx tst-sprintf3 \
11 kx tst-sscanf \
11 kx tst-swprintf \
11 kx tst-swscanf \
11 kx tst-tmpnam \
11 kx tst-ungetc \
11 kx tst-unlockedio \
11 kx tst-vfprintf-mbs-prec \
11 kx tst-vfprintf-user-type \
11 kx tst-vfprintf-width-prec \
11 kx tst-vfprintf-width-prec-alloc \
11 kx tst-vfprintf-width-i18n \
11 kx tst-wc-printf \
11 kx tstdiomisc \
11 kx tstgetln \
11 kx tstscanf \
11 kx xbug \
11 kx # tests
11 kx
11 kx generated += \
11 kx errlist-data-aux-shared.S \
11 kx errlist-data-aux.S \
11 kx siglist-aux-shared.S \
11 kx siglist-aux.S \
11 kx # generated
11 kx
11 kx tests-internal = \
11 kx tst-grouping_iterator \
11 kx # tests-internal
11 kx
11 kx test-srcs = tst-unbputc tst-printf tst-printfsz-islongdouble
11 kx
11 kx ifeq ($(run-built-tests),yes)
11 kx tests-special += \
11 kx $(objpfx)tst-printf-bz18872-mem.out \
11 kx $(objpfx)tst-printf-bz25691-mem.out \
11 kx $(objpfx)tst-printf-fp-free-mem.out \
11 kx $(objpfx)tst-printf-fp-leak-mem.out \
11 kx $(objpfx)tst-printf.out \
11 kx $(objpfx)tst-printfsz-islongdouble.out \
11 kx $(objpfx)tst-setvbuf1-cmp.out \
11 kx $(objpfx)tst-unbputc.out \
11 kx $(objpfx)tst-vfprintf-width-prec-mem.out \
11 kx # tests-special
11 kx
11 kx generated += \
11 kx tst-printf-bz18872-mem.out \
11 kx tst-printf-bz18872.c \
11 kx tst-printf-bz18872.mtrace \
11 kx tst-printf-bz25691-mem.out \
11 kx tst-printf-bz25691.mtrace \
11 kx tst-printf-fp-free-mem.out \
11 kx tst-printf-fp-free.mtrace \
11 kx tst-printf-fp-leak-mem.out \
11 kx tst-printf-fp-leak.mtrace \
11 kx tst-vfprintf-width-prec-mem.out \
11 kx tst-vfprintf-width-prec.mtrace \
11 kx # generated
11 kx endif # $(run-built-tests)
11 kx
11 kx tests-special += $(objpfx)tst-errno-manual.out
11 kx
11 kx include ../Rules
11 kx
11 kx # The errlist.c is built in two phases because compiler might reorder the
11 kx # compat_symbol directive prior the object itself and on binutils older
11 kx # than 2.29 it might generate object sizes different than the expected ones.
11 kx $(objpfx)errlist-data-aux-shared.S: errlist-data-gen.c
11 kx $(make-target-directory)
11 kx $(compile-command.c) $(pic-cppflags) $(pic-ccflag) $(no-stack-protector) -S
11 kx
11 kx $(objpfx)errlist-data-aux.S: errlist-data-gen.c
11 kx $(make-target-directory)
11 kx $(compile-command.c) $(pie-default) $(no-stack-protector) -S
11 kx
11 kx ifndef no_deps
11 kx -include $(objpfx)errlist-data-aux.S.d $(objpfx)errlist-data-aux-shared.S.d
11 kx endif
11 kx
11 kx $(objpfx)errlist-data.os: $(objpfx)errlist-data-aux-shared.S
11 kx $(addprefix $(objpfx)errlist-data, $(object-suffixes-noshared)): \
11 kx $(objpfx)errlist-data-aux.S
11 kx
11 kx $(objpfx)siglist-aux-shared.S: siglist-gen.c
11 kx $(make-target-directory)
11 kx $(compile-command.c) $(pic-cppflags) $(pic-ccflag) $(no-stack-protector) -S
11 kx
11 kx $(objpfx)siglist-aux.S: siglist-gen.c
11 kx $(make-target-directory)
11 kx $(compile-command.c) $(pie-default) $(no-stack-protector) -S
11 kx
11 kx ifndef no_deps
11 kx -include $(objpfx)siglist-aux.S.d $(objpfx)siglist-aux-shared.S.d
11 kx endif
11 kx
11 kx $(objpfx)siglist.os: $(objpfx)siglist-aux-shared.S
11 kx $(addprefix $(objpfx)siglist, $(object-suffixes-noshared)): \
11 kx $(objpfx)siglist-aux.S
11 kx
11 kx ifeq ($(run-built-tests),yes)
11 kx LOCALES := \
11 kx de_DE.ISO-8859-1 \
11 kx de_DE.UTF-8 \
11 kx en_US.ISO-8859-1 \
11 kx hi_IN.UTF-8 \
11 kx ja_JP.EUC-JP \
11 kx ps_AF.UTF-8 \
11 kx tg_TJ.UTF-8 \
11 kx # LOCALES
11 kx include ../gen-locales.mk
11 kx
11 kx $(objpfx)bug14.out: $(gen-locales)
11 kx $(objpfx)scanf13.out: $(gen-locales)
11 kx $(objpfx)test-vfprintf.out: $(gen-locales)
11 kx $(objpfx)tst-grouping.out: $(gen-locales)
11 kx $(objpfx)tst-grouping2.out: $(gen-locales)
11 kx $(objpfx)tst-grouping_iterator.out: $(gen-locales)
11 kx $(objpfx)tst-sprintf.out: $(gen-locales)
11 kx $(objpfx)tst-sscanf.out: $(gen-locales)
11 kx $(objpfx)tst-swprintf.out: $(gen-locales)
11 kx $(objpfx)tst-vfprintf-mbs-prec.out: $(gen-locales)
11 kx $(objpfx)tst-vfprintf-width-i18n.out: $(gen-locales)
11 kx endif
11 kx
11 kx tst-printf-bz18872-ENV = MALLOC_TRACE=$(objpfx)tst-printf-bz18872.mtrace \
11 kx LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
11 kx tst-vfprintf-width-prec-ENV = \
11 kx MALLOC_TRACE=$(objpfx)tst-vfprintf-width-prec.mtrace \
11 kx LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
11 kx tst-printf-bz25691-ENV = \
11 kx MALLOC_TRACE=$(objpfx)tst-printf-bz25691.mtrace \
11 kx LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
11 kx tst-printf-fp-free-ENV = \
11 kx MALLOC_TRACE=$(objpfx)tst-printf-fp-free.mtrace \
11 kx LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
11 kx tst-printf-fp-leak-ENV = \
11 kx MALLOC_TRACE=$(objpfx)tst-printf-fp-leak.mtrace \
11 kx LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
11 kx
11 kx $(objpfx)tst-unbputc.out: tst-unbputc.sh $(objpfx)tst-unbputc
11 kx $(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \
11 kx $(evaluate-test)
11 kx
11 kx $(objpfx)tst-printf.out: tst-printf.sh $(objpfx)tst-printf
11 kx $(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \
11 kx $(evaluate-test)
11 kx
11 kx $(objpfx)tst-printfsz-islongdouble.out: \
11 kx tst-printfsz-islongdouble.sh $(objpfx)tst-printfsz-islongdouble
11 kx $(SHELL) $^ '$(test-program-prefix)' $@; \
11 kx $(evaluate-test)
11 kx
11 kx # We generate this source because it requires a printf invocation with
11 kx # 10K arguments.
11 kx $(objpfx)tst-printf-bz18872.c: tst-printf-bz18872.sh
11 kx rm -f $@ && $(BASH) $^ > $@.new && mv $@.new $@
11 kx
11 kx $(objpfx)tst-%-mem.out: $(objpfx)tst-%.out
11 kx $(common-objpfx)malloc/mtrace $(objpfx)tst-$*.mtrace > $@; \
11 kx $(evaluate-test)
11 kx
11 kx errlist-h = $(firstword $(wildcard $(addsuffix /errlist.h,$(sysdirs) .)))
11 kx
11 kx $(objpfx)tst-errno-manual.out: tst-errno-manual.py \
11 kx $(errlist-h) \
11 kx $(..)manual/errno.texi
11 kx $(PYTHON) tst-errno-manual.py -m $(..)manual/errno.texi \
11 kx -e $(errlist-h) > $@; \
11 kx $(evaluate-test)
11 kx
11 kx CFLAGS-vfprintf.c += -Wno-uninitialized
11 kx CFLAGS-vfwprintf.c += -Wno-uninitialized
11 kx
11 kx CFLAGS-tmpfile.c += -fexceptions
11 kx CFLAGS-tmpfile64.c += -fexceptions
11 kx CFLAGS-tempname.c += -fexceptions
11 kx CFLAGS-psignal.c += -fexceptions
11 kx CFLAGS-vprintf.c += -fexceptions
11 kx CFLAGS-cuserid.c += -fexceptions
11 kx
11 kx CFLAGS-vfprintf.c += -fexceptions
11 kx CFLAGS-fprintf.c += -fexceptions
11 kx CFLAGS-printf.c += -fexceptions
11 kx CFLAGS-vfwprintf.c += -fexceptions
11 kx CFLAGS-vfscanf.c += -fexceptions
11 kx CFLAGS-vfwscanf.c += -fexceptions
11 kx CFLAGS-fscanf.c += -fexceptions
11 kx CFLAGS-scanf.c += -fexceptions
11 kx CFLAGS-isoc99_vfscanf.c += -fexceptions
11 kx CFLAGS-isoc99_vscanf.c += -fexceptions
11 kx CFLAGS-isoc99_fscanf.c += -fexceptions
11 kx CFLAGS-isoc99_scanf.c += -fexceptions
11 kx
11 kx CFLAGS-dprintf.c += $(config-cflags-wno-ignored-attributes)
11 kx
11 kx # scanf14a.c and scanf16a.c test a deprecated extension which is no
11 kx # longer visible under most conformance levels; see the source files
11 kx # for more detail.
11 kx CFLAGS-scanf14a.c += -std=gnu89
11 kx CFLAGS-scanf16a.c += -std=gnu89
11 kx
11 kx CFLAGS-bug3.c += -DOBJPFX=\"$(objpfx)\"
11 kx CFLAGS-bug4.c += -DOBJPFX=\"$(objpfx)\"
11 kx CFLAGS-bug5.c += -DOBJPFX=\"$(objpfx)\"
11 kx CFLAGS-test-fseek.c += -DOBJPFX=\"$(objpfx)\"
11 kx CFLAGS-test-popen.c += -DOBJPFX=\"$(objpfx)\"
11 kx CFLAGS-test_rdwr.c += -DOBJPFX=\"$(objpfx)\"
11 kx
11 kx # tst-gets.c tests a deprecated function.
11 kx CFLAGS-tst-gets.c += -Wno-deprecated-declarations
11 kx
11 kx # BZ #11319 was first fixed for regular vdprintf, then reopened because
11 kx # the fortified version had the same bug.
11 kx CFLAGS-tst-bz11319-fortify2.c += -D_FORTIFY_SOURCE=2
11 kx
11 kx CFLAGS-tst-memstream-string.c += -fno-builtin-fprintf
11 kx
11 kx CPPFLAGS += $(libio-mtsafe)
11 kx
11 kx $(objpfx)tst-setvbuf1.out: /dev/null $(objpfx)tst-setvbuf1
11 kx $(test-program-cmd) > $@ 2>&1; \
11 kx $(evaluate-test)
11 kx
11 kx $(objpfx)tst-setvbuf1-cmp.out: tst-setvbuf1.expect $(objpfx)tst-setvbuf1.out
11 kx cmp $^ > $@; \
11 kx $(evaluate-test)
11 kx
11 kx $(objpfx)tst-printf-round: $(libm)
11 kx $(objpfx)tst-scanf-round: $(libm)