about summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2004-03-07 08:39:57 +0000
committerUlrich Drepper <drepper@redhat.com>2004-03-07 08:39:57 +0000
commitc31e278f8636fbe11ad933d9089e98361665a978 (patch)
tree5101942451f1417f14d3f4b0702ee101464a50c4 /sysdeps
parent021723ab784461de9eac57398ea16a47d4ab9366 (diff)
downloadglibc-c31e278f8636fbe11ad933d9089e98361665a978.tar.gz
glibc-c31e278f8636fbe11ad933d9089e98361665a978.tar.xz
glibc-c31e278f8636fbe11ad933d9089e98361665a978.zip
Update.
2004-03-07  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/generic/ldsodefs.h: Move _dl_initial_searclist,
	_dl_hp_timing_overhead, _dl_init_all_dirs, and the content of
	dl-procinfo.c from _rtld_global to _rtld_global_ro.
	* elf/rtld.c: Adjust initializer for _rtld_global_ro.
	* elf/dl-close.c: Use GLRO instead of GL where appropriate.
	* elf/dl-libc.c: Likewise.
	* elf/dl-load.c: Likewise.
	* sysdeps/i386/dl-procinfo.h: Likewise.
	* sysdeps/i386/i686/hp-timing.h: Likewise.
	* sysdeps/ia64/hp-timing.h: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/hp-timing.h: Likewise.
	* sysdeps/sparc/sparc64/hp-timing.h: Likewise.
	* sysdeps/unix/sysv/linux/arm/dl-procinfo.h: Likewise.
	* sysdeps/unix/sysv/linux/i386/dl-procinfo.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.h: Likewise.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/generic/ldsodefs.h27
-rw-r--r--sysdeps/i386/dl-procinfo.h10
-rw-r--r--sysdeps/i386/i686/hp-timing.h12
-rw-r--r--sysdeps/ia64/hp-timing.h10
-rw-r--r--sysdeps/sparc/sparc32/sparcv9/hp-timing.h10
-rw-r--r--sysdeps/sparc/sparc64/hp-timing.h10
-rw-r--r--sysdeps/unix/sysv/linux/arm/dl-procinfo.h8
-rw-r--r--sysdeps/unix/sysv/linux/i386/dl-procinfo.h4
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h8
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.h8
10 files changed, 56 insertions, 51 deletions
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
index b5247ad3ec..4ff8bbf217 100644
--- a/sysdeps/generic/ldsodefs.h
+++ b/sysdeps/generic/ldsodefs.h
@@ -213,8 +213,6 @@ struct rtld_global
   EXTERN struct r_scope_elem *_dl_global_scope[2];
   /* Direct pointer to the searchlist of the main object.  */
   EXTERN struct r_scope_elem *_dl_main_searchlist;
-  /* Copy of the content of `_dl_main_searchlist'.  */
-  EXTERN struct r_scope_elem _dl_initial_searchlist;
   /* This is zero at program start to signal that the global scope map is
      allocated by rtld.  Later it keeps the size of the map.  It might be
      reset if in _dl_close if the last global object is removed.  */
@@ -243,9 +241,6 @@ struct rtld_global
 #if HP_TIMING_AVAIL || HP_SMALL_TIMING_AVAIL
   /* Start time on CPU clock.  */
   EXTERN hp_timing_t _dl_cpuclock_offset;
-
-  /* Overhead of a high-precision timing measurement.  */
-  EXTERN hp_timing_t _dl_hp_timing_overhead;
 #endif
 
   /* Map of shared object to be profiled.  */
@@ -257,17 +252,11 @@ struct rtld_global
 
   /* List of search directories.  */
   EXTERN struct r_search_path_elem *_dl_all_dirs;
-  EXTERN struct r_search_path_elem *_dl_init_all_dirs;
 
 #ifdef _LIBC_REENTRANT
   EXTERN void **(*_dl_error_catch_tsd) (void) __attribute__ ((const));
 #endif
 
-  /* Get architecture specific definitions.  */
-#define PROCINFO_DECL
-#define PROCINFO_CLASS EXTERN
-#include <dl-procinfo.c>
-
   /* Structure describing the dynamic linker itself.  */
   EXTERN struct link_map _dl_rtld_map;
 
