Re: Moving to C11? (was Re: Redefinition of typedefs (C11 feature))

2020-09-14 Thread Eduardo Habkost
On Mon, Sep 14, 2020 at 05:36:30PM +0200, Thomas Huth wrote:
> On 14/09/2020 15.46, Eduardo Habkost wrote:
> > On Mon, Sep 14, 2020 at 07:39:09AM +0200, Thomas Huth wrote:
> >> On 13/09/2020 04.51, Eduardo Habkost wrote:
> >>> On Sat, Sep 12, 2020 at 08:45:19AM +0200, Thomas Huth wrote:
>  On 11/09/2020 22.06, Eduardo Habkost wrote:
> > On Fri, Sep 11, 2020 at 08:06:10PM +0100, Peter Maydell wrote:
> >> On Fri, 11 Sep 2020 at 19:49, Eduardo Habkost  
> >> wrote:
> >>>
> >>> I'm wondering: do our supported build host platforms all include
> >>> compilers that are new enough to let us redefine typedefs?
> >>>
> >>> The ability to redefine typedefs is a C11 feature which would be
> >>> very useful for simplifying our QOM boilerplate code.  The
> >>> feature is supported by GCC since 2011 (v4.6.0)[1], and by clang
> >>> since 2012 (v3.1)[2].
> >>
> >> In configure we mandate either GCC v4.8 or better, or
> >> clang v3.4 or better, or XCode Clang v5.1 or better
> >> (Apple uses a different version numbering setup to upstream).
> >> So you should probably double-check that that xcode clang has
> >> what you want, but it looks like we're good to go otherwise.
> >
> > Can anybody confirm if the following is accurate?
> >
> > https://gist.github.com/yamaya/2924292#file-xcode-clang-vers-L67
> > # Xcode 5.1 (5B130a)
> > Apple LLVM version 5.1 (clang-503.0.38) (based on LLVM 3.4svn)
> > Target: x86_64-apple-darwin13.1.0
> > Thread model: posix
> >
> > If we know we have GCC 4.8+ or clang 3.4+, can we move to C11 and
> > start using -std=gnu11?
> 
>  You don't have to switch to gnu11, redefintions of typedefs are already
>  fine in gnu99, they are a gnu extension there to the c99 standard.
> 
>  See also:
>  https://git.qemu.org/?p=qemu.git;a=commitdiff;h=7be41675f7cb16b
> 
>  https://www.mail-archive.com/qemu-devel@nongnu.org/msg585581.html
> >>>
> >>> They still trigger a warning with gnu99 on clang:
> >>>
> >>> $ clang --version
> >>> clang version 10.0.0 (Fedora 10.0.0-2.fc32)
> >>> Target: x86_64-unknown-linux-gnu
> >>> Thread model: posix
> >>> InstalledDir: /usr/bin
> >>> $ cat test.c
> >>> typedef struct A A;
> >>> typedef struct A A;
> >>> $ clang -std=gnu11 -c test.c
> >>> $ clang -std=gnu99 -c test.c
> >>> test.c:2:18: warning: redefinition of typedef 'A' is a C11 feature 
> >>> [-Wtypedef-redefinition]
> >>> typedef struct A A;
> >>
> >> Ah, right, I forgot about that ... so for clang, we silence that warning
> >> via CFLAGS in the configure script. See commit e6e90feedb706b1.
> > 
> > Nice, I hadn't seen that.  This means we don't need C11 for
> > supporting redefinition of typedefs.
> > 
> > Now, do we have other reasons for not moving to C11?  It would be
> > nice to make QEMU_GENERIC unnecessary and just use _Generic, for
> > example.
> 
> See https://www.mail-archive.com/qemu-devel@nongnu.org/msg585581.html
> ... c11 is still "experimental" in GCC 4.8, so I think we likely have to
> wait 'till summer next year - then we do not have to support
> RHEL7/CentOS7 anymore according our support policy, and thus we can bump
> the minimum required compiler versions.

Thanks Thomas and Daniel for the pointers.  Staying with gnu99
for a little longer sounds reasonable, now that we typedef
redefinitions are allowed.

-- 
Eduardo




Re: Moving to C11? (was Re: Redefinition of typedefs (C11 feature))

