PR23652, Use symbols from debug bfd for _bfd_elf_find_function properly
authorAlan Modra <amodra@gmail.com>
Wed, 27 Nov 2019 07:30:59 +0000 (18:00 +1030)
committerAlan Modra <amodra@gmail.com>
Wed, 27 Nov 2019 08:40:11 +0000 (19:10 +1030)
commit7f3bf38453acbabf7286dd7f8ce2688282e7b9cd
treef8f2436c5e8dc4e5deb7089b7418f76a72aab57f
parente76790600aeba4939225eda32e59642ed2813ac8
PR23652, Use symbols from debug bfd for _bfd_elf_find_function properly

There were a number of problems with the previous patch.  Firstly,
_bfd_dwarf2_stash_syms didn't do anything when the original file had
dynamic symbols, and secondly, info found by the symbol search didn't
make it out of _bfd_elf_find_nearest_line except in the case of DWARF
functions without external linkage.

PR 23652
* dwarf2.c (_bfd_dwarf2_stash_syms): Break out of loop on finding
matching section.
(_bfd_dwarf2_find_nearest_line): Return an int, with value 2 when
returning info from the symbol table.  Do the _bfd_elf_find_function
search also when !found.  Call _bfd_dwarf2_stash_syms regardless of
symbols.
* elf64-alpha.c (elf64_alpha_find_nearest_line): Accept dwarf2
result of 1 only.
* elfxx-mips.c (_bfd_mips_elf_find_nearest_line): Likewise.
* libbfd-in.h (_bfd_dwarf2_find_nearest_line): Update prototype.
* libbfd.h: Regenerate.
bfd/ChangeLog
bfd/dwarf2.c
bfd/elf64-alpha.c
bfd/elfxx-mips.c
bfd/libbfd-in.h
bfd/libbfd.h