From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 550F8386C58A for ; Wed, 22 Jun 2022 04:05:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 550F8386C58A Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-59-53UxvIQkOhCQw12RjcNacw-1; Wed, 22 Jun 2022 00:05:02 -0400 X-MC-Unique: 53UxvIQkOhCQw12RjcNacw-1 Received: by mail-qk1-f198.google.com with SMTP id f2-20020a05620a408200b006ab94bb9d09so14869046qko.8 for ; Tue, 21 Jun 2022 21:05:02 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:from:to:cc:references:in-reply-to; bh=ZjXWS57qI4YmWzy9vLmOXk+w0zVhKureKikviJ64C7w=; b=knUkLDLY2GmRCQPBO2RztEgJmbZ4JWrKcVK4AS95s4qGef/7H40S/7kK7XOBFqEsys A9QDyXGUGovuZL66MhL86wLGPO6hoEpWITo5KR4f31tgDUoQOJkBXLV7o872280i228j enoeuuiAz5F/VG6ZRiH0jjEtaM304e1HvKoKp4jxpUk8+rFZhVUeS4nytjtDBE6A4k5B nNhnCy2AQJ0hV0z+NCXD1OWXqLI+tIrrovjFHd6ZbpbLGXD6Fj2mS48PA/OEhU605V8s ZgOewBuYqYc7l2nXWcbODcRmDuyAWIPLmhiiKKBVnoxyXYqV4uko1Z2MSyVjNBiKXpgz tzIg== X-Gm-Message-State: AJIora8okwxXIcvPG/72ggbEmED3TB3L4l+yKri/E/M28JK/nYmKbGGq ysG6hRu/6gAN5lejY3NFNBUrPy5AbIsEwITCO6Gdp/Ur1nSDP1+X2qPWpW71zRF4PK5ggzd9eRD 9l1evxjJX2ns0Eu3IuA== X-Received: by 2002:ac8:5850:0:b0:305:1c4a:60bd with SMTP id h16-20020ac85850000000b003051c4a60bdmr1304405qth.515.1655870701599; Tue, 21 Jun 2022 21:05:01 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vN51wznFdtz6uUimw+v5PqWrRH02B3jUoT4053INvQek6FgfiG8L7x1mFoHDG0qn+cEDcWwA== X-Received: by 2002:ac8:5850:0:b0:305:1c4a:60bd with SMTP id h16-20020ac85850000000b003051c4a60bdmr1304391qth.515.1655870701284; Tue, 21 Jun 2022 21:05:01 -0700 (PDT) Received: from [192.168.1.100] (130-44-159-43.s15913.c3-0.arl-cbr1.sbo-arl.ma.cable.rcncustomer.com. [130.44.159.43]) by smtp.gmail.com with ESMTPSA id bj30-20020a05620a191e00b006a758ce2ae1sm15526760qkb.104.2022.06.21.21.05.00 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 21 Jun 2022 21:05:00 -0700 (PDT) Message-ID: Date: Wed, 22 Jun 2022 00:04:59 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.10.0 Subject: Re: [PATCH RFA] ubsan: do return check with -fsanitize=unreachable From: Jason Merrill To: Jakub Jelinek Cc: gcc-patches@gcc.gnu.org References: <20220617212002.3747825-1-jason@redhat.com> In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="------------XglPLrlDUXo1EVBAbXlSsZO8" Content-Language: en-US X-Spam-Status: No, score=-13.0 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, NICE_REPLY_A, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NONE, 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-List-Received-Date: Wed, 22 Jun 2022 04:05:17 -0000 This is a multi-part message in MIME format. --------------XglPLrlDUXo1EVBAbXlSsZO8 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 6/20/22 16:16, Jason Merrill wrote: > On 6/20/22 07:05, Jakub Jelinek wrote: >> On Fri, Jun 17, 2022 at 05:20:02PM -0400, Jason Merrill wrote: >>> Related to PR104642, the current situation where we get less return >>> checking >>> with just -fsanitize=unreachable than no sanitize flags seems >>> undesirable; I >>> propose that we do return checking when -fsanitize=unreachable. >> >> __builtin_unreachable itself (unless turned into trap or >> __ubsan_handle_builtin_unreachable) is not any kind of return >> checking, it >> is just an optimization. > > Yes, but I'm talking about "when -fsanitize=unreachable". > >>> Looks like clang just traps on missing return if not >>> -fsanitize=return, but >>> the approach in this patch seems more helpful to me if we're already >>> sanitizing other should-be-unreachable code. >>> >>> I'm assuming that the difference in treatment of SANITIZE_UNREACHABLE >>> and >>> SANITIZE_RETURN with regard to loop optimization is deliberate. >> >> return and unreachable are separate sanitizers and such silent one way >> implication can have quite unexpected consequences, especially with >> -fsanitize-trap=. >> Say with -fsanitize=unreachable -fsanitize-trap=unreachable, both current >> trunk and clang will link without -lubsan, because the only enabled UBSan >> sanitizers use __builtin_trap () which doesn't need library. >> With -fsanitize=unreachable silently meaning >> -fsanitize=unreachable,return >> the above would link in -lubsan, because while SANITIZE_UNREACHABLE uses >> __builtin_trap, SANITIZE_RETURN doesn't. >> Similarly, one has no_sanitize attribute, one could in certain function >> __attribute__((no_sanitize ("unreachable"))) and because on the command >> line using -fsanitize=unreachable assume other sanitizers aren't enabled, >> but the silent addition of return sanitizer would break that. > > Ah, true.  How about this approach instead? Or, this approach relies on the PR104642 patch, and just fixes the line number issue. This is less clear about the problem than using the return ubsan library function, but avoids using one entry point to implement the other sanitizer, if that's important. --------------XglPLrlDUXo1EVBAbXlSsZO8 Content-Type: text/x-patch; charset=UTF-8; name="0001-ubsan-do-return-check-with-fsanitize-unreachable.patch" Content-Disposition: attachment; filename*0="0001-ubsan-do-return-check-with-fsanitize-unreachable.patch" Content-Transfer-Encoding: base64 RnJvbSBkYTI2OGM0YzFmOWFjMGE3ZWFhNGQ0Mjg3OTFjM2VkNTFjZjA5OTRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXNvbiBNZXJyaWxsIDxqYXNvbkByZWRoYXQuY29tPgpEYXRl OiBXZWQsIDE1IEp1biAyMDIyIDE1OjQ1OjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gdWJzYW46 IGRvIHJldHVybiBjaGVjayB3aXRoIC1mc2FuaXRpemU9dW5yZWFjaGFibGUKVG86IGdjYy1wYXRj aGVzQGdjYy5nbnUub3JnCgpUaGUgY3VycmVudCBzaXR1YXRpb24gd2hlcmUgd2UgZ2V0IGxlc3Mg cmV0dXJuIGNoZWNraW5nIHdpdGgganVzdAotZnNhbml0aXplPXVucmVhY2hhYmxlIHRoYW4gbm8g c2FuaXRpemUgZmxhZ3Mgc2VlbXMgdW5kZXNpcmFibGU7IHdlIHdvdWxkCmdldCBjaGVja2luZyB0 aGVyZSBleGNlcHQgdGhhdCB3ZSBleHBsaWNpdGx5IGF2b2lkIGVtaXR0aW5nIGEKX19idWlsdGlu X3VucmVhY2hhYmxlLiAgVGhlIGRvY3VtZW50ZWQgcmVhc29uIGlzIHRoYXQgdGhlIHVzZSBvZgpC VUlMVElOX0xPQ0FUSU9OIG1ha2VzIHRoZSBtZXNzYWdlIGNvbmZ1c2luZywgc28gbGV0J3MgZml4 IHRoYXQuCgpUaGUgIW9wdGltaXplIGNoZWNrIHNlZW1zIHVubmVkZWQgc2luY2UgdGhlIFBSMTA0 NjQyIHBhdGNoLgoKZ2NjL2NwL0NoYW5nZUxvZzoKCgkqIGNwLWdpbXBsaWZ5LmNjIChjcF9tYXli ZV9pbnN0cnVtZW50X3JldHVybik6IFBhc3MgdGhlIHJlYWwKCWxvY2F0aW9uIHRvIHRoZSB1YnNh biB1bnJlYWNoYWJsZSBmdW5jdGlvbi4KCmdjYy9DaGFuZ2VMb2c6CgoJKiB0cmVlLWNmZy5jYyAo cGFzc193YXJuX2Z1bmN0aW9uX3JldHVybjo6ZXhlY3V0ZSk6IENoZWNrCglmb3IgdWJzYW4gdW5y ZWFjaGFibGUuCgpnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoKCgkqIGcrKy5kZy91YnNhbi9yZXR1 cm4tOGMuQzogTmV3IHRlc3QuCi0tLQogZ2NjL2NwL2NwLWdpbXBsaWZ5LmNjICAgICAgICAgICAg ICAgICAgfCAxOSArKysrKystLS0tLS0tLS0tLS0tCiBnY2MvdGVzdHN1aXRlL2crKy5kZy91YnNh bi9yZXR1cm4tOGMuQyB8IDE2ICsrKysrKysrKysrKysrKysKIGdjYy90cmVlLWNmZy5jYyAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDMgKysrCiAzIGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlv bnMoKyksIDEzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUv ZysrLmRnL3Vic2FuL3JldHVybi04Yy5DCgpkaWZmIC0tZ2l0IGEvZ2NjL2NwL2NwLWdpbXBsaWZ5 LmNjIGIvZ2NjL2NwL2NwLWdpbXBsaWZ5LmNjCmluZGV4IGMwNWJlODMzMzU3Li5mY2VhOWY4ZDBl MCAxMDA2NDQKLS0tIGEvZ2NjL2NwL2NwLWdpbXBsaWZ5LmNjCisrKyBiL2djYy9jcC9jcC1naW1w bGlmeS5jYwpAQCAtMTgwNiwxOCArMTgwNiw2IEBAIGNwX21heWJlX2luc3RydW1lbnRfcmV0dXJu ICh0cmVlIGZuZGVjbCkKICAgICAgIHx8ICF0YXJnZXRtLndhcm5fZnVuY19yZXR1cm4gKGZuZGVj bCkpCiAgICAgcmV0dXJuOwogCi0gIGlmICghc2FuaXRpemVfZmxhZ3NfcCAoU0FOSVRJWkVfUkVU VVJOLCBmbmRlY2wpCi0gICAgICAvKiBEb24ndCBhZGQgX19idWlsdGluX3VucmVhY2hhYmxlICgp IGlmIG5vdCBvcHRpbWl6aW5nLCBpdCB3aWxsIG5vdAotCSBpbXByb3ZlIGFueSBvcHRpbWl6YXRp b25zIGluIHRoYXQgY2FzZSwganVzdCBicmVhayBVQiBjb2RlLgotCSBEb24ndCBhZGQgaXQgaWYg LWZzYW5pdGl6ZT11bnJlYWNoYWJsZSAtZm5vLXNhbml0aXplPXJldHVybiBlaXRoZXIsCi0JIFVC U2FuIGNvdmVycyB0aGlzIHdpdGggdWJzYW5faW5zdHJ1bWVudF9yZXR1cm4gYWJvdmUgd2hlcmUg c3VmZmljaWVudAotCSBpbmZvcm1hdGlvbiBpcyBwcm92aWRlZCwgd2hpbGUgdGhlIF9fYnVpbHRp bl91bnJlYWNoYWJsZSAoKSBiZWxvdwotCSBpZiByZXR1cm4gc2FuaXRpemF0aW9uIGlzIGRpc2Fi bGVkIHdpbGwganVzdCByZXN1bHQgaW4gaGFyZCB0bwotCSB1bmRlcnN0YW5kIHJ1bnRpbWUgZXJy b3Igd2l0aG91dCBsb2NhdGlvbi4gICovCi0gICAgICAmJiAoKCFvcHRpbWl6ZSAmJiAhZmxhZ191 bnJlYWNoYWJsZV90cmFwcykKLQkgIHx8IHNhbml0aXplX2ZsYWdzX3AgKFNBTklUSVpFX1VOUkVB Q0hBQkxFLCBmbmRlY2wpKSkKLSAgICByZXR1cm47Ci0KICAgdHJlZSB0ID0gREVDTF9TQVZFRF9U UkVFIChmbmRlY2wpOwogICB3aGlsZSAodCkKICAgICB7CkBAIC0xODY0LDcgKzE4NTIsMTIgQEAg Y3BfbWF5YmVfaW5zdHJ1bWVudF9yZXR1cm4gKHRyZWUgZm5kZWNsKQogICBpZiAoc2FuaXRpemVf ZmxhZ3NfcCAoU0FOSVRJWkVfUkVUVVJOLCBmbmRlY2wpKQogICAgIHQgPSB1YnNhbl9pbnN0cnVt ZW50X3JldHVybiAobG9jKTsKICAgZWxzZQotICAgIHQgPSBidWlsZF9idWlsdGluX3VucmVhY2hh YmxlIChCVUlMVElOU19MT0NBVElPTik7CisgICAgeworICAgICAgLyogUGFzcyB0aGUgcmVhbCBs b2NhdGlvbiB0byB0aGUgdWJzYW4gZnVuY3Rpb24uICAqLworICAgICAgdCA9IGJ1aWxkX2J1aWx0 aW5fdW5yZWFjaGFibGUgKGxvYyk7CisgICAgICAvKiBCdXQgc2V0IEJVSUxUSU5TX0xPQ0FUSU9O IGZvciBwYXNzX3dhcm5fZnVuY3Rpb25fcmV0dXJuLiAgKi8KKyAgICAgIFNFVF9FWFBSX0xPQ0FU SU9OICh0LCBCVUlMVElOU19MT0NBVElPTik7CisgICAgfQogCiAgIGFwcGVuZF90b19zdGF0ZW1l bnRfbGlzdCAodCwgcCk7CiB9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy91YnNh bi9yZXR1cm4tOGMuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL3Vic2FuL3JldHVybi04Yy5DCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44MjhiMjRlZmEzMQotLS0gL2Rl di9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL3Vic2FuL3JldHVybi04Yy5DCkBAIC0w LDAgKzEsMTYgQEAKKy8vIFBSIGMrKy8xMDQ2NDIKKworLy8gLWZzYW5pdGl6ZT11bnJlYWNoYWJs ZSBzaG91bGQgY2F0Y2ggbWlzc2luZyByZXR1cm4gZXZlbiB3aXRob3V0CisvLyAtZnNhbml0aXpl PXJldHVybi4KKworLy8geyBkZy1kbyBydW4gfQorLy8geyBkZy1zaG91bGRmYWlsIHsgKi0qLSog fSB9CisvLyB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLU8gLWZzYW5pdGl6ZT11bnJlYWNoYWJs ZSIgfQorCitib29sIGI7CisKK2ludCBmKCkgeworICBpZiAoYikgcmV0dXJuIDQyOworfSAvLyB7 IGRnLXdhcm5pbmcgIi1XcmV0dXJuLXR5cGUiIH0KKworaW50IG1haW4oKSB7IGYoKTsgfQpkaWZm IC0tZ2l0IGEvZ2NjL3RyZWUtY2ZnLmNjIGIvZ2NjL3RyZWUtY2ZnLmNjCmluZGV4IDczNGZkZGRi Zjk3Li42NDdkOThmMDA3OSAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUtY2ZnLmNjCisrKyBiL2djYy90 cmVlLWNmZy5jYwpAQCAtOTU1MSwxMCArOTU1MSwxMyBAQCBwYXNzX3dhcm5fZnVuY3Rpb25fcmV0 dXJuOjpleGVjdXRlIChmdW5jdGlvbiAqZnVuKQogCSAgICAgIGdpbXBsZSAqbGFzdCA9IGxhc3Rf c3RtdCAoYmIpOwogCSAgICAgIGNvbnN0IGVudW0gYnVpbHRfaW5fZnVuY3Rpb24gdWJzYW5fbWlz c2luZ19yZXQKIAkJPSBCVUlMVF9JTl9VQlNBTl9IQU5ETEVfTUlTU0lOR19SRVRVUk47CisJICAg ICAgY29uc3QgZW51bSBidWlsdF9pbl9mdW5jdGlvbiB1YnNhbl91bnJlYWNoYWJsZQorCQk9IEJV SUxUX0lOX1VCU0FOX0hBTkRMRV9CVUlMVElOX1VOUkVBQ0hBQkxFOwogCSAgICAgIGlmIChsYXN0 CiAJCSAgJiYgKChMT0NBVElPTl9MT0NVUyAoZ2ltcGxlX2xvY2F0aW9uIChsYXN0KSkKIAkJICAg ICAgID09IEJVSUxUSU5TX0xPQ0FUSU9OCiAJCSAgICAgICAmJiAoZ2ltcGxlX2NhbGxfYnVpbHRp bl9wIChsYXN0LCBCVUlMVF9JTl9VTlJFQUNIQUJMRSkKKwkJCSAgIHx8IGdpbXBsZV9jYWxsX2J1 aWx0aW5fcCAobGFzdCwgdWJzYW5fdW5yZWFjaGFibGUpCiAJCQkgICB8fCBnaW1wbGVfY2FsbF9i dWlsdGluX3AgKGxhc3QsIEJVSUxUX0lOX1RSQVApKSkKIAkJICAgICAgfHwgZ2ltcGxlX2NhbGxf YnVpbHRpbl9wIChsYXN0LCB1YnNhbl9taXNzaW5nX3JldCkpKQogCQl7Ci0tIAoyLjI3LjAKCg== --------------XglPLrlDUXo1EVBAbXlSsZO8--