if (__libc_enable_secure)
if (__builtin_expect (__libc_enable_secure, 0))
weak_extern (_dl_starting_up)extern int __libc_multiple_libcs;extern void *__libc_stack_end;/* Prototype for local function.  */static void check_standard_fds (void);int__libc_start_main (int (*main) (int, char **, char **), int argc,		   char **argv, void (*init) (void), void (*fini) (void),		   void (*rtld_fini) (void), void *stack_end){#ifndef SHARED  /* 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  /* Store the lowest stack address.  */  __libc_stack_end = stack_end;  /* Set the global _environ variable correctly.  */  __environ = &argv[argc + 1];  /* Some security at this point.  Prevent starting a SUID binary where     the standard file descriptors are not opened.  */  if (__libc_enable_secure)    check_standard_fds ();  /* Register the destructor of the dynamic linker if there is any.  */  if (rtld_fini != NULL)    atexit (rtld_fini);  /* 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)    atexit (fini);  /* Call the initializer of the program, if any.  */#ifdef SHARED  if (_dl_debug_impcalls)    _dl_debug_message (1, "\ninitialize program: ", argv[0], "\n\n", NULL);#endif  if (init)    (*init) ();#ifdef SHARED  if (_dl_debug_impcalls)    _dl_debug_message (1, "\ntransferring control: ", argv[0], "\n\n", NULL);#endif  exit ((*main) (argc, argv, __environ));}