From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 100028 invoked by alias); 15 Dec 2016 00:25:05 -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 100014 invoked by uid 89); 15 Dec 2016 00:25:03 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_PASS,URIBL_RED autolearn=ham version=3.3.2 spammy=H*Ad:U*roland, __END_DECLS, __end_decls, H*F:U*jim X-HELO: mail-io0-f194.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=P/ODz9zBZAS68WJnIvTiyw/TXzaZKbu7jZwZJWdkaQw=; b=EL3NAO1htchSdnuS3ov01ZI/5B38GXGYVUbcaDmQ3Eo0y76ZHOHQRQUK/2zOPI8U7E 1Otm0jFlBWH66DvKqPScw+mWEgqzrDQMLMcNstEIf/bowAX8dwWppIvOXJse0zeqbsXG oeAQtd7hktPkwP4HKPKZ5EXJZDEETQ9GmfEO0ctePKc87QWUYuHPHZROJxLavXpwZAAw /FliQNAPPdH0Nw6now0X7Xk3JFwhxOjzvvSO5yoc3Xpf52h25y3cXbwcP8LLzafA16ML xibUFDgLR5NBoDqN7cN1KL99EtA6kyOtlxuwgiD9p+32A+rjmPMrS7zqrsHjYBHQvDis zB9Q== X-Gm-Message-State: AKaTC01B4kgivcGF7wzpCjD9PUCESFOgpoe6A43ddqm0W08W3ABWjF5ogJZzRadW1UC3r5oEUzSV2m65JuxyxQ== X-Received: by 10.107.10.11 with SMTP id u11mr31896ioi.29.1481761491971; Wed, 14 Dec 2016 16:24:51 -0800 (PST) MIME-Version: 1.0 In-Reply-To: <42486853-b892-20d1-d8e5-c74548369e2e@redhat.com> References: <1405537923-28692-1-git-send-email-jim@meyering.net> <20140716201505.34FF22C398F@topped-with-meat.com> <93a7b09e-70b9-d11e-bfb5-e54e751c8db5@redhat.com> <42486853-b892-20d1-d8e5-c74548369e2e@redhat.com> From: Jim Meyering Date: Thu, 15 Dec 2016 00:25: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=001a113ed60a5f1e170543a77b6c X-SW-Source: 2016-12/txt/msg00534.txt.bz2 --001a113ed60a5f1e170543a77b6c Content-Type: text/plain; charset=UTF-8 Content-length: 2083 On Wed, Dec 14, 2016 at 1:13 AM, Florian Weimer wrote: > On 11/26/2016 07:14 AM, Jim Meyering wrote: > >> Here's a proposed ChangeLog entry: >> >> 2016-11-25 Jim Meyering >> >> Let gcc detect assert(a = 1) errors. >> * assert/assert.h (assert): Rewrite assert's definition so that a >> s/==/=/ typo, e.g., assert(errno = 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 >> -Wpedantic >> would otherwise issue for the use of ({...}). > > Isn't this warning suppressed for system headers with -Wpedantic? Thanks for the review. Good point. It's really for -ansi -pedantic, I suppose. Updated the log message. >> I would have preferred >> 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 > > The following is a bit silly. glibc adheres to the GNU standards, which > require that the ChangeLog only describes the change as such, not its > rationale. So the entry should probably look like this. > > Let GCC detect assert (a = 1) errors. > * assert/assert.h (assert): Introduce __STRICT_ANSI__ variant. > Use a GCC extension and an if statement for GNU compilers. Thanks. I didn't realize glibc used such a strict interpretation. Happy to adjust. How's this (also in the attached, rebased commit): Let gcc detect assert(a = 1) errors. * assert/assert.h (assert) Rewrite, retaining the old definintion when required, but otherwise putting the expression as-is in an "if" expression (hence, with no added parentheses) within a statement expression. --001a113ed60a5f1e170543a77b6c 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_iwpmhptu0 Content-length: 3530 RnJvbSA5Y2IxYTdmZDJhYzBkN2FmYzYyZTVhMWU3NDJjMzgxOWUxYWM0MzQ2 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gTWV5ZXJpbmcg PG1leWVyaW5nQGZiLmNvbT4KRGF0ZTogVGh1LCA1IEp1biAyMDE0IDEwOjQy OjA1IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gYXNzZXJ0Lmg6IGFsbG93IGdj YyB0byBkZXRlY3QgYXNzZXJ0KGEgPSAxKSBlcnJvcnMKCiogYXNzZXJ0L2Fz c2VydC5oIChhc3NlcnQpOiBSZXdyaXRlIGFzc2VydCdzIGRlZmluaXRpb24g c28gdGhhdAphIHMvPT0vPS8gdHlwbywgZS5nLiwgYXNzZXJ0KGVycm5vID0g RU5PRU5UKSBpcyBub3QgaGlkZGVuIGZyb20KZ2NjJ3MgLVdwYXJlbnRoZXNl cyBieSBhc3NlcnQtYWRkZWQgcGFyZW50aGVzZXMuICBUaGUgbmV3IGRlZmlu aXRpb24KdXNlcyAiaWYgKGV4cHIpIC8qIGVtcHR5ICovOyBlbHNlIF9fYXNz ZXJ0X2ZhaWwuLi4iLCBzbwpnY2MgLVdhbGwgd2lsbCBub3cgZGV0ZWN0IHRo YXQgdHlwZSBvZiBlcnJvciBpbiBhbiBhc3NlcnQsIHRvby4KVGhlIF9fU1RS SUNUX0FOU0lfXyBkaXNqdW5jdCBpcyB0byBtYWtlIHRoaXMgd29yayBhbHNv IHdpdGggYm90aAotYW5zaSBhbmQgIC1wZWRhbnRpYywgd2hpY2ggd291bGQg cmVqZWN0IHRoZSB1c2Ugb2YgKHsuLi59KS4KSSB3b3VsZCBoYXZlIHByZWZl cnJlZCB0byB1c2UgX19leHRlbnNpb25fXyB0byBtYXJrIHRoYXQsIGJ1dApk b2luZyBzbyB3b3VsZCBtaXN0YWtlbmx5IHN1cHByZXNzIHdhcm5pbmdzIGFi b3V0IGFueSBleHRlbnNpb24KaW4gdGhlIHVzZXItc3VwcGxpZWQgImV4cHIi LgpFLmcuLCAiYXNzZXJ0ICggKHsxO30pICkiIG11c3QgY29udGludWUgdG8g ZXZva2UgYSB3YXJuaW5nLgotLS0KIENoYW5nZUxvZyAgICAgICB8ICA4ICsr KysrKysrCiBhc3NlcnQvYXNzZXJ0LmggfCAyMSArKysrKysrKysrKysrKysr Ky0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgNCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VM b2cKaW5kZXggYzA4YjcxMS4uMDc3OTQxOSAxMDA2NDQKLS0tIGEvQ2hhbmdl TG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExIEBACisyMDE2LTEx LTI1ICBKaW0gTWV5ZXJpbmcgIDxtZXllcmluZ0BmYi5jb20+CisKKwlMZXQg Z2NjIGRldGVjdCBhc3NlcnQoYSA9IDEpIGVycm9ycy4KKwkqIGFzc2VydC9h c3NlcnQuaCAoYXNzZXJ0KSBSZXdyaXRlLCByZXRhaW5pbmcgdGhlIG9sZCBk ZWZpbmludGlvbgorCXdoZW4gcmVxdWlyZWQsIGJ1dCBvdGhlcndpc2UgcHV0 dGluZyB0aGUgZXhwcmVzc2lvbiBhcy1pcyBpbiBhbiAiaWYiCisJZXhwcmVz c2lvbiAoaGVuY2UsIHdpdGggbm8gYWRkZWQgcGFyZW50aGVzZXMpIHdpdGhp biBhIHN0YXRlbWVudAorCWV4cHJlc3Npb24uCisKIDIwMTYtMTItMTQgIEpv c2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKIAlbQlog IzIwOTQ3XQpkaWZmIC0tZ2l0IGEvYXNzZXJ0L2Fzc2VydC5oIGIvYXNzZXJ0 L2Fzc2VydC5oCmluZGV4IDcyOWVkZWIuLjBmMjUxMzEgMTAwNjQ0Ci0tLSBh L2Fzc2VydC9hc3NlcnQuaAorKysgYi9hc3NlcnQvYXNzZXJ0LmgKQEAgLTgy LDEwICs4MiwyMyBAQCBleHRlcm4gdm9pZCBfX2Fzc2VydCAoY29uc3QgY2hh ciAqX19hc3NlcnRpb24sIGNvbnN0IGNoYXIgKl9fZmlsZSwgaW50IF9fbGlu ZSkKCiBfX0VORF9ERUNMUwoKLSMgZGVmaW5lIGFzc2VydChleHByKQkJCQkJ CQlcCi0gICgoZXhwcikJCQkJCQkJCVwKLSAgID8gX19BU1NFUlRfVk9JRF9D QVNUICgwKQkJCQkJCVwKLSAgIDogX19hc3NlcnRfZmFpbCAoI2V4cHIsIF9f RklMRV9fLCBfX0xJTkVfXywgX19BU1NFUlRfRlVOQ1RJT04pKQorLyogV2hl biBwb3NzaWJsZSwgZGVmaW5lIGFzc2VydCBzbyB0aGF0IGl0IGRvZXMgbm90 IGFkZCBleHRyYQorICAgcGFyZW50aGVzZXMgYXJvdW5kIEVYUFIuICBPdGhl cndpc2UsIHRob3NlIGFkZGVkIHBhcmVudGhlc2VzIHdvdWxkCisgICBzdXBw cmVzcyB3YXJuaW5ncyB3ZSdkIGV4cGVjdCB0byBiZSBkZXRlY3RlZCBieSBn Y2MncyAtV3BhcmVudGhlc2VzLiAgKi8KKyMgaWYgIWRlZmluZWQgX19HTlVD X18gfHwgZGVmaW5lZCBfX1NUUklDVF9BTlNJX18KKyMgIGRlZmluZSBhc3Nl cnQoZXhwcikJCQkJCQkJXAorICAgICgoZXhwcikJCQkJCQkJCVwKKyAgICAg PyBfX0FTU0VSVF9WT0lEX0NBU1QgKDApCQkJCQkJXAorICAgICA6IF9fYXNz ZXJ0X2ZhaWwgKCNleHByLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fQVNTRVJU X0ZVTkNUSU9OKSkKKyMgZWxzZQorIyAgZGVmaW5lIGFzc2VydChleHByKQkJ CQkJCQlcCisgICAgKHsJCQkJCQkJCQlcCisgICAgICBpZiAoZXhwcikJCQkJ CQkJCVwKKyAgICAgICAgOyAvKiBlbXB0eSAqLwkJCQkJCQlcCisgICAgICBl bHNlCQkJCQkJCQlcCisgICAgICAgIF9fYXNzZXJ0X2ZhaWwgKCNleHByLCBf X0ZJTEVfXywgX19MSU5FX18sIF9fQVNTRVJUX0ZVTkNUSU9OKTsJXAorICAg IH0pCisjIGVuZGlmCgogIyBpZmRlZglfX1VTRV9HTlUKICMgIGRlZmluZSBh c3NlcnRfcGVycm9yKGVycm51bSkJCQkJCQlcCi0tIAoyLjkuMwoK --001a113ed60a5f1e170543a77b6c--