diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-07-02 08:49:09 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-07-02 08:49:09 +0000 |
commit | fcdac13afa00ec69b306669106fd6f30055a56ac (patch) | |
tree | 8da594163630c773134b1327ed78730ce6dbee80 /sysdeps | |
parent | ef8783de8fbe66520383824da0528b5c2a04cda9 (diff) | |
download | glibc-fcdac13afa00ec69b306669106fd6f30055a56ac.tar.gz glibc-fcdac13afa00ec69b306669106fd6f30055a56ac.tar.xz glibc-fcdac13afa00ec69b306669106fd6f30055a56ac.zip |
Update.
* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Don't set GL(dl_sysinfo) unles GL(dl_sysinfo_dso) is also set. * sysdeps/unix/sysv/linux/kernel-features.h: Define __ASSUME_VSYSCALL only for 2.5.69 and up since this is when the vsyscall DSO was added.
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/generic/dl-sysdep.c | 15 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/kernel-features.h | 4 |
2 files changed, 16 insertions, 3 deletions
diff --git a/sysdeps/generic/dl-sysdep.c b/sysdeps/generic/dl-sysdep.c index 7990f31fdc..89dda27925 100644 --- a/sysdeps/generic/dl-sysdep.c +++ b/sysdeps/generic/dl-sysdep.c @@ -93,6 +93,9 @@ _dl_sysdep_start (void **start_argptr, # define set_seen(tag) seen |= M ((tag)->a_type) # endif #endif +#ifndef __ASSUME_VSYSCALL + ElfW(Word) new_sysinfo = 0; +#endif DL_FIND_ARG_COMPONENTS (start_argptr, _dl_argc, INTUSE(_dl_argv), _environ, _dl_auxv); @@ -146,7 +149,11 @@ _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; @@ -167,7 +174,7 @@ _dl_sysdep_start (void **start_argptr, /* Fill in the values we have not gotten from the kernel through the auxiliary vector. */ # ifndef HAVE_AUX_XID -# define SEE(UID, var, uid) \ +# define SEE(UID, var, uid) \ if ((seen & M (AT_##UID)) == 0) var ^= __get##uid () SEE (UID, uid, uid); SEE (EUID, uid, euid); @@ -186,6 +193,12 @@ _dl_sysdep_start (void **start_argptr, GL(dl_pagesize) = __getpagesize (); #endif +#ifndef __ASSUME_VSYSCALL + /* Only set the sysinfo value if we also have the vsyscall DSO. */ + if (GL(dl_sysinfo_dso) != 0) + GL(dl_sysinfo) = new_sysinfo; +#endif + #ifdef DL_SYSDEP_INIT DL_SYSDEP_INIT; #endif diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h index d26930bce6..2d6953350b 100644 --- a/sysdeps/unix/sysv/linux/kernel-features.h +++ b/sysdeps/unix/sysv/linux/kernel-features.h @@ -307,8 +307,8 @@ #endif /* For x86, support for the sysenter instruction was available in - 2.5.53. */ -#if __LINUX_KERNEL_VERSION >= 132405 && defined __i386__ + 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 |