From 618a7224dd9102ab898b99ecffbcdbdc52db87b0 Mon Sep 17 00:00:00 2001 From: Atsushi Nemoto Date: Tue, 23 May 2006 00:45:07 +0900 Subject: [PATCH] --- yaml --- r: 27121 b: refs/heads/master c: f3bf07b9a367c342bcbc9f47d525d3cf5e8b4f3b h: refs/heads/master i: 27119: cb876f26e379e91576deb9e688189951800efebe v: v3 --- [refs] | 2 +- trunk/arch/mips/kernel/module.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index efb2eb358b44..814eb2f66dbd 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 320e6aba26892b016293190e079f15e83a5c28b9 +refs/heads/master: f3bf07b9a367c342bcbc9f47d525d3cf5e8b4f3b diff --git a/trunk/arch/mips/kernel/module.c b/trunk/arch/mips/kernel/module.c index e54a7f442f8a..d7bf0215bc1d 100644 --- a/trunk/arch/mips/kernel/module.c +++ b/trunk/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;