summaryrefslogtreecommitdiffstats
path: root/scripts/genksyms
diff options
context:
space:
mode:
authorRobin Holt <holt@sgi.com>2005-12-21 02:45:50 +0100
committerSam Ravnborg <sam@mars.ravnborg.org>2005-12-26 22:39:55 +0100
commita89a0a2354ae666612968e254d650bfd04f11eb6 (patch)
tree37b8791eb9b6580d511fd514cd180145e39ed04f /scripts/genksyms
parentkbuild: set correct KBUILD_MODNAME when using well known kernel symbols as mo... (diff)
downloadlinux-a89a0a2354ae666612968e254d650bfd04f11eb6.tar.xz
linux-a89a0a2354ae666612968e254d650bfd04f11eb6.zip
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 <holt@sgi.com> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Diffstat (limited to 'scripts/genksyms')
-rw-r--r--scripts/genksyms/parse.y1
1 files changed, 1 insertions, 0 deletions
diff --git a/scripts/genksyms/parse.y b/scripts/genksyms/parse.y
index 099043713db4..ca04c944b7c3 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