]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Tue, 12 Mar 2002 00:38:37 +0000 (00:38 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 12 Mar 2002 00:38:37 +0000 (00:38 +0000)
2002-03-11  Jakub Jelinek  <jakub@redhat.com>

* sysdeps/i386/elf/configure.in: Fix comment.

* sysdeps/sparc/sparc64/configure.in: New.
* sysdeps/sparc/sparc64/dl-machine.h (elf_machine_load_address): Fix
if .dynamic comes before .got.
* config.h.in (SPARC64_DYNAMIC_BEFORE_GOT): Add.

* sysdeps/sparc/sparc64/hp-timing.h (HP_TIMING_DIFF,
HP_TIMING_ACCUM): Fix typos.

* string/strfry.c: Add some more randomness to the seed.
Patch by James A Morrison <ja2morri@student.math.uwaterloo.ca>.

Patch by James Antill <james@anqd.org> [PR libc/2787].

ChangeLog
config.h.in
string/strfry.c
sysdeps/i386/elf/configure
sysdeps/i386/elf/configure.in
sysdeps/sparc/sparc64/configure [new file with mode: 0644]
sysdeps/sparc/sparc64/configure.in [new file with mode: 0644]
sysdeps/sparc/sparc64/dl-machine.h
sysdeps/sparc/sparc64/hp-timing.h

index 691ca934c068066af6a524d045aa2e1b609ff816..034ac72939554a2884bc3e635d66747130b94a3e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,20 @@
+2002-03-11  Jakub Jelinek  <jakub@redhat.com>
+
+       * sysdeps/i386/elf/configure.in: Fix comment.
+
+       * sysdeps/sparc/sparc64/configure.in: New.
+       * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_load_address): Fix
+       if .dynamic comes before .got.
+       * config.h.in (SPARC64_DYNAMIC_BEFORE_GOT): Add.
+
+       * sysdeps/sparc/sparc64/hp-timing.h (HP_TIMING_DIFF,
+       HP_TIMING_ACCUM): Fix typos.
+
 2002-03-11  Ulrich Drepper  <drepper@redhat.com>
 
+       * string/strfry.c: Add some more randomness to the seed.
+       Patch by James A Morrison <ja2morri@student.math.uwaterloo.ca>.
+
        * po/es.po: Update from translation team.
        * po/fr.po: Likewise.
 
@@ -7,7 +22,7 @@
 
        * stdio-common/printf_fp.c (__printf_fp): Correct check for %F format
        when determining type of format.
-       Patch by James Antill <james@and.org> [PR libc/2787].
+       Patch by James Antill <james@anqd.org> [PR libc/2787].
 
 2002-03-04  Jakub Jelinek  <jakub@redhat.com>
 
index dc831e51e6af2ee153c38f9807df922d58d83e3b..42e7e48417e58e0c5c6ca6fb96d5ff276253cbbe 100644 (file)
 /* Mach specific: define if the `host_page_size' RPC is available.  */
 #undef HAVE_HOST_PAGE_SIZE
 
+/* Sparc64 specific: define if .dynamic section comes before .got for
+   shared libs.  */
+#undef  SPARC64_DYNAMIC_BEFORE_GOT
+
 /*
 \f */
 
index 4bb22552f18e5bb67c86248401c54903aa4024a7..112dd4adb334a766f722ebca5fc52cd0e5a6dd93 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1996, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1996, 1999, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -19,6 +19,7 @@
 #include <string.h>
 #include <stdlib.h>
 #include <time.h>
+#include <unistd.h>
 
 char *
 strfry (char *string)
@@ -31,7 +32,8 @@ strfry (char *string)
     {
       static char state[32];
       rdata.state = NULL;
-      __initstate_r (time ((time_t *) NULL), state, sizeof (state), &rdata);
+      __initstate_r (time ((time_t *) NULL) ^ getpid (),
+                    state, sizeof (state), &rdata);
       init = 1;
     }
 
index 1033f78ef3c7ce4253a057203fd909acf33f6797..0e8003e236f4cc90f03a7f207aac3e11befa1f75 100755 (executable)
@@ -1,4 +1,4 @@
- # Local configure fragment for sysdeps/unix/sysv/linux.
+ # Local configure fragment for sysdeps/i386/elf.
 
 if test "$usetls" != no; then
 # Check for support of thread-local storage handling in assembler and
index 96e9b2c9f350c6ed6c4303a97e26e0c36094e108..e83555e92bacb3d580368cf6015bd7c691c7a8a1 100644 (file)
@@ -1,6 +1,6 @@
 sinclude(./aclocal.m4)dnl Autoconf lossage
 GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
-# Local configure fragment for sysdeps/unix/sysv/linux.
+# Local configure fragment for sysdeps/i386/elf.
 
 if test "$usetls" != no; then
 # Check for support of thread-local storage handling in assembler and
