From patchwork Mon Jan 10 15:34:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Siddhesh Poyarekar X-Patchwork-Id: 49802 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 218DE3858428 for ; Mon, 10 Jan 2022 15:35:36 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 218DE3858428 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1641828936; bh=aKAMXiTeSvI5rQED5mqlxEDS2p5qnVfi7WlRjSJjqjI=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=WNvjWjERuE1s0435UK33ilmnnvw078s9u7ebf669Fo1RsMHnSageredPyFV13fIg7 aMNIRVIiaoWmLn/q2+/xuBcRsXPephvccrPGGsCyzykE8OPErFwG3dIz+ypD0oalaC /guf/PGA0nD7xQJl3ipHfybe2iTx1vWRlsGfWLX8= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from bumble.maple.relay.mailchannels.net (bumble.maple.relay.mailchannels.net [23.83.214.25]) by sourceware.org (Postfix) with ESMTPS id 6E7213858C60 for ; Mon, 10 Jan 2022 15:34:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6E7213858C60 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 5DC482A1725; Mon, 10 Jan 2022 15:34:30 +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 441D52A1449; Mon, 10 Jan 2022 15:34:29 +0000 (UTC) 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.115.218.6 (trex/6.4.3); Mon, 10 Jan 2022 15:34:30 +0000 X-MC-Relay: Neutral X-MailChannels-SenderId: dreamhost|x-authsender|siddhesh@gotplt.org X-MailChannels-Auth-Id: dreamhost X-Coil-Eight: 2e908ffe0a0d3ca4_1641828869680_2176796368 X-MC-Loop-Signature: 1641828869679:862317227 X-MC-Ingress-Time: 1641828869679 Received: from rhbox.redhat.com (unknown [1.186.121.232]) (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 4JXdD34rRfz1NP; Mon, 10 Jan 2022 07:34:27 -0800 (PST) To: libc-alpha@sourceware.org Subject: [PATCH v3 1/2] debug: Autogenerate _FORTIFY_SOURCE tests Date: Mon, 10 Jan 2022 21:04:16 +0530 Message-Id: <20220110153417.100143-2-siddhesh@sourceware.org> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220110153417.100143-1-siddhesh@sourceware.org> References: <20220105013946.2646963-1-siddhesh@sourceware.org> <20220110153417.100143-1-siddhesh@sourceware.org> MIME-Version: 1.0 X-Spam-Status: No, score=-3494.5 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_SBL, SPF_HELO_NONE, SPF_NEUTRAL, TXREP 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-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Siddhesh Poyarekar via Libc-alpha From: Siddhesh Poyarekar Reply-To: Siddhesh Poyarekar Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" 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 --- 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..ebc9c4e459 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-locals,$(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"