From d003868ea7bfa700dd91cbb6198b75f341a456e7 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Fri, 13 Aug 2004 03:16:01 +0000 Subject: bfd/ * bfd.c (_bfd_default_error_handler): Handle %A and %B. (bfd_archive_filename, bfd_get_section_ident): Delete. * ecofflink.c (bfd_ecoff_debug_accumulate_other): Don't call bfd_archive_filename. * elflink.c (elf_link_input_bfd): Don't use callbacks->error_handler to warn about symbols in discarded sections. Use _bfd_error_handler. * aout-adobe.c (aout_adobe_callback): See below. * aout-cris.c (swap_ext_reloc_in): .. * coff-arm.c (find_thumb_glue, find_arm_glue, coff_arm_relocate_section, bfd_arm_process_before_allocation, coff_arm_merge_private_bfd_data, _bfd_coff_arm_set_private_flags, coff_arm_copy_private_bfd_data): .. * coff-i860.c (i860_reloc_processing): .. * coff-mcore.c (mcore_coff_unsupported_reloc, coff_mcore_relocate_section): .. * coff-ppc.c (coff_ppc_relocate_section): .. * coff-rs6000.c (xcoff_create_csect_from_smclas * coff-sh.c (sh_relax_section, sh_relax_delete_bytes, sh_swap_insns, sh_relocate_section): .. * coff-tic54x.c (tic54x_reloc_processing): .. * coff-tic80.c (coff_tic80_relocate_section): .. * coff64-rs6000.c (xcoff64_create_csect_from_smclas): .. * coffcode.h (styp_to_sec_flags, coff_slurp_line_table, coff_slurp_symbol_table, coff_classify_symbol, coff_slurp_reloc_table): .. * coffgen.c (_bfd_coff_read_string_table): .. * cofflink.c (coff_link_add_symbols, _bfd_coff_link_input_bfd, _bfd_coff_generic_relocate_section): .. * cpu-arm.c (bfd_arm_merge_machines): .. * cpu-sh.c (sh_merge_bfd_arch): .. * elf-hppa.h (elf_hppa_relocate_section): .. * elf.c (bfd_elf_string_from_elf_section, setup_group, _bfd_elf_setup_group_pointers, bfd_section_from_shdr, assign_section_numbers, _bfd_elf_symbol_from_bfd_symbol, copy_private_bfd_data, _bfd_elf_validate_reloc): .. * elf32-arm.h (find_thumb_glue, find_arm_glue, bfd_elf32_arm_process_before_allocation, elf32_thumb_to_arm_stub, elf32_arm_to_thumb_stub, elf32_arm_final_link_relocate, elf32_arm_relocate_section, elf32_arm_set_private_flags, elf32_arm_copy_private_bfd_data, elf32_arm_merge_private_bfd_data): .. * elf32-cris.c (cris_elf_relocate_section, cris_elf_check_relocs, cris_elf_merge_private_bfd_data * elf32-frv.c (elf32_frv_relocate_section, elf32_frv_check_relocs): .. * elf32-gen.c (elf32_generic_link_add_symbols): .. * elf32-hppa.c (hppa_add_stub, hppa_build_one_stub, elf32_hppa_check_relocs, get_local_syms, final_link_relocate, elf32_hppa_relocate_section): .. * elf32-i370.c (i370_elf_merge_private_bfd_data, i370_elf_check_relocs, i370_elf_relocate_section): .. * elf32-i386.c (elf_i386_info_to_howto_rel, elf_i386_check_relocs, elf_i386_relocate_section): .. * elf32-m32r.c (m32r_elf_relocate_section, m32r_elf_merge_private_bfd_data): .. * elf32-m68hc1x.c (m68hc12_add_stub, _bfd_m68hc11_elf_merge_private_bfd_data): .. * elf32-m68k.c (elf_m68k_relocate_section): .. * elf32-mcore.c (mcore_elf_unsupported_reloc, mcore_elf_relocate_section): .. * elf32-ppc.c (ppc_elf_merge_private_bfd_data, bad_shared_reloc, ppc_elf_check_relocs, ppc_elf_relocate_section, ppc_elf_begin_write_processing): .. * elf32-s390.c (elf_s390_check_relocs, invalid_tls_insn, elf_s390_relocate_section): .. * elf32-sh-symbian.c (sh_symbian_import_as, sh_symbian_process_embedded_commands, sh_symbian_relocate_section): .. * elf32-sh.c (sh_elf_relax_section, sh_elf_relax_delete_bytes, sh_elf_swap_insns, sh_elf_relocate_section, sh_elf_check_relocs, sh_elf_merge_private_data): .. * elf32-sparc.c (elf32_sparc_check_relocs, elf32_sparc_relocate_section, elf32_sparc_merge_private_bfd_data): .. * elf32-v850.c (v850_elf_check_relocs, v850_elf_merge_private_bfd_data): .. * elf32-xtensa.c (elf_xtensa_check_relocs, elf_xtensa_relocate_section, elf_xtensa_merge_private_bfd_data): .. * elf64-alpha.c (elf64_alpha_relax_with_lituse, elf64_alpha_relax_got_load, elf64_alpha_size_got_sections, elf64_alpha_relocate_section_r, elf64_alpha_relocate_section): .. * elf64-gen.c (elf64_generic_link_add_symbols): .. * elf64-ppc.c (ppc64_elf_merge_private_bfd_data, ppc_add_stub, ppc64_elf_check_relocs, ppc64_elf_edit_opd, ppc64_elf_relocate_section): .. * elf64-s390.c (elf_s390_check_relocs, invalid_tls_insn, elf_s390_relocate_section): .. * elf64-sh64.c (sh_elf64_relocate_section): .. * elf64-sparc.c (sparc64_elf_check_relocs, sparc64_elf_add_symbol_hook, sparc64_elf_relocate_section, sparc64_elf_merge_private_bfd_data): .. * elf64-x86-64.c (elf64_x86_64_check_relocs, elf64_x86_64_relocate_section): .. * elflink.c (_bfd_elf_add_default_symbol, _bfd_elf_link_assign_sym_version, elf_link_read_relocs_from_section, _bfd_elf_link_output_relocs, elf_link_add_object_symbols, bfd_elf_size_dynamic_sections, elf_link_output_extsym, elf_get_linked_section_vma, elf_fixup_link_order, bfd_elf_final_link, bfd_elf_gc_record_vtinherit, bfd_elf_gc_record_vtinherit, _bfd_elf_section_already_linked): .. * elfxx-ia64.c (elfNN_ia64_relax_section, elfNN_ia64_relocate_section, elfNN_ia64_merge_private_bfd_data): .. * elfxx-mips.c (mips_elf_perform_relocation, _bfd_mips_elf_check_relocs, _bfd_mips_elf_merge_private_bfd_data): .. * ieee.c (ieee_slurp_external_symbols): .. * ihex.c (ihex_bad_byte, ihex_scan, ihex_read_section): .. * libbfd.c (_bfd_generic_verify_endian_match): .. * linker.c (_bfd_generic_link_add_one_symbol, _bfd_generic_section_already_linked): .. * pdp11.c (translate_to_native_sym_flags): .. * pe-mips.c (coff_pe_mips_relocate_section): .. * peicode.h (pe_ILF_build_a_bfd): .. * srec.c (srec_bad_byte): .. * stabs.c (_bfd_link_section_stabs): .. * xcofflink.c (xcoff_link_add_symbols, xcoff_link_input_bfd): .. Replace all uses of bfd_archive_filename and bfd_get_section_ident with corresponding %B and %A in _bfd_error_handler format string. Replace occurrences of "fprintf (stderr," with _bfd_error_handler calls to use %A and %B. Fix "against symbol .. from section" and similar error messages. Combine multiple _bfd_error_handler calls where they were separated due to bfd_archive_filename deficiencies. * bfd-in2.h: Regenerate. include/ * bfdlink.h (struct bfd_link_callbacks): Remove "error_handler". (LD_DEFINITION_IN_DISCARDED_SECTION): Delete. ld/ * ldmain.c (link_callbacks): Remove "error_handler". * ldmisc.c: Include elf-bfd.h. (vfinfo): Sort comment. Handle %A. Use %A instead of bfd_get_section_indent. (error_handler): Delete. * ldmisc.h (error_handler): Delete declaration. --- bfd/elflink.c | 153 ++++++++++++++++++++++------------------------------------ 1 file changed, 57 insertions(+), 96 deletions(-) (limited to 'bfd/elflink.c') diff --git a/bfd/elflink.c b/bfd/elflink.c index 82220ec..346e828 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -1392,8 +1392,8 @@ nondefault: if (hi->root.type != bfd_link_hash_defined && hi->root.type != bfd_link_hash_defweak) (*_bfd_error_handler) - (_("%s: warning: unexpected redefinition of indirect versioned symbol `%s'"), - bfd_archive_filename (abfd), shortname); + (_("%B: unexpected redefinition of indirect versioned symbol `%s'"), + abfd, shortname); } else { @@ -1711,8 +1711,8 @@ _bfd_elf_link_assign_sym_version (struct elf_link_hash_entry *h, void *data) /* We could not find the version for a symbol when generating a shared archive. Return an error. */ (*_bfd_error_handler) - (_("%s: undefined versioned symbol name %s"), - bfd_get_filename (sinfo->output_bfd), h->root.root.string); + (_("%B: undefined versioned symbol name %s"), + sinfo->output_bfd, h->root.root.string); bfd_set_error (bfd_error_bad_value); sinfo->failed = TRUE; return FALSE; @@ -1859,14 +1859,11 @@ elf_link_read_relocs_from_section (bfd *abfd, r_symndx >>= 24; if ((size_t) r_symndx >= nsyms) { - char *sec_name = bfd_get_section_ident (sec); (*_bfd_error_handler) - (_("%s: bad reloc symbol index (0x%lx >= 0x%lx) for offset 0x%lx in section `%s'"), - bfd_archive_filename (abfd), (unsigned long) r_symndx, - (unsigned long) nsyms, irela->r_offset, - sec_name ? sec_name : sec->name); - if (sec_name) - free (sec_name); + (_("%B: bad reloc symbol index (0x%lx >= 0x%lx)" + " for offset 0x%lx in section `%A'"), + abfd, sec, + (unsigned long) r_symndx, (unsigned long) nsyms, irela->r_offset); bfd_set_error (bfd_error_bad_value); return FALSE; } @@ -2052,14 +2049,9 @@ _bfd_elf_link_output_relocs (bfd *output_bfd, } else { - char *sec_name = bfd_get_section_ident (input_section); (*_bfd_error_handler) - (_("%s: relocation size mismatch in %s section %s"), - bfd_get_filename (output_bfd), - bfd_archive_filename (input_section->owner), - sec_name ? sec_name : input_section->name); - if (sec_name) - free (sec_name); + (_("%B: relocation size mismatch in %B section %A"), + output_bfd, input_section->owner, input_section); bfd_set_error (bfd_error_wrong_object_format); return FALSE; } @@ -3467,8 +3459,8 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info) if (vernum > elf_tdata (abfd)->dynverdef_hdr.sh_info) { (*_bfd_error_handler) - (_("%s: %s: invalid version %u (max %d)"), - bfd_archive_filename (abfd), name, vernum, + (_("%B: %s: invalid version %u (max %d)"), + abfd, name, vernum, elf_tdata (abfd)->dynverdef_hdr.sh_info); bfd_set_error (bfd_error_bad_value); goto error_free_vers; @@ -3508,8 +3500,8 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info) if (verstr == NULL) { (*_bfd_error_handler) - (_("%s: %s: invalid needed version %d"), - bfd_archive_filename (abfd), name, vernum); + (_("%B: %s: invalid needed version %d"), + abfd, name, vernum); bfd_set_error (bfd_error_bad_value); goto error_free_vers; } @@ -3683,12 +3675,10 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info) if (normal_align < common_align) (*_bfd_error_handler) - (_("Warning: alignment %u of symbol `%s' in %s is smaller than %u in %s"), - 1 << normal_align, - name, - bfd_archive_filename (normal_bfd), - 1 << common_align, - bfd_archive_filename (common_bfd)); + (_("Warning: alignment %u of symbol `%s' in %B" + " is smaller than %u in %B"), + normal_bfd, common_bfd, + 1 << normal_align, name, 1 << common_align); } /* Remember the symbol size and type. */ @@ -3697,11 +3687,11 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info) { if (h->size != 0 && h->size != isym->st_size && ! size_change_ok) (*_bfd_error_handler) - (_("Warning: size of symbol `%s' changed from %lu in %s to %lu in %s"), + (_("Warning: size of symbol `%s' changed" + " from %lu in %B to %lu in %B"), + old_bfd, abfd, name, (unsigned long) h->size, - bfd_archive_filename (old_bfd), - (unsigned long) isym->st_size, - bfd_archive_filename (abfd)); + (unsigned long) isym->st_size); h->size = isym->st_size; } @@ -3721,9 +3711,9 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info) && h->type != ELF_ST_TYPE (isym->st_info) && ! type_change_ok) (*_bfd_error_handler) - (_("Warning: type of symbol `%s' changed from %d to %d in %s"), - name, h->type, ELF_ST_TYPE (isym->st_info), - bfd_archive_filename (abfd)); + (_("Warning: type of symbol `%s' changed" + " from %d to %d in %B"), + abfd, name, h->type, ELF_ST_TYPE (isym->st_info)); h->type = ELF_ST_TYPE (isym->st_info); } @@ -3861,7 +3851,7 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info) { (*_bfd_error_handler) (_("%s: invalid DSO for symbol `%s' definition"), - bfd_archive_filename (abfd), name); + abfd, name); bfd_set_error (bfd_error_bad_value); goto error_free_vers; } @@ -4967,8 +4957,8 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd, == SHT_PREINIT_ARRAY) { (*_bfd_error_handler) - (_("%s: .preinit_array section is not allowed in DSO"), - bfd_archive_filename (sub)); + (_("%B: .preinit_array section is not allowed in DSO"), + sub); break; } @@ -6040,14 +6030,13 @@ elf_link_output_extsym (struct elf_link_hash_entry *h, void *data) && ! elf_link_check_versioned_symbol (finfo->info, bed, h)) { (*_bfd_error_handler) - (_("%s: %s symbol `%s' in %s is referenced by DSO"), - bfd_get_filename (finfo->output_bfd), + (_("%B: %s symbol `%s' in %B is referenced by DSO"), + finfo->output_bfd, h->root.u.def.section->owner, ELF_ST_VISIBILITY (h->other) == STV_INTERNAL ? "internal" : ELF_ST_VISIBILITY (h->other) == STV_HIDDEN - ? "hidden" : "local", - h->root.root.string, - bfd_archive_filename (h->root.u.def.section->owner)); + ? "hidden" : "local", + h->root.root.string); eoinfo->failed = TRUE; return FALSE; } @@ -6120,14 +6109,9 @@ elf_link_output_extsym (struct elf_link_hash_entry *h, void *data) input_sec->output_section); if (sym.st_shndx == SHN_BAD) { - char *sec_name = bfd_get_section_ident (input_sec); (*_bfd_error_handler) - (_("%s: could not find output section %s for input section %s"), - bfd_get_filename (finfo->output_bfd), - input_sec->output_section->name, - sec_name ? sec_name : input_sec->name); - if (sec_name) - free (sec_name); + (_("%B: could not find output section %A for input section %A"), + finfo->output_bfd, input_sec->output_section, input_sec); eoinfo->failed = TRUE; return FALSE; } @@ -6223,13 +6207,13 @@ elf_link_output_extsym (struct elf_link_hash_entry *h, void *data) && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0) { (*_bfd_error_handler) - (_("%s: %s symbol `%s' isn't defined"), - bfd_get_filename (finfo->output_bfd), - ELF_ST_VISIBILITY (sym.st_other) == STV_PROTECTED - ? "protected" - : ELF_ST_VISIBILITY (sym.st_other) == STV_INTERNAL - ? "internal" : "hidden", - h->root.root.string); + (_("%B: %s symbol `%s' isn't defined"), + finfo->output_bfd, + ELF_ST_VISIBILITY (sym.st_other) == STV_PROTECTED + ? "protected" + : ELF_ST_VISIBILITY (sym.st_other) == STV_INTERNAL + ? "internal" : "hidden", + h->root.root.string); eoinfo->failed = TRUE; return FALSE; } @@ -6725,20 +6709,10 @@ elf_link_input_bfd (struct elf_final_link_info *finfo, bfd *input_bfd) } else if (complain) { - char *r_sec = bfd_get_section_ident (o); - char *d_sec = bfd_get_section_ident (sec); - - finfo->info->callbacks->error_handler - (LD_DEFINITION_IN_DISCARDED_SECTION, - _("`%T' referenced in section `%s' of %B: " - "defined in discarded section `%s' of %B\n"), - sym_name, sym_name, - r_sec ? r_sec : o->name, input_bfd, - d_sec ? d_sec : sec->name, sec->owner); - if (r_sec) - free (r_sec); - if (d_sec) - free (d_sec); + (*_bfd_error_handler) + (_("`%s' referenced in section `%A' of %B: " + "defined in discarded section `%A' of %B\n"), + o, input_bfd, sec, sec->owner, sym_name); } /* Remove the symbol reference from the reloc, but @@ -7244,15 +7218,8 @@ elf_get_linked_section_vma (struct bfd_link_order *p) const struct elf_backend_data *bed = get_elf_backend_data (s->owner); if (bed->link_order_error_handler) - { - char *name = bfd_get_section_ident (s); - bed->link_order_error_handler - (_("%s: warning: sh_link not set for section `%s'"), - bfd_archive_filename (s->owner), - name ? name : s->name); - if (name) - free (name); - } + bed->link_order_error_handler + (_("%B: warning: sh_link not set for section `%A'"), s->owner, s); return 0; } else @@ -7325,8 +7292,8 @@ elf_fixup_link_order (bfd *abfd, asection *o) if (seen_other && seen_linkorder) { - (*_bfd_error_handler) (_("%s: has both ordered and unordered sections"), - o->name); + (*_bfd_error_handler) (_("%A has both ordered and unordered sections"), + o); bfd_set_error (bfd_error_bad_value); return FALSE; } @@ -8155,8 +8122,7 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) if (o == NULL) { (*_bfd_error_handler) - (_("%s: could not find output section %s"), - bfd_get_filename (abfd), name); + (_("%B: could not find output section %s"), abfd, name); goto error_return; } if (o->size == 0) @@ -8197,8 +8163,7 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) if (o == NULL) { (*_bfd_error_handler) - (_("%s: could not find output section %s"), - bfd_get_filename (abfd), name); + (_("%B: could not find output section %s"), abfd, name); goto error_return; } dyn.d_un.d_ptr = o->vma; @@ -8806,7 +8771,6 @@ bfd_elf_gc_record_vtinherit (bfd *abfd, struct elf_link_hash_entry **search, *child; bfd_size_type extsymcount; const struct elf_backend_data *bed = get_elf_backend_data (abfd); - char *sec_name; /* The sh_info field of the symtab header tells us where the external symbols start. We don't care about the local symbols at @@ -8830,11 +8794,8 @@ bfd_elf_gc_record_vtinherit (bfd *abfd, goto win; } - sec_name = bfd_get_section_ident (sec); - (*_bfd_error_handler) ("%s: %s+%lu: No symbol found for INHERIT", - bfd_archive_filename (abfd), - sec_name ? sec_name : sec->name, - (unsigned long) offset); + (*_bfd_error_handler) ("%B: %A+%lu: No symbol found for INHERIT", + abfd, sec, (unsigned long) offset); bfd_set_error (bfd_error_invalid_operation); return FALSE; @@ -9387,15 +9348,15 @@ _bfd_elf_section_already_linked (bfd *abfd, struct bfd_section * sec) case SEC_LINK_DUPLICATES_ONE_ONLY: (*_bfd_error_handler) - (_("%s: %s: warning: ignoring duplicate section `%s'\n"), - bfd_archive_filename (abfd), name); + (_("%B: ignoring duplicate section `%A'\n"), + abfd, sec); break; case SEC_LINK_DUPLICATES_SAME_SIZE: if (sec->size != l->sec->size) (*_bfd_error_handler) - (_("%s: %s: warning: duplicate section `%s' has different size\n"), - bfd_archive_filename (abfd), name); + (_("%B: duplicate section `%A' has different size\n"), + abfd, sec); break; } -- cgit v1.1