]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Thu, 19 Dec 2002 00:03:48 +0000 (00:03 +0000)
committerUlrich Drepper <drepper@redhat.com>
Thu, 19 Dec 2002 00:03:48 +0000 (00:03 +0000)
2002-12-18  Ulrich Drepper  <drepper@redhat.com>

* elf/dl-support.c [NEED_DL_SYSINFO]: Define and initialize
_dl_sysinfo.
[DL_SYSINFO_IMPLEMENTATION]: If defined use it to generate the needed
code.
* elf/rtld.c [DL_NEED_SYSINFO]: Initialize _dl_sysinfo element of
_rtld_global.
[DL_SYSINFO_IMPLEMENTATION]: If defined use it to generate the needed
code.
* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start) [NEED_DL_SYSINFO]:
Check for AT_SYSINFO and set _dl_sysinfo appropriately.
* sysdeps/generic/ldsodefs.h (struct rtld_global) [NEED_DL_SYSINFO]:
Add _dl_sysinfo.

ChangeLog
elf/dl-support.c
elf/rtld.c
linuxthreads/ChangeLog
sysdeps/generic/dl-sysdep.c
sysdeps/generic/ldsodefs.h

index e6d50f95ec3e0f0994a7404029843ab43051f3cc..058e0ef041263122eec08a9dda2388d5abfe794f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2002-12-18  Ulrich Drepper  <drepper@redhat.com>
+
+       * elf/dl-support.c [NEED_DL_SYSINFO]: Define and initialize
+       _dl_sysinfo.
+       [DL_SYSINFO_IMPLEMENTATION]: If defined use it to generate the needed
+       code.
+       * elf/rtld.c [DL_NEED_SYSINFO]: Initialize _dl_sysinfo element of
+       _rtld_global.
+       [DL_SYSINFO_IMPLEMENTATION]: If defined use it to generate the needed
+       code.
+       * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start) [NEED_DL_SYSINFO]:
+       Check for AT_SYSINFO and set _dl_sysinfo appropriately.
+       * sysdeps/generic/ldsodefs.h (struct rtld_global) [NEED_DL_SYSINFO]:
+       Add _dl_sysinfo.
+
 2002-12-18  Jakub Jelinek  <jakub@redhat.com>
 
        * misc/Versions [libc: GLIBC_2.3.1]: Move __libc_readv and
index a7a810935c132007eeadaada45fa4a6ffcf14485..eae08954a2c6e4fafd0bff6702d9d651661df6c5 100644 (file)
@@ -131,6 +131,11 @@ int _dl_correct_cache_id = _DL_CACHE_DEFAULT_ID;
 struct ElfW(Phdr) *_dl_phdr;
 size_t _dl_phnum;
 
+#ifdef NEED_DL_SYSINFO
+/* Needed for improved syscall handling on at least x86/Linux.  */
+uintptr_t _dl_sysinfo = DL_SYSINFO_DEFAULT;
+#endif
+
 /* During the program run we must not modify the global data of
    loaded shared object simultanously in two threads.  Therefore we
    protect `_dl_open' and `_dl_close' in dl-close.c.
@@ -238,3 +243,8 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
   *sz = 1;
   return &result;
 }
+
+
+#ifdef DL_SYSINFO_IMPLEMENTATION
+DL_SYSINFO_IMPLEMENTATION
+#endif
index a93be8447ede7a3264c6d1d9b1f2b38da8cde646..a05034ee710459268b106b773466b75e1da74f84 100644 (file)
@@ -96,6 +96,9 @@ struct rtld_global _rtld_global =
        groups implemented we have to make this the default.
        Bummer. --drepper  */
     ._dl_dynamic_weak = 1,
+#endif
+#ifdef NEED_DL_SYSINFO
+    ._dl_sysinfo = DL_SYSINFO_DEFAULT,
 #endif
     ._dl_lazy = 1,
     ._dl_fpu_control = _FPU_DEFAULT,
@@ -132,6 +135,11 @@ static hp_timing_t start_time;
 TLS_INIT_HELPER
 #endif
 
+/* Helper function for syscall implementation.  */
+#ifdef DL_SYSINFO_IMPLEMENTATION
+DL_SYSINFO_IMPLEMENTATION
+#endif
+
 /* Before ld.so is relocated we must not access variables which need
    relocations.  This means variables which are exported.  Variables
    declared as static are fine.  If we can mark a variable hidden this
index a84d4bd383c66786fbbca79f2f48d2e34103a241..a5760c7f4eb12de18587ddfe52a2fd7aa77fa923 100644 (file)
@@ -1,3 +1,11 @@
+2002-12-18  Jakub Jelinek  <jakub@redhat.com>
+
+       * sysdeps/i386/useldt.h (FLOATING_STACKS, ARCH_STACK_MAX_SIZE): Only
+       define if __ASSUME_LDT_WORKS > 0.
+       * libc-cancellation.c (THREAD_GETMEM, THREAD_SETMEM): Redefine to
+       struct member access if !FLOATING_STACKS.
+       * sysdeps/pthread/flockfile.c (flockfile): Change into weak alias.
+
 2002-12-18  Jakub Jelinek  <jakub@redhat.com>
 
        * internals.h (__pthread_thread_self): New prototype.
index 256eca5227562fa84125e3e999590196e8a2deb2..fbe5ad49e7d2d07828e70b2d8a9e6acd64b56265 100644 (file)
@@ -134,6 +134,11 @@ _dl_sysdep_start (void **start_argptr,
       case AT_FPUCW:
        GL(dl_fpu_control) = av->a_un.a_val;
        break;
+#ifdef NEED_DL_SYSINFO
+      case AT_SYSINFO:
+       GL(dl_sysinfo) = av->a_un.a_val;
+       break;
+#endif
       }
 
 #ifdef DL_SYSDEP_OSCHECK
index a704644d6ef983e745aaeb12af6b7c858c852547..6150852ed96735bed18b51ebe5aa1bccc28d8df1 100644 (file)
@@ -384,6 +384,11 @@ struct rtld_global
   EXTERN size_t _dl_tls_generation;
 #endif
 
+#ifdef NEED_DL_SYSINFO
+  /* Syscall handling improvements.  This is very specific to x86.  */
+  EXTERN uintptr_t _dl_sysinfo;
+#endif
+
 #ifdef SHARED
 };
 # define __rtld_global_attribute__