Further improve printing os ELF symbol lookup scope information

This commit is contained in:
Ulrich Drepper 2011-08-20 12:59:45 -04:00
parent 5c43483f0c
commit 49c74ba90e
2 changed files with 16 additions and 3 deletions

View File

@ -1,5 +1,9 @@
2011-08-20 Ulrich Drepper <drepper@gmail.com> 2011-08-20 Ulrich Drepper <drepper@gmail.com>
* elf/dl-open.c (add_to_global): Report additions to the global scope
for LD_DEBUG=scopes.
(dl_open_worker): Also print scope of newly loaded dependencies.
[BZ #13114] [BZ #13114]
* stdio-common/Makefile (tests): Add bug24. * stdio-common/Makefile (tests): Add bug24.
* stdio-common/bug24.c: New file. * stdio-common/bug24.c: New file.

View File

@ -152,6 +152,11 @@ add_to_global (struct link_map *new)
{ {
map->l_global = 1; map->l_global = 1;
ns->_ns_main_searchlist->r_list[new_nlist++] = map; 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 (); atomic_write_barrier ();
@ -345,6 +350,7 @@ dl_open_worker (void *a)
for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i) for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i)
{ {
struct link_map *imap = new->l_searchlist.r_list[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 /* If the initializer has been called already, the object has
not been loaded here and now. */ not been loaded here and now. */
@ -409,9 +415,8 @@ dl_open_worker (void *a)
atomic_write_barrier (); atomic_write_barrier ();
imap->l_scope[cnt] = &new->l_searchlist; imap->l_scope[cnt] = &new->l_searchlist;
/* Print scope information. */ /* Print only new scope information. */
if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_SCOPES, 0)) from_scope = cnt;
_dl_show_scope (imap, cnt);
} }
/* Only add TLS memory if this object is loaded now and /* Only add TLS memory if this object is loaded now and
therefore is not yet initialized. */ therefore is not yet initialized. */
@ -431,6 +436,10 @@ dl_open_worker (void *a)
/* We have to bump the generation counter. */ /* We have to bump the generation counter. */
any_tls = true; 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. */ /* Bump the generation number if necessary. */