summary refs log tree commit diff
path: root/elf
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@gmail.com>2011-08-20 12:59:45 -0400
committerUlrich Drepper <drepper@gmail.com>2011-08-20 12:59:45 -0400
commit49c74ba90e99c978b452dd430d08bb831e26a2aa (patch)
tree5373b6bea78db7d178e7baa62d6d62c5a16fbfb0 /elf
parent5c43483f0c868a29161979a783b7a728d665f06e (diff)
downloadglibc-49c74ba90e99c978b452dd430d08bb831e26a2aa.tar.gz
glibc-49c74ba90e99c978b452dd430d08bb831e26a2aa.tar.xz
glibc-49c74ba90e99c978b452dd430d08bb831e26a2aa.zip
Further improve printing os ELF symbol lookup scope information
Diffstat (limited to 'elf')
-rw-r--r--elf/dl-open.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/elf/dl-open.c b/elf/dl-open.c
index 65fdd3168d..865490daaf 100644
--- a/elf/dl-open.c
+++ b/elf/dl-open.c
@@ -152,6 +152,11 @@ add_to_global (struct link_map *new)
 	{
 	  map->l_global = 1;
 	  ns->_ns_main_searchlist->r_list[new_nlist++] = map;
+
+	  /* We modify the global scope.  Report this.  */
+	  if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_SCOPES, 0))
+	    _dl_debug_printf ("\nadd %s [%lu] to global scope\n",
+			      map->l_name, map->l_ns);
 	}
     }
   atomic_write_barrier ();
@@ -345,6 +350,7 @@ dl_open_worker (void *a)
   for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i)
     {
       struct link_map *imap = new->l_searchlist.r_list[i];
+      int from_scope = 0;
 
       /* If the initializer has been called already, the object has
 	 not been loaded here and now.  */
@@ -409,9 +415,8 @@ dl_open_worker (void *a)
 	  atomic_write_barrier ();
 	  imap->l_scope[cnt] = &new->l_searchlist;
 
-	  /* Print scope information.  */
-	  if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_SCOPES, 0))
-	    _dl_show_scope (imap, cnt);
+	  /* Print only new scope information.  */
+	  from_scope = cnt;
 	}
       /* Only add TLS memory if this object is loaded now and
 	 therefore is not yet initialized.  */
@@ -431,6 +436,10 @@ dl_open_worker (void *a)
 	  /* We have to bump the generation counter.  */
 	  any_tls = true;
 	}
+
+      /* Print scope information.  */
+      if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_SCOPES, 0))
+	_dl_show_scope (imap, from_scope);
     }
 
   /* Bump the generation number if necessary.  */