• Robin Holt's avatar
    kbuild: Fix genksyms handling of DEFINE_PER_CPU(struct foo_s *, bar); · a89a0a23
    Robin Holt authored
    This is a one-line change to parse.y.
    To take advantage of this the scripts/genksyms/*_shipped files needs to
    be rebuild - this is the next patch.
    
    When a .c file contains:
    DEFINE_PER_CPU(struct foo_s *, bar);
    
    the .cpp output looks like:
    __attribute__((__section__(".data.percpu"))) __typeof__(struct foo_s *) per_cpu__bar;
    
    With the existing parse.y, the value inside the paranthesis of
    __typeof__() does not evaluate as a type_specifier and therefore
    per_cpu__bar does not get assigned a type for genksyms which results in
    the EXPORT_PER_CPU_SYMBOL() not generating a CRC value.
    
    I have compared the Modules.symvers with and without this
    patch and for ia64's defconfig, the only change is:
    Before 0x00000000    per_cpu____sn_nodepda   vmlinux
    After  0x9d3f3faa    per_cpu____sn_nodepda   vmlinux
    
    per_cpu____sn_nodepda was the original source of my problems.
    Signed-off-by: default avatarRobin Holt <holt@sgi.com>
    Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
    a89a0a23
parse.y 10.1 KB