2020-09-14 Thread Thomas Huth
On 14/09/2020 15.46, Eduardo Habkost wrote:
> On Mon, Sep 14, 2020 at 07:39:09AM +0200, Thomas Huth wrote:
>> On 13/09/2020 04.51, Eduardo Habkost wrote:
>>> On Sat, Sep 12, 2020 at 08:45:19AM +0200, Thomas Huth wrote:
 On 11/09/2020 22.06, Eduardo Habkost wrote:
> On Fri, Sep 11, 2020 at 08:06:10PM +0100, Peter Maydell wrote:
>> On Fri, 11 Sep 2020 at 19:49, Eduardo Habkost  
>> wrote:
>>>
>>> I'm wondering: do our supported build host platforms all include
>>> compilers that are new enough to let us redefine typedefs?
>>>
>>> The ability to redefine typedefs is a C11 feature which would be
>>> very useful for simplifying our QOM boilerplate code.  The
>>> feature is supported by GCC since 2011 (v4.6.0)[1], and by clang
>>> since 2012 (v3.1)[2].
>>
>> In configure we mandate either GCC v4.8 or better, or
>> clang v3.4 or better, or XCode Clang v5.1 or better
>> (Apple uses a different version numbering setup to upstream).
>> So you should probably double-check that that xcode clang has
>> what you want, but it looks like we're good to go otherwise.
>
> Can anybody confirm if the following is accurate?
>
> https://gist.github.com/yamaya/2924292#file-xcode-clang-vers-L67
> # Xcode 5.1 (5B130a)
> Apple LLVM version 5.1 (clang-503.0.38) (based on LLVM 3.4svn)
> Target: x86_64-apple-darwin13.1.0
> Thread model: posix
>
> If we know we have GCC 4.8+ or clang 3.4+, can we move to C11 and
> start using -std=gnu11?

 You don't have to switch to gnu11, redefintions of typedefs are already
 fine in gnu99, they are a gnu extension there to the c99 standard.

 See also:
 https://git.qemu.org/?p=qemu.git;a=commitdiff;h=7be41675f7cb16b

 https://www.mail-archive.com/qemu-devel@nongnu.org/msg585581.html
>>>
>>> They still trigger a warning with gnu99 on clang:
>>>
>>> $ clang --version
>>> clang version 10.0.0 (Fedora 10.0.0-2.fc32)
>>> Target: x86_64-unknown-linux-gnu
>>> Thread model: posix
>>> InstalledDir: /usr/bin
>>> $ cat test.c
>>> typedef struct A A;
>>> typedef struct A A;
>>> $ clang -std=gnu11 -c test.c
>>> $ clang -std=gnu99 -c test.c
>>> test.c:2:18: warning: redefinition of typedef 'A' is a C11 feature 
>>> [-Wtypedef-redefinition]
>>> typedef struct A A;
>>
>> Ah, right, I forgot about that ... so for clang, we silence that warning
>> via CFLAGS in the configure script. See commit e6e90feedb706b1.
> 
> Nice, I hadn't seen that.  This means we don't need C11 for
> supporting redefinition of typedefs.
> 
> Now, do we have other reasons for not moving to C11?  It would be
> nice to make QEMU_GENERIC unnecessary and just use _Generic, for
> example.

See https://www.mail-archive.com/qemu-devel@nongnu.org/msg585581.html
... c11 is still "experimental" in GCC 4.8, so I think we likely have to
wait 'till summer next year - then we do not have to support
RHEL7/CentOS7 anymore according our support policy, and thus we can bump
the minimum required compiler versions.

 Thomas




Re: Moving to C11? (was Re: Redefinition of typedefs (C11 feature))

