if (__builtin_expect (_dl_debug_mask & DL_DEBUG_IMPCALLS, 0))
if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0))
weak_extern (_dl_starting_up)extern int __libc_multiple_libcs;extern void *__libc_stack_end;#ifndef SHAREDextern void __pthread_initialize_minimal (void) __attribute__ ((weak));#endifextern int BP_SYM (__libc_start_main) (int (*main) (int, char **, char **),				       int argc,				       char *__unbounded *__unbounded ubp_av,				       void (*init) (void),				       void (*fini) (void),				       void (*rtld_fini) (void),				       void *__unbounded stack_end)     __attribute__ ((noreturn));int/* GKM FIXME: GCC: this should get __BP_ prefix by virtue of the   BPs in the arglist of startup_info.main and startup_info.init. */BP_SYM (__libc_start_main) (int (*main) (int, char **, char **),		   int argc, char *__unbounded *__unbounded ubp_av,		   void (*init) (void), void (*fini) (void),		   void (*rtld_fini) (void), void *__unbounded stack_end){  char *__unbounded *__unbounded ubp_ev = &ubp_av[argc + 1];#if __BOUNDED_POINTERS__  char **argv;#else# define argv ubp_av#endif#ifndef SHARED# ifdef HAVE_AUX_VECTOR  void *__unbounded *__unbounded auxvec;# endif  /* The next variable is only here to work around a bug in gcc <= 2.7.2.2.     If the address would be taken inside the expression the optimizer     would try to be too smart and throws it away.  Grrr.  */  int *dummy_addr = &_dl_starting_up;  __libc_multiple_libcs = dummy_addr && !_dl_starting_up;#endif  INIT_ARGV_and_ENVIRON;  /* Store the lowest stack address.  */  __libc_stack_end = stack_end;#ifndef SHARED  /* Initialize the thread library at least a bit since the libgcc     functions are using thread functions if these are available and     we need to setup errno.  */  if (__pthread_initialize_minimal)    __pthread_initialize_minimal ();  /* Some security at this point.  Prevent starting a SUID binary where     the standard file descriptors are not opened.  We have to do this     only for statically linked applications since otherwise the dynamic     loader did the work already.  */  if (__builtin_expect (__libc_enable_secure, 0))    __libc_check_standard_fds ();# ifdef HAVE_AUX_VECTOR  for (auxvec = (void *__unbounded *__unbounded) ubp_ev;       *auxvec != NULL; ++auxvec);  ++auxvec;  _dl_aux_init ((ElfW(auxv_t) *) auxvec);# endif#endif  /* Register the destructor of the dynamic linker if there is any.  */  if (__builtin_expect (rtld_fini != NULL, 1))    __cxa_atexit ((void (*) (void *)) rtld_fini, NULL, NULL);  /* Call the initializer of the libc.  This is only needed here if we     are compiling for the static library in which case we haven't     run the constructors in `_dl_start_user'.  */#ifndef SHARED  __libc_init_first (argc, argv, __environ);#endif  /* Register the destructor of the program, if any.  */  if (fini)    __cxa_atexit ((void (*) (void *)) fini, NULL, NULL);  /* Call the initializer of the program, if any.  */#ifdef SHARED  if (__builtin_expect (_dl_debug_mask & DL_DEBUG_IMPCALLS, 0))    _dl_debug_printf ("\ninitialize program: %s\n\n", argv[0]);#endif  if (init)    (*init) ();#ifdef SHARED  if (__builtin_expect (_dl_debug_mask & DL_DEBUG_IMPCALLS, 0))    _dl_debug_printf ("\ntransferring control: %s\n\n", argv[0]);#endif  exit ((*main) (argc, argv, __environ));}