mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-08 17:42:12 +03:00
Update.
* elf/Makefile (dl-routines): Remove preinit. * elf/Versions: Remove _dl_preinit. * elf/dl-preinit.c: Removed. Move content into... * elf/dl-init.c: ...here.
This commit is contained in:
@@ -29,9 +29,28 @@ void
|
||||
internal_function
|
||||
_dl_init (struct link_map *main_map, int argc, char **argv, char **env)
|
||||
{
|
||||
ElfW(Dyn) *preinit_array = main_map->l_info[DT_PREINIT_ARRAYSZ];
|
||||
struct r_debug *r;
|
||||
unsigned int i;
|
||||
|
||||
/* Don't do anything if there is no preinit array. */
|
||||
if (preinit_array != NULL
|
||||
&& (i = preinit_array->d_un.d_val / sizeof (ElfW(Addr))) > 0)
|
||||
{
|
||||
ElfW(Addr) *addrs;
|
||||
unsigned int cnt;
|
||||
|
||||
if (_dl_debug_impcalls)
|
||||
_dl_debug_message (1, "\ncalling preinit: ",
|
||||
main_map->l_name[0]
|
||||
? main_map->l_name : _dl_argv[0], "\n\n", NULL);
|
||||
|
||||
addrs = (ElfW(Addr) *) (main_map->l_info[DT_PREINIT_ARRAY]->d_un.d_ptr
|
||||
+ main_map->l_addr);
|
||||
for (cnt = 0; cnt < i; ++cnt)
|
||||
((init_t) addrs[cnt]) (argc, argv, env);
|
||||
}
|
||||
|
||||
/* Notify the debugger we have added some objects. We need to call
|
||||
_dl_debug_initialize in a static program in case dynamic linking has
|
||||
not been used before. */
|
||||
|
Reference in New Issue
Block a user