* [PATCH 1/2] alpha: Resurrect getppid, getegid, geteuid.
@ 2012-06-05 15:13 Richard Henderson
2012-06-05 15:13 ` [PATCH 2/2] alpha: Use .cfi_signal_frame in rt_sigaction Richard Henderson
0 siblings, 1 reply; 2+ messages in thread
From: Richard Henderson @ 2012-06-05 15:13 UTC (permalink / raw)
To: libc-ports
The sysdeps/unix files deleted in the main tree weren't unused.
Resurrect them in sysdeps/unix/alpha, and using the real syscall names.
---
ChangeLog.alpha | 6 ++++++
sysdeps/unix/alpha/getegid.S | 26 ++++++++++++++++++++++++++
sysdeps/unix/alpha/geteuid.S | 26 ++++++++++++++++++++++++++
sysdeps/unix/alpha/getppid.S | 26 ++++++++++++++++++++++++++
4 files changed, 84 insertions(+), 0 deletions(-)
create mode 100644 sysdeps/unix/alpha/getegid.S
create mode 100644 sysdeps/unix/alpha/geteuid.S
create mode 100644 sysdeps/unix/alpha/getppid.S
diff --git a/ChangeLog.alpha b/ChangeLog.alpha
index 1d3e6bd..77e6de1 100644
--- a/ChangeLog.alpha
+++ b/ChangeLog.alpha
@@ -1,3 +1,9 @@
+2012-06-05 Richard Henderson <rth@twiddle.net>
+
+ * sysdeps/unxi/alpha/getppid.S: New file.
+ * sysdeps/unxi/alpha/getegid.S: New file.
+ * sysdeps/unxi/alpha/geteuid.S: New file.
+
2012-06-01 Richard Henderson <rth@twiddle.net>
* sysdeps/alpha/Makefile (CFLAGS-test-misc.c): Set -mieee-with-inexact.
diff --git a/sysdeps/unix/alpha/getegid.S b/sysdeps/unix/alpha/getegid.S
new file mode 100644
index 0000000..a564f6c
--- /dev/null
+++ b/sysdeps/unix/alpha/getegid.S
@@ -0,0 +1,26 @@
+/* Copyright (C) 1991-2012 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+
+
+PSEUDO (__getegid, getxgid, 0)
+ MOVE (r1, r0)
+ ret
+PSEUDO_END (__getegid)
+
+weak_alias (__getegid, getegid)
diff --git a/sysdeps/unix/alpha/geteuid.S b/sysdeps/unix/alpha/geteuid.S
new file mode 100644
index 0000000..289acbd
--- /dev/null
+++ b/sysdeps/unix/alpha/geteuid.S
@@ -0,0 +1,26 @@
+/* Copyright (C) 1991-2012 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+
+
+PSEUDO (__geteuid, getxuid, 0)
+ MOVE (r1, r0)
+ ret
+PSEUDO_END (__geteuid)
+
+weak_alias (__geteuid, geteuid)
diff --git a/sysdeps/unix/alpha/getppid.S b/sysdeps/unix/alpha/getppid.S
new file mode 100644
index 0000000..8f7e774
--- /dev/null
+++ b/sysdeps/unix/alpha/getppid.S
@@ -0,0 +1,26 @@
+/* Copyright (C) 1991-2012 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sysdep.h>
+
+
+PSEUDO (__getppid, getxpid, 0)
+ MOVE (r1, r0)
+ ret
+PSEUDO_END (__getppid)
+
+weak_alias (__getppid, getppid)
--
1.7.7.6
^ permalink raw reply [flat|nested] 2+ messages in thread
* [PATCH 2/2] alpha: Use .cfi_signal_frame in rt_sigaction
2012-06-05 15:13 [PATCH 1/2] alpha: Resurrect getppid, getegid, geteuid Richard Henderson
@ 2012-06-05 15:13 ` Richard Henderson
0 siblings, 0 replies; 2+ messages in thread
From: Richard Henderson @ 2012-06-05 15:13 UTC (permalink / raw)
To: libc-ports
---
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
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2012-06-05 15:13 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-06-05 15:13 [PATCH 1/2] alpha: Resurrect getppid, getegid, geteuid Richard Henderson
2012-06-05 15:13 ` [PATCH 2/2] alpha: Use .cfi_signal_frame in rt_sigaction Richard Henderson
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).