From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com [IPv6:2a00:1450:4864:20::52d]) by sourceware.org (Postfix) with ESMTPS id AEFE9385841D for ; Thu, 25 Aug 2022 16:11:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org AEFE9385841D Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ed1-x52d.google.com with SMTP id b44so6489795edf.9 for ; Thu, 25 Aug 2022 09:11:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:references:to:from:content-language:subject:user-agent :mime-version:date:message-id:from:to:cc; bh=AXAs6Rg6yk7FYj+Ec2ddJLUjSFjXwIXc8hq4dww/gXQ=; b=JA9IFDg0Nfn6M2rCXi4MBqX3R5/tgVOpJrTDnubS/T90f6WT7cktJh5lJ51iPJX1zK xU8PmOmQRZE8tbQ5tafC+RUVixV7R4/c4mHabTGhWdL7bT3rRuq1xr4Lmj3f2gBcRRIl y5jNjEQZqsnDzUf2yjuAX71taE0APazOcZmYY8xzNI+SIpvMPeCGmosXCzFjFXNG1GHj EG2bkiuzgxqvtTsJU4vhwAbylld3J7AaS+IZu7dsKHj7CKpHElaKDV0LlXDAfMRkhQxO N5d5u0/2PydtzjsovPouFdPgld9UbX3cPi4vaeiXmfG4W/jhxEVkZTouZlfYsRPH906E oijg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:references:to:from:content-language:subject:user-agent :mime-version:date:message-id:x-gm-message-state:from:to:cc; bh=AXAs6Rg6yk7FYj+Ec2ddJLUjSFjXwIXc8hq4dww/gXQ=; b=Fu+suFKv/8e/NiL6wx5WrvzsjQTD3ChEOKFcWSYF8do2v9sHmSfuBtdthDlFImi9Bm j+AlyezbAFlWFaoQn1cOuHy50hwoZ68+byyVkrCeY61CoPZOf5CxSSphLQBetbQ967Y2 83yXiQNTBie0iTQ0ZZTOQVLyhkfdjcg/n4uroKDhh5ADVLPW6CZlq3BNPW2CbvXzXCrQ O4IaV3IWQFz9yZhk3VMNqfN6wVYZp+AhNBdI/scuxjqgDJ4q2X+6fs/xeAT1i/Y4HVFz 2XaU88kVm7OyOLvk9HhAEUGzTZ9IpLWAoxsmk7h7H8rPoYO7jd0+5vFfLwRy40qIxNFz sAYQ== X-Gm-Message-State: ACgBeo05sGoEnjtZ4lotDbsPrzRuXZ56jjvGuiXlgGzj/IjNelYsfRUu zXHcjUTGoOOSUoSFzMYVcbx/pvFDnXNyZQ== X-Google-Smtp-Source: AA6agR4ldTBpH6B0+5vbDEk5a9IKsF6211jpMD8EKd+E+agJagt4Dwtx7AIrhCgh5TIfHHv5wck7tQ== X-Received: by 2002:a05:6402:2499:b0:440:942a:40c2 with SMTP id q25-20020a056402249900b00440942a40c2mr3936430eda.37.1661443891137; Thu, 25 Aug 2022 09:11:31 -0700 (PDT) Received: from [10.40.3.139] ([109.190.253.15]) by smtp.googlemail.com with ESMTPSA id z12-20020a170906434c00b007317ad372c0sm2674262ejm.20.2022.08.25.09.11.29 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 25 Aug 2022 09:11:30 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------iu4PaBl8GzZxER7Ch8VWXXAh" Message-ID: <10daf589-f064-5d82-3093-9efe3d5af910@gmail.com> Date: Thu, 25 Aug 2022 18:11:26 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [PATCH][_GLIBCXX_DEBUG] Add basic_string::starts_with/ends_with checks Content-Language: fr From: =?UTF-8?Q?Fran=c3=a7ois_Dumont?= To: "libstdc++@gcc.gnu.org" References: <0ec115b4-917a-403e-88fe-6a9360659bd8@gmail.com> In-Reply-To: <0ec115b4-917a-403e-88fe-6a9360659bd8@gmail.com> X-Spam-Status: No, score=-6.0 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_SHORT,NICE_REPLY_A,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,RCVD_IN_SBL_CSS,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 List-Id: This is a multi-part message in MIME format. --------------iu4PaBl8GzZxER7Ch8VWXXAh Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit I spent more time on this. Is there some discussion in the C++ Standard Committee to do something like what I've done ? I guess adding nullptr_t overloads for all the methods taking pointer is not an option, is it ? Note that compilation fails but despite the dg-do xfail the test ends up FAIL and not XFAIL. Is this the correct syntax: // { dg-do compile { target c++2a xfail *-*-* } } ? Thanks, François On 15/08/22 22:26, François Dumont wrote: > With the patch ! > > On 14/08/22 17:32, François Dumont wrote: >> I think we can add those checks. >> >> Note that I wonder if it was needed as in basic_string_view I see >> usages of __attribute__((__nonnull__)). But running the test I saw no >> impact even after I try to apply this attribute to the >> starts_with/ends_with methods themselves. >> >> Also note that several checks like the ones I am adding here are >> XFAILS when using 'make check' because of the segfault rather than on >> a proper debug checks. Would you prefer to add dg-require-debug-mode >> to those ? >> >>     libstdc++: [_GLIBCXX_DEBUG] Add >> basic_string::starts_with/ends_with checks >> >>     Add simple checks on C string parameters which should not be null. >> >>     Review null string checks to show: >>     _String != nullptr >> >>     rather than: >>     _String != 0 >> >>     libstdc++-v3/ChangeLog: >> >>             * include/bits/basic_string.h (starts_with, ends_with): >> Add __glibcxx_check_string. >>             * include/bits/cow_string.h (starts_with, ends_with): >> Likewise. >>             * include/debug/debug.h: Use nullptr rather than '0' in >> checks in C++11. >>             * include/debug/string: Likewise. >>             * >> testsuite/21_strings/basic_string/operations/ends_with/char.cc: Use >> __gnu_test::string. >>             * >> testsuite/21_strings/basic_string/operations/ends_with/wchar_t.cc: >> Use __gnu_test::wstring. >>             * >> testsuite/21_strings/basic_string/operations/starts_with/wchar_t.cc: >> Use __gnu_test::wstring. >>             * >> testsuite/21_strings/basic_string/operations/starts_with/char.cc: Use >> __gnu_test::string. >>             * >> testsuite/21_strings/basic_string/operations/ends_with/char_neg.cc: >> New test. >>             * >> testsuite/21_strings/basic_string/operations/ends_with/wchar_t_neg.cc: >> New test. >>             * >> testsuite/21_strings/basic_string/operations/starts_with/char_neg.cc: >> New test. >>             * >> testsuite/21_strings/basic_string/operations/starts_with/wchar_t_neg.cc: >> New test. >> >> Tested under linux normal and debug modes. >> >> François >> >> --------------iu4PaBl8GzZxER7Ch8VWXXAh Content-Type: text/x-patch; charset=UTF-8; name="nullptr_t.patch" Content-Disposition: attachment; filename="nullptr_t.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvYmFzaWNfc3RyaW5nLmgg Yi9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL2Jhc2ljX3N0cmluZy5oCmluZGV4IGQwNjMz MGU2YzQ4Li4xYmU0MmU0MTVmNSAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2luY2x1ZGUv Yml0cy9iYXNpY19zdHJpbmcuaAorKysgYi9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL2Jh c2ljX3N0cmluZy5oCkBAIC0zNDA3LDYgKzM0MDcsOSBAQCBfR0xJQkNYWF9CRUdJTl9OQU1F U1BBQ0VfQ1hYMTEKIAlyZXR1cm4gX19zdl90eXBlKHRoaXMtPmRhdGEoKSwgdGhpcy0+c2l6 ZSgpKS5zdGFydHNfd2l0aChfX3gpOwogICAgICAgfQogCisgICAgICBib29sCisgICAgICBz dGFydHNfd2l0aChudWxscHRyX3QpIGNvbnN0IG5vZXhjZXB0ID0gZGVsZXRlOworCiAgICAg ICBjb25zdGV4cHIgYm9vbAogICAgICAgZW5kc193aXRoKGJhc2ljX3N0cmluZ192aWV3PF9D aGFyVCwgX1RyYWl0cz4gX194KSBjb25zdCBub2V4Y2VwdAogICAgICAgeyByZXR1cm4gX19z dl90eXBlKHRoaXMtPmRhdGEoKSwgdGhpcy0+c2l6ZSgpKS5lbmRzX3dpdGgoX194KTsgfQpA QCAtMzQyMSw2ICszNDI0LDkgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX0NYWDExCiAJ X19nbGliY3h4X3JlcXVpcmVzX3N0cmluZyhfX3gpOwogCXJldHVybiBfX3N2X3R5cGUodGhp cy0+ZGF0YSgpLCB0aGlzLT5zaXplKCkpLmVuZHNfd2l0aChfX3gpOwogICAgICAgfQorCisg ICAgICBib29sCisgICAgICBlbmRzX3dpdGgobnVsbHB0cl90KSBjb25zdCBub2V4Y2VwdCA9 IGRlbGV0ZTsKICNlbmRpZiAvLyBDKysyMAogCiAjaWYgX19jcGx1c3BsdXMgPiAyMDIwMDJM CmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL2Nvd19zdHJpbmcuaCBi L2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvY293X3N0cmluZy5oCmluZGV4IDU5YjM2YTEw MDZhLi5mOGYwOTU5NTU0ZCAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0 cy9jb3dfc3RyaW5nLmgKKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9jb3dfc3Ry aW5nLmgKQEAgLTMwMTksNiArMzAxOSw5IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9W RVJTSU9OCiAJcmV0dXJuIF9fc3ZfdHlwZSh0aGlzLT5kYXRhKCksIHRoaXMtPnNpemUoKSku c3RhcnRzX3dpdGgoX194KTsKICAgICAgIH0KIAorICAgICAgYm9vbAorICAgICAgc3RhcnRz X3dpdGgobnVsbHB0cl90KSBjb25zdCBub2V4Y2VwdCA9IGRlbGV0ZTsKKwogICAgICAgYm9v bAogICAgICAgZW5kc193aXRoKGJhc2ljX3N0cmluZ192aWV3PF9DaGFyVCwgX1RyYWl0cz4g X194KSBjb25zdCBub2V4Y2VwdAogICAgICAgeyByZXR1cm4gX19zdl90eXBlKHRoaXMtPmRh dGEoKSwgdGhpcy0+c2l6ZSgpKS5lbmRzX3dpdGgoX194KTsgfQpAQCAtMzAzMyw2ICszMDM2 LDkgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KIAlfX2dsaWJjeHhfcmVx dWlyZXNfc3RyaW5nKF9feCk7CiAJcmV0dXJuIF9fc3ZfdHlwZSh0aGlzLT5kYXRhKCksIHRo aXMtPnNpemUoKSkuZW5kc193aXRoKF9feCk7CiAgICAgICB9CisKKyAgICAgIGJvb2wKKyAg ICAgIGVuZHNfd2l0aChudWxscHRyX3QpIGNvbnN0IG5vZXhjZXB0ID0gZGVsZXRlOwogI2Vu ZGlmIC8vIEMrKzIwCiAKICNpZiBfX2NwbHVzcGx1cyA+IDIwMjAxMUwKZGlmZiAtLWdpdCBh L2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9iYXNpY19zdHJpbmcvb3BlcmF0 aW9ucy9lbmRzX3dpdGgvY2hhcl9uZWcuY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIx X3N0cmluZ3MvYmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvZW5kc193aXRoL2NoYXJfbmVnLmNj CmluZGV4IDdhN2I4ZGQwNzdkLi4yNzNlOWE2YTU2NCAxMDA2NDQKLS0tIGEvbGlic3RkYysr LXYzL3Rlc3RzdWl0ZS8yMV9zdHJpbmdzL2Jhc2ljX3N0cmluZy9vcGVyYXRpb25zL2VuZHNf d2l0aC9jaGFyX25lZy5jYworKysgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIxX3N0cmlu Z3MvYmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvZW5kc193aXRoL2NoYXJfbmVnLmNjCkBAIC0x NSwxMCArMTUsOCBAQAogLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ SU5HMy4gIElmIG5vdCBzZWUKIC8vIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K IC8vCi0vLyB7IGRnLW9wdGlvbnMgIi1zdGQ9Z251KysyYSAtTzAiIH0KLS8vIHsgZGctZG8g cnVuIHsgdGFyZ2V0IGMrKzJhIHhmYWlsICotKi0qIH0gfQotCi0jZGVmaW5lIF9HTElCQ1hY X0RFQlVHX1BFREFOVElDCisvLyB7IGRnLW9wdGlvbnMgIi1zdGQ9Z251KysyYSIgfQorLy8g eyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzJhIHhmYWlsICotKi0qIH0gfQogCiAjaW5j bHVkZSA8dGVzdHN1aXRlX3N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMv dGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvZW5kc193aXRo L3djaGFyX3RfbmVnLmNjIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMV9zdHJpbmdzL2Jh c2ljX3N0cmluZy9vcGVyYXRpb25zL2VuZHNfd2l0aC93Y2hhcl90X25lZy5jYwppbmRleCBh Njg4MWJmNDA2Yi4uMDc1ODhlYTJiZjcgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My90ZXN0 c3VpdGUvMjFfc3RyaW5ncy9iYXNpY19zdHJpbmcvb3BlcmF0aW9ucy9lbmRzX3dpdGgvd2No YXJfdF9uZWcuY2MKKysrIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMV9zdHJpbmdzL2Jh c2ljX3N0cmluZy9vcGVyYXRpb25zL2VuZHNfd2l0aC93Y2hhcl90X25lZy5jYwpAQCAtMTUs MTAgKzE1LDggQEAKIC8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO RzMuICBJZiBub3Qgc2VlCiAvLyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAv LwotLy8geyBkZy1vcHRpb25zICItc3RkPWdudSsrMmEgLU8wIiB9Ci0vLyB7IGRnLWRvIHJ1 biB7IHRhcmdldCBjKysyYSB4ZmFpbCAqLSotKiB9IH0KLQotI2RlZmluZSBfR0xJQkNYWF9E RUJVR19QRURBTlRJQworLy8geyBkZy1vcHRpb25zICItc3RkPWdudSsrMmEiIH0KKy8vIHsg ZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyYSB4ZmFpbCAqLSotKiB9IH0KIAogI2luY2x1 ZGUgPHRlc3RzdWl0ZV9zdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rl c3RzdWl0ZS8yMV9zdHJpbmdzL2Jhc2ljX3N0cmluZy9vcGVyYXRpb25zL3N0YXJ0c193aXRo L2NoYXJfbmVnLmNjIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMV9zdHJpbmdzL2Jhc2lj X3N0cmluZy9vcGVyYXRpb25zL3N0YXJ0c193aXRoL2NoYXJfbmVnLmNjCmluZGV4IGYzNTdh ZWYyMjg5Li45YjZiMGQyZGRkYSAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0 ZS8yMV9zdHJpbmdzL2Jhc2ljX3N0cmluZy9vcGVyYXRpb25zL3N0YXJ0c193aXRoL2NoYXJf bmVnLmNjCisrKyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9iYXNpY19z dHJpbmcvb3BlcmF0aW9ucy9zdGFydHNfd2l0aC9jaGFyX25lZy5jYwpAQCAtMTUsMTAgKzE1 LDggQEAKIC8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJ ZiBub3Qgc2VlCiAvLyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAvLwotLy8g eyBkZy1vcHRpb25zICItc3RkPWdudSsrMmEgLU8wIiB9Ci0vLyB7IGRnLWRvIHJ1biB7IHRh cmdldCBjKysyYSB4ZmFpbCAqLSotKiB9IH0KLQotI2RlZmluZSBfR0xJQkNYWF9ERUJVR19Q RURBTlRJQworLy8geyBkZy1vcHRpb25zICItc3RkPWdudSsrMmEiIH0KKy8vIHsgZGctZG8g Y29tcGlsZSB7IHRhcmdldCBjKysyYSB4ZmFpbCAqLSotKiB9IH0KIAogI2luY2x1ZGUgPHRl c3RzdWl0ZV9zdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0 ZS8yMV9zdHJpbmdzL2Jhc2ljX3N0cmluZy9vcGVyYXRpb25zL3N0YXJ0c193aXRoL3djaGFy X3RfbmVnLmNjIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMV9zdHJpbmdzL2Jhc2ljX3N0 cmluZy9vcGVyYXRpb25zL3N0YXJ0c193aXRoL3djaGFyX3RfbmVnLmNjCmluZGV4IDkwMDY1 YTQ1OWI2Li4xZWExMGQxYWIzOSAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0 ZS8yMV9zdHJpbmdzL2Jhc2ljX3N0cmluZy9vcGVyYXRpb25zL3N0YXJ0c193aXRoL3djaGFy X3RfbmVnLmNjCisrKyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9iYXNp Y19zdHJpbmcvb3BlcmF0aW9ucy9zdGFydHNfd2l0aC93Y2hhcl90X25lZy5jYwpAQCAtMTUs MTAgKzE1LDggQEAKIC8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO RzMuICBJZiBub3Qgc2VlCiAvLyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAv LwotLy8geyBkZy1vcHRpb25zICItc3RkPWdudSsrMmEgLU8wIiB9Ci0vLyB7IGRnLWRvIHJ1 biB7IHRhcmdldCBjKysyYSB4ZmFpbCAqLSotKiB9IH0KLQotI2RlZmluZSBfR0xJQkNYWF9E RUJVR19QRURBTlRJQworLy8geyBkZy1vcHRpb25zICItc3RkPWdudSsrMmEiIH0KKy8vIHsg ZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyYSB4ZmFpbCAqLSotKiB9IH0KIAogI2luY2x1 ZGUgPHRlc3RzdWl0ZV9zdHJpbmcuaD4KIAo= --------------iu4PaBl8GzZxER7Ch8VWXXAh--