print_statistics ();
print_statistics (&rtld_total_time);
_dl_start_final (void *arg, struct dl_start_final_info *info)#endif{  ElfW(Addr) start_addr;  if (HP_TIMING_AVAIL)    {      /* If it hasn't happen yet record the startup time.  */      if (! HP_TIMING_INLINE)	HP_TIMING_NOW (start_time);#if !defined DONT_USE_BOOTSTRAP_MAP && !defined HP_TIMING_NONAVAIL      else	start_time = info->start_time;#endif      /* Initialize the timing functions.  */      HP_TIMING_DIFF_INIT ();    }  /* Transfer data about ourselves to the permanent link_map structure.  */#ifndef DONT_USE_BOOTSTRAP_MAP  GL(dl_rtld_map).l_addr = info->l.l_addr;  GL(dl_rtld_map).l_ld = info->l.l_ld;  memcpy (GL(dl_rtld_map).l_info, info->l.l_info,	  sizeof GL(dl_rtld_map).l_info);  GL(dl_rtld_map).l_mach = info->l.l_mach;#endif  _dl_setup_hash (&GL(dl_rtld_map));  GL(dl_rtld_map).l_opencount = 1;  GL(dl_rtld_map).l_map_start = (ElfW(Addr)) _begin;  GL(dl_rtld_map).l_map_end = (ElfW(Addr)) _end;  /* Copy the TLS related data if necessary.  */#if USE_TLS && !defined DONT_USE_BOOTSTRAP_MAP# if USE___THREAD  assert (info->l.l_tls_modid != 0);  GL(dl_rtld_map).l_tls_blocksize = info->l.l_tls_blocksize;  GL(dl_rtld_map).l_tls_align = info->l.l_tls_align;  GL(dl_rtld_map).l_tls_firstbyte_offset = info->l.l_tls_firstbyte_offset;  GL(dl_rtld_map).l_tls_initimage_size = info->l.l_tls_initimage_size;  GL(dl_rtld_map).l_tls_initimage = info->l.l_tls_initimage;  GL(dl_rtld_map).l_tls_offset = info->l.l_tls_offset;  GL(dl_rtld_map).l_tls_modid = 1;# else  assert (info->l.l_tls_modid == 0);#  if NO_TLS_OFFSET != 0  GL(dl_rtld_map).l_tls_offset = NO_TLS_OFFSET;#  endif# endif#endif#if HP_TIMING_AVAIL  HP_TIMING_NOW (GL(dl_cpuclock_offset));#endif  /* Initialize the stack end variable.  */  __libc_stack_end = __builtin_frame_address (0);  /* Call the OS-dependent function to set up life so we can do things like     file access.  It will call `dl_main' (below) to do all the real work     of the dynamic linker, and then unwind our frame and run the user     entry point on the same stack we entered on.  */  start_addr = _dl_sysdep_start (arg, &dl_main);#ifndef HP_TIMING_NONAVAIL  if (HP_TIMING_AVAIL)    {      hp_timing_t end_time;      /* Get the current time.  */      HP_TIMING_NOW (end_time);      /* Compute the difference.  */      HP_TIMING_DIFF (rtld_total_time, start_time, end_time);    }#endif  if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_STATISTICS, 0))    print_statistics ();  return start_addr;}