mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
allow stripping of generated symbols under CONFIG_KALLSYMS_ALL
Building upon parts of the module stripping patch, this patch introduces similar stripping for vmlinux when CONFIG_KALLSYMS_ALL=y. Using CONFIG_KALLSYMS_STRIP_GENERATED reduces the overhead of CONFIG_KALLSYMS_ALL from 245k/310k to 65k/80k for the (i386/x86-64) kernels I tested with. The patch also does away with the need to special case the kallsyms- internal symbols by making them available even in the first linking stage. While it is a generated file, the patch includes the changes to scripts/genksyms/keywords.c_shipped, as I'm unsure what the procedure here is. Signed-off-by: Jan Beulich <jbeulich@novell.com> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
This commit is contained in:
parent
ad7a953c52
commit
9bb482476c
7 changed files with 176 additions and 149 deletions
|
@ -130,18 +130,9 @@ static int read_symbol(FILE *in, struct sym_entry *s)
|
|||
static int symbol_valid(struct sym_entry *s)
|
||||
{
|
||||
/* Symbols which vary between passes. Passes 1 and 2 must have
|
||||
* identical symbol lists. The kallsyms_* symbols below are only added
|
||||
* after pass 1, they would be included in pass 2 when --all-symbols is
|
||||
* specified so exclude them to get a stable symbol list.
|
||||
* identical symbol lists.
|
||||
*/
|
||||
static char *special_symbols[] = {
|
||||
"kallsyms_addresses",
|
||||
"kallsyms_num_syms",
|
||||
"kallsyms_names",
|
||||
"kallsyms_markers",
|
||||
"kallsyms_token_table",
|
||||
"kallsyms_token_index",
|
||||
|
||||
/* Exclude linker generated symbols which vary between passes */
|
||||
"_SDA_BASE_", /* ppc */
|
||||
"_SDA2_BASE_", /* ppc */
|
||||
|
@ -173,7 +164,9 @@ static int symbol_valid(struct sym_entry *s)
|
|||
}
|
||||
|
||||
/* Exclude symbols which vary between passes. */
|
||||
if (strstr((char *)s->sym + offset, "_compiled."))
|
||||
if (strstr((char *)s->sym + offset, "_compiled.") ||
|
||||
strncmp((char*)s->sym + offset, "__compound_literal.", 19) == 0 ||
|
||||
strncmp((char*)s->sym + offset, "__compound_literal$", 19) == 0)
|
||||
return 0;
|
||||
|
||||
for (i = 0; special_symbols[i]; i++)
|
||||
|
@ -550,8 +543,10 @@ int main(int argc, char **argv)
|
|||
usage();
|
||||
|
||||
read_map(stdin);
|
||||
sort_symbols();
|
||||
optimize_token_table();
|
||||
if (table_cnt) {
|
||||
sort_symbols();
|
||||
optimize_token_table();
|
||||
}
|
||||
write_src();
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue