public inbox for libc-ports@sourceware.org
 help / color / mirror / Atom feed
From: Richard Henderson <rth@twiddle.net>
To: libc-ports@sourceware.org
Subject: [PATCH 2/2] alpha: Use .cfi_signal_frame in rt_sigaction
Date: Tue, 05 Jun 2012 15:13:00 -0000	[thread overview]
Message-ID: <1338909181-29057-2-git-send-email-rth@twiddle.net> (raw)
In-Reply-To: <1338909181-29057-1-git-send-email-rth@twiddle.net>

---
 ChangeLog.alpha                              |    3 ++
 sysdeps/unix/sysv/linux/alpha/rt_sigaction.S |   31 +++++++++----------------
 2 files changed, 14 insertions(+), 20 deletions(-)

diff --git a/ChangeLog.alpha b/ChangeLog.alpha
index 77e6de1..705a020 100644
--- a/ChangeLog.alpha
+++ b/ChangeLog.alpha
@@ -1,5 +1,8 @@
 2012-06-05  Richard Henderson  <rth@twiddle.net>
 
+	* sysdeps/unix/sysv/linux/alpha/rt_sigaction.S: Use .cfi_signal_frame
+	instead of a hack using extra nops.
+
 	* sysdeps/unxi/alpha/getppid.S: New file.
 	* sysdeps/unxi/alpha/getegid.S: New file.
 	* sysdeps/unxi/alpha/geteuid.S: New file.
diff --git a/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S b/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S
index 96069c7..42062b0 100644
--- a/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S
+++ b/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson <rth@cygnus.com>, 1998
 
@@ -28,7 +28,7 @@
 	.text
 
 ENTRY(__syscall_rt_sigaction)
-	.frame	sp,0,ra,0
+	cfi_startproc
 	ldgp	gp,0(pv)
 #ifdef PROF
 	.set noat
@@ -39,18 +39,12 @@ ENTRY(__syscall_rt_sigaction)
 	.prologue 1
 
 	beq	a1, 0f
-	ldl	t0, 8(a1)			# sa_flags
-
-	/* The unwinder will subtract one from the return address when
-	   attempting to find the call instruction that led us here.
-	   Since we didn't get here via a normal call, if we do nothing
-	   we would pick up the wrong symbol and the wrong FDE.  Account
-	   for this by adding a nop to the start of the function and 
-	   then skipping it here by adding 4.  */
-	ldah	a4, __syscall_sigreturn+4(gp)		!gprelhigh
-	ldah	t1, __syscall_rt_sigreturn+4(gp)	!gprelhigh
-	lda	a4, __syscall_sigreturn+4(a4)		!gprellow
-	lda	t1, __syscall_rt_sigreturn+4(t1)	!gprellow
+	ldl	t0, 8(a1)				# sa_flags
+
+	ldah	a4, __syscall_sigreturn(gp)		!gprelhigh
+	ldah	t1, __syscall_rt_sigreturn(gp)		!gprelhigh
+	lda	a4, __syscall_sigreturn(a4)		!gprellow
+	lda	t1, __syscall_rt_sigreturn(t1)		!gprellow
 	and	t0, 0x40, t0				# SA_SIGINFO
 	cmovne	t0, t1, a4
 
@@ -58,7 +52,7 @@ ENTRY(__syscall_rt_sigaction)
 	callsys
 	bne	a3, SYSCALL_ERROR_LABEL
 	ret
-
+	cfi_endproc
 PSEUDO_END(__syscall_rt_sigaction)
 
 /* To enable unwinding through the signal frame without special hackery
@@ -90,26 +84,23 @@ PSEUDO_END(__syscall_rt_sigaction)
 	.endm
 
 	.align	4
-	nop
-	nop
-	nop
 
 	cfi_startproc
 	cfi_return_column (64)
+	.cfi_signal_frame
 	SIGCONTEXT_REGS -648
 
 	cfi_def_cfa_offset (648)
 __syscall_sigreturn:
-	nop
 	mov	sp, a0
 	ldi	v0, __NR_sigreturn
 	callsys
 	.size	__syscall_sigreturn, .-__syscall_sigreturn
 	.type	__syscall_sigreturn, @function
 
+	.align 4
 	cfi_def_cfa_offset (176 + 648)
 __syscall_rt_sigreturn:
-	nop
 	mov	sp,a0
 	ldi	v0,__NR_rt_sigreturn
 	callsys
-- 
1.7.7.6

      reply	other threads:[~2012-06-05 15:13 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-05 15:13 [PATCH 1/2] alpha: Resurrect getppid, getegid, geteuid Richard Henderson
2012-06-05 15:13 ` Richard Henderson [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1338909181-29057-2-git-send-email-rth@twiddle.net \
    --to=rth@twiddle.net \
    --cc=libc-ports@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).