• Ard Biesheuvel's avatar
    Kbuild: kallsyms: ignore veneers emitted by the ARM linker · bd8b22d2
    Ard Biesheuvel authored
    When linking large kernels on ARM, the linker will insert veneers
    (i.e., PLT like stubs) when function symbols are out of reach for
    the ordinary relative branch/branch-and-link instructions.
    
    However, due to the fact that the kallsyms region sits in .rodata,
    which is between .text and .init.text, additional veneers may be
    emitted in the second pass due to the fact that the size of the
    kallsyms region itself has pushed the .init.text section further
    apart, requiring even more veneers.
    
    So ignore the veneers when generating the symbol table. Veneers
    have no corresponding source code, and they will not turn up in
    backtraces anyway.
    
    This patch also lightly refactors the symbol_valid() function
    to use a local 'sym_name' rather than the obfuscated 'sym + 1'
    and 'sym + offset'
    Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
    bd8b22d2
kallsyms.c 16.7 KB