diff options
author | Helge Deller <deller@gmx.de> | 2009-11-28 15:33:11 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-11-30 11:20:24 -0500 |
commit | 33a932d14323b957a4e17a6c8428d3f048a30822 (patch) | |
tree | e8006fb0418b17d0bf7e003aa28467f04081672d /arch/parisc/kernel | |
parent | a8a8a669ea13d792296737505adc43ccacf3a648 (diff) |
parisc: fix unwind with recent gcc versions
kernel unwinding is broken with gcc >= 4.x. Part of the problem is that
binutils seems very sensitive to where the unwind information is stored.
Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Kyle McMartin <kyle@mcmartin.ca>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/parisc/kernel')
-rw-r--r-- | arch/parisc/kernel/unwind.c | 2 | ||||
-rw-r--r-- | arch/parisc/kernel/vmlinux.lds.S | 6 |
2 files changed, 4 insertions, 4 deletions
diff --git a/arch/parisc/kernel/unwind.c b/arch/parisc/kernel/unwind.c index 69dad5a850a8..a36799e85693 100644 --- a/arch/parisc/kernel/unwind.c +++ b/arch/parisc/kernel/unwind.c | |||
@@ -28,7 +28,7 @@ | |||
28 | #define dbg(x...) | 28 | #define dbg(x...) |
29 | #endif | 29 | #endif |
30 | 30 | ||
31 | #define KERNEL_START (KERNEL_BINARY_TEXT_START - 0x1000) | 31 | #define KERNEL_START (KERNEL_BINARY_TEXT_START) |
32 | 32 | ||
33 | extern struct unwind_table_entry __start___unwind[]; | 33 | extern struct unwind_table_entry __start___unwind[]; |
34 | extern struct unwind_table_entry __stop___unwind[]; | 34 | extern struct unwind_table_entry __stop___unwind[]; |
diff --git a/arch/parisc/kernel/vmlinux.lds.S b/arch/parisc/kernel/vmlinux.lds.S index fda4baa059b5..9dab4a4e09f7 100644 --- a/arch/parisc/kernel/vmlinux.lds.S +++ b/arch/parisc/kernel/vmlinux.lds.S | |||
@@ -78,9 +78,6 @@ SECTIONS | |||
78 | */ | 78 | */ |
79 | . = ALIGN(PAGE_SIZE); | 79 | . = ALIGN(PAGE_SIZE); |
80 | data_start = .; | 80 | data_start = .; |
81 | EXCEPTION_TABLE(16) | ||
82 | |||
83 | NOTES | ||
84 | 81 | ||
85 | /* unwind info */ | 82 | /* unwind info */ |
86 | .PARISC.unwind : { | 83 | .PARISC.unwind : { |
@@ -89,6 +86,9 @@ SECTIONS | |||
89 | __stop___unwind = .; | 86 | __stop___unwind = .; |
90 | } | 87 | } |
91 | 88 | ||
89 | EXCEPTION_TABLE(16) | ||
90 | NOTES | ||
91 | |||
92 | /* Data */ | 92 | /* Data */ |
93 | RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE) | 93 | RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE) |
94 | 94 | ||