2010-05-06 Michael Snyder <msnyder@vmware.com>
[deliverable/binutils-gdb.git] / ld / ldmisc.c
index bdae82e4ae90c8adb2f715ae4d4c8aa2fa67ff6d..d49cf178125b3f4a7069d81a758e5a6fa863d28d 100644 (file)
@@ -269,8 +269,7 @@ vfinfo (FILE *fp, const char *fmt, va_list arg, bfd_boolean is_warning)
                bfd *abfd;
                asection *section;
                bfd_vma offset;
-               lang_input_statement_type *entry;
-               asymbol **asymbols;
+               asymbol **asymbols = NULL;
                const char *filename;
                const char *functionname;
                unsigned int linenumber;
@@ -280,35 +279,12 @@ vfinfo (FILE *fp, const char *fmt, va_list arg, bfd_boolean is_warning)
                section = va_arg (arg, asection *);
                offset = va_arg (arg, bfd_vma);
 
-               if (abfd == NULL)
-                 {
-                   entry = NULL;
-                   asymbols = NULL;
-                 }
-               else
+               if (abfd != NULL)
                  {
-                   entry = (lang_input_statement_type *) abfd->usrdata;
-                   if (entry != (lang_input_statement_type *) NULL
-                       && entry->asymbols != (asymbol **) NULL)
-                     asymbols = entry->asymbols;
-                   else
-                     {
-                       long symsize;
-                       long sym_count;
-
-                       symsize = bfd_get_symtab_upper_bound (abfd);
-                       if (symsize < 0)
-                         einfo (_("%B%F: could not read symbols\n"), abfd);
-                       asymbols = xmalloc (symsize);
-                       sym_count = bfd_canonicalize_symtab (abfd, asymbols);
-                       if (sym_count < 0)
-                         einfo (_("%B%F: could not read symbols\n"), abfd);
-                       if (entry != (lang_input_statement_type *) NULL)
-                         {
-                           entry->asymbols = asymbols;
-                           entry->symbol_count = sym_count;
-                         }
-                     }
+                   if (!bfd_generic_link_read_symbols (abfd))
+                     einfo (_("%B%F: could not read symbols: %E\n"), abfd);
+
+                   asymbols = bfd_get_outsymbols (abfd);
                  }
 
                /* The GNU Coding Standard requires that error messages
@@ -375,9 +351,6 @@ vfinfo (FILE *fp, const char *fmt, va_list arg, bfd_boolean is_warning)
                else
                  lfinfo (fp, "%B:(%A+0x%v)", abfd, section, offset);
 
-               if (asymbols != NULL && entry == NULL)
-                 free (asymbols);
-
                if (discard_last)
                  {
                    last_bfd = NULL;
This page took 0.02347 seconds and 4 git commands to generate.