diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | sysdeps/generic/dl-sysdep.c | 8 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/sigaction.c | 29 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/kernel-features.h | 6 |
4 files changed, 23 insertions, 27 deletions
@@ -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 40dcf80..53b9ea2 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 32b5d3c..8971a86 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 2bc68cb..c2618ff 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 |