diff options
author | Joakim Tjernlund <joakim.tjernlund@transmode.se> | 2004-09-08 09:43:25 +0000 |
---|---|---|
committer | Joakim Tjernlund <joakim.tjernlund@transmode.se> | 2004-09-08 09:43:25 +0000 |
commit | 90c50876acd1339310fd7002a872655819ced3e4 (patch) | |
tree | d2a18f7b56e5af53ead0a9cbe5de7431f1b092f7 /ldso/include | |
parent | 4910b36d0447deb57fe15cf13cf904c46fe70899 (diff) |
Second attempt to fix the INIT/FINI order. This time I think I got it right :)
This needs testing with apps that have complex dependencies.
Diffstat (limited to 'ldso/include')
-rw-r--r-- | ldso/include/dl-hash.h | 9 | ||||
-rw-r--r-- | ldso/include/ldso.h | 3 |
2 files changed, 9 insertions, 3 deletions
diff --git a/ldso/include/dl-hash.h b/ldso/include/dl-hash.h index a30c78afb..38b50bc65 100644 --- a/ldso/include/dl-hash.h +++ b/ldso/include/dl-hash.h @@ -5,10 +5,15 @@ #define RTLD_NEXT ((void*)-1) #endif +struct init_fini { + struct elf_resolve **init_fini; + unsigned long nlist; /* Number of entries in init_fini */ +}; + struct dyn_elf{ struct elf_resolve * dyn; struct dyn_elf * next_handle; /* Used by dlopen et al. */ - struct init_fini_list *init_fini; + struct init_fini init_fini; struct dyn_elf * next; struct dyn_elf * prev; }; @@ -29,6 +34,8 @@ struct elf_resolve{ unsigned long rtld_flags; /* RTLD_GLOBAL, RTLD_NOW etc. */ unsigned int nbucket; unsigned long * elf_buckets; + struct init_fini_list *init_fini; + /* * These are only used with ELF style shared libraries */ diff --git a/ldso/include/ldso.h b/ldso/include/ldso.h index 37ec439cb..2b803f2fe 100644 --- a/ldso/include/ldso.h +++ b/ldso/include/ldso.h @@ -31,10 +31,9 @@ #include <dl-elf.h> #include <dl-hash.h> -/* For INIT/FINI handling */ +/* For INIT/FINI dependency sorting. */ struct init_fini_list { struct init_fini_list *next; - struct init_fini_list *prev; struct elf_resolve *tpnt; }; |