summaryrefslogtreecommitdiff
path: root/elf/dl-deps.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1999-02-20 23:57:48 +0000
committerUlrich Drepper <drepper@redhat.com>1999-02-20 23:57:48 +0000
commitad9570d73331610132729ae4c6b89e779fab4877 (patch)
tree5cbfa0641ad27490d372844694b6a63383632cb8 /elf/dl-deps.c
parent2f6164e233683930e3ef2313efcfc456114fd4da (diff)
Update.
* elf/dl-deps.c (_dl_map_object_deps): Don't add dummy objects created for tracing to the scope lists. * elf/do-lookup.h: Remove test for l_opencount == 0 after above change. DT_SYMTAB is always available according to ELF spec.
Diffstat (limited to 'elf/dl-deps.c')
-rw-r--r--elf/dl-deps.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/elf/dl-deps.c b/elf/dl-deps.c
index ca0d9322ba..7291cde787 100644
--- a/elf/dl-deps.c
+++ b/elf/dl-deps.c
@@ -385,7 +385,11 @@ _dl_map_object_deps (struct link_map *map,
for (nlist = 0, runp = known; runp; runp = runp->unique)
{
- map->l_searchlist.r_list[nlist++] = runp->map;
+ if (trace_mode && runp->map->l_opencount == 0)
+ /* This can happen when we trace the loading. */
+ --map->l_searchlist.r_nlist;
+ else
+ map->l_searchlist.r_list[nlist++] = runp->map;
/* Now clear all the mark bits we set in the objects on the search list
to avoid duplicates, so the next call starts fresh. */
@@ -406,7 +410,11 @@ _dl_map_object_deps (struct link_map *map,
"cannot allocate symbol search list");
for (cnt = 0, runp = known; runp; runp = runp->dup)
- map->l_searchlist.r_duplist[cnt++] = runp->map;
+ if (trace_mode && runp->map->l_opencount == 0)
+ /* This can happen when we trace the loading. */
+ --map->l_searchlist.r_nduplist;
+ else
+ map->l_searchlist.r_duplist[cnt++] = runp->map;
}
/* Now that all this succeeded put the objects in the global scope if