diff options
author | Atsushi Nemoto <anemo@mba.ocn.ne.jp> | 2006-05-23 00:45:07 +0900 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2006-06-06 00:15:10 +0100 |
commit | f3bf07b9a367c342bcbc9f47d525d3cf5e8b4f3b (patch) | |
tree | ef2b98ffd23f41a016f015ad78cf73a75d3647df /arch/mips | |
parent | 320e6aba26892b016293190e079f15e83a5c28b9 (diff) | |
download | op-kernel-dev-f3bf07b9a367c342bcbc9f47d525d3cf5e8b4f3b.zip op-kernel-dev-f3bf07b9a367c342bcbc9f47d525d3cf5e8b4f3b.tar.gz |
[MIPS] Ignore unresolved weak symbols in modules.
Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips')
-rw-r--r-- | arch/mips/kernel/module.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/mips/kernel/module.c b/arch/mips/kernel/module.c index e54a7f4..d7bf021 100644 --- a/arch/mips/kernel/module.c +++ b/arch/mips/kernel/module.c @@ -288,6 +288,9 @@ int apply_relocate(Elf_Shdr *sechdrs, const char *strtab, sym = (Elf_Sym *)sechdrs[symindex].sh_addr + ELF_MIPS_R_SYM(rel[i]); if (!sym->st_value) { + /* Ignore unresolved weak symbol */ + if (ELF_ST_BIND(sym->st_info) == STB_WEAK) + continue; printk(KERN_WARNING "%s: Unknown symbol %s\n", me->name, strtab + sym->st_name); return -ENOENT; @@ -325,6 +328,9 @@ int apply_relocate_add(Elf_Shdr *sechdrs, const char *strtab, sym = (Elf_Sym *)sechdrs[symindex].sh_addr + ELF_MIPS_R_SYM(rel[i]); if (!sym->st_value) { + /* Ignore unresolved weak symbol */ + if (ELF_ST_BIND(sym->st_info) == STB_WEAK) + continue; printk(KERN_WARNING "%s: Unknown symbol %s\n", me->name, strtab + sym->st_name); return -ENOENT; |