On Mon, Aug 26, 2019 at 2:22 PM Nick Desaulniers <ndesaulni...@google.com> wrote: > > I'm looking into a linkage failure for one of our device kernels, and > it seems that genksyms isn't producing a hash value correctly for > aggregate definitions that contain __attribute__s like > __attribute__((packed)). > > Example: > $ echo 'struct foo { int bar; };' | ./scripts/genksyms/genksyms -d > Defn for struct foo == <struct foo { int bar ; } > > Hash table occupancy 1/4096 = 0.000244141 > $ echo 'struct __attribute__((packed)) foo { int bar; };' | > ./scripts/genksyms/genksyms -d > Hash table occupancy 0/4096 = 0 > > I assume the __attribute__ part isn't being parsed correctly (looks > like genksyms is a lex/yacc based C parser). > > The issue we have in our out of tree driver (*sadface*) is basically a > EXPORT_SYMBOL'd function whose signature contains a packed struct. > > Theoretically, there should be nothing wrong with exporting a function > that requires packed structs, and this is just a bug in the lex/yacc > based parser, right? I assume that not having CONFIG_MODVERSIONS > coverage of packed structs in particular could lead to potentially > not-fun bugs? Or is using packed structs in exported function symbols > with CONFIG_MODVERSIONS forbidden in some documentation somewhere I > missed?
Ah, looks like I'm late to the party: https://lwn.net/Articles/707520/ -- Thanks, ~Nick Desaulniers