Ignore section symbols without a BFD section

bfd/

	PR binutils/14493
	* elf.c (ignore_section_sym): Also ignore section symbols without
	a BFD section.

binutils/

	PR binutils/14493
	* readelf.c (get_symbol_index_type): Check bad section index.
This commit is contained in:
H.J. Lu 2012-09-04 12:35:35 +00:00
parent 957564c930
commit c6d8cab4ac
4 changed files with 41 additions and 20 deletions

View File

@ -1,3 +1,9 @@
2012-09-04 H.J. Lu <hongjiu.lu@intel.com>
PR binutils/14493
* elf.c (ignore_section_sym): Also ignore section symbols without
a BFD section.
2012-09-03 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* elf32-s390.c (elf_s390_relocate_section): Handle PLTOFF for

View File

@ -3264,13 +3264,21 @@ sym_is_global (bfd *abfd, asymbol *sym)
}
/* Don't output section symbols for sections that are not going to be
output, or that are duplicates. */
output, that are duplicates or there is no BFD section. */
static bfd_boolean
ignore_section_sym (bfd *abfd, asymbol *sym)
{
return ((sym->flags & BSF_SECTION_SYM) != 0
&& !(sym->section->owner == abfd
elf_symbol_type *type_ptr;
if ((sym->flags & BSF_SECTION_SYM) == 0)
return FALSE;
type_ptr = elf_symbol_from (abfd, sym);
return ((type_ptr != NULL
&& type_ptr->internal_elf_sym.st_shndx != 0
&& bfd_is_abs_section (sym->section))
|| !(sym->section->owner == abfd
|| (sym->section->output_section->owner == abfd
&& sym->section->output_offset == 0)
|| bfd_is_abs_section (sym->section)));

View File

@ -1,3 +1,8 @@
2012-09-04 H.J. Lu <hongjiu.lu@intel.com>
PR binutils/14493
* readelf.c (get_symbol_index_type): Check bad section index.
2012-08-24 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
* readelf.c (arm_attr_tag_CPU_arch): Update for ARMv8.
@ -20,15 +25,15 @@
* bfdtest1.c: New file.
2012-08-13 Ian Bolton <ian.bolton@arm.com>
Laurent Desnogues <laurent.desnogues@arm.com>
Jim MacArthur <jim.macarthur@arm.com>
Marcus Shawcroft <marcus.shawcroft@arm.com>
Nigel Stephens <nigel.stephens@arm.com>
Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
Richard Earnshaw <rearnsha@arm.com>
Sofiane Naci <sofiane.naci@arm.com>
Tejas Belagod <tejas.belagod@arm.com>
Yufeng Zhang <yufeng.zhang@arm.com>
Laurent Desnogues <laurent.desnogues@arm.com>
Jim MacArthur <jim.macarthur@arm.com>
Marcus Shawcroft <marcus.shawcroft@arm.com>
Nigel Stephens <nigel.stephens@arm.com>
Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
Richard Earnshaw <rearnsha@arm.com>
Sofiane Naci <sofiane.naci@arm.com>
Tejas Belagod <tejas.belagod@arm.com>
Yufeng Zhang <yufeng.zhang@arm.com>
* readelf.c (guess_is_rela): Handle EM_AARCH64.
(get_machine_name): Likewise.
@ -88,17 +93,17 @@
2012-07-24 Teresa Johnson <tejohnson@google.com>
* addr2line.c (find_address_in_section): Invoke
bfd_find_nearest_line_discriminator to get the discriminator.
bfd_find_nearest_line_discriminator to get the discriminator.
(find_offset_in_section): Likewise.
(translate_addresses): Print discriminator if it is non-zero.
* objdump.c (show_line): Invoke
bfd_find_nearest_line_discriminator to get the discriminator,
and keep track of prev_discriminator. Print discriminator
if it is non-zero.
bfd_find_nearest_line_discriminator to get the discriminator,
and keep track of prev_discriminator. Print discriminator
if it is non-zero.
(disassemble_data): Initialize prev_discriminator.
(dump_reloc_set): Invoke bfd_find_nearest_line_discriminator
to get the discriminator, and keep track of last_discriminator.
Print discriminator if it is non-zero.
to get the discriminator, and keep track of last_discriminator.
Print discriminator if it is non-zero.
2012-07-17 Nick Clifton <nickc@redhat.com>
@ -360,8 +365,8 @@
2012-04-11 Ryan Mansfield <rmansfield@qnx.com>
* objdump.c (dump_bfd): If defaulting to dwarf call
dwarf_select_sections_all to enable displays.
* objdump.c (dump_bfd): If defaulting to dwarf call
dwarf_select_sections_all to enable displays.
2012-04-06 Roland McGrath <mcgrathr@google.com>

View File

@ -8974,6 +8974,8 @@ get_symbol_index_type (unsigned int type)
sprintf (buff, "OS [0x%04x]", type & 0xffff);
else if (type >= SHN_LORESERVE)
sprintf (buff, "RSV[0x%04x]", type & 0xffff);
else if (type >= elf_header.e_shnum)
sprintf (buff, "bad section index[%3d]", type);
else
sprintf (buff, "%3d", type);
break;