Kbuild: kallsyms: ignore veneers emitted by the ARM linker
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Mon, 30 Mar 2015 13:20:31 +0000 (15:20 +0200)
committerMichal Marek <mmarek@suse.cz>
Tue, 7 Apr 2015 11:04:50 +0000 (13:04 +0200)
commitbd8b22d2888e75063c9012b95341d6cb36456434
tree4cbbe9fb980626f151b4d92c54b0a11757ea47f0
parentd4a4e3f5a3e8bcd8aa778120d5f902b06a0e1019
Kbuild: kallsyms: ignore veneers emitted by the ARM linker

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: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Michal Marek <mmarek@suse.cz>
scripts/kallsyms.c