@@ -388,6 +377,9 @@ struct rtld_global_ro
   EXTERN const char *_dl_platform;
   EXTERN size_t _dl_platformlen;
 
+  /* Copy of the content of `_dl_main_searchlist' at startup time.  */
+  EXTERN struct r_scope_elem _dl_initial_searchlist;
+
   /* CLK_TCK as reported by the kernel.  */
   EXTERN int _dl_clktck;
 
@@ -419,6 +411,11 @@ struct rtld_global_ro
   /* Mask for important hardware capabilities we honour. */
   EXTERN unsigned long int _dl_hwcap_mask;
 
+  /* Get architecture specific definitions.  */
+#define PROCINFO_DECL
+#define PROCINFO_CLASS EXTERN
+#include <dl-procinfo.c>
+
   /* Names of shared object for which the RPATH should be ignored.  */
   EXTERN const char *_dl_inhibit_rpath;
 
@@ -439,6 +436,14 @@ struct rtld_global_ro
   /* Map of shared object to be prelink traced.  */
   EXTERN struct link_map *_dl_trace_prelink_map;
 
+  /* All search directories defined at startup.  */
+  EXTERN struct r_search_path_elem *_dl_init_all_dirs;
+
+#if HP_TIMING_AVAIL || HP_SMALL_TIMING_AVAIL
+  /* Overhead of a high-precision timing measurement.  */
+  EXTERN hp_timing_t _dl_hp_timing_overhead;
+#endif
+
 #ifdef NEED_DL_SYSINFO
   /* Syscall handling improvements.  This is very specific to x86.  */
   EXTERN uintptr_t _dl_sysinfo;
diff --git a/sysdeps/i386/dl-procinfo.h b/sysdeps/i386/dl-procinfo.h
index 51f783a95a..e6b7faf812 100644
--- a/sysdeps/i386/dl-procinfo.h
+++ b/sysdeps/i386/dl-procinfo.h
@@ -1,5 +1,5 @@
 /* i386 version of processor capability information handling macros.
-   Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc.
+   Copyright (C) 1998, 2000, 2003, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -68,14 +68,14 @@ static inline const char *
 __attribute__ ((unused))
 _dl_hwcap_string (int idx)
 {
-  return GL(dl_x86_cap_flags)[idx];
+  return GLRO(dl_x86_cap_flags)[idx];
 };
 
 static inline const char *
 __attribute__ ((unused))
 _dl_platform_string (int idx)
 {
-  return GL(dl_x86_platforms)[idx - _DL_FIRST_PLATFORM];
+  return GLRO(dl_x86_platforms)[idx - _DL_FIRST_PLATFORM];
 };
 
 static inline int
@@ -86,7 +86,7 @@ _dl_string_hwcap (const char *str)
 
   for (i = 0; i < _DL_HWCAP_COUNT; i++)
     {
-      if (strcmp (str, GL(dl_x86_cap_flags)[i]) == 0)
+      if (strcmp (str, GLRO(dl_x86_cap_flags)[i]) == 0)
 	return i;
     }
   return -1;
@@ -101,7 +101,7 @@ _dl_string_platform (const char *str)
   if (str != NULL)
     for (i = 0; i < _DL_PLATFORMS_COUNT; ++i)
       {
-	if (strcmp (str, GL(dl_x86_platforms)[i]) == 0)
+	if (strcmp (str, GLRO(dl_x86_platforms)[i]) == 0)
 	  return _DL_FIRST_PLATFORM + i;
       }
   return -1;
diff --git a/sysdeps/i386/i686/hp-timing.h b/sysdeps/i386/i686/hp-timing.h
index 41000edb08..a5906835f7 100644
--- a/sysdeps/i386/i686/hp-timing.h
+++ b/sysdeps/i386/i686/hp-timing.h
@@ -1,5 +1,5 @@
 /* High precision, low overhead timing functions.  i686 version.
-   Copyright (C) 1998, 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 1998, 2002, 2003, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -97,17 +97,17 @@ typedef unsigned long long int hp_timing_t;
 /* Use two 'rdtsc' instructions in a row to find out how long it takes.  */
 #define HP_TIMING_DIFF_INIT() \
   do {									      \
-    if (GL(dl_hp_timing_overhead) == 0)					      \
+    if (GLRO(dl_hp_timing_overhead) == 0)				      \
       {									      \
 	int __cnt = 5;							      \
-	GL(dl_hp_timing_overhead) = ~0ull;				      \
+	GLRO(dl_hp_timing_overhead) = ~0ull;				      \
 	do								      \
 	  {								      \
 	    hp_timing_t __t1, __t2;					      \
 	    HP_TIMING_NOW (__t1);					      \
 	    HP_TIMING_NOW (__t2);					      \
-	    if (__t2 - __t1 < GL(dl_hp_timing_overhead))		      \
-	      GL(dl_hp_timing_overhead) = __t2 - __t1;			      \
+	    if (__t2 - __t1 < GLRO(dl_hp_timing_overhead))		      \
+	      GLRO(dl_hp_timing_overhead) = __t2 - __t1;		      \
 	  }								      \
 	while (--__cnt > 0);						      \
       }									      \
@@ -121,7 +121,7 @@ typedef unsigned long long int hp_timing_t;
   do {									      \
     char __not_done;							      \
     hp_timing_t __oldval = (Sum);					      \
-    hp_timing_t __diff = (Diff) - GL(dl_hp_timing_overhead);		      \
+    hp_timing_t __diff = (Diff) - GLRO(dl_hp_timing_overhead);		      \
     do									      \
       {									      \
 	hp_timing_t __newval = __oldval + __diff;			      \
diff --git a/sysdeps/ia64/hp-timing.h b/sysdeps/ia64/hp-timing.h
index a1ad8d3937..3c2166ee56 100644
--- a/sysdeps/ia64/hp-timing.h
+++ b/sysdeps/ia64/hp-timing.h
@@ -1,5 +1,5 @@
 /* High precision, low overhead timing functions.  IA-64 version.
-   Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 2001.
 
@@ -100,14 +100,14 @@ typedef unsigned long int hp_timing_t;
 #define HP_TIMING_DIFF_INIT() \
   do {									      \
     int __cnt = 5;							      \
-    GL(dl_hp_timing_overhead) = ~0ul;					      \
+    GLRO(dl_hp_timing_overhead) = ~0ul;					      \
     do									      \
       {									      \
 	hp_timing_t __t1, __t2;						      \
 	HP_TIMING_NOW (__t1);						      \
 	HP_TIMING_NOW (__t2);						      \
-	if (__t2 - __t1 < GL(dl_hp_timing_overhead))			      \
-	  GL(dl_hp_timing_overhead) = __t2 - __t1;			      \
+	if (__t2 - __t1 < GLRO(dl_hp_timing_overhead))			      \
+	  GLRO(dl_hp_timing_overhead) = __t2 - __t1;			      \
       }									      \
     while (--__cnt > 0);						      \
   } while (0)
@@ -119,7 +119,7 @@ typedef unsigned long int hp_timing_t;
 #define HP_TIMING_ACCUM(Sum, Diff) \
   do {									      \
     hp_timing_t __oldval;						      \
-    hp_timing_t __diff = (Diff) - GL(dl_hp_timing_overhead);		      \
+    hp_timing_t __diff = (Diff) - GLRO(dl_hp_timing_overhead);		      \
     hp_timing_t __newval;						      \
     do									      \
       {									      \
diff --git a/sysdeps/sparc/sparc32/sparcv9/hp-timing.h b/sysdeps/sparc/sparc32/sparcv9/hp-timing.h
index cc262882ab..2c88a72f2e 100644
--- a/sysdeps/sparc/sparc32/sparcv9/hp-timing.h
+++ b/sysdeps/sparc/sparc32/sparcv9/hp-timing.h
@@ -1,5 +1,5 @@
 /* High precision, low overhead timing functions.  sparcv9 version.
-   Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by David S. Miller <davem@redhat.com>, 2001.
 
@@ -40,14 +40,14 @@ typedef unsigned long long int hp_timing_t;
 #define HP_TIMING_DIFF_INIT() \
   do {									      \
     int __cnt = 5;							      \
-    GL(dl_hp_timing_overhead) = ~0ull;					      \
+    GLRO(dl_hp_timing_overhead) = ~0ull;				      \
     do									      \
       {									      \
 	hp_timing_t __t1, __t2;						      \
 	HP_TIMING_NOW (__t1);						      \
 	HP_TIMING_NOW (__t2);						      \
-	if (__t2 - __t1 < GL(dl_hp_timing_overhead))			      \
-	  GL(dl_hp_timing_overhead) = __t2 - __t1;			      \
+	if (__t2 - __t1 < GLRO(dl_hp_timing_overhead))			      \
+	  GLRO(dl_hp_timing_overhead) = __t2 - __t1;			      \
       }									      \
     while (--__cnt > 0);						      \
   } while (0)
@@ -56,7 +56,7 @@ typedef unsigned long long int hp_timing_t;
 
 #define HP_TIMING_ACCUM(Sum, Diff)				\
 do {								\
-  hp_timing_t __diff = (Diff) - GL(dl_hp_timing_overhead);	\
+  hp_timing_t __diff = (Diff) - GLRO(dl_hp_timing_overhead);	\
   __asm__ __volatile__("srl	%L0, 0, %%g1\n\t"		\
 		       "sllx	%H0, 32, %%g6\n\t"		\
 		       "or	%%g1, %%g6, %%g1\n\t"		\
diff --git a/sysdeps/sparc/sparc64/hp-timing.h b/sysdeps/sparc/sparc64/hp-timing.h
index 1784dc1c91..e45c6a88fc 100644
--- a/sysdeps/sparc/sparc64/hp-timing.h
+++ b/sysdeps/sparc/sparc64/hp-timing.h
@@ -1,5 +1,5 @@
 /* High precision, low overhead timing functions.  sparc64 version.
-   Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by David S. Miller <davem@redhat.com>, 2001.
 
@@ -37,14 +37,14 @@ typedef unsigned long int hp_timing_t;
 #define HP_TIMING_DIFF_INIT() \
   do {									      \
     int __cnt = 5;							      \
-    GL(dl_hp_timing_overhead) = ~0ull;					      \
+    GLRO(dl_hp_timing_overhead) = ~0ull;				      \
     do									      \
       {									      \
 	hp_timing_t __t1, __t2;						      \
 	HP_TIMING_NOW (__t1);						      \
 	HP_TIMING_NOW (__t2);						      \
-	if (__t2 - __t1 < GL(dl_hp_timing_overhead))			      \
-	  GL(dl_hp_timing_overhead) = __t2 - __t1;			      \
+	if (__t2 - __t1 < GLRO(dl_hp_timing_overhead))			      \
+	  GLRO(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(dl_hp_timing_overhead);	\
+  hp_timing_t __diff = (Diff) - GLRO(dl_hp_timing_overhead);	\
   hp_timing_t tmp1, tmp2;					\
   __asm__ __volatile__("1: ldx	[%3], %0\n\t"			\
 		       "add	%0, %2, %1\n\t"			\
diff --git a/sysdeps/unix/sysv/linux/arm/dl-procinfo.h b/sysdeps/unix/sysv/linux/arm/dl-procinfo.h
index 0ced27489f..35b333479b 100644
--- a/sysdeps/unix/sysv/linux/arm/dl-procinfo.h
+++ b/sysdeps/unix/sysv/linux/arm/dl-procinfo.h
@@ -1,5 +1,5 @@
 /* Linux/ARM version of processor capability information handling macros.
-   Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Philip Blundell <philb@gnu.org>, 2001.
 
@@ -39,7 +39,7 @@ _dl_procinfo (int word)
 
   for (i = 0; i < _DL_HWCAP_COUNT; ++i)
     if (word & (1 << i))
-      _dl_printf (" %s", GL(dl_arm_cap_flags)[i]);
+      _dl_printf (" %s", GLRO(dl_arm_cap_flags)[i]);
 
   _dl_printf ("\n");
 
@@ -50,7 +50,7 @@ static inline const char *
 __attribute__ ((unused))
 _dl_hwcap_string (int idx)
 {
-  return GL(dl_arm_cap_flags)[idx];
+  return GLRO(dl_arm_cap_flags)[idx];
 };
 
 enum
@@ -75,7 +75,7 @@ _dl_string_hwcap (const char *str)
 
   for (i = 0; i < _DL_HWCAP_COUNT; i++)
     {
-      if (strcmp (str, GL(dl_arm_cap_flags)[i]) == 0)
+      if (strcmp (str, GLRO(dl_arm_cap_flags)[i]) == 0)
 	return i;
     }
   return -1;
diff --git a/sysdeps/unix/sysv/linux/i386/dl-procinfo.h b/sysdeps/unix/sysv/linux/i386/dl-procinfo.h
index 32eaf08439..d92a3b235f 100644
--- a/sysdeps/unix/sysv/linux/i386/dl-procinfo.h
+++ b/sysdeps/unix/sysv/linux/i386/dl-procinfo.h
@@ -1,5 +1,5 @@
 /* Linux/i386 version of processor capability information handling macros.
-   Copyright (C) 1998-2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 1998-2002, 2003, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -35,7 +35,7 @@ _dl_procinfo (int word)
 
   for (i = 0; i < _DL_HWCAP_COUNT; ++i)
     if (word & (1 << i))
-      _dl_printf (" %s", GL(dl_x86_cap_flags)[i]);
+      _dl_printf (" %s", GLRO(dl_x86_cap_flags)[i]);
 
   _dl_printf ("\n");
 
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h b/sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h
index 2354a6adcb..82a94fca9c 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h
@@ -1,5 +1,5 @@
 /* Linux/sparc32 version of processor capability information handling macros.
-   Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 1999,2000,2001,2002,2003,2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jj@ultra.linux.cz>, 1999.
 
@@ -35,7 +35,7 @@ _dl_procinfo (int word)
 
   for (i = 0; i < _DL_HWCAP_COUNT; ++i)
     if (word & (1 << i))
-      _dl_printf (" %s", GL(dl_sparc32_cap_flags)[i]);
+      _dl_printf (" %s", GLRO(dl_sparc32_cap_flags)[i]);
 
   _dl_printf ("\n");
 
@@ -46,7 +46,7 @@ static inline const char *
 __attribute__ ((unused))
 _dl_hwcap_string (int idx)
 {
-  return GL(dl_sparc32_cap_flags)[idx];
+  return GLRO(dl_sparc32_cap_flags)[idx];
 };
 
 static inline int
@@ -56,7 +56,7 @@ _dl_string_hwcap (const char *str)
   int i;
   for (i = 0; i < _DL_HWCAP_COUNT; i++)
     {
-      if (strcmp (str, GL(dl_sparc32_cap_flags) [i]) == 0)
+      if (strcmp (str, GLRO(dl_sparc32_cap_flags) [i]) == 0)
 	return i;
     }
   return -1;
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.h b/sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.h
index 22103fc253..3ce77a40e8 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.h
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.h
@@ -1,5 +1,5 @@
 /* Linux/sparc64 version of processor capability information handling macros.
-   Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jj@ultra.linux.cz>, 1999.
 
@@ -35,7 +35,7 @@ _dl_procinfo (int word)
 
   for (i = 0; i < _DL_HWCAP_COUNT; ++i)
     if (word & (1 << i))
-      _dl_printf (" %s", GL(dl_sparc64_cap_flags)[i]);
+      _dl_printf (" %s", GLRO(dl_sparc64_cap_flags)[i]);
 
   _dl_printf ("\n");
 
@@ -46,7 +46,7 @@ static inline const char *
 __attribute__ ((unused))
 _dl_hwcap_string (int idx)
 {
-  return GL(dl_sparc64_cap_flags)[idx];
+  return GLRO(dl_sparc64_cap_flags)[idx];
 };
 
 
@@ -57,7 +57,7 @@ _dl_string_hwcap (const char *str)
   int i;
   for (i = 0; i < _DL_HWCAP_COUNT; i++)
     {
-      if (strcmp (str, GL(dl_sparc64_cap_flags) [i]) == 0)
+      if (strcmp (str, GLRO(dl_sparc64_cap_flags) [i]) == 0)
 	return i;
     }
   return -1;