Commit 3ae91c21 authored by Paul Mundt's avatar Paul Mundt Committed by Linus Torvalds

module: fix up CONFIG_KALLSYMS=n build.

Starting from commit 4a496226 "reduce
symbol table for loaded modules (v2)", the kernel/module.c build is broken
with CONFIG_KALLSYMS disabled.

  CC      kernel/module.o
kernel/module.c:1995: warning: type defaults to 'int' in declaration of 'Elf_Hdr'
kernel/module.c:1995: error: expected ';', ',' or ')' before '*' token
kernel/module.c: In function 'load_module':
kernel/module.c:2203: error: 'strmap' undeclared (first use in this function)
kernel/module.c:2203: error: (Each undeclared identifier is reported only once
kernel/module.c:2203: error: for each function it appears in.)
kernel/module.c:2239: error: 'symoffs' undeclared (first use in this function)
kernel/module.c:2239: error: implicit declaration of function 'layout_symtab'
kernel/module.c:2240: error: 'stroffs' undeclared (first use in this function)
make[1]: *** [kernel/module.o] Error 1
make: *** [kernel/module.o] Error 2

There are three different issues:

    - layout_symtab() takes a const Elf_Ehdr

    - layout_symtab() needs to return a value

    - symoffs/stroffs/strmap are referenced by the load_module() code
      despite being ifdefed out, which seems unnecessary given the noop
      behaviour of layout_symtab()/add_kallsyms() in the case of
      CONFIG_KALLSYMS=n.
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
Acked-by: default avatarJan Beulich <jbeulich@novell.com>
Acked-by: default avatarRusty Russell <rusty@rustcorp.com.au>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 817b33d3
...@@ -1992,12 +1992,14 @@ static inline unsigned long layout_symtab(struct module *mod, ...@@ -1992,12 +1992,14 @@ static inline unsigned long layout_symtab(struct module *mod,
Elf_Shdr *sechdrs, Elf_Shdr *sechdrs,
unsigned int symindex, unsigned int symindex,
unsigned int strindex, unsigned int strindex,
const Elf_Hdr *hdr, const Elf_Ehdr *hdr,
const char *secstrings, const char *secstrings,
unsigned long *pstroffs, unsigned long *pstroffs,
unsigned long *strmap) unsigned long *strmap)
{ {
return 0;
} }
static inline void add_kallsyms(struct module *mod, static inline void add_kallsyms(struct module *mod,
Elf_Shdr *sechdrs, Elf_Shdr *sechdrs,
unsigned int shnum, unsigned int shnum,
...@@ -2081,9 +2083,8 @@ static noinline struct module *load_module(void __user *umod, ...@@ -2081,9 +2083,8 @@ static noinline struct module *load_module(void __user *umod,
struct module *mod; struct module *mod;
long err = 0; long err = 0;
void *percpu = NULL, *ptr = NULL; /* Stops spurious gcc warning */ void *percpu = NULL, *ptr = NULL; /* Stops spurious gcc warning */
#ifdef CONFIG_KALLSYMS
unsigned long symoffs, stroffs, *strmap; unsigned long symoffs, stroffs, *strmap;
#endif
mm_segment_t old_fs; mm_segment_t old_fs;
DEBUGP("load_module: umod=%p, len=%lu, uargs=%p\n", DEBUGP("load_module: umod=%p, len=%lu, uargs=%p\n",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment