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:
parent
83460ec8dc
commit
b5064654c5
1 changed files with 7 additions and 8 deletions
|
@ -599,18 +599,17 @@ static void handle_modversions(struct module *mod, struct elf_info *info,
|
|||
else
|
||||
export = export_from_sec(info, get_secindex(info, sym));
|
||||
|
||||
/* CRC'd symbol */
|
||||
if (strncmp(symname, CRC_PFX, strlen(CRC_PFX)) == 0) {
|
||||
crc = (unsigned int) sym->st_value;
|
||||
sym_update_crc(symname + strlen(CRC_PFX), mod, crc,
|
||||
export);
|
||||
}
|
||||
|
||||
switch (sym->st_shndx) {
|
||||
case SHN_COMMON:
|
||||
warn("\"%s\" [%s] is COMMON symbol\n", symname, mod->name);
|
||||
break;
|
||||
case SHN_ABS:
|
||||
/* CRC'd symbol */
|
||||
if (strncmp(symname, CRC_PFX, strlen(CRC_PFX)) == 0) {
|
||||
crc = (unsigned int) sym->st_value;
|
||||
sym_update_crc(symname + strlen(CRC_PFX), mod, crc,
|
||||
export);
|
||||
}
|
||||
break;
|
||||
case SHN_UNDEF:
|
||||
/* undefined symbol */
|
||||
if (ELF_ST_BIND(sym->st_info) != STB_GLOBAL &&
|
||||
|
|
Loading…
Reference in a new issue