const char *reference_name = undef_map->l_name;
INTDEF (_dl_lookup_versioned_symbol)/* Similar to _dl_lookup_symbol_skip but takes an additional argument   with the version we are looking for.  */lookup_tinternal_function_dl_lookup_versioned_symbol_skip (const char *undef_name,				  struct link_map *undef_map,				  const ElfW(Sym) **ref,				  struct r_scope_elem *symbol_scope[],				  const struct r_found_version *version,				  struct link_map *skip_map){  const char *reference_name = undef_map->l_name;  const unsigned long int hash = _dl_elf_hash (undef_name);  struct sym_val current_value = { NULL, NULL };  struct r_scope_elem **scope;  size_t i;  int protected;  bump_num_relocations ();  /* Search the relevant loaded objects for a definition.  */  scope = symbol_scope;  for (i = 0; (*scope)->r_list[i] != skip_map; ++i)    assert (i < (*scope)->r_nlist);  if (! _dl_do_lookup_versioned (undef_name, hash, *ref, &current_value,				 *scope, i, version, skip_map, 0))    while (*++scope)      if (_dl_do_lookup_versioned (undef_name, hash, *ref, &current_value,				   *scope, 0, version, skip_map, 0))	break;  if (__builtin_expect (current_value.s == NULL, 0))    {      if (*ref == NULL || ELFW(ST_BIND) ((*ref)->st_info) != STB_WEAK)	{	  /* We could find no value for a strong reference.  */	  const size_t len = strlen (undef_name);	  char buf[sizeof undefined_msg + len];	  __mempcpy (__mempcpy (buf, undefined_msg, sizeof undefined_msg - 1),		     undef_name, len + 1);	  /* XXX We cannot translate the messages.  */	  _dl_signal_cerror (0, (reference_name[0]				 ? reference_name				 : (rtld_progname ?: "<main program>")),			     NULL, buf);	}      *ref = NULL;      return 0;    }  protected = *ref && ELFW(ST_VISIBILITY) ((*ref)->st_other) == STV_PROTECTED;  if (__builtin_expect (protected != 0, 0))    {      /* It is very tricky.  We need to figure out what value to         return for the protected symbol.  */      struct sym_val protected_value = { NULL, NULL };      if (i >= (*scope)->r_nlist	  || !_dl_do_lookup_versioned (undef_name, hash, *ref,				       &protected_value, *scope, i, version,				       skip_map, ELF_RTYPE_CLASS_PLT))	while (*++scope)	  if (_dl_do_lookup_versioned (undef_name, hash, *ref,				       &protected_value, *scope, 0, version,				       skip_map, ELF_RTYPE_CLASS_PLT))	    break;      if (protected_value.s != NULL && protected_value.m != undef_map)	{	  current_value.s = *ref;	  current_value.m = undef_map;	}    }  if (__builtin_expect (GL(dl_debug_mask)			& (DL_DEBUG_BINDINGS|DL_DEBUG_PRELINK), 0))    _dl_debug_bindings (undef_name, undef_map, ref, symbol_scope,			&current_value, version, 0, protected);  *ref = current_value.s;  return LOOKUP_VALUE (current_value.m);}