bfd *oldbfd;
bool newdyn, olddyn, olddef, newdef, newdyncommon, olddyncommon;
bool newweak, oldweak, newfunc, oldfunc;
- elf_backend_data *bed;
+ elf_backend_data *bed, *obed;
const char *new_version;
bool default_sym = *matched;
struct elf_link_hash_table *htab;
*sym_hash = h;
bed = get_elf_backend_data (abfd);
+ obed = get_elf_backend_data (info->output_bfd);
htab = elf_hash_table (info);
&& olddyn)
{
h = hi;
- (*bed->elf_backend_hide_symbol) (info, h, true);
+ obed->elf_backend_hide_symbol (info, h, true);
h->forced_local = 0;
h->ref_dynamic = 0;
h->def_dynamic = 0;
{
hi->root.type = h->root.type;
h->root.type = bfd_link_hash_indirect;
- (*bed->elf_backend_copy_indirect_symbol) (info, hi, h);
+ obed->elf_backend_copy_indirect_symbol (info, hi, h);
h->root.u.i.link = (struct bfd_link_hash_entry *) hi;
if (ELF_ST_VISIBILITY (sym->st_other) != STV_PROTECTED)
{
/* If the new symbol is hidden or internal, completely undo
any dynamic link state. */
- (*bed->elf_backend_hide_symbol) (info, h, true);
+ obed->elf_backend_hide_symbol (info, h, true);
h->forced_local = 0;
h->ref_dynamic = 0;
}
{
/* If the new symbol is hidden or internal, completely undo
any dynamic link state. */
- (*bed->elf_backend_hide_symbol) (info, h, true);
+ obed->elf_backend_hide_symbol (info, h, true);
h->forced_local = 0;
h->ref_dynamic = 0;
}
/* We now know everything about the old and new symbols. We ask the
backend to check if we can merge them. */
- if (bed->merge_symbol != NULL)
+ if (obed->merge_symbol != NULL)
{
- if (!bed->merge_symbol (h, sym, psec, newdef, olddef, oldbfd, oldsec))
+ if (!obed->merge_symbol (h, sym, psec, newdef, olddef, oldbfd, oldsec))
return false;
sec = *psec;
}
{
case STV_INTERNAL:
case STV_HIDDEN:
- (*bed->elf_backend_hide_symbol) (info, h, true);
+ obed->elf_backend_hide_symbol (info, h, true);
break;
}
}
flip->root.u.undef.abfd = h->root.u.undef.abfd;
h->root.type = bfd_link_hash_indirect;
h->root.u.i.link = (struct bfd_link_hash_entry *) flip;
- (*bed->elf_backend_copy_indirect_symbol) (info, flip, h);
+ obed->elf_backend_copy_indirect_symbol (info, flip, h);
if (h->def_dynamic)
{
h->def_dynamic = 0;
return true;
}
- bed = get_elf_backend_data (abfd);
+ bed = get_elf_backend_data (info->output_bfd);
collect = bed->collect;
dynamic = (abfd->flags & DYNAMIC) != 0;
}
/* Backend specific symbol fixup. */
- bed = get_elf_backend_data (elf_hash_table (eif->info)->dynobj);
+ bed = get_elf_backend_data (eif->info->output_bfd);
if (bed->elf_backend_fixup_symbol
&& !(*bed->elf_backend_fixup_symbol) (eif->info, h))
return false;
Elf_Internal_Sym *isymbuf = NULL;
Elf_Internal_Sym *isym;
Elf_Internal_Sym *isymend;
- elf_backend_data *bed;
+ elf_backend_data *bed, *obed;
bool add_needed;
struct elf_link_hash_table *htab;
void *alloc_mark = NULL;
htab = elf_hash_table (info);
bed = get_elf_backend_data (abfd);
+ obed = get_elf_backend_data (info->output_bfd);
if (elf_use_dt_symtab_p (abfd))
{
{
case STV_INTERNAL:
case STV_HIDDEN:
- (*bed->elf_backend_hide_symbol) (info, h, true);
+ obed->elf_backend_hide_symbol (info, h, true);
dynsym = false;
break;
}
&& hi->root.u.def.value == h->root.u.def.value
&& hi->root.u.def.section == h->root.u.def.section)
{
- (*bed->elf_backend_hide_symbol) (info, hi, true);
+ obed->elf_backend_hide_symbol (info, hi, true);
hi->root.type = bfd_link_hash_indirect;
hi->root.u.i.link = (struct bfd_link_hash_entry *) h;
- (*bed->elf_backend_copy_indirect_symbol) (info, h, hi);
+ obed->elf_backend_copy_indirect_symbol (info, h, hi);
sym_hash = elf_sym_hashes (abfd);
if (sym_hash)
for (symidx = 0; symidx < extsymcount; ++symidx)