Message ID | 767ac7c4-85e2-5766-9d7d-15edb35f5040@auburn.edu |
---|---|
State | New, archived |
Headers |
Received: (qmail 30149 invoked by alias); 21 Mar 2017 14:35:20 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: <libc-alpha.sourceware.org> List-Unsubscribe: <mailto:libc-alpha-unsubscribe-##L=##H@sourceware.org> List-Subscribe: <mailto:libc-alpha-subscribe@sourceware.org> List-Archive: <http://sourceware.org/ml/libc-alpha/> List-Post: <mailto:libc-alpha@sourceware.org> List-Help: <mailto:libc-alpha-help@sourceware.org>, <http://sourceware.org/ml/#faqs> Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 30109 invoked by uid 89); 21 Mar 2017 14:35:19 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-13.4 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: NAM01-SN1-obe.outbound.protection.outlook.com Authentication-Results: sourceware.org; dkim=none (message not signed) header.d=none; sourceware.org; dmarc=none action=none header.from=auburn.edu; Subject: Re: [PATCH] Fix assert() warning in gcc < 4.8 [BZ# 21242] To: Florian Weimer <fweimer@redhat.com>, <libc-alpha@sourceware.org> References: <6619e7e2-248e-08bc-6dc5-7b4d11bea3df@auburn.edu> <925e8a81-86f9-78a6-1578-660c04e39e3c@redhat.com> From: Justin Brewer <jzb0012@auburn.edu> Message-ID: <767ac7c4-85e2-5766-9d7d-15edb35f5040@auburn.edu> Date: Tue, 21 Mar 2017 10:35:13 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <925e8a81-86f9-78a6-1578-660c04e39e3c@redhat.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: DM5PR18CA0019.namprd18.prod.outlook.com (10.175.218.157) To BL2PR02MB2082.namprd02.prod.outlook.com (10.167.96.154) X-MS-Office365-Filtering-Correlation-Id: da0c22ba-f41a-43eb-aae1-08d470677e3b X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BL2PR02MB2082; X-Microsoft-Exchange-Diagnostics: 1; BL2PR02MB2082; 3:WUUroqiQD4IEaw3fS3gYf0YgFmYGTo5CisRhoSI7Yi8qHUhZbQY2Q4FkNHL0rIIWy5hrtAeCISrokZ8nch74QkJC/IcJISAPcC97OSE6k3L3EdOvPX6eXeVkGFIYTMt8HqqJWURN3IdchqaJhsdR3WcausD96oXJDJXijEYIwlP9+MujZQ0Awbkvc6kdkpkC/i5ux9IgNJpzKRIZHV9X0TCzw0pSBea8kmXiDMnEmcDJgLdvfVV1PU1bTr+wD7lCCw7UmaDr6zdLC2FXkWrNIw==; 25:Roinki7JVmzyW5k5Z45tBbxwEcDA+gfDVeDB7eJTK85A6dntx2OMyR96dy2W3t5KcLTpAANVGYdijX6ADBTOI+LlJ43/oUAZE+2ZK77LL9ama6S6sYcnFG8oTxXPVmxdoPSLB4Wu23Qa3i9uzb+X8oz6jQ21eeOSrokixrY0zd2Gmn1sot/QGkThuDdA7Tj4wl2u/pZAFI/7NAIhwrGPjbicGvMFLcfpRAb8IikUSZw+jlrtGy57g/idDiB0qPVoZK1eXtixwfA8rV7IhyDjjPCPc/5GrYiP4LwXfu1FpyzQrNmhc6+5b5djzhFiIG3w+i+E77ZzJHwE/M7tFyA72d0uOEkAhp/c2fT2d6X0axKAvPpmYn6pJjVyIATw4P378YKbN0zpn973RGBGCYhlVlcFVN8HYbCA9ON2okV+V/sFbdhygaRU6/wetp4RA6nhh/AUyiIFpZyEeRIVkywrbg== X-Microsoft-Exchange-Diagnostics: 1; BL2PR02MB2082; 31:ktkH4dEj1fqZH2Ldk7jeyUacozkApYBKNX9ooArG/ZBjPC2ZGgTVTlbNca5INqPZP8+fw4ryhtm7yuse+nfsHt7tnqR4sYbZWC1Eey2k0dXGKeSHuR4z2VCTyqXjMoyP/dt+py7quiHzDhhpWZerMafMMTOyNu1ANnXQsLcYz0vECc8gmcEG8nuIdcb0O3/OvaTdC9O9WbtKkjGVoQLt+EqroRZuluDKBpxziiIXo02kf3+zPUSKfcldt0AeIzlMsmg5UEgzaoR/oYfi7nIrYg0V8rV3O3IveuouXKpD6lo=; 20:q+qXKEsJP76Z247YSzpO9QRczh9IlSYjf73tpvxAyEZ9HbIYwcRbKNpo93Rnz2UsCl4Hkow0P926+/LrJwvPLOJh++693WKLgHFaws+3BGJSBXsCxrnvZpawae+QrXYf2QZalZgOWDUqj3ozfeEEmG3PNrYfCwnNZlSmu6fcKwCOOJgPqLuvvp4fGJwIzzNdVK8VGDsw+b75V8Ee9Wir3MffuOfUMEkwWDDDrkDx6BW9c8FoVNXPh3ahmvBke1uQK1ioraqKid/qX6YjIusGfTfCl3ivcrNgZJ090AQuLmkzvgD6VlF8RpwPQN+7fS3DL9cWzD3oJltt22LjFH48FhGXA6e5PQirqogCHyhY/+4FCb0gM9JylM/R4tWly6Q/Oj6yPs6FPPscyjkr5WuZJpqAUBabRRiCEHrGnPBGyv0m66JWjzggt3h+HWXV6+WvHhBuKZ0WlxnXD8ohfLKZFwbZXfQ/JmNASyzz3vDzATaVd8W8LvuOmtUsxNY2/Gar X-Microsoft-Antispam-PRVS: <BL2PR02MB2082D97586A3F538906C8413843D0@BL2PR02MB2082.namprd02.prod.outlook.com> X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6041248)(20161123564025)(20161123562025)(20161123555025)(20161123558025)(20161123560025)(6072148); SRVR:BL2PR02MB2082; BCL:0; PCL:0; RULEID:; SRVR:BL2PR02MB2082; X-Microsoft-Exchange-Diagnostics: 1; BL2PR02MB2082; 4:uHwxRejLBVJf/YYH9LTAHDvy83fFb0/pBuU4PK4YScO6b4vXGr9dkP8rzRkrTiIsOeSWFl4ilZR7j8+h35FPjov0a50XOAvRaufDw0DqZoU8Q7q3P5PdubIzPWBE/iAVxifae5PE1H7P4792Zo6p22eN5TJM+magdnO5AGPd9gyRohudFv8dD7fm2aM77gqnftrI7Bj6rRQEf8Crw9anj1YEUQuTcNBX9vVa56aSPtWacr91Q/CAQXzqXq7CUK4VUIO/U4NnmntnF5vjg+Uek28LJ/r4SDEOp0or7VCpitUOmW9XlFHgwL9Nm8IX0h6IiIe3lSXmiPG5Q5P3/irs9CCwIjzCc+atk/0Uaebp/omVV5IJ4THhZ/qaILlbOv3tUaf5M08+zlIx6rjAfRXXXekwovufZjtpSeOw1OjOgwVcf5MCp62Z88mYnMzQ75bUTNhpmgK+y+8XSUJT8GzQRH/SqSiv8494rtp0lnGGbizEv3gR5MYz3KuCH1NhNOnz+nfHns+25xhJlhWjEwf/guEqJkMhHN8+TDR2fGYN2xdVUGeMpl3MybyDh43bibMhbaXDkj2kBsTN2aT4lMxM+t+3owy0ucHMQSrfct8RN7k= X-Forefront-PRVS: 02530BD3AA X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(6049001)(39450400003)(377454003)(24454002)(377424004)(23676002)(230700001)(117156001)(33646002)(76176999)(54356999)(50986999)(229853002)(305945005)(6116002)(4001350100001)(53546009)(31686004)(42186005)(65806001)(7736002)(189998001)(47776003)(65956001)(66066001)(3846002)(36756003)(77096006)(6246003)(38730400002)(75432002)(83506001)(53936002)(50466002)(5660300001)(2906002)(88552002)(81166006)(8676002)(25786008)(2950100002)(90366009)(6666003)(31696002)(6486002)(42262002); DIR:OUT; SFP:1102; SCL:1; SRVR:BL2PR02MB2082; H:[192.168.1.2]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTDJQUjAyTUIyMDgyOzIzOjhVOGNSWTIydWJMc0hIRTRRRVkxMDR5aXhI?= =?utf-8?B?Yi9pZDNpTWpSSUhWcTN5aGpMajhkWmkxNWd5MERESjBES3RydExCUGF0amdH?= =?utf-8?B?dVdLYzFNdzJWSklWOElRU2NFMHMzbXNOMER4YURBcGJLSElpRFpzWVdNK1Ur?= =?utf-8?B?ckliZHprL29VQkEyQndTeWVYNXQ0WXdtZ1BNNllOMUJzSFZ2YlVpMTVBRlJr?= =?utf-8?B?b3d5UVA5UFNTcS9JWWFqZlpVNUxobUpycTRPWUkxdFpYYWFEK24yd1lLaHJa?= =?utf-8?B?VjE1TkgreU5EQUNrdllMcEsvditZNzRQeVVHNzVhYWFZd3NDTmVnYVdQSzlz?= =?utf-8?B?ZWxZTTg0bFJuV296Yi9YbTZFQVJCL3kra016KytGZG1CSjdLaHZPbENQc3FN?= =?utf-8?B?cUQ2ZnhCUEtWMXFJSnlsZUdBWWlQakVqTjRyZmlpdW84djhBYkVCVGpYSVc1?= =?utf-8?B?cFBwOFlyQzJ6aTlkK2QvcFByQmZuNlBwRlQzMHpmei8zcHc2eUtiVktUM1o4?= =?utf-8?B?MEZFUlptdkFEU0U4Y1pJMFBmL1RSaWNmWlZMd09JcURwRGZZUmpLM0RiM05j?= =?utf-8?B?Ym9sR2JmWnRndFJBU1JyZ1ZUVkdaWVJud3pqc1dHQWFpNG0rTDlseDc1Z2Nw?= =?utf-8?B?R25TT3B4MXZ4SnNwbHgvL2dRTTBqbGZ4TFlnenQ4Z2RYOXgvbyt4WExyTDkr?= =?utf-8?B?Z3pNUXRjeWVWSi9MdWpodGU5OGo0aEM2MzJzbDMzaEpPVlJXaHg4QWRyMVpq?= =?utf-8?B?TUVPbU1jR2w4U2xHRE9DczdFNTJmVmhackI5Y3BXcWxDNkY3NXV6cEVERzNL?= =?utf-8?B?R1RRRjViRC9RK1RaOFgxSHhkQlhRTXRMb2F2T1ltTGFkeWxPYytSOG9OQTdM?= =?utf-8?B?MGVDN3Fja2RTbDhkZ3JOUHFGbVRPbk5xeGZ1Qzkwd3ZXdmF5TXMrdGJ3ZmN1?= =?utf-8?B?TldDdFlDcHpoRVMwYzlFNi9PeUJTRVIzb0IrcjBlUW9pY1VaamNudEpYRVBk?= =?utf-8?B?OEt1V1BpU2Z1SnRJU0hZN1Fqbzl1Slg1V29PQ2cyTk55UjNLVzFzc2o2czJo?= =?utf-8?B?bkx6S3dobnlqdW11Wm4zbnNCNGJ1ZTJLcjdJRUZVSTdzb0RNeHNhU3pXU29h?= =?utf-8?B?V0lRbzVUK0taZXVROVlveTJsTGxwN1ArVnBEWE9sSnZMeTd3Z3dmSXNSZ09i?= =?utf-8?B?cW5PWG4vTW1CZWlpcW9hOERxMlJ6UjUwMnhNdk9nYS91akFZYVRaUWo2cTFZ?= =?utf-8?B?aE5pVHE2dEJPQTZTaDJXNEhmRk9SdVFFeE9ZRVNCcUR5Qmw3bnMrcFVCSDJY?= =?utf-8?B?WXczSzY2Q2hEOEErRlJldkFSNVRZa2NlNjdHRXcvdUZkZ3hLNkw0SGtTUVpt?= =?utf-8?B?RTRFRVY5SVdOTFFIQ2VTQWs3ZjdpTDY1MXEwUHBBRk9SMlpkYVpjb01Zc09Z?= =?utf-8?B?dGdBMlVVUitPZTJmcUsyNTgvZWkwOHJtai81MDlNbHJPMTdzTFJVN3o1T3Jj?= =?utf-8?B?VjBHV0cwaTM1a1ZRcHErcW8xS2tCOWtMZlowbklmcWZwTzVzd25ZakV4RjYx?= =?utf-8?Q?h9bYXwWe122sJmEf6PcXxYhciGTRx6u+Ht9sMr0X3Kcw=3D?= X-Microsoft-Exchange-Diagnostics: 1; BL2PR02MB2082; 6:KKK9xWhFAUwmVNuh0Qnsztfbx+WzLP2eED68LmYrlVNlB2YHsPkeGayo1RwCstN7Cy/z5pNFymzo8JYXO/YIEybREG6AYXhJ3TD/lwq8NW7euNFl5cIRdmwdSh/rLUmBm5At0z6BCR/LHqLxE277aQcxm88fZ50P9qoXMw63Ma05oyFBMa6tXnccUOT4VKPdQJw2SdwI8kkanoR4NJA/DBdQb9TIfK2cL/7AnG27OQJbL7e7pFXcPpcDl1nc5e+jevQzrgHyS4sjiYppR/BOJNQAP460h+LMW1ETfO40ZIffu8rpE1VGDtdAHqM1DBxrzaaVVBzpAVA0Fp/bZaii8oEJKYxyyG1/4788looDt+OqNfDKNpicF1uAGF4WW1ajXQ/UfuiedB5prQC4LW25eA==; 5:7aKZDXsAYh+HTeE8M/9DX4nusVQ2iSCmEdQoWrYqRQbx/7oiBSIcpx3g+LIfnyDlVK4bGlI3zaWsIzqH34ZPo0Jfcy0g6MIBqn5Tu8m5Xu/an+viT0xdzv50sR+XQ2X6C/N4+GlAyREUQckMN/zeuQ==; 24:HkzL8x+ZIJmRMoqHA6b+xVty8rZXA7ioawfAAqHPV8/9hPt7IZUI8T75kuxxtqDL56AGz91rATEC+/IrrsycCk9p3XDp0kVfUoR3Yx1BHN8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BL2PR02MB2082; 7:GEF01Kgjeq16dRF2IrM9gLTk6eXKCZkKHi5RNS2SmDBSjpTSvY6M5zB5WfOLqXaAQdteI4BGoaaz92fmHI5JRw8kFoFr8x3tdfnVXhwO9xxUq1GbEEtzh9Mn2aDp3lzL/Chaitp8fFfgeWk9CODpQGJU+dzjrLg5ci9IPrTYgSLrruny8VbpFbPwHdeI42gRk8J73DONoff3WpTfI8f11Hn7ylK8QUNgN8kdT+UBJJ43W54p4HjXDGQ9T6OKXf3bhqw32ppEaDBM5Xg009npxuZnJgRwsm0HMsqyy8/U5lxCjBGR5jhpNwAYEZSTfySAqfR0zsmmR0ngYkKxfMu/GA==; 20:5XYkCV2GWtgjiYirzzMRobTXhQf/mWx/jeWHhwexl8852oaj1ZZGkylxZM6WLKXNN4kUvfWh27lGAG2Ro/Hg5VlBpX6T0+ADrtx8Ccc2pCp1/0PdkXF3J0Frf+WS62hHD7Y8BYH/NpOwlKe04yU+zJ+YLi0R747FSe2EFh2T+4U= X-OriginatorOrg: auburn.edu X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Mar 2017 14:35:16.4141 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR02MB2082 |
Commit Message
Justin Brewer
March 21, 2017, 2:35 p.m. UTC
On 03/21/2017 05:55 AM, Florian Weimer wrote: > On 03/19/2017 10:44 PM, Justin Brewer wrote: >> -# if !defined __GNUC__ || defined __STRICT_ANSI__ >> +# if !(defined __GNUC__ && __GNUC_PREREQ(4,8)) || defined >> __STRICT_ANSI__ > > I'm not happy how this disables the useful = warning for clang > altogether. > > Do we have a better option? Is there a way for check for the > -pedantic flag? Not that I've been able to find. In terms of compiler-defined macros, there is no way to detect that pedantic mode is enabled. The following command gives no output, for any gcc or clang version I have on hand: $ diff <($CC -E -dM - </dev/null) <($CC -E -dM -pedantic - </dev/null) clang does have a specific warning flag for this (-Wgnu-statement-expression), so we can inject _Pragma calls into the macro to silence it. The following achieves the desired effect in clang, but throws pramga warnings in gcc. If you actually want to go down this path, I can fix the gcc warnings and update my patch. # ifdef __USE_GNU
--- a/assert.h 2017-03-12 22:30:17.299019029 -0400 +++ b/assert.h 2017-03-21 10:06:48.253673891 -0400 @@ -85,19 +85,22 @@ /* When possible, define assert so that it does not add extra parentheses around EXPR. Otherwise, those added parentheses would suppress warnings we'd expect to be detected by gcc's -Wparentheses. */ -# if !defined __GNUC__ || defined __STRICT_ANSI__ +# if !(defined __clang__ || (defined __GNUC__ && __GNUC_PREREQ(4,8))) || defined __STRICT_ANSI__ # define assert(expr) \ ((expr) \ ? __ASSERT_VOID_CAST (0) \ : __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION)) # else # define assert(expr) \ + _Pragma("clang diagnostic push"); \ + _Pragma("clang diagnostic ignored \"-Wgnu-statement-expression\""); \ ({ \ if (expr) \ ; /* empty */ \ else \ __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION); \ - }) + }); \ + _Pragma("clang diagnostic pop") # endif