diff --git a/sysdeps/sparc/sparc64/configure b/sysdeps/sparc/sparc64/configure
new file mode 100644 (file)
index 0000000..954ff7a
--- /dev/null
@@ -0,0 +1,33 @@
+ # Local configure fragment for sysdeps/sparc/sparc64.
+
+# Check whether .got section comes before or after .dynamic
+echo $ac_n "checking where sparc64 .dynamic section comes before .got""... $ac_c" 1>&6
+echo "configure:6: checking where sparc64 .dynamic section comes before .got" >&5
+if eval "test \"`echo '$''{'libc_cv_sparc64_dynamic_before_got'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+${CC-cc} $CFLAGS -shared -Wl,--verbose 2>&1 \
+  | grep '^[   ]*\.\(got\|dynamic\)[^A-Za-z0-9_]' > conftest.order
+
+if test `cat conftest.order | wc -l` != 2; then
+  { echo "configure: error: Couldn't figure .got/.dynamic relative placement" 1>&2; exit 1; }
+else
+  
+  if head -n 1 conftest.order | grep '^[       ]*\.got'; then
+    libc_cv_sparc64_dynamic_before_got=no
+  else
+    libc_cv_sparc64_dynamic_before_got=yes
+  fi
+  
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$libc_cv_sparc64_dynamic_before_got" 1>&6
+if test $libc_cv_sparc64_dynamic_before_got = yes; then
+  cat >> confdefs.h <<\EOF
+#define SPARC64_DYNAMIC_BEFORE_GOT 1
+EOF
+
+fi
diff --git a/sysdeps/sparc/sparc64/configure.in b/sysdeps/sparc/sparc64/configure.in
new file mode 100644 (file)
index 0000000..30b0122
--- /dev/null
@@ -0,0 +1,26 @@
+sinclude(./aclocal.m4)dnl Autoconf lossage
+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+# Local configure fragment for sysdeps/sparc/sparc64.
+
+# Check whether .got section comes before or after .dynamic
+AC_CACHE_CHECK(where sparc64 .dynamic section comes before .got,
+              libc_cv_sparc64_dynamic_before_got, [dnl
+changequote(,)
+${CC-cc} $CFLAGS -shared -Wl,--verbose 2>&1 \
+  | grep '^[   ]*\.\(got\|dynamic\)[^A-Za-z0-9_]' > conftest.order
+changequote([,])
+if test `cat conftest.order | wc -l` != 2; then
+  AC_ERROR(Couldn't figure .got/.dynamic relative placement)
+else
+  changequote(,)
+  if head -n 1 conftest.order | grep '^[       ]*\.got'; then
+    libc_cv_sparc64_dynamic_before_got=no
+  else
+    libc_cv_sparc64_dynamic_before_got=yes
+  fi
+  changequote([,])
+fi
+rm -f conftest*])
+if test $libc_cv_sparc64_dynamic_before_got = yes; then
+  AC_DEFINE(SPARC64_DYNAMIC_BEFORE_GOT)
+fi
index 8d9bf7aa674b2561e2e48c458122303c55ebdc14..4ced7deef8f107de55c37d4b0a642c5e425b2b35 100644 (file)
@@ -77,14 +77,19 @@ elf_machine_load_address (void)
 
      The following method relies on the fact that sparcv9 ABI maximal
      page length is 1MB and all ELF segments on sparc64 are aligned
-     to 1MB.  Also, it relies on _DYNAMIC coming after _GLOBAL_OFFSET_TABLE_
-     and assumes that they both fit into the first 1MB of the RW segment.
-     This should be true for some time unless ld.so grows too much, at the
-     moment the whole stripped ld.so is 128KB and only smaller part of that
-     is in the RW segment.  */
-
+     to 1MB.  Also assumes that they both fit into the first 1MB of
+     the RW segment.  This should be true for some time unless ld.so
+     grows too much, at the moment the whole stripped ld.so is 128KB
+     and only smaller part of that is in the RW segment.  */
+
+#ifdef SPARC64_DYNAMIC_BEFORE_GOT
+  /* If _DYNAMIC comes before _GLOBAL_OFFSET_TABLE_...  */
+  return ((Elf64_Addr)elf_pic_register - *elf_pic_register) & ~0xfffffUL;
+#else
+  /* ... and if _DYNAMIC comes after _GLOBAL_OFFSET_TABLE_.  */
   return ((Elf64_Addr)elf_pic_register - *elf_pic_register + 0xfffff)
         & ~0xfffffUL;
+#endif
 }
 
 /* We have 4 cases to handle.  And we code different code sequences
index 8475e15ae02833dfbb0585d55d78db893ba61683..f6cb89b6032642dcd206aa5817a2750ef04a7e54 100644 (file)
@@ -37,14 +37,14 @@ typedef unsigned long int hp_timing_t;
 #define HP_TIMING_DIFF_INIT() \
   do {                                                                       \
     int __cnt = 5;                                                           \
-    GL(hp_timing_overhead) = ~0ull;                                          \
+    GL(dl_hp_timing_overhead) = ~0ull;                                       \
     do                                                                       \
       {                                                                              \
        hp_timing_t __t1, __t2;                                               \
        HP_TIMING_NOW (__t1);                                                 \
        HP_TIMING_NOW (__t2);                                                 \
-       if (__t2 - __t1 < GL(hp_timing_overhead))                             \
-         GL(hp_timing_overhead) = __t2 - __t1;                               \
+       if (__t2 - __t1 < GL(dl_hp_timing_overhead))                          \
+         GL(dl_hp_timing_overhead) = __t2 - __t1;                            \
       }                                                                              \
     while (--__cnt > 0);                                                     \
   } while (0)
@@ -53,7 +53,7 @@ typedef unsigned long int hp_timing_t;
 
 #define HP_TIMING_ACCUM(Sum, Diff)                             \
 do {                                                           \
-  hp_timing_t __diff = (Diff) - GL(hp_timing_overhead);                \
+  hp_timing_t __diff = (Diff) - GL(dl_hp_timing_overhead);     \
   hp_timing_t tmp1, tmp2;                                      \
   __asm__ __volatile__("1: ldx [%3], %0\n\t"                   \
                       "add     %0, %2, %1\n\t"                 \