_dl_platform = av->a_un.a_ptr;
GL(dl_platform) = av->a_un.a_ptr;
_dl_sysdep_start (void **start_argptr,		  void (*dl_main) (const ElfW(Phdr) *phdr, ElfW(Word) phnum,				   ElfW(Addr) *user_entry)){  const ElfW(Phdr) *phdr = NULL;  ElfW(Word) phnum = 0;  ElfW(Addr) user_entry;  ElfW(auxv_t) *av;  uid_t uid = 0;  uid_t euid = 0;  gid_t gid = 0;  gid_t egid = 0;#ifdef HAVE_AUX_XID# define set_seen(tag) (tag) /* Evaluate for the side effects.  */#else  unsigned int seen = 0;# define M(type) (1 << (type))# define set_seen(tag) seen |= M ((tag)->a_type)#endif#if HP_TIMING_AVAIL  HP_TIMING_NOW (_dl_cpuclock_offset);#endif  DL_FIND_ARG_COMPONENTS (start_argptr, _dl_argc, _dl_argv, _environ,			  _dl_auxv);  user_entry = (ElfW(Addr)) ENTRY_POINT;  _dl_platform = NULL; /* Default to nothing known about the platform.  */  for (av = _dl_auxv; av->a_type != AT_NULL; set_seen (av++))    switch (av->a_type)      {      case AT_PHDR:	phdr = av->a_un.a_ptr;	break;      case AT_PHNUM:	phnum = av->a_un.a_val;	break;      case AT_PAGESZ:	_dl_pagesize = av->a_un.a_val;	break;      case AT_ENTRY:	user_entry = av->a_un.a_val;	break;#ifdef NEED_DL_BASE_ADDR      case AT_BASE:	_dl_base_addr = av->a_un.a_val;	break;#endif      case AT_UID:	uid = av->a_un.a_val;	break;      case AT_GID:	gid = av->a_un.a_val;	break;      case AT_EUID:	euid = av->a_un.a_val;	break;      case AT_EGID:	egid = av->a_un.a_val;	break;      case AT_PLATFORM:	_dl_platform = av->a_un.a_ptr;	break;      case AT_HWCAP:	_dl_hwcap = av->a_un.a_val;	break;      case AT_CLKTCK:	_dl_clktck = av->a_un.a_val;	break;      case AT_FPUCW:	_dl_fpu_control = av->a_un.a_val;	break;      }#ifdef DL_SYSDEP_OSCHECK  DL_SYSDEP_OSCHECK (dl_fatal);#endif  /* Linux doesn't provide us with any of these values on the stack     when the dynamic linker is run directly as a program.  */#ifndef HAVE_AUX_XID# define SEE(UID, uid) if ((seen & M (AT_##UID)) == 0) uid = __get##uid ()  SEE (UID, uid);  SEE (GID, gid);  SEE (EUID, euid);  SEE (EGID, egid);#endif  __libc_enable_secure = uid != euid || gid != egid;#ifndef HAVE_AUX_PAGESIZE  if (_dl_pagesize == 0)    _dl_pagesize = __getpagesize ();#endif#ifdef DL_SYSDEP_INIT  DL_SYSDEP_INIT;#endif#ifdef DL_PLATFORM_INIT  DL_PLATFORM_INIT;#endif  /* Determine the length of the platform name.  */  if (_dl_platform != NULL)    _dl_platformlen = strlen (_dl_platform);  if (__sbrk (0) == &_end)    /* The dynamic linker was run as a program, and so the initial break       starts just after our bss, at &_end.  The malloc in dl-minimal.c       will consume the rest of this page, so tell the kernel to move the       break up that far.  When the user program examines its break, it       will see this new value and not clobber our data.  */    __sbrk (_dl_pagesize - ((&_end - (void *) 0) & (_dl_pagesize - 1)));  /* If this is a SUID program we make sure that FDs 0, 1, and 2 are     allocated.  If necessary we are doing it ourself.  If it is not     possible we stop the program.  */  if (__builtin_expect (__libc_enable_secure, 0))    __libc_check_standard_fds ();  (*dl_main) (phdr, phnum, &user_entry);  return user_entry;}