summary refs log tree commit diff
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 */