diff options
Diffstat (limited to 'scripts/kallsyms.c')
-rw-r--r-- | scripts/kallsyms.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c index 8fa81e84e295..d39a1eeb080e 100644 --- a/scripts/kallsyms.c +++ b/scripts/kallsyms.c | |||
@@ -34,6 +34,7 @@ struct sym_entry { | |||
34 | unsigned int len; | 34 | unsigned int len; |
35 | unsigned int start_pos; | 35 | unsigned int start_pos; |
36 | unsigned char *sym; | 36 | unsigned char *sym; |
37 | unsigned int percpu_absolute; | ||
37 | }; | 38 | }; |
38 | 39 | ||
39 | struct addr_range { | 40 | struct addr_range { |
@@ -171,6 +172,8 @@ static int read_symbol(FILE *in, struct sym_entry *s) | |||
171 | strcpy((char *)s->sym + 1, str); | 172 | strcpy((char *)s->sym + 1, str); |
172 | s->sym[0] = stype; | 173 | s->sym[0] = stype; |
173 | 174 | ||
175 | s->percpu_absolute = 0; | ||
176 | |||
174 | /* Record if we've found __per_cpu_start/end. */ | 177 | /* Record if we've found __per_cpu_start/end. */ |
175 | check_symbol_range(sym, s->addr, &percpu_range, 1); | 178 | check_symbol_range(sym, s->addr, &percpu_range, 1); |
176 | 179 | ||
@@ -325,7 +328,7 @@ static int expand_symbol(unsigned char *data, int len, char *result) | |||
325 | 328 | ||
326 | static int symbol_absolute(struct sym_entry *s) | 329 | static int symbol_absolute(struct sym_entry *s) |
327 | { | 330 | { |
328 | return toupper(s->sym[0]) == 'A'; | 331 | return s->percpu_absolute; |
329 | } | 332 | } |
330 | 333 | ||
331 | static void write_src(void) | 334 | static void write_src(void) |
@@ -681,8 +684,15 @@ static void make_percpus_absolute(void) | |||
681 | unsigned int i; | 684 | unsigned int i; |
682 | 685 | ||
683 | for (i = 0; i < table_cnt; i++) | 686 | for (i = 0; i < table_cnt; i++) |
684 | if (symbol_in_range(&table[i], &percpu_range, 1)) | 687 | if (symbol_in_range(&table[i], &percpu_range, 1)) { |
688 | /* | ||
689 | * Keep the 'A' override for percpu symbols to | ||
690 | * ensure consistent behavior compared to older | ||
691 | * versions of this tool. | ||
692 | */ | ||
685 | table[i].sym[0] = 'A'; | 693 | table[i].sym[0] = 'A'; |
694 | table[i].percpu_absolute = 1; | ||
695 | } | ||
686 | } | 696 | } |
687 | 697 | ||
688 | int main(int argc, char **argv) | 698 | int main(int argc, char **argv) |