From patchwork Wed Jan 5 04:45:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Siddhesh Poyarekar X-Patchwork-Id: 49544 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 4B896385840A for ; Wed, 5 Jan 2022 04:46:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4B896385840A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1641357999; bh=LmhIzsy/mONfbeiDwpOdjX2peKCQO6fsRD4kAaeJ3eI=; 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=rQ87TuqTUUA34/axGzhlrnlFdI+gE9cVbCuf8NVtLIj9jlijxjTP+u1QvuDym73Wv jS5kfnkjL/7LaDbFUgxkT6DBQA5Zb3pm3J/oEQuyoTqPxkTbZi1/APNM5bw25jnjfj ha0JlhJPDksdssjcz9PYFveaUESFLtR6Q0IJCzqA= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from eastern.birch.relay.mailchannels.net (eastern.birch.relay.mailchannels.net [23.83.209.55]) by sourceware.org (Postfix) with ESMTPS id 9ACB73858C2C for ; Wed, 5 Jan 2022 04:45:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 9ACB73858C2C 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 8AFA682107C for ; Wed, 5 Jan 2022 04:45:37 +0000 (UTC) Received: from pdx1-sub0-mail-a305.dreamhost.com (unknown [127.0.0.6]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id F1CAA821050 for ; Wed, 5 Jan 2022 04:45:36 +0000 (UTC) X-Sender-Id: dreamhost|x-authsender|siddhesh@gotplt.org Received: from pdx1-sub0-mail-a305.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.100.11.97 (trex/6.4.3); Wed, 05 Jan 2022 04:45:37 +0000 X-MC-Relay: Neutral X-MailChannels-SenderId: dreamhost|x-authsender|siddhesh@gotplt.org X-MailChannels-Auth-Id: dreamhost X-Inform-Stupid: 160203643a7016a0_1641357937396_1113046486 X-MC-Loop-Signature: 1641357937396:218482749 X-MC-Ingress-Time: 1641357937396 Received: from rhbox.redhat.com (unknown [1.186.123.58]) (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-a305.dreamhost.com (Postfix) with ESMTPSA id 4JTH3f4Bf7z1X for ; Tue, 4 Jan 2022 20:45:34 -0800 (PST) To: libc-alpha@sourceware.org Subject: [PATCH v2 1/2] debug: Refactor and expand _FORTIFY_SOURCE tests Date: Wed, 5 Jan 2022 10:15:15 +0530 Message-Id: <20220105044516.905688-2-siddhesh@sourceware.org> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220105044516.905688-1-siddhesh@sourceware.org> References: <20220105013946.2646963-1-siddhesh@sourceware.org> <20220105044516.905688-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_MSPIKE_H3, RCVD_IN_MSPIKE_WL, 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-chk0* are without fortification, tst-chk1 for _FORTIFY_SOURCE=1 and so on. This allows easier replication of the tests to check additional macros. The change also expands the -lfs to include _FORTIFY_SOURCE=3. Signed-off-by: Siddhesh Poyarekar --- debug/Makefile | 75 +++++++++----------- debug/{tst-lfschk1.c => tst-chk-0-cc-lfs.cc} | 2 +- debug/tst-chk-0-cc.cc | 1 + debug/{tst-lfschk2.c => tst-chk-0-lfs.c} | 2 +- debug/{tst-chk1.c => tst-chk-0.c} | 0 debug/{tst-lfschk3.c => tst-chk-1-cc-lfs.cc} | 2 +- debug/{tst-chk2.c => tst-chk-1-cc.cc} | 2 +- debug/{tst-lfschk4.cc => tst-chk-1-lfs.c} | 2 +- debug/{tst-chk5.cc => tst-chk-1.c} | 2 +- debug/tst-chk-2-cc-lfs.cc | 2 + debug/{tst-chk6.cc => tst-chk-2-cc.cc} | 2 +- debug/tst-chk-2-lfs.c | 2 + debug/{tst-chk3.c => tst-chk-2.c} | 2 +- debug/tst-chk-3-cc-lfs.cc | 2 + debug/{tst-chk7.c => tst-chk-3-cc.cc} | 2 +- debug/tst-chk-3-lfs.c | 2 + debug/{tst-chk8.cc => tst-chk-3.c} | 2 +- debug/tst-chk4.cc | 1 - debug/tst-lfschk5.cc | 2 - debug/tst-lfschk6.cc | 2 - 20 files changed, 52 insertions(+), 57 deletions(-) rename debug/{tst-lfschk1.c => tst-chk-0-cc-lfs.cc} (55%) create mode 100644 debug/tst-chk-0-cc.cc rename debug/{tst-lfschk2.c => tst-chk-0-lfs.c} (55%) rename debug/{tst-chk1.c => tst-chk-0.c} (100%) rename debug/{tst-lfschk3.c => tst-chk-1-cc-lfs.cc} (55%) rename debug/{tst-chk2.c => tst-chk-1-cc.cc} (53%) rename debug/{tst-lfschk4.cc => tst-chk-1-lfs.c} (55%) rename debug/{tst-chk5.cc => tst-chk-1.c} (53%) create mode 100644 debug/tst-chk-2-cc-lfs.cc rename debug/{tst-chk6.cc => tst-chk-2-cc.cc} (53%) create mode 100644 debug/tst-chk-2-lfs.c rename debug/{tst-chk3.c => tst-chk-2.c} (53%) create mode 100644 debug/tst-chk-3-cc-lfs.cc rename debug/{tst-chk7.c => tst-chk-3-cc.cc} (53%) create mode 100644 debug/tst-chk-3-lfs.c rename debug/{tst-chk8.cc => tst-chk-3.c} (53%) delete mode 100644 debug/tst-chk4.cc delete mode 100644 debug/tst-lfschk5.cc delete mode 100644 debug/tst-lfschk6.cc diff --git a/debug/Makefile b/debug/Makefile index 9c2ce61a86..9aa27eb00c 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,31 @@ 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. +tests-chk = $(addprefix tst-chk-, 0 1 2 3) +tests-chk-cc = $(addsuffix -cc, $(tests-chk)) +tests-chk-lfs = $(addsuffix -lfs, $(tests-chk)) +tests-chk-cc-lfs = $(addsuffix -lfs, $(tests-chk-cc)) + # 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 disable-warnings +CFLAGS-$(1).$(2) += -Wno-format -Wno-deprecated-declarations -Wno-error +endef + +$(foreach t,$(tests-chk) $(tests-chk-lfs), \ + $(eval $(call disable-warnings,$(t),c))) + +$(foreach t,$(tests-chk-cc) $(tests-chk-cc-lfs), \ + $(eval $(call disable-warnings,$(t),cc))) + +define link-cc +LDLIBS-$(1) = -lstdc++ +endef +$(foreach t,$(tests-chk-cc) $(tests-chk-cc-lfs), $(eval $(call link-cc,$(t)))) # backtrace_symbols only works if we link with -rdynamic. backtrace # requires unwind tables on most architectures. @@ -152,19 +152,18 @@ 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-chk) $(tests-chk-cc) $(tests-chk-lfs) $(tests-chk-cc-lfs) 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-chk-cc) $(tests-chk-cc-lfs) endif extra-libs = libSegFault libpcprofile @@ -191,20 +190,12 @@ 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-chk) $(tests-chk-cc) $(tests-chk-lfs) $(tests-chk-cc-lfs), \ + $(eval $(call link-cc,$(t)))) endif sLIBdir := $(shell echo $(slibdir) | sed 's,lib\(\|64\)$$,\\\\$$LIB,') diff --git a/debug/tst-lfschk1.c b/debug/tst-chk-0-cc-lfs.cc similarity index 55% rename from debug/tst-lfschk1.c rename to debug/tst-chk-0-cc-lfs.cc index f3e6d47d5e..db699b2391 100644 --- a/debug/tst-lfschk1.c +++ b/debug/tst-chk-0-cc-lfs.cc @@ -1,2 +1,2 @@ #define _FILE_OFFSET_BITS 64 -#include "tst-chk1.c" +#include "tst-chk-0.c" diff --git a/debug/tst-chk-0-cc.cc b/debug/tst-chk-0-cc.cc new file mode 100644 index 0000000000..be76fc69d4 --- /dev/null +++ b/debug/tst-chk-0-cc.cc @@ -0,0 +1 @@ +#include "tst-chk-0.c" diff --git a/debug/tst-lfschk2.c b/debug/tst-chk-0-lfs.c similarity index 55% rename from debug/tst-lfschk2.c rename to debug/tst-chk-0-lfs.c index 95d4db1d32..db699b2391 100644 --- a/debug/tst-lfschk2.c +++ b/debug/tst-chk-0-lfs.c @@ -1,2 +1,2 @@ #define _FILE_OFFSET_BITS 64 -#include "tst-chk2.c" +#include "tst-chk-0.c" diff --git a/debug/tst-chk1.c b/debug/tst-chk-0.c similarity index 100% rename from debug/tst-chk1.c rename to debug/tst-chk-0.c diff --git a/debug/tst-lfschk3.c b/debug/tst-chk-1-cc-lfs.cc similarity index 55% rename from debug/tst-lfschk3.c rename to debug/tst-chk-1-cc-lfs.cc index 50a1ae1258..0d67643e9e 100644 --- a/debug/tst-lfschk3.c +++ b/debug/tst-chk-1-cc-lfs.cc @@ -1,2 +1,2 @@ #define _FILE_OFFSET_BITS 64 -#include "tst-chk3.c" +#include "tst-chk-1.c" diff --git a/debug/tst-chk2.c b/debug/tst-chk-1-cc.cc similarity index 53% rename from debug/tst-chk2.c rename to debug/tst-chk-1-cc.cc index be37ce2d22..945c1f8d5b 100644 --- a/debug/tst-chk2.c +++ b/debug/tst-chk-1-cc.cc @@ -1,2 +1,2 @@ #define _FORTIFY_SOURCE 1 -#include "tst-chk1.c" +#include "tst-chk-0.c" diff --git a/debug/tst-lfschk4.cc b/debug/tst-chk-1-lfs.c similarity index 55% rename from debug/tst-lfschk4.cc rename to debug/tst-chk-1-lfs.c index f3e6d47d5e..0d67643e9e 100644 --- a/debug/tst-lfschk4.cc +++ b/debug/tst-chk-1-lfs.c @@ -1,2 +1,2 @@ #define _FILE_OFFSET_BITS 64 -#include "tst-chk1.c" +#include "tst-chk-1.c" diff --git a/debug/tst-chk5.cc b/debug/tst-chk-1.c similarity index 53% rename from debug/tst-chk5.cc rename to debug/tst-chk-1.c index be37ce2d22..945c1f8d5b 100644 --- a/debug/tst-chk5.cc +++ b/debug/tst-chk-1.c @@ -1,2 +1,2 @@ #define _FORTIFY_SOURCE 1 -#include "tst-chk1.c" +#include "tst-chk-0.c" diff --git a/debug/tst-chk-2-cc-lfs.cc b/debug/tst-chk-2-cc-lfs.cc new file mode 100644 index 0000000000..97c83def5c --- /dev/null +++ b/debug/tst-chk-2-cc-lfs.cc @@ -0,0 +1,2 @@ +#define _FILE_OFFSET_BITS 64 +#include "tst-chk-2.c" diff --git a/debug/tst-chk6.cc b/debug/tst-chk-2-cc.cc similarity index 53% rename from debug/tst-chk6.cc rename to debug/tst-chk-2-cc.cc index 38b8e4fb36..f178340bbd 100644 --- a/debug/tst-chk6.cc +++ b/debug/tst-chk-2-cc.cc @@ -1,2 +1,2 @@ #define _FORTIFY_SOURCE 2 -#include "tst-chk1.c" +#include "tst-chk-0.c" diff --git a/debug/tst-chk-2-lfs.c b/debug/tst-chk-2-lfs.c new file mode 100644 index 0000000000..97c83def5c --- /dev/null +++ b/debug/tst-chk-2-lfs.c @@ -0,0 +1,2 @@ +#define _FILE_OFFSET_BITS 64 +#include "tst-chk-2.c" diff --git a/debug/tst-chk3.c b/debug/tst-chk-2.c similarity index 53% rename from debug/tst-chk3.c rename to debug/tst-chk-2.c index 38b8e4fb36..f178340bbd 100644 --- a/debug/tst-chk3.c +++ b/debug/tst-chk-2.c @@ -1,2 +1,2 @@ #define _FORTIFY_SOURCE 2 -#include "tst-chk1.c" +#include "tst-chk-0.c" diff --git a/debug/tst-chk-3-cc-lfs.cc b/debug/tst-chk-3-cc-lfs.cc new file mode 100644 index 0000000000..d5d8c28bc7 --- /dev/null +++ b/debug/tst-chk-3-cc-lfs.cc @@ -0,0 +1,2 @@ +#define _FILE_OFFSET_BITS 64 +#include "tst-chk-3.c" diff --git a/debug/tst-chk7.c b/debug/tst-chk-3-cc.cc similarity index 53% rename from debug/tst-chk7.c rename to debug/tst-chk-3-cc.cc index 2a7b323812..c1ddac1261 100644 --- a/debug/tst-chk7.c +++ b/debug/tst-chk-3-cc.cc @@ -1,2 +1,2 @@ #define _FORTIFY_SOURCE 3 -#include "tst-chk1.c" +#include "tst-chk-0.c" diff --git a/debug/tst-chk-3-lfs.c b/debug/tst-chk-3-lfs.c new file mode 100644 index 0000000000..d5d8c28bc7 --- /dev/null +++ b/debug/tst-chk-3-lfs.c @@ -0,0 +1,2 @@ +#define _FILE_OFFSET_BITS 64 +#include "tst-chk-3.c" diff --git a/debug/tst-chk8.cc b/debug/tst-chk-3.c similarity index 53% rename from debug/tst-chk8.cc rename to debug/tst-chk-3.c index 2a7b323812..c1ddac1261 100644 --- a/debug/tst-chk8.cc +++ b/debug/tst-chk-3.c @@ -1,2 +1,2 @@ #define _FORTIFY_SOURCE 3 -#include "tst-chk1.c" +#include "tst-chk-0.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-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"