2020-09-14 Thread Eduardo Habkost
On Mon, Sep 14, 2020 at 07:39:09AM +0200, Thomas Huth wrote:
> On 13/09/2020 04.51, Eduardo Habkost wrote:
> > On Sat, Sep 12, 2020 at 08:45:19AM +0200, Thomas Huth wrote:
> >> On 11/09/2020 22.06, Eduardo Habkost wrote:
> >>> On Fri, Sep 11, 2020 at 08:06:10PM +0100, Peter Maydell wrote:
>  On Fri, 11 Sep 2020 at 19:49, Eduardo Habkost  
>  wrote:
> >
> > I'm wondering: do our supported build host platforms all include
> > compilers that are new enough to let us redefine typedefs?
> >
> > The ability to redefine typedefs is a C11 feature which would be
> > very useful for simplifying our QOM boilerplate code.  The
> > feature is supported by GCC since 2011 (v4.6.0)[1], and by clang
> > since 2012 (v3.1)[2].
> 
>  In configure we mandate either GCC v4.8 or better, or
>  clang v3.4 or better, or XCode Clang v5.1 or better
>  (Apple uses a different version numbering setup to upstream).
>  So you should probably double-check that that xcode clang has
>  what you want, but it looks like we're good to go otherwise.
> >>>
> >>> Can anybody confirm if the following is accurate?
> >>>
> >>> https://gist.github.com/yamaya/2924292#file-xcode-clang-vers-L67
> >>> # Xcode 5.1 (5B130a)
> >>> Apple LLVM version 5.1 (clang-503.0.38) (based on LLVM 3.4svn)
> >>> Target: x86_64-apple-darwin13.1.0
> >>> Thread model: posix
> >>>
> >>> If we know we have GCC 4.8+ or clang 3.4+, can we move to C11 and
> >>> start using -std=gnu11?
> >>
> >> You don't have to switch to gnu11, redefintions of typedefs are already
> >> fine in gnu99, they are a gnu extension there to the c99 standard.
> >>
> >> See also:
> >> https://git.qemu.org/?p=qemu.git;a=commitdiff;h=7be41675f7cb16b
> >>
> >> https://www.mail-archive.com/qemu-devel@nongnu.org/msg585581.html
> > 
> > They still trigger a warning with gnu99 on clang:
> > 
> > $ clang --version
> > clang version 10.0.0 (Fedora 10.0.0-2.fc32)
> > Target: x86_64-unknown-linux-gnu
> > Thread model: posix
> > InstalledDir: /usr/bin
> > $ cat test.c
> > typedef struct A A;
> > typedef struct A A;
> > $ clang -std=gnu11 -c test.c
> > $ clang -std=gnu99 -c test.c
> > test.c:2:18: warning: redefinition of typedef 'A' is a C11 feature 
> > [-Wtypedef-redefinition]
> > typedef struct A A;
> 
> Ah, right, I forgot about that ... so for clang, we silence that warning
> via CFLAGS in the configure script. See commit e6e90feedb706b1.

Nice, I hadn't seen that.  This means we don't need C11 for
supporting redefinition of typedefs.

Now, do we have other reasons for not moving to C11?  It would be
nice to make QEMU_GENERIC unnecessary and just use _Generic, for
example.

-- 
Eduardo




Re: Moving to C11? (was Re: Redefinition of typedefs (C11 feature))

2020-09-14 Thread Daniel P . Berrangé
On Mon, Sep 14, 2020 at 09:46:36AM -0400, Eduardo Habkost wrote:
> On Mon, Sep 14, 2020 at 07:39:09AM +0200, Thomas Huth wrote:
> > On 13/09/2020 04.51, Eduardo Habkost wrote:
> > > On Sat, Sep 12, 2020 at 08:45:19AM +0200, Thomas Huth wrote:
> > >> On 11/09/2020 22.06, Eduardo Habkost wrote:
> > >>> On Fri, Sep 11, 2020 at 08:06:10PM +0100, Peter Maydell wrote:
> >  On Fri, 11 Sep 2020 at 19:49, Eduardo Habkost  
> >  wrote:
> > >
> > > I'm wondering: do our supported build host platforms all include
> > > compilers that are new enough to let us redefine typedefs?
> > >
> > > The ability to redefine typedefs is a C11 feature which would be
> > > very useful for simplifying our QOM boilerplate code.  The
> > > feature is supported by GCC since 2011 (v4.6.0)[1], and by clang
> > > since 2012 (v3.1)[2].
> > 
> >  In configure we mandate either GCC v4.8 or better, or
> >  clang v3.4 or better, or XCode Clang v5.1 or better
> >  (Apple uses a different version numbering setup to upstream).
> >  So you should probably double-check that that xcode clang has
> >  what you want, but it looks like we're good to go otherwise.
> > >>>
> > >>> Can anybody confirm if the following is accurate?
> > >>>
> > >>> https://gist.github.com/yamaya/2924292#file-xcode-clang-vers-L67
> > >>> # Xcode 5.1 (5B130a)
> > >>> Apple LLVM version 5.1 (clang-503.0.38) (based on LLVM 3.4svn)
> > >>> Target: x86_64-apple-darwin13.1.0
> > >>> Thread model: posix
> > >>>
> > >>> If we know we have GCC 4.8+ or clang 3.4+, can we move to C11 and
> > >>> start using -std=gnu11?
> > >>
> > >> You don't have to switch to gnu11, redefintions of typedefs are already
> > >> fine in gnu99, they are a gnu extension there to the c99 standard.
> > >>
> > >> See also:
> > >> https://git.qemu.org/?p=qemu.git;a=commitdiff;h=7be41675f7cb16b
> > >>
> > >> https://www.mail-archive.com/qemu-devel@nongnu.org/msg585581.html
> > > 
> > > They still trigger a warning with gnu99 on clang:
> > > 
> > > $ clang --version
> > > clang version 10.0.0 (Fedora 10.0.0-2.fc32)
> > > Target: x86_64-unknown-linux-gnu
> > > Thread model: posix
> > > InstalledDir: /usr/bin
> > > $ cat test.c
> > > typedef struct A A;
> > > typedef struct A A;
> > > $ clang -std=gnu11 -c test.c
> > > $ clang -std=gnu99 -c test.c
> > > test.c:2:18: warning: redefinition of typedef 'A' is a C11 feature 
> > > [-Wtypedef-redefinition]
> > > typedef struct A A;
> > 
> > Ah, right, I forgot about that ... so for clang, we silence that warning
> > via CFLAGS in the configure script. See commit e6e90feedb706b1.
> 
> Nice, I hadn't seen that.  This means we don't need C11 for
> supporting redefinition of typedefs.
> 
> Now, do we have other reasons for not moving to C11?  It would be
> nice to make QEMU_GENERIC unnecessary and just use _Generic, for
> example.

