* elflink.h (elf_link_add_object_symbols): Work around bogus SH_LINK

field in hpux11 shared libraries.
This commit is contained in:
Jeff Law 1999-09-02 23:44:54 +00:00
parent f6e143a199
commit 20e29382fd
2 changed files with 22 additions and 0 deletions

View File

@ -1,3 +1,8 @@
Thu Sep 2 17:41:20 1999 Jeffrey A Law (law@cygnus.com)
* elflink.h (elf_link_add_object_symbols): Work around bogus SH_LINK
field in hpux11 shared libraries.
1999-09-02 Nick Clifton <nickc@cygnus.com>
* elflink.h (elf_gc_record_vtentry): Fix memory leak.

View File

@ -954,6 +954,23 @@ elf_link_add_object_symbols (abfd, info)
goto error_return;
link = elf_elfsections (abfd)[elfsec]->sh_link;
{
/* The shared libraries distributed with hpux11 have a bogus
sh_link field for the ".dynamic" section. This code detects
when LINK refers to a section that is not a string table and
tries to find the string table for the ".dynsym" section
instead. */
Elf_Internal_Shdr *hdr = elf_elfsections (abfd)[link];
if (hdr->sh_type != SHT_STRTAB)
{
asection *s = bfd_get_section_by_name (abfd, ".dynsym");
int elfsec = _bfd_elf_section_from_bfd_section (abfd, s);
if (elfsec == -1)
goto error_return;
link = elf_elfsections (abfd)[elfsec]->sh_link;
}
}
extdyn = dynbuf;
extdynend = extdyn + s->_raw_size / sizeof (Elf_External_Dyn);
for (; extdyn < extdynend; extdyn++)