From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23316 invoked by alias); 5 Jun 2012 15:13:36 -0000 Received: (qmail 23305 invoked by uid 22791); 5 Jun 2012 15:13:34 -0000 X-SWARE-Spam-Status: No, hits=-5.0 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE X-Spam-Check-By: sourceware.org Received: from mail-pz0-f41.google.com (HELO mail-pz0-f41.google.com) (209.85.210.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 05 Jun 2012 15:13:08 +0000 Received: by dakp5 with SMTP id p5so7756413dak.0 for ; Tue, 05 Jun 2012 08:13:08 -0700 (PDT) Received: by 10.68.225.9 with SMTP id rg9mr48006900pbc.137.1338909188352; Tue, 05 Jun 2012 08:13:08 -0700 (PDT) Received: from anchor.twiddle.home ([173.160.232.49]) by mx.google.com with ESMTPS id ve6sm2656378pbc.75.2012.06.05.08.13.07 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 05 Jun 2012 08:13:07 -0700 (PDT) From: Richard Henderson 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 Message-Id: <1338909181-29057-2-git-send-email-rth@twiddle.net> In-Reply-To: <1338909181-29057-1-git-send-email-rth@twiddle.net> References: <1338909181-29057-1-git-send-email-rth@twiddle.net> X-IsSubscribed: yes Mailing-List: contact libc-ports-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: libc-ports-owner@sourceware.org X-SW-Source: 2012-06/txt/msg00012.txt.bz2 --- 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 + * 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 -- 1.7.7.6