Update.
authorUlrich Drepper <drepper@redhat.com>
Wed, 6 Feb 2002 01:14:01 +0000 (01:14 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 6 Feb 2002 01:14:01 +0000 (01:14 +0000)
* elf/dl-minimal.c: Define _itoa_lower_digits.

* elf/dynamic-link.h (elf_get_dynamic_info): ld.so can have
DT_FLAGS set.

ChangeLog
elf/dl-minimal.c
elf/dynamic-link.h

index b5993a2..bb9c28a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 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
        loading modules with the DF_STATIC_TLS flag set.
        * elf/dynamic-link.h (elf_get_dynamic_info): Initialize l_flags
index cd899bf..c65151c 100644 (file)
@@ -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";
index 0229684..f4bbcb5 100644 (file)
@@ -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