Making Netgraph compile with LLVM
Julian Elischer
julian at elischer.org
Sun Mar 1 14:10:20 PST 2009
Ed Schouten wrote:
> * Julian Elischer <julian at elischer.org> wrote:
>> Ed Schouten wrote:
>>> Hello all,
>>>
>>> It turns out Netgraph uses a language construct that is only allowed
>>> with GCC, but not with LLVM. According to the specs, LLVM's behaviour is
>>> correct. It is not allowed to do this:
>>>
>>> struct a {
>>> struct {
>>> int i;
>>> char j[];
>>> } b;
>>> char k[20];
>>> };
>>>
>>> error: variable sized type 'b' must be at end of struct or class
>> not sure wher eyou are seeing this.
>>
>> the examples you fix don't seem to be nested structs.. what is the
>> outer struct?
>
> In the Netgraph code, this isn't done in a single declaration, but there
> are several structs that (indirectly) nest pppoe_tags. An example is
> ng_pppoe.c, line 1179:
>
> struct {
> struct pppoe_tag hdr;
> union uniq data;
> } __packed uniqtag;
>
> It turns out that this is not valid:
>
> http://llvm.org/bugs/show_bug.cgi?id=3671
then the answer is to create a separate structure 'tag header'
that can be used in both places. I think....
>
More information about the freebsd-net
mailing list