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.
Showing
- bfd/ChangeLog 25 additions, 0 deletionsbfd/ChangeLog
- bfd/elf-bfd.h 11 additions, 3 deletionsbfd/elf-bfd.h
- bfd/elf.c 120 additions, 53 deletionsbfd/elf.c
- bfd/elf32-m32c.c 16 additions, 5 deletionsbfd/elf32-m32c.c
- bfd/elf32-rl78.c 6 additions, 3 deletionsbfd/elf32-rl78.c
- bfd/elf32-rx.c 6 additions, 3 deletionsbfd/elf32-rx.c
- bfd/elf32-v850.c 11 additions, 3 deletionsbfd/elf32-v850.c
- bfd/elflink.c 3 additions, 3 deletionsbfd/elflink.c
- binutils/ChangeLog 10 additions, 0 deletionsbinutils/ChangeLog
- binutils/readelf.c 58 additions, 46 deletionsbinutils/readelf.c
Loading
Please register or sign in to comment