summaryrefslogtreecommitdiff
path: root/ldso/include
diff options
context:
space:
mode:
authorJoakim Tjernlund <joakim.tjernlund@transmode.se>2004-09-03 21:17:10 +0000
committerJoakim Tjernlund <joakim.tjernlund@transmode.se>2004-09-03 21:17:10 +0000
commitb54df7ec544e86c33e534a67bb9e38250467df4e (patch)
tree3c608eddd9f6f8a99acb83b6ce83c6e58f2cf389 /ldso/include
parentbec90733b9de6e7d75b8bda19b3f0a7117e6b78d (diff)
First attempt to fix the INIT/FINI ordering. Fingers crossed :)
Diffstat (limited to 'ldso/include')
-rw-r--r--ldso/include/dl-hash.h2
-rw-r--r--ldso/include/ldso.h7
2 files changed, 9 insertions, 0 deletions
diff --git a/ldso/include/dl-hash.h b/ldso/include/dl-hash.h
index a224012c4..a30c78afb 100644
--- a/ldso/include/dl-hash.h
+++ b/ldso/include/dl-hash.h
@@ -8,6 +8,7 @@
struct dyn_elf{
struct elf_resolve * dyn;
struct dyn_elf * next_handle; /* Used by dlopen et al. */
+ struct init_fini_list *init_fini;
struct dyn_elf * next;
struct dyn_elf * prev;
};
@@ -57,6 +58,7 @@ struct elf_resolve{
#define RELOCS_DONE 2
#define JMP_RELOCS_DONE 4
#define INIT_FUNCS_CALLED 8
+#define FINI_FUNCS_CALLED 16
extern struct dyn_elf * _dl_symbol_tables;
extern struct elf_resolve * _dl_loaded_modules;
diff --git a/ldso/include/ldso.h b/ldso/include/ldso.h
index 8248b1574..37ec439cb 100644
--- a/ldso/include/ldso.h
+++ b/ldso/include/ldso.h
@@ -31,6 +31,13 @@
#include <dl-elf.h>
#include <dl-hash.h>
+/* For INIT/FINI handling */
+struct init_fini_list {
+ struct init_fini_list *next;
+ struct init_fini_list *prev;
+ struct elf_resolve *tpnt;
+};
+
/* Global variables used within the shared library loader */
extern char *_dl_library_path; /* Where we look for libraries */
extern char *_dl_preload; /* Things to be loaded before the libs */