From: Robin Holt Date: Wed, 21 Dec 2005 01:45:50 +0000 (-0600) Subject: kbuild: Fix genksyms handling of DEFINE_PER_CPU(struct foo_s *, bar); X-Git-Tag: v2.6.16-rc1~474^2~22^2~4^2~10 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a89a0a2354ae666612968e254d650bfd04f11eb6;p=linux-2.6 kbuild: Fix genksyms handling of DEFINE_PER_CPU(struct foo_s *, bar); 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: Robin Holt Signed-off-by: Sam Ravnborg --- diff --git a/scripts/genksyms/parse.y b/scripts/genksyms/parse.y index 099043713d..ca04c944b7 100644 --- a/scripts/genksyms/parse.y +++ b/scripts/genksyms/parse.y @@ -197,6 +197,7 @@ storage_class_specifier: type_specifier: simple_type_specifier | cvar_qualifier + | TYPEOF_KEYW '(' decl_specifier_seq '*' ')' | TYPEOF_KEYW '(' decl_specifier_seq ')' /* References to s/u/e's defined elsewhere. Rearrange things