When we set std=gnu99 in:


  commit 7be41675f7cb16be7c8d2554add7a63fa43781a8
  Author: Thomas Huth 
  Date:   Mon Jan 7 11:25:22 2019 +0100

configure: Force the C standard to gnu99

we chose to not use gnu11, because this standard level is marked as
experimental in GCC 4.8 and thus we felt it wasn't a good idea to
rely on.


Regards,
Daniel
-- 
|: https://berrange.com  -o-https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o-https://fstop138.berrange.com :|
|: https://entangle-photo.org-o-https://www.instagram.com/dberrange :|




Re: Moving to C11? (was Re: Redefinition of typedefs (C11 feature))

2020-09-13 Thread Thomas Huth
On 13/09/2020 04.51, Eduardo Habkost wrote:
> On Sat, Sep 12, 2020 at 08:45:19AM +0200, Thomas Huth wrote:
>> On 11/09/2020 22.06, Eduardo Habkost wrote:
>>> On Fri, Sep 11, 2020 at 08:06:10PM +0100, Peter Maydell wrote:
 On Fri, 11 Sep 2020 at 19:49, Eduardo Habkost  wrote:
>
> I'm wondering: do our supported build host platforms all include
> compilers that are new enough to let us redefine typedefs?
>
> The ability to redefine typedefs is a C11 feature which would be
> very useful for simplifying our QOM boilerplate code.  The
> feature is supported by GCC since 2011 (v4.6.0)[1], and by clang
> since 2012 (v3.1)[2].

 In configure we mandate either GCC v4.8 or better, or
 clang v3.4 or better, or XCode Clang v5.1 or better
 (Apple uses a different version numbering setup to upstream).
 So you should probably double-check that that xcode clang has
 what you want, but it looks like we're good to go otherwise.
>>>
>>> Can anybody confirm if the following is accurate?
>>>
>>> https://gist.github.com/yamaya/2924292#file-xcode-clang-vers-L67
>>> # Xcode 5.1 (5B130a)
>>> Apple LLVM version 5.1 (clang-503.0.38) (based on LLVM 3.4svn)
>>> Target: x86_64-apple-darwin13.1.0
>>> Thread model: posix
>>>
>>> If we know we have GCC 4.8+ or clang 3.4+, can we move to C11 and
>>> start using -std=gnu11?
>>
>> You don't have to switch to gnu11, redefintions of typedefs are already
>> fine in gnu99, they are a gnu extension there to the c99 standard.
>>
>> See also:
>> https://git.qemu.org/?p=qemu.git;a=commitdiff;h=7be41675f7cb16b
>>
>> https://www.mail-archive.com/qemu-devel@nongnu.org/msg585581.html
> 
> They still trigger a warning with gnu99 on clang:
> 
> $ clang --version
> clang version 10.0.0 (Fedora 10.0.0-2.fc32)
> Target: x86_64-unknown-linux-gnu
> Thread model: posix
> InstalledDir: /usr/bin
> $ cat test.c
> typedef struct A A;
> typedef struct A A;
> $ clang -std=gnu11 -c test.c
> $ clang -std=gnu99 -c test.c
> test.c:2:18: warning: redefinition of typedef 'A' is a C11 feature 
> [-Wtypedef-redefinition]
> typedef struct A A;

