This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.18-389-g027e32b


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  027e32bd42314e17095ba39df82ef293f4a72c09 (commit)
      from  1820b143aa651d619a768708f08b129aa45043c2 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=027e32bd42314e17095ba39df82ef293f4a72c09

commit 027e32bd42314e17095ba39df82ef293f4a72c09
Author: Richard Henderson <rth@twiddle.net>
Date:   Sat Nov 16 06:34:39 2013 +1000

    alpha: Fix signal thunk unwind info

diff --git a/ports/ChangeLog.alpha b/ports/ChangeLog.alpha
index 07f5dfb..8f97951 100644
--- a/ports/ChangeLog.alpha
+++ b/ports/ChangeLog.alpha
@@ -1,3 +1,8 @@
+2013-11-16  Richard Henderson  <rth@redhat.com>
+
+	* sysdeps/unix/sysv/linux/alpha/rt_sigaction.S: Include a nop
+	before each signal thunk.
+
 2013-10-30  Mike Frysinger  <vapier@gentoo.org>
 
 	* sysdeps/alpha/configure.in: Moved to ...
diff --git a/ports/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S b/ports/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S
index 3d291fd..6efa738 100644
--- a/ports/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S
+++ b/ports/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S
@@ -83,14 +83,21 @@ PSEUDO_END(__syscall_rt_sigaction)
 	cfi_offset (64, \base + 2 * 8)
 	.endm
 
-	.align	4
-
 	cfi_startproc
 	cfi_return_column (64)
 	.cfi_signal_frame
 	SIGCONTEXT_REGS -648
-
 	cfi_def_cfa_offset (648)
+
+	/* While this frame is marked as a signal frame, that only applies
+	   to how this return address is handled for the outer frame.
+	   The return address that arrived here, from the inner frame, is
+	   not marked as a signal frame and so the unwinder still tries to
+	   subtract 1 to examine the presumed call insn.  Thus we must
+	   extend the unwind info to a nop before the start.  */
+	nop
+	.align 4
+
 __syscall_sigreturn:
 	mov	sp, a0
 	ldi	v0, __NR_sigreturn
@@ -98,8 +105,11 @@ __syscall_sigreturn:
 	.size	__syscall_sigreturn, .-__syscall_sigreturn
 	.type	__syscall_sigreturn, @function
 
-	.align 4
+	/* See above wrt including the nop.  */
 	cfi_def_cfa_offset (176 + 648)
+	nop
+	.align 4
+
 __syscall_rt_sigreturn:
 	mov	sp,a0
 	ldi	v0,__NR_rt_sigreturn

-----------------------------------------------------------------------

Summary of changes:
 ports/ChangeLog.alpha                              |    5 +++++
 ports/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S |   18 ++++++++++++++----
 2 files changed, 19 insertions(+), 4 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]