Update.
authorUlrich Drepper <drepper@redhat.com>
Fri, 12 Dec 2003 04:32:41 +0000 (04:32 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 12 Dec 2003 04:32:41 +0000 (04:32 +0000)
2003-12-11  Ulrich Drepper  <drepper@redhat.com>

* sysdeps/unix/sysv/linux/kernel-features.h: Remove __ASSUME_VSYSCALL.
There might always be processes which have no vDSO.
* sysdeps/generic/dl-sysdep.c: Remove __ASSUME_VSYSCALL uses.
* sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise.

ChangeLog
sysdeps/generic/dl-sysdep.c
sysdeps/unix/sysv/linux/i386/sigaction.c
sysdeps/unix/sysv/linux/kernel-features.h

index b58b6fa..5a44afe 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2003-12-11  Ulrich Drepper  <drepper@redhat.com>
+
+       * sysdeps/unix/sysv/linux/kernel-features.h: Remove __ASSUME_VSYSCALL.
+       There might always be processes which have no vDSO.
+       * sysdeps/generic/dl-sysdep.c: Remove __ASSUME_VSYSCALL uses.
+       * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise.
+
 2003-12-11  Carlos O'Donell  <carlos@baldric.uwo.ca>
 
        * sysdeps/generic/dl-fptr.c (COMPARE_AND_SWAP): Pass new and old
index 40dcf80..53b9ea2 100644 (file)
@@ -97,7 +97,7 @@ _dl_sysdep_start (void **start_argptr,
 #  define set_seen(tag) seen |= M ((tag)->a_type)
 # endif
 #endif
-#if defined NEED_DL_SYSINFO && !defined __ASSUME_VSYSCALL
+#ifdef NEED_DL_SYSINFO
   ElfW(Word) new_sysinfo = 0;
 #endif
 
@@ -158,11 +158,7 @@ _dl_sysdep_start (void **start_argptr,
        break;
 #ifdef NEED_DL_SYSINFO
       case AT_SYSINFO:
-# ifndef __ASSUME_VSYSCALL
        new_sysinfo = av->a_un.a_val;
-# else
-       GL(dl_sysinfo) = av->a_un.a_val;
-# endif
        break;
       case AT_SYSINFO_EHDR:
        GL(dl_sysinfo_dso) = av->a_un.a_ptr;
@@ -202,7 +198,7 @@ _dl_sysdep_start (void **start_argptr,
     GL(dl_pagesize) = __getpagesize ();
 #endif
 
-#if defined NEED_DL_SYSINFO && !defined __ASSUME_VSYSCALL
+#if defined NEED_DL_SYSINFO
   /* Only set the sysinfo value if we also have the vsyscall DSO.  */
   if (GL(dl_sysinfo_dso) != 0)
     GL(dl_sysinfo) = new_sysinfo;
index 32b5d3c..8971a86 100644 (file)
@@ -25,6 +25,7 @@
 
 #include <sysdep.h>
 #include <sys/syscall.h>
+#include <ldsodefs.h>
 
 #include <kernel-features.h>
 
@@ -84,16 +85,16 @@ __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
       if (act)
        {
          kact.k_sa_handler = act->sa_handler;
+         kact.sa_flags = act->sa_flags;
          memcpy (&kact.sa_mask, &act->sa_mask, sizeof (sigset_t));
 
-# if __ASSUME_VSYSCALL == 0
-         kact.sa_flags = act->sa_flags | SA_RESTORER;
+         if (GL(dl_sysinfo_dso) == NULL)
+           {
+             kact.sa_flags |= SA_RESTORER;
 
-         kact.sa_restorer = ((act->sa_flags & SA_SIGINFO)
-                             ? &restore_rt : &restore);
-# else
-         kact.sa_flags = act->sa_flags;
-# endif
+             kact.sa_restorer = ((act->sa_flags & SA_SIGINFO)
+                                 ? &restore_rt : &restore);
+           }
        }
 
       /* XXX The size argument hopefully will have to be changed to the
@@ -159,7 +160,6 @@ 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
@@ -168,8 +168,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"                                   \
@@ -179,14 +179,14 @@ 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
-# define RESTORE2(name, syscall) \
+#undef RESTORE2
+#define RESTORE2(name, syscall) \
 asm                                            \
   (                                            \
    ".text\n"                                   \
@@ -198,4 +198,3 @@ asm                                         \
    );
 
 RESTORE (restore, __NR_sigreturn)
-#endif
index 2bc68cb..c2618ff 100644 (file)
 # define __ASSUME_NETLINK_SUPPORT      1
 #endif
 
-/* For x86, support for the sysenter instruction was available in
-   2.5.53.  But the unwind information was added only in 2.5.69.  */
-#if __LINUX_KERNEL_VERSION >= 132421 && defined __i386__
-# define __ASSUME_VSYSCALL     1
-#endif
-
 /* The requeue futex functionality was introduced in 2.5.70.  */
 #if __LINUX_KERNEL_VERSION >= 132422
 # define __ASSUME_FUTEX_REQUEUE        1