From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 142F3C28CC5 for ; Wed, 5 Jun 2019 17:05:39 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D0BAD206C3 for ; Wed, 5 Jun 2019 17:05:38 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D0BAD206C3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([127.0.0.1]:46872 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hYZM1-0004zn-RJ for qemu-devel@archiver.kernel.org; Wed, 05 Jun 2019 13:05:37 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48777) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hYZKy-0004bU-Rf for qemu-devel@nongnu.org; Wed, 05 Jun 2019 13:04:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hYZKx-00020J-6y for qemu-devel@nongnu.org; Wed, 05 Jun 2019 13:04:32 -0400 Received: from mx1.redhat.com ([209.132.183.28]:58258) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hYZKw-0001z2-TC for qemu-devel@nongnu.org; Wed, 05 Jun 2019 13:04:31 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C541830D3652; Wed, 5 Jun 2019 17:04:10 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-116-187.ams2.redhat.com [10.36.116.187]) by smtp.corp.redhat.com (Postfix) with ESMTP id F2ACD36F9; Wed, 5 Jun 2019 17:03:31 +0000 (UTC) To: =?UTF-8?Q?Daniel_P._Berrang=c3=a9?= References: <87lfyqla7r.fsf@dusky.pond.sub.org> <20190605142300.GB8956@redhat.com> <20190605162348.GN8956@redhat.com> From: Laszlo Ersek Message-ID: Date: Wed, 5 Jun 2019 19:03:31 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <20190605162348.GN8956@redhat.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.42]); Wed, 05 Jun 2019 17:04:30 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: Re: [Qemu-devel] Headers without multiple inclusion guards X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Chris Wulff , Sagar Karandikar , David Hildenbrand , James Hogan , Anthony Green , Palmer Dabbelt , Mark Cave-Ayland , qemu-devel@nongnu.org, Max Filippov , Dmitry Fleytman , Alistair Francis , Gerd Hoffmann , "Edgar E. Iglesias" , Guan Xuetao , Marek Vasut , Stefano Stabellini , Aleksandar Rikalo , Helge Deller , "Michael S. Tsirkin" , Markus Armbruster , Halil Pasic , Christian Borntraeger , Anthony Perard , Richard Henderson , Jason Wang , Artyom Tarasenko , Laurent Vivier , Thomas Huth , Riku Voipio , Eduardo Habkost , Alistair Francis , Greg Kurz , Marcelo Tosatti , Beniamino Galvani , Eric Auger , Paul Durrant , Stafford Horne , =?UTF-8?Q?Alex_Benn=c3=a9e?= , David Gibson , Claudio Fontana , Bastian Koppelmann , Cornelia Huck , Claudio Fontana , Laurent Vivier , Andrew Baumann , =?UTF-8?Q?Philippe_Mathieu-Daud=c3=a9?= , Michael Walle , Aleksandar Markovic , Paolo Bonzini , Aurelien Jarno , =?UTF-8?Q?Philippe_Mathieu-Daud=c3=a9?= Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" On 06/05/19 18:23, Daniel P. Berrang=C3=A9 wrote: > On Wed, Jun 05, 2019 at 06:18:38PM +0200, Laszlo Ersek wrote: >> On 06/05/19 16:23, Daniel P. Berrang=C3=A9 wrote: >>> On Tue, May 28, 2019 at 08:12:24PM +0200, Markus Armbruster wrote: >>>> We have a bunch of headers without multiple inclusion guards. Some = are >>>> clearly intentional, some look accidental. Too many for me to find = out >>>> by examining each of them, so I'm asking their maintainers. >>>> >>>> Why do I ask? I'd like to mark the intentional ones and fix the >>>> accidental ones, so they don't flunk "make check-headers" from "[RFC= v4 >>>> 0/7] Baby steps towards saner headers" just because they lack multip= le >>>> inclusion guards. >>>> >>>> Just in case: what's a multiple inclusion guard? It's >>>> >>>> #ifndef UNIQUE_GUARD_SYMBOL_H >>>> #define UNIQUE_GUARD_SYMBOL_H >>>> ... >>>> #endif >>>> >>>> with nothing but comments outside the conditional, so that the heade= r >>>> can safely be included more than once. >>> >>> Any opinions on using the less verbose syntax instead: >>> >>> #pragma once >>> >>> It is not portable C, but we explicitly only care about GCC or CLang, >>> so portability isn't an issue for us. >> >> I don't feel strongly about this particular question, so if folks pref= er >> "#pragma once", I won't complain. I'd just like to report that section= 6 >> of "HACKING" appears the opposite of "we explicitly only care about GC= C >> or CLang". >=20 > Heh, yeah that doc does require some updating, as we certainly don't > require conformance to the vanilla C standard any more. We now explici= tly > request "-std=3Dgnu99" as the conformance level which allows many GNU > extensions to the standard. >=20 > commit 7be41675f7cb16be7c8d2554add7a63fa43781a8 > Author: Thomas Huth > Date: Mon Jan 7 11:25:22 2019 +0100 >=20 > configure: Force the C standard to gnu99 > =20 > Different versions of GCC and Clang use different versions of the C= standard. > This repeatedly caused problems already, e.g. with duplicated typed= efs: > =20 > https://lists.gnu.org/archive/html/qemu-devel/2018-11/msg05829.htm= l > =20 > or with for-loop variable initializers: > =20 > https://lists.gnu.org/archive/html/qemu-devel/2019-01/msg00237.htm= l > =20 > To avoid these problems, we should enforce the C language version t= o the > same level for all compilers. Since our minimum compiler versions i= s > GCC v4.8, our best option is "gnu99" for C code right now ("gnu17" = is not > available there yet, and "gnu11" is marked as "experimental"), and = "gnu++98" > for the few C++ code that we have in the repository. TIL :) Thanks! Laszlo > The HACKING docs predate this commit, and when reviewing, we failed to > notice we needed to update HACKING to match our new policy. >=20 > Regards, > Daniel >=20