Skip to content

Commit

Permalink
Improve printing of lookup scopes
Browse files Browse the repository at this point in the history
The scope of a new object should be printed earlier and when the scope
of an already loaded object is extended only the changes should be
printed.
  • Loading branch information
drepper committed Aug 16, 2011
1 parent f0f47fa commit 174baab
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 9 deletions.
7 changes: 7 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
2011-08-16 Ulrich Drepper <[email protected]>

* elf/dl-open.c (_dl_show_scope): Take additional parameter which
specifies first scope to show.
(dl_open_worker): Update callers. Move printing scope of new
object to before the relocation.
* rtld.c (dl_main): Update _dl_show_scope call.
* sysdeps/generic/ldsodefs.h: Update declaration.

* elf/dl-open.c (_dl_show_scope): Use _dl_debug_printf to generate the
string for the scope number.

Expand Down
14 changes: 7 additions & 7 deletions elf/dl-open.c
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,10 @@ dl_open_worker (void *a)
r->r_state = RT_CONSISTENT;
_dl_debug_state ();

/* Print scope information. */
if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_SCOPES, 0))
_dl_show_scope (new, 0);

/* Only do lazy relocation if `LD_BIND_NOW' is not set. */
int reloc_mode = mode & __RTLD_AUDIT;
if (GLRO(dl_lazy))
Expand Down Expand Up @@ -407,7 +411,7 @@ dl_open_worker (void *a)

/* Print scope information. */
if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_SCOPES, 0))
_dl_show_scope (imap);
_dl_show_scope (imap, cnt);
}
/* Only add TLS memory if this object is loaded now and
therefore is not yet initialized. */
Expand Down Expand Up @@ -493,10 +497,6 @@ cannot load any more object with static TLS"));
if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_FILES, 0))
_dl_debug_printf ("opening file=%s [%lu]; direct_opencount=%u\n\n",
new->l_name, new->l_ns, new->l_direct_opencount);

/* Print scope information. */
if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_SCOPES, 0))
_dl_show_scope (new);
}


Expand Down Expand Up @@ -634,12 +634,12 @@ no more namespaces available for dlmopen()"));


void
_dl_show_scope (struct link_map *l)
_dl_show_scope (struct link_map *l, int from)
{
_dl_debug_printf ("object=%s [%lu]\n",
*l->l_name ? l->l_name : rtld_progname, l->l_ns);
if (l->l_scope != NULL)
for (int scope_cnt = 0; l->l_scope[scope_cnt] != NULL; ++scope_cnt)
for (int scope_cnt = from; l->l_scope[scope_cnt] != NULL; ++scope_cnt)
{
_dl_debug_printf (" scope %u:", scope_cnt);

Expand Down
2 changes: 1 addition & 1 deletion elf/rtld.c
Original file line number Diff line number Diff line change
Expand Up @@ -2197,7 +2197,7 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
_dl_debug_printf ("\nInitial object scopes\n");

for (struct link_map *l = main_map; l != NULL; l = l->l_next)
_dl_show_scope (l);
_dl_show_scope (l, 0);
}

if (prelinked)
Expand Down
2 changes: 1 addition & 1 deletion sysdeps/generic/ldsodefs.h
Original file line number Diff line number Diff line change
Expand Up @@ -1106,7 +1106,7 @@ extern int _dl_addr_inside_object (struct link_map *l, const ElfW(Addr) addr)
internal_function attribute_hidden;

/* Show show of an object. */
extern void _dl_show_scope (struct link_map *new);
extern void _dl_show_scope (struct link_map *new, int from);

__END_DECLS

Expand Down

0 comments on commit 174baab

Please sign in to comment.