From 0ee5a0e48314fec3522f7eabadd5fea920628077 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Tue, 21 Nov 2017 10:04:05 +1030 Subject: [PATCH] Add NULL bfd test to elf_symbol_from A followup to PR22443. * elf-bfd.h (elf_symbol_from): Check for NULL symbol bfd. * elfcode.h (elf_slurp_reloc_table_from_section): Add FIXME comment. --- bfd/ChangeLog | 5 +++++ bfd/elf-bfd.h | 9 +++++---- bfd/elfcode.h | 2 ++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 5bf4f1a9524..696b2d8ae90 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2017-11-21 Alan Modra + + * elf-bfd.h (elf_symbol_from): Check for NULL symbol bfd. + * elfcode.h (elf_slurp_reloc_table_from_section): Add FIXME comment. + 2017-11-20 Nick Clifton PR 22450 diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index 99e13e00f35..954105e26e2 100644 --- a/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h @@ -731,10 +731,11 @@ struct elf_size_info { }; #define elf_symbol_from(ABFD,S) \ - (((S)->the_bfd->xvec->flavour == bfd_target_elf_flavour \ - && (S)->the_bfd->tdata.elf_obj_data != 0) \ - ? (elf_symbol_type *) (S) \ - : 0) + (((S)->the_bfd != NULL \ + && (S)->the_bfd->xvec->flavour == bfd_target_elf_flavour \ + && (S)->the_bfd->tdata.elf_obj_data != 0) \ + ? (elf_symbol_type *) (S) \ + : 0) enum elf_reloc_type_class { reloc_class_normal, diff --git a/bfd/elfcode.h b/bfd/elfcode.h index 6114b11e66f..80b26aa803a 100644 --- a/bfd/elfcode.h +++ b/bfd/elfcode.h @@ -1440,6 +1440,8 @@ elf_slurp_reloc_table_from_section (bfd *abfd, relent->address = rela.r_offset - asect->vma; if (ELF_R_SYM (rela.r_info) == STN_UNDEF) + /* FIXME: This and the error case below mean that we have a + symbol on relocs that is not elf_symbol_type. */ relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; else if (ELF_R_SYM (rela.r_info) > symcount) { -- 2.30.2