const char name[11];
unsigned char len; const char name[10];
process_dl_debug (const char *dl_debug){  /* When adding new entries make sure that the maximal length of a name     is correctly handled in the LD_DEBUG_HELP code below.  */  static const struct  {    const char name[11];    const char helptext[41];    unsigned short int mask;  } debopts[] =    {      { "libs", "display library search paths",	DL_DEBUG_LIBS | DL_DEBUG_IMPCALLS },      { "reloc", "display relocation processing",	DL_DEBUG_RELOC | DL_DEBUG_IMPCALLS },      { "files", "display progress for input file",	DL_DEBUG_FILES | DL_DEBUG_IMPCALLS },      { "symbols", "display symbol table processing",	DL_DEBUG_SYMBOLS | DL_DEBUG_IMPCALLS },      { "bindings", "display information about symbol binding",	DL_DEBUG_BINDINGS | DL_DEBUG_IMPCALLS },      { "versions", "display version dependencies",	DL_DEBUG_VERSIONS | DL_DEBUG_IMPCALLS },      { "all", "all previous options combined",	DL_DEBUG_LIBS | DL_DEBUG_RELOC | DL_DEBUG_FILES | DL_DEBUG_SYMBOLS	| DL_DEBUG_BINDINGS | DL_DEBUG_VERSIONS | DL_DEBUG_IMPCALLS },      { "statistics", "display relocation statistics",	DL_DEBUG_STATISTICS },      { "help", "display this help message and exit",	DL_DEBUG_HELP },    };#define ndebopts (sizeof (debopts) / sizeof (debopts[0]))  size_t len;#define separators " ,:"  do    {      len = 0;      /* Skip separating white spaces and commas.  */      dl_debug += strspn (dl_debug, separators);      if (*dl_debug != '\0')	{	  size_t cnt;	  len = strcspn (dl_debug, separators);	  for (cnt = 0; cnt < ndebopts; ++cnt)	    if (strncmp (dl_debug, debopts[cnt].name, len) == 0		&& debopts[cnt].name[len] == '\0')	      {		GL(dl_debug_mask) |= debopts[cnt].mask;		any_debug = 1;		break;	      }	  if (cnt == ndebopts)	    {	      /* Display a warning and skip everything until next		 separator.  */	      char *copy = strndupa (dl_debug, len);	      _dl_error_printf ("\warning: debug option `%s' unknown; try LD_DEBUG=help\n", copy);	      break;	  }	}    }  while (*(dl_debug += len) != '\0');  if (GL(dl_debug_mask) & DL_DEBUG_HELP)    {      size_t cnt;      _dl_printf ("\Valid options for the LD_DEBUG environment variable are:\n\n");      for (cnt = 0; cnt < ndebopts; ++cnt)	_dl_printf ("  %s%s %s\n", debopts[cnt].name,		    "       " + strlen (debopts[cnt].name) - 3,		    debopts[cnt].helptext);      _dl_printf ("\n\To direct the debugging output into a file instead of standard output\n\a filename can be specified using the LD_DEBUG_OUTPUT environment variable.\n");      _exit (0);    }}