about summary refs log tree commit diff
path: root/sysdeps/generic/ldsodefs.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/generic/ldsodefs.h')
-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)