if (_dl_profile != NULL && *_dl_profile == '\0') _dl_profile = NULL;
process_envvars (enum mode *modep, int *lazyp){  char **runp = NULL;  char *envline;  enum mode mode = normal;  int bind_now = 0;  char *debug_output = NULL;  /* This is the default place for profiling data file.  */  _dl_profile_output = "/var/tmp";  while ((envline = _dl_next_ld_env_entry (&runp)) != NULL)    {      size_t len = strcspn (envline, "=") - 3;      switch (len)	{	case 4:	  /* Warning level, verbose or not.  */	  if (memcmp (&envline[3], "WARN", 4) == 0)	    _dl_verbose = envline[8] != '\0';	  break;	case 5:	  /* Debugging of the dynamic linker?  */	  if (memcmp (&envline[3], "DEBUG", 5) == 0)	    process_dl_debug (&envline[9]);	  break;	case 7:	  /* Print information about versions.  */	  if (memcmp (&envline[3], "VERBOSE", 7) == 0)	    {	      version_info = envline[11] != '\0';	      break;	    }	  /* List of objects to be preloaded.  */	  if (memcmp (&envline[3], "PRELOAD", 7) == 0)	    {	      preloadlist = &envline[11];	      break;	    }	  /* Which shared object shall be profiled.  */	  if (memcmp (&envline[3], "PROFILE", 7) == 0)	    {	      _dl_profile = &envline[11];	      if (*_dl_profile == '\0')		_dl_profile = NULL;	    }	  break;	case 8:	  /* Do we bind early?  */	  if (memcmp (&envline[3], "BIND_NOW", 8) == 0)	    bind_now = envline[12] != '\0';	  break;	case 9:	  /* Test whether we want to see the content of the auxiliary	     array passed up from the kernel.  */	  if (memcmp (&envline[3], "SHOW_AUXV", 9) == 0)	    _dl_show_auxv ();	  break;	case 10:	  /* Mask for the important hardware capabilities.  */	  if (memcmp (&envline[3], "HWCAP_MASK", 10) == 0)	    _dl_hwcap_mask = strtoul (&envline[14], NULL, 0);	  break;	case 11:	  /* Path where the binary is found.  */	  if (!__libc_enable_secure	      && memcmp (&envline[3], "ORIGIN_PATH", 11) == 0)	    _dl_origin_path = &envline[15];	  break;	case 12:	  /* Where to place the profiling data file.  */	  if (memcmp (&envline[3], "DEBUG_OUTPUT", 12) == 0)	    {	      debug_output = &envline[16];	      break;	    }	  /* The library search path.  */	  if (memcmp (&envline[3], "LIBRARY_PATH", 12) == 0)	    library_path = &envline[16];	  break;	case 14:	  /* Where to place the profiling data file.  */	  if (!__libc_enable_secure	      && memcmp (&envline[3], "PROFILE_OUTPUT", 14) == 0)	    {	      _dl_profile_output = &envline[18];	      if (*_dl_profile_output == '\0')		_dl_profile_output = "/var/tmp";	    }	  break;	case 20:	  /* The mode of the dynamic linker can be set.  */	  if (memcmp (&envline[3], "TRACE_LOADED_OBJECTS", 20) == 0)	    mode = trace;	  break;	  /* We might have some extra environment variable to handle.  This	     is tricky due to the pre-processing of the length of the name	     in the switch statement here.  The code here assumes that added	     environment variables have a different length.  */#ifdef EXTRA_LD_ENVVARS	  EXTRA_LD_ENVVARS#endif	}    }  /* Extra security for SUID binaries.  Remove all dangerous environment     variables.  */  if (__libc_enable_secure)    {      static const char *unsecure_envvars[] =      {#ifdef EXTRA_UNSECURE_ENVVARS	EXTRA_UNSECURE_ENVVARS#endif      };      size_t cnt;      if (preloadlist != NULL)	unsetenv ("LD_PRELOAD");      if (library_path != NULL)	unsetenv ("LD_LIBRARY_PATH");      for (cnt = 0;	   cnt < sizeof (unsecure_envvars) / sizeof (unsecure_envvars[0]);	   ++cnt)	unsetenv (unsecure_envvars[cnt]);    }  /* If we have to run the dynamic linker in debugging mode and the     LD_DEBUG_OUTPUT environment variable is given, we write the debug     messages to this file.  */  if (any_debug && debug_output != NULL && !__libc_enable_secure)    {      size_t name_len = strlen (debug_output);      char buf[name_len + 12];      char *startp;      buf[name_len + 11] = '\0';      startp = _itoa_word (__getpid (), &buf[name_len + 11], 10, 0);      *--startp = '.';      startp = memcpy (startp - name_len, debug_output, name_len);      _dl_debug_fd = __open (startp, O_WRONLY | O_APPEND | O_CREAT, 0666);      if (_dl_debug_fd == -1)	/* We use standard output if opening the file failed.  */	_dl_debug_fd = STDOUT_FILENO;    }  /* LAZY is determined by the environment variable LD_WARN and     LD_BIND_NOW if we trace the binary.  */  if (__builtin_expect (mode, normal) == trace)    *lazyp = _dl_verbose ? !bind_now : -1;  else    *lazyp = !bind_now;  *modep = mode;}