From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dragonfly.birch.relay.mailchannels.net (dragonfly.birch.relay.mailchannels.net [23.83.209.51]) by sourceware.org (Postfix) with ESMTPS id EE0FF3857C42 for ; Wed, 20 Oct 2021 05:24:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org EE0FF3857C42 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 A1670922853; Wed, 20 Oct 2021 05:24:50 +0000 (UTC) Received: from pdx1-sub0-mail-a82.g.dreamhost.com (100-96-16-65.trex.outbound.svc.cluster.local [100.96.16.65]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 1BEE4922947; Wed, 20 Oct 2021 05:24:50 +0000 (UTC) X-Sender-Id: dreamhost|x-authsender|siddhesh@gotplt.org Received: from pdx1-sub0-mail-a82.g.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384) by 100.96.16.65 (trex/6.4.3); Wed, 20 Oct 2021 05:24:50 +0000 X-MC-Relay: Neutral X-MailChannels-SenderId: dreamhost|x-authsender|siddhesh@gotplt.org X-MailChannels-Auth-Id: dreamhost X-Whispering-Rock: 392f06e354af7997_1634707490382_1465167055 X-MC-Loop-Signature: 1634707490382:1005454961 X-MC-Ingress-Time: 1634707490382 Received: from pdx1-sub0-mail-a82.g.dreamhost.com (localhost [127.0.0.1]) by pdx1-sub0-mail-a82.g.dreamhost.com (Postfix) with ESMTP id C46E689D68; Tue, 19 Oct 2021 22:24:49 -0700 (PDT) Received: from rhbox.redhat.com (unknown [1.186.123.251]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: siddhesh@gotplt.org) by pdx1-sub0-mail-a82.g.dreamhost.com (Postfix) with ESMTPSA id 42FF689D5F; Tue, 19 Oct 2021 22:24:46 -0700 (PDT) X-DH-BACKEND: pdx1-sub0-mail-a82 From: Siddhesh Poyarekar To: libc-alpha@sourceware.org Subject: [PATCH v2 0/2] _FORTIFY_SOURCE=3 improvements Date: Wed, 20 Oct 2021 10:54:32 +0530 Message-Id: <20211020052434.1221167-1-siddhesh@sourceware.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211012161629.302696-1-siddhesh@sourceware.org> References: <20211012161629.302696-1-siddhesh@sourceware.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-3487.0 required=5.0 tests=BAYES_00, JMQ_SPF_NEUTRAL, KAM_DMARC_NONE, KAM_DMARC_STATUS, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, RCVD_IN_SBL, RCVD_IN_SORBS_WEB, SPF_HELO_NONE, SPF_NEUTRAL, TXREP autolearn=no 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-List-Received-Date: Wed, 20 Oct 2021 05:24:53 -0000 This patchset changes the layout of fortified functions to make them _FORTIFY_SOURCE=3D3 friendly and at the same time, continue working the same for _FORTIFY_SOURCE=3D2 and lower. At a high level it makes sure that no branches are emitted at compile time and only one of either the regular or _chk version of the function is called. The conditions are also reworked to make them more readable and foldable even in cases where the compiler doesn't know the exact values of the operation length and size, but can make decisions based on ranges of their values. The changeset also adds some _FORTIFY_SOURCE=3D3 testing coverage on compilers that are able to set that fortification level. Changes from v1: - Committed access attribute related patch - Updated macros to fold the sign check into a single macro Siddhesh Poyarekar (2): Make sure that the fortified function conditionals are constant debug: Add tests for _FORTIFY_SOURCE=3D3 debug/Makefile | 13 ++- debug/tst-chk1.c | 102 +++++++++++--------- debug/tst-chk7.c | 2 + debug/tst-chk8.cc | 2 + io/bits/poll2.h | 27 ++---- libio/bits/stdio2.h | 106 +++++++++----------- misc/sys/cdefs.h | 47 +++++++++ posix/bits/unistd.h | 174 ++++++++------------------------- socket/bits/socket2.h | 34 +++---- stdlib/bits/stdlib.h | 57 ++++------- wcsmbs/bits/wchar2.h | 219 ++++++++++++------------------------------ 11 files changed, 295 insertions(+), 488 deletions(-) create mode 100644 debug/tst-chk7.c create mode 100644 debug/tst-chk8.cc --=20 2.31.1