Ah, right, I forgot about that ... so for clang, we silence that warning
via CFLAGS in the configure script. See commit e6e90feedb706b1.

 Thomas




Re: Moving to C11? (was Re: Redefinition of typedefs (C11 feature))

2020-09-12 Thread Eduardo Habkost
On Sat, Sep 12, 2020 at 08:45:19AM +0200, Thomas Huth wrote:
> On 11/09/2020 22.06, Eduardo Habkost wrote:
> > On Fri, Sep 11, 2020 at 08:06:10PM +0100, Peter Maydell wrote:
> >> On Fri, 11 Sep 2020 at 19:49, Eduardo Habkost  wrote:
> >>>
> >>> I'm wondering: do our supported build host platforms all include
> >>> compilers that are new enough to let us redefine typedefs?
> >>>
> >>> The ability to redefine typedefs is a C11 feature which would be
> >>> very useful for simplifying our QOM boilerplate code.  The
> >>> feature is supported by GCC since 2011 (v4.6.0)[1], and by clang
> >>> since 2012 (v3.1)[2].
> >>
> >> In configure we mandate either GCC v4.8 or better, or
> >> clang v3.4 or better, or XCode Clang v5.1 or better
> >> (Apple uses a different version numbering setup to upstream).
> >> So you should probably double-check that that xcode clang has
> >> what you want, but it looks like we're good to go otherwise.
> > 
> > Can anybody confirm if the following is accurate?
> > 
> > https://gist.github.com/yamaya/2924292#file-xcode-clang-vers-L67
> > # Xcode 5.1 (5B130a)
> > Apple LLVM version 5.1 (clang-503.0.38) (based on LLVM 3.4svn)
> > Target: x86_64-apple-darwin13.1.0
> > Thread model: posix
> > 
> > If we know we have GCC 4.8+ or clang 3.4+, can we move to C11 and
> > start using -std=gnu11?
> 
> You don't have to switch to gnu11, redefintions of typedefs are already
> fine in gnu99, they are a gnu extension there to the c99 standard.
> 
> See also:
> https://git.qemu.org/?p=qemu.git;a=commitdiff;h=7be41675f7cb16b
> 
> https://www.mail-archive.com/qemu-devel@nongnu.org/msg585581.html

They still trigger a warning with gnu99 on clang:

$ clang --version
clang version 10.0.0 (Fedora 10.0.0-2.fc32)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
$ cat test.c
typedef struct A A;
typedef struct A A;
$ clang -std=gnu11 -c test.c
$ clang -std=gnu99 -c test.c
test.c:2:18: warning: redefinition of typedef 'A' is a C11 feature 
[-Wtypedef-redefinition]
typedef struct A A;
 ^
test.c:1:18: note: previous definition is here
typedef struct A A;
 ^
1 warning generated.
$ 

-- 
Eduardo




Re: Moving to C11? (was Re: Redefinition of typedefs (C11 feature))

2020-09-12 Thread Warner Losh
On Sat, Sep 12, 2020, 2:16 AM Philippe Mathieu-Daudé 
wrote:

