* elf64-ppc.c (opd_entry_value): Handle case where symbol
hashes are not available.
This commit is contained in:
parent
f45794cb51
commit
128205bb36
|
@ -1,3 +1,8 @@
|
||||||
|
2013-05-06 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
* elf64-ppc.c (opd_entry_value): Handle case where symbol
|
||||||
|
hashes are not available.
|
||||||
|
|
||||||
2013-05-06 Alan Modra <amodra@gmail.com>
|
2013-05-06 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
* elflink.c (elf_link_add_object_symbols): Don't save symbol
|
* elflink.c (elf_link_add_object_symbols): Don't save symbol
|
||||||
|
|
|
@ -5665,11 +5665,30 @@ opd_entry_value (asection *opd_sec,
|
||||||
|
|
||||||
sym_hashes = elf_sym_hashes (opd_bfd);
|
sym_hashes = elf_sym_hashes (opd_bfd);
|
||||||
rh = sym_hashes[symndx - symtab_hdr->sh_info];
|
rh = sym_hashes[symndx - symtab_hdr->sh_info];
|
||||||
rh = elf_follow_link (rh);
|
if (rh != NULL)
|
||||||
BFD_ASSERT (rh->root.type == bfd_link_hash_defined
|
{
|
||||||
|| rh->root.type == bfd_link_hash_defweak);
|
rh = elf_follow_link (rh);
|
||||||
val = rh->root.u.def.value;
|
BFD_ASSERT (rh->root.type == bfd_link_hash_defined
|
||||||
sec = rh->root.u.def.section;
|
|| rh->root.type == bfd_link_hash_defweak);
|
||||||
|
val = rh->root.u.def.value;
|
||||||
|
sec = rh->root.u.def.section;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Handle the odd case where we can be called
|
||||||
|
during bfd_elf_link_add_symbols before the
|
||||||
|
symbol hashes have been fully populated. */
|
||||||
|
Elf_Internal_Sym *sym;
|
||||||
|
|
||||||
|
sym = bfd_elf_get_elf_syms (opd_bfd, symtab_hdr, 1,
|
||||||
|
symndx, NULL, NULL, NULL);
|
||||||
|
if (sym == NULL)
|
||||||
|
break;
|
||||||
|
|
||||||
|
val = sym->st_value;
|
||||||
|
sec = bfd_section_from_elf_index (opd_bfd, sym->st_shndx);
|
||||||
|
free (sym);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
val += look->r_addend;
|
val += look->r_addend;
|
||||||
if (code_off != NULL)
|
if (code_off != NULL)
|
||||||
|
|
Loading…
Reference in New Issue