aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/mod/modpost.c
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/mod/modpost.c')
-rw-r--r--scripts/mod/modpost.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 5a6b39a29b7a..29c89a6bad3d 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -609,6 +609,7 @@ static void handle_modversions(struct module *mod, struct elf_info *info,
609{ 609{
610 unsigned int crc; 610 unsigned int crc;
611 enum export export; 611 enum export export;
612 bool is_crc = false;
612 613
613 if ((!is_vmlinux(mod->name) || mod->is_dot_o) && 614 if ((!is_vmlinux(mod->name) || mod->is_dot_o) &&
614 strncmp(symname, "__ksymtab", 9) == 0) 615 strncmp(symname, "__ksymtab", 9) == 0)
@@ -618,6 +619,7 @@ static void handle_modversions(struct module *mod, struct elf_info *info,
618 619
619 /* CRC'd symbol */ 620 /* CRC'd symbol */
620 if (strncmp(symname, CRC_PFX, strlen(CRC_PFX)) == 0) { 621 if (strncmp(symname, CRC_PFX, strlen(CRC_PFX)) == 0) {
622 is_crc = true;
621 crc = (unsigned int) sym->st_value; 623 crc = (unsigned int) sym->st_value;
622 sym_update_crc(symname + strlen(CRC_PFX), mod, crc, 624 sym_update_crc(symname + strlen(CRC_PFX), mod, crc,
623 export); 625 export);
@@ -663,6 +665,10 @@ static void handle_modversions(struct module *mod, struct elf_info *info,
663 else 665 else
664 symname++; 666 symname++;
665#endif 667#endif
668 if (is_crc) {
669 const char *e = is_vmlinux(mod->name) ?"":".ko";
670 warn("EXPORT symbol \"%s\" [%s%s] version generation failed, symbol will not be versioned.\n", symname + strlen(CRC_PFX), mod->name, e);
671 }
666 mod->unres = alloc_symbol(symname, 672 mod->unres = alloc_symbol(symname,
667 ELF_ST_BIND(sym->st_info) == STB_WEAK, 673 ELF_ST_BIND(sym->st_info) == STB_WEAK,
668 mod->unres); 674 mod->unres);