summaryrefslogtreecommitdiff
path: root/elf/link.h
diff options
context:
space:
mode:
Diffstat (limited to 'elf/link.h')
-rw-r--r--elf/link.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/elf/link.h b/elf/link.h
index 17fea305ed..b277bf75c1 100644
--- a/elf/link.h
+++ b/elf/link.h
@@ -109,6 +109,11 @@ struct link_map
struct link_map **l_searchlist;
unsigned int l_nsearchlist;
+ /* We keep another list in which we keep duplicates. This is
+ needed in _dl_lookup_symbol_skip to implemented RTLD_NEXT. */
+ struct link_map **l_dupsearchlist;
+ unsigned int l_ndupsearchlist;
+
/* Dependent object that first caused this object to be loaded. */
struct link_map *l_loader;
@@ -239,6 +244,14 @@ extern ElfW(Addr) _dl_lookup_symbol (const char *undef,
const char *reference_name,
int flags);
+/* For handling RTLD_NEXT we must be able to skip shared objects. */
+extern ElfW(Addr) _dl_lookup_symbol_skip (const char *undef,
+ const ElfW(Sym) **sym,
+ struct link_map *symbol_scope[],
+ const char *reference_name,
+ struct link_map *skip_this,
+ int flags);
+
/* 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);