binutils/binutils-2.23.52.0.1-addr2line-dynsymtab.patch

23 lines
799 B
Diff
Raw Normal View History

*** ../binutils-2.23.52.0.1/binutils/addr2line.c 2013-02-27 20:28:03.000000000 +0000
--- binutils/addr2line.c 2013-03-13 16:46:36.109519735 +0000
*************** slurp_symtab (bfd *abfd)
*** 130,135 ****
--- 130,146 ----
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