diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-12-17 19:24:13 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-12-17 19:24:13 -0500 |
| commit | 41e0e24b450fadc079dfb659d81f3076afcfbd8a (patch) | |
| tree | 74ae1884d7f3765650c6ddda0c51115882ea761b /scripts/mod | |
| parent | 0aaf2146ecf00f7932f472ec5aa30d999c89530c (diff) | |
| parent | 334bb773876403eae3457d81be0b8ea70f8e4ccc (diff) | |
Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
Pull kbuild updates from Michal Marek:
- prototypes for x86 asm-exported symbols (Adam Borowski) and a warning
about missing CRCs (Nick Piggin)
- asm-exports fix for LTO (Nicolas Pitre)
- thin archives improvements (Nick Piggin)
- linker script fix for CONFIG_LD_DEAD_CODE_DATA_ELIMINATION (Nick
Piggin)
- genksyms support for __builtin_va_list keyword
- misc minor fixes
* 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
x86/kbuild: enable modversions for symbols exported from asm
kbuild: fix scripts/adjust_autoksyms.sh* for the no modules case
scripts/kallsyms: remove last remnants of --page-offset option
make use of make variable CURDIR instead of calling pwd
kbuild: cmd_export_list: tighten the sed script
kbuild: minor improvement for thin archives build
kbuild: modpost warn if export version crc is missing
kbuild: keep data tables through dead code elimination
kbuild: improve linker compatibility with lib-ksyms.o build
genksyms: Regenerate parser
kbuild/genksyms: handle va_list type
kbuild: thin archives for multi-y targets
kbuild: kallsyms allow 3-pass generation if symbols size has changed
Diffstat (limited to 'scripts/mod')
| -rw-r--r-- | scripts/mod/modpost.c | 6 |
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); |
