X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=ld%2Fldmisc.c;h=d49cf178125b3f4a7069d81a758e5a6fa863d28d;hb=8ea5bce59057ef1906bf1180843c0900b191dcab;hp=292fc45ccdda56e43887fed7ffb6f18f46fb9a9d;hpb=49fa1e15186cee29cc141f80cfe4f5ae026cf818;p=binutils-gdb.git diff --git a/ld/ldmisc.c b/ld/ldmisc.c index 292fc45ccdd..d49cf178125 100644 --- a/ld/ldmisc.c +++ b/ld/ldmisc.c @@ -1,25 +1,25 @@ /* 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. - This file is part of GLD, the Gnu Linker. + This file is part of the GNU Binutils. - GLD is free software; you can redistribute it and/or modify + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. - GLD is distributed in the hope that it will be useful, + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with GLD; see the file COPYING. If not, write to the Free - Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA - 02110-1301, USA. */ + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ #include "sysdep.h" #include "bfd.h" @@ -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;