> On 9/11/20 10:10 PM, Warner Losh wrote:
> >
> >
> > On Fri, Sep 11, 2020 at 2:07 PM Eduardo Habkost  > > wrote:
> >
> > On Fri, Sep 11, 2020 at 08:06:10PM +0100, Peter Maydell wrote:
> > > On Fri, 11 Sep 2020 at 19:49, Eduardo Habkost  > > wrote:
> > > >
> > > > I'm wondering: do our supported build host platforms all include
> > > > compilers that are new enough to let us redefine typedefs?
> > > >
> > > > The ability to redefine typedefs is a C11 feature which would be
> > > > very useful for simplifying our QOM boilerplate code.  The
> > > > feature is supported by GCC since 2011 (v4.6.0)[1], and by clang
> > > > since 2012 (v3.1)[2].
> > >
> > > In configure we mandate either GCC v4.8 or better, or
> > > clang v3.4 or better, or XCode Clang v5.1 or better
> > > (Apple uses a different version numbering setup to upstream).
> > > So you should probably double-check that that xcode clang has
> > > what you want, but it looks like we're good to go otherwise.
> >
> > Can anybody confirm if the following is accurate?
> >
> > https://gist.github.com/yamaya/2924292#file-xcode-clang-vers-L67
> > # Xcode 5.1 (5B130a)
> > Apple LLVM version 5.1 (clang-503.0.38) (based on LLVM 3.4svn)
> > Target: x86_64-apple-darwin13.1.0
> > Thread model: posix
> >
> > If we know we have GCC 4.8+ or clang 3.4+, can we move to C11 and
> > start using -std=gnu11?
> >
> >
> > All supported branches of FreeBSD tier 1 platforms would be fine since
> > they all use clang. Most of the tier 2 ones do too, but the ports/pkg
> > system we have will install a newer compiler if need be (the ones that
> > don't are still stuck at gcc 4.2.1 for GPLv3 reasons).
>
> See the quoted message from Peter: "In configure we mandate either
> GCC v4.8 or better"... You shouldn't be able to build QEMU in ports/pkg.
>

Ah, I was grepping for gcc/clang. It specifies compiler:c11 so I missed
that it already brings in a better compiler on those weird, old platforms.

In any event, FreeBSD won't be a problem

Warner

Regards,
>
> Phil.
>


Re: Moving to C11? (was Re: Redefinition of typedefs (C11 feature))

2020-09-12 Thread Philippe Mathieu-Daudé
On 9/11/20 10:10 PM, Warner Losh wrote:
> 
> 
> On Fri, Sep 11, 2020 at 2:07 PM Eduardo Habkost  > wrote:
> 
> On Fri, Sep 11, 2020 at 08:06:10PM +0100, Peter Maydell wrote:
> > On Fri, 11 Sep 2020 at 19:49, Eduardo Habkost  > wrote:
> > >
> > > I'm wondering: do our supported build host platforms all include
> > > compilers that are new enough to let us redefine typedefs?
> > >
> > > The ability to redefine typedefs is a C11 feature which would be
> > > very useful for simplifying our QOM boilerplate code.  The
> > > feature is supported by GCC since 2011 (v4.6.0)[1], and by clang
> > > since 2012 (v3.1)[2].
> >
> > In configure we mandate either GCC v4.8 or better, or
> > clang v3.4 or better, or XCode Clang v5.1 or better
> > (Apple uses a different version numbering setup to upstream).
> > So you should probably double-check that that xcode clang has
> > what you want, but it looks like we're good to go otherwise.
> 
> Can anybody confirm if the following is accurate?
> 
> https://gist.github.com/yamaya/2924292#file-xcode-clang-vers-L67
> # Xcode 5.1 (5B130a)
> Apple LLVM version 5.1 (clang-503.0.38) (based on LLVM 3.4svn)
> Target: x86_64-apple-darwin13.1.0
> Thread model: posix
> 
> If we know we have GCC 4.8+ or clang 3.4+, can we move to C11 and
> start using -std=gnu11?
> 
> 
> All supported branches of FreeBSD tier 1 platforms would be fine since
> they all use clang. Most of the tier 2 ones do too, but the ports/pkg
> system we have will install a newer compiler if need be (the ones that
> don't are still stuck at gcc 4.2.1 for GPLv3 reasons).

See the quoted message from Peter: "In configure we mandate either
GCC v4.8 or better"... You shouldn't be able to build QEMU in ports/pkg.

Regards,

Phil.



Re: Moving to C11? (was Re: Redefinition of typedefs (C11 feature))

2020-09-12 Thread Thomas Huth
On 11/09/2020 22.06, Eduardo Habkost wrote:
> On Fri, Sep 11, 2020 at 08:06:10PM +0100, Peter Maydell wrote:
>> On Fri, 11 Sep 2020 at 19:49, Eduardo Habkost  wrote:
>>>
>>> I'm wondering: do our supported build host platforms all include
>>> compilers that are new enough to let us redefine typedefs?
>>>
>>> The ability to redefine typedefs is a C11 feature which would be
>>> very useful for simplifying our QOM boilerplate code.  The
>>> feature is supported by GCC since 2011 (v4.6.0)[1], and by clang
>>> since 2012 (v3.1)[2].
>>
>> In configure we mandate either GCC v4.8 or better, or
>> clang v3.4 or better, or XCode Clang v5.1 or better
>> (Apple uses a different version numbering setup to upstream).
>> So you should probably double-check that that xcode clang has
>> what you want, but it looks like we're good to go otherwise.
> 
> Can anybody confirm if the following is accurate?
> 
> https://gist.github.com/yamaya/2924292#file-xcode-clang-vers-L67
> # Xcode 5.1 (5B130a)
> Apple LLVM version 5.1 (clang-503.0.38) (based on LLVM 3.4svn)
> Target: x86_64-apple-darwin13.1.0
> Thread model: posix
> 
> If we know we have GCC 4.8+ or clang 3.4+, can we move to C11 and
> start using -std=gnu11?

You don't have to switch to gnu11, redefintions of typedefs are already
fine in gnu99, they are a gnu extension there to the c99 standard.

See also:
https://git.qemu.org/?p=qemu.git;a=commitdiff;h=7be41675f7cb16b

https://www.mail-archive.com/qemu-devel@nongnu.org/msg585581.html

 HTH,
  Thomas




Re: Moving to C11? (was Re: Redefinition of typedefs (C11 feature))

2020-09-11 Thread Warner Losh
On Fri, Sep 11, 2020 at 2:07 PM Eduardo Habkost  wrote:

> On Fri, Sep 11, 2020 at 08:06:10PM +0100, Peter Maydell wrote:
> > On Fri, 11 Sep 2020 at 19:49, Eduardo Habkost 
> wrote:
> > >
> > > I'm wondering: do our supported build host platforms all include
> > > compilers that are new enough to let us redefine typedefs?
> > >
> > > The ability to redefine typedefs is a C11 feature which would be
> > > very useful for simplifying our QOM boilerplate code.  The
> > > feature is supported by GCC since 2011 (v4.6.0)[1], and by clang
> > > since 2012 (v3.1)[2].
> >
> > In configure we mandate either GCC v4.8 or better, or
> > clang v3.4 or better, or XCode Clang v5.1 or better
> > (Apple uses a different version numbering setup to upstream).
> > So you should probably double-check that that xcode clang has
> > what you want, but it looks like we're good to go otherwise.
>
> Can anybody confirm if the following is accurate?
>
> https://gist.github.com/yamaya/2924292#file-xcode-clang-vers-L67
> # Xcode 5.1 (5B130a)
> Apple LLVM version 5.1 (clang-503.0.38) (based on LLVM 3.4svn)
> Target: x86_64-apple-darwin13.1.0
> Thread model: posix
>
> If we know we have GCC 4.8+ or clang 3.4+, can we move to C11 and
> start using -std=gnu11?
>

All supported branches of FreeBSD tier 1 platforms would be fine since they
all use clang. Most of the tier 2 ones do too, but the ports/pkg system we
have will install a newer compiler if need be (the ones that don't are
still stuck at gcc 4.2.1 for GPLv3 reasons).

Warner


Moving to C11? (was Re: Redefinition of typedefs (C11 feature))

2020-09-11 Thread Eduardo Habkost
On Fri, Sep 11, 2020 at 08:06:10PM +0100, Peter Maydell wrote:
> On Fri, 11 Sep 2020 at 19:49, Eduardo Habkost  wrote:
> >
> > I'm wondering: do our supported build host platforms all include
> > compilers that are new enough to let us redefine typedefs?
> >
> > The ability to redefine typedefs is a C11 feature which would be
> > very useful for simplifying our QOM boilerplate code.  The
> > feature is supported by GCC since 2011 (v4.6.0)[1], and by clang
> > since 2012 (v3.1)[2].
> 
> In configure we mandate either GCC v4.8 or better, or
> clang v3.4 or better, or XCode Clang v5.1 or better
> (Apple uses a different version numbering setup to upstream).
> So you should probably double-check that that xcode clang has
> what you want, but it looks like we're good to go otherwise.

Can anybody confirm if the following is accurate?

https://gist.github.com/yamaya/2924292#file-xcode-clang-vers-L67
# Xcode 5.1 (5B130a)
Apple LLVM version 5.1 (clang-503.0.38) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.1.0
Thread model: posix

If we know we have GCC 4.8+ or clang 3.4+, can we move to C11 and
start using -std=gnu11?

-- 
Eduardo