Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes
* git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes: kbuild: ignore powerpc specific symbols in modpost
This commit is contained in:
commit
95dcf8350d
|
@ -467,6 +467,25 @@ static void parse_elf_finish(struct elf_info *info)
|
||||||
release_file(info->hdr, info->size);
|
release_file(info->hdr, info->size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int ignore_undef_symbol(struct elf_info *info, const char *symname)
|
||||||
|
{
|
||||||
|
/* ignore __this_module, it will be resolved shortly */
|
||||||
|
if (strcmp(symname, MODULE_SYMBOL_PREFIX "__this_module") == 0)
|
||||||
|
return 1;
|
||||||
|
/* ignore global offset table */
|
||||||
|
if (strcmp(symname, "_GLOBAL_OFFSET_TABLE_") == 0)
|
||||||
|
return 1;
|
||||||
|
if (info->hdr->e_machine == EM_PPC)
|
||||||
|
/* Special register function linked on all modules during final link of .ko */
|
||||||
|
if (strncmp(symname, "_restgpr_", sizeof("_restgpr_") - 1) == 0 ||
|
||||||
|
strncmp(symname, "_savegpr_", sizeof("_savegpr_") - 1) == 0 ||
|
||||||
|
strncmp(symname, "_rest32gpr_", sizeof("_rest32gpr_") - 1) == 0 ||
|
||||||
|
strncmp(symname, "_save32gpr_", sizeof("_save32gpr_") - 1) == 0)
|
||||||
|
return 1;
|
||||||
|
/* Do not ignore this symbol */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
#define CRC_PFX MODULE_SYMBOL_PREFIX "__crc_"
|
#define CRC_PFX MODULE_SYMBOL_PREFIX "__crc_"
|
||||||
#define KSYMTAB_PFX MODULE_SYMBOL_PREFIX "__ksymtab_"
|
#define KSYMTAB_PFX MODULE_SYMBOL_PREFIX "__ksymtab_"
|
||||||
|
|
||||||
|
@ -493,11 +512,7 @@ static void handle_modversions(struct module *mod, struct elf_info *info,
|
||||||
if (ELF_ST_BIND(sym->st_info) != STB_GLOBAL &&
|
if (ELF_ST_BIND(sym->st_info) != STB_GLOBAL &&
|
||||||
ELF_ST_BIND(sym->st_info) != STB_WEAK)
|
ELF_ST_BIND(sym->st_info) != STB_WEAK)
|
||||||
break;
|
break;
|
||||||
/* ignore global offset table */
|
if (ignore_undef_symbol(info, symname))
|
||||||
if (strcmp(symname, "_GLOBAL_OFFSET_TABLE_") == 0)
|
|
||||||
break;
|
|
||||||
/* ignore __this_module, it will be resolved shortly */
|
|
||||||
if (strcmp(symname, MODULE_SYMBOL_PREFIX "__this_module") == 0)
|
|
||||||
break;
|
break;
|
||||||
/* cope with newer glibc (2.3.4 or higher) STT_ definition in elf.h */
|
/* cope with newer glibc (2.3.4 or higher) STT_ definition in elf.h */
|
||||||
#if defined(STT_REGISTER) || defined(STT_SPARC_REGISTER)
|
#if defined(STT_REGISTER) || defined(STT_SPARC_REGISTER)
|
||||||
|
|
Loading…
Reference in New Issue