if (__builtin_expect (_dl_debug_mask & DL_DEBUG_STATISTICS, 0))
if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_STATISTICS, 0))
_dl_start_final (void *arg, struct link_map *bootstrap_map_p,		 hp_timing_t start_time){  /* The use of `alloca' here looks ridiculous but it helps.  The goal     is to avoid the function from being inlined.  There is no official     way to do this so we use this trick.  gcc never inlines functions     which use `alloca'.  */  ElfW(Addr) *start_addr = alloca (sizeof (ElfW(Addr)));  extern char _begin[], _end[];  if (HP_TIMING_AVAIL)    {      /* If it hasn't happen yet record the startup time.  */      if (! HP_TIMING_INLINE)	HP_TIMING_NOW (start_time);      /* Initialize the timing functions.  */      HP_TIMING_DIFF_INIT ();    }  /* Transfer data about ourselves to the permanent link_map structure.  */  _dl_rtld_map.l_addr = bootstrap_map_p->l_addr;  _dl_rtld_map.l_ld = bootstrap_map_p->l_ld;  _dl_rtld_map.l_opencount = 1;  memcpy (_dl_rtld_map.l_info, bootstrap_map_p->l_info,	  sizeof _dl_rtld_map.l_info);  _dl_setup_hash (&_dl_rtld_map);  _dl_rtld_map.l_mach = bootstrap_map_p->l_mach;  _dl_rtld_map.l_map_start = (ElfW(Addr)) _begin;  _dl_rtld_map.l_map_end = (ElfW(Addr)) _end;  /* 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 (_dl_debug_mask & DL_DEBUG_STATISTICS, 0))    print_statistics ();  return *start_addr;}