mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-23 17:53:37 +08:00
Update.
* elf/rtld.c: Define _dl_bind_not variable. (process_envvars): Recognize LD_BIND_NOT and set _dl_bind_not. * elf/dl-support.c: Likewise. * sysdeps/generic/ldsodefs.h: Declare _dl_bind_not. * elf/dl-runtime.c (fixup): Don't remember looked up value if _dl_bind_not. (profile_fixup): Likewise.
This commit is contained in:
parent
d052b31b79
commit
f53c03c20d
@ -1,5 +1,13 @@
|
||||
2000-07-20 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* elf/rtld.c: Define _dl_bind_not variable.
|
||||
(process_envvars): Recognize LD_BIND_NOT and set _dl_bind_not.
|
||||
* elf/dl-support.c: Likewise.
|
||||
* sysdeps/generic/ldsodefs.h: Declare _dl_bind_not.
|
||||
* elf/dl-runtime.c (fixup): Don't remember looked up value if
|
||||
_dl_bind_not.
|
||||
(profile_fixup): Likewise.
|
||||
|
||||
* libio/Makefile (routines): Add fwide.
|
||||
* libio/iofwide.c (_IO_fwide): Remove locking. This is done in
|
||||
fwide now. Internal calls to _IO_fwide must do locking themselves
|
||||
|
@ -117,6 +117,9 @@ fixup (
|
||||
value = elf_machine_plt_value (l, reloc, value);
|
||||
|
||||
/* Finally, fix up the plt itself. */
|
||||
if (__builtin_expect (_dl_bind_not, 0))
|
||||
return value;
|
||||
|
||||
return elf_machine_fixup_plt (l, result, reloc, rel_addr, value);
|
||||
}
|
||||
#endif
|
||||
@ -205,7 +208,8 @@ profile_fixup (
|
||||
value = elf_machine_plt_value (l, reloc, value);
|
||||
|
||||
/* Store the result for later runs. */
|
||||
*resultp = value;
|
||||
if (__builtin_expect (! _dl_bind_not, 1))
|
||||
*resultp = value;
|
||||
}
|
||||
|
||||
(*mcount_fct) (retaddr, value);
|
||||
|
@ -67,6 +67,9 @@ void *__libc_stack_end;
|
||||
/* Path where the binary is found. */
|
||||
const char *_dl_origin_path;
|
||||
|
||||
/* Nonzero if runtime lookup should not update the .got/.plt. */
|
||||
int _dl_bind_not;
|
||||
|
||||
/* Initially empty list of loaded objects. */
|
||||
struct link_map *_dl_loaded;
|
||||
|
||||
@ -109,6 +112,8 @@ non_dynamic_init (void)
|
||||
|
||||
_dl_lazy = *(getenv ("LD_BIND_NOW") ?: "") == '\0';
|
||||
|
||||
_dl_bind_not = *(getenv ("LD_BIND_NOT") ?: "") != '\0';
|
||||
|
||||
_dl_dynamic_weak = *(getenv ("LD_DYNAMIC_WEAK") ?: "") == '\0';
|
||||
|
||||
#ifdef DL_PLATFORM_INIT
|
||||
|
@ -96,6 +96,7 @@ int _dl_debug_statistics;
|
||||
const char *_dl_inhibit_rpath; /* RPATH values which should be
|
||||
ignored. */
|
||||
const char *_dl_origin_path;
|
||||
int _dl_bind_not;
|
||||
|
||||
/* This is a pointer to the map for the main object and through it to
|
||||
all loaded objects. */
|
||||
@ -1363,7 +1364,12 @@ process_envvars (enum mode *modep, int *lazyp)
|
||||
case 8:
|
||||
/* Do we bind early? */
|
||||
if (memcmp (&envline[3], "BIND_NOW", 8) == 0)
|
||||
bind_now = envline[12] != '\0';
|
||||
{
|
||||
bind_now = envline[12] != '\0';
|
||||
break;
|
||||
}
|
||||
if (memcmp (&envline[3], "BIND_NOT", 8) == 0)
|
||||
_dl_bind_not = envline[12] != '\0';
|
||||
break;
|
||||
|
||||
case 9:
|
||||
|
@ -195,6 +195,9 @@ extern int _dl_dynamic_weak;
|
||||
/* The array with message we print as a last resort. */
|
||||
extern const char _dl_out_of_memory[];
|
||||
|
||||
/* Nonzero if runtime lookups should not update the .got/.plt. */
|
||||
extern int _dl_bind_not;
|
||||
|
||||
/* OS-dependent function to open the zero-fill device. */
|
||||
extern int _dl_sysdep_open_zero_fill (void); /* dl-sysdep.c */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user