From patchwork Mon Jul 10 12:43:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Marc_Poulhi=C3=A8s?= X-Patchwork-Id: 117893 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9f45:0:b0:3ea:f831:8777 with SMTP id v5csp4998083vqx; Mon, 10 Jul 2023 05:47:24 -0700 (PDT) X-Google-Smtp-Source: APBJJlF/huirV+UOq7y5Zbj98RA2I6YSkSi5r6203H99t1wDKa98GffzbHPLYXFvGDiLqo5xB1LY X-Received: by 2002:a17:906:212:b0:974:7713:293f with SMTP id 18-20020a170906021200b009747713293fmr12781127ejd.41.1688993244792; Mon, 10 Jul 2023 05:47:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688993244; cv=none; d=google.com; s=arc-20160816; b=YOjk8tQZ5KuwI6fc92WslhWt04k5sRhjHHyNZsQML5vykIzy6xLWdam9LdfRwAC3A8 /q5Hqbw4miXbXs50ZzHl87BFXHMtX70Ttx18J350aVEHL2yImqCW8FSDigQLrEPKOMLY jwyswVEZ21+vUuJ7J3/4nd5mw5ep6luHPaChcU1JFVHBX+h0PRkS+Ybt/+0YzkiaKzvx uewlOpydt32P9RE3LQfCbMUStBf1uSIJbHYCFRi7asYJ58E9JriKN8dJmvMpMbd6VZs+ q60Kg0lhz8RdMGppWKWSKPMgfBMNPZzqJDu7+njaoq1A6OVMqOE3Y5NQ6RNOJna+mydN TrBA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:mime-version:message-id:date:subject:cc :to:dmarc-filter:delivered-to:dkim-signature:dkim-filter; bh=H6OnhC7YYYyFKJBYY6/GgJDlCIikk/OlQVBa8CiqotU=; fh=3I5BNKWyYtN8OAcHgwE9DP+SPMWTdvCyaas7z1IN2Vo=; b=LaziRjCmGk8Rmo3IFKbqxFehXW/OHD1hLrWjdxWxYMl0CMGC2lne2peJspG6cJHa5d YqGpav/YU1QetjN6DHUHhi1sY4RnKbFmiOgRCV5LZZX8BwsPg2rKSFw8mEq5jyFcK/Tp uRvQVlDfOlreZScNixTpm0HygApAIXkWafZQaRWMH2NfP6uEOdHXP9xrZG4YOdGVmog+ m/b4q3WIeeKMY+kNIhNAJA7Tk0R05bNJXNvMJ9aLivIuW+EwHJRtZz0COnuqZJiMlW98 AFqFYqBNAXcCrzsm8rMsLR8LQjNzdOxQdQNA4AmPrpGUG/QHbQxWc2I9wq9JJ/dzRUqm kfeg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=VT2DpOgH; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id f5-20020a17090624c500b00993a68a3afcsi8734164ejb.489.2023.07.10.05.47.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Jul 2023 05:47:24 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=VT2DpOgH; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C04503850AF3 for ; Mon, 10 Jul 2023 12:46:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C04503850AF3 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1688993184; bh=H6OnhC7YYYyFKJBYY6/GgJDlCIikk/OlQVBa8CiqotU=; h=To:Cc:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=VT2DpOgH/sVDlP0cAPNPejz2Zd77twU3TUYKWeEOy4xcVKF5xXBNnoex2zgQ8GGz+ y9MjeKrBMzJtzGQO9c5Zo4C3dzCVLgDnDZVsXWfxEKtrRnMb2gHkcrRsARCSlPOAQo JK8di7GWmxjUdmAGnM3vi523ERffZNnwOWAHwVCk= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [IPv6:2a00:1450:4864:20::333]) by sourceware.org (Postfix) with ESMTPS id 0847D3857C44 for ; Mon, 10 Jul 2023 12:43:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0847D3857C44 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-3fbd33a57ddso45454775e9.1 for ; Mon, 10 Jul 2023 05:43:52 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688993032; x=1691585032; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=H6OnhC7YYYyFKJBYY6/GgJDlCIikk/OlQVBa8CiqotU=; b=V+FHE3eOe0Wlou641AIaN5+lDHy/UHABK/xQ5tEbB0AnxUg2ya+iwQp5BvF1wtSuxt kdl1C0Vrtfv0W7hOyF4Y3Vyl1VxoEhjS9V9qOagHdwbzS8CjnCnGtdkxTcGkVkFtg/qg fXHcam3at80GVWlJ8EejcwKqYtZx4WnifAxWdov2wtpbVUtqZYsMEvt4bI+XFCHA20gs FxxGzr5UNqaVJIZc6/a7CEhVMn7qnmel4rMDX0dPeQKENTUFfuWSjKn9ojWgIlYAERLa VNCkiMc1s+isB8BDdi8O4klYtFXekJ+2m7AqbJRbJ4SZdLEfDardSQHUK14QCgPkXYWX 7W/g== X-Gm-Message-State: ABy/qLbuY9l0aqf/VZffJurG7G3lJrAVmZE2j2aK0l1kOOSLURnU679d l2233gJyaOVkHNMKYJei33yDf2h6GchkzetQIk6LbA== X-Received: by 2002:a7b:cd0d:0:b0:3fc:1fb:79d3 with SMTP id f13-20020a7bcd0d000000b003fc01fb79d3mr6530490wmj.15.1688993031684; Mon, 10 Jul 2023 05:43:51 -0700 (PDT) Received: from localhost.localdomain ([2001:861:3382:1a90:a197:d20:e621:dddf]) by smtp.gmail.com with ESMTPSA id f17-20020a7bc8d1000000b003fa968e9c27sm10282823wml.9.2023.07.10.05.43.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Jul 2023 05:43:51 -0700 (PDT) To: gcc-patches@gcc.gnu.org Cc: Alexandre Oliva Subject: [COMMITTED] ada: hardcfr: mark throw-expected functions Date: Mon, 10 Jul 2023 14:43:49 +0200 Message-Id: <20230710124349.2263234-1-poulhies@adacore.com> X-Mailer: git-send-email 2.40.0 MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: =?utf-8?q?Marc_Poulhi=C3=A8s_via_Gcc-patches?= From: =?utf-8?q?Marc_Poulhi=C3=A8s?= Reply-To: =?utf-8?q?Marc_Poulhi=C3=A8s?= Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771037780588249607 X-GMAIL-MSGID: 1771037780588249607 From: Alexandre Oliva Adjust documentation to reflect the introduction of -fhardcfr-check-noreturn-calls=no-xthrow. gcc/ada/ * doc/gnat_rm/security_hardening_features.rst (Control Flow Redundancy): Add -fhardcfr-check-noreturn-calls=no-xthrow. * gnat_rm.texi: Regenerate. Tested on x86_64-pc-linux-gnu, committed on master. --- .../doc/gnat_rm/security_hardening_features.rst | 17 +++++++++-------- gcc/ada/gnat_rm.texi | 17 +++++++++-------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/gcc/ada/doc/gnat_rm/security_hardening_features.rst b/gcc/ada/doc/gnat_rm/security_hardening_features.rst index 14328598c33..cf8c8a2493d 100644 --- a/gcc/ada/doc/gnat_rm/security_hardening_features.rst +++ b/gcc/ada/doc/gnat_rm/security_hardening_features.rst @@ -493,17 +493,18 @@ gets modified as follows: end; -Verification may also be performed before No_Return calls, whether -only nothrow ones, with -:switch:`-fhardcfr-check-noreturn-calls=nothrow`, or all of them, with -:switch:`-fhardcfr-check-noreturn-calls=always`. The default is -:switch:`-fhardcfr-check-noreturn-calls=never` for this feature, that -disables checking before No_Return calls. +Verification may also be performed before No_Return calls, whether all +of them, with :switch:`-fhardcfr-check-noreturn-calls=always`; all but +internal subprograms involved in exception-raising or -reraising, with +:switch:`-fhardcfr-check-noreturn-calls=no-xthrow` (default); only +nothrow ones, with :switch:`-fhardcfr-check-noreturn-calls=nothrow`; +or none, with :switch:`-fhardcfr-check-noreturn-calls=never`. When a No_Return call returns control to its caller through an exception, verification may have already been performed before the -call, if :switch:`-fhardcfr-check-noreturn-calls=always` is in effect. -The compiler arranges for already-checked No_Return calls without a +call, if :switch:`-fhardcfr-check-noreturn-calls=always` or +:switch:`-fhardcfr-check-noreturn-calls=no-xthrow` is in effect. The +compiler arranges for already-checked No_Return calls without a preexisting handler to bypass the implicitly-added cleanup handler and thus the redundant check, but a local exception or cleanup handler, if present, will modify the set of visited blocks, and checking will take diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi index 817ba0b9108..988bb779105 100644 --- a/gcc/ada/gnat_rm.texi +++ b/gcc/ada/gnat_rm.texi @@ -29634,17 +29634,18 @@ exception end; @end example -Verification may also be performed before No_Return calls, whether -only nothrow ones, with -@code{-fhardcfr-check-noreturn-calls=nothrow}, or all of them, with -@code{-fhardcfr-check-noreturn-calls=always}. The default is -@code{-fhardcfr-check-noreturn-calls=never} for this feature, that -disables checking before No_Return calls. +Verification may also be performed before No_Return calls, whether all +of them, with @code{-fhardcfr-check-noreturn-calls=always}; all but +internal subprograms involved in exception-raising or -reraising, with +@code{-fhardcfr-check-noreturn-calls=no-xthrow} (default); only +nothrow ones, with @code{-fhardcfr-check-noreturn-calls=nothrow}; +or none, with @code{-fhardcfr-check-noreturn-calls=never}. When a No_Return call returns control to its caller through an exception, verification may have already been performed before the -call, if @code{-fhardcfr-check-noreturn-calls=always} is in effect. -The compiler arranges for already-checked No_Return calls without a +call, if @code{-fhardcfr-check-noreturn-calls=always} or +@code{-fhardcfr-check-noreturn-calls=no-xthrow} is in effect. The +compiler arranges for already-checked No_Return calls without a preexisting handler to bypass the implicitly-added cleanup handler and thus the redundant check, but a local exception or cleanup handler, if present, will modify the set of visited blocks, and checking will take