From f38c5a696a1e775c70d8764b1b9c1a4e267448d3 Mon Sep 17 00:00:00 2001 From: Kaz Kojima Date: Fri, 2 Nov 2007 12:29:37 +0900 Subject: [PATCH] sh: Terminate .eh_frame in VDSO with a 4-byte 0. It's assumed that .eh_frame is terminated with 4-byte 0 in shared libraries and executable. It seems to be the case for VDSOs too. Without this terminator, I saw failures when unwinding from VDSO, though I don't know how other architectures handle this issue. For the normal libs, crtendS.o gives this terminator. We can use such terminating objects. Or we can add a 4-byte 0 with modifying the linker script like as the patch below. Signed-off-by: Kaz Kojima Signed-off-by: Paul Mundt --- arch/sh/kernel/vsyscall/vsyscall.lds.S | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/arch/sh/kernel/vsyscall/vsyscall.lds.S b/arch/sh/kernel/vsyscall/vsyscall.lds.S index c9bf2af..6d59ee7 100644 --- a/arch/sh/kernel/vsyscall/vsyscall.lds.S +++ b/arch/sh/kernel/vsyscall/vsyscall.lds.S @@ -38,7 +38,10 @@ SECTIONS .text : { *(.text) } :text =0x90909090 .note : { *(.note.*) } :text :note .eh_frame_hdr : { *(.eh_frame_hdr ) } :text :eh_frame_hdr - .eh_frame : { KEEP (*(.eh_frame)) } :text + .eh_frame : { + KEEP (*(.eh_frame)) + LONG (0) + } :text .dynamic : { *(.dynamic) } :text :dynamic .useless : { *(.got.plt) *(.got) -- 2.7.4