X-Git-Url: https://oss.titaniummirror.com/gitweb?p=msp430-binutils.git;a=blobdiff_plain;f=ld%2Fldmisc.c;fp=ld%2Fldmisc.c;h=d49cf178125b3f4a7069d81a758e5a6fa863d28d;hp=e8c6b302ebfeb7a3da606f824b69987c62909b3d;hb=d5da4f291af551c0b8b79e1d4a9b173d60e5c10e;hpb=7b5ea4fcdf2819e070665ab5610f8b48e3867c10 diff --git a/ld/ldmisc.c b/ld/ldmisc.c index e8c6b30..d49cf17 100644 --- a/ld/ldmisc.c +++ b/ld/ldmisc.c @@ -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;