diff options
author | Alan Modra <amodra@gmail.com> | 2017-11-21 10:04:05 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2017-11-21 11:20:24 +1030 |
commit | 0ee5a0e48314fec3522f7eabadd5fea920628077 (patch) | |
tree | 325c8ffc094ec4bcbc3983d15015f01b23956c06 /bfd | |
parent | bf3d139947aa7f846b463db4a7c4b6059a183e11 (diff) | |
download | gdb-0ee5a0e48314fec3522f7eabadd5fea920628077.zip gdb-0ee5a0e48314fec3522f7eabadd5fea920628077.tar.gz gdb-0ee5a0e48314fec3522f7eabadd5fea920628077.tar.bz2 |
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.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elf-bfd.h | 9 | ||||
-rw-r--r-- | bfd/elfcode.h | 2 |
3 files changed, 12 insertions, 4 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 5bf4f1a..696b2d8 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2017-11-21 Alan Modra <amodra@gmail.com> + + * 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 <nickc@redhat.com> PR 22450 diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index 99e13e0..954105e 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 6114b11..80b26aa 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) { |