This is the mail archive of the mailing list for the binutils project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Commit: addr2line: try harder to load symbols

Hi Guys,

  I am applying the patch below to fix a problem with addr2line and ELF
  targets.  The problem is that bfd_get_symtab_upper_bound() will always
  return a non-zero value (for ELF targets) because an extra entry is
  allowed to null terminate the symtab vector.  This means that, without
  this patch, addr2line will never try to load the dynamic symbols even
  if there are no ordinary symbols available.


2013-03-15  Nick Clifton  <>

	* addr2line.c (slurp_symtab): If canonicalization reveals that
	there were no ordinary symbols, try loading the dynamic symbols

Index: binutils/addr2line.c
RCS file: /cvs/src/src/binutils/addr2line.c,v
retrieving revision 1.43
diff -u -3 -p -r1.43 addr2line.c
--- binutils/addr2line.c	18 Jan 2013 13:14:35 -0000	1.43
+++ binutils/addr2line.c	15 Mar 2013 16:15:54 -0000
@@ -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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]