Patchworkβ parisc: fix unwind

login
register
about
Submitter Helge Deller
Date 2009-10-25 21:42:48
Message ID <20091025214248.GA15028@p100.box>
Download mbox | patch
Permalink /patch/55797/
State Accepted
Delegated to: kyle mcmartin
Headers show

Comments

Helge Deller - 2009-10-25 21:42:48
kernel unwinding is broken with gcc >= 4.x. Part of the problem is, that
binutils seems sensible where the unwind information is stored.

Signed-off-by: Helge Deller <deller@gmx.de>

--
To unsubscribe from this list: send the line "unsubscribe linux-parisc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
kyle mcmartin - 2009-10-28 15:37:25
On Sun, Oct 25, 2009 at 10:42:48PM +0100, Helge Deller wrote:
> kernel unwinding is broken with gcc >= 4.x. Part of the problem is, that
> binutils seems sensible where the unwind information is stored.
> 
> Signed-off-by: Helge Deller <deller@gmx.de>
> 

This looks good to me, I checked the resulting vmlinux and things seem
sensible...

I'll apply it to my next branch when I get home tonight.

r, Kyle
--
To unsubscribe from this list: send the line "unsubscribe linux-parisc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
kyle mcmartin - 2009-10-28 16:28:35
On Wed, Oct 28, 2009 at 11:37:25AM -0400, Kyle McMartin wrote:
> On Sun, Oct 25, 2009 at 10:42:48PM +0100, Helge Deller wrote:
> > kernel unwinding is broken with gcc >= 4.x. Part of the problem is, that
> > binutils seems sensible where the unwind information is stored.
> > 
> > Signed-off-by: Helge Deller <deller@gmx.de>
> > 
> 
> This looks good to me, I checked the resulting vmlinux and things seem
> sensible...
> 
> I'll apply it to my next branch when I get home tonight.
> 

I meant fixes.
--
To unsubscribe from this list: send the line "unsubscribe linux-parisc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/arch/parisc/kernel/unwind.c b/arch/parisc/kernel/unwind.c
index 69dad5a..6c631bf 100644
--- a/arch/parisc/kernel/unwind.c
+++ b/arch/parisc/kernel/unwind.c
@@ -28,7 +28,7 @@ 
 #define dbg(x...)
 #endif
 
-#define KERNEL_START (KERNEL_BINARY_TEXT_START - 0x1000)
+#define KERNEL_START (KERNEL_BINARY_TEXT_START)
 
 extern struct unwind_table_entry __start___unwind[];
 extern struct unwind_table_entry __stop___unwind[];
diff --git a/arch/parisc/kernel/vmlinux.lds.S b/arch/parisc/kernel/vmlinux.lds.S
index fda4baa..9dab4a4 100644
--- a/arch/parisc/kernel/vmlinux.lds.S
+++ b/arch/parisc/kernel/vmlinux.lds.S
@@ -78,9 +78,6 @@  SECTIONS
 	 */
 	. = ALIGN(PAGE_SIZE);
 	data_start = .;
-	EXCEPTION_TABLE(16)
-
-	NOTES
 
 	/* unwind info */
 	.PARISC.unwind : {
@@ -89,6 +86,9 @@  SECTIONS
 		__stop___unwind = .;
 	}
 
+	EXCEPTION_TABLE(16)
+	NOTES
+
 	/* Data */
 	RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)