* elf.c (bfd_section_from_shdr): Treat invalid reloc sections as

normal sections rather than returning false.
This commit is contained in:
Alan Modra 2005-12-27 03:45:30 +00:00
parent 44da2da10b
commit 185ef66d06
2 changed files with 12 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2005-12-27 Alan Modra <amodra@bigpond.net.au>
* elf.c (bfd_section_from_shdr): Treat invalid reloc sections as
normal sections rather than returning false.
2005-12-27 Alan Modra <amodra@bigpond.net.au>
* coff-h8300.c (h8300_reloc16_extra_cases): Use input section

View File

@ -2045,15 +2045,16 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex)
represent such a section, so at least for now, we don't
try. We just present it as a normal section. We also
can't use it as a reloc section if it points to the null
section. */
if (hdr->sh_link != elf_onesymtab (abfd) || hdr->sh_info == SHN_UNDEF)
section, an invalid section, or another reloc section. */
if (hdr->sh_link != elf_onesymtab (abfd)
|| hdr->sh_info == SHN_UNDEF
|| (hdr->sh_info >= SHN_LORESERVE && hdr->sh_info <= SHN_HIRESERVE)
|| hdr->sh_info >= num_sec
|| elf_elfsections (abfd)[hdr->sh_info]->sh_type == SHT_REL
|| elf_elfsections (abfd)[hdr->sh_info]->sh_type == SHT_RELA)
return _bfd_elf_make_section_from_shdr (abfd, hdr, name,
shindex);
/* Prevent endless recursion on broken objects. */
if (elf_elfsections (abfd)[hdr->sh_info]->sh_type == SHT_REL
|| elf_elfsections (abfd)[hdr->sh_info]->sh_type == SHT_RELA)
return FALSE;
if (! bfd_section_from_shdr (abfd, hdr->sh_info))
return FALSE;
target_sect = bfd_section_from_elf_index (abfd, hdr->sh_info);