diff options
Diffstat (limited to 'binutils/patches/pr14493-ignore-without-bfd.patch')
-rw-r--r-- | binutils/patches/pr14493-ignore-without-bfd.patch | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/binutils/patches/pr14493-ignore-without-bfd.patch b/binutils/patches/pr14493-ignore-without-bfd.patch new file mode 100644 index 0000000..9267006 --- /dev/null +++ b/binutils/patches/pr14493-ignore-without-bfd.patch @@ -0,0 +1,36 @@ +Description: ignore section symbols without a BFD section. +Bug: http://sourceware.org/bugzilla/show_bug.cgi?id=14493 +Index: binutils/bfd/elf.c +=================================================================== +--- binutils.orig/bfd/elf.c 2012-10-28 16:32:57.498420933 +0400 ++++ binutils/bfd/elf.c 2012-10-28 18:07:43.088367811 +0400 +@@ -3242,15 +3242,24 @@ + } + + /* Don't output section symbols for sections that are not going to be +- output. */ ++ 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 +- || (sym->section->output_section->owner == abfd +- && sym->section->output_offset == 0))); ++ 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))); + } + + static bfd_boolean |