aboutsummaryrefslogtreecommitdiff
path: root/elf
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2002-02-06 01:14:01 +0000
committerUlrich Drepper <drepper@redhat.com>2002-02-06 01:14:01 +0000
commit37beecf77ca265266deabc0244819ab3f14adaa7 (patch)
tree48320a2eca5650b0a73053b46d42aaee01eae5cd /elf
parentec70c011557d0964dfc528d2d326d75526aec123 (diff)
downloadglibc-37beecf77ca265266deabc0244819ab3f14adaa7.tar
glibc-37beecf77ca265266deabc0244819ab3f14adaa7.tar.gz
glibc-37beecf77ca265266deabc0244819ab3f14adaa7.tar.bz2
glibc-37beecf77ca265266deabc0244819ab3f14adaa7.zip
Update.
* elf/dl-minimal.c: Define _itoa_lower_digits. * elf/dynamic-link.h (elf_get_dynamic_info): ld.so can have DT_FLAGS set.
Diffstat (limited to 'elf')
-rw-r--r--elf/dl-minimal.c5
-rw-r--r--elf/dynamic-link.h14
2 files changed, 12 insertions, 7 deletions
diff --git a/elf/dl-minimal.c b/elf/dl-minimal.c
index cd899bfd74..c65151cb56 100644
--- a/elf/dl-minimal.c
+++ b/elf/dl-minimal.c
@@ -334,3 +334,8 @@ __strsep (char **stringp, const char *delim)
}
weak_alias (__strsep, strsep)
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";
diff --git a/elf/dynamic-link.h b/elf/dynamic-link.h
index 0229684009..f4bbcb5cfd 100644
--- a/elf/dynamic-link.h
+++ b/elf/dynamic-link.h
@@ -108,24 +108,24 @@ elf_get_dynamic_info (struct link_map *l)
if (info[DT_REL] != NULL)
assert (info[DT_RELENT]->d_un.d_val == sizeof (ElfW(Rel)));
#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)
{
/* Flags are used. Translate to the old form where available.
Since these l_info entries are only tested for NULL pointers it
is ok if they point to the DT_FLAGS entry. */
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];
- if l->l_(flags & DF_TEXTREL)
+ if (l->l_flags & DF_TEXTREL)
info[DT_TEXTREL] = info[DT_FLAGS];
if (l->l_flags & DF_BIND_NOW)
info[DT_BIND_NOW] = info[DT_FLAGS];
- }
#endif
+ }
if (info[VERSYMIDX (DT_FLAGS_1)] != NULL)
l->l_flags_1 = info[VERSYMIDX (DT_FLAGS_1)]->d_un.d_val;
#ifdef RTLD_BOOTSTRAP