в файле glibc-src/elf/dl-init.c находим строку "calling init: %s":
в процедуре
call_init (struct link_map *l, int argc, char **argv, char **env)
написано:
Код:
  /* Print a debug message if wanted.  */
  if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0))
    _dl_debug_printf ("\ncalling init: %s\n\n",
                  l->l_name[0] ? l->l_name : rtld_progname);

  /*
     Now run the local constructors.  There are two forms of them:
     - the one named by DT_INIT
     - the others in the DT_INIT_ARRAY.
  */
  if (l->l_info[DT_INIT] != NULL)
    {
      init_t init = (init_t) DL_DT_INIT_ADDRESS
      (l, l->l_addr + l->l_info[DT_INIT]->d_un.d_ptr);

      /* Call the function.  */
      init (argc, argv, env);
    }

  /* 
     Next see whether there is an array with initialization functions.
  */
  ElfW(Dyn) *init_array = l->l_info[DT_INIT_ARRAY];
  if (init_array != NULL)
    {
      unsigned int j;
      unsigned int jm;
      ElfW(Addr) *addrs;

      jm = l->l_info[DT_INIT_ARRAYSZ]->d_un.d_val / sizeof (ElfW(Addr));

      addrs = (ElfW(Addr) *) (init_array->d_un.d_ptr + l->l_addr);
      for (j = 0; j < jm; ++j)
      ((init_t) addrs[j]) (argc, argv, env);
    }