diff options
author | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-07 11:59:11 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-07 11:59:11 -0500 |
commit | 4522d58275f124105819723e24e912c8e5bf3cdd (patch) | |
tree | b92c29014fadffe049c1925676037f0092b8d112 /scripts | |
parent | 6cf24f031bc97cb5a7c9df3b6e73c45b628b2b28 (diff) | |
parent | 64a26a731235b59c9d73bbe82c1f896d57400d37 (diff) |
Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6
* 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6: (156 commits)
[PATCH] x86-64: Export smp_call_function_single
[PATCH] i386: Clean up smp_tune_scheduling()
[PATCH] unwinder: move .eh_frame to RODATA
[PATCH] unwinder: fully support linker generated .eh_frame_hdr section
[PATCH] x86-64: don't use set_irq_regs()
[PATCH] x86-64: check vector in setup_ioapic_dest to verify if need setup_IO_APIC_irq
[PATCH] x86-64: Make ix86 default to HIGHMEM4G instead of NOHIGHMEM
[PATCH] i386: replace kmalloc+memset with kzalloc
[PATCH] x86-64: remove remaining pc98 code
[PATCH] x86-64: remove unused variable
[PATCH] x86-64: Fix constraints in atomic_add_return()
[PATCH] x86-64: fix asm constraints in i386 atomic_add_return
[PATCH] x86-64: Correct documentation for bzImage protocol v2.05
[PATCH] x86-64: replace kmalloc+memset with kzalloc in MTRR code
[PATCH] x86-64: Fix numaq build error
[PATCH] x86-64: include/asm-x86_64/cpufeature.h isn't a userspace header
[PATCH] unwinder: Add debugging output to the Dwarf2 unwinder
[PATCH] x86-64: Clarify error message in GART code
[PATCH] x86-64: Fix interrupt race in idle callback (3rd try)
[PATCH] x86-64: Remove unwind stack pointer alignment forcing again
...
Fixed conflict in include/linux/uaccess.h manually
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/kallsyms.c | 24 | ||||
-rw-r--r-- | scripts/mod/modpost.c | 2 |
2 files changed, 23 insertions, 3 deletions
diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c index 22d281c6ec24..f359b730c2c5 100644 --- a/scripts/kallsyms.c +++ b/scripts/kallsyms.c | |||
@@ -43,7 +43,7 @@ struct sym_entry { | |||
43 | 43 | ||
44 | static struct sym_entry *table; | 44 | static struct sym_entry *table; |
45 | static unsigned int table_size, table_cnt; | 45 | static unsigned int table_size, table_cnt; |
46 | static unsigned long long _stext, _etext, _sinittext, _einittext, _sextratext, _eextratext; | 46 | static unsigned long long _text, _stext, _etext, _sinittext, _einittext, _sextratext, _eextratext; |
47 | static int all_symbols = 0; | 47 | static int all_symbols = 0; |
48 | static char symbol_prefix_char = '\0'; | 48 | static char symbol_prefix_char = '\0'; |
49 | 49 | ||
@@ -91,7 +91,9 @@ static int read_symbol(FILE *in, struct sym_entry *s) | |||
91 | sym++; | 91 | sym++; |
92 | 92 | ||
93 | /* Ignore most absolute/undefined (?) symbols. */ | 93 | /* Ignore most absolute/undefined (?) symbols. */ |
94 | if (strcmp(sym, "_stext") == 0) | 94 | if (strcmp(sym, "_text") == 0) |
95 | _text = s->addr; | ||
96 | else if (strcmp(sym, "_stext") == 0) | ||
95 | _stext = s->addr; | 97 | _stext = s->addr; |
96 | else if (strcmp(sym, "_etext") == 0) | 98 | else if (strcmp(sym, "_etext") == 0) |
97 | _etext = s->addr; | 99 | _etext = s->addr; |
@@ -265,9 +267,25 @@ static void write_src(void) | |||
265 | 267 | ||
266 | printf(".data\n"); | 268 | printf(".data\n"); |
267 | 269 | ||
270 | /* Provide proper symbols relocatability by their '_text' | ||
271 | * relativeness. The symbol names cannot be used to construct | ||
272 | * normal symbol references as the list of symbols contains | ||
273 | * symbols that are declared static and are private to their | ||
274 | * .o files. This prevents .tmp_kallsyms.o or any other | ||
275 | * object from referencing them. | ||
276 | */ | ||
268 | output_label("kallsyms_addresses"); | 277 | output_label("kallsyms_addresses"); |
269 | for (i = 0; i < table_cnt; i++) { | 278 | for (i = 0; i < table_cnt; i++) { |
270 | printf("\tPTR\t%#llx\n", table[i].addr); | 279 | if (toupper(table[i].sym[0]) != 'A') { |
280 | if (_text <= table[i].addr) | ||
281 | printf("\tPTR\t_text + %#llx\n", | ||
282 | table[i].addr - _text); | ||
283 | else | ||
284 | printf("\tPTR\t_text - %#llx\n", | ||
285 | _text - table[i].addr); | ||
286 | } else { | ||
287 | printf("\tPTR\t%#llx\n", table[i].addr); | ||
288 | } | ||
271 | } | 289 | } |
272 | printf("\n"); | 290 | printf("\n"); |
273 | 291 | ||
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 2e1141623147..ac0a58222992 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c | |||
@@ -911,6 +911,7 @@ static int init_section_ref_ok(const char *name) | |||
911 | ".toc1", /* used by ppc64 */ | 911 | ".toc1", /* used by ppc64 */ |
912 | ".stab", | 912 | ".stab", |
913 | ".rodata", | 913 | ".rodata", |
914 | ".parainstructions", | ||
914 | ".text.lock", | 915 | ".text.lock", |
915 | "__bug_table", /* used by powerpc for BUG() */ | 916 | "__bug_table", /* used by powerpc for BUG() */ |
916 | ".pci_fixup_header", | 917 | ".pci_fixup_header", |
@@ -931,6 +932,7 @@ static int init_section_ref_ok(const char *name) | |||
931 | ".altinstructions", | 932 | ".altinstructions", |
932 | ".eh_frame", | 933 | ".eh_frame", |
933 | ".debug", | 934 | ".debug", |
935 | ".parainstructions", | ||
934 | NULL | 936 | NULL |
935 | }; | 937 | }; |
936 | /* part of section name */ | 938 | /* part of section name */ |