diff options
author | Alan Modra <amodra@gmail.com> | 2008-08-17 03:12:50 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2008-08-17 03:12:50 +0000 |
commit | 5c1d2f5f4c7747c36eae8be3abd4ef4e9669690c (patch) | |
tree | 3be4145ee7086fe0315ad0ce506626b5ca560759 /ld/ldmisc.c | |
parent | 1f5064de53c27d99fb92efd65a6785e2f1ec0835 (diff) | |
download | gdb-5c1d2f5f4c7747c36eae8be3abd4ef4e9669690c.zip gdb-5c1d2f5f4c7747c36eae8be3abd4ef4e9669690c.tar.gz gdb-5c1d2f5f4c7747c36eae8be3abd4ef4e9669690c.tar.bz2 |
bfd/
* bfd.c (struct _bfd): Correct outsymbols comment.
* bfd-in2.h: Regenerate.
* linker.c (bfd_generic_link_read_symbols): Renamed from..
(generic_link_read_symbols): ..this, and made global.
include/
* bfdlink.h (bfd_generic_link_read_symbols): Declare.
ld/
PR 6478
* ldcref.c (check_local_sym_xref): Use bfd_generic_link_read_symbols.
Don't free symbol pointer array.
(check_refs): Likewise.
* ldmain.c (warning_callback): Likewise.
* ldmisc.c (vfinfo): Likewise.
* pe-dll.c (process_def_file): Likewise.
(pe_walk_relocs_of_symbol, generate_reloc): Likewise.
* emultempl/pe.em (pe_find_data_imports): Likewise.
(gld_${EMULATION_NAME}_after_open): Likewise.
* emultempl/pep.em (pep_find_data_imports): Likewise.
(gld_${EMULATION_NAME}_after_open): Likewise.
* ldlang.h (lang_input_statement_type): Delete asymbols, symbol_count,
passive_position, closed.
* ldlang.c (new_afile): Don't set asymbols and symbol_count.
* ldmain.c (add_archive_element): xcalloc lang_input_statement_type.
Diffstat (limited to 'ld/ldmisc.c')
-rw-r--r-- | ld/ldmisc.c | 39 |
1 files changed, 6 insertions, 33 deletions
diff --git a/ld/ldmisc.c b/ld/ldmisc.c index bdae82e..d49cf17 100644 --- a/ld/ldmisc.c +++ b/ld/ldmisc.c @@ -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; |