+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
# 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
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;
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;
#include <sysdep.h>
#include <sys/syscall.h>
+#include <ldsodefs.h>
#include <kernel-features.h>
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
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
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" \
" 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" \
);
RESTORE (restore, __NR_sigreturn)
-#endif
# 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