mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-28 00:21:52 +03:00
Update.
1999-05-11 Ulrich Drepper <drepper@cygnus.com> * elf/Versions (ld.so) [GLIBC_2.1.1]: Add _dl_lazy. * elf/dl-open.c (_dl_open_worker): Only relocate newly loaded objects lazily if LD_BIND_NOW is not set. * elf/dl-support.c (_dl_lazy): New variable. (non_dynamic_init): Set _dl_lazy according to LD_BIND_NOW envvar. * elf/rtld.c (_dl_lazy): new global variable. ( dl_main): Remove lazy, replace it by _dl_lazy. 1999-05-06 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * locale/setlocale.c (new_composite_name): Check also whether the first category name differs. 1999-05-11 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * sysdeps/unix/sysv/linux/ftime.c: Use the bsd implementation, not the generic one. 1999-05-11 Philip Blundell <pb@nexus.co.uk> * sysdeps/generic/bits/socket.h (struct sockaddr_storage): New structure; storage suitable for any socket address. * sysdeps/unix/sysv/linux/bits/socket.h (struct sockaddr_storage): Likewise. * sysdeps/unix/sysv/linux/mips/bits/socket.h (struct sockaddr_storage): Likewise. * inet/netinet/in.h: Use ULONG_MAX not ~0 to test for a 64-bit platform.
This commit is contained in:
@ -46,6 +46,8 @@ extern char **__libc_argv;
|
||||
|
||||
extern char **__environ;
|
||||
|
||||
extern int _dl_lazy; /* Do we do lazy relocations? */
|
||||
|
||||
/* Undefine the following for debugging. */
|
||||
/* #define SCOPE_DEBUG 1 */
|
||||
#ifdef SCOPE_DEBUG
|
||||
@ -85,6 +87,7 @@ dl_open_worker (void *a)
|
||||
struct r_debug *r;
|
||||
unsigned int global_add;
|
||||
const char *dst;
|
||||
int lazy;
|
||||
|
||||
/* Maybe we have to expand a DST. */
|
||||
dst = strchr (file, '$');
|
||||
@ -145,6 +148,9 @@ dl_open_worker (void *a)
|
||||
show_scope (new);
|
||||
#endif
|
||||
|
||||
/* Only do lazy relocation if `LD_BIND_NOW' is not set. */
|
||||
lazy = (mode & RTLD_BINDING_MASK) == RTLD_LAZY && _dl_lazy;
|
||||
|
||||
/* Relocate the objects loaded. We do this in reverse order so that copy
|
||||
relocs of earlier objects overwrite the data written by later objects. */
|
||||
|
||||
@ -173,8 +179,7 @@ dl_open_worker (void *a)
|
||||
}
|
||||
else
|
||||
#endif
|
||||
_dl_relocate_object (l, l->l_scope,
|
||||
(mode & RTLD_BINDING_MASK) == RTLD_LAZY, 0);
|
||||
_dl_relocate_object (l, l->l_scope, lazy, 0);
|
||||
}
|
||||
|
||||
if (l == new)
|
||||
|
Reference in New Issue
Block a user