__getopt_clean_environment ();
init1 (int argc, char *arg0, ...){  char **argv = &arg0;  char **envp = &argv[argc + 1];  struct hurd_startup_data *d;  __libc_argc = argc;  __libc_argv = argv;  __environ = envp;  while (*envp)    ++envp;  d = (void *) ++envp;  /* If we are the bootstrap task started by the kernel,     then after the environment pointers there is no Hurd     data block; the argument strings start there.  */  if ((void *) d != argv[0])    {      _hurd_init_dtable = d->dtable;      _hurd_init_dtablesize = d->dtablesize;      {	/* Check if the stack we are now on is different from	   the one described by _hurd_stack_{base,size}.  */	char dummy;	const vm_address_t newsp = (vm_address_t) &dummy;	if (d->stack_size != 0 && (newsp < d->stack_base ||				   newsp - d->stack_base > d->stack_size))	  /* The new stack pointer does not intersect with the	     stack the exec server set up for us, so free that stack.  */	  __vm_deallocate (__mach_task_self (), d->stack_base, d->stack_size);      }    }  if (__hurd_threadvar_stack_mask == 0)    {      /* We are not using cthreads, so we will have just a single allocated	 area for the per-thread variables of the main user thread.  */      unsigned long int i;      __hurd_threadvar_stack_offset	= (unsigned long int) malloc (__hurd_threadvar_max *				      sizeof (unsigned long int));      if (__hurd_threadvar_stack_offset == 0)	__libc_fatal ("Can't allocate single-threaded per-thread variables.");      for (i = 0; i < __hurd_threadvar_max; ++i)	((unsigned long int *) __hurd_threadvar_stack_offset)[i] = 0;    }  if ((void *) d != argv[0] && (d->portarray || d->intarray))    /* Initialize library data structures, start signal processing, etc.  */    _hurd_init (d->flags, argv,		d->portarray, d->portarraysize,		d->intarray, d->intarraysize);  __libc_init (argc, argv, __environ);#ifdef PIC  __libc_global_ctors ();#endif}