svn commit: r314862 - head/sys/modules/qlxgbe

Bruce Evans brde at optusnet.com.au
Wed Mar 8 09:04:36 UTC 2017


On Wed, 8 Mar 2017, Andriy Gapon wrote:

> On 08/03/2017 00:17, Gleb Smirnoff wrote:
>> On Tue, Mar 07, 2017 at 03:43:49PM +0000, Andriy Gapon wrote:
>> A> Author: avg
>> A> Date: Tue Mar  7 15:43:49 2017
>> A> New Revision: 314862
>> A> URL: https://svnweb.freebsd.org/changeset/base/314862
>> A>
>> A> Log:
>> A>   qlxgbe: add GCC_MS_EXTENSIONS to CFLAGS to make old base GCC happy
>> A>
>> A>   The module uses unnamed structure and union fields and base GCC in
>> A>   stable/10 doesn't like it.
>> A>   I think that that is a C11 feature, so it is courteous of more modern
>> A>   compilers to not complain about it when compiling in C99 mode.
>>
>> There are a lot of code in kernel, that uses anonymous structs and unions.
>> This feature is enabled globally. Why does this module need special treatment?

There is not a lot of such code.  There are a lot of ugly macros like
'define v_rdev v_un.vu_cdev' to avoid having such code since it is
unportable.

> That's a good question and I don't have a good answer to it.
> All I can say is that a GCC build of GENERIC and modules failed in that fashion
> only for this module (in stable/10).
> Maybe I described the problem incorrectly.  Then, a proper explanation is welcome.

I think gcc always had anonymous struct/unions, but GCC_MS_EXTENSIONS gives
a MSS variant of them which is even more unportable (but may actually be
better).

Bruce


More information about the svn-src-all mailing list