const char *strtab = (const void *) map->l_info[DT_STRTAB]->d_un.d_ptr;
const char *strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
match_version (const char *string, struct link_map *map){  const char *strtab = (const void *) map->l_info[DT_STRTAB]->d_un.d_ptr;  ElfW(Verdef) *def;#define VERDEFTAG (DT_NUM + DT_PROCNUM + DT_VERSIONTAGIDX (DT_VERDEF))  if (map->l_info[VERDEFTAG] == NULL)    /* The file has no symbol versioning.  */    return 0;  def = (ElfW(Verdef) *) ((char *) map->l_addr			  + map->l_info[VERDEFTAG]->d_un.d_ptr);  while (1)    {      ElfW(Verdaux) *aux = (ElfW(Verdaux) *) ((char *) def + def->vd_aux);      /* Compare the version strings.  */      if (strcmp (string, strtab + aux->vda_name) == 0)	/* Bingo!  */	return 1;      /* If no more definitions we failed to find what we want.  */      if (def->vd_next == 0)	break;      /* Next definition.  */      def = (ElfW(Verdef) *) ((char *) def + def->vd_next);    }  return 0;}