Update.
authorUlrich Drepper <drepper@redhat.com>
Tue, 24 Oct 2000 01:02:15 +0000 (01:02 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 24 Oct 2000 01:02:15 +0000 (01:02 +0000)
* include/link.h (struct link_map): New bit field l_faked.
* elf/dl-deps.c: Use l_faked field in struct link_map instead of
the magic l_opencount==0.
* elf/dl-load.c: Likewise.
* elf/dl-version.c: Likewise.
* elf/rtld.c: Likewise.

ChangeLog
elf/dl-deps.c
elf/dl-load.c
elf/dl-version.c
elf/rtld.c
include/link.h

index dc3b957..0cdf129 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2000-10-23  Ulrich Drepper  <drepper@redhat.com>
 
+       * include/link.h (struct link_map): New bit field l_faked.
+       * elf/dl-deps.c: Use l_faked field in struct link_map instead of
+       the magic l_opencount==0.
+       * elf/dl-load.c: Likewise.
+       * elf/dl-version.c: Likewise.
+       * elf/rtld.c: Likewise.
+
        * elf/dl-close.c (_dl_close): Add a few more __builtin_expect.
 
 2000-10-23  Jim Meyering  <meyering@ascend.com>
index 566073e..c458292 100644 (file)
@@ -495,7 +495,7 @@ _dl_map_object_deps (struct link_map *map,
 
   for (nlist = 0, runp = known; runp; runp = runp->unique)
     {
-      if (trace_mode && runp->map->l_opencount == 0)
+      if (trace_mode && runp->map->l_faked)
        /* This can happen when we trace the loading.  */
        --map->l_searchlist.r_nlist;
       else
@@ -516,7 +516,7 @@ _dl_map_object_deps (struct link_map *map,
       map->l_searchlist.r_duplist = map->l_searchlist.r_list + nlist;
 
       for (cnt = 0, runp = known; runp; runp = runp->dup)
-       if (trace_mode && runp->map->l_opencount == 0)
+       if (trace_mode && runp->map->l_faked)
          /* This can happen when we trace the loading.  */
          --map->l_searchlist.r_nduplist;
        else
index 6f5f336..bb3a2e3 100644 (file)
@@ -1679,10 +1679,10 @@ _dl_map_object (struct link_map *loader, const char *name, int preloaded,
              || (l = _dl_new_object (name_copy, name, type, loader)) == NULL)
            _dl_signal_error (ENOMEM, name,
                              N_("cannot create shared object descriptor"));
-         /* We use an opencount of 0 as a sign for the faked entry.
-            Since the descriptor is initialized with zero we do not
+         /* Signal that this is a faked entry.  */
+         l->l_faked = 1;
+         /* Since the descriptor is initialized with zero we do not
             have do this here.
-         l->l_opencount = 0;
          l->l_reserved = 0; */
          l->l_buckets = &dummy_bucket;
          l->l_nbuckets = 1;
index 504287c..bb0fc71 100644 (file)
@@ -219,7 +219,7 @@ _dl_check_map_versions (struct link_map *map, int verbose, int trace_mode)
          /* Make sure this is no stub we created because of a missing
             dependency.  */
          if (__builtin_expect (! trace_mode, 1)
-             || __builtin_expect (needed->l_opencount, 1) != 0)
+             || ! __builtin_expect (needed->l_faked, 0))
            {
              /* NEEDED is the map for the file we need.  Now look for the
                 dependency symbols.  */
@@ -375,8 +375,7 @@ _dl_check_all_versions (struct link_map *map, int verbose, int trace_mode)
   int result = 0;
 
   for (l = map; l != NULL; l = l->l_next)
-    result |= (l->l_opencount != 0
-              && _dl_check_map_versions (l, verbose, trace_mode));
+    result |= ! l->l_faked && _dl_check_map_versions (l, verbose, trace_mode);
 
   return result;
 }
index d17d839..ea5d7b5 100644 (file)
@@ -891,7 +891,7 @@ of this helper program; chances are you did not intend to run this program.\n\
          struct link_map *l;
 
          for (l = _dl_loaded->l_next; l; l = l->l_next)
-           if (l->l_opencount == 0)
+           if (l->l_faked)
              /* The library was not found.  */
              _dl_sysdep_message ("\t", l->l_libname->name, " => not found\n",
                                  NULL);
@@ -948,7 +948,7 @@ of this helper program; chances are you did not intend to run this program.\n\
                l = l->l_next;
              do
                {
-                 if (l != &_dl_rtld_map && l->l_opencount > 0)
+                 if (l != &_dl_rtld_map && ! l->l_faked)
                    {
                      args.l = l;
                      _dl_receive_error (print_unresolved, relocate_doit,
index 4c04099..bb931f2 100644 (file)
@@ -180,6 +180,8 @@ struct link_map
                                        to by `l_phdr' is allocated.  */
     unsigned int l_soname_added:1; /* Nonzero if the SONAME is for sure in
                                      the l_libname list.  */
+    unsigned int l_faked:1;    /* Nonzero if this is a faked descriptor
+                                  without associated file.  */
 
     /* Array with version names.  */
     unsigned int l_nversions;
@@ -202,7 +204,7 @@ struct link_map
     ElfW(Addr) l_map_start, l_map_end;
 
     /* This is an array defining the lookup scope for this link map.
-     There are at most three different scope lists.  */
+       There are at most three different scope lists.  */
     struct r_scope_elem *l_scope[4];
 
     /* A similar array, this time only with the local scope.  This is