From: Richard Henderson Date: Tue, 5 Jun 2012 15:12:03 +0000 (-0700) Subject: alpha: Use .cfi_signal_frame in rt_sigaction X-Git-Tag: upstream/2.20~3636^2~21 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7d1feb5693be7e606104cc2b6657c746a93e5926;p=platform%2Fupstream%2Flinaro-glibc.git alpha: Use .cfi_signal_frame in rt_sigaction --- 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 + * 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 , 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