diff options
Diffstat (limited to 'binutils/addr2line.c')
-rw-r--r-- | binutils/addr2line.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/binutils/addr2line.c b/binutils/addr2line.c index b4f604b..0de7398 100644 --- a/binutils/addr2line.c +++ b/binutils/addr2line.c @@ -130,6 +130,17 @@ slurp_symtab (bfd *abfd) symcount = bfd_canonicalize_symtab (abfd, syms); if (symcount < 0) bfd_fatal (bfd_get_filename (abfd)); + + /* If there are no symbols left after canonicalization and + we have not tried the dynamic symbols then give them a go. */ + if (symcount == 0 + && ! dynamic + && (storage = bfd_get_dynamic_symtab_upper_bound (abfd)) > 0) + { + free (syms); + syms = xmalloc (storage); + symcount = bfd_canonicalize_dynamic_symtab (abfd, syms); + } } /* These global variables are used to pass information between |