summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--elf/rtld.c7
-rw-r--r--sysdeps/generic/dl-sysdep.c10
-rw-r--r--sysdeps/i386/elf/configure.in4
4 files changed, 19 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index fb8851b604..f6c2bac197 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2002-02-04  Ulrich Drepper  <drepper@redhat.com>
+
+	* 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  <drepper@redhat.com>
 
 	* 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