From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from toucan.birch.relay.mailchannels.net (toucan.birch.relay.mailchannels.net [23.83.209.254]) by sourceware.org (Postfix) with ESMTPS id E145D3858C3A for ; Fri, 11 Mar 2022 15:13:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E145D3858C3A X-Sender-Id: dreamhost|x-authsender|siddhesh@gotplt.org Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id B353D621FC2; Fri, 11 Mar 2022 15:13:04 +0000 (UTC) Received: from pdx1-sub0-mail-a304.dreamhost.com (unknown [127.0.0.6]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 20137621504; Fri, 11 Mar 2022 15:12:54 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1647011584; a=rsa-sha256; cv=none; b=WGv/9VAtV52Z36bY0lYH5p0Gz4FpPhnMd+iQdWARjdBDR18P3eoRzKg3PjoSnmrYKdCjvr oZVEom8LwPNGJM3eU26+u/yy3qdFKpqZPdT80NWCOHv6CjaHV0KUeRhYDDZSlGsGJHpwwl J7Un0DvO8MU0k/8jnpign7Bc8M2kO4bfd2Pu5CgqHeEFzyPpMH96+nJyR5Hq1k1xt565Q3 NZQfOms6i8ODtjrz1XETdhbIXXwCvhhNOolCp32LimiFuUil1v/I3G+3ssy7el7pujUFBK /UQYrS7owb8oxTP/GBP5gKoYSxgYlkK2yDCQw4g/g3fqMBlWof5Wts3EnznMZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1647011584; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=409JnUD+HuMWCkHYGz9W6Dr21HI1JfbibIoPaGVcamY=; b=Ay5a1QGYQiybMqTnfO+g/BMVidNExJzkgnoWWnkY0JjVz/hj1UkTCIK2jps8a0FIMbCtFp QFjfOXpRywNH1MoxocVW8fcxFMjZ6OVFBj8YxI5bgcVb22LaW9WoyOtFCJdITsImTermCX +7HXIjEFC9zrRJ97ETtE2jbN3/zdmIZhHC1oc7LmkXOjOvXl0fzdi0zSJs8c6sQAuN+aOl LysqpVHT+AggKBnYUVi3+dCjmPOMuFgejDIpOaQEvUY1N6kqrthWz6AkmUB0p7QjpwP+gx q2SRVZbSUikpMMze6seGDHGlBO6elS+ES4EWRHEF6H6S/zXIEHuiejewFnNZTg== ARC-Authentication-Results: i=1; rspamd-c9cb649d9-v7bqc; auth=pass smtp.auth=dreamhost smtp.mailfrom=siddhesh@sourceware.org X-Sender-Id: dreamhost|x-authsender|siddhesh@gotplt.org Received: from pdx1-sub0-mail-a304.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.112.144.9 (trex/6.5.3); Fri, 11 Mar 2022 15:13:04 +0000 X-MC-Relay: Bad X-MailChannels-SenderId: dreamhost|x-authsender|siddhesh@gotplt.org X-MailChannels-Auth-Id: dreamhost X-Illustrious-Exultant: 5d2368282dc75b5e_1647011584580_345728741 X-MC-Loop-Signature: 1647011584579:961138145 X-MC-Ingress-Time: 1647011584579 Received: from rhbox.redhat.com (unknown [1.186.122.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: siddhesh@gotplt.org) by pdx1-sub0-mail-a304.dreamhost.com (Postfix) with ESMTPSA id 4KFTv65dCYz1PW; Fri, 11 Mar 2022 07:12:34 -0800 (PST) From: Siddhesh Poyarekar To: libc-stable@sourceware.org Cc: carlos@redhat.com, fweimer@redhat.com, Adhemerval Zanella Subject: [committed 2.34 7/8] debug: Autogenerate _FORTIFY_SOURCE tests Date: Fri, 11 Mar 2022 20:42:02 +0530 Message-Id: <20220311151203.3585163-8-siddhesh@sourceware.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220311151203.3585163-1-siddhesh@sourceware.org> References: <20220311151203.3585163-1-siddhesh@sourceware.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-3494.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_NONE, KAM_DMARC_STATUS, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, RCVD_IN_SBL, SPF_HELO_NONE, SPF_NEUTRAL, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-stable@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-stable mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 Mar 2022 15:13:09 -0000 Rename debug/tst-chk1.c to debug/tst-fortify.c and add make hackery to autogenerate tests with different macros enabled to build and run the same test with different configurations as well as different fortification levels. The change also ends up expanding the -lfs tests to include _FORTIFY_SOURCE=3. Signed-off-by: Siddhesh Poyarekar Reviewed-by: Adhemerval Zanella (cherry picked from commit db27f1251b008280a29d540b4f8ab2a38a0d80af) --- Makerules | 6 ++ debug/Makefile | 111 +++++++++++++++++----------- 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-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 - 16 files changed, 74 insertions(+), 68 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 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/Makerules b/Makerules index 596fa68376..7fbe85719a 100644 --- a/Makerules +++ b/Makerules @@ -424,6 +424,12 @@ $(objpfx)%$o: $(objpfx)%.c $(before-compile); $$(compile-command.c) endef object-suffixes-left := $(all-object-suffixes) include $(o-iterator) + +define o-iterator-doit +$(objpfx)%$o: $(objpfx)%.cc $(before-compile); $$(compile-command.cc) +endef +object-suffixes-left := $(all-object-suffixes) +include $(o-iterator) endif # Generate .dT files as we compile. diff --git a/debug/Makefile b/debug/Makefile index bc37e466ee..acc1b8f6ad 100644 --- a/debug/Makefile +++ b/debug/Makefile @@ -1,4 +1,5 @@ -# Copyright (C) 1998-2021 Free Software Foundation, Inc. +# 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))) +$(objpfx)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 = libSegFault libpcprofile @@ -191,20 +226,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-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" -- 2.35.1