Update.
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.
This commit is contained in:
parent
3d53957913
commit
5e28917950
15
ChangeLog
15
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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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__
|
||||
|
|
Loading…
Reference in a new issue