From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9070 invoked by alias); 9 Dec 2016 03:21:19 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Received: (qmail 6857 invoked by uid 89); 9 Dec 2016 03:18:30 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.4 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS,URIBL_RED autolearn=no version=3.3.2 spammy=Agreed, Here's, Heres, jun X-HELO: mail-io0-f194.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=j2V5nReWNYnEeerruD0IU2zg7CyYuC7PIrMSDH6EPhI=; b=EDFtPhy4ap1drsh2D3jQdLa7GtVkSx1kG8i+n8xv6M1qazQv8+ZdB5yYp5sMdZ19NE Z9hePxvs/SLjNyTM6NhqObXWH0PKZDMk7VTiabV6AY7+DpH9ZzgUAxKrOYpC47OSMV7Q MGzE59MHJnZZkG4fnK4YLpad5ZFY/V/3zoa/BmymwVSZ3j7a6k/wwYsBPdXmkJAq1dK0 6p4nTgyus/I26bW/5iEanacFDTHfpPtDHwUS2wmD5n5b1xn6VwvLAy/ZUDq2mho0wUYW GSyeB/lDjs34pIgqO2xHSGAQl6j4WLh43AJkM2JPiZtskD0w5S1XnVcasesrGorTDb6P dO1A== X-Gm-Message-State: AKaTC02wMmydT9EapqtYXXSG+CFTNUkv4bXGY6E2hD14Uw8kLlIcsZjKi90vKny8jrht2g2nv+t7peGJaql61w== X-Received: by 10.107.149.144 with SMTP id x138mr67371280iod.23.1481253498680; Thu, 08 Dec 2016 19:18:18 -0800 (PST) MIME-Version: 1.0 In-Reply-To: References: <1405537923-28692-1-git-send-email-jim@meyering.net> <20140716201505.34FF22C398F@topped-with-meat.com> <93a7b09e-70b9-d11e-bfb5-e54e751c8db5@redhat.com> From: Jim Meyering Date: Fri, 09 Dec 2016 03:21:00 -0000 Message-ID: Subject: Re: [PATCH] assert.h: allow gcc to detect assert(a = 1) errors To: Florian Weimer Cc: Roland McGrath , libc-alpha Content-Type: multipart/mixed; boundary=001a1141007a9c9c3205433134f0 X-SW-Source: 2016-12/txt/msg00304.txt.bz2 --001a1141007a9c9c3205433134f0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-length: 2075 On Fri, Nov 25, 2016 at 10:14 PM, Jim Meyering wrote: > On Wed, Nov 23, 2016 at 11:36 PM, Florian Weimer wro= te: >> On 11/24/2016 03:21 AM, Jim Meyering wrote: >> >>> We *do* need that __STRICT_ANSI__ disjunct. >>> Otherwise, this would evoke no warning: >>> >>> $ gcc -isystem. -I. -Werror=3Dpedantic k.c >>> In file included from k.c:1:0: >>> k.c: In function =E2=80=98main=E2=80=99: >>> k.c:2:23: warning: ISO C forbids braced-groups within expressions >>> [-Wpedantic] >>> int main() { assert ( ({1;}) ); return 0; } >> >> >> Agreed. >> >>> Tests I ran manually in a directory with the new assert.h file: >> >> >>> Do you require a test suite addition for these? If so, would a single >>> bourne shell script be acceptable? >> >> >> We currently lack the machinery for that. It's not just that it would n= eed >> a shell script. We also do not compile tests with headers as system >> headers. >> >> The patch looks good to me, but it needs a ChangeLog entry. > > Thanks for the review. > Here's a proposed ChangeLog entry: > > 2016-11-25 Jim Meyering > > Let gcc detect assert(a =3D 1) errors. > * assert/assert.h (assert): Rewrite assert's definition so that a > s/=3D=3D/=3D/ typo, e.g., assert(errno =3D ENOENT) is not hidden = from > gcc's -Wparentheses by assert-added parentheses. The new > definition uses "if (expr) /* empty */; else __assert_fail...", > so gcc -Wall will now detect that type of error in an assert, too. > The __STRICT_ANSI__ disjunct is to avoid the warning that -Wpedan= tic > would otherwise issue for the use of ({...}). I would have prefe= rred > to use __extension__ to mark that, but doing so would mistakenly > suppress warnings about any extension in the user-supplied "expr". > E.g., "assert ( ({1;}) )" must continue to evoke a warning. > https://bugzilla.redhat.com/1105335 Here's the complete, rebased patch. Ok to push, presuming I still have commit access? --001a1141007a9c9c3205433134f0 Content-Type: text/plain; charset=US-ASCII; name="glibc-assert--do-not-suppress-warning-about-accidental-assignment.diff" Content-Disposition: attachment; filename="glibc-assert--do-not-suppress-warning-about-accidental-assignment.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iwh82c700 Content-length: 4246 RnJvbSAwOTU0ZmVhZTY0MTFjYzBkZTVmNWNiNmM3ZTAwN2I5NzIzODgxMzlm IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gTWV5ZXJpbmcg PG1leWVyaW5nQGZiLmNvbT4KRGF0ZTogVGh1LCA1IEp1biAyMDE0IDEwOjQy OjA1IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gYXNzZXJ0Lmg6IGFsbG93IGdj YyB0byBkZXRlY3QgYXNzZXJ0KGEgPSAxKSBlcnJvcnMKCiogYXNzZXJ0L2Fz c2VydC5oIChhc3NlcnQpOiBSZXdyaXRlIGFzc2VydCdzIGRlZmluaXRpb24g c28gdGhhdAphIHMvPT0vPS8gdHlwbywgZS5nLiwgYXNzZXJ0KGVycm5vID0g RU5PRU5UKSBpcyBub3QgaGlkZGVuIGZyb20KZ2NjJ3MgLVdwYXJlbnRoZXNl cyBieSBhc3NlcnQtYWRkZWQgcGFyZW50aGVzZXMuICBUaGUgbmV3IGRlZmlu aXRpb24KdXNlcyAiaWYgKGV4cHIpIC8qIGVtcHR5ICovOyBlbHNlIF9fYXNz ZXJ0X2ZhaWwuLi4iLCBzbwpnY2MgLVdhbGwgd2lsbCBub3cgZGV0ZWN0IHRo YXQgdHlwZSBvZiBlcnJvciBpbiBhbiBhc3NlcnQsIHRvby4KVGhlIF9fU1RS SUNUX0FOU0lfXyBkaXNqdW5jdCBpcyB0byBhdm9pZCB0aGUgd2FybmluZyB0 aGF0IC1XcGVkYW50aWMKd291bGQgb3RoZXJ3aXNlIGlzc3VlIGZvciB0aGUg dXNlIG9mICh7Li4ufSkuICBJIHdvdWxkIGhhdmUgcHJlZmVycmVkCnRvIHVz ZSBfX2V4dGVuc2lvbl9fIHRvIG1hcmsgdGhhdCwgYnV0IGRvaW5nIHNvIHdv dWxkIG1pc3Rha2VubHkKc3VwcHJlc3Mgd2FybmluZ3MgYWJvdXQgYW55IGV4 dGVuc2lvbiBpbiB0aGUgdXNlci1zdXBwbGllZCAiZXhwciIuCkUuZy4sICJh c3NlcnQgKCAoezE7fSkgKSIgbXVzdCBjb250aW51ZSB0byBldm9rZSBhIHdh cm5pbmcuCi0tLQogQ2hhbmdlTG9nICAgICAgIHwgMTUgKysrKysrKysrKysr KysrCiBhc3NlcnQvYXNzZXJ0LmggfCAyMSArKysrKysrKysrKysrKysrKy0t LS0KIDIgZmlsZXMgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgNCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cK aW5kZXggZTE5ZGI1ZC4uYTAxODFlNiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9n CisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE2LTExLTI1 ICBKaW0gTWV5ZXJpbmcgIDxtZXllcmluZ0BmYi5jb20+CisKKwlMZXQgZ2Nj IGRldGVjdCBhc3NlcnQoYSA9IDEpIGVycm9ycy4KKwkqIGFzc2VydC9hc3Nl cnQuaCAoYXNzZXJ0KTogUmV3cml0ZSBhc3NlcnQncyBkZWZpbml0aW9uIHNv IHRoYXQgYQorCXMvPT0vPS8gdHlwbywgZS5nLiwgYXNzZXJ0KGVycm5vID0g RU5PRU5UKSBpcyBub3QgaGlkZGVuIGZyb20KKwlnY2MncyAtV3BhcmVudGhl c2VzIGJ5IGFzc2VydC1hZGRlZCBwYXJlbnRoZXNlcy4gIFRoZSBuZXcKKwlk ZWZpbml0aW9uIHVzZXMgImlmIChleHByKSAvKiBlbXB0eSAqLzsgZWxzZSBf X2Fzc2VydF9mYWlsLi4uIiwKKwlzbyBnY2MgLVdhbGwgd2lsbCBub3cgZGV0 ZWN0IHRoYXQgdHlwZSBvZiBlcnJvciBpbiBhbiBhc3NlcnQsIHRvby4KKwlU aGUgX19TVFJJQ1RfQU5TSV9fIGRpc2p1bmN0IGlzIHRvIGF2b2lkIHRoZSB3 YXJuaW5nIHRoYXQgLVdwZWRhbnRpYworCXdvdWxkIG90aGVyd2lzZSBpc3N1 ZSBmb3IgdGhlIHVzZSBvZiAoey4uLn0pLiAgSSB3b3VsZCBoYXZlIHByZWZl cnJlZAorCXRvIHVzZSBfX2V4dGVuc2lvbl9fIHRvIG1hcmsgdGhhdCwgYnV0 IGRvaW5nIHNvIHdvdWxkIG1pc3Rha2VubHkKKwlzdXBwcmVzcyB3YXJuaW5n cyBhYm91dCBhbnkgZXh0ZW5zaW9uIGluIHRoZSB1c2VyLXN1cHBsaWVkICJl eHByIi4KKwlFLmcuLCAiYXNzZXJ0ICggKHsxO30pICkiIG11c3QgY29udGlu dWUgdG8gZXZva2UgYSB3YXJuaW5nLgorCWh0dHBzOi8vYnVnemlsbGEucmVk aGF0LmNvbS8xMTA1MzM1CisKIDIwMTYtMTItMDggIEpvc2VwaCBNeWVycyAg PGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKIAkqIFJ1bGVzIFskKHJ1bi1i dWlsdC10ZXN0cykgIT0gbm9dICh0ZXN0cy1leHBlY3RlZCk6IEFkZApkaWZm IC0tZ2l0IGEvYXNzZXJ0L2Fzc2VydC5oIGIvYXNzZXJ0L2Fzc2VydC5oCmlu ZGV4IDcyOWVkZWIuLjBmMjUxMzEgMTAwNjQ0Ci0tLSBhL2Fzc2VydC9hc3Nl cnQuaAorKysgYi9hc3NlcnQvYXNzZXJ0LmgKQEAgLTgyLDEwICs4MiwyMyBA QCBleHRlcm4gdm9pZCBfX2Fzc2VydCAoY29uc3QgY2hhciAqX19hc3NlcnRp b24sIGNvbnN0IGNoYXIgKl9fZmlsZSwgaW50IF9fbGluZSkKCiBfX0VORF9E RUNMUwoKLSMgZGVmaW5lIGFzc2VydChleHByKQkJCQkJCQlcCi0gICgoZXhw cikJCQkJCQkJCVwKLSAgID8gX19BU1NFUlRfVk9JRF9DQVNUICgwKQkJCQkJ CVwKLSAgIDogX19hc3NlcnRfZmFpbCAoI2V4cHIsIF9fRklMRV9fLCBfX0xJ TkVfXywgX19BU1NFUlRfRlVOQ1RJT04pKQorLyogV2hlbiBwb3NzaWJsZSwg ZGVmaW5lIGFzc2VydCBzbyB0aGF0IGl0IGRvZXMgbm90IGFkZCBleHRyYQor ICAgcGFyZW50aGVzZXMgYXJvdW5kIEVYUFIuICBPdGhlcndpc2UsIHRob3Nl IGFkZGVkIHBhcmVudGhlc2VzIHdvdWxkCisgICBzdXBwcmVzcyB3YXJuaW5n cyB3ZSdkIGV4cGVjdCB0byBiZSBkZXRlY3RlZCBieSBnY2MncyAtV3BhcmVu dGhlc2VzLiAgKi8KKyMgaWYgIWRlZmluZWQgX19HTlVDX18gfHwgZGVmaW5l ZCBfX1NUUklDVF9BTlNJX18KKyMgIGRlZmluZSBhc3NlcnQoZXhwcikJCQkJ CQkJXAorICAgICgoZXhwcikJCQkJCQkJCVwKKyAgICAgPyBfX0FTU0VSVF9W T0lEX0NBU1QgKDApCQkJCQkJXAorICAgICA6IF9fYXNzZXJ0X2ZhaWwgKCNl eHByLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fQVNTRVJUX0ZVTkNUSU9OKSkK KyMgZWxzZQorIyAgZGVmaW5lIGFzc2VydChleHByKQkJCQkJCQlcCisgICAg KHsJCQkJCQkJCQlcCisgICAgICBpZiAoZXhwcikJCQkJCQkJCVwKKyAgICAg ICAgOyAvKiBlbXB0eSAqLwkJCQkJCQlcCisgICAgICBlbHNlCQkJCQkJCQlc CisgICAgICAgIF9fYXNzZXJ0X2ZhaWwgKCNleHByLCBfX0ZJTEVfXywgX19M SU5FX18sIF9fQVNTRVJUX0ZVTkNUSU9OKTsJXAorICAgIH0pCisjIGVuZGlm CgogIyBpZmRlZglfX1VTRV9HTlUKICMgIGRlZmluZSBhc3NlcnRfcGVycm9y KGVycm51bSkJCQkJCQlcCi0tIAoyLjkuMwoK --001a1141007a9c9c3205433134f0--