]> oss.titaniummirror.com Git - msp430-binutils.git/blobdiff - ld/ldmisc.c
Merge commit 'upstream/2.20'
[msp430-binutils.git] / ld / ldmisc.c
index e8c6b302ebfeb7a3da606f824b69987c62909b3d..d49cf178125b3f4a7069d81a758e5a6fa863d28d 100644 (file)
@@ -1,6 +1,6 @@
 /* ldmisc.c
    Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-   2001, 2002, 2003, 2004, 2005, 2006, 2007
+   2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
    Free Software Foundation, Inc.
    Written by Steve Chamberlain of Cygnus Support.
 
@@ -152,7 +152,7 @@ vfinfo (FILE *fp, const char *fmt, va_list arg, bfd_boolean is_warning)
                  {
                    char *demangled;
 
-                   demangled = bfd_demangle (output_bfd, name,
+                   demangled = bfd_demangle (link_info.output_bfd, name,
                                              DMGL_ANSI | DMGL_PARAMS);
                    if (demangled != NULL)
                      {
@@ -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;