Message ID | 20220110162914.222566-2-siddhesh@sourceware.org |
---|---|
State | Superseded |
Headers | show |
Series | _FORTIFY_SOURCE fixes [BZ #28746] | expand |
Context | Check | Description |
---|---|---|
dj/TryBot-apply_patch | success | Patch applied to master at the time it was sent |
On 10/01/2022 13:29, Siddhesh Poyarekar wrote: > Rename all debug/tst-chk* tests to reflect the fortification level > they're testing and any additional macros so that rules for them can be > autogenerated. tst-fortify.c is the default test without fortification > and is included in all auto-generated tests. This allows easier > replication of the tests to check additional macros. > > The autogenerated tests get updated with every update to debug/Makefile. > > The change also expands the -lfs to include _FORTIFY_SOURCE=3. > > Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org> > --- > debug/Makefile | 109 +++++++++++++++++----------- > debug/tst-chk2.c | 2 - > debug/tst-chk3.c | 2 - > debug/tst-chk4.cc | 1 - > debug/tst-chk5.cc | 2 - > debug/tst-chk6.cc | 2 - > debug/tst-chk7.c | 2 - > debug/tst-chk8.cc | 2 - > debug/tst-fortify-c-default-1.c | 3 + > debug/tst-fortify-c-default-2.c | 3 + > debug/tst-fortify-c-default-3.c | 3 + > debug/tst-fortify-c-lfs-1.c | 3 + > debug/tst-fortify-c-lfs-2.c | 3 + > debug/tst-fortify-c-lfs-3.c | 3 + > debug/tst-fortify-cc-default-1.cc | 3 + > debug/tst-fortify-cc-default-2.cc | 3 + > debug/tst-fortify-cc-default-3.cc | 3 + > debug/tst-fortify-cc-lfs-1.cc | 3 + > debug/tst-fortify-cc-lfs-2.cc | 3 + > debug/tst-fortify-cc-lfs-3.cc | 3 + > debug/{tst-chk1.c => tst-fortify.c} | 0 > debug/tst-lfschk1.c | 2 - > debug/tst-lfschk2.c | 2 - > debug/tst-lfschk3.c | 2 - > debug/tst-lfschk4.cc | 2 - > debug/tst-lfschk5.cc | 2 - > debug/tst-lfschk6.cc | 2 - > 27 files changed, 103 insertions(+), 67 deletions(-) > delete mode 100644 debug/tst-chk2.c > delete mode 100644 debug/tst-chk3.c > delete mode 100644 debug/tst-chk4.cc > delete mode 100644 debug/tst-chk5.cc > delete mode 100644 debug/tst-chk6.cc > delete mode 100644 debug/tst-chk7.c > delete mode 100644 debug/tst-chk8.cc > create mode 100644 debug/tst-fortify-c-default-1.c > create mode 100644 debug/tst-fortify-c-default-2.c > create mode 100644 debug/tst-fortify-c-default-3.c > create mode 100644 debug/tst-fortify-c-lfs-1.c > create mode 100644 debug/tst-fortify-c-lfs-2.c > create mode 100644 debug/tst-fortify-c-lfs-3.c > create mode 100644 debug/tst-fortify-cc-default-1.cc > create mode 100644 debug/tst-fortify-cc-default-2.cc > create mode 100644 debug/tst-fortify-cc-default-3.cc > create mode 100644 debug/tst-fortify-cc-lfs-1.cc > create mode 100644 debug/tst-fortify-cc-lfs-2.cc > create mode 100644 debug/tst-fortify-cc-lfs-3.cc > rename debug/{tst-chk1.c => tst-fortify.c} (100%) > delete mode 100644 debug/tst-lfschk1.c > delete mode 100644 debug/tst-lfschk2.c > delete mode 100644 debug/tst-lfschk3.c > delete mode 100644 debug/tst-lfschk4.cc > delete mode 100644 debug/tst-lfschk5.cc > delete mode 100644 debug/tst-lfschk6.cc > > diff --git a/debug/Makefile b/debug/Makefile > index 5818d751c9..15359da99f 100644 > --- a/debug/Makefile > +++ b/debug/Makefile > @@ -1,4 +1,5 @@ > # Copyright (C) 1998-2022 Free Software Foundation, Inc. > +# Copyright The GNU Toolchain Authors. > # This file is part of the GNU C Library. > > # The GNU C Library is free software; you can redistribute it and/or > @@ -110,32 +111,60 @@ CFLAGS-tst-longjmp_chk3.c += -fexceptions -fasynchronous-unwind-tables > CPPFLAGS-tst-longjmp_chk3.c += -D_FORTIFY_SOURCE=1 > CPPFLAGS-tst-realpath-chk.c += -D_FORTIFY_SOURCE=2 > > +# _FORTIFY_SOURCE tests. > +# Auto-generate tests for _FORTIFY_SOURCE for different levels, compilers and > +# preprocessor conditions based on tst-fortify.c. > +# > +# To add a new test condition, define a cflags-$(cond) make variable to set > +# CFLAGS for the file. > + > +tests-all-chk = tst-fortify > +tests-c-chk = > +tests-cc-chk = > + > +CFLAGS-tst-fortify.c += -Wno-format -Wno-deprecated-declarations -Wno-error > + > +# No additional flags for the default tests. > +define cflags-default > +endef > + > +define cflags-lfs > +CFLAGS-tst-fortify-$(1)-lfs-$(2).$(1) += -D_FILE_OFFSET_BITS=64 > +endef > + > # We know these tests have problems with format strings, this is what > # we are testing. Disable that warning. They are also testing > # deprecated functions (notably gets) so disable that warning as well. > # And they also generate warnings from warning attributes, which > # cannot be disabled via pragmas, so require -Wno-error to be used. > -CFLAGS-tst-chk1.c += -Wno-format -Wno-deprecated-declarations -Wno-error > -CFLAGS-tst-chk2.c += -Wno-format -Wno-deprecated-declarations -Wno-error > -CFLAGS-tst-chk3.c += -Wno-format -Wno-deprecated-declarations -Wno-error > -CFLAGS-tst-chk4.cc += -Wno-format -Wno-deprecated-declarations -Wno-error > -CFLAGS-tst-chk5.cc += -Wno-format -Wno-deprecated-declarations -Wno-error > -CFLAGS-tst-chk6.cc += -Wno-format -Wno-deprecated-declarations -Wno-error > -CFLAGS-tst-chk7.c += -Wno-format -Wno-deprecated-declarations -Wno-error > -CFLAGS-tst-chk8.cc += -Wno-format -Wno-deprecated-declarations -Wno-error > -CFLAGS-tst-lfschk1.c += -Wno-format -Wno-deprecated-declarations -Wno-error > -CFLAGS-tst-lfschk2.c += -Wno-format -Wno-deprecated-declarations -Wno-error > -CFLAGS-tst-lfschk3.c += -Wno-format -Wno-deprecated-declarations -Wno-error > -CFLAGS-tst-lfschk4.cc += -Wno-format -Wno-deprecated-declarations -Wno-error > -CFLAGS-tst-lfschk5.cc += -Wno-format -Wno-deprecated-declarations -Wno-error > -CFLAGS-tst-lfschk6.cc += -Wno-format -Wno-deprecated-declarations -Wno-error > -LDLIBS-tst-chk4 = -lstdc++ > -LDLIBS-tst-chk5 = -lstdc++ > -LDLIBS-tst-chk6 = -lstdc++ > -LDLIBS-tst-chk8 = -lstdc++ > -LDLIBS-tst-lfschk4 = -lstdc++ > -LDLIBS-tst-lfschk5 = -lstdc++ > -LDLIBS-tst-lfschk6 = -lstdc++ > +define gen-chk-test > +tests-$(1)-chk += tst-fortify-$(1)-$(2)-$(3) > +CFLAGS-tst-fortify-$(1)-$(2)-$(3).$(1) += -D_FORTIFY_SOURCE=$(3) -Wno-format \ > + -Wno-deprecated-declarations \ > + -Wno-error > +$(eval $(call cflags-$(2),$(1),$(3))) > +tst-fortify-$(1)-$(2)-$(3).$(1): tst-fortify.c Makefile > + ( echo "/* Autogenerated from Makefile. */"; \ > + echo ""; \ > + echo "#include \"tst-fortify.c\"" ) > $$@.tmp > + mv $$@.tmp $$@ > +endef > + > +chk-extensions = c cc > +chk-types = default lfs > +chk-levels = 1 2 3 > + > +$(foreach e,$(chk-extensions), \ > + $(foreach t,$(chk-types), \ > + $(foreach l,$(chk-levels), \ > + $(eval $(call gen-chk-test,$(e),$(t),$(l)))))) > + > +tests-all-chk += $(tests-c-chk) $(tests-cc-chk) > + > +define link-cc > +LDLIBS-$(1) = -lstdc++ > +endef > +$(foreach t,$(tests-cc-chk), $(eval $(call link-cc,$(t)))) > > # backtrace_symbols only works if we link with -rdynamic. backtrace > # requires unwind tables on most architectures. > @@ -152,19 +181,25 @@ LDFLAGS-tst-backtrace6 = -rdynamic > > CFLAGS-tst-ssp-1.c += -fstack-protector-all > > -tests = backtrace-tst tst-longjmp_chk tst-chk1 tst-chk2 tst-chk3 \ > - tst-lfschk1 tst-lfschk2 tst-lfschk3 test-strcpy_chk test-stpcpy_chk \ > - tst-chk4 tst-chk5 tst-chk6 tst-chk7 tst-chk8 tst-lfschk4 tst-lfschk5 \ > - tst-lfschk6 tst-longjmp_chk2 tst-backtrace2 tst-backtrace3 \ > - tst-backtrace4 tst-backtrace5 tst-backtrace6 tst-realpath-chk > +tests = backtrace-tst \ > + tst-longjmp_chk \ > + test-strcpy_chk \ > + test-stpcpy_chk \ > + tst-longjmp_chk2 \ > + tst-backtrace2 \ > + tst-backtrace3 \ > + tst-backtrace4 \ > + tst-backtrace5 \ > + tst-backtrace6 \ > + tst-realpath-chk \ > + $(tests-all-chk) > > ifeq ($(have-ssp),yes) > tests += tst-ssp-1 > endif > > ifeq (,$(CXX)) > -tests-unsupported = tst-chk4 tst-chk5 tst-chk6 tst-chk8 \ > - tst-lfschk4 tst-lfschk5 tst-lfschk6 > +tests-unsupported = $(tests-cc-chk) > endif > > extra-libs = libpcprofile > @@ -185,20 +220,10 @@ ifeq ($(run-built-tests),yes) > LOCALES := de_DE.UTF-8 > include ../gen-locales.mk > > -$(objpfx)tst-chk1.out: $(gen-locales) > -$(objpfx)tst-chk2.out: $(gen-locales) > -$(objpfx)tst-chk3.out: $(gen-locales) > -$(objpfx)tst-chk4.out: $(gen-locales) > -$(objpfx)tst-chk5.out: $(gen-locales) > -$(objpfx)tst-chk6.out: $(gen-locales) > -$(objpfx)tst-chk7.out: $(gen-locales) > -$(objpfx)tst-chk8.out: $(gen-locales) > -$(objpfx)tst-lfschk1.out: $(gen-locales) > -$(objpfx)tst-lfschk2.out: $(gen-locales) > -$(objpfx)tst-lfschk3.out: $(gen-locales) > -$(objpfx)tst-lfschk4.out: $(gen-locales) > -$(objpfx)tst-lfschk5.out: $(gen-locales) > -$(objpfx)tst-lfschk6.out: $(gen-locales) > +define chk-gen-locales > +$(objpfx)$(1).out: $(gen-locales) > +endef > +$(foreach t, $(tests-all-chk), $(eval $(call chk-gen-locales,$(t)))) > endif > > sLIBdir := $(shell echo $(slibdir) | sed 's,lib\(\|64\)$$,\\\\$$LIB,') I see no much point in regenerate adding the auto-generated files on repository, I think it would be better to move them to build directory instead. The changes below based on your patch should do it. I had to do a special iterator to handle the C++ files. diff --git a/debug/Makefile b/debug/Makefile index b5e13eec94..7c9023b55a 100644 --- a/debug/Makefile +++ b/debug/Makefile @@ -148,12 +148,6 @@ tests-$(1)-chk += tst-fortify-$(1)-$(2)-$(3) CFLAGS-tst-fortify-$(1)-$(2)-$(3).$(1) += -D_FORTIFY_SOURCE=$(3) -Wno-format \ -Wno-deprecated-declarations \ -Wno-error -$(eval $(call cflags-$(2),$(1),$(3))) -tst-fortify-$(1)-$(2)-$(3).$(1): tst-fortify.c Makefile - ( echo "/* Autogenerated from Makefile. */"; \ - echo "$(src-chk-$(2))"; \ - echo "#include \"tst-fortify.c\"" ) > $$@.tmp - mv $$@.tmp $$@ endef chk-extensions = c cc @@ -167,6 +161,32 @@ $(foreach e,$(chk-extensions), \ tests-all-chk += $(tests-c-chk) $(tests-cc-chk) +generated += \ + $(addsuffix .c, $(tests-c-chk)) \ + $(addsuffix .cc, $(tests-cc-chk)) \ + gen-debug-templates + +$(objpfx)gen-debug-templates.stmp: tst-fortify.c Makefile + $(make-target-directory) + for e in $(chk-extensions); do \ + for t in $(chk-types); do \ + for l in $(chk-levels); do \ + file=$(objpfx)tst-fortify-$${e}-$${t}-$${l}.$${e}; \ + ( \ + echo "/* Autogenerated from Makefile. */"; \ + echo "#include \"tst-fortify.c\"" \ + ) > $${file}; \ + done; \ + done; \ + done; \ + echo > $(@) + +# Add dependency to ensure the generator runs prior. +$(foreach t, $(tests-c-chk), $(objpfx)$(t).c): \ + $(objpfx)gen-debug-templates.stmp +$(foreach t, $(tests-cc-chk), $(objpfx)$(t).cc): \ + $(objpfx)gen-debug-templates.stmp + define link-cc LDLIBS-$(1) = -lstdc++ endef @@ -222,6 +242,12 @@ generated += xtrace include ../Rules +define o-iterator-doit +$(objpfx)${o}.o: $(objpfx)$(o).cc $(before-compile); $$(compile-command.cc) +endef +object-suffixes-left := $(tests-cc-chk) +include $(o-iterator) + ifeq ($(run-built-tests),yes) LOCALES := de_DE.UTF-8 include ../gen-locales.mk diff --git a/debug/tst-fortify-c-default-1.c b/debug/tst-fortify-c-default-1.c deleted file mode 100644 index 08a5a758bb..0000000000 --- a/debug/tst-fortify-c-default-1.c +++ /dev/null @@ -1,3 +0,0 @@ -/* Autogenerated from Makefile. */ - -#include "tst-fortify.c" diff --git a/debug/tst-fortify-c-default-2.c b/debug/tst-fortify-c-default-2.c deleted file mode 100644 index 08a5a758bb..0000000000 --- a/debug/tst-fortify-c-default-2.c +++ /dev/null @@ -1,3 +0,0 @@ -/* Autogenerated from Makefile. */ - -#include "tst-fortify.c" diff --git a/debug/tst-fortify-c-default-3.c b/debug/tst-fortify-c-default-3.c deleted file mode 100644 index 08a5a758bb..0000000000 --- a/debug/tst-fortify-c-default-3.c +++ /dev/null @@ -1,3 +0,0 @@ -/* Autogenerated from Makefile. */ - -#include "tst-fortify.c" diff --git a/debug/tst-fortify-c-lfs-1.c b/debug/tst-fortify-c-lfs-1.c deleted file mode 100644 index 08a5a758bb..0000000000 --- a/debug/tst-fortify-c-lfs-1.c +++ /dev/null @@ -1,3 +0,0 @@ -/* Autogenerated from Makefile. */ - -#include "tst-fortify.c" diff --git a/debug/tst-fortify-c-lfs-2.c b/debug/tst-fortify-c-lfs-2.c deleted file mode 100644 index 08a5a758bb..0000000000 --- a/debug/tst-fortify-c-lfs-2.c +++ /dev/null @@ -1,3 +0,0 @@ -/* Autogenerated from Makefile. */ - -#include "tst-fortify.c" diff --git a/debug/tst-fortify-c-lfs-3.c b/debug/tst-fortify-c-lfs-3.c deleted file mode 100644 index 08a5a758bb..0000000000 --- a/debug/tst-fortify-c-lfs-3.c +++ /dev/null @@ -1,3 +0,0 @@ -/* Autogenerated from Makefile. */ - -#include "tst-fortify.c" diff --git a/debug/tst-fortify-c-nongnu-1.c b/debug/tst-fortify-c-nongnu-1.c deleted file mode 100644 index 5266984fa3..0000000000 --- a/debug/tst-fortify-c-nongnu-1.c +++ /dev/null @@ -1,3 +0,0 @@ -/* Autogenerated from Makefile. */ -#undef _GNU_SOURCE -#include "tst-fortify.c" diff --git a/debug/tst-fortify-c-nongnu-2.c b/debug/tst-fortify-c-nongnu-2.c deleted file mode 100644 index 5266984fa3..0000000000 --- a/debug/tst-fortify-c-nongnu-2.c +++ /dev/null @@ -1,3 +0,0 @@ -/* Autogenerated from Makefile. */ -#undef _GNU_SOURCE -#include "tst-fortify.c" diff --git a/debug/tst-fortify-c-nongnu-3.c b/debug/tst-fortify-c-nongnu-3.c deleted file mode 100644 index 5266984fa3..0000000000 --- a/debug/tst-fortify-c-nongnu-3.c +++ /dev/null @@ -1,3 +0,0 @@ -/* Autogenerated from Makefile. */ -#undef _GNU_SOURCE -#include "tst-fortify.c" diff --git a/debug/tst-fortify-cc-default-1.cc b/debug/tst-fortify-cc-default-1.cc deleted file mode 100644 index 08a5a758bb..0000000000 --- a/debug/tst-fortify-cc-default-1.cc +++ /dev/null @@ -1,3 +0,0 @@ -/* Autogenerated from Makefile. */ - -#include "tst-fortify.c" diff --git a/debug/tst-fortify-cc-default-2.cc b/debug/tst-fortify-cc-default-2.cc deleted file mode 100644 index 08a5a758bb..0000000000 --- a/debug/tst-fortify-cc-default-2.cc +++ /dev/null @@ -1,3 +0,0 @@ -/* Autogenerated from Makefile. */ - -#include "tst-fortify.c" diff --git a/debug/tst-fortify-cc-default-3.cc b/debug/tst-fortify-cc-default-3.cc deleted file mode 100644 index 08a5a758bb..0000000000 --- a/debug/tst-fortify-cc-default-3.cc +++ /dev/null @@ -1,3 +0,0 @@ -/* Autogenerated from Makefile. */ - -#include "tst-fortify.c" diff --git a/debug/tst-fortify-cc-lfs-1.cc b/debug/tst-fortify-cc-lfs-1.cc deleted file mode 100644 index 08a5a758bb..0000000000 --- a/debug/tst-fortify-cc-lfs-1.cc +++ /dev/null @@ -1,3 +0,0 @@ -/* Autogenerated from Makefile. */ - -#include "tst-fortify.c" diff --git a/debug/tst-fortify-cc-lfs-2.cc b/debug/tst-fortify-cc-lfs-2.cc deleted file mode 100644 index 08a5a758bb..0000000000 --- a/debug/tst-fortify-cc-lfs-2.cc +++ /dev/null @@ -1,3 +0,0 @@ -/* Autogenerated from Makefile. */ - -#include "tst-fortify.c" diff --git a/debug/tst-fortify-cc-lfs-3.cc b/debug/tst-fortify-cc-lfs-3.cc deleted file mode 100644 index 08a5a758bb..0000000000 --- a/debug/tst-fortify-cc-lfs-3.cc +++ /dev/null @@ -1,3 +0,0 @@ -/* Autogenerated from Makefile. */ - -#include "tst-fortify.c" diff --git a/debug/tst-fortify-cc-nongnu-1.cc b/debug/tst-fortify-cc-nongnu-1.cc deleted file mode 100644 index 5266984fa3..0000000000 --- a/debug/tst-fortify-cc-nongnu-1.cc +++ /dev/null @@ -1,3 +0,0 @@ -/* Autogenerated from Makefile. */ -#undef _GNU_SOURCE -#include "tst-fortify.c" diff --git a/debug/tst-fortify-cc-nongnu-2.cc b/debug/tst-fortify-cc-nongnu-2.cc deleted file mode 100644 index 5266984fa3..0000000000 --- a/debug/tst-fortify-cc-nongnu-2.cc +++ /dev/null @@ -1,3 +0,0 @@ -/* Autogenerated from Makefile. */ -#undef _GNU_SOURCE -#include "tst-fortify.c" diff --git a/debug/tst-fortify-cc-nongnu-3.cc b/debug/tst-fortify-cc-nongnu-3.cc deleted file mode 100644 index 5266984fa3..0000000000 --- a/debug/tst-fortify-cc-nongnu-3.cc +++ /dev/null @@ -1,3 +0,0 @@ -/* Autogenerated from Makefile. */ -#undef _GNU_SOURCE -#include "tst-fortify.c" > diff --git a/debug/tst-chk2.c b/debug/tst-chk2.c > deleted file mode 100644 > index be37ce2d22..0000000000 > --- a/debug/tst-chk2.c > +++ /dev/null > @@ -1,2 +0,0 @@ > -#define _FORTIFY_SOURCE 1 > -#include "tst-chk1.c" > diff --git a/debug/tst-chk3.c b/debug/tst-chk3.c > deleted file mode 100644 > index 38b8e4fb36..0000000000 > --- a/debug/tst-chk3.c > +++ /dev/null > @@ -1,2 +0,0 @@ > -#define _FORTIFY_SOURCE 2 > -#include "tst-chk1.c" > diff --git a/debug/tst-chk4.cc b/debug/tst-chk4.cc > deleted file mode 100644 > index c82e6aac86..0000000000 > --- a/debug/tst-chk4.cc > +++ /dev/null > @@ -1 +0,0 @@ > -#include "tst-chk1.c" > diff --git a/debug/tst-chk5.cc b/debug/tst-chk5.cc > deleted file mode 100644 > index be37ce2d22..0000000000 > --- a/debug/tst-chk5.cc > +++ /dev/null > @@ -1,2 +0,0 @@ > -#define _FORTIFY_SOURCE 1 > -#include "tst-chk1.c" > diff --git a/debug/tst-chk6.cc b/debug/tst-chk6.cc > deleted file mode 100644 > index 38b8e4fb36..0000000000 > --- a/debug/tst-chk6.cc > +++ /dev/null > @@ -1,2 +0,0 @@ > -#define _FORTIFY_SOURCE 2 > -#include "tst-chk1.c" > diff --git a/debug/tst-chk7.c b/debug/tst-chk7.c > deleted file mode 100644 > index 2a7b323812..0000000000 > --- a/debug/tst-chk7.c > +++ /dev/null > @@ -1,2 +0,0 @@ > -#define _FORTIFY_SOURCE 3 > -#include "tst-chk1.c" > diff --git a/debug/tst-chk8.cc b/debug/tst-chk8.cc > deleted file mode 100644 > index 2a7b323812..0000000000 > --- a/debug/tst-chk8.cc > +++ /dev/null > @@ -1,2 +0,0 @@ > -#define _FORTIFY_SOURCE 3 > -#include "tst-chk1.c" > diff --git a/debug/tst-fortify-c-default-1.c b/debug/tst-fortify-c-default-1.c > new file mode 100644 > index 0000000000..08a5a758bb > --- /dev/null > +++ b/debug/tst-fortify-c-default-1.c > @@ -0,0 +1,3 @@ > +/* Autogenerated from Makefile. */ > + > +#include "tst-fortify.c" > diff --git a/debug/tst-fortify-c-default-2.c b/debug/tst-fortify-c-default-2.c > new file mode 100644 > index 0000000000..08a5a758bb > --- /dev/null > +++ b/debug/tst-fortify-c-default-2.c > @@ -0,0 +1,3 @@ > +/* Autogenerated from Makefile. */ > + > +#include "tst-fortify.c" > diff --git a/debug/tst-fortify-c-default-3.c b/debug/tst-fortify-c-default-3.c > new file mode 100644 > index 0000000000..08a5a758bb > --- /dev/null > +++ b/debug/tst-fortify-c-default-3.c > @@ -0,0 +1,3 @@ > +/* Autogenerated from Makefile. */ > + > +#include "tst-fortify.c" > diff --git a/debug/tst-fortify-c-lfs-1.c b/debug/tst-fortify-c-lfs-1.c > new file mode 100644 > index 0000000000..08a5a758bb > --- /dev/null > +++ b/debug/tst-fortify-c-lfs-1.c > @@ -0,0 +1,3 @@ > +/* Autogenerated from Makefile. */ > + > +#include "tst-fortify.c" > diff --git a/debug/tst-fortify-c-lfs-2.c b/debug/tst-fortify-c-lfs-2.c > new file mode 100644 > index 0000000000..08a5a758bb > --- /dev/null > +++ b/debug/tst-fortify-c-lfs-2.c > @@ -0,0 +1,3 @@ > +/* Autogenerated from Makefile. */ > + > +#include "tst-fortify.c" > diff --git a/debug/tst-fortify-c-lfs-3.c b/debug/tst-fortify-c-lfs-3.c > new file mode 100644 > index 0000000000..08a5a758bb > --- /dev/null > +++ b/debug/tst-fortify-c-lfs-3.c > @@ -0,0 +1,3 @@ > +/* Autogenerated from Makefile. */ > + > +#include "tst-fortify.c" > diff --git a/debug/tst-fortify-cc-default-1.cc b/debug/tst-fortify-cc-default-1.cc > new file mode 100644 > index 0000000000..08a5a758bb > --- /dev/null > +++ b/debug/tst-fortify-cc-default-1.cc > @@ -0,0 +1,3 @@ > +/* Autogenerated from Makefile. */ > + > +#include "tst-fortify.c" > diff --git a/debug/tst-fortify-cc-default-2.cc b/debug/tst-fortify-cc-default-2.cc > new file mode 100644 > index 0000000000..08a5a758bb > --- /dev/null > +++ b/debug/tst-fortify-cc-default-2.cc > @@ -0,0 +1,3 @@ > +/* Autogenerated from Makefile. */ > + > +#include "tst-fortify.c" > diff --git a/debug/tst-fortify-cc-default-3.cc b/debug/tst-fortify-cc-default-3.cc > new file mode 100644 > index 0000000000..08a5a758bb > --- /dev/null > +++ b/debug/tst-fortify-cc-default-3.cc > @@ -0,0 +1,3 @@ > +/* Autogenerated from Makefile. */ > + > +#include "tst-fortify.c" > diff --git a/debug/tst-fortify-cc-lfs-1.cc b/debug/tst-fortify-cc-lfs-1.cc > new file mode 100644 > index 0000000000..08a5a758bb > --- /dev/null > +++ b/debug/tst-fortify-cc-lfs-1.cc > @@ -0,0 +1,3 @@ > +/* Autogenerated from Makefile. */ > + > +#include "tst-fortify.c" > diff --git a/debug/tst-fortify-cc-lfs-2.cc b/debug/tst-fortify-cc-lfs-2.cc > new file mode 100644 > index 0000000000..08a5a758bb > --- /dev/null > +++ b/debug/tst-fortify-cc-lfs-2.cc > @@ -0,0 +1,3 @@ > +/* Autogenerated from Makefile. */ > + > +#include "tst-fortify.c" > diff --git a/debug/tst-fortify-cc-lfs-3.cc b/debug/tst-fortify-cc-lfs-3.cc > new file mode 100644 > index 0000000000..08a5a758bb > --- /dev/null > +++ b/debug/tst-fortify-cc-lfs-3.cc > @@ -0,0 +1,3 @@ > +/* Autogenerated from Makefile. */ > + > +#include "tst-fortify.c" > diff --git a/debug/tst-chk1.c b/debug/tst-fortify.c > similarity index 100% > rename from debug/tst-chk1.c > rename to debug/tst-fortify.c > diff --git a/debug/tst-lfschk1.c b/debug/tst-lfschk1.c > deleted file mode 100644 > index f3e6d47d5e..0000000000 > --- a/debug/tst-lfschk1.c > +++ /dev/null > @@ -1,2 +0,0 @@ > -#define _FILE_OFFSET_BITS 64 > -#include "tst-chk1.c" > diff --git a/debug/tst-lfschk2.c b/debug/tst-lfschk2.c > deleted file mode 100644 > index 95d4db1d32..0000000000 > --- a/debug/tst-lfschk2.c > +++ /dev/null > @@ -1,2 +0,0 @@ > -#define _FILE_OFFSET_BITS 64 > -#include "tst-chk2.c" > diff --git a/debug/tst-lfschk3.c b/debug/tst-lfschk3.c > deleted file mode 100644 > index 50a1ae1258..0000000000 > --- a/debug/tst-lfschk3.c > +++ /dev/null > @@ -1,2 +0,0 @@ > -#define _FILE_OFFSET_BITS 64 > -#include "tst-chk3.c" > diff --git a/debug/tst-lfschk4.cc b/debug/tst-lfschk4.cc > deleted file mode 100644 > index f3e6d47d5e..0000000000 > --- a/debug/tst-lfschk4.cc > +++ /dev/null > @@ -1,2 +0,0 @@ > -#define _FILE_OFFSET_BITS 64 > -#include "tst-chk1.c" > diff --git a/debug/tst-lfschk5.cc b/debug/tst-lfschk5.cc > deleted file mode 100644 > index 95d4db1d32..0000000000 > --- a/debug/tst-lfschk5.cc > +++ /dev/null > @@ -1,2 +0,0 @@ > -#define _FILE_OFFSET_BITS 64 > -#include "tst-chk2.c" > diff --git a/debug/tst-lfschk6.cc b/debug/tst-lfschk6.cc > deleted file mode 100644 > index 50a1ae1258..0000000000 > --- a/debug/tst-lfschk6.cc > +++ /dev/null > @@ -1,2 +0,0 @@ > -#define _FILE_OFFSET_BITS 64 > -#include "tst-chk3.c"
On 11/01/2022 18:57, Adhemerval Zanella via Libc-alpha wrote: > I see no much point in regenerate adding the auto-generated files on > repository, I think it would be better to move them to build directory > instead. Fair point. > The changes below based on your patch should do it. I had to do a special > iterator to handle the C++ files. > > diff --git a/debug/Makefile b/debug/Makefile > index b5e13eec94..7c9023b55a 100644 > --- a/debug/Makefile > +++ b/debug/Makefile > @@ -148,12 +148,6 @@ tests-$(1)-chk += tst-fortify-$(1)-$(2)-$(3) > CFLAGS-tst-fortify-$(1)-$(2)-$(3).$(1) += -D_FORTIFY_SOURCE=$(3) -Wno-format \ > -Wno-deprecated-declarations \ > -Wno-error > -$(eval $(call cflags-$(2),$(1),$(3))) > -tst-fortify-$(1)-$(2)-$(3).$(1): tst-fortify.c Makefile > - ( echo "/* Autogenerated from Makefile. */"; \ > - echo "$(src-chk-$(2))"; \ > - echo "#include \"tst-fortify.c\"" ) > $$@.tmp > - mv $$@.tmp $$@ > endef > > chk-extensions = c cc > @@ -167,6 +161,32 @@ $(foreach e,$(chk-extensions), \ > > tests-all-chk += $(tests-c-chk) $(tests-cc-chk) > > +generated += \ > + $(addsuffix .c, $(tests-c-chk)) \ > + $(addsuffix .cc, $(tests-cc-chk)) \ > + gen-debug-templates > + > +$(objpfx)gen-debug-templates.stmp: tst-fortify.c Makefile > + $(make-target-directory) > + for e in $(chk-extensions); do \ > + for t in $(chk-types); do \ > + for l in $(chk-levels); do \ > + file=$(objpfx)tst-fortify-$${e}-$${t}-$${l}.$${e}; \ > + ( \ > + echo "/* Autogenerated from Makefile. */"; \ > + echo "#include \"tst-fortify.c\"" \ > + ) > $${file}; \ > + done; \ > + done; \ > + done; \ > + echo > $(@) Trouble here is that if one of the sources goes missing, there's no rule to regenerate it, so an incremental build with a new autogenerated test won't work. Maybe ditch the generator and keep the above rules to generate sources, except that they generate the sources in $(objpfx) instead of the source directory? > + > +# Add dependency to ensure the generator runs prior. > +$(foreach t, $(tests-c-chk), $(objpfx)$(t).c): \ > + $(objpfx)gen-debug-templates.stmp > +$(foreach t, $(tests-cc-chk), $(objpfx)$(t).cc): \ > + $(objpfx)gen-debug-templates.stmp > + > define link-cc > LDLIBS-$(1) = -lstdc++ > endef > @@ -222,6 +242,12 @@ generated += xtrace > > include ../Rules > > +define o-iterator-doit > +$(objpfx)${o}.o: $(objpfx)$(o).cc $(before-compile); $$(compile-command.cc) > +endef > +object-suffixes-left := $(tests-cc-chk) > +include $(o-iterator) > + > ifeq ($(run-built-tests),yes) > LOCALES := de_DE.UTF-8 > include ../gen-locales.mk > diff --git a/debug/tst-fortify-c-default-1.c b/debug/tst-fortify-c-default-1.c > deleted file mode 100644 > index 08a5a758bb..0000000000 > --- a/debug/tst-fortify-c-default-1.c > +++ /dev/null > @@ -1,3 +0,0 @@ > -/* Autogenerated from Makefile. */ > - > -#include "tst-fortify.c" > diff --git a/debug/tst-fortify-c-default-2.c b/debug/tst-fortify-c-default-2.c > deleted file mode 100644 > index 08a5a758bb..0000000000 > --- a/debug/tst-fortify-c-default-2.c > +++ /dev/null > @@ -1,3 +0,0 @@ > -/* Autogenerated from Makefile. */ > - > -#include "tst-fortify.c" > diff --git a/debug/tst-fortify-c-default-3.c b/debug/tst-fortify-c-default-3.c > deleted file mode 100644 > index 08a5a758bb..0000000000 > --- a/debug/tst-fortify-c-default-3.c > +++ /dev/null > @@ -1,3 +0,0 @@ > -/* Autogenerated from Makefile. */ > - > -#include "tst-fortify.c" > diff --git a/debug/tst-fortify-c-lfs-1.c b/debug/tst-fortify-c-lfs-1.c > deleted file mode 100644 > index 08a5a758bb..0000000000 > --- a/debug/tst-fortify-c-lfs-1.c > +++ /dev/null > @@ -1,3 +0,0 @@ > -/* Autogenerated from Makefile. */ > - > -#include "tst-fortify.c" > diff --git a/debug/tst-fortify-c-lfs-2.c b/debug/tst-fortify-c-lfs-2.c > deleted file mode 100644 > index 08a5a758bb..0000000000 > --- a/debug/tst-fortify-c-lfs-2.c > +++ /dev/null > @@ -1,3 +0,0 @@ > -/* Autogenerated from Makefile. */ > - > -#include "tst-fortify.c" > diff --git a/debug/tst-fortify-c-lfs-3.c b/debug/tst-fortify-c-lfs-3.c > deleted file mode 100644 > index 08a5a758bb..0000000000 > --- a/debug/tst-fortify-c-lfs-3.c > +++ /dev/null > @@ -1,3 +0,0 @@ > -/* Autogenerated from Makefile. */ > - > -#include "tst-fortify.c" > diff --git a/debug/tst-fortify-c-nongnu-1.c b/debug/tst-fortify-c-nongnu-1.c > deleted file mode 100644 > index 5266984fa3..0000000000 > --- a/debug/tst-fortify-c-nongnu-1.c > +++ /dev/null > @@ -1,3 +0,0 @@ > -/* Autogenerated from Makefile. */ > -#undef _GNU_SOURCE > -#include "tst-fortify.c" > diff --git a/debug/tst-fortify-c-nongnu-2.c b/debug/tst-fortify-c-nongnu-2.c > deleted file mode 100644 > index 5266984fa3..0000000000 > --- a/debug/tst-fortify-c-nongnu-2.c > +++ /dev/null > @@ -1,3 +0,0 @@ > -/* Autogenerated from Makefile. */ > -#undef _GNU_SOURCE > -#include "tst-fortify.c" > diff --git a/debug/tst-fortify-c-nongnu-3.c b/debug/tst-fortify-c-nongnu-3.c > deleted file mode 100644 > index 5266984fa3..0000000000 > --- a/debug/tst-fortify-c-nongnu-3.c > +++ /dev/null > @@ -1,3 +0,0 @@ > -/* Autogenerated from Makefile. */ > -#undef _GNU_SOURCE > -#include "tst-fortify.c" > diff --git a/debug/tst-fortify-cc-default-1.cc b/debug/tst-fortify-cc-default-1.cc > deleted file mode 100644 > index 08a5a758bb..0000000000 > --- a/debug/tst-fortify-cc-default-1.cc > +++ /dev/null > @@ -1,3 +0,0 @@ > -/* Autogenerated from Makefile. */ > - > -#include "tst-fortify.c" > diff --git a/debug/tst-fortify-cc-default-2.cc b/debug/tst-fortify-cc-default-2.cc > deleted file mode 100644 > index 08a5a758bb..0000000000 > --- a/debug/tst-fortify-cc-default-2.cc > +++ /dev/null > @@ -1,3 +0,0 @@ > -/* Autogenerated from Makefile. */ > - > -#include "tst-fortify.c" > diff --git a/debug/tst-fortify-cc-default-3.cc b/debug/tst-fortify-cc-default-3.cc > deleted file mode 100644 > index 08a5a758bb..0000000000 > --- a/debug/tst-fortify-cc-default-3.cc > +++ /dev/null > @@ -1,3 +0,0 @@ > -/* Autogenerated from Makefile. */ > - > -#include "tst-fortify.c" > diff --git a/debug/tst-fortify-cc-lfs-1.cc b/debug/tst-fortify-cc-lfs-1.cc > deleted file mode 100644 > index 08a5a758bb..0000000000 > --- a/debug/tst-fortify-cc-lfs-1.cc > +++ /dev/null > @@ -1,3 +0,0 @@ > -/* Autogenerated from Makefile. */ > - > -#include "tst-fortify.c" > diff --git a/debug/tst-fortify-cc-lfs-2.cc b/debug/tst-fortify-cc-lfs-2.cc > deleted file mode 100644 > index 08a5a758bb..0000000000 > --- a/debug/tst-fortify-cc-lfs-2.cc > +++ /dev/null > @@ -1,3 +0,0 @@ > -/* Autogenerated from Makefile. */ > - > -#include "tst-fortify.c" > diff --git a/debug/tst-fortify-cc-lfs-3.cc b/debug/tst-fortify-cc-lfs-3.cc > deleted file mode 100644 > index 08a5a758bb..0000000000 > --- a/debug/tst-fortify-cc-lfs-3.cc > +++ /dev/null > @@ -1,3 +0,0 @@ > -/* Autogenerated from Makefile. */ > - > -#include "tst-fortify.c" > diff --git a/debug/tst-fortify-cc-nongnu-1.cc b/debug/tst-fortify-cc-nongnu-1.cc > deleted file mode 100644 > index 5266984fa3..0000000000 > --- a/debug/tst-fortify-cc-nongnu-1.cc > +++ /dev/null > @@ -1,3 +0,0 @@ > -/* Autogenerated from Makefile. */ > -#undef _GNU_SOURCE > -#include "tst-fortify.c" > diff --git a/debug/tst-fortify-cc-nongnu-2.cc b/debug/tst-fortify-cc-nongnu-2.cc > deleted file mode 100644 > index 5266984fa3..0000000000 > --- a/debug/tst-fortify-cc-nongnu-2.cc > +++ /dev/null > @@ -1,3 +0,0 @@ > -/* Autogenerated from Makefile. */ > -#undef _GNU_SOURCE > -#include "tst-fortify.c" > diff --git a/debug/tst-fortify-cc-nongnu-3.cc b/debug/tst-fortify-cc-nongnu-3.cc > deleted file mode 100644 > index 5266984fa3..0000000000 > --- a/debug/tst-fortify-cc-nongnu-3.cc > +++ /dev/null > @@ -1,3 +0,0 @@ > -/* Autogenerated from Makefile. */ > -#undef _GNU_SOURCE > -#include "tst-fortify.c" > >> diff --git a/debug/tst-chk2.c b/debug/tst-chk2.c >> deleted file mode 100644 >> index be37ce2d22..0000000000 >> --- a/debug/tst-chk2.c >> +++ /dev/null >> @@ -1,2 +0,0 @@ >> -#define _FORTIFY_SOURCE 1 >> -#include "tst-chk1.c" >> diff --git a/debug/tst-chk3.c b/debug/tst-chk3.c >> deleted file mode 100644 >> index 38b8e4fb36..0000000000 >> --- a/debug/tst-chk3.c >> +++ /dev/null >> @@ -1,2 +0,0 @@ >> -#define _FORTIFY_SOURCE 2 >> -#include "tst-chk1.c" >> diff --git a/debug/tst-chk4.cc b/debug/tst-chk4.cc >> deleted file mode 100644 >> index c82e6aac86..0000000000 >> --- a/debug/tst-chk4.cc >> +++ /dev/null >> @@ -1 +0,0 @@ >> -#include "tst-chk1.c" >> diff --git a/debug/tst-chk5.cc b/debug/tst-chk5.cc >> deleted file mode 100644 >> index be37ce2d22..0000000000 >> --- a/debug/tst-chk5.cc >> +++ /dev/null >> @@ -1,2 +0,0 @@ >> -#define _FORTIFY_SOURCE 1 >> -#include "tst-chk1.c" >> diff --git a/debug/tst-chk6.cc b/debug/tst-chk6.cc >> deleted file mode 100644 >> index 38b8e4fb36..0000000000 >> --- a/debug/tst-chk6.cc >> +++ /dev/null >> @@ -1,2 +0,0 @@ >> -#define _FORTIFY_SOURCE 2 >> -#include "tst-chk1.c" >> diff --git a/debug/tst-chk7.c b/debug/tst-chk7.c >> deleted file mode 100644 >> index 2a7b323812..0000000000 >> --- a/debug/tst-chk7.c >> +++ /dev/null >> @@ -1,2 +0,0 @@ >> -#define _FORTIFY_SOURCE 3 >> -#include "tst-chk1.c" >> diff --git a/debug/tst-chk8.cc b/debug/tst-chk8.cc >> deleted file mode 100644 >> index 2a7b323812..0000000000 >> --- a/debug/tst-chk8.cc >> +++ /dev/null >> @@ -1,2 +0,0 @@ >> -#define _FORTIFY_SOURCE 3 >> -#include "tst-chk1.c" >> diff --git a/debug/tst-fortify-c-default-1.c b/debug/tst-fortify-c-default-1.c >> new file mode 100644 >> index 0000000000..08a5a758bb >> --- /dev/null >> +++ b/debug/tst-fortify-c-default-1.c >> @@ -0,0 +1,3 @@ >> +/* Autogenerated from Makefile. */ >> + >> +#include "tst-fortify.c" >> diff --git a/debug/tst-fortify-c-default-2.c b/debug/tst-fortify-c-default-2.c >> new file mode 100644 >> index 0000000000..08a5a758bb >> --- /dev/null >> +++ b/debug/tst-fortify-c-default-2.c >> @@ -0,0 +1,3 @@ >> +/* Autogenerated from Makefile. */ >> + >> +#include "tst-fortify.c" >> diff --git a/debug/tst-fortify-c-default-3.c b/debug/tst-fortify-c-default-3.c >> new file mode 100644 >> index 0000000000..08a5a758bb >> --- /dev/null >> +++ b/debug/tst-fortify-c-default-3.c >> @@ -0,0 +1,3 @@ >> +/* Autogenerated from Makefile. */ >> + >> +#include "tst-fortify.c" >> diff --git a/debug/tst-fortify-c-lfs-1.c b/debug/tst-fortify-c-lfs-1.c >> new file mode 100644 >> index 0000000000..08a5a758bb >> --- /dev/null >> +++ b/debug/tst-fortify-c-lfs-1.c >> @@ -0,0 +1,3 @@ >> +/* Autogenerated from Makefile. */ >> + >> +#include "tst-fortify.c" >> diff --git a/debug/tst-fortify-c-lfs-2.c b/debug/tst-fortify-c-lfs-2.c >> new file mode 100644 >> index 0000000000..08a5a758bb >> --- /dev/null >> +++ b/debug/tst-fortify-c-lfs-2.c >> @@ -0,0 +1,3 @@ >> +/* Autogenerated from Makefile. */ >> + >> +#include "tst-fortify.c" >> diff --git a/debug/tst-fortify-c-lfs-3.c b/debug/tst-fortify-c-lfs-3.c >> new file mode 100644 >> index 0000000000..08a5a758bb >> --- /dev/null >> +++ b/debug/tst-fortify-c-lfs-3.c >> @@ -0,0 +1,3 @@ >> +/* Autogenerated from Makefile. */ >> + >> +#include "tst-fortify.c" >> diff --git a/debug/tst-fortify-cc-default-1.cc b/debug/tst-fortify-cc-default-1.cc >> new file mode 100644 >> index 0000000000..08a5a758bb >> --- /dev/null >> +++ b/debug/tst-fortify-cc-default-1.cc >> @@ -0,0 +1,3 @@ >> +/* Autogenerated from Makefile. */ >> + >> +#include "tst-fortify.c" >> diff --git a/debug/tst-fortify-cc-default-2.cc b/debug/tst-fortify-cc-default-2.cc >> new file mode 100644 >> index 0000000000..08a5a758bb >> --- /dev/null >> +++ b/debug/tst-fortify-cc-default-2.cc >> @@ -0,0 +1,3 @@ >> +/* Autogenerated from Makefile. */ >> + >> +#include "tst-fortify.c" >> diff --git a/debug/tst-fortify-cc-default-3.cc b/debug/tst-fortify-cc-default-3.cc >> new file mode 100644 >> index 0000000000..08a5a758bb >> --- /dev/null >> +++ b/debug/tst-fortify-cc-default-3.cc >> @@ -0,0 +1,3 @@ >> +/* Autogenerated from Makefile. */ >> + >> +#include "tst-fortify.c" >> diff --git a/debug/tst-fortify-cc-lfs-1.cc b/debug/tst-fortify-cc-lfs-1.cc >> new file mode 100644 >> index 0000000000..08a5a758bb >> --- /dev/null >> +++ b/debug/tst-fortify-cc-lfs-1.cc >> @@ -0,0 +1,3 @@ >> +/* Autogenerated from Makefile. */ >> + >> +#include "tst-fortify.c" >> diff --git a/debug/tst-fortify-cc-lfs-2.cc b/debug/tst-fortify-cc-lfs-2.cc >> new file mode 100644 >> index 0000000000..08a5a758bb >> --- /dev/null >> +++ b/debug/tst-fortify-cc-lfs-2.cc >> @@ -0,0 +1,3 @@ >> +/* Autogenerated from Makefile. */ >> + >> +#include "tst-fortify.c" >> diff --git a/debug/tst-fortify-cc-lfs-3.cc b/debug/tst-fortify-cc-lfs-3.cc >> new file mode 100644 >> index 0000000000..08a5a758bb >> --- /dev/null >> +++ b/debug/tst-fortify-cc-lfs-3.cc >> @@ -0,0 +1,3 @@ >> +/* Autogenerated from Makefile. */ >> + >> +#include "tst-fortify.c" >> diff --git a/debug/tst-chk1.c b/debug/tst-fortify.c >> similarity index 100% >> rename from debug/tst-chk1.c >> rename to debug/tst-fortify.c >> diff --git a/debug/tst-lfschk1.c b/debug/tst-lfschk1.c >> deleted file mode 100644 >> index f3e6d47d5e..0000000000 >> --- a/debug/tst-lfschk1.c >> +++ /dev/null >> @@ -1,2 +0,0 @@ >> -#define _FILE_OFFSET_BITS 64 >> -#include "tst-chk1.c" >> diff --git a/debug/tst-lfschk2.c b/debug/tst-lfschk2.c >> deleted file mode 100644 >> index 95d4db1d32..0000000000 >> --- a/debug/tst-lfschk2.c >> +++ /dev/null >> @@ -1,2 +0,0 @@ >> -#define _FILE_OFFSET_BITS 64 >> -#include "tst-chk2.c" >> diff --git a/debug/tst-lfschk3.c b/debug/tst-lfschk3.c >> deleted file mode 100644 >> index 50a1ae1258..0000000000 >> --- a/debug/tst-lfschk3.c >> +++ /dev/null >> @@ -1,2 +0,0 @@ >> -#define _FILE_OFFSET_BITS 64 >> -#include "tst-chk3.c" >> diff --git a/debug/tst-lfschk4.cc b/debug/tst-lfschk4.cc >> deleted file mode 100644 >> index f3e6d47d5e..0000000000 >> --- a/debug/tst-lfschk4.cc >> +++ /dev/null >> @@ -1,2 +0,0 @@ >> -#define _FILE_OFFSET_BITS 64 >> -#include "tst-chk1.c" >> diff --git a/debug/tst-lfschk5.cc b/debug/tst-lfschk5.cc >> deleted file mode 100644 >> index 95d4db1d32..0000000000 >> --- a/debug/tst-lfschk5.cc >> +++ /dev/null >> @@ -1,2 +0,0 @@ >> -#define _FILE_OFFSET_BITS 64 >> -#include "tst-chk2.c" >> diff --git a/debug/tst-lfschk6.cc b/debug/tst-lfschk6.cc >> deleted file mode 100644 >> index 50a1ae1258..0000000000 >> --- a/debug/tst-lfschk6.cc >> +++ /dev/null >> @@ -1,2 +0,0 @@ >> -#define _FILE_OFFSET_BITS 64 >> -#include "tst-chk3.c" >
On 11/01/2022 12:28, Siddhesh Poyarekar wrote: > On 11/01/2022 18:57, Adhemerval Zanella via Libc-alpha wrote: >> I see no much point in regenerate adding the auto-generated files on >> repository, I think it would be better to move them to build directory >> instead. > > Fair point. > >> The changes below based on your patch should do it. I had to do a special >> iterator to handle the C++ files. >> >> diff --git a/debug/Makefile b/debug/Makefile >> index b5e13eec94..7c9023b55a 100644 >> --- a/debug/Makefile >> +++ b/debug/Makefile >> @@ -148,12 +148,6 @@ tests-$(1)-chk += tst-fortify-$(1)-$(2)-$(3) >> CFLAGS-tst-fortify-$(1)-$(2)-$(3).$(1) += -D_FORTIFY_SOURCE=$(3) -Wno-format \ >> -Wno-deprecated-declarations \ >> -Wno-error >> -$(eval $(call cflags-$(2),$(1),$(3))) >> -tst-fortify-$(1)-$(2)-$(3).$(1): tst-fortify.c Makefile >> - ( echo "/* Autogenerated from Makefile. */"; \ >> - echo "$(src-chk-$(2))"; \ >> - echo "#include \"tst-fortify.c\"" ) > $$@.tmp >> - mv $$@.tmp $$@ >> endef >> chk-extensions = c cc >> @@ -167,6 +161,32 @@ $(foreach e,$(chk-extensions), \ >> tests-all-chk += $(tests-c-chk) $(tests-cc-chk) >> +generated += \ >> + $(addsuffix .c, $(tests-c-chk)) \ >> + $(addsuffix .cc, $(tests-cc-chk)) \ >> + gen-debug-templates >> + >> +$(objpfx)gen-debug-templates.stmp: tst-fortify.c Makefile >> + $(make-target-directory) >> + for e in $(chk-extensions); do \ >> + for t in $(chk-types); do \ >> + for l in $(chk-levels); do \ >> + file=$(objpfx)tst-fortify-$${e}-$${t}-$${l}.$${e}; \ >> + ( \ >> + echo "/* Autogenerated from Makefile. */"; \ >> + echo "#include \"tst-fortify.c\"" \ >> + ) > $${file}; \ >> + done; \ >> + done; \ >> + done; \ >> + echo > $(@) > > Trouble here is that if one of the sources goes missing, there's no rule to regenerate it, so an incremental build with a new autogenerated test won't work. > > Maybe ditch the generator and keep the above rules to generate sources, except that they generate the sources in $(objpfx) instead of the source directory? Yeah, that the same issue we have for math autogenerated files. In such cases I either trigger a full rebuild or just remove the stmp file to regenerate the files. But if you have a better idea I think we can use it and maybe also adapt on math.
diff --git a/debug/Makefile b/debug/Makefile index 5818d751c9..15359da99f 100644 --- a/debug/Makefile +++ b/debug/Makefile @@ -1,4 +1,5 @@ # Copyright (C) 1998-2022 Free Software Foundation, Inc. +# Copyright The GNU Toolchain Authors. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or @@ -110,32 +111,60 @@ CFLAGS-tst-longjmp_chk3.c += -fexceptions -fasynchronous-unwind-tables CPPFLAGS-tst-longjmp_chk3.c += -D_FORTIFY_SOURCE=1 CPPFLAGS-tst-realpath-chk.c += -D_FORTIFY_SOURCE=2 +# _FORTIFY_SOURCE tests. +# Auto-generate tests for _FORTIFY_SOURCE for different levels, compilers and +# preprocessor conditions based on tst-fortify.c. +# +# To add a new test condition, define a cflags-$(cond) make variable to set +# CFLAGS for the file. + +tests-all-chk = tst-fortify +tests-c-chk = +tests-cc-chk = + +CFLAGS-tst-fortify.c += -Wno-format -Wno-deprecated-declarations -Wno-error + +# No additional flags for the default tests. +define cflags-default +endef + +define cflags-lfs +CFLAGS-tst-fortify-$(1)-lfs-$(2).$(1) += -D_FILE_OFFSET_BITS=64 +endef + # We know these tests have problems with format strings, this is what # we are testing. Disable that warning. They are also testing # deprecated functions (notably gets) so disable that warning as well. # And they also generate warnings from warning attributes, which # cannot be disabled via pragmas, so require -Wno-error to be used. -CFLAGS-tst-chk1.c += -Wno-format -Wno-deprecated-declarations -Wno-error -CFLAGS-tst-chk2.c += -Wno-format -Wno-deprecated-declarations -Wno-error -CFLAGS-tst-chk3.c += -Wno-format -Wno-deprecated-declarations -Wno-error -CFLAGS-tst-chk4.cc += -Wno-format -Wno-deprecated-declarations -Wno-error -CFLAGS-tst-chk5.cc += -Wno-format -Wno-deprecated-declarations -Wno-error -CFLAGS-tst-chk6.cc += -Wno-format -Wno-deprecated-declarations -Wno-error -CFLAGS-tst-chk7.c += -Wno-format -Wno-deprecated-declarations -Wno-error -CFLAGS-tst-chk8.cc += -Wno-format -Wno-deprecated-declarations -Wno-error -CFLAGS-tst-lfschk1.c += -Wno-format -Wno-deprecated-declarations -Wno-error -CFLAGS-tst-lfschk2.c += -Wno-format -Wno-deprecated-declarations -Wno-error -CFLAGS-tst-lfschk3.c += -Wno-format -Wno-deprecated-declarations -Wno-error -CFLAGS-tst-lfschk4.cc += -Wno-format -Wno-deprecated-declarations -Wno-error -CFLAGS-tst-lfschk5.cc += -Wno-format -Wno-deprecated-declarations -Wno-error -CFLAGS-tst-lfschk6.cc += -Wno-format -Wno-deprecated-declarations -Wno-error -LDLIBS-tst-chk4 = -lstdc++ -LDLIBS-tst-chk5 = -lstdc++ -LDLIBS-tst-chk6 = -lstdc++ -LDLIBS-tst-chk8 = -lstdc++ -LDLIBS-tst-lfschk4 = -lstdc++ -LDLIBS-tst-lfschk5 = -lstdc++ -LDLIBS-tst-lfschk6 = -lstdc++ +define gen-chk-test +tests-$(1)-chk += tst-fortify-$(1)-$(2)-$(3) +CFLAGS-tst-fortify-$(1)-$(2)-$(3).$(1) += -D_FORTIFY_SOURCE=$(3) -Wno-format \ + -Wno-deprecated-declarations \ + -Wno-error +$(eval $(call cflags-$(2),$(1),$(3))) +tst-fortify-$(1)-$(2)-$(3).$(1): tst-fortify.c Makefile + ( echo "/* Autogenerated from Makefile. */"; \ + echo ""; \ + echo "#include \"tst-fortify.c\"" ) > $$@.tmp + mv $$@.tmp $$@ +endef + +chk-extensions = c cc +chk-types = default lfs +chk-levels = 1 2 3 + +$(foreach e,$(chk-extensions), \ + $(foreach t,$(chk-types), \ + $(foreach l,$(chk-levels), \ + $(eval $(call gen-chk-test,$(e),$(t),$(l)))))) + +tests-all-chk += $(tests-c-chk) $(tests-cc-chk) + +define link-cc +LDLIBS-$(1) = -lstdc++ +endef +$(foreach t,$(tests-cc-chk), $(eval $(call link-cc,$(t)))) # backtrace_symbols only works if we link with -rdynamic. backtrace # requires unwind tables on most architectures. @@ -152,19 +181,25 @@ LDFLAGS-tst-backtrace6 = -rdynamic CFLAGS-tst-ssp-1.c += -fstack-protector-all -tests = backtrace-tst tst-longjmp_chk tst-chk1 tst-chk2 tst-chk3 \ - tst-lfschk1 tst-lfschk2 tst-lfschk3 test-strcpy_chk test-stpcpy_chk \ - tst-chk4 tst-chk5 tst-chk6 tst-chk7 tst-chk8 tst-lfschk4 tst-lfschk5 \ - tst-lfschk6 tst-longjmp_chk2 tst-backtrace2 tst-backtrace3 \ - tst-backtrace4 tst-backtrace5 tst-backtrace6 tst-realpath-chk +tests = backtrace-tst \ + tst-longjmp_chk \ + test-strcpy_chk \ + test-stpcpy_chk \ + tst-longjmp_chk2 \ + tst-backtrace2 \ + tst-backtrace3 \ + tst-backtrace4 \ + tst-backtrace5 \ + tst-backtrace6 \ + tst-realpath-chk \ + $(tests-all-chk) ifeq ($(have-ssp),yes) tests += tst-ssp-1 endif ifeq (,$(CXX)) -tests-unsupported = tst-chk4 tst-chk5 tst-chk6 tst-chk8 \ - tst-lfschk4 tst-lfschk5 tst-lfschk6 +tests-unsupported = $(tests-cc-chk) endif extra-libs = libpcprofile @@ -185,20 +220,10 @@ ifeq ($(run-built-tests),yes) LOCALES := de_DE.UTF-8 include ../gen-locales.mk -$(objpfx)tst-chk1.out: $(gen-locales) -$(objpfx)tst-chk2.out: $(gen-locales) -$(objpfx)tst-chk3.out: $(gen-locales) -$(objpfx)tst-chk4.out: $(gen-locales) -$(objpfx)tst-chk5.out: $(gen-locales) -$(objpfx)tst-chk6.out: $(gen-locales) -$(objpfx)tst-chk7.out: $(gen-locales) -$(objpfx)tst-chk8.out: $(gen-locales) -$(objpfx)tst-lfschk1.out: $(gen-locales) -$(objpfx)tst-lfschk2.out: $(gen-locales) -$(objpfx)tst-lfschk3.out: $(gen-locales) -$(objpfx)tst-lfschk4.out: $(gen-locales) -$(objpfx)tst-lfschk5.out: $(gen-locales) -$(objpfx)tst-lfschk6.out: $(gen-locales) +define chk-gen-locales +$(objpfx)$(1).out: $(gen-locales) +endef +$(foreach t, $(tests-all-chk), $(eval $(call chk-gen-locales,$(t)))) endif sLIBdir := $(shell echo $(slibdir) | sed 's,lib\(\|64\)$$,\\\\$$LIB,') diff --git a/debug/tst-chk2.c b/debug/tst-chk2.c deleted file mode 100644 index be37ce2d22..0000000000 --- a/debug/tst-chk2.c +++ /dev/null @@ -1,2 +0,0 @@ -#define _FORTIFY_SOURCE 1 -#include "tst-chk1.c" diff --git a/debug/tst-chk3.c b/debug/tst-chk3.c deleted file mode 100644 index 38b8e4fb36..0000000000 --- a/debug/tst-chk3.c +++ /dev/null @@ -1,2 +0,0 @@ -#define _FORTIFY_SOURCE 2 -#include "tst-chk1.c" diff --git a/debug/tst-chk4.cc b/debug/tst-chk4.cc deleted file mode 100644 index c82e6aac86..0000000000 --- a/debug/tst-chk4.cc +++ /dev/null @@ -1 +0,0 @@ -#include "tst-chk1.c" diff --git a/debug/tst-chk5.cc b/debug/tst-chk5.cc deleted file mode 100644 index be37ce2d22..0000000000 --- a/debug/tst-chk5.cc +++ /dev/null @@ -1,2 +0,0 @@ -#define _FORTIFY_SOURCE 1 -#include "tst-chk1.c" diff --git a/debug/tst-chk6.cc b/debug/tst-chk6.cc deleted file mode 100644 index 38b8e4fb36..0000000000 --- a/debug/tst-chk6.cc +++ /dev/null @@ -1,2 +0,0 @@ -#define _FORTIFY_SOURCE 2 -#include "tst-chk1.c" diff --git a/debug/tst-chk7.c b/debug/tst-chk7.c deleted file mode 100644 index 2a7b323812..0000000000 --- a/debug/tst-chk7.c +++ /dev/null @@ -1,2 +0,0 @@ -#define _FORTIFY_SOURCE 3 -#include "tst-chk1.c" diff --git a/debug/tst-chk8.cc b/debug/tst-chk8.cc deleted file mode 100644 index 2a7b323812..0000000000 --- a/debug/tst-chk8.cc +++ /dev/null @@ -1,2 +0,0 @@ -#define _FORTIFY_SOURCE 3 -#include "tst-chk1.c" diff --git a/debug/tst-fortify-c-default-1.c b/debug/tst-fortify-c-default-1.c new file mode 100644 index 0000000000..08a5a758bb --- /dev/null +++ b/debug/tst-fortify-c-default-1.c @@ -0,0 +1,3 @@ +/* Autogenerated from Makefile. */ + +#include "tst-fortify.c" diff --git a/debug/tst-fortify-c-default-2.c b/debug/tst-fortify-c-default-2.c new file mode 100644 index 0000000000..08a5a758bb --- /dev/null +++ b/debug/tst-fortify-c-default-2.c @@ -0,0 +1,3 @@ +/* Autogenerated from Makefile. */ + +#include "tst-fortify.c" diff --git a/debug/tst-fortify-c-default-3.c b/debug/tst-fortify-c-default-3.c new file mode 100644 index 0000000000..08a5a758bb --- /dev/null +++ b/debug/tst-fortify-c-default-3.c @@ -0,0 +1,3 @@ +/* Autogenerated from Makefile. */ + +#include "tst-fortify.c" diff --git a/debug/tst-fortify-c-lfs-1.c b/debug/tst-fortify-c-lfs-1.c new file mode 100644 index 0000000000..08a5a758bb --- /dev/null +++ b/debug/tst-fortify-c-lfs-1.c @@ -0,0 +1,3 @@ +/* Autogenerated from Makefile. */ + +#include "tst-fortify.c" diff --git a/debug/tst-fortify-c-lfs-2.c b/debug/tst-fortify-c-lfs-2.c new file mode 100644 index 0000000000..08a5a758bb --- /dev/null +++ b/debug/tst-fortify-c-lfs-2.c @@ -0,0 +1,3 @@ +/* Autogenerated from Makefile. */ + +#include "tst-fortify.c" diff --git a/debug/tst-fortify-c-lfs-3.c b/debug/tst-fortify-c-lfs-3.c new file mode 100644 index 0000000000..08a5a758bb --- /dev/null +++ b/debug/tst-fortify-c-lfs-3.c @@ -0,0 +1,3 @@ +/* Autogenerated from Makefile. */ + +#include "tst-fortify.c" diff --git a/debug/tst-fortify-cc-default-1.cc b/debug/tst-fortify-cc-default-1.cc new file mode 100644 index 0000000000..08a5a758bb --- /dev/null +++ b/debug/tst-fortify-cc-default-1.cc @@ -0,0 +1,3 @@ +/* Autogenerated from Makefile. */ + +#include "tst-fortify.c" diff --git a/debug/tst-fortify-cc-default-2.cc b/debug/tst-fortify-cc-default-2.cc new file mode 100644 index 0000000000..08a5a758bb --- /dev/null +++ b/debug/tst-fortify-cc-default-2.cc @@ -0,0 +1,3 @@ +/* Autogenerated from Makefile. */ + +#include "tst-fortify.c" diff --git a/debug/tst-fortify-cc-default-3.cc b/debug/tst-fortify-cc-default-3.cc new file mode 100644 index 0000000000..08a5a758bb --- /dev/null +++ b/debug/tst-fortify-cc-default-3.cc @@ -0,0 +1,3 @@ +/* Autogenerated from Makefile. */ + +#include "tst-fortify.c" diff --git a/debug/tst-fortify-cc-lfs-1.cc b/debug/tst-fortify-cc-lfs-1.cc new file mode 100644 index 0000000000..08a5a758bb --- /dev/null +++ b/debug/tst-fortify-cc-lfs-1.cc @@ -0,0 +1,3 @@ +/* Autogenerated from Makefile. */ + +#include "tst-fortify.c" diff --git a/debug/tst-fortify-cc-lfs-2.cc b/debug/tst-fortify-cc-lfs-2.cc new file mode 100644 index 0000000000..08a5a758bb --- /dev/null +++ b/debug/tst-fortify-cc-lfs-2.cc @@ -0,0 +1,3 @@ +/* Autogenerated from Makefile. */ + +#include "tst-fortify.c" diff --git a/debug/tst-fortify-cc-lfs-3.cc b/debug/tst-fortify-cc-lfs-3.cc new file mode 100644 index 0000000000..08a5a758bb --- /dev/null +++ b/debug/tst-fortify-cc-lfs-3.cc @@ -0,0 +1,3 @@ +/* Autogenerated from Makefile. */ + +#include "tst-fortify.c" diff --git a/debug/tst-chk1.c b/debug/tst-fortify.c similarity index 100% rename from debug/tst-chk1.c rename to debug/tst-fortify.c diff --git a/debug/tst-lfschk1.c b/debug/tst-lfschk1.c deleted file mode 100644 index f3e6d47d5e..0000000000 --- a/debug/tst-lfschk1.c +++ /dev/null @@ -1,2 +0,0 @@ -#define _FILE_OFFSET_BITS 64 -#include "tst-chk1.c" diff --git a/debug/tst-lfschk2.c b/debug/tst-lfschk2.c deleted file mode 100644 index 95d4db1d32..0000000000 --- a/debug/tst-lfschk2.c +++ /dev/null @@ -1,2 +0,0 @@ -#define _FILE_OFFSET_BITS 64 -#include "tst-chk2.c" diff --git a/debug/tst-lfschk3.c b/debug/tst-lfschk3.c deleted file mode 100644 index 50a1ae1258..0000000000 --- a/debug/tst-lfschk3.c +++ /dev/null @@ -1,2 +0,0 @@ -#define _FILE_OFFSET_BITS 64 -#include "tst-chk3.c" diff --git a/debug/tst-lfschk4.cc b/debug/tst-lfschk4.cc deleted file mode 100644 index f3e6d47d5e..0000000000 --- a/debug/tst-lfschk4.cc +++ /dev/null @@ -1,2 +0,0 @@ -#define _FILE_OFFSET_BITS 64 -#include "tst-chk1.c" diff --git a/debug/tst-lfschk5.cc b/debug/tst-lfschk5.cc deleted file mode 100644 index 95d4db1d32..0000000000 --- a/debug/tst-lfschk5.cc +++ /dev/null @@ -1,2 +0,0 @@ -#define _FILE_OFFSET_BITS 64 -#include "tst-chk2.c" diff --git a/debug/tst-lfschk6.cc b/debug/tst-lfschk6.cc deleted file mode 100644 index 50a1ae1258..0000000000 --- a/debug/tst-lfschk6.cc +++ /dev/null @@ -1,2 +0,0 @@ -#define _FILE_OFFSET_BITS 64 -#include "tst-chk3.c"
Rename all debug/tst-chk* tests to reflect the fortification level they're testing and any additional macros so that rules for them can be autogenerated. tst-fortify.c is the default test without fortification and is included in all auto-generated tests. This allows easier replication of the tests to check additional macros. The autogenerated tests get updated with every update to debug/Makefile. The change also expands the -lfs to include _FORTIFY_SOURCE=3. Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org> --- debug/Makefile | 109 +++++++++++++++++----------- debug/tst-chk2.c | 2 - debug/tst-chk3.c | 2 - debug/tst-chk4.cc | 1 - debug/tst-chk5.cc | 2 - debug/tst-chk6.cc | 2 - debug/tst-chk7.c | 2 - debug/tst-chk8.cc | 2 - debug/tst-fortify-c-default-1.c | 3 + debug/tst-fortify-c-default-2.c | 3 + debug/tst-fortify-c-default-3.c | 3 + debug/tst-fortify-c-lfs-1.c | 3 + debug/tst-fortify-c-lfs-2.c | 3 + debug/tst-fortify-c-lfs-3.c | 3 + debug/tst-fortify-cc-default-1.cc | 3 + debug/tst-fortify-cc-default-2.cc | 3 + debug/tst-fortify-cc-default-3.cc | 3 + debug/tst-fortify-cc-lfs-1.cc | 3 + debug/tst-fortify-cc-lfs-2.cc | 3 + debug/tst-fortify-cc-lfs-3.cc | 3 + debug/{tst-chk1.c => tst-fortify.c} | 0 debug/tst-lfschk1.c | 2 - debug/tst-lfschk2.c | 2 - debug/tst-lfschk3.c | 2 - debug/tst-lfschk4.cc | 2 - debug/tst-lfschk5.cc | 2 - debug/tst-lfschk6.cc | 2 - 27 files changed, 103 insertions(+), 67 deletions(-) delete mode 100644 debug/tst-chk2.c delete mode 100644 debug/tst-chk3.c delete mode 100644 debug/tst-chk4.cc delete mode 100644 debug/tst-chk5.cc delete mode 100644 debug/tst-chk6.cc delete mode 100644 debug/tst-chk7.c delete mode 100644 debug/tst-chk8.cc create mode 100644 debug/tst-fortify-c-default-1.c create mode 100644 debug/tst-fortify-c-default-2.c create mode 100644 debug/tst-fortify-c-default-3.c create mode 100644 debug/tst-fortify-c-lfs-1.c create mode 100644 debug/tst-fortify-c-lfs-2.c create mode 100644 debug/tst-fortify-c-lfs-3.c create mode 100644 debug/tst-fortify-cc-default-1.cc create mode 100644 debug/tst-fortify-cc-default-2.cc create mode 100644 debug/tst-fortify-cc-default-3.cc create mode 100644 debug/tst-fortify-cc-lfs-1.cc create mode 100644 debug/tst-fortify-cc-lfs-2.cc create mode 100644 debug/tst-fortify-cc-lfs-3.cc rename debug/{tst-chk1.c => tst-fortify.c} (100%) delete mode 100644 debug/tst-lfschk1.c delete mode 100644 debug/tst-lfschk2.c delete mode 100644 debug/tst-lfschk3.c delete mode 100644 debug/tst-lfschk4.cc delete mode 100644 debug/tst-lfschk5.cc delete mode 100644 debug/tst-lfschk6.cc