diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2012-09-04 12:35:35 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2012-09-04 12:35:35 +0000 |
commit | c6d8cab4ac5c906937dcd4f884e65fb4d1052381 (patch) | |
tree | d74d960050a0d09e810be75ea778383f3b00c622 | |
parent | 957564c93015991eee194ef0769a3b64b16a2237 (diff) | |
download | gdb-c6d8cab4ac5c906937dcd4f884e65fb4d1052381.zip gdb-c6d8cab4ac5c906937dcd4f884e65fb4d1052381.tar.gz gdb-c6d8cab4ac5c906937dcd4f884e65fb4d1052381.tar.bz2 |
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.
-rw-r--r-- | bfd/ChangeLog | 6 | ||||
-rw-r--r-- | bfd/elf.c | 14 | ||||
-rw-r--r-- | binutils/ChangeLog | 39 | ||||
-rw-r--r-- | binutils/readelf.c | 2 |
4 files changed, 41 insertions, 20 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 189d52d..a716502 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -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 @@ -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))); diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 922396a..5c6fcb7 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -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> diff --git a/binutils/readelf.c b/binutils/readelf.c index 89cff24..2fbf2ae 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -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; |