Ed Schouten wrote:
* Julian Elischer <jul...@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....




_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to