about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--sysdeps/unix/sysv/linux/i386/sigaction.c15
2 files changed, 21 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 57be8c46bc..95c952a143 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2003-04-12  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/generic/dl-tls.c (_dl_allocate_tls_init): Add cast to
+	avoid warning.
+
+	* sysdeps/unix/sysv/linux/i386/sigaction.c (__libc_sigaction): If
+	__ASSUME_VSYSCALL is defined don't add restorer.
+	* sysdeps/unix/sysv/linux/kernel-features.h: Define
+	__ASSUME_VSYSCALL for 2.5.53.
+
 2003-04-11  Ulrich Drepper  <drepper@redhat.com>
 
 	* sysdeps/generic/libc-start.c: Cleanup MAIN_AUXVEC_ARG handling.
diff --git a/sysdeps/unix/sysv/linux/i386/sigaction.c b/sysdeps/unix/sysv/linux/i386/sigaction.c
index c2f0a0f5d1..55252632dc 100644
--- a/sysdeps/unix/sysv/linux/i386/sigaction.c
+++ b/sysdeps/unix/sysv/linux/i386/sigaction.c
@@ -88,10 +88,15 @@ __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
 	{
 	  kact.k_sa_handler = act->sa_handler;
 	  memcpy (&kact.sa_mask, &act->sa_mask, sizeof (sigset_t));
+
+# if __ASSUME_VSYSCALL == 0
 	  kact.sa_flags = act->sa_flags | SA_RESTORER;
 
 	  kact.sa_restorer = ((act->sa_flags & SA_SIGINFO)
 			      ? &restore_rt : &restore);
+# else
+	  kact.sa_flags = act->sa_flags;
+# endif
 	}
 
       /* XXX The size argument hopefully will have to be changed to the
@@ -157,6 +162,7 @@ libc_hidden_weak (__sigaction)
 weak_alias (__libc_sigaction, sigaction)
 #endif
 
+#if __ASSUME_VSYSCALL == 0
 /* NOTE: Please think twice before making any changes to the bits of
    code below.  GDB needs some intimate knowledge about it to
    recognize them as signal trampolines, and make backtraces through
@@ -165,8 +171,8 @@ weak_alias (__libc_sigaction, sigaction)
    If you ever feel the need to make any changes, please notify the
    appropriate GDB maintainer.  */
 
-#define RESTORE(name, syscall) RESTORE2 (name, syscall)
-#define RESTORE2(name, syscall) \
+# define RESTORE(name, syscall) RESTORE2 (name, syscall)
+# define RESTORE2(name, syscall) \
 asm						\
   (						\
    ".text\n"					\
@@ -176,10 +182,10 @@ asm						\
    "	int  $0x80"				\
    );
 
-#ifdef __NR_rt_sigaction
+# ifdef __NR_rt_sigaction
 /* The return code for realtime-signals.  */
 RESTORE (restore_rt, __NR_rt_sigreturn)
-#endif
+# endif
 
 /* For the boring old signals.  */
 # undef RESTORE2
@@ -195,3 +201,4 @@ asm						\
    );
 
 RESTORE (restore, __NR_sigreturn)
+#endif