2003-10-15  Jakub Jelinek  <jakub@redhat.com>

	* elf/rtld.c (print_statistics): Print also number of relative
	relocations.
This commit is contained in:
Ulrich Drepper 2003-10-15 06:24:26 +00:00
parent 1769a73f0b
commit a21a20a33f
5 changed files with 51 additions and 0 deletions

@ -1,3 +1,8 @@
2003-10-15 Jakub Jelinek <jakub@redhat.com>
* elf/rtld.c (print_statistics): Print also number of relative
relocations.
2003-10-12 Carlos O'Donell <carlos@baldric.uwo.ca>
* sysdeps/hppa/sysdep.h: Undef JUMPTARGET before use.

@ -2120,10 +2120,30 @@ print_statistics (void)
buf, pbuf);
}
#endif
unsigned long int num_relative_relocations = 0;
struct r_scope_elem *scope = &GL(dl_loaded)->l_searchlist;
unsigned int i;
for (i = 0; i < scope->r_nlist; i++)
{
struct link_map *l = scope->r_list [i];
if (!l->l_addr)
continue;
if (l->l_info[VERSYMIDX (DT_RELCOUNT)])
num_relative_relocations += l->l_info[VERSYMIDX (DT_RELCOUNT)]->d_un.d_val;
if (l->l_info[VERSYMIDX (DT_RELACOUNT)])
num_relative_relocations += l->l_info[VERSYMIDX (DT_RELACOUNT)]->d_un.d_val;
}
INTUSE(_dl_debug_printf) (" number of relocations: %lu\n",
GL(dl_num_relocations));
INTUSE(_dl_debug_printf) (" number of relocations from cache: %lu\n",
GL(dl_num_cache_relocations));
INTUSE(_dl_debug_printf) (" number of relative relocations: %lu\n",
num_relative_relocations);
#ifndef HP_TIMING_NONAVAIL
/* Time spend while loading the object and the dependencies. */

@ -1,3 +1,9 @@
2003-10-06 Carlos O'Donell <carlos@baldric.uwo.ca>
* pthread.c (__pthread_self_stack): _STACK_GROWS_UP case added.
(__pthread_find_self): Likewise.
* manager.c (thread_segment): _STACK_GROWS_UP case added.
2003-10-10 Carlos O'Donell <carlos@baldric.uwo.ca>
* linuxthreads/sysdeps/unix/sysv/linux/hppa/malloc-machine.h: New file.

@ -70,8 +70,13 @@ static pthread_descr manager_thread;
#else
static inline pthread_descr thread_segment(int seg)
{
# ifdef _STACK_GROWS_UP
return (pthread_descr)(THREAD_STACK_START_ADDRESS + (seg - 1) * STACK_SIZE)
+ 1;
# else
return (pthread_descr)(THREAD_STACK_START_ADDRESS - (seg - 1) * STACK_SIZE)
- 1;
# endif
}
#endif

@ -893,7 +893,11 @@ pthread_descr __pthread_find_self(void)
/* __pthread_handles[0] is the initial thread, __pthread_handles[1] is
the manager threads handled specially in thread_self(), so start at 2 */
h = __pthread_handles + 2;
# ifdef _STACK_GROWS_UP
while (! (sp >= (char *) h->h_descr && sp < h->h_descr->p_guardaddr)) h++;
# else
while (! (sp <= (char *) h->h_descr && sp >= h->h_bottom)) h++;
# endif
return h->h_descr;
}
@ -908,12 +912,23 @@ pthread_descr __pthread_self_stack(void)
return manager_thread;
h = __pthread_handles + 2;
# ifdef USE_TLS
# ifdef _STACK_GROWS_UP
while (h->h_descr == NULL
|| ! (sp >= h->h_descr->p_stackaddr && sp < h->h_descr->p_guardaddr))
h++;
# else
while (h->h_descr == NULL
|| ! (sp <= (char *) h->h_descr->p_stackaddr && sp >= h->h_bottom))
h++;
# endif
# else
# ifdef _STACK_GROWS_UP
while (! (sp >= (char *) h->h_descr && sp < h->h_descr->p_guardaddr))
h++;
# else
while (! (sp <= (char *) h->h_descr && sp >= h->h_bottom))
h++;
# endif
# endif
return h->h_descr;
}