Read in dynamic symbols if no ordinary ones are available.
authorNick Clifton <nickc@redhat.com>
Mon, 7 Oct 2002 17:25:08 +0000 (17:25 +0000)
committerNick Clifton <nickc@redhat.com>
Mon, 7 Oct 2002 17:25:08 +0000 (17:25 +0000)
binutils/ChangeLog
binutils/addr2line.c

index 29a8339..372893a 100644 (file)
@@ -1,3 +1,8 @@
+2002-10-07  Gordon Chaffee <chaffee@netvmg.com>
+
+       * addr2line.c (slurp_symtab): Read in dynamic symbols if no
+       ordinary ones are available.
+
 2002-09-30  H.J. Lu <hjl@gnu.org>
 
        * readelf.c (get_machine_flags): Handle E_MIPS_MACH_4120,
index 174a034..1d09cd0 100644 (file)
@@ -96,19 +96,16 @@ static void
 slurp_symtab (abfd)
      bfd *abfd;
 {
-  long storage;
   long symcount;
+  unsigned int size;
 
   if ((bfd_get_file_flags (abfd) & HAS_SYMS) == 0)
     return;
 
-  storage = bfd_get_symtab_upper_bound (abfd);
-  if (storage < 0)
-    bfd_fatal (bfd_get_filename (abfd));
-
-  syms = (asymbol **) xmalloc (storage);
+  symcount = bfd_read_minisymbols (abfd, false, (PTR) &syms, &size);
+  if (symcount == 0)
+    symcount = bfd_read_minisymbols (abfd, true /* dynamic */, (PTR) &syms, &size);
 
-  symcount = bfd_canonicalize_symtab (abfd, syms);
   if (symcount < 0)
     bfd_fatal (bfd_get_filename (abfd));
 }