summaryrefslogtreecommitdiff
path: root/ldso/ldso/ld_hash.h
diff options
context:
space:
mode:
Diffstat (limited to 'ldso/ldso/ld_hash.h')
-rw-r--r--ldso/ldso/ld_hash.h41
1 files changed, 40 insertions, 1 deletions
diff --git a/ldso/ldso/ld_hash.h b/ldso/ldso/ld_hash.h
index 9cd2894f8..043b64aca 100644
--- a/ldso/ldso/ld_hash.h
+++ b/ldso/ldso/ld_hash.h
@@ -1,4 +1,38 @@
-#include "link.h"
+#ifndef _HASH_H_
+#define _HASH_H_
+
+#include "elf.h"
+
+/* Header file that describes the internal data structures used by the
+ * ELF dynamic linker. */
+
+struct link_map
+{
+ /* These entries must be in this order to be compatible with the
+ * interface used by gdb to obtain the list of symbols. */
+ unsigned long l_addr; /* address at which object is mapped */
+ char *l_name; /* full name of loaded object */
+ Elf32_Dyn *l_ld; /* dynamic structure of object */
+ struct link_map *l_next;
+ struct link_map *l_prev;
+};
+
+/* The DT_DEBUG entry in the .dynamic section is given the address of
+ * this structure. gdb can pick this up to obtain the correct list of
+ * loaded modules. */
+struct r_debug
+{
+ int r_version; /* debugging info version no */
+ struct link_map *r_map; /* address of link_map */
+ unsigned long r_brk; /* address of update routine */
+ enum
+ {
+ RT_CONSISTENT,
+ RT_ADD,
+ RT_DELETE
+ } r_state;
+ unsigned long r_ldbase; /* base addr of ld.so */
+};
#ifndef RTLD_NEXT
#define RTLD_NEXT ((void*)-1)
@@ -94,3 +128,8 @@ static inline int _dl_symbol(char * name)
#define DL_BAD_HANDLE 9
#define DL_NO_SYMBOL 10
+
+
+#endif /* _HASH_H_ */
+
+