aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-12-12 04:32:41 +0000
committerUlrich Drepper <drepper@redhat.com>2003-12-12 04:32:41 +0000
commit8e4f5035e37bed96fbfa530e3fa8ae8d9bc631cf (patch)
tree3eef59b07cbdc428a199beb0d34c4c6f6510b876
parent1ce9631b86cbc5ae3104561f37bf7ea22f8c437c (diff)
downloadglibc-8e4f5035e37bed96fbfa530e3fa8ae8d9bc631cf.tar
glibc-8e4f5035e37bed96fbfa530e3fa8ae8d9bc631cf.tar.gz
glibc-8e4f5035e37bed96fbfa530e3fa8ae8d9bc631cf.tar.bz2
glibc-8e4f5035e37bed96fbfa530e3fa8ae8d9bc631cf.zip
Update.
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.
-rw-r--r--ChangeLog7
-rw-r--r--sysdeps/generic/dl-sysdep.c8
-rw-r--r--sysdeps/unix/sysv/linux/i386/sigaction.c29
-rw-r--r--sysdeps/unix/sysv/linux/kernel-features.h6
4 files changed, 23 insertions, 27 deletions
diff --git a/ChangeLog b/ChangeLog
index b58b6fa481..5a44afedd7 100644
--- 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
diff --git a/sysdeps/generic/dl-sysdep.c b/sysdeps/generic/dl-sysdep.c
index 40dcf8060e..53b9ea233c 100644
--- a/sysdeps/generic/dl-sysdep.c
+++ b/sysdeps/generic/dl-sysdep.c
@@ -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;
diff --git a/sysdeps/unix/sysv/linux/i386/sigaction.c b/sysdeps/unix/sysv/linux/i386/sigaction.c
index 32b5d3c6f1..8971a86a92 100644
--- a/sysdeps/unix/sysv/linux/i386/sigaction.c
+++ b/sysdeps/unix/sysv/linux/i386/sigaction.c
@@ -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
diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h
index 2bc68cbd7f..c2618ff8ed 100644
--- a/sysdeps/unix/sysv/linux/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/kernel-features.h
@@ -320,12 +320,6 @@
# 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