scripts/mod/modpost.c: handle non ABS crc symbols
For some reason I managed to trick gcc into create CRC symbols that are not absolute anymore, but weak. Make modpost handle this case. Signed-off-by: Andi Kleen <ak@linux.intel.com> Cc: Al Viro <viro@ZenIV.linux.org.uk> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
83460ec8dc
commit
b5064654c5
@@ -599,17 +599,16 @@ static void handle_modversions(struct module *mod, struct elf_info *info,
|
|||||||
else
|
else
|
||||||
export = export_from_sec(info, get_secindex(info, sym));
|
export = export_from_sec(info, get_secindex(info, sym));
|
||||||
|
|
||||||
switch (sym->st_shndx) {
|
|
||||||
case SHN_COMMON:
|
|
||||||
warn("\"%s\" [%s] is COMMON symbol\n", symname, mod->name);
|
|
||||||
break;
|
|
||||||
case SHN_ABS:
|
|
||||||
/* CRC'd symbol */
|
/* CRC'd symbol */
|
||||||
if (strncmp(symname, CRC_PFX, strlen(CRC_PFX)) == 0) {
|
if (strncmp(symname, CRC_PFX, strlen(CRC_PFX)) == 0) {
|
||||||
crc = (unsigned int) sym->st_value;
|
crc = (unsigned int) sym->st_value;
|
||||||
sym_update_crc(symname + strlen(CRC_PFX), mod, crc,
|
sym_update_crc(symname + strlen(CRC_PFX), mod, crc,
|
||||||
export);
|
export);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch (sym->st_shndx) {
|
||||||
|
case SHN_COMMON:
|
||||||
|
warn("\"%s\" [%s] is COMMON symbol\n", symname, mod->name);
|
||||||
break;
|
break;
|
||||||
case SHN_UNDEF:
|
case SHN_UNDEF:
|
||||||
/* undefined symbol */
|
/* undefined symbol */
|
||||||
|
Reference in New Issue
Block a user