aboutsummaryrefslogtreecommitdiff
path: root/elf/link.h
diff options
context:
space:
mode:
Diffstat (limited to 'elf/link.h')
-rw-r--r--elf/link.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/elf/link.h b/elf/link.h
index f457174df5..e0fccd0fca 100644
--- a/elf/link.h
+++ b/elf/link.h
@@ -91,6 +91,25 @@ struct r_found_version
const char *filename;
};
+/* We want to cache information about the searches for shared objects. */
+
+enum r_dir_status { unknown, nonexisting, existing };
+
+struct r_search_path_elem
+ {
+ const char *dirname;
+
+ size_t dirnamelen;
+ enum r_dir_status dirstatus;
+
+ size_t machdirnamelen;
+ enum r_dir_status machdirstatus;
+
+ /* This link is only used in the `all_dirs' member of `r_search_path'. */
+ struct r_search_path_elem *next;
+ };
+
+
/* Structure describing a loaded shared object. The `l_next' and `l_prev'
members form a chain of all the shared objects loaded at startup.
@@ -163,6 +182,9 @@ struct link_map
/* Array with version names. */
unsigned int l_nversions;
struct r_found_version *l_versions;
+
+ /* Collected information about own RPATH directories. */
+ struct r_search_path_elem **l_rpath_dirs;
};
@@ -407,6 +429,10 @@ extern void _dl_debug_state (void);
in the `r_ldbase' member. Returns the address of the structure. */
extern struct r_debug *_dl_debug_initialize (ElfW(Addr) ldbase);
+/* Initialize the basic data structure for the search paths. */
+void _dl_init_paths (void);
+
+
__END_DECLS
#endif /* link.h */