Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 9 May 2016 07:38:47 +0000 (UTC)
From:      Dmitry Chagin <dchagin@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r299249 - head/sys/amd64/linux
Message-ID:  <201605090738.u497clLK071678@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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",@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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201605090738.u497clLK071678>