mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-23 09:43:32 +08:00
Improve printing of lookup scopes
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.
This commit is contained in:
parent
f0f47fa064
commit
174baab3f9
@ -1,5 +1,12 @@
|
||||
2011-08-16 Ulrich Drepper <drepper@gmail.com>
|
||||
|
||||
* 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.
|
||||
|
||||
|
@ -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))
|
||||
@ -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. */
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user