Add support for files that contain multiple symbol index tables. Fixes PR 15835
authorNick Clifton <nickc@redhat.com>
Wed, 23 Sep 2015 16:23:58 +0000 (17:23 +0100)
committerNick Clifton <nickc@redhat.com>
Wed, 23 Sep 2015 16:23:58 +0000 (17:23 +0100)
commit6a40cf0c5c845683fdb82721813ebd5dd867cce5
treeb13bf45e4cb2ce850c1252eb9201906074ebc210
parentbcd68f9e44a70c73bde08e612a28e413570dc039
Add support for files that contain multiple symbol index tables.  Fixes PR 15835

binutils PR binutils/15835
* readelf.c (struct elf_section_list): New structure.
(symtab_shndx_hdr): Replace with symtab_shndx_list.
(get_32bit_elf_symbols): Scan for a symbol index table matching
the symbol table in use.
(get_64bit_elf_symbols): Likewise.
(process_section_headers): Handle multiple symbol index sections.

bfd * elf-bfd.h (struct elf_section_list): New structure.
(struct elf_obj_tdata): Replace symtab_shndx_hdr with
symtab_shndx_list.  Delete symtab_shndx_section.
(elf_symtab_shndx): Replace macro with elf_symtab_shndx_list.
* elf.c (bfd_elf_get_syms): If symtab index sections are present,
scan them for the section that matches the provided symbol table.
(bfd_section_from_shdr): Record all SHT_SYMTAB_SHNDX sections.
(assign_section_numbers): Use the first symtab index table in the
list.
(_bfd_elf_compute_section_file_positions): Replace use of
symtab_shndx_hdr with use of symtab_shndx_list.
(find_section_in_list): New function.
(assign_file_postions_except_relocs): Use new function.
(_bfd_elf_copy_private_symbol_data): Likewise.
(swap_out_syms): Handle multiple symbol table index sections.
* elf32-m32c.c (m32c_elf_relax_section): Replace use of
symtab_shndx_hdr with use of symtab_shndx_list.
* elf32-rl78.c (rl78_elf_relax_section): Likewise.
* elf32-rx.c (rx_relax_section): Likewise.
* elf32-v850.c (v850_elf_relax_delete_bytes): Likewise.
* elflink.c (bfd_elf_final_link): Likewise.
bfd/ChangeLog
bfd/elf-bfd.h
bfd/elf.c
bfd/elf32-m32c.c
bfd/elf32-rl78.c
bfd/elf32-rx.c
bfd/elf32-v850.c
bfd/elflink.c
binutils/ChangeLog
binutils/readelf.c