summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/libdl/_dl_int.h
diff options
context:
space:
mode:
Diffstat (limited to 'mdk-stage1/dietlibc/libdl/_dl_int.h')
-rw-r--r--mdk-stage1/dietlibc/libdl/_dl_int.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/libdl/_dl_int.h b/mdk-stage1/dietlibc/libdl/_dl_int.h
new file mode 100644
index 000000000..659e6ee0f
--- /dev/null
+++ b/mdk-stage1/dietlibc/libdl/_dl_int.h
@@ -0,0 +1,31 @@
+#ifndef ___DL_INT_H__
+#define ___DL_INT_H__
+
+#include <elf.h>
+
+struct _dl_handle {
+ /* basic */
+ void * mem_base; /* base address of maped *.so */
+ unsigned long mem_size; /* len of mem block */
+ unsigned int lnk_count; /* reference count */
+
+ /* symbol resolve helper */
+ unsigned long*hash_tab; /* hash table */
+ Elf32_Sym * dyn_sym_tab; /* dynamic symbol table */
+ char * dyn_str_tab; /* dyn_name table */
+
+ Elf32_Rel * plt_rel; /* PLT relocation table */
+
+ /* FINI */
+ void (*fini)(void);
+};
+
+#define HASH_BUCKET_LEN(p) ((p))
+#define HASH_BUCKET(p) ((p)+2)
+
+#define HASH_CHAIN_LEN(p) ((p)+1)
+#define HASH_CHAIN(p) ((p)+2+HASH_BUCKET_LEN(p))
+
+unsigned long elf_hash(const unsigned char *name);
+
+#endif