svn commit: r299249 - head/sys/amd64/linux
Dmitry Chagin
dchagin at FreeBSD.org
Mon May 9 07:38:48 UTC 2016
Author: dchagin
Date: Mon May 9 07:38:47 2016
New Revision: 299249
URL: https://svnweb.freebsd.org/changeset/base/299249
Log:
Add a forgotten in r283424 .eh_frame section with CFI & FDE records to allow
stack unwinding through signal handler.
Reported by: Dmitry Sivachenko
MFC after: 2 weeks
Modified:
head/sys/amd64/linux/linux_locore.s
Modified: head/sys/amd64/linux/linux_locore.s
==============================================================================
--- head/sys/amd64/linux/linux_locore.s Mon May 9 06:30:00 2016 (r299248)
+++ head/sys/amd64/linux/linux_locore.s Mon May 9 07:38:47 2016 (r299249)
@@ -29,6 +29,7 @@ NON_GPROF_ENTRY(linux_rt_sigcode)
movq $LINUX_SYS_linux_rt_sigreturn,%rax /* linux_rt_sigreturn() */
syscall /* enter kernel with args */
hlt
+.endrtsigcode:
0: jmp 0b
NON_GPROF_ENTRY(__vdso_clock_gettime)
@@ -74,3 +75,34 @@ NON_GPROF_ENTRY(__vdso_getcpu)
.balign 4
.previous
#endif
+
+ .section .eh_frame,"a", at progbits
+.LSTARTFRAMEDLSI0:
+ .long .LENDCIEDLSI0-.LSTARTCIEDLSI0
+.LSTARTCIEDLSI0:
+ .long 0 /* CIE ID */
+ .byte 1 /* Version number */
+ .string "zR" /* NULL-terminated
+ * augmentation string
+ */
+ .uleb128 1 /* Code alignment factor */
+ .sleb128 -4 /* Data alignment factor */
+ .byte 8 /* Return address register column */
+ .uleb128 1 /* Augmentation value length */
+ .byte 0x1b /* DW_EH_PE_pcrel|DW_EH_PE_sdata4. */
+ .byte 0x0c /* DW_CFA_def_cfa */
+ .uleb128 4
+ .uleb128 4
+ .byte 0x88 /* DW_CFA_offset, column 0x8 */
+ .uleb128 1
+ .align 4
+.LENDCIEDLSI0:
+ .long .LENDFDEDLSI0-.LSTARTFDEDLSI0 /* Length FDE */
+.LSTARTFDEDLSI0:
+ .long .LSTARTFDEDLSI0-.LSTARTFRAMEDLSI0 /* CIE pointer */
+ .long .startrtsigcode-. /* PC-relative start address */
+ .long .endrtsigcode-.startrtsigcode
+ .uleb128 0
+ .align 4
+.LENDFDEDLSI0:
+ .previous
More information about the svn-src-all
mailing list