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 <kkojima@rr.iij4u.or.jp> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
236b195744
commit
f38c5a696a
|
@ -38,7 +38,10 @@ SECTIONS
|
||||||
.text : { *(.text) } :text =0x90909090
|
.text : { *(.text) } :text =0x90909090
|
||||||
.note : { *(.note.*) } :text :note
|
.note : { *(.note.*) } :text :note
|
||||||
.eh_frame_hdr : { *(.eh_frame_hdr ) } :text :eh_frame_hdr
|
.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
|
.dynamic : { *(.dynamic) } :text :dynamic
|
||||||
.useless : {
|
.useless : {
|
||||||
*(.got.plt) *(.got)
|
*(.got.plt) *(.got)
|
||||||
|
|
Loading…
Reference in a new issue