diff options
author | Nick Clifton <nickc@redhat.com> | 2015-08-25 17:48:20 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2015-08-25 17:48:20 +0100 |
commit | 16ad13eca4a18139cd1dec214ec83fdc7c47ffda (patch) | |
tree | 5dc9c15960ebb772e82403d9008c15d466912f4b /bfd | |
parent | cdbfb8861732b496b9ee35b130af75b245e2bc02 (diff) | |
download | gdb-16ad13eca4a18139cd1dec214ec83fdc7c47ffda.zip gdb-16ad13eca4a18139cd1dec214ec83fdc7c47ffda.tar.gz gdb-16ad13eca4a18139cd1dec214ec83fdc7c47ffda.tar.bz2 |
Replace assertions with warning messages about ELF binaries containing multiple symbol tables.
PR binutils/18854
* elf.c (bfd_section_from_shdr): Replace assertions with warnings
about multiple symbol tables.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 6 | ||||
-rw-r--r-- | bfd/elf.c | 20 |
2 files changed, 24 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index d752318..18a5cd0 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2015-08-25 Nick Clifton <nickc@redhat.com> + + PR binutils/18854 + * elf.c (bfd_section_from_shdr): Replace assertions with warnings + about multiple symbol tables. + 2015-08-25 Renlin Li <renlin.li@arm.com> * reloc.c (BFD_RELOC_AARCH64_LD64_GOTOFF_LO15): Use LP64 instead of @@ -1833,7 +1833,15 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex) goto success; } - BFD_ASSERT (elf_onesymtab (abfd) == 0); + /* PR 18854: A binary might contain more than one symbol table. + Unusual, but possible. Warn, but continue. */ + if (elf_onesymtab (abfd) != 0) + { + (*_bfd_error_handler) + (_("%B: warning: multiple symbol tables detected - ignoring the table in section %u"), + abfd, shindex); + goto success; + } elf_onesymtab (abfd) = shindex; elf_tdata (abfd)->symtab_hdr = *hdr; elf_elfsections (abfd)[shindex] = hdr = &elf_tdata (abfd)->symtab_hdr; @@ -1898,7 +1906,15 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex) goto success; } - BFD_ASSERT (elf_dynsymtab (abfd) == 0); + /* PR 18854: A binary might contain more than one dynamic symbol table. + Unusual, but possible. Warn, but continue. */ + if (elf_dynsymtab (abfd) != 0) + { + (*_bfd_error_handler) + (_("%B: warning: multiple dynamic symbol tables detected - ignoring the table in section %u"), + abfd, shindex); + goto success; + } elf_dynsymtab (abfd) = shindex; elf_tdata (abfd)->dynsymtab_hdr = *hdr; elf_elfsections (abfd)[shindex] = hdr = &elf_tdata (abfd)->dynsymtab_hdr; |