diff --git a/ChangeLog b/ChangeLog index fb8851b604..f6c2bac197 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2002-02-04 Ulrich Drepper + + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Move + dl_cpuclock_offset initialization to _dl_start_final. + (_dl_show_auxv): Avoid unnecessary sign extension. + * elf/rtld.c (_dl_start_final): Initialize dl_cpuclock_offset. + 2002-02-03 Ulrich Drepper * config.h.in: Add HAVE_TLS_SUPPORT. diff --git a/elf/rtld.c b/elf/rtld.c index b49d110267..e2360e3ae1 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -96,8 +96,7 @@ asm (".protected _rtld_global"); #endif -static void dl_main (const ElfW(Phdr) *phdr, - ElfW(Word) phnum, +static void dl_main (const ElfW(Phdr) *phdr, ElfW(Word) phnum, ElfW(Addr) *user_entry); static struct libname_list _dl_rtld_libname; @@ -241,6 +240,10 @@ _dl_start_final (void *arg, struct link_map *bootstrap_map_p, GL(dl_rtld_map).l_map_start = (ElfW(Addr)) _begin; GL(dl_rtld_map).l_map_end = (ElfW(Addr)) _end; +#if HP_TIMING_AVAIL + HP_TIMING_NOW (GL(dl_cpuclock_offset)); +#endif + /* Call the OS-dependent function to set up life so we can do things like file access. It will call `dl_main' (below) to do all the real work of the dynamic linker, and then unwind our frame and run the user diff --git a/sysdeps/generic/dl-sysdep.c b/sysdeps/generic/dl-sysdep.c index 79816eeb8c..64cfd47bef 100644 --- a/sysdeps/generic/dl-sysdep.c +++ b/sysdeps/generic/dl-sysdep.c @@ -89,10 +89,6 @@ _dl_sysdep_start (void **start_argptr, # define set_seen(tag) seen |= M ((tag)->a_type) #endif -#if HP_TIMING_AVAIL - HP_TIMING_NOW (GL(dl_cpuclock_offset)); -#endif - DL_FIND_ARG_COMPONENTS (start_argptr, _dl_argc, _dl_argv, _environ, _dl_auxv); @@ -258,9 +254,11 @@ _dl_show_auxv (void) const char *val = av->a_un.a_ptr; if (__builtin_expect (auxvars[idx].form, dec) == dec) - val = _itoa (av->a_un.a_val, buf + sizeof buf - 1, 10, 0); + val = _itoa ((unsigned long int) av->a_un.a_val, + buf + sizeof buf - 1, 10, 0); else if (__builtin_expect (auxvars[idx].form, hex) == hex) - val = _itoa (av->a_un.a_val, buf + sizeof buf - 1, 16, 0); + val = _itoa ((unsigned long int) av->a_un.a_val, + buf + sizeof buf - 1, 16, 0); _dl_printf ("%s%s\n", auxvars[idx].label, val); } diff --git a/sysdeps/i386/elf/configure.in b/sysdeps/i386/elf/configure.in index d7e1704540..6352e69aa3 100644 --- a/sysdeps/i386/elf/configure.in +++ b/sysdeps/i386/elf/configure.in @@ -7,9 +7,11 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. AC_CACHE_CHECK(for i386 TLS support, libc_cv_386_tls, [dnl cat > conftest.s <<\EOF .section ".tdata", "awT", @progbits + .globl foo foo: .long 1 .section ".tbss", "awT", @nobits - .comm bar,4,4 + .globl bar +bar: .skip 4 .text baz: leal bar@TLSLDM(%ebx), %eax leal bar@DTPOFF(%eax), %edx