]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Wed, 2 Jul 2003 08:49:09 +0000 (08:49 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 2 Jul 2003 08:49:09 +0000 (08:49 +0000)
* 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.

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

index 7e84d3d29cfc4dfae2532ec7072dd124e563f05d..346ed27cf57235c400417c6857999dc70befac97 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2003-07-02  Ulrich Drepper  <drepper@redhat.com>
 
+       * 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.
+
        * posix/bits/posix1_lim.h (_POSIX_NGROUPS_MAX): Define to 8 or 0
        depending on selected standard.
        (NGROUPS_MAX): Define to 8 if not defined.
index 7990f31fdc6b10baba7d78b4d4b1b6020456ca5e..89dda27925758c18f578e5269ba4fd562b4d5b77 100644 (file)
@@ -92,6 +92,9 @@ _dl_sysdep_start (void **start_argptr,
 #  define M(type) (1 << (type))
 #  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,
@@ -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
index d26930bce698a2bd2f13f98116faf2e3423efe2a..2d6953350b95b60faf0b5139c66b39083240481b 100644 (file)
 #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