* elflink.h (elf_link_add_object_symbols): Work around bogus SH_LINK
field in hpux11 shared libraries.
This commit is contained in:
parent
f6e143a199
commit
20e29382fd
|
@ -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>
|
1999-09-02 Nick Clifton <nickc@cygnus.com>
|
||||||
|
|
||||||
* elflink.h (elf_gc_record_vtentry): Fix memory leak.
|
* elflink.h (elf_gc_record_vtentry): Fix memory leak.
|
||||||
|
|
|
@ -954,6 +954,23 @@ elf_link_add_object_symbols (abfd, info)
|
||||||
goto error_return;
|
goto error_return;
|
||||||
link = elf_elfsections (abfd)[elfsec]->sh_link;
|
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;
|
extdyn = dynbuf;
|
||||||
extdynend = extdyn + s->_raw_size / sizeof (Elf_External_Dyn);
|
extdynend = extdyn + s->_raw_size / sizeof (Elf_External_Dyn);
|
||||||
for (; extdyn < extdynend; extdyn++)
|
for (; extdyn < extdynend; extdyn++)
|
||||||
|
|
Loading…
Reference in New Issue