about summary refs log tree commit diff
path: root/sysdeps/generic
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2004-03-07 05:26:02 +0000
committerUlrich Drepper <drepper@redhat.com>2004-03-07 05:26:02 +0000
commit021723ab784461de9eac57398ea16a47d4ab9366 (patch)
tree9fef57d701b88d5729e3150ea197f86957727998 /sysdeps/generic
parentbdf4a4f1eabb2e085b0610b53bb37b5263f4728d (diff)
downloadglibc-021723ab784461de9eac57398ea16a47d4ab9366.tar.gz
glibc-021723ab784461de9eac57398ea16a47d4ab9366.tar.xz
glibc-021723ab784461de9eac57398ea16a47d4ab9366.zip
Update.
2004-03-06  Ulrich Drepper  <drepper@redhat.com>

	* elf/dl-lookup.c: We don't need for specialized lookup functions.
	Combining the functionality does not slow down relocation processing,
	it might even speed it up a little.
	* sysdeps/generic/ldsodefs.h: Adjust prototypes for lookup function.
	Add only one function pointer to rtlf_global_ro.
	* elf/do-lookup.h: Replace #ifs with ifs.
	* elf/dl-libc.c: Adjust _dl_lookup_* callers.
	* elf/dl-reloc.c: Likewise.
	* elf/dl-runtime.c: Likewise.
	* elf/dl-sym.c: Likewise.
	* elf/rtld.c: Likewise.  Adjust _rtld_global_ro initialization.

	* sysdeps/generic/ldsodefs.h (__rtld_local_attribute__,
	__rtld_global_attribute__): Undef after use.
	(_rtld_local_ro): Define __rtld_local_attribute__ with just hidden
	if available.

	* sysdeps/alpha/Subdirs: New file.
	* sysdeps/alpha/soft-fp/Makefile: New file.
	* sysdeps/alpha/soft-fp/Versions: New file.
	* sysdeps/alpha/soft-fp/local-soft-fp.h: New file.
	* sysdeps/alpha/soft-fp/ots_add.c: New file.
	* sysdeps/alpha/soft-fp/ots_cmp.c: new file.
	* sysdeps/alpha/soft-fp/ots_cmpe.c: New file.
	* sysdeps/alpha/soft-fp/ots_cvtqux.c: New file.
	* sysdeps/alpha/soft-fp/ots_cvtqx.c: New file.
	* sysdeps/alpha/soft-fp/ots_cvttx.c: New file.
	* sysdeps/alpha/soft-fp/ots_cvtxq.c: New file.
	* sysdeps/alpha/soft-fp/ots_cvtxt.c: New file.
	* sysdeps/alpha/soft-fp/ots_div.c: New file.
	* sysdeps/alpha/soft-fp/ots_mul.c: New file.
	* sysdeps/alpha/soft-fp/ots_nintxq.c: New file.
	* sysdeps/alpha/soft-fp/ots_sub.c: New file.
Diffstat (limited to 'sysdeps/generic')
-rw-r--r--sysdeps/generic/ldsodefs.h75
1 files changed, 23 insertions, 52 deletions
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
index cdb0735d49..b5247ad3ec 100644
--- a/sysdeps/generic/ldsodefs.h
+++ b/sysdeps/generic/ldsodefs.h
@@ -347,8 +347,10 @@ struct rtld_global
 #   define __rtld_local_attribute__
 #  endif
 extern struct rtld_global _rtld_local __rtld_local_attribute__;
+#  undef __rtld_local_attribute__
 # endif
 extern struct rtld_global _rtld_global __rtld_global_attribute__;
+# undef __rtld_global_attribute__
 #endif
 
 #ifndef SHARED
@@ -478,42 +480,34 @@ struct rtld_global_ro
 					      const char *);
   void (internal_function *_dl_start_profile) (void);
   void (*_dl_mcount) (ElfW(Addr) frompc, ElfW(Addr) selfpc);
-  lookup_t (internal_function *_dl_lookup_symbol) (const char *,
-						   struct link_map *,
-						   const ElfW(Sym) **,
-						   struct r_scope_elem *[],
-						   int, int);
-  lookup_t (internal_function *_dl_lookup_versioned_symbol) (const char *,
-							     struct link_map *,
-							     const ElfW(Sym) **,
-							     struct r_scope_elem *[],
-							     const struct r_found_version *,
-							     int, int);
-  lookup_t (internal_function *_dl_lookup_symbol_skip) (const char *,
-							struct link_map *,
-							const ElfW(Sym) **,
-							struct r_scope_elem *[],
-							struct link_map *);
-  lookup_t (internal_function *_dl_lookup_versioned_symbol_skip) (const char *,
-								  struct link_map *,
-								  const ElfW(Sym) **,
-								  struct r_scope_elem *[],
-								  const struct r_found_version *,
-								  struct link_map *);
+  lookup_t (internal_function *_dl_lookup_symbol_x) (const char *,
+						     struct link_map *,
+						     const ElfW(Sym) **,
+						     struct r_scope_elem *[],
+						     const struct r_found_version *,
+						     int, int,
+						     struct link_map *);
 
 };
 # define __rtld_global_attribute__
 # ifdef IS_IN_rtld
+#  ifdef HAVE_VISIBILITY_ATTRIBUTE
+#   define __rtld_local_attribute__ __attribute__ ((visibility ("hidden")))
+#  else
+#   define __rtld_local_attribute__
+#  endif
 extern struct rtld_global_ro _rtld_local_ro
     attribute_relro __rtld_local_attribute__;
 extern struct rtld_global_ro _rtld_global_ro
     attribute_relro __rtld_global_attribute__;
+#  undef __rtld_local_attribute__
 # else
 /* We cheat a bit here.  We declare the variable as as const even
    though it is at startup.  */
 extern const struct rtld_global_ro _rtld_global_ro
     attribute_relro __rtld_global_attribute__;
 # endif
+# undef __rtld_global_attribute__
 #endif
 #undef EXTERN
 
@@ -681,13 +675,6 @@ extern void _dl_rtld_di_serinfo (struct link_map *loader,
    object) is searched in turn.  REFERENCE_NAME should name the object
    containing the reference; it is used in error messages.
    TYPE_CLASS describes the type of symbol we are looking for.  */
-extern lookup_t _dl_lookup_symbol (const char *undef,
-				   struct link_map *undef_map,
-				   const ElfW(Sym) **sym,
-				   struct r_scope_elem *symbol_scope[],
-				   int type_class, int flags)
-     internal_function attribute_hidden;
-
 enum
   {
     /* If necessary add dependency between user and provider object.  */
@@ -698,31 +685,15 @@ enum
   };
 
 /* Lookup versioned symbol.  */
-extern lookup_t _dl_lookup_versioned_symbol (const char *undef,
-					     struct link_map *undef_map,
-					     const ElfW(Sym) **sym,
-					     struct r_scope_elem *symbol_scope[],
-					     const struct r_found_version *version,
-					     int type_class, int explicit)
+extern lookup_t _dl_lookup_symbol_x (const char *undef,
+				     struct link_map *undef_map,
+				     const ElfW(Sym) **sym,
+				     struct r_scope_elem *symbol_scope[],
+				     const struct r_found_version *version,
+				     int type_class, int explicit,
+				     struct link_map *skip_map)
      internal_function attribute_hidden;
 
-/* For handling RTLD_NEXT we must be able to skip shared objects.  */
-extern lookup_t _dl_lookup_symbol_skip (const char *undef,
-					struct link_map *undef_map,
-					const ElfW(Sym) **sym,
-					struct r_scope_elem *symbol_scope[],
-					struct link_map *skip_this)
-     internal_function;
-
-/* For handling RTLD_NEXT with versioned symbols we must be able to
-   skip shared objects.  */
-extern lookup_t _dl_lookup_versioned_symbol_skip (const char *undef,
-						  struct link_map *undef_map,
-						  const ElfW(Sym) **sym,
-						  struct r_scope_elem *symbol_scope[],
-						  const struct r_found_version *version,
-						  struct link_map *skip_this)
-     internal_function;
 
 /* Look up symbol NAME in MAP's scope and return its run-time address.  */
 extern ElfW(Addr) _dl_symbol_value (struct link_map *map, const char *name)