summaryrefslogtreecommitdiff
path: root/elf/link.h
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1996-06-04 23:06:02 +0000
committerRoland McGrath <roland@gnu.org>1996-06-04 23:06:02 +0000
commitf68b86cc7bdcee246296d49f3a3318c1b97693f0 (patch)
tree34a9e7bde9fd4f15d76192869b800ff7ff461874 /elf/link.h
parent14d898aef6373abaf64a7b17f32e8ce3f655cdf3 (diff)
Tue Jun 4 18:57:57 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* elf/dladdr.c: Remove #include <setjmp.h>, we don't use it. * shlib-versions: Set libdl=2. * elf/dl-deps.c (_dl_map_object_deps): Use a linked list of alloca'd elements and then scan it to fill the single malloc'd array, instead of using realloc to grow the array in the first pass. _dl_map_object may do some mallocs that break our stream of reallocs, and the minimal realloc can't handle that. * elf/dl-init.c (_dl_init_next): Take argument, link_map whose searchlist describes the piece of the DT_NEEDED graph to be initialized. * elf/link.h: Update prototype. * sysdeps/i386/dl-machine.h (RTLD_START): Pass _dl_loaded as argument to _dl_init_next. * sysdeps/m68k/dl-machine.h: Likewise. * elf/dl-deps.c (_dl_open): Pass new object as arg to _dl_init_next. * elf/link.h (struct link_map): Add `l_reserved' member, soaking up extra bits in last byte. * elf/dl-deps.c (_dl_map_object_deps): Use that for mark bit to avoid putting dup elts in search list. * elf/dlclose.c: Use MAP->l_searchlist to find deps to close. * elf/dlsym.c: Don't tweak linked list. Scope array given to _dl_lookup_symbol does the right thing. Tue Jun 4 02:25:44 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
Diffstat (limited to 'elf/link.h')
-rw-r--r--elf/link.h10
1 files changed, 6 insertions, 4 deletions
diff --git a/elf/link.h b/elf/link.h
index 73782d8ac3..51740eeeee 100644
--- a/elf/link.h
+++ b/elf/link.h
@@ -111,6 +111,7 @@ struct link_map
unsigned int l_relocated:1; /* Nonzero if object's relocations done. */
unsigned int l_init_called:1; /* Nonzero if DT_INIT function called. */
unsigned int l_init_running:1; /* Nonzero while DT_INIT function runs. */
+ unsigned int l_reserved:3; /* Reserved for internal use. */
};
/* Internal functions of the run-time dynamic linker.
@@ -231,10 +232,11 @@ extern struct link_map *_dl_new_object (char *realname, const char *libname,
If LAZY is nonzero, don't relocate its PLT. */
extern void _dl_relocate_object (struct link_map *map, int lazy);
-/* Return the address of the next initializer function not yet run.
- When there are no more initializers to be run, this returns zero.
- The functions are returned in the order they should be called. */
-extern Elf32_Addr _dl_init_next (void);
+/* Return the address of the next initializer function for MAP or one of
+ its dependencies that has not yet been run. When there are no more
+ initializers to be run, this returns zero. The functions are returned
+ in the order they should be called. */
+extern Elf32_Addr _dl_init_next (struct link_map *map);
/* Call the finalizer functions of all shared objects whose
initializer functions have completed. */