|
@@ -609,6 +609,7 @@ static void handle_modversions(struct module *mod, struct elf_info *info,
|
|
|
{
|
|
|
unsigned int crc;
|
|
|
enum export export;
|
|
|
+ bool is_crc = false;
|
|
|
|
|
|
if ((!is_vmlinux(mod->name) || mod->is_dot_o) &&
|
|
|
strncmp(symname, "__ksymtab", 9) == 0)
|
|
@@ -618,6 +619,7 @@ static void handle_modversions(struct module *mod, struct elf_info *info,
|
|
|
|
|
|
/* CRC'd symbol */
|
|
|
if (strncmp(symname, CRC_PFX, strlen(CRC_PFX)) == 0) {
|
|
|
+ is_crc = true;
|
|
|
crc = (unsigned int) sym->st_value;
|
|
|
sym_update_crc(symname + strlen(CRC_PFX), mod, crc,
|
|
|
export);
|
|
@@ -663,6 +665,10 @@ static void handle_modversions(struct module *mod, struct elf_info *info,
|
|
|
else
|
|
|
symname++;
|
|
|
#endif
|
|
|
+ if (is_crc) {
|
|
|
+ const char *e = is_vmlinux(mod->name) ?"":".ko";
|
|
|
+ warn("EXPORT symbol \"%s\" [%s%s] version generation failed, symbol will not be versioned.\n", symname + strlen(CRC_PFX), mod->name, e);
|
|
|
+ }
|
|
|
mod->unres = alloc_symbol(symname,
|
|
|
ELF_ST_BIND(sym->st_info) == STB_WEAK,
|
|
|
mod->unres);
|