mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-28 00:21:52 +03:00
Update.
* elf/dl-minimal.c: Define _itoa_lower_digits. * elf/dynamic-link.h (elf_get_dynamic_info): ld.so can have DT_FLAGS set.
This commit is contained in:
@ -1,5 +1,10 @@
|
|||||||
2002-02-05 Ulrich Drepper <drepper@redhat.com>
|
2002-02-05 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* elf/dl-minimal.c: Define _itoa_lower_digits.
|
||||||
|
|
||||||
|
* elf/dynamic-link.h (elf_get_dynamic_info): ld.so can have
|
||||||
|
DT_FLAGS set.
|
||||||
|
|
||||||
* elf/dl-load.c (_dl_map_object_from_fd): Prevent dynamically
|
* elf/dl-load.c (_dl_map_object_from_fd): Prevent dynamically
|
||||||
loading modules with the DF_STATIC_TLS flag set.
|
loading modules with the DF_STATIC_TLS flag set.
|
||||||
* elf/dynamic-link.h (elf_get_dynamic_info): Initialize l_flags
|
* elf/dynamic-link.h (elf_get_dynamic_info): Initialize l_flags
|
||||||
|
@ -334,3 +334,8 @@ __strsep (char **stringp, const char *delim)
|
|||||||
}
|
}
|
||||||
weak_alias (__strsep, strsep)
|
weak_alias (__strsep, strsep)
|
||||||
strong_alias (__strsep, __strsep_g)
|
strong_alias (__strsep, __strsep_g)
|
||||||
|
|
||||||
|
|
||||||
|
/* The '_itoa_lower_digits' variable in libc.so is able to handle bases
|
||||||
|
up to 36. We don't need this here. */
|
||||||
|
const char _itoa_lower_digits[16] = "0123456789abcdef";
|
||||||
|
@ -108,24 +108,24 @@ elf_get_dynamic_info (struct link_map *l)
|
|||||||
if (info[DT_REL] != NULL)
|
if (info[DT_REL] != NULL)
|
||||||
assert (info[DT_RELENT]->d_un.d_val == sizeof (ElfW(Rel)));
|
assert (info[DT_RELENT]->d_un.d_val == sizeof (ElfW(Rel)));
|
||||||
#endif
|
#endif
|
||||||
#ifdef RTLD_BOOTSTRAP
|
|
||||||
/* None of the flags should be set for the dynamic linker itself. */
|
|
||||||
assert (info[DT_FLAGS] == NULL);
|
|
||||||
#else
|
|
||||||
if (info[DT_FLAGS] != NULL)
|
if (info[DT_FLAGS] != NULL)
|
||||||
{
|
{
|
||||||
/* Flags are used. Translate to the old form where available.
|
/* Flags are used. Translate to the old form where available.
|
||||||
Since these l_info entries are only tested for NULL pointers it
|
Since these l_info entries are only tested for NULL pointers it
|
||||||
is ok if they point to the DT_FLAGS entry. */
|
is ok if they point to the DT_FLAGS entry. */
|
||||||
l->l_flags = info[DT_FLAGS]->d_un.d_val;
|
l->l_flags = info[DT_FLAGS]->d_un.d_val;
|
||||||
if l->l_(flags & DF_SYMBOLIC)
|
#ifdef RTLD_BOOTSTRAP
|
||||||
|
/* These three flags must not be set for ld.so. */
|
||||||
|
assert ((l->l_flags & (DF_SYMBOLIC | DF_TEXTREL | DF_BIND_NOW)) == 0);
|
||||||
|
#else
|
||||||
|
if (l->l_flags & DF_SYMBOLIC)
|
||||||
info[DT_SYMBOLIC] = info[DT_FLAGS];
|
info[DT_SYMBOLIC] = info[DT_FLAGS];
|
||||||
if l->l_(flags & DF_TEXTREL)
|
if (l->l_flags & DF_TEXTREL)
|
||||||
info[DT_TEXTREL] = info[DT_FLAGS];
|
info[DT_TEXTREL] = info[DT_FLAGS];
|
||||||
if (l->l_flags & DF_BIND_NOW)
|
if (l->l_flags & DF_BIND_NOW)
|
||||||
info[DT_BIND_NOW] = info[DT_FLAGS];
|
info[DT_BIND_NOW] = info[DT_FLAGS];
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
if (info[VERSYMIDX (DT_FLAGS_1)] != NULL)
|
if (info[VERSYMIDX (DT_FLAGS_1)] != NULL)
|
||||||
l->l_flags_1 = info[VERSYMIDX (DT_FLAGS_1)]->d_un.d_val;
|
l->l_flags_1 = info[VERSYMIDX (DT_FLAGS_1)]->d_un.d_val;
|
||||||
#ifdef RTLD_BOOTSTRAP
|
#ifdef RTLD_BOOTSTRAP
|
||||||
|
Reference in New Issue
Block a user