diff options
author | Nick Clifton <nickc@redhat.com> | 2013-03-15 16:25:00 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2013-03-15 16:25:00 +0000 |
commit | 0d0fb1ba5f0512ca8b670d3bdcf2083db355d3d7 (patch) | |
tree | 8f388f2e9545ce82068c1087582875d64b49fa48 /binutils/addr2line.c | |
parent | ba86b375f001b2f270b0d0a08197940e6b194b2e (diff) | |
download | binutils-0d0fb1ba5f0512ca8b670d3bdcf2083db355d3d7.zip binutils-0d0fb1ba5f0512ca8b670d3bdcf2083db355d3d7.tar.gz binutils-0d0fb1ba5f0512ca8b670d3bdcf2083db355d3d7.tar.bz2 |
* addr2line.c (slurp_symtab): If canonicalization reveals that
there were no ordinary symbols, try loading the dynamic symbols
instead.
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 |