Merge changes between binutils-csl-2_17-branchpoint and
authorJoseph Myers <joseph@codesourcery.com>
Tue, 22 Aug 2006 15:08:47 +0000 (15:08 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Tue, 22 Aug 2006 15:08:47 +0000 (15:08 +0000)
binutils-2_17, except for the addition of generated files to CVS.

210 files changed:
ChangeLog
ChangeLog.csl
bfd/ChangeLog
bfd/Makefile.am
bfd/Makefile.in
bfd/aoutf1.h
bfd/bfd-in2.h
bfd/coff-rs6000.c
bfd/config.bfd
bfd/configure
bfd/configure.in
bfd/doc/ChangeLog
bfd/doc/bfd.texinfo
bfd/elf-eh-frame.c
bfd/elf32-bfin.c
bfd/elf32-i386.c
bfd/elf32-m32c.c
bfd/elf32-mips.c
bfd/elf32-ppc.c
bfd/elf32-sparc.c
bfd/elf32-xtensa.c
bfd/elf64-hppa.c
bfd/elf64-ppc.c
bfd/elf64-x86-64.c
bfd/elfcode.h
bfd/elflink.c
bfd/elfxx-ia64.c
bfd/elfxx-mips.c
bfd/elfxx-mips.h
bfd/elfxx-sparc.c
bfd/elfxx-sparc.h
bfd/libbfd.h
bfd/po/Make-in
bfd/po/SRC-POTFILES.in
bfd/po/es.po
bfd/reloc.c
bfd/targets.c
bfd/tekhex.c
bfd/version.h
binutils/BRANCHES
binutils/ChangeLog
binutils/MAINTAINERS
binutils/Makefile.in
binutils/aclocal.m4
binutils/addr2line.c
binutils/doc/Makefile.am
binutils/doc/Makefile.in
binutils/doc/binutils.texi
binutils/objdump.c
binutils/po/Make-in
binutils/po/es.po
binutils/po/fr.po
binutils/po/ru.po
binutils/po/vi.po
binutils/resbin.c
binutils/testsuite/ChangeLog
binutils/testsuite/lib/utils-lib.exp
compile [deleted file]
configure
configure.in
contrib/ChangeLog [deleted file]
contrib/texi2pod.pl [deleted file]
cpu/ChangeLog
cpu/m32c.opc
djunpack.bat [deleted file]
etc/ChangeLog
etc/configure
etc/texi2pod.pl
gas/ChangeLog
gas/Makefile.am
gas/Makefile.in
gas/aclocal.m4
gas/config/bfin-defs.h
gas/config/bfin-lex.l
gas/config/bfin-parse.y
gas/config/tc-avr.c
gas/config/tc-avr.h
gas/config/tc-bfin.c
gas/config/tc-i386.c
gas/config/tc-mips.c
gas/config/tc-mips.h
gas/config/tc-sparc.c
gas/config/tc-xtensa.c
gas/config/tc-z80.c
gas/config/tc-z80.h
gas/config/xtensa-relax.c
gas/configure
gas/configure.in
gas/configure.tgt
gas/doc/Makefile.am
gas/doc/Makefile.in
gas/doc/as.texinfo
gas/doc/c-arc.texi
gas/dwarf2dbg.c
gas/expr.c
gas/frags.c
gas/frags.h
gas/po/Make-in
gas/po/POTFILES.in
gas/po/es.po
gas/subsegs.c
gas/testsuite/ChangeLog
gas/testsuite/gas/arm/arch7.d
gas/testsuite/gas/arm/svc.d
gas/testsuite/gas/arm/thumb2_bcond.d
gas/testsuite/gas/arm/thumb2_it_bad.d
gas/testsuite/gas/i386/reloc64.d
gas/testsuite/gas/i386/reloc64.l
gas/testsuite/gas/i386/reloc64.s
gas/testsuite/gas/i386/rep.d
gas/testsuite/gas/i386/rep.s
gas/testsuite/gas/m68k/mcf-fpu.d
gas/testsuite/gas/m68k/mcf-fpu.s
gas/testsuite/gas/mips/jal-range.l
gas/testsuite/gas/mips/jal-range.s
gas/testsuite/gas/mips/mips.exp
gas/testsuite/gas/mips/mips16e-jrc.d
gas/testsuite/gas/mips/mips16e-save.d
gas/testsuite/gas/mips/mips32-dsp.d
gas/testsuite/gas/mips/mips32-dsp.l
gas/testsuite/gas/mips/mips32-mt.d
gas/testsuite/gas/mips/mips32-mt.l
gas/testsuite/gas/sparc/sparc.exp
gas/write.c
gas/write.h
gprof/ChangeLog
gprof/corefile.c
gprof/po/Make-in
gprof/po/es.po
include/ChangeLog
include/bfdlink.h
include/elf/ChangeLog
include/elf/bfin.h
include/elf/mips.h
include/elf/x86-64.h
include/libiberty.h
include/opcode/ChangeLog
include/opcode/avr.h
intl/ChangeLog
intl/Makefile.in
ld/ChangeLog
ld/Makefile.am
ld/Makefile.in
ld/NEWS
ld/config.in
ld/configure
ld/configure.in
ld/configure.tgt
ld/deffilep.y
ld/emulparams/bfin.sh
ld/emulparams/elf32bfinfd.sh
ld/emulparams/elf32bmip.sh
ld/emultempl/bfin.em [deleted file]
ld/emultempl/elf32.em
ld/emultempl/ia64elf.em
ld/emultempl/xtensaelf.em
ld/gen-doc.texi
ld/genscripts.sh
ld/ld.texinfo
ld/ldlang.c
ld/ldlang.h
ld/ldmain.c
ld/po/Make-in
ld/po/POTFILES.in
ld/po/es.po
ld/po/ld.pot
ld/po/vi.po
ld/scripttempl/elf32crx.sc
ld/testsuite/ChangeLog
ld/testsuite/ld-cdtest/cdtest-foo.cc
ld/testsuite/ld-cdtest/cdtest-foo.h
ld/testsuite/ld-elf/eh1.d
ld/testsuite/ld-elf/eh2.d
ld/testsuite/ld-elf/eh3.d
ld/testsuite/ld-elf/orphan.ld
ld/testsuite/ld-elf/sec64k.exp
ld/testsuite/ld-elf/start.s
ld/testsuite/ld-elfvers/vers.exp
ld/testsuite/ld-elfweak/size2.d
ld/testsuite/ld-elfweak/size2a.s
ld/testsuite/ld-elfweak/size2b.s
ld/testsuite/ld-mips-elf/mips-elf.exp
ld/testsuite/ld-mips-elf/textrel-1.d
ld/testsuite/ld-powerpc/tlsexetoc.g
ld/testsuite/ld-powerpc/tlsexetoc.r
ld/testsuite/ld-sparc/sparc.exp
ld/testsuite/ld-srec/sr3.cc
ld/testsuite/lib/ld-lib.exp
libiberty/ChangeLog
libiberty/Makefile.in
libiberty/functions.texi
libiberty/pex-common.c
libiberty/pex-common.h
libiberty/pexecute.txh
libiberty/testsuite/Makefile.in
opcodes/ChangeLog
opcodes/avr-dis.c
opcodes/crx-dis.c
opcodes/m32c-asm.c
opcodes/m68k-dis.c
opcodes/mips-opc.c
opcodes/pdp11-opc.c
opcodes/po/Make-in
opcodes/po/POTFILES.in
opcodes/po/es.po
opcodes/po/fi.po
opcodes/po/ga.po
opcodes/po/nl.po
opcodes/po/vi.po
src-release

index c0126cd..1d6afc2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,27 @@
+2006-05-17  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * src-release (MAKEINFOFLAGS): Define.
+       (do-proto-toplev): Pass MAKEINFOFLAGS to submakes.
+
+2006-04-10  Ben Elliston  <bje@au.ibm.com>
+
+       * contrib: Remove directory.
+
+2006-04-06  Carlos O'Donell <carlos@codesourcery.com>
+
+       * Makefile.tpl: Add install-html target.
+       * Makefile.def: Add install-html target.
+       * Makefile.in: Regenerate.
+       * configure.in: Add --with-datarootdir, --with-docdir,
+       and --with-htmldir options.
+       * configure: Regenerate.
+
+2006-03-31  Ben Elliston  <bje@au.ibm.com>
+
+       PR binutils/1860
+       * configure.in: Require makeinfo 4.4 or higher.
+       * configure: Regenerate.
+
 2006-03-14  Paolo Bonzini  <bonzini@gnu.org>
 
        * Makefile.in: Regenerate.
index 7562a35..899bca3 100644 (file)
@@ -1,3 +1,8 @@
+2006-08-22  Joseph Myers  <joseph@codesourcery.com>
+
+       Merge changes between binutils-csl-2_17-branchpoint and
+       binutils-2_17, except for the addition of generated files to CVS.
+
 2006-08-21  Mark Shinwell  <shinwell@codesourcery.com>
 
        bfd/
index 521fcb9..f2f9990 100644 (file)
@@ -1,3 +1,608 @@
+2006-06-23  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * configure.in: Update version to 2.17.
+       * Makefile.am: Set RELEASE.
+       * configure, Makefile.in: Regenerated.
+
+2006-06-12  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * configure.in: Update version to 2.16.94.
+       * configure: Regenerated.
+
+2006-06-11  Richard Sandiford  <richard@codesourcery.com>
+           Thiemo Seufer  <ths@mips.com>
+
+       * elfxx-mips.c (mips_elf_link_hash_table): Add function_stub_size.
+       (STUB_ORI): New macro.
+       (STUB_LI16U): Fix formatting.
+       (MIPS_FUNCTION_STUB_SIZE): Delete.
+       (MIPS_FUNCTION_STUB_MAX_SIZE): Likewise.
+       (MIPS_FUNCTION_STUB_NORMAL_SIZE): New macro.
+       (MIPS_FUNCTION_STUB_BIG_SIZE): Likewise.
+       (_bfd_mips_elf_adjust_dynamic_symbol): Use htab->function_stub_size
+       instead of MIPS_FUNCTION_STUB_SIZE.
+       (count_section_dynsyms): New function, split out from
+       _bfd_mips_elf_final_link.
+       (_bfd_mips_elf_always_size_sections): Get a worst-case estimate
+       of the number of dynamic symbols needed and use it to set up
+       function_stub_size.  Use function_stub_size rather than
+       MIPS_FUNCTION_STUB_SIZE to determine the size of the stub section.
+       Use 16-byte stubs for 0x10000 dynamic symbols.
+       (_bfd_mips_elf_size_dynamic_sections): Use htab->function_stub_size
+       instead of MIPS_FUNCTION_STUB_SIZE.  Fix formatting.
+       (_bfd_mips_elf_finish_dynamic_symbol): Likewise.  Change the
+       size of the stub buffer from MIPS_FUNCTION_STUB_MAX_SIZE to
+       MIPS_FUNCTION_STUB_BIG_SIZE.  Tweak the check for unhandled dynindxes.
+       Use MIPS_FUNCTION_STUB_BIG_SIZE rather than a hard-coded 20.
+       Use STUB_ORI rather than STUB_LI16U for big stubs.
+       (_bfd_mips_elf_link_hash_table_create): Initialize function_stub_size.
+       (_bfd_mips_elf_final_link): Use count_section_dynsyms.
+
+2006-06-08  David Daney  <ddaney@avtrex.com>
+
+       * elfxx-mips.c (STUB_LI16): Removed.
+       (STUB_LUI): New macro.
+       (STUB_LI16U): Ditto.
+       (STUB_LI16S): Ditto.
+       (MIPS_FUNCTION_STUB_SIZE): Rewrote to take info parameter.
+       (_bfd_mips_elf_adjust_dynamic_symbol): Pass info parameter to
+       MIPS_FUNCTION_STUB_SIZE.
+       (_bfd_mips_elf_always_size_sections): Ditto.
+       (_bfd_mips_elf_size_dynamic_sections): Ditto.
+       (_bfd_mips_elf_finish_dynamic_sections): Ditto.
+       (_bfd_mips_elf_finish_dynamic_symbol): Rewrote stub generation
+       to allow larger symbol table indexes.
+
+2006-06-07  Joseph S. Myers  <joseph@codesourcery.com>
+
+       * po/Make-in (pdf, ps): New dummy targets.
+
+2006-06-01  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       Backport:
+       2006-05-23  H.J. Lu  <hongjiu.lu@intel.com>
+       PR ld/2655
+       PR ld/2657
+       * elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Properly
+       update CIE/FDE length.  Don't pad to the section alignment.
+
+2006-05-30  Nick Clifton  <nickc@redhat.com>
+
+       * po/es.po: Updated Spanish translation.
+
+2006-05-23  Alan Modra  <amodra@bigpond.net.au>
+
+       * elf64-ppc.c (compare_symbols): Prefer strong dynamic global
+       function syms over other syms.
+
+2006-05-22  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * elflink.c (_bfd_elf_add_dynamic_entry): Remove DT_TEXTREL
+       check.
+       (bfd_elf_final_link): Add a late DT_TEXTREL check.
+       * elfxx-mips.c (MIPS_ELF_READONLY_SECTION): Define.
+       (mips_elf_create_dynamic_relocation): Set DF_TEXTREL.
+       (_bfd_mips_elf_check_relocs): Delete MIPS_READONLY_SECTION.
+       Use MIPS_ELF_READONLY_SECTION.
+       (_bfd_mips_elf_size_dynamic_sections): Clear DF_TEXTREL after
+       creating DT_TEXTREL.
+       (_bfd_mips_elf_finish_dynamic_sections): Clear textrel markers
+       if no text relocations were generated.
+
+2006-05-17  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * configure.in: Update version to 2.16.93.
+       * configure: Regenerated.
+
+2006-05-17  Alan Modra  <amodra@bigpond.net.au>
+
+       * elflink.c (elf_gc_sweep): Don't specially keep non-alloc,
+       non-load sections if they have relocs.
+
+2006-05-16  Andreas Schwab  <schwab@suse.de>
+
+       * aoutf1.h (struct external_sparc_core): Declare c_regs as struct
+       regs instead of an array of int.
+       (struct external_solaris_bcp_core): Likewise.
+       (swapcore_sun3): Use offsetof instead of computing the offset
+       manually.
+       (swapcore_sparc): Likewise.  Simplify reference to c_regs.
+       (swapcore_solaris_bcp): Likewise.
+
+2006-05-15  Alan Modra  <amodra@bigpond.net.au>
+
+       PR 2658
+       * elf32-ppc.c (ppc_elf_relax_section): Don't segfault on non-pic
+       -shared link.
+
+2006-05-11  Michael Matz  <matz@suse.de>
+
+       * elflink.c (match_group_member): Correctly iterate group
+       members.
+
+2006-05-11  Nick Clifton  <nickc@redhat.com>
+
+       PR ld/2607
+       * elfcode.h (valid_section_index_p): New function: Checks for a
+       valid section index.  Allows indicies in the range SHN_LOPROC to
+       SHN_HIOS.
+       (elf_object_p): Use valid_section_index_p.
+
+2006-05-11  Nick Clifton  <nickc@redhat.com>
+
+       PR ld/2257
+       * elfcode.h (elf_object_p): Allow files with corrupt e_shstrndx
+       fields to still be handled as ELF files.
+
+2006-05-10  Alan Modra  <amodra@bigpond.net.au>
+
+       PR 2342
+       * elflink.c (_bfd_elf_default_action_discarded): Revert 2006-02-16.
+
+2006-05-10  Alan Modra  <amodra@bigpond.net.au>
+
+       * elf64-ppc.c (ppc64_elf_tls_optimize): Only optimize
+       R_PPC64_TPREL64 and R_PPC64_DTPMOD64 relocs when they are in
+       the .toc and referenced by a TLS code sequence.
+       (ppc64_elf_edit_toc): Cater for the unlikely situation that
+       .toc is the first section in a file.
+
+2006-05-03  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
+
+       PR binutils/2584
+       * tekhex.c (getvalue): Change return type to bfd_boolean and
+       add the new parameter.  Return false if the unexpected character
+       is found.
+       (getsym): Likewise.
+       (first_phase): Change return type to bfd_boolean and return
+       false if the unexpected character is found.  Replace abort
+       with returning false.
+       (pass_over): Change return type to bfd_boolean and the type of
+       the second argument to bfd_boolean (*) (bfd *, int, char *).
+       Return false if FUNC returns false.
+       (tekhex_object_p): Return NULL if pass_over fails.
+
+2006-05-02  Paul Brook  <paul@codesourcery.com>
+
+       * elf32-arm.c (elf32_arm_final_link_relocate): Set thumb funciton bit
+       for R_ARM_REL32.
+
+2006-04-27  Alan Modra  <amodra@bigpond.net.au>
+
+       * coff-rs6000.c (xcoff_write_archive_contents_old): Warning fix.
+
+2006-04-16  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * configure.in: Update version to 2.16.92.
+       * configure: Regenerated.
+
+2006-04-16  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * po/SRC-POTFILES.in: Regenerated.
+
+2006-04-14  David Heine  <dlheine@tensilica.com>
+
+       * elf32-xtensa.c (build_reloc_opcodes): New.
+       (compute_text_actions): Use it to decode opcodes outside inner loop.
+       (check_section_ebb_pcrels_fit): Add "reloc_opcodes" argument, and if
+       it is set, use it to get the opcodes for relocations.
+       (move_shared_literal): Adjust call to check_section_ebb_pcrels_fit.
+
+2006-04-08  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/2513
+       * elf32-i386.c (GOT_TLS_MASK): New macro for tls_type.
+       (GOT_TLS_IE_IE): Likewise.
+       (GOT_TLS_IE_GD): Likewise.
+       (GOT_TLS_IE_MASK): Likewise.
+       (elf_i386_check_relocs): For global symbols, set GOT_TLS_IE_GD
+       and GOT_TLS_IE_IE for R_386_TLS_GD and R_386_TLS_IE
+       respectively.
+       (allocate_dynrelocs): If both GOT_TLS_IE_IE and GOT_TLS_IE_GD
+       are set, treat tls_type as GOT_TLS_IE_BOTH.
+       (elf_i386_relocate_section): Likewise.
+
+2006-04-07  Randolph Chung  <tausq@debian.org>
+
+       * elf64-hppa.c (elf64_hppa_grok_prstatus): New function.
+       (elf64_hppa_grok_psinfo): Likewise.
+       (elf_backend_grok_pstatus, elf_backend_grok_psinfo): Define.
+
+2006-04-06  DJ Delorie  <dj@redhat.com>
+
+       * elf32-m32c.c (m32c_elf_relocate_section): Generate a symbol for
+       each plt entry we create.
+
+2006-04-06  Carlos O'Donell  <carlos@codesourcery.com>
+
+       * po/Make-in: Add install-html target.
+       * Makefile.am: Rename docdir to bfddocdir. Add datarootdir, docdir
+       htmldir. Add install-html and install-html-recursive targets.
+       * Makefile.in: Regenerate.
+       * configure.in: AC_SUBST for datarootdir, docdir and htmldir.
+       * configure: Regenerate.
+
+2006-04-06  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * elfxx-ia64.c (elfNN_ia64_relax_section): Skip unneeded passes
+       with the skip_relax_pass_0 and skip_relax_pass_1 bits in the
+       section structure.
+
+2006-04-05  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+       * elf32-bfin.c (bfinfdpic_relocs_info_hash): Sprinkle casts to
+       eliminate warnings.
+
+2006-04-05  H.J. Lu  <hongjiu.lu@intel.com>
+           James E Wilson  <wilson@specifixinc.com>
+
+       PR ld/2442
+       * elfxx-ia64.c (elfNN_ia64_dyn_sym_info): Remove next.
+       (elfNN_ia64_local_hash_entry): Add count, sorted_count and
+       size.
+       (elfNN_ia64_link_hash_entry): Likewise.
+       (elfNN_ia64_new_elf_hash_entry): Initialize count, sorted_count
+       and size.
+       (elfNN_ia64_hash_copy_indirect): Updated elfNN_ia64_dyn_sym_info
+       processing.
+       (elfNN_ia64_hash_hide_symbol): Likewise.
+       (elfNN_ia64_global_dyn_sym_thunk): Likewise.
+       (elfNN_ia64_local_dyn_sym_thunk): Likewise.
+       (elfNN_ia64_global_dyn_info_free): New function.
+       (elfNN_ia64_local_dyn_info_free): Likewise.
+       (elfNN_ia64_hash_table_free): Free local and global
+       elfNN_ia64_dyn_sym_info.
+       (addend_compare): New function.
+       (sort_dyn_sym_info): Likewise.
+       (get_dyn_sym_info): Updated to use binary search for addend.
+       (elfNN_ia64_check_relocs): Scan relocations to create dynamic
+       relocation arrays first.
+
+2006-04-05  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+       * elf32-bfin.c (_bfin_create_got_section): Don't generate a _gp
+       symbol.
+
+2006-04-05  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/2411
+       * elflink.c (check_dynsym): New.
+       (elf_link_output_extsym): Use it.
+       (bfd_elf_final_link): Likewise.
+
+2006-04-05  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/2404
+       * elflink.c (_bfd_elf_merge_symbol): Skip the default indirect
+       symbol from the dynamic definition with the default version if
+       its type and the type of existing regular definition mismatch.
+
+2006-04-05  Richard Sandiford  <richard@codesourcery.com>
+           Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * config.bfd (sparc-*-vxworks*): New stanza.
+       * configure.in (bfd_elf32_sparc_vxworks_vec): New stanza.
+       (bfd_elf32_sparc_vec, bfd_elf64_sparc_vec): Add elf-vxworks.lo.
+       * configure: Regenerate.
+       * elf32-sparc.c: Include elf-vxworks.h.
+       (elf32_sparc_vxworks_link_hash_table_create: New.
+       (elf32_sparc_vxworks_final_write_processing): New.
+       (TARGET_BIG_SYM): Override for VxWorks.
+       (TARGET_BIG_NAME, ELF_MINPAGESIZE): Likewise.
+       (bfd_elf32_bfd_link_hash_table_create): Likewise.
+       (elf_backend_want_got_plt, elf_backend_plt_readonly): Likewise.
+       (elf_backend_got_header_size, elf_backend_add_symbol_hook): Likewise.
+       (elf_backend_link_output_symbol_hook): Likewise.
+       (elf_backend_emit_relocs): Likewise.
+       (elf_backend_final_write_processing, elf32_bed): Likewise.
+       * elfxx-sparc.c: Include libiberty.h and elf-vxworks.h.
+       (sparc_vxworks_exec_plt0_entry, sparc_vxworks_exec_plt_entry): New.
+       (sparc_vxworks_shared_plt0_entry, sparc_vxworks_shared_plt_entry): New.
+       (_bfd_sparc_elf_link_hash_table_create): Don't initialize
+       build_plt_entry here.
+       (create_got_section): Initialize sgotplt for VxWorks.
+       (_bfd_sparc_elf_create_dynamic_sections): Initialize build_plt_entry,
+       plt_header_size and plt_entry_size, with new VxWorks-specific settings.
+       Call elf_vxworks_create_dynamic_sections for VxWorks.
+       (allocate_dynrelocs): Use plt_header_size and plt_entry_size.
+       Allocate room for .got.plt and .rela.plt.unloaded entries on VxWorks.
+       (_bfd_sparc_elf_size_dynamic_sections): Don't allocate a nop in .plt
+       for VxWorks.  Check for the .got.plt section.
+       (sparc_vxworks_build_plt_entry): New function.
+       (_bfd_sparc_elf_finish_dynamic_symbol): Add handling of VxWorks PLTs.
+       Don't make _GLOBAL_OFFSET_TABLE_ and _PROCEDURE_LINKAGE_TABLE_
+       absolute on VxWorks.
+       (sparc32_finish_dyn): Add special handling for DT_RELASZ
+       and DT_PLTGOT on VxWorks.
+       (sparc_vxworks_finish_exec_plt): New.
+       (sparc_vxworks_finish_shared_plt): New.
+       (_bfd_sparc_elf_finish_dynamic_sections): Call them.
+       Use plt_header_size and plt_entry_size.
+       * elfxx-sparc.h (_bfd_sparc_elf_link_hash_table): Add is_vxworks,
+       srelplt2, sgotplt, plt_header_size and plt_entry_size fields.
+       * Makefile.am (elfxx-sparc.lo): Depend on elf-vxworks.h.
+       (elf32-sparc.lo): Likewise.
+       * Makefile.in: Regenerate.
+       * targets.c (bfd_elf32_sparc_vxworks_vec): Declare.
+       (_bfd_target_vector): Add a pointer to it.
+
+2006-03-30  Ben Elliston  <bje@au.ibm.com>
+
+       PR ld/2267
+       * elflink.c (elf_fixup_link_order): Ensure `elfsec' is not a
+       special section number that exceeds the number of ELF sections
+       (eg. SHN_MIPS_SCOMMON).
+
+2006-03-27  Richard Sandiford  <richard@codesourcery.com>
+
+       * elfxx-mips.c (mips_got_entry): Add more commentary.
+       (mips_elf_local_got_index): Use the hash table entry to record
+       the GOT index of forced-local symbols.
+       (mips_elf_initialize_tls_index): Rearrange code.  Store the index
+       in either the hash table entry or the mips_got_entry, not both.
+       Add more commentary.
+       (mips_elf_multi_got): Make sure the g->next is nonnull when calling
+       mips_elf_initialize_tls_index.
+
+2006-03-25  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+       * elf32-bfin.c (bfd_const_reloc, bfd_oper_reloc, bfin_push_reloc,
+       RELOC_STACK_SIZE, reloc_stack, reloc_stack_tos, is_reloc_stack_empty,
+       reloc_stack_push, reloc_stack_pop, reloc_stack_operate,
+       bfin_areloc_howto_table): Delete.  All
+       uses deleted as well.
+       (bfin_reloc_map): Delete all stack relocs.
+       (bfin_info_to_howto, bfin_bfd_reloc_type_lookup,
+       bfin_reloc_type_lookup): Don't support them.
+       (bfin_relocate_section): Don't try to handle them.
+
+       * config.bfd (bfin-*-*): Add bfd_elf32_bfinfdpic_vec.
+       * configure.in: Likewise.
+       * configure: Regenerate.
+       * elf32-bfin.c: Include "elf/dwarf2.h" and "hashtab.h".
+       (BFIN_RELOC_MAX): Now 0x21.
+       (bfin_howto_table, bfin_reloc_map): Add FD-PIC relocs.
+       (bfd_elf32_bfinfdpic_vec): Declare.
+       (IS_FDPIC): New macro.
+       (struct bfinfdpic_elf_link_hash_table): New struct.
+       (bfinfdpic_hash_table, bfinfdpic_got_section,
+       bfinfdpic_gotrel_section, bfinfdpic_gotfixup_section,
+       bfinfdpic_plt_setion, bfinfdpic_pltrel_section,
+       bfinfdpic_relocs_info, bfinfdpic_got_initial_offset,
+       bfinfdpic_plt_initial_offset): Accessor macros for it.
+       (BFINFDPIC_SYM_LOCAL, BFINFDPIC_FUNCDESC_LOCAL): New macros.
+       (struct bfinfdpic_relocs_info): New struct.
+       (LZPLT_RESOLVER_EXTRA, LZPLT_NORMAL_SIZE, LZPLT_ENTRIES,
+       BFINFDPIC_LZPLT_BLOCK_SIZE, BFINFDPIC_LZPLT_RESOLV_LOC,
+       DEFAULT_STACK_SIZE): New macros.
+       (bfinfdpic_elf_link_hash_table_create, bfinfdpic_relocs_info_hash,
+       bfinfdpic_relocs_info_eq, bfinfdpics_relocs_info_find,
+       bfinfdpic_relocs_info_for_global, bfinfdpic_relocs_info_for_local,
+       bfinfdpic_pic_merge_early_relocs_info, _bfinfdpic_add_dyn_reloc,
+       _bfinfdpic_add_rofixup, _bfinfdpic_osec_to_segment,
+       _bfinfdpic_osec_readonly_p, bfinfdpic_relocate_section,
+       bfinfdpic_check_relocs, bfinfdpic_gc_sweep_hook,
+       _bfinfdpic_link_omit_section_dynsym, _bfin_create_got_section,
+       elf32_bfinfdpic_create_dynamic_sections, _bfinfdpic_get_fd_entry,
+       _bfinfdpic_compute_got_alloc_data, _bfinfdpic_get_got_entry,
+       _bfinfdpic_assign_got_entries, _bfinfdpic_assign_plt_entries,
+       _bfinfdpic_resolve_final_relocs_info,
+       elf32_bfinfdpic_size_dynamic_sections,
+       elf32_bfinfdpic_always_size_sections,
+       elf32_bfinfdpic_modify_segment_map,
+       _bfinfdpic_count_got_plt_entries,
+       elf32_bfinfdpic_finish_dynamic_sections,
+       elf32_bfinfdpic_adjust_dynamic_symbol,
+       elf32_bfinfdpic_finish_dynamic_symbol,
+       elf32_bfinfdpic_elf_use_relative_eh_frame,
+       elf32_bfinfdpic_elf_encode_eh_address,
+       elf32_bfin_object_p, bfin_elf_copy_private_bfd_data,
+       elf32_bfinfdpic_copy_private_bfd_data,
+       (struct _bfinfdpic_dynamic_got_info,
+       struct _bfinfdpic_dynamic_got_plt_info): New structs.
+       (elf32_bfin_print_private_bfd_data): Print PIC flags.
+       (elf32_bfin_merge_private_bfd_data): Extend to support FD-PIC.
+       (TARGET_LITTLE_SYM, TARGET_LITTLE_NAME, elf32_bed,
+       elf_backend_got_header_size, bfd_elf32_bfd_link_hash_table_create,
+       elf_backend_always_size_sectinos, elf_backend_modify_segment_map,
+       bfd_elf32_bfd_copy_private_bfd_data,
+       elf_backend_create_dynamic_sections, elf_backend_adjust_dynamic_symbol,
+       elf_backend_size_dynamic_sections, elf_backend_finish_dynamic_symbol,
+       elf_backend_finish_dynamic_sections, elf_backend_relocate_section,
+       elf_backend_can_make_relative_eh_frame, elf_backend_check_relocs,
+       elf_backend_can_make_ldsa_relative_eh_frame, elf_backend_may_use_rel_p,
+       elf_backend_may_use_rela_p, elf_backend_default_use_rela_p,
+       elf_backend_omit_section_dynsym): Redefine these macros and include
+       "elf32-target.h" again to create the elf32-bfinfdpic target.
+       * reloc.c (BFD_RELOC_BFIN_GOT17M4, BFD_RELOC_BFIN_GOTHI,
+       BFD_RELOC_BFIN_GOTLO, BFD_RELOC_BFIN_FUNCDESC,
+       BFD_RELOC_BFIN_FUNCDESC_GOT17M4, BFD_RELOC_BFIN_FUNCDESC_GOTHI,
+       BFD_RELOC_BFIN_FUNCDESC_GOTLO, BFD_RELOC_BFIN_FUNCDESC_VALUE,
+       BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4, BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
+       BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO, BFD_RELOC_BFIN_GOTOFFHI,
+       BFD_RELOC_BFIN_GOTOFFLO): New.
+       * targets.c (bfd_elf32_bfinfdpic_vec): New bfd_target.
+       (_bfd_target_vector): Add it.
+       * bfd-in2.h: Regenerate.
+       * libbfd.h: Regenerate.
+
+2006-03-25  Richard Sandiford  <richard@codesourcery.com>
+
+       * cpu-m68k.c (bfd_m68k_compatible): Treat ISA A+ and ISA B code as
+       incompatible.  Likewise MAC and EMAC code.
+       * elf32-m68k.c (elf32_m68k_merge_private_bfd_data): Use
+       bfd_get_compatible to set the new bfd architecture.  Rely on it
+       to detect incompatibilities.
+
+2006-03-22  Bob Wilson  <bob.wilson@acm.org>
+
+       * elf32-xtensa.c (xtensa_read_table_entries): Remove assertion that
+       rel->r_addend is zero.
+
+2006-03-22  Richard Sandiford  <richard@codesourcery.com>
+
+       * elfxx-mips.c (_bfd_mips_vxworks_finish_dynamic_symbol): Fix type
+       of "loc".
+
+2006-03-22  Richard Sandiford  <richard@codesourcery.com>
+           Daniel Jacobowitz  <dan@codesourcery.com>
+           Phil Edwards  <phil@codesourcery.com>
+           Zack Weinberg  <zack@codesourcery.com>
+           Mark Mitchell  <mark@codesourcery.com>
+           Nathan Sidwell  <nathan@codesourcery.com>
+
+       * bfd-in2.h: Regenerate.
+       * config.bfd (mips*-*-vxworks*, mips*el-*-vxworks*): New stanzas.
+       * configure.in (bfd_elf32_bigmips_vxworks_vec): New stanza.
+       (bfd_elf32_littlemips_vxworks_vec): Likewise.
+       (bfd_elf32_bigmips_vec): Add elf-vxworks.lo.
+       (bfd_elf32_littlemips_vec): Likewise.
+       (bfd_elf32_nbigmips_vec): Likewise.
+       (bfd_elf32_nlittlemips_vec): Likewise.
+       (bfd_elf32_ntradbigmips_vec): Likewise.
+       (bfd_elf32_ntradlittlemips_vec): Likewise.
+       (bfd_elf32_tradbigmips_vec): Likewise.
+       (bfd_elf32_tradlittlemips_vec): Likewise.
+       (bfd_elf64_bigmips_vec): Likewise.
+       (bfd_elf64_littlemips_vec): Likewise.
+       (bfd_elf64_tradbigmips_vec): Likewise.
+       (bfd_elf64_tradlittlemips_vec): Likewise.
+       * elf32-mips.c: Include elf-vxworks.h.
+       (mips_info_to_howto_rel): Use elf_backend_mips_rtype_to_howto
+       instead of calling mips_elf32_rtype_to_howto directly.
+       (mips_vxworks_copy_howto_rela): New reloc howto.
+       (mips_vxworks_jump_slot_howto_rela): Likewise.
+       (mips_vxworks_bfd_reloc_type_lookup): New function.
+       (mips_vxworks_rtype_to_howto): Likewise.
+       (mips_vxworks_final_write_processing): Likewise.
+       (TARGET_LITTLE_SYM, TARGET_LITTLE_NAME): Override for VxWorks.
+       (TARGET_BIG_SYM, TARGET_BIG_NAME, elf_bed, ELF_MAXPAGESIZE): Likewise.
+       (elf_backend_want_got_plt): Likewise.
+       (elf_backend_want_plt_sym): Likewise.
+       (elf_backend_got_symbol_offset): Likewise.
+       (elf_backend_want_dynbss): Likewise.
+       (elf_backend_may_use_rel_p): Likewise.
+       (elf_backend_may_use_rela_p): Likewise.
+       (elf_backend_default_use_rela_p): Likewise.
+       (elf_backend_got_header_size: Likewise.
+       (elf_backend_plt_readonly): Likewise.
+       (bfd_elf32_bfd_reloc_type_lookup): Likewise.
+       (elf_backend_mips_rtype_to_howto): Likewise.
+       (elf_backend_adjust_dynamic_symbol): Likewise.
+       (elf_backend_finish_dynamic_symbol): Likewise.
+       (bfd_elf32_bfd_link_hash_table_create): Likewise.
+       (elf_backend_add_symbol_hook): Likewise.
+       (elf_backend_link_output_symbol_hook): Likewise.
+       (elf_backend_emit_relocs): Likewise.
+       (elf_backend_final_write_processing: Likewise.
+       (elf_backend_additional_program_headers): Likewise.
+       (elf_backend_modify_segment_map): Likewise.
+       (elf_backend_symbol_processing): Likewise.
+       * elfxx-mips.c: Include elf-vxworks.h.
+       (mips_elf_link_hash_entry): Add is_relocation_target and
+       is_branch_target fields.
+       (mips_elf_link_hash_table): Add is_vxworks, srelbss, sdynbss, srelplt,
+       srelplt2, sgotplt, splt, plt_header_size and plt_entry_size fields.
+       (MIPS_ELF_RELA_SIZE, MIPS_ELF_REL_DYN_NAME): New macros.
+       (MIPS_RESERVED_GOTNO): Take a mips_elf_link_hash_table argument.
+       Return 3 for VxWorks.
+       (ELF_MIPS_GP_OFFSET): Change the argument from a bfd to a
+       mips_elf_link_hash_table.  Return 0 for VxWorks.
+       (MIPS_ELF_GOT_MAX_SIZE): Change the argument from a bfd to a
+       mips_elf_link_hash_table.  Update the call to ELF_MIPS_GP_OFFSET.
+       (mips_vxworks_exec_plt0_entry): New variable.
+       (mips_vxworks_exec_plt_entry): Likewise.
+       (mips_vxworks_shared_plt0_entry): Likewise.
+       (mips_vxworks_shared_plt_entry): Likewise.
+       (mips_elf_link_hash_newfunc): Initialize the new hash_entry fields.
+       (mips_elf_rel_dyn_section): Change the bfd argument to a
+       mips_elf_link_hash_table.  Use MIPS_ELF_REL_DYN_NAME to get
+       the name of the section.
+       (mips_elf_initialize_tls_slots): Update the call to
+       mips_elf_rel_dyn_section.
+       (mips_elf_gotplt_index): New function.
+       (mips_elf_local_got_index): Add an input_section argument.
+       Update the call to mips_elf_create_local_got_entry.
+       (mips_elf_got_page): Likewise.
+       (mips_elf_got16_entry): Likewise.
+       (mips_elf_create_local_got_entry): Add bfd_link_info and input_section
+       arguments.  Create dynamic relocations for each entry on VxWorks.
+       (mips_elf_merge_gots): Update the use of MIPS_ELF_GOT_MAX_SIZE.
+       (mips_elf_multi_got): Update the uses of MIPS_ELF_GOT_MAX_SIZE
+       and MIPS_RESERVED_GOTNO.
+       (mips_elf_create_got_section): Update the uses of
+       MIPS_ELF_GOT_MAX_SIZE.  Create .got.plt on VxWorks.
+       (is_gott_symbol): New function.
+       (mips_elf_calculate_relocation): Use a dynobj local variable.
+       Update the calls to mips_elf_local_got_index, mips_elf_got16_entry and
+       mips_elf_got_page_entry.  Set G to the .got.plt entry when calculating
+       VxWorks R_MIPS_CALL* relocations.  Calculate and use G for all GOT
+       relocations on VxWorks.  Add dynamic relocations for references
+       to the VxWorks __GOTT_BASE__ and __GOTT_INDEX__ symbols.  Don't
+       create dynamic relocations for R_MIPS_32, R_MIPS_REL32 or R_MIPS_64
+       in VxWorks executables.
+       (mips_elf_allocate_dynamic_relocations): Add a bfd_link_info argument.
+       Use MIPS_ELF_RELA_SIZE to calculate the size of a VxWorks entry.
+       Don't allocate a null entry on VxWorks.
+       (mips_elf_create_dynamic_relocation): Update the call to
+       mips_elf_rel_dyn_section.  Use absolute rather than relative
+       relocations for VxWorks, and make them RELA rather than REL.
+       (_bfd_mips_elf_create_dynamic_sections): Don't make .dynamic
+       read-only on VxWorks.  Update the call to mips_elf_rel_dyn_section.
+       Create the .plt, .rela.plt, .dynbss and .rela.bss sections on
+       VxWorks.  Likewise create the _PROCEDURE_LINKAGE_TABLE symbol.
+       Call elf_vxworks_create_dynamic_sections for VxWorks and
+       initialize the plt_header_size and plt_entry_size fields.
+       (_bfd_mips_elf_check_relocs): Don't allow GOT relocations to be
+       used in VxWorks executables.  Don't allocate dynamic relocations
+       for R_MIPS_32, R_MIPS_REL32 or R_MIPS_64 in VxWorks executables.
+       Set is_relocation_target for each symbol referenced by a relocation.
+       Allocate .rela.dyn entries for relocations against the special
+       VxWorks __GOTT_BASE__ and __GOTT_INDEX__ symbols.  Create GOT
+       entries for all VxWorks R_MIPS_GOT16 relocations.  Don't allocate
+       a global GOT entry for symbols mentioned in VxWorks R_MIPS_CALL*,
+       R_MIPS_32, R_MIPS_REL32 or R_MIPS_64 relocations.  Update the calls
+       to mips_elf_rel_dyn_section and mips_elf_allocate_dynamic_relocations.
+       Set is_branch_target for symbols mentioned in R_MIPS_PC16 or R_MIPS_26
+       relocations.  Don't set no_fn_stub on VxWorks.
+       (_bfd_mips_elf_adjust_dynamic_symbol): Update the call to
+       mips_elf_allocate_dynamic_relocations.
+       (_bfd_mips_vxworks_adjust_dynamic_symbol): New function.
+       (_bfd_mips_elf_always_size_sections): Do not allocate GOT page
+       entries for VxWorks, and do not create multiple GOTs.
+       (_bfd_mips_elf_size_dynamic_sections): Use MIPS_ELF_REL_DYN_NAME.
+       Handle .got specially for VxWorks.  Update the uses of
+       MIPS_RESERVED_GOTNO and mips_elf_allocate_dynamic_relocations.
+       Check for sgotplt and splt.  Allocate the .rel(a).dyn contents last,
+       once its final size is known.  Set DF_TEXTREL for VxWorks.  Add
+       DT_RELA, DT_RELASZ, DT_RELAENT, DT_PLTREL, DT_PLTRELSZ and DT_JMPREL
+       tags on VxWorks.  Do not add the MIPS-specific tags for VxWorks.
+       (_bfd_mips_vxworks_finish_dynamic_symbol): New function.
+       (mips_vxworks_finish_exec_plt): Likewise.
+       (mips_vxworks_finish_shared_plt): Likewise.
+       (_bfd_mips_elf_finish_dynamic_sections): Remove an unncessary call
+       to mips_elf_rel_dyn_section.  Use a VxWorks-specific value of
+       DT_PLTGOT.  Handle DT_RELA, DT_RELASZ, DT_RELAENT, DT_PLTREL,
+       DT_PLTRELSZ and DT_JMPREL.  Update the uses of MIPS_RESERVED_GOTNO
+       and mips_elf_rel_dyn_section.  Use a different GOT header for
+       VxWorks.  Don't sort .rela.dyn on VxWorks.  Finish the PLT on VxWorks.
+       (_bfd_mips_elf_link_hash_table_create): Initialize the new
+       mips_elf_link_hash_table fields.
+       (_bfd_mips_vxworks_link_hash_table_create): New function.
+       (_bfd_mips_elf_final_link): Set the GP value to _GLOBAL_OFFSET_TABLE_
+       on VxWorks.  Update the call to ELF_MIPS_GP_OFFSET.
+       * elfxx-mips.h (_bfd_mips_vxworks_adjust_dynamic_symbol): Declare.
+       (_bfd_mips_vxworks_finish_dynamic_symbol): Likewise.
+       (_bfd_mips_vxworks_link_hash_table_create): Likewise.
+       * libbfd.h: Regenerate.
+       * Makefile.am (elfxx-mips.lo): Depend on elf-vxworks.h.
+       (elf32-mips.lo): Likewise.
+       * Makefile.in: Regenerate.
+       * reloc.c (BFD_RELOC_MIPS_COPY, BFD_RELOC_MIPS_JUMP_SLOT): Declare.
+       * targets.c (bfd_elf32_bigmips_vxworks_vec): Declare.
+       (bfd_elf32_littlemips_vxworks_vec): Likewise.
+       (_bfd_target_vector): Add entries for them.
+
 2006-03-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
 
        * elf64-hppa.c (elf64_hppa_special_sections): Change flags for .tbss
index e4538ed..9fc84d0 100644 (file)
@@ -3,7 +3,7 @@
 AUTOMAKE_OPTIONS = 1.9 cygnus
 
 # Uncomment the following line when doing a release.
-RELEASE=y
+RELEASE=y
 
 INCDIR = $(srcdir)/../include
 CSEARCH = -I. -I$(srcdir) -I$(INCDIR)
@@ -1386,14 +1386,14 @@ elfxx-mips.lo: elfxx-mips.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
   $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
   elfxx-mips.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \
   $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
-  $(INCDIR)/coff/mips.h $(INCDIR)/coff/external.h
+  $(INCDIR)/coff/mips.h $(INCDIR)/coff/external.h elf-vxworks.h
 elf32-mips.lo: elf32-mips.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
   $(INCDIR)/bfdlink.h genlink.h elf-bfd.h $(INCDIR)/elf/common.h \
   $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elfxx-mips.h \
   $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/sym.h \
   $(INCDIR)/coff/symconst.h $(INCDIR)/coff/internal.h \
   $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/mips.h $(INCDIR)/coff/external.h \
-  ecoffswap.h elf32-target.h
+  ecoffswap.h elf32-target.h elf-vxworks.h
 elf32-mt.lo: elf32-mt.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
   elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
   $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/mt.h \
@@ -1452,12 +1452,12 @@ elfxx-sparc.lo: elfxx-sparc.c $(INCDIR)/filenames.h \
   $(INCDIR)/bfdlink.h $(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
   $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/sparc.h \
   $(INCDIR)/elf/reloc-macros.h $(INCDIR)/opcode/sparc.h \
-  elfxx-sparc.h
+  elfxx-sparc.h elf-vxworks.h
 elf32-sparc.lo: elf32-sparc.c $(INCDIR)/filenames.h \
   $(INCDIR)/bfdlink.h $(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
   $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/sparc.h \
   $(INCDIR)/elf/reloc-macros.h $(INCDIR)/opcode/sparc.h \
-  elfxx-sparc.h elf32-target.h
+  elfxx-sparc.h elf32-target.h elf-vxworks.h
 elf32-v850.lo: elf32-v850.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
   $(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
   $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/v850.h \
index fdd766d..5bbf294 100644 (file)
@@ -254,7 +254,7 @@ wordsize = @wordsize@
 AUTOMAKE_OPTIONS = 1.9 cygnus
 
 # Uncomment the following line when doing a release.
-RELEASE=y
+RELEASE=y
 INCDIR = $(srcdir)/../include
 CSEARCH = -I. -I$(srcdir) -I$(INCDIR)
 MKDEP = gcc -MM
@@ -1952,14 +1952,14 @@ elfxx-mips.lo: elfxx-mips.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
   $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
   elfxx-mips.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \
   $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
-  $(INCDIR)/coff/mips.h $(INCDIR)/coff/external.h
+  $(INCDIR)/coff/mips.h $(INCDIR)/coff/external.h elf-vxworks.h
 elf32-mips.lo: elf32-mips.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
   $(INCDIR)/bfdlink.h genlink.h elf-bfd.h $(INCDIR)/elf/common.h \
   $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elfxx-mips.h \
   $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/sym.h \
   $(INCDIR)/coff/symconst.h $(INCDIR)/coff/internal.h \
   $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/mips.h $(INCDIR)/coff/external.h \
-  ecoffswap.h elf32-target.h
+  ecoffswap.h elf32-target.h elf-vxworks.h
 elf32-mt.lo: elf32-mt.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
   elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
   $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/mt.h \
@@ -2018,12 +2018,12 @@ elfxx-sparc.lo: elfxx-sparc.c $(INCDIR)/filenames.h \
   $(INCDIR)/bfdlink.h $(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
   $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/sparc.h \
   $(INCDIR)/elf/reloc-macros.h $(INCDIR)/opcode/sparc.h \
-  elfxx-sparc.h
+  elfxx-sparc.h elf-vxworks.h
 elf32-sparc.lo: elf32-sparc.c $(INCDIR)/filenames.h \
   $(INCDIR)/bfdlink.h $(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
   $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/sparc.h \
   $(INCDIR)/elf/reloc-macros.h $(INCDIR)/opcode/sparc.h \
-  elfxx-sparc.h elf32-target.h
+  elfxx-sparc.h elf32-target.h elf-vxworks.h
 elf32-v850.lo: elf32-v850.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
   $(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h \
   $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/v850.h \
index cff7b3c..cba4fbb 100644 (file)
@@ -1,6 +1,6 @@
 /* A.out "format 1" file handling code for BFD.
    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000,
-   2001, 2002, 2003, 2004, 2005
+   2001, 2002, 2003, 2004, 2005, 2006
    Free Software Foundation, Inc.
    Written by Cygnus Support.
 
@@ -286,7 +286,7 @@ struct external_sparc_core
   int c_magic;                         /* Corefile magic number.  */
   int c_len;                           /* Sizeof (struct core).  */
 #define        SPARC_CORE_LEN  432
-  int c_regs[19];                      /* General purpose registers -- MACHDEP SIZE.  */
+  struct regs c_regs;                  /* General purpose registers -- MACHDEP SIZE.  */
   struct external_exec c_aouthdr;      /* A.out header.  */
   int c_signo;                         /* Killing signal, if any.  */
   int c_tsize;                         /* Text size (bytes).  */
@@ -309,7 +309,7 @@ struct external_solaris_bcp_core
   int c_magic;                         /* Corefile magic number.  */
   int c_len;                           /* Sizeof (struct core).  */
 #define        SOLARIS_BCP_CORE_LEN    456
-  int c_regs[19];                      /* General purpose registers -- MACHDEP SIZE.  */
+  struct regs c_regs;                  /* General purpose registers -- MACHDEP SIZE.  */
   int c_exdata_vp;                     /* Exdata structure.  */
   int c_exdata_tsize;
   int c_exdata_dsize;
@@ -387,7 +387,7 @@ swapcore_sun3 (bfd *abfd, char *ext, struct internal_sunos_core *intcore)
 
   intcore->c_magic = H_GET_32 (abfd, &extcore->c_magic);
   intcore->c_len = H_GET_32 (abfd, &extcore->c_len);
-  intcore->c_regs_pos = (long) (((struct external_sun3_core *) 0)->c_regs);
+  intcore->c_regs_pos = offsetof (struct external_sun3_core, c_regs);
   intcore->c_regs_size = sizeof (extcore->c_regs);
 #if ARCH_SIZE == 64
   aout_64_swap_exec_header_in
@@ -401,10 +401,10 @@ swapcore_sun3 (bfd *abfd, char *ext, struct internal_sunos_core *intcore)
   intcore->c_data_addr = N_DATADDR (intcore->c_aouthdr);
   intcore->c_ssize = H_GET_32 (abfd, &extcore->c_ssize);
   memcpy (intcore->c_cmdname, extcore->c_cmdname, sizeof (intcore->c_cmdname));
-  intcore->fp_stuff_pos = (long) (((struct external_sun3_core *) 0)->fp_stuff);
+  intcore->fp_stuff_pos = offsetof (struct external_sun3_core, fp_stuff);
   /* FP stuff takes up whole rest of struct, except c_ucode.  */
   intcore->fp_stuff_size = intcore->c_len - (sizeof extcore->c_ucode) -
-    (file_ptr) (((struct external_sun3_core *) 0)->fp_stuff);
+    offsetof (struct external_sun3_core, fp_stuff);
   /* Ucode is the last thing in the struct -- just before the end.  */
   intcore->c_ucode = H_GET_32 (abfd,
                               (intcore->c_len
@@ -422,7 +422,7 @@ swapcore_sparc (bfd *abfd, char *ext, struct internal_sunos_core *intcore)
 
   intcore->c_magic = H_GET_32 (abfd, &extcore->c_magic);
   intcore->c_len = H_GET_32 (abfd, &extcore->c_len);
-  intcore->c_regs_pos = (long) (((struct external_sparc_core *) 0)->c_regs);
+  intcore->c_regs_pos = offsetof (struct external_sparc_core, c_regs);
   intcore->c_regs_size = sizeof (extcore->c_regs);
 #if ARCH_SIZE == 64
   aout_64_swap_exec_header_in
@@ -436,10 +436,10 @@ swapcore_sparc (bfd *abfd, char *ext, struct internal_sunos_core *intcore)
   intcore->c_data_addr = N_DATADDR (intcore->c_aouthdr);
   intcore->c_ssize = H_GET_32 (abfd, &extcore->c_ssize);
   memcpy (intcore->c_cmdname, extcore->c_cmdname, sizeof (intcore->c_cmdname));
-  intcore->fp_stuff_pos = (long) (((struct external_sparc_core *) 0)->fp_stuff);
+  intcore->fp_stuff_pos = offsetof (struct external_sparc_core, fp_stuff);
   /* FP stuff takes up whole rest of struct, except c_ucode.  */
   intcore->fp_stuff_size = intcore->c_len - (sizeof extcore->c_ucode) -
-    (file_ptr) (((struct external_sparc_core *) 0)->fp_stuff);
+    offsetof (struct external_sparc_core, fp_stuff);
   /* Ucode is the last thing in the struct -- just before the end.  */
   intcore->c_ucode = H_GET_32 (abfd,
                               (intcore->c_len
@@ -462,7 +462,7 @@ swapcore_sparc (bfd *abfd, char *ext, struct internal_sunos_core *intcore)
 #define SPARC_USRSTACK_SPARC2 ((bfd_vma)0xf8000000)
 #define SPARC_USRSTACK_SPARC10 ((bfd_vma)0xf0000000)
   {
-    bfd_vma sp = H_GET_32 (abfd, &((struct regs *) &extcore->c_regs[0])->r_o6);
+    bfd_vma sp = H_GET_32 (abfd, &extcore->c_regs.r_o6);
     if (sp < SPARC_USRSTACK_SPARC10)
       intcore->c_stacktop = SPARC_USRSTACK_SPARC10;
     else
@@ -480,7 +480,7 @@ swapcore_solaris_bcp (bfd *abfd, char *ext, struct internal_sunos_core *intcore)
 
   intcore->c_magic = H_GET_32 (abfd, &extcore->c_magic);
   intcore->c_len = H_GET_32 (abfd, &extcore->c_len);
-  intcore->c_regs_pos = (long) (((struct external_solaris_bcp_core *) 0)->c_regs);
+  intcore->c_regs_pos = offsetof (struct external_solaris_bcp_core, c_regs);
   intcore->c_regs_size = sizeof (extcore->c_regs);
 
   /* The Solaris BCP exdata structure does not contain an a_syms field,
@@ -501,10 +501,10 @@ swapcore_solaris_bcp (bfd *abfd, char *ext, struct internal_sunos_core *intcore)
   intcore->c_ssize = H_GET_32 (abfd, &extcore->c_ssize);
   memcpy (intcore->c_cmdname, extcore->c_cmdname, sizeof (intcore->c_cmdname));
   intcore->fp_stuff_pos =
-    (long) (((struct external_solaris_bcp_core *) 0)->fp_stuff);
+    offsetof (struct external_solaris_bcp_core, fp_stuff);
   /* FP stuff takes up whole rest of struct, except c_ucode.  */
   intcore->fp_stuff_size = intcore->c_len - (sizeof extcore->c_ucode) -
-    (file_ptr) (((struct external_solaris_bcp_core *) 0)->fp_stuff);
+    offsetof (struct external_solaris_bcp_core, fp_stuff);
   /* Ucode is the last thing in the struct -- just before the end */
   intcore->c_ucode = H_GET_32 (abfd,
                               (intcore->c_len
@@ -527,7 +527,7 @@ swapcore_solaris_bcp (bfd *abfd, char *ext, struct internal_sunos_core *intcore)
 #define SPARC_USRSTACK_SPARC2 ((bfd_vma)0xf8000000)
 #define SPARC_USRSTACK_SPARC10 ((bfd_vma)0xf0000000)
   {
-    bfd_vma sp = H_GET_32 (abfd, &((struct regs *) &extcore->c_regs[0])->r_o6);
+    bfd_vma sp = H_GET_32 (abfd, &extcore->c_regs.r_o6);
     if (sp < SPARC_USRSTACK_SPARC10)
       intcore->c_stacktop = SPARC_USRSTACK_SPARC10;
     else
index 5560fed..bbea0fa 100644 (file)
@@ -2592,6 +2592,11 @@ to compensate for the borrow when the low bits are added.  */
   BFD_RELOC_MIPS_TLS_TPREL_LO16,
 
 
+/* MIPS ELF relocations (VxWorks extensions).  */
+  BFD_RELOC_MIPS_COPY,
+  BFD_RELOC_MIPS_JUMP_SLOT,
+
+
 /* Fujitsu Frv Relocations.  */
   BFD_RELOC_FRV_LABEL16,
   BFD_RELOC_FRV_LABEL24,
@@ -2706,6 +2711,11 @@ in the instruction.  */
   BFD_RELOC_X86_64_TPOFF32,
   BFD_RELOC_X86_64_GOTOFF64,
   BFD_RELOC_X86_64_GOTPC32,
+  BFD_RELOC_X86_64_GOT64,
+  BFD_RELOC_X86_64_GOTPCREL64,
+  BFD_RELOC_X86_64_GOTPC64,
+  BFD_RELOC_X86_64_GOTPLT64,
+  BFD_RELOC_X86_64_PLTOFF64,
   BFD_RELOC_X86_64_GOTPC32_TLSDESC,
   BFD_RELOC_X86_64_TLSDESC_CALL,
   BFD_RELOC_X86_64_TLSDESC,
@@ -3120,6 +3130,22 @@ through 0.  */
 /* ADI Blackfin Long Jump pcrel.  */
   BFD_RELOC_BFIN_24_PCREL_JUMP_L,
 
+/* ADI Blackfin FD-PIC relocations.  */
+  BFD_RELOC_BFIN_GOT17M4,
+  BFD_RELOC_BFIN_GOTHI,
+  BFD_RELOC_BFIN_GOTLO,
+  BFD_RELOC_BFIN_FUNCDESC,
+  BFD_RELOC_BFIN_FUNCDESC_GOT17M4,
+  BFD_RELOC_BFIN_FUNCDESC_GOTHI,
+  BFD_RELOC_BFIN_FUNCDESC_GOTLO,
+  BFD_RELOC_BFIN_FUNCDESC_VALUE,
+  BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4,
+  BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
+  BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO,
+  BFD_RELOC_BFIN_GOTOFF17M4,
+  BFD_RELOC_BFIN_GOTOFFHI,
+  BFD_RELOC_BFIN_GOTOFFLO,
+
 /* ADI Blackfin GOT relocation.  */
   BFD_RELOC_BFIN_GOT,
 
index 220edf8..951587f 100644 (file)
@@ -1,5 +1,5 @@
 /* BFD back-end for IBM RS/6000 "XCOFF" files.
-   Copyright 1990-1999, 2000, 2001, 2002, 2003, 2004, 2005
+   Copyright 1990-1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
    Free Software Foundation, Inc.
    FIXME: Can someone provide a transliteration of this name into ASCII?
    Using the following chars caused a compiler warning on HIUX (so I replaced
@@ -2083,7 +2083,7 @@ xcoff_write_archive_contents_old (abfd)
   char decbuf[XCOFFARMAG_ELEMENT_SIZE + 1];
 
   memset (&fhdr, 0, sizeof fhdr);
-  strncpy (fhdr.magic, XCOFFARMAG, SXCOFFARMAG);
+  (void) strncpy (fhdr.magic, XCOFFARMAG, SXCOFFARMAG);
   sprintf (fhdr.firstmemoff, "%d", SIZEOF_AR_FILE_HDR);
   sprintf (fhdr.freeoff, "%d", 0);
 
index b820a15..a07d77f 100644 (file)
@@ -313,7 +313,8 @@ case "${targ}" in
 
   bfin-*-*)
     targ_defvec=bfd_elf32_bfin_vec
-    tar_underscore=yes
+    targ_selvecs=bfd_elf32_bfinfdpic_vec
+    targ_underscore=yes
     ;;
 
   c30-*-*aout* | tic30-*-*aout*)
@@ -868,6 +869,16 @@ case "${targ}" in
     targ_defvec=ecoff_big_vec
     targ_selvecs=ecoff_little_vec
     ;;
+#ifdef BFD64
+  mips*el-*-vxworks*)
+    targ_defvec=bfd_elf32_littlemips_vxworks_vec
+    targ_selvecs="bfd_elf32_littlemips_vec bfd_elf32_bigmips_vxworks_vec bfd_elf32_bigmips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec"
+    ;;
+  mips*-*-vxworks*)
+    targ_defvec=bfd_elf32_bigmips_vxworks_vec
+    targ_selvecs="bfd_elf32_bigmips_vec bfd_elf32_littlemips_vxworks_vec bfd_elf32_bigmips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec"
+    ;;
+#endif
   mips*el-*-elf* | mips*el-*-vxworks* | mips*-*-chorus*)
     targ_defvec=bfd_elf32_littlemips_vec
     targ_selvecs="bfd_elf32_bigmips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec"
@@ -1281,6 +1292,10 @@ case "${targ}" in
   sparc-*-sysv4*)
     targ_defvec=bfd_elf32_sparc_vec
     ;;
+  sparc-*-vxworks*)
+    targ_defvec=bfd_elf32_sparc_vxworks_vec
+    targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec"
+    ;;
   sparc-*-netware*)
     targ_defvec=bfd_elf32_sparc_vec
     targ_selvecs="nlm32_sparc_vec sunos_big_vec"
index 9208302..203ecfa 100755 (executable)
@@ -309,7 +309,7 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE AR ac_ct_AR RANLIB ac_ct_RANLIB LN_S LIBTOOL VERSUFFIX REPORT_BUGS_TO WARN_CFLAGS NO_WERROR MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT INSTALL_LIBBFD_TRUE INSTALL_LIBBFD_FALSE host_noncanonical target_noncanonical bfdlibdir bfdincludedir CPP EGREP ALLOCA USE_NLS MSGFMT GMSGFMT XGETTEXT USE_INCLUDED_LIBINTL CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLDEPS INTLLIBS INTLOBJS POFILES POSUB INCLUDE_LOCALE_H GT_NO GT_YES MKINSTALLDIRS l HDEFINES BFD_HOST_64BIT_LONG BFD_HOST_LONG_LONG BFD_HOST_64_BIT_DEFINED BFD_HOST_64_BIT BFD_HOST_U_64_BIT CC_FOR_BUILD EXEEXT_FOR_BUILD COREFILE COREFLAG WIN32LDFLAGS WIN32LIBADD TDEFINES wordsize bfd_libs all_backends bfd_backends bfd_machines bfd_default_target_size bfd_file_ptr bfd_ufile_ptr tdefaults datarootdir docdir htmldir LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE AR ac_ct_AR RANLIB ac_ct_RANLIB LN_S LIBTOOL VERSUFFIX WARN_CFLAGS NO_WERROR MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT INSTALL_LIBBFD_TRUE INSTALL_LIBBFD_FALSE host_noncanonical target_noncanonical bfdlibdir bfdincludedir CPP EGREP ALLOCA USE_NLS MSGFMT GMSGFMT XGETTEXT USE_INCLUDED_LIBINTL CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLDEPS INTLLIBS INTLOBJS POFILES POSUB INCLUDE_LOCALE_H GT_NO GT_YES MKINSTALLDIRS l HDEFINES BFD_HOST_64BIT_LONG BFD_HOST_LONG_LONG BFD_HOST_64_BIT_DEFINED BFD_HOST_64_BIT BFD_HOST_U_64_BIT CC_FOR_BUILD EXEEXT_FOR_BUILD COREFILE COREFLAG WIN32LDFLAGS WIN32LIBADD TDEFINES wordsize bfd_libs all_backends bfd_backends bfd_machines bfd_default_target_size bfd_file_ptr bfd_ufile_ptr tdefaults datarootdir docdir htmldir LIBOBJS LTLIBOBJS'
 ac_subst_files=''
 
 # Initialize some variables set by options.
@@ -874,7 +874,6 @@ Optional Packages:
   --with-pic              try to use only PIC/non-PIC objects default=use both
   --with-mmap             try using mmap for BFD input files if available
   --with-versuffix=SFX    Append SFX to the version string
-  --with-bugurl=URL       Direct users to URL to report a bug
   --with-included-gettext use the GNU gettext library included here
 
 Some influential environment variables:
@@ -2838,7 +2837,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE=bfd
- VERSION=2.16.91
+ VERSION=2.17
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4034,7 +4033,7 @@ test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic"
 case $host in
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 4037 "configure"' > conftest.$ac_ext
+  echo '#line 4036 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -4407,24 +4406,6 @@ else
 fi;
 
 
-# The location to which bugs should be reported.
-
-# Check whether --with-bugurl or --without-bugurl was given.
-if test "${with_bugurl+set}" = set; then
-  withval="$with_bugurl"
-  case "$withval" in
-    yes) { { echo "$as_me:$LINENO: error: bug URL not specified" >&5
-echo "$as_me: error: bug URL not specified" >&2;}
-   { (exit 1); exit 1; }; } ;;
-    no)  REPORT_BUGS_TO="" ;;
-    *)   REPORT_BUGS_TO="<URL:$withval>" ;;
-   esac
-else
-  REPORT_BUGS_TO=""
-
-fi;
-
-
 
 GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes"
 
@@ -13110,6 +13091,7 @@ do
     bfd_elf32_am33lin_vec)     tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
     bfd_elf32_avr_vec)         tb="$tb elf32-avr.lo elf32.lo $elf" ;;
     bfd_elf32_bfin_vec)                tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
+    bfd_elf32_bfinfdpic_vec)   tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
     bfd_elf32_big_generic_vec)         tb="$tb elf32-gen.lo elf32.lo $elf" ;;
     bfd_elf32_bigarc_vec)      tb="$tb elf32-arc.lo elf32.lo $elf" ;;
     bfd_elf32_bigarm_vec)      tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
@@ -13117,7 +13099,9 @@ do
                                 tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
     bfd_elf32_bigarm_vxworks_vec)
                                 tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
-    bfd_elf32_bigmips_vec)     tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;;
+    bfd_elf32_bigmips_vec)     tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
+    bfd_elf32_bigmips_vxworks_vec)
+                               tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
     bfd_elf32_cr16c_vec)       tb="$tb elf32-cr16c.lo elf32.lo $elf" ;;
     bfd_elf32_cris_vec)                tb="$tb elf32-cris.lo elf32.lo $elf" ;;
     bfd_elf32_crx_vec)          tb="$tb elf32-crx.lo elf32.lo $elf" ;;
@@ -13149,7 +13133,9 @@ do
     bfd_elf32_littlearm_vxworks_vec)
                                 tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
     bfd_elf32_littlearm_vec)   tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
-    bfd_elf32_littlemips_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;;
+    bfd_elf32_littlemips_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
+    bfd_elf32_littlemips_vxworks_vec)
+                               tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
     bfd_elf32_m32c_vec)         tb="$tb elf32-m32c.lo elf32.lo $elf" ;;
     bfd_elf32_m32r_vec)                tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
     bfd_elf32_m32rle_vec)       tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
     bfd_elf32_mn10300_vec)     tb="$tb elf-m10300.lo elf32.lo $elf" ;;
     bfd_elf32_mt_vec)           tb="$tb elf32-mt.lo elf32.lo $elf" ;;
     bfd_elf32_msp430_vec)      tb="$tb elf32-msp430.lo elf32.lo $elf" ;;
-    bfd_elf32_nbigmips_vec)    tb="$tb elfn32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    bfd_elf32_nlittlemips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    bfd_elf32_ntradbigmips_vec)        tb="$tb elfn32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    bfd_elf32_ntradlittlemips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf32_nbigmips_vec)    tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf32_nlittlemips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf32_ntradbigmips_vec)        tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf32_ntradlittlemips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
     bfd_elf32_openrisc_vec)    tb="$tb elf32-openrisc.lo elf32.lo $elf" ;;
     bfd_elf32_or32_big_vec)    tb="$tb elf32-or32.lo elf32.lo $elf" ;;
     bfd_elf32_pj_vec)           tb="$tb elf32-pj.lo elf32.lo $elf";;
     bfd_elf32_shlin_vec)       tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
     bfd_elf32_shlnbsd_vec)     tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
     bfd_elf32_shnbsd_vec)      tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
-    bfd_elf32_sparc_vec)       tb="$tb elf32-sparc.lo elfxx-sparc.lo elf32.lo $elf" ;;
-    bfd_elf32_tradbigmips_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;;
-    bfd_elf32_tradlittlemips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;;
+    bfd_elf32_sparc_vec)       tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;;
+    bfd_elf32_sparc_vxworks_vec) tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;;
+    bfd_elf32_tradbigmips_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
+    bfd_elf32_tradlittlemips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
     bfd_elf32_us_cris_vec)     tb="$tb elf32-cris.lo elf32.lo $elf" ;;
     bfd_elf32_v850_vec)                tb="$tb elf32-v850.lo elf32.lo $elf" ;;
     bfd_elf32_vax_vec)         tb="$tb elf32-vax.lo elf32.lo $elf" ;;
     bfd_elf64_alpha_freebsd_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_alpha_vec)       tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_big_generic_vec)         tb="$tb elf64-gen.lo elf64.lo $elf"; target_size=64 ;;
-    bfd_elf64_bigmips_vec)     tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf64_bigmips_vec)     tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
     bfd_elf64_hppa_linux_vec)  tb="$tb elf64-hppa.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_hppa_vec)                tb="$tb elf64-hppa.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_ia64_big_vec)    tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_ia64_hpux_big_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_ia64_little_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_little_generic_vec) tb="$tb elf64-gen.lo elf64.lo $elf"; target_size=64 ;;
-    bfd_elf64_littlemips_vec)  tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf64_littlemips_vec)  tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
     bfd_elf64_mmix_vec)        tb="$tb elf64-mmix.lo elf64.lo $elf" target_size=64 ;;
     bfd_elf64_powerpc_vec)     tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_powerpcle_vec)   tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;;
@@ -13224,9 +13211,9 @@ do
     bfd_elf64_sh64blin_vec)    tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
     bfd_elf64_sh64lnbsd_vec)   tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
     bfd_elf64_sh64nbsd_vec)    tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
-    bfd_elf64_sparc_vec)       tb="$tb elf64-sparc.lo elfxx-sparc.lo elf64.lo $elf"; target_size=64 ;;
-    bfd_elf64_tradbigmips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    bfd_elf64_tradlittlemips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf64_sparc_vec)       tb="$tb elf64-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf64.lo $elf"; target_size=64 ;;
+    bfd_elf64_tradbigmips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf64_tradlittlemips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
     bfd_elf64_x86_64_vec)      tb="$tb elf64-x86-64.lo elf64.lo $elf"; target_size=64 ;;
     bfd_mmo_vec)               tb="$tb mmo.lo" target_size=64 ;;
     bfd_powerpc_pe_vec)         tb="$tb pe-ppc.lo peigen.lo cofflink.lo" ;;
@@ -15277,7 +15264,6 @@ s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
 s,@LN_S@,$LN_S,;t t
 s,@LIBTOOL@,$LIBTOOL,;t t
 s,@VERSUFFIX@,$VERSUFFIX,;t t
-s,@REPORT_BUGS_TO@,$REPORT_BUGS_TO,;t t
 s,@WARN_CFLAGS@,$WARN_CFLAGS,;t t
 s,@NO_WERROR@,$NO_WERROR,;t t
 s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
index cd87c26..f110727 100644 (file)
@@ -8,7 +8,7 @@ AC_CONFIG_SRCDIR([libbfd.c])
 AC_CANONICAL_TARGET
 AC_ISC_POSIX
 
-AM_INIT_AUTOMAKE(bfd, 2.16.91)
+AM_INIT_AUTOMAKE(bfd, 2.17)
 
 dnl These must be called before AM_PROG_LIBTOOL, because it may want
 dnl to call AC_CHECK_PROG.
@@ -598,6 +598,7 @@ do
     bfd_elf32_am33lin_vec)     tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
     bfd_elf32_avr_vec)         tb="$tb elf32-avr.lo elf32.lo $elf" ;;
     bfd_elf32_bfin_vec)                tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
+    bfd_elf32_bfinfdpic_vec)   tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
     bfd_elf32_big_generic_vec)         tb="$tb elf32-gen.lo elf32.lo $elf" ;;
     bfd_elf32_bigarc_vec)      tb="$tb elf32-arc.lo elf32.lo $elf" ;;
     bfd_elf32_bigarm_vec)      tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
@@ -605,7 +606,9 @@ do
                                 tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
     bfd_elf32_bigarm_vxworks_vec)      
                                 tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
-    bfd_elf32_bigmips_vec)     tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;;
+    bfd_elf32_bigmips_vec)     tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
+    bfd_elf32_bigmips_vxworks_vec)
+                               tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
     bfd_elf32_cr16c_vec)       tb="$tb elf32-cr16c.lo elf32.lo $elf" ;;
     bfd_elf32_cris_vec)                tb="$tb elf32-cris.lo elf32.lo $elf" ;;
     bfd_elf32_crx_vec)          tb="$tb elf32-crx.lo elf32.lo $elf" ;;    
@@ -637,7 +640,9 @@ do
     bfd_elf32_littlearm_vxworks_vec)
                                 tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
     bfd_elf32_littlearm_vec)   tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
-    bfd_elf32_littlemips_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;;
+    bfd_elf32_littlemips_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
+    bfd_elf32_littlemips_vxworks_vec)
+                               tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
     bfd_elf32_m32c_vec)         tb="$tb elf32-m32c.lo elf32.lo $elf" ;;
     bfd_elf32_m32r_vec)                tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
     bfd_elf32_m32rle_vec)       tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
@@ -653,10 +658,10 @@ do
     bfd_elf32_mn10300_vec)     tb="$tb elf-m10300.lo elf32.lo $elf" ;;
     bfd_elf32_mt_vec)           tb="$tb elf32-mt.lo elf32.lo $elf" ;;
     bfd_elf32_msp430_vec)      tb="$tb elf32-msp430.lo elf32.lo $elf" ;;
-    bfd_elf32_nbigmips_vec)    tb="$tb elfn32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    bfd_elf32_nlittlemips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    bfd_elf32_ntradbigmips_vec)        tb="$tb elfn32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    bfd_elf32_ntradlittlemips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf32_nbigmips_vec)    tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf32_nlittlemips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf32_ntradbigmips_vec)        tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf32_ntradlittlemips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
     bfd_elf32_openrisc_vec)    tb="$tb elf32-openrisc.lo elf32.lo $elf" ;;
     bfd_elf32_or32_big_vec)    tb="$tb elf32-or32.lo elf32.lo $elf" ;;
     bfd_elf32_pj_vec)           tb="$tb elf32-pj.lo elf32.lo $elf";;
@@ -681,9 +686,10 @@ do
     bfd_elf32_shlin_vec)       tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
     bfd_elf32_shlnbsd_vec)     tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
     bfd_elf32_shnbsd_vec)      tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
-    bfd_elf32_sparc_vec)       tb="$tb elf32-sparc.lo elfxx-sparc.lo elf32.lo $elf" ;;
-    bfd_elf32_tradbigmips_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;;
-    bfd_elf32_tradlittlemips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;;
+    bfd_elf32_sparc_vec)       tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;;
+    bfd_elf32_sparc_vxworks_vec) tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;;
+    bfd_elf32_tradbigmips_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
+    bfd_elf32_tradlittlemips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
     bfd_elf32_us_cris_vec)     tb="$tb elf32-cris.lo elf32.lo $elf" ;;
     bfd_elf32_v850_vec)                tb="$tb elf32-v850.lo elf32.lo $elf" ;;
     bfd_elf32_vax_vec)         tb="$tb elf32-vax.lo elf32.lo $elf" ;;
@@ -694,14 +700,14 @@ do
     bfd_elf64_alpha_freebsd_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_alpha_vec)       tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_big_generic_vec)         tb="$tb elf64-gen.lo elf64.lo $elf"; target_size=64 ;;
-    bfd_elf64_bigmips_vec)     tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf64_bigmips_vec)     tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
     bfd_elf64_hppa_linux_vec)  tb="$tb elf64-hppa.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_hppa_vec)                tb="$tb elf64-hppa.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_ia64_big_vec)    tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_ia64_hpux_big_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_ia64_little_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_little_generic_vec) tb="$tb elf64-gen.lo elf64.lo $elf"; target_size=64 ;;
-    bfd_elf64_littlemips_vec)  tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf64_littlemips_vec)  tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
     bfd_elf64_mmix_vec)        tb="$tb elf64-mmix.lo elf64.lo $elf" target_size=64 ;;
     bfd_elf64_powerpc_vec)     tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_powerpcle_vec)   tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;;
@@ -712,9 +718,9 @@ do
     bfd_elf64_sh64blin_vec)    tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
     bfd_elf64_sh64lnbsd_vec)   tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
     bfd_elf64_sh64nbsd_vec)    tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
-    bfd_elf64_sparc_vec)       tb="$tb elf64-sparc.lo elfxx-sparc.lo elf64.lo $elf"; target_size=64 ;;
-    bfd_elf64_tradbigmips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    bfd_elf64_tradlittlemips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf64_sparc_vec)       tb="$tb elf64-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf64.lo $elf"; target_size=64 ;;
+    bfd_elf64_tradbigmips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf64_tradlittlemips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
     bfd_elf64_x86_64_vec)      tb="$tb elf64-x86-64.lo elf64.lo $elf"; target_size=64 ;;
     bfd_mmo_vec)               tb="$tb mmo.lo" target_size=64 ;;
     bfd_powerpc_pe_vec)         tb="$tb pe-ppc.lo peigen.lo cofflink.lo" ;;
index d4ef2cd..7909268 100644 (file)
@@ -1,3 +1,13 @@
+2006-06-07  Joseph S. Myers  <joseph@codesourcery.com>
+
+       * bfd.texinfo: Remove local @tex code.
+
+2006-04-06  Carlos O'Donell  <carlos@codesourcery.com>
+
+       * Makefile.am: Add install-html and install-html-am targets. 
+       Define datarootdir, docdir and htmldir.
+       * Makefile.in: Regenerate.
+
 2006-02-27  Carlos O'Donell  <carlos@codesourcery.com>
 
        * Makefile.am: Add html target.
index 975a6ed..34d56ed 100644 (file)
@@ -4,20 +4,6 @@
 @c 2001, 2002, 2003
 @c Free Software Foundation, Inc.
 @c 
-@tex
-% NOTE LOCAL KLUGE TO AVOID TOO MUCH WHITESPACE
-\global\long\def\example{%
-\begingroup
-\let\aboveenvbreak=\par
-\let\afterenvbreak=\par
-\parskip=0pt
-\lisp}
-\global\long\def\Eexample{%
-\Elisp
-\endgroup
-\vskip -\parskip% to cancel out effect of following \par
-}
-@end tex
 @synindex fn cp
 
 @ifinfo
index ab0b995..5100e72 100644 (file)
@@ -1076,12 +1076,12 @@ _bfd_elf_write_section_eh_frame (bfd *abfd,
       end = buf + ent->size;
       new_size = size_of_output_cie_fde (ent, ptr_size);
 
-      /* Install the new size, filling the extra bytes with DW_CFA_nops.  */
+      /* Update the size.  It may be shrinked.  */
+      bfd_put_32 (abfd, new_size - 4, buf);
+
+      /* Filling the extra bytes with DW_CFA_nops.  */
       if (new_size != ent->size)
-       {
-         memset (end, 0, new_size - ent->size);
-         bfd_put_32 (abfd, new_size - 4, buf);
-       }
+       memset (end, 0, new_size - ent->size);
 
       if (ent->cie)
        {
@@ -1263,40 +1263,13 @@ _bfd_elf_write_section_eh_frame (bfd *abfd,
        }
     }
 
-    {
-      unsigned int alignment = 1 << sec->alignment_power;
-      unsigned int pad = sec->size % alignment;
-
-      /* Don't pad beyond the raw size of the output section. It
-        can happen at the last input section.  */
-      if (pad
-         && ((sec->output_offset + sec->size + pad)
-             <= sec->output_section->size))
-       {
-         bfd_byte *buf;
-         unsigned int new_size;
-
-         /* Find the last CIE/FDE.  */
-         ent = sec_info->entry + sec_info->count;
-         while (--ent != sec_info->entry)
-           if (!ent->removed)
-             break;
-
-         /* The size of the last CIE/FDE must be at least 4.  */
-         if (ent->removed || ent->size < 4)
-           abort ();
-
-         pad = alignment - pad;
-         buf = contents + ent->new_offset - sec->output_offset;
-         new_size = size_of_output_cie_fde (ent, ptr_size);
-
-         /* Pad it with DW_CFA_nop  */
-         memset (buf + new_size, 0, pad);
-         bfd_put_32 (abfd, new_size + pad - 4, buf);
-
-         sec->size += pad;
-       }
-    }
+  /* We don't align the section to its section alignment since the
+     runtime library only expects all CIE/FDE records aligned at
+     the pointer size. _bfd_elf_discard_section_eh_frame should 
+     have padded CIE/FDE records to multiple of pointer size with
+     size_of_output_cie_fde.  */
+  if ((sec->size % ptr_size) != 0)
+    abort ();
 
   return bfd_set_section_contents (abfd, sec->output_section,
                                   contents, (file_ptr) sec->output_offset,
index 13c3201..d5a81db 100644 (file)
@@ -1,4 +1,4 @@
-/* ADI Blackfin BFD support for 32-bit ELF. 
+/* ADI Blackfin BFD support for 32-bit ELF.
    Copyright 2005, 2006 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 #include "libbfd.h"
 #include "elf-bfd.h"
 #include "elf/bfin.h"
-
-/* Handling expression relocations for blackfin.  Blackfin
-   will generate relocations in an expression form with a stack.
-   A relocation such as P1.H  = _typenames-4000000;
-   will generate the following relocs at offset 4:
-00000004 R_expst_push      _typenames
-00000004 R_expst_const     .__constant
-00000004 R_expst_sub       .__operator
-00000006 R_huimm16         .__operator
-
-   The .__constant and .__operator symbol names are fake.
-   Special case is a single relocation
-     P1.L  = _typenames; generates
-00000002 R_luimm16         _typenames
-
-   Thus, if you get a R_luimm16, R_huimm16, R_imm16,
-   if the stack is not empty, pop the stack and
-   put the value, else do the normal thing
-   We will currently assume that the max the stack
-   would grow to is 100. .  */
-
-#define RELOC_STACK_SIZE 100
-static bfd_vma reloc_stack[RELOC_STACK_SIZE];
-static unsigned int reloc_stack_tos = 0;
-
-#define is_reloc_stack_empty() ((reloc_stack_tos > 0) ? 0 : 1)
-
-static void
-reloc_stack_push (bfd_vma value)
-{
-  reloc_stack[reloc_stack_tos++] = value;
-}
-
-static bfd_vma
-reloc_stack_pop (void)
-{
-  return reloc_stack[--reloc_stack_tos];
-}
-
-static bfd_vma
-reloc_stack_operate (unsigned int oper)
-{
-  bfd_vma value;
-  switch (oper)
-    {
-    case R_add:
-      {
-       value =
-         reloc_stack[reloc_stack_tos - 2] + reloc_stack[reloc_stack_tos - 1];
-       reloc_stack_tos -= 2;
-       break;
-      }
-    case R_sub:
-      {
-       value =
-         reloc_stack[reloc_stack_tos - 2] - reloc_stack[reloc_stack_tos - 1];
-       reloc_stack_tos -= 2;
-       break;
-      }
-    case R_mult:
-      {
-       value =
-         reloc_stack[reloc_stack_tos - 2] * reloc_stack[reloc_stack_tos - 1];
-       reloc_stack_tos -= 2;
-       break;
-      }
-    case R_div:
-      {
-       if (reloc_stack[reloc_stack_tos - 1] == 0)
-         {
-           _bfd_abort (__FILE__, __LINE__, _("Division by zero. "));
-         }
-       else
-         {
-           value =
-             reloc_stack[reloc_stack_tos - 2] / reloc_stack[reloc_stack_tos - 1];
-           reloc_stack_tos -= 2;
-         }
-       break;
-      }
-    case R_mod:
-      {
-       value =
-         reloc_stack[reloc_stack_tos - 2] % reloc_stack[reloc_stack_tos - 1];
-       reloc_stack_tos -= 2;
-       break;
-      }
-    case R_lshift:
-      {
-       value =
-         reloc_stack[reloc_stack_tos - 2] << reloc_stack[reloc_stack_tos -
-                                                         1];
-       reloc_stack_tos -= 2;
-       break;
-      }
-    case R_rshift:
-      {
-       value =
-         reloc_stack[reloc_stack_tos - 2] >> reloc_stack[reloc_stack_tos -
-                                                         1];
-       reloc_stack_tos -= 2;
-       break;
-      }
-    case R_and:
-      {
-       value =
-         reloc_stack[reloc_stack_tos - 2] & reloc_stack[reloc_stack_tos - 1];
-       reloc_stack_tos -= 2;
-       break;
-      }
-    case R_or:
-      {
-       value =
-         reloc_stack[reloc_stack_tos - 2] | reloc_stack[reloc_stack_tos - 1];
-       reloc_stack_tos -= 2;
-       break;
-      }
-    case R_xor:
-      {
-       value =
-         reloc_stack[reloc_stack_tos - 2] ^ reloc_stack[reloc_stack_tos - 1];
-       reloc_stack_tos -= 2;
-       break;
-      }
-    case R_land:
-      {
-       value = reloc_stack[reloc_stack_tos - 2]
-         && reloc_stack[reloc_stack_tos - 1];
-       reloc_stack_tos -= 2;
-       break;
-      }
-    case R_lor:
-      {
-       value = reloc_stack[reloc_stack_tos - 2]
-         || reloc_stack[reloc_stack_tos - 1];
-       reloc_stack_tos -= 2;
-       break;
-      }
-    case R_neg:
-      {
-       value = -reloc_stack[reloc_stack_tos - 1];
-       reloc_stack_tos--;
-       break;
-      }
-    case R_comp:
-      {
-       value = ~reloc_stack[reloc_stack_tos - 1];
-       reloc_stack_tos -= 1;
-       break;
-      }
-    default:
-      {
-       fprintf (stderr, "bfin relocation : Internal bug\n");
-       return 0;
-      }
-    }
-
-  reloc_stack_push (value);
-
-  return value;
-}
+#include "elf/dwarf2.h"
+#include "hashtab.h"
 
 /* FUNCTION : bfin_pltpc_reloc
    ABSTRACT : TODO : figure out how to handle pltpc relocs.  */
@@ -195,10 +36,10 @@ bfin_pltpc_reloc (
      PTR data ATTRIBUTE_UNUSED,
      asection *input_section ATTRIBUTE_UNUSED,
      bfd *output_bfd ATTRIBUTE_UNUSED,
-     char **error_message ATTRIBUTE_UNUSED) 
+     char **error_message ATTRIBUTE_UNUSED)
 {
   bfd_reloc_status_type flag = bfd_reloc_ok;
-  return flag; 
+  return flag;
 }
 \f
 
@@ -221,49 +62,44 @@ bfin_pcrel24_reloc (bfd *abfd,
   if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
     return bfd_reloc_outofrange;
 
-  if (!is_reloc_stack_empty ())
-    relocation = reloc_stack_pop();
+  if (bfd_is_und_section (symbol->section)
+      && (symbol->flags & BSF_WEAK) == 0
+      && !relocatable)
+    return bfd_reloc_undefined;
+
+  if (bfd_is_com_section (symbol->section))
+    relocation = 0;
   else
-    {
-      if (bfd_is_und_section (symbol->section)
-          && (symbol->flags & BSF_WEAK) == 0
-          && !relocatable)
-        return bfd_reloc_undefined;
+    relocation = symbol->value;
 
-      if (bfd_is_com_section (symbol->section))
-       relocation = 0;
-      else
-       relocation = symbol->value;       
+  output_section = symbol->section->output_section;
+
+  if (relocatable)
+    output_base = 0;
+  else
+    output_base = output_section->vma;
+
+  if (!relocatable || !strcmp (symbol->name, symbol->section->name))
+    relocation += output_base + symbol->section->output_offset;
 
-      output_section = symbol->section->output_section;
+  if (!relocatable && !strcmp (symbol->name, symbol->section->name))
+    relocation += reloc_entry->addend;
 
-      if (relocatable)
-       output_base = 0;
-      else
-       output_base = output_section->vma;
-      
-      if (!relocatable || !strcmp (symbol->name, symbol->section->name))
-       relocation += output_base + symbol->section->output_offset;
-        
-      if (!relocatable && !strcmp (symbol->name, symbol->section->name))
-        relocation += reloc_entry->addend;
-    }
-      
   relocation -= input_section->output_section->vma + input_section->output_offset;
   relocation -= reloc_entry->address;
 
   if (howto->complain_on_overflow != complain_overflow_dont)
     {
       bfd_reloc_status_type status;
-      status= bfd_check_overflow (howto->complain_on_overflow, 
-                                  howto->bitsize,
-                                  howto->rightshift, 
-                                  bfd_arch_bits_per_address(abfd),
-                                  relocation);      
+      status = bfd_check_overflow (howto->complain_on_overflow,
+                                  howto->bitsize,
+                                  howto->rightshift,
+                                  bfd_arch_bits_per_address(abfd),
+                                  relocation);
       if (status != bfd_reloc_ok)
        return status;
     }
-      
+
   /* if rightshift is 1 and the number odd, return error.  */
   if (howto->rightshift && (relocation & 0x01))
     {
@@ -286,11 +122,11 @@ bfin_pcrel24_reloc (bfd *abfd,
     short x;
 
     /* We are getting reloc_entry->address 2 byte off from
-    the start of instruction. Assuming absolute postion
-    of the reloc data. But, following code had been written assuming 
-    reloc address is starting at begining of instruction.
-    To compensate that I have increased the value of 
-    relocation by 1 (effectively 2) and used the addr -2 instead of addr.  */ 
+       the start of instruction. Assuming absolute postion
+       of the reloc data. But, following code had been written assuming
+       reloc address is starting at begining of instruction.
+       To compensate that I have increased the value of
+       relocation by 1 (effectively 2) and used the addr -2 instead of addr.  */
 
     relocation += 1;
     x = bfd_get_16 (abfd, (bfd_byte *) data + addr - 2);
@@ -305,30 +141,32 @@ bfin_pcrel24_reloc (bfd *abfd,
 }
 
 static bfd_reloc_status_type
-bfin_push_reloc (bfd *abfd ATTRIBUTE_UNUSED,
-                arelent *reloc_entry,
-                asymbol *symbol,
-                PTR data ATTRIBUTE_UNUSED,
-                asection *input_section,
-                bfd *output_bfd,
-                char **error_message ATTRIBUTE_UNUSED) 
+bfin_imm16_reloc (bfd *abfd,
+                 arelent *reloc_entry,
+                 asymbol *symbol,
+                 PTR data,
+                 asection *input_section,
+                 bfd *output_bfd,
+                 char **error_message ATTRIBUTE_UNUSED)
 {
-  bfd_vma relocation;
+  bfd_vma relocation, x;
+  bfd_size_type reloc_addr = reloc_entry->address;
   bfd_vma output_base = 0;
+  reloc_howto_type *howto = reloc_entry->howto;
   asection *output_section;
   bfd_boolean relocatable = (output_bfd != NULL);
 
+  /* Is the address of the relocation really within the section?  */
+  if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
+    return bfd_reloc_outofrange;
+
   if (bfd_is_und_section (symbol->section)
       && (symbol->flags & BSF_WEAK) == 0
       && !relocatable)
     return bfd_reloc_undefined;
 
-  /* Is the address of the relocation really within the section?  */
-  if (reloc_entry->address > bfd_get_section_limit(abfd, input_section))
-     return bfd_reloc_outofrange;
-      
   output_section = symbol->section->output_section;
-  relocation = symbol->value;      
+  relocation = symbol->value;
 
   /* Convert input-section-relative symbol value to absolute.  */
   if (relocatable)
@@ -336,7 +174,7 @@ bfin_push_reloc (bfd *abfd ATTRIBUTE_UNUSED,
   else
     output_base = output_section->vma;
 
-  if (!relocatable || !strcmp(symbol->name, symbol->section->name))
+  if (!relocatable || !strcmp (symbol->name, symbol->section->name))
     relocation += output_base + symbol->section->output_offset;
 
   /* Add in supplied addend.  */
@@ -347,105 +185,6 @@ bfin_push_reloc (bfd *abfd ATTRIBUTE_UNUSED,
       reloc_entry->address += input_section->output_offset;
       reloc_entry->addend += symbol->section->output_offset;
     }
-
-  /* Now that we have the value, push it. */
-  reloc_stack_push (relocation);
-  
-  return bfd_reloc_ok;
-}
-
-static bfd_reloc_status_type
-bfin_oper_reloc (bfd *abfd ATTRIBUTE_UNUSED,
-                arelent *reloc_entry,
-                asymbol *symbol ATTRIBUTE_UNUSED,
-                PTR data ATTRIBUTE_UNUSED,
-                asection *input_section,
-                bfd *output_bfd,
-                char **error_message ATTRIBUTE_UNUSED) 
-{
-  bfd_boolean relocatable = (output_bfd != NULL);
-
-  /* Just call the operation based on the reloc_type.  */
-  reloc_stack_operate (reloc_entry->howto->type);
-  
-  if (relocatable)
-    reloc_entry->address += input_section->output_offset;
-
-  return bfd_reloc_ok;
-}
-
-static bfd_reloc_status_type
-bfin_const_reloc (bfd *abfd ATTRIBUTE_UNUSED,
-                 arelent *reloc_entry,
-                 asymbol *symbol ATTRIBUTE_UNUSED,
-                 PTR data ATTRIBUTE_UNUSED,
-                 asection *input_section,
-                 bfd *output_bfd,
-                 char **error_message ATTRIBUTE_UNUSED) 
-{
-  bfd_boolean relocatable = (output_bfd != NULL);
-
-  /* Push the addend portion of the relocation.  */
-  reloc_stack_push (reloc_entry->addend);
-
-  if (relocatable)
-    reloc_entry->address += input_section->output_offset;
-  
-  return bfd_reloc_ok;
-}
-
-static bfd_reloc_status_type
-bfin_imm16_reloc (bfd *abfd,
-                 arelent *reloc_entry,
-                 asymbol *symbol,
-                 PTR data,
-                 asection *input_section,
-                 bfd *output_bfd,
-                 char **error_message ATTRIBUTE_UNUSED) 
-{
-  bfd_vma relocation, x;
-  bfd_size_type reloc_addr = reloc_entry->address;
-  bfd_vma output_base = 0;
-  reloc_howto_type *howto = reloc_entry->howto;
-  asection *output_section;
-  bfd_boolean relocatable = (output_bfd != NULL);
-
-  /* Is the address of the relocation really within the section?  */
-  if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
-    return bfd_reloc_outofrange;
-
-  if (is_reloc_stack_empty ())
-    {
-      if (bfd_is_und_section (symbol->section)
-          && (symbol->flags & BSF_WEAK) == 0
-          && !relocatable)
-        return bfd_reloc_undefined;
-
-      output_section = symbol->section->output_section;
-      relocation = symbol->value;      
-
-      /* Convert input-section-relative symbol value to absolute.  */
-      if (relocatable)
-        output_base = 0;
-      else
-       output_base = output_section->vma;
-  
-      if (!relocatable || !strcmp (symbol->name, symbol->section->name))
-       relocation += output_base + symbol->section->output_offset;
-
-      /* Add in supplied addend.  */
-      relocation += reloc_entry->addend;
-    }
-  else
-    {
-      relocation = reloc_stack_pop ();
-    }
-
-  if (relocatable)
-    {                
-      reloc_entry->address += input_section->output_offset;
-      reloc_entry->addend += symbol->section->output_offset;
-    }
   else
     {
       reloc_entry->addend = 0;
@@ -455,15 +194,14 @@ bfin_imm16_reloc (bfd *abfd,
     {
       bfd_reloc_status_type flag;
       flag = bfd_check_overflow (howto->complain_on_overflow,
-                                 howto->bitsize,
-                                 howto->rightshift,
-                                 bfd_arch_bits_per_address(abfd),
-                                 relocation);
+                                howto->bitsize,
+                                howto->rightshift,
+                                bfd_arch_bits_per_address(abfd),
+                                relocation);
       if (flag != bfd_reloc_ok)
-        return flag;
+       return flag;
     }
 
-
   /* Here the variable relocation holds the final address of the
      symbol we are relocating against, plus any addend.  */
 
@@ -481,7 +219,7 @@ bfin_byte4_reloc (bfd *abfd,
                   PTR data,
                   asection *input_section,
                   bfd *output_bfd,
-                  char **error_message ATTRIBUTE_UNUSED) 
+                  char **error_message ATTRIBUTE_UNUSED)
 {
   bfd_vma relocation, x;
   bfd_size_type addr = reloc_entry->address;
@@ -493,39 +231,31 @@ bfin_byte4_reloc (bfd *abfd,
   if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
     return bfd_reloc_outofrange;
 
-  if (is_reloc_stack_empty ())
-    {
-      if (bfd_is_und_section (symbol->section)
-          && (symbol->flags & BSF_WEAK) == 0
-          && !relocatable)
-        return bfd_reloc_undefined;
-
-      output_section = symbol->section->output_section;
-      relocation = symbol->value;      
-      /* Convert input-section-relative symbol value to absolute.  */
-      if (relocatable)
-       output_base = 0;
-      else
-       output_base = output_section->vma;
-  
-      if ((symbol->name 
-         && symbol->section->name
-          && !strcmp (symbol->name, symbol->section->name))
-          || !relocatable)
-        {
-         relocation += output_base + symbol->section->output_offset;
-       }
+  if (bfd_is_und_section (symbol->section)
+      && (symbol->flags & BSF_WEAK) == 0
+      && !relocatable)
+    return bfd_reloc_undefined;
 
-      relocation += reloc_entry->addend;
-    }
+  output_section = symbol->section->output_section;
+  relocation = symbol->value;
+  /* Convert input-section-relative symbol value to absolute.  */
+  if (relocatable)
+    output_base = 0;
   else
+    output_base = output_section->vma;
+
+  if ((symbol->name
+       && symbol->section->name
+       && !strcmp (symbol->name, symbol->section->name))
+      || !relocatable)
     {
-      relocation = reloc_stack_pop();
-      relocation += reloc_entry->addend;
+      relocation += output_base + symbol->section->output_offset;
     }
 
+  relocation += reloc_entry->addend;
+
   if (relocatable)
-    { 
+    {
       /* This output will be relocatable ... like ld -r. */
       reloc_entry->address += input_section->output_offset;
       reloc_entry->addend += symbol->section->output_offset;
@@ -540,7 +270,7 @@ bfin_byte4_reloc (bfd *abfd,
   x = relocation & 0xFFFF0000;
   x >>=16;
   bfd_put_16 (abfd, x, (unsigned char *) data + addr + 2);
-            
+
   x = relocation & 0x0000FFFF;
   bfd_put_16 (abfd, x, (unsigned char *) data + addr);
   return bfd_reloc_ok;
@@ -568,42 +298,34 @@ bfin_bfd_reloc (bfd *abfd,
   if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
     return bfd_reloc_outofrange;
 
-  if (is_reloc_stack_empty())
-    {
-      if (bfd_is_und_section (symbol->section)
-          && (symbol->flags & BSF_WEAK) == 0
-          && !relocatable)
-        return bfd_reloc_undefined;
+  if (bfd_is_und_section (symbol->section)
+      && (symbol->flags & BSF_WEAK) == 0
+      && !relocatable)
+    return bfd_reloc_undefined;
 
-      /* Get symbol value.  (Common symbols are special.)  */
-      if (bfd_is_com_section (symbol->section))
-        relocation = 0;
-      else
-        relocation = symbol->value;       
-  
-      output_section = symbol->section->output_section;
-        
-      /* Convert input-section-relative symbol value to absolute.  */
-      if (relocatable)
-       output_base = 0;
-      else
-       output_base = output_section->vma;
-        
-      if (!relocatable || !strcmp (symbol->name, symbol->section->name))
-        relocation += output_base + symbol->section->output_offset;
-
-     if (!relocatable && !strcmp (symbol->name, symbol->section->name))
-       {
-         /* Add in supplied addend.  */
-         relocation += reloc_entry->addend;
-       }
-        
-    }
+  /* Get symbol value.  (Common symbols are special.)  */
+  if (bfd_is_com_section (symbol->section))
+    relocation = 0;
+  else
+    relocation = symbol->value;
+
+  output_section = symbol->section->output_section;
+
+  /* Convert input-section-relative symbol value to absolute.  */
+  if (relocatable)
+    output_base = 0;
   else
+    output_base = output_section->vma;
+
+  if (!relocatable || !strcmp (symbol->name, symbol->section->name))
+    relocation += output_base + symbol->section->output_offset;
+
+  if (!relocatable && !strcmp (symbol->name, symbol->section->name))
     {
-      relocation = reloc_stack_pop();
+      /* Add in supplied addend.  */
+      relocation += reloc_entry->addend;
     }
-      
+
   /* Here the variable relocation holds the final address of the
      symbol we are relocating against, plus any addend.  */
 
@@ -625,15 +347,15 @@ bfin_bfd_reloc (bfd *abfd,
     {
       bfd_reloc_status_type status;
 
-      status = bfd_check_overflow (howto->complain_on_overflow, 
+      status = bfd_check_overflow (howto->complain_on_overflow,
                                   howto->bitsize,
-                                  howto->rightshift, 
+                                  howto->rightshift,
                                   bfd_arch_bits_per_address(abfd),
                                   relocation);
       if (status != bfd_reloc_ok)
        return status;
     }
-      
+
   /* If rightshift is 1 and the number odd, return error.  */
   if (howto->rightshift && (relocation & 0x01))
     {
@@ -647,7 +369,7 @@ bfin_bfd_reloc (bfd *abfd,
 
   relocation <<= (bfd_vma) howto->bitpos;
 
-#define DOIT(x) \
+#define DOIT(x)                                                                \
   x = ( (x & ~howto->dst_mask) | (relocation & howto->dst_mask))
 
   /* handle 8 and 16 bit relocations here. */
@@ -673,41 +395,9 @@ bfin_bfd_reloc (bfd *abfd,
       return bfd_reloc_other;
     }
 
-   return bfd_reloc_ok;
+  return bfd_reloc_ok;
 }
 
-#if 0
-static bfd_reloc_status_type bfin_bfd_reloc
-  PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
-
-static bfd_reloc_status_type bfin_imm16_reloc
-  PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
-
-static bfd_reloc_status_type bfin_pcrel24_reloc
-  PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
-
-static bfd_reloc_status_type bfin_pltpc_reloc
-  PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
-
-static bfd_reloc_status_type bfin_const_reloc
-  PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
-
-static bfd_reloc_status_type bfin_oper_reloc
-  PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
-
-static bfd_reloc_status_type bfin_byte4_reloc
-  PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
-
-static bfd_reloc_status_type bfin_push_reloc
-  PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
-
-static bfd_boolean bfin_is_local_label_name
-  PARAMS ((bfd *, const char *));
-#endif
-bfd_boolean bfd_bfin_elf32_create_embedded_relocs
-  PARAMS ((bfd *, struct bfd_link_info *, asection *, asection *, char **));
-
-
 /* HOWTO Table for blackfin.
    Blackfin relocations are fairly complicated.
    Some of the salient features are
@@ -722,7 +412,7 @@ bfd_boolean bfd_bfin_elf32_create_embedded_relocs
    the relocation stack. .  */
 
 #define BFIN_RELOC_MIN 0
-#define BFIN_RELOC_MAX 0x13
+#define BFIN_RELOC_MAX 0x21
 #define BFIN_GNUEXT_RELOC_MIN 0x40
 #define BFIN_GNUEXT_RELOC_MAX 0x43
 #define BFIN_ARELOC_MIN 0xE0
@@ -786,7 +476,7 @@ static reloc_howto_type bfin_howto_table [] =
         0,                     /* src_mask.  */
         0x000003FF,            /* dst_mask.  */
         TRUE),                 /* pcrel_offset.  */
+
   HOWTO (R_pcrel12_jump,       /* type.  */
         1,                     /* rightshift.  */
                                /* the offset is actually 13 bit
@@ -832,7 +522,7 @@ static reloc_howto_type bfin_howto_table [] =
         0,                     /* src_mask.  */
         0x0000FFFF,            /* dst_mask.  */
         TRUE),                 /* pcrel_offset.  */
+
   HOWTO (R_huimm16,            /* type.  */
         16,                    /* rightshift.  */
         1,                     /* size (0 = byte, 1 = short, 2 = long).  */
@@ -1014,319 +704,259 @@ static reloc_howto_type bfin_howto_table [] =
         0,                     /* src_mask.  */
         0x000003FF,            /* dst_mask.  */
         FALSE),                /* pcrel_offset.  */
+
+
+  /* A 18-bit signed operand with the GOT offset for the address of
+     the symbol.  */
+  HOWTO (R_BFIN_GOT17M4,        /* type */
+        2,                     /* rightshift */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
+        16,                    /* bitsize */
+        FALSE,                 /* pc_relative */
+        0,                     /* bitpos */
+        complain_overflow_signed, /* complain_on_overflow */
+        bfd_elf_generic_reloc, /* special_function */
+        "R_BFIN_GOT12",                /* name */
+        FALSE,                 /* partial_inplace */
+        0xffff,                /* src_mask */
+        0xffff,                /* dst_mask */
+        FALSE),                /* pcrel_offset */
+
+  /* The upper 16 bits of the GOT offset for the address of the
+     symbol.  */
+  HOWTO (R_BFIN_GOTHI,         /* type */
+        0,                     /* rightshift */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
+        16,                    /* bitsize */
+        FALSE,                 /* pc_relative */
+        0,                     /* bitpos */
+        complain_overflow_dont, /* complain_on_overflow */
+        bfd_elf_generic_reloc, /* special_function */
+        "R_BFIN_GOTHI",                /* name */
+        FALSE,                 /* partial_inplace */
+        0xffff,                        /* src_mask */
+        0xffff,                /* dst_mask */
+        FALSE),                /* pcrel_offset */
+
+  /* The lower 16 bits of the GOT offset for the address of the
+     symbol.  */
+  HOWTO (R_BFIN_GOTLO,         /* type */
+        0,                     /* rightshift */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
+        16,                    /* bitsize */
+        FALSE,                 /* pc_relative */
+        0,                     /* bitpos */
+        complain_overflow_dont, /* complain_on_overflow */
+        bfd_elf_generic_reloc, /* special_function */
+        "R_BFIN_GOTLO",                /* name */
+        FALSE,                 /* partial_inplace */
+        0xffff,                /* src_mask */
+        0xffff,                /* dst_mask */
+        FALSE),                /* pcrel_offset */
+
+  /* The 32-bit address of the canonical descriptor of a function.  */
+  HOWTO (R_BFIN_FUNCDESC,      /* type */
+        0,                     /* rightshift */
+        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        32,                    /* bitsize */
+        FALSE,                 /* pc_relative */
+        0,                     /* bitpos */
+        complain_overflow_bitfield, /* complain_on_overflow */
+        bfd_elf_generic_reloc, /* special_function */
+        "R_BFIN_FUNCDESC",     /* name */
+        FALSE,                 /* partial_inplace */
+        0xffffffff,            /* src_mask */
+        0xffffffff,            /* dst_mask */
+        FALSE),                /* pcrel_offset */
+
+  /* A 12-bit signed operand with the GOT offset for the address of
+     canonical descriptor of a function.  */
+  HOWTO (R_BFIN_FUNCDESC_GOT17M4,      /* type */
+        2,                     /* rightshift */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
+        16,                    /* bitsize */
+        FALSE,                 /* pc_relative */
+        0,                     /* bitpos */
+        complain_overflow_signed, /* complain_on_overflow */
+        bfd_elf_generic_reloc, /* special_function */
+        "R_BFIN_FUNCDESC_GOT17M4", /* name */
+        FALSE,                 /* partial_inplace */
+        0xffff,                /* src_mask */
+        0xffff,                /* dst_mask */
+        FALSE),                /* pcrel_offset */
+
+  /* The upper 16 bits of the GOT offset for the address of the
+     canonical descriptor of a function.  */
+  HOWTO (R_BFIN_FUNCDESC_GOTHI,        /* type */
+        0,                     /* rightshift */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
+        16,                    /* bitsize */
+        FALSE,                 /* pc_relative */
+        0,                     /* bitpos */
+        complain_overflow_dont, /* complain_on_overflow */
+        bfd_elf_generic_reloc, /* special_function */
+        "R_BFIN_FUNCDESC_GOTHI", /* name */
+        FALSE,                 /* partial_inplace */
+        0xffff,                /* src_mask */
+        0xffff,                /* dst_mask */
+        FALSE),                /* pcrel_offset */
+
+  /* The lower 16 bits of the GOT offset for the address of the
+     canonical descriptor of a function.  */
+  HOWTO (R_BFIN_FUNCDESC_GOTLO,        /* type */
+        0,                     /* rightshift */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
+        16,                    /* bitsize */
+        FALSE,                 /* pc_relative */
+        0,                     /* bitpos */
+        complain_overflow_dont, /* complain_on_overflow */
+        bfd_elf_generic_reloc, /* special_function */
+        "R_BFIN_FUNCDESC_GOTLO", /* name */
+        FALSE,                 /* partial_inplace */
+        0xffff,                /* src_mask */
+        0xffff,                /* dst_mask */
+        FALSE),                /* pcrel_offset */
+
+  /* The 32-bit address of the canonical descriptor of a function.  */
+  HOWTO (R_BFIN_FUNCDESC_VALUE,        /* type */
+        0,                     /* rightshift */
+        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        64,                    /* bitsize */
+        FALSE,                 /* pc_relative */
+        0,                     /* bitpos */
+        complain_overflow_bitfield, /* complain_on_overflow */
+        bfd_elf_generic_reloc, /* special_function */
+        "R_BFIN_FUNCDESC_VALUE", /* name */
+        FALSE,                 /* partial_inplace */
+        0xffffffff,            /* src_mask */
+        0xffffffff,            /* dst_mask */
+        FALSE),                /* pcrel_offset */
+
+  /* A 12-bit signed operand with the GOT offset for the address of
+     canonical descriptor of a function.  */
+  HOWTO (R_BFIN_FUNCDESC_GOTOFF17M4, /* type */
+        2,                     /* rightshift */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
+        16,                    /* bitsize */
+        FALSE,                 /* pc_relative */
+        0,                     /* bitpos */
+        complain_overflow_signed, /* complain_on_overflow */
+        bfd_elf_generic_reloc, /* special_function */
+        "R_BFIN_FUNCDESC_GOTOFF17M4", /* name */
+        FALSE,                 /* partial_inplace */
+        0xffff,                /* src_mask */
+        0xffff,                /* dst_mask */
+        FALSE),                /* pcrel_offset */
+
+  /* The upper 16 bits of the GOT offset for the address of the
+     canonical descriptor of a function.  */
+  HOWTO (R_BFIN_FUNCDESC_GOTOFFHI, /* type */
+        0,                     /* rightshift */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
+        16,                    /* bitsize */
+        FALSE,                 /* pc_relative */
+        0,                     /* bitpos */
+        complain_overflow_dont, /* complain_on_overflow */
+        bfd_elf_generic_reloc, /* special_function */
+        "R_BFIN_FUNCDESC_GOTOFFHI", /* name */
+        FALSE,                 /* partial_inplace */
+        0xffff,                /* src_mask */
+        0xffff,                /* dst_mask */
+        FALSE),                /* pcrel_offset */
+
+  /* The lower 16 bits of the GOT offset for the address of the
+     canonical descriptor of a function.  */
+  HOWTO (R_BFIN_FUNCDESC_GOTOFFLO, /* type */
+        0,                     /* rightshift */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
+        16,                    /* bitsize */
+        FALSE,                 /* pc_relative */
+        0,                     /* bitpos */
+        complain_overflow_dont, /* complain_on_overflow */
+        bfd_elf_generic_reloc, /* special_function */
+        "R_BFIN_FUNCDESC_GOTOFFLO", /* name */
+        FALSE,                 /* partial_inplace */
+        0xffff,                /* src_mask */
+        0xffff,                /* dst_mask */
+        FALSE),                /* pcrel_offset */
+
+  /* A 12-bit signed operand with the GOT offset for the address of
+     the symbol.  */
+  HOWTO (R_BFIN_GOTOFF17M4,     /* type */
+        2,                     /* rightshift */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
+        16,                    /* bitsize */
+        FALSE,                 /* pc_relative */
+        0,                     /* bitpos */
+        complain_overflow_signed, /* complain_on_overflow */
+        bfd_elf_generic_reloc, /* special_function */
+        "R_BFIN_GOTOFF17M4",   /* name */
+        FALSE,                 /* partial_inplace */
+        0xffff,                /* src_mask */
+        0xffff,                /* dst_mask */
+        FALSE),                /* pcrel_offset */
+
+  /* The upper 16 bits of the GOT offset for the address of the
+     symbol.  */
+  HOWTO (R_BFIN_GOTOFFHI,        /* type */
+        0,                     /* rightshift */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
+        16,                    /* bitsize */
+        FALSE,                 /* pc_relative */
+        0,                     /* bitpos */
+        complain_overflow_dont, /* complain_on_overflow */
+        bfd_elf_generic_reloc, /* special_function */
+        "R_BFIN_GOTOFFHI",     /* name */
+        FALSE,                 /* partial_inplace */
+        0xffff,                /* src_mask */
+        0xffff,                /* dst_mask */
+        FALSE),                /* pcrel_offset */
+
+  /* The lower 16 bits of the GOT offset for the address of the
+     symbol.  */
+  HOWTO (R_BFIN_GOTOFFLO,      /* type */
+        0,                     /* rightshift */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
+        16,                    /* bitsize */
+        FALSE,                 /* pc_relative */
+        0,                     /* bitpos */
+        complain_overflow_dont, /* complain_on_overflow */
+        bfd_elf_generic_reloc, /* special_function */
+        "R_BFIN_GOTOFFLO",     /* name */
+        FALSE,                 /* partial_inplace */
+        0xffff,                /* src_mask */
+        0xffff,                /* dst_mask */
+        FALSE),                /* pcrel_offset */
 };
 
-static reloc_howto_type bfin_areloc_howto_table [] =
-{
-  HOWTO (R_push,
-        0,
-        2,
-        0,
-        FALSE,
-        0,
-        complain_overflow_dont,
-        bfin_push_reloc,
-        "R_expst_push",
-        FALSE,
-        0,
-        0,
-        FALSE),
-
-  HOWTO (R_const,
-        0,
-        2,
-        0,
-        FALSE,
-        0,
-        complain_overflow_dont,
-        bfin_const_reloc,
-        "R_expst_const",
-        FALSE,
-        0,
-        0,
-        FALSE),
-
-  HOWTO (R_add,
-        0,
-        0,
-        0,
-        FALSE,
-        0,
-        complain_overflow_dont,
-        bfin_oper_reloc,
-        "R_expst_add",
-        FALSE,
-        0,
-        0,
-        FALSE),
-
-  HOWTO (R_sub,
-        0,
-        0,
-        0,
-        FALSE,
-        0,
-        complain_overflow_dont,
-        bfin_oper_reloc,
-        "R_expst_sub",
-        FALSE,
-        0,
-        0,
-        FALSE),
-
-  HOWTO (R_mult,
-        0,
-        0,
-        0,
-        FALSE,
-        0,
-        complain_overflow_dont,
-        bfin_oper_reloc,
-        "R_expst_mult",
-        FALSE,
-        0,
-        0,
-        FALSE),
-
-  HOWTO (R_div,                        /* type.  */
+static reloc_howto_type bfin_gnuext_howto_table [] =
+{
+  HOWTO (R_pltpc,              /* type.  */
         0,                     /* rightshift.  */
-        0,                     /* size (0 = byte, 1 = short, 2 = long).  */
-        0,                     /* bitsize.  */
+        1,                     /* size (0 = byte, 1 = short, 2 = long).  */
+        16,                    /* bitsize.  */
         FALSE,                 /* pc_relative.  */
         0,                     /* bitpos.  */
-        complain_overflow_dont, /* complain_on_overflow.  */
-        bfin_oper_reloc,       /* special_function.  */
-        "R_expst_div",         /* name.  */
+        complain_overflow_bitfield, /* complain_on_overflow.  */
+        bfin_pltpc_reloc,      /* special_function.  */
+        "R_pltpc",             /* name.  */
         FALSE,                 /* partial_inplace.  */
-        0,                     /* src_mask.  */
-        0,                     /* dst_mask.  */
+        0xffff,                /* src_mask.  */
+        0xffff,                /* dst_mask.  */
         FALSE),                /* pcrel_offset.  */
 
-  HOWTO (R_mod,                        /* type.  */
+  HOWTO (R_got,                        /* type.  */
         0,                     /* rightshift.  */
-        0,                     /* size (0 = byte, 1 = short, 2 = long).  */
-        0,                     /* bitsize.  */
+        1,                     /* size (0 = byte, 1 = short, 2 = long).  */
+        16,                    /* bitsize.  */
         FALSE,                 /* pc_relative.  */
         0,                     /* bitpos.  */
-        complain_overflow_dont, /* complain_on_overflow.  */
-        bfin_oper_reloc,       /* special_function.  */
-        "R_expst_mod",         /* name.  */
+        complain_overflow_bitfield, /* complain_on_overflow.  */
+        bfd_elf_generic_reloc, /* special_function.  */
+        "R_got",               /* name.  */
         FALSE,                 /* partial_inplace.  */
-        0,                     /* src_mask.  */
-        0,                     /* dst_mask.  */
-        FALSE),                /* pcrel_offset.  */
-
-  HOWTO (R_lshift,             /* type.  */
-        0,                     /* rightshift.  */
-        0,                     /* size (0 = byte, 1 = short, 2 = long).  */
-        0,                     /* bitsize.  */
-        FALSE,                 /* pc_relative.  */
-        0,                     /* bitpos.  */
-        complain_overflow_dont, /* complain_on_overflow.  */
-        bfin_oper_reloc,       /* special_function.  */
-        "R_expst_lshift",      /* name.  */
-        FALSE,                 /* partial_inplace.  */
-        0,                     /* src_mask.  */
-        0,                     /* dst_mask.  */
-        FALSE),                /* pcrel_offset.  */
-
-  HOWTO (R_rshift,             /* type.  */
-        0,                     /* rightshift.  */
-        0,                     /* size (0 = byte, 1 = short, 2 = long).  */
-        0,                     /* bitsize.  */
-        FALSE,                 /* pc_relative.  */
-        0,                     /* bitpos.  */
-        complain_overflow_dont, /* complain_on_overflow.  */
-        bfin_oper_reloc,       /* special_function.  */
-        "R_expst_rshift",      /* name.  */
-        FALSE,                 /* partial_inplace.  */
-        0,                     /* src_mask.  */
-        0,                     /* dst_mask.  */
-        FALSE),                /* pcrel_offset.  */
-
-  HOWTO (R_and,                        /* type.  */
-        0,                     /* rightshift.  */
-        0,                     /* size (0 = byte, 1 = short, 2 = long).  */
-        0,                     /* bitsize.  */
-        FALSE,                 /* pc_relative.  */
-        0,                     /* bitpos.  */
-        complain_overflow_dont, /* complain_on_overflow.  */
-        bfin_oper_reloc,       /* special_function.  */
-        "R_expst_and",         /* name.  */
-        FALSE,                 /* partial_inplace.  */
-        0,                     /* src_mask.  */
-        0,                     /* dst_mask.  */
-        FALSE),                /* pcrel_offset.  */
-
-  HOWTO (R_or,                 /* type.  */
-        0,                     /* rightshift.  */
-        0,                     /* size (0 = byte, 1 = short, 2 = long).  */
-        0,                     /* bitsize.  */
-        FALSE,                 /* pc_relative.  */
-        0,                     /* bitpos.  */
-        complain_overflow_dont, /* complain_on_overflow.  */
-        bfin_oper_reloc,       /* special_function.  */
-        "R_expst_or",          /* name.  */
-        FALSE,                 /* partial_inplace.  */
-        0,                     /* src_mask.  */
-        0,                     /* dst_mask.  */
-        FALSE),                /* pcrel_offset.  */
-
-  HOWTO (R_xor,                        /* type.  */
-        0,                     /* rightshift.  */
-        0,                     /* size (0 = byte, 1 = short, 2 = long).  */
-        0,                     /* bitsize.  */
-        FALSE,                 /* pc_relative.  */
-        0,                     /* bitpos.  */
-        complain_overflow_dont, /* complain_on_overflow.  */
-        bfin_oper_reloc,       /* special_function.  */
-        "R_expst_xor",         /* name.  */
-        FALSE,                 /* partial_inplace.  */
-        0,                     /* src_mask.  */
-        0,                     /* dst_mask.  */
-        FALSE),                /* pcrel_offset.  */
-
-  HOWTO (R_land,               /* type.  */
-        0,                     /* rightshift.  */
-        0,                     /* size (0 = byte, 1 = short, 2 = long).  */
-        0,                     /* bitsize.  */
-        FALSE,                 /* pc_relative.  */
-        0,                     /* bitpos.  */
-        complain_overflow_dont, /* complain_on_overflow.  */
-        bfin_oper_reloc,       /* special_function.  */
-        "R_expst_land",        /* name.  */
-        FALSE,                 /* partial_inplace.  */
-        0,                     /* src_mask.  */
-        0,                     /* dst_mask.  */
-        FALSE),                /* pcrel_offset.  */
-
-  HOWTO (R_lor,                        /* type.  */
-        0,                     /* rightshift.  */
-        0,                     /* size (0 = byte, 1 = short, 2 = long).  */
-        0,                     /* bitsize.  */
-        FALSE,                 /* pc_relative.  */
-        0,                     /* bitpos.  */
-        complain_overflow_dont, /* complain_on_overflow.  */
-        bfin_oper_reloc,       /* special_function.  */
-        "R_expst_lor",         /* name.  */
-        FALSE,                 /* partial_inplace.  */
-        0,                     /* src_mask.  */
-        0,                     /* dst_mask.  */
-        FALSE),                /* pcrel_offset.  */
-
-  HOWTO (R_len,                        /* type.  */
-        0,                     /* rightshift.  */
-        0,                     /* size (0 = byte, 1 = short, 2 = long).  */
-        0,                     /* bitsize.  */
-        FALSE,                 /* pc_relative.  */
-        0,                     /* bitpos.  */
-        complain_overflow_dont, /* complain_on_overflow.  */
-        bfin_oper_reloc,       /* special_function.  */
-        "R_expst_len",         /* name.  */
-        FALSE,                 /* partial_inplace.  */
-        0,                     /* src_mask.  */
-        0,                     /* dst_mask.  */
-        FALSE),                /* pcrel_offset.  */
-
-  HOWTO (R_neg,                        /* type.  */
-        0,                     /* rightshift.  */
-        0,                     /* size (0 = byte, 1 = short, 2 = long).  */
-        0,                     /* bitsize.  */
-        FALSE,                 /* pc_relative.  */
-        0,                     /* bitpos.  */
-        complain_overflow_dont, /* complain_on_overflow.  */
-        bfin_oper_reloc,       /* special_function.  */
-        "R_expst_neg",         /* name.  */
-        FALSE,                 /* partial_inplace.  */
-        0,                     /* src_mask.  */
-        0,                     /* dst_mask.  */
-        FALSE),                /* pcrel_offset.  */
-
-  HOWTO (R_comp,               /* type.  */
-        0,                     /* rightshift.  */
-        0,                     /* size (0 = byte, 1 = short, 2 = long).  */
-        0,                     /* bitsize.  */
-        FALSE,                 /* pc_relative.  */
-        0,                     /* bitpos.  */
-        complain_overflow_dont, /* complain_on_overflow.  */
-        bfin_oper_reloc,       /* special_function.  */
-        "R_expst_comp",        /* name.  */
-        FALSE,                 /* partial_inplace.  */
-        0,                     /* src_mask.  */
-        0,                     /* dst_mask.  */
-        FALSE),                /* pcrel_offset.  */
-  
-  HOWTO (R_page,               /* type.  */
-        0,                     /* rightshift.  */
-        0,                     /* size (0 = byte, 1 = short, 2 = long).  */
-        0,                     /* bitsize.  */
-        FALSE,                 /* pc_relative.  */
-        0,                     /* bitpos.  */
-        complain_overflow_dont, /* complain_on_overflow.  */
-        bfin_oper_reloc,       /* special_function.  */
-        "R_expst_page",        /* name.  */
-        FALSE,                 /* partial_inplace.  */
-        0,                     /* src_mask.  */
-        0,                     /* dst_mask.  */
-        FALSE),                /* pcrel_offset.  */
-  
-  HOWTO (R_hwpage,             /* type.  */
-        0,                     /* rightshift.  */
-        0,                     /* size (0 = byte, 1 = short, 2 = long).  */
-        0,                     /* bitsize.  */
-        FALSE,                 /* pc_relative.  */
-        0,                     /* bitpos.  */
-        complain_overflow_dont, /* complain_on_overflow.  */
-        bfin_oper_reloc,       /* special_function.  */
-        "R_expst_hwpage",      /* name.  */
-        FALSE,                 /* partial_inplace.  */
-        0,                     /* src_mask.  */
-        0,                     /* dst_mask.  */
-        FALSE),                /* pcrel_offset.  */
-  
-  HOWTO (R_addr,               /* type.  */
-        0,                     /* rightshift.  */
-        0,                     /* size (0 = byte, 1 = short, 2 = long).  */
-        0,                     /* bitsize.  */
-        FALSE,                 /* pc_relative.  */
-        0,                     /* bitpos.  */
-        complain_overflow_dont, /* complain_on_overflow.  */
-        bfin_oper_reloc,       /* special_function.  */
-        "R_expst_addr",        /* name.  */
-        FALSE,                 /* partial_inplace.  */
-        0,                     /* src_mask.  */
-        0,                     /* dst_mask.  */
-        FALSE),                /* pcrel_offset.  */
-};
-
-static reloc_howto_type bfin_gnuext_howto_table [] =
-{
-  HOWTO (R_pltpc,              /* type.  */
-        0,                     /* rightshift.  */
-        1,                     /* size (0 = byte, 1 = short, 2 = long).  */
-        16,                    /* bitsize.  */
-        FALSE,                 /* pc_relative.  */
-        0,                     /* bitpos.  */
-        complain_overflow_bitfield, /* complain_on_overflow.  */
-        bfin_pltpc_reloc,      /* special_function.  */
-        "R_pltpc",             /* name.  */
-        FALSE,                 /* partial_inplace.  */
-        0xffff,                /* src_mask.  */
-        0xffff,                /* dst_mask.  */
-        FALSE),                /* pcrel_offset.  */
-
-  HOWTO (R_got,                        /* type.  */
-        0,                     /* rightshift.  */
-        1,                     /* size (0 = byte, 1 = short, 2 = long).  */
-        16,                    /* bitsize.  */
-        FALSE,                 /* pc_relative.  */
-        0,                     /* bitpos.  */
-        complain_overflow_bitfield, /* complain_on_overflow.  */
-        bfd_elf_generic_reloc, /* special_function.  */
-        "R_got",               /* name.  */
-        FALSE,                 /* partial_inplace.  */
-        0x7fff,                /* src_mask.  */
-        0x7fff,                /* dst_mask.  */
+        0x7fff,                /* src_mask.  */
+        0x7fff,                /* dst_mask.  */
         FALSE),                /* pcrel_offset.  */
 
 /* GNU extension to record C++ vtable hierarchy.  */
@@ -1389,29 +1019,24 @@ static const struct bfin_reloc_map bfin_reloc_map [] =
   { BFD_RELOC_BFIN_11_PCREL,           R_pcrel11 },
   { BFD_RELOC_BFIN_GOT,                        R_got },
   { BFD_RELOC_BFIN_PLTPC,              R_pltpc },
+
+  { BFD_RELOC_BFIN_GOT17M4,      R_BFIN_GOT17M4 },
+  { BFD_RELOC_BFIN_GOTHI,      R_BFIN_GOTHI },
+  { BFD_RELOC_BFIN_GOTLO,      R_BFIN_GOTLO },
+  { BFD_RELOC_BFIN_FUNCDESC,   R_BFIN_FUNCDESC },
+  { BFD_RELOC_BFIN_FUNCDESC_GOT17M4, R_BFIN_FUNCDESC_GOT17M4 },
+  { BFD_RELOC_BFIN_FUNCDESC_GOTHI, R_BFIN_FUNCDESC_GOTHI },
+  { BFD_RELOC_BFIN_FUNCDESC_GOTLO, R_BFIN_FUNCDESC_GOTLO },
+  { BFD_RELOC_BFIN_FUNCDESC_VALUE, R_BFIN_FUNCDESC_VALUE },
+  { BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4, R_BFIN_FUNCDESC_GOTOFF17M4 },
+  { BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI, R_BFIN_FUNCDESC_GOTOFFHI },
+  { BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO, R_BFIN_FUNCDESC_GOTOFFLO },
+  { BFD_RELOC_BFIN_GOTOFF17M4,   R_BFIN_GOTOFF17M4 },
+  { BFD_RELOC_BFIN_GOTOFFHI,   R_BFIN_GOTOFFHI },
+  { BFD_RELOC_BFIN_GOTOFFLO,   R_BFIN_GOTOFFLO },
+
   { BFD_RELOC_VTABLE_INHERIT,          R_BFIN_GNU_VTINHERIT },
   { BFD_RELOC_VTABLE_ENTRY,            R_BFIN_GNU_VTENTRY },
-  { BFD_ARELOC_BFIN_PUSH,              R_push },
-  { BFD_ARELOC_BFIN_CONST,             R_const },
-  { BFD_ARELOC_BFIN_ADD,               R_add },
-  { BFD_ARELOC_BFIN_SUB,               R_sub },
-  { BFD_ARELOC_BFIN_MULT,              R_mult },
-  { BFD_ARELOC_BFIN_DIV,               R_div },
-  { BFD_ARELOC_BFIN_MOD,               R_mod },
-  { BFD_ARELOC_BFIN_LSHIFT,            R_lshift },
-  { BFD_ARELOC_BFIN_RSHIFT,            R_rshift },
-  { BFD_ARELOC_BFIN_AND,               R_and },
-  { BFD_ARELOC_BFIN_OR,                        R_or },
-  { BFD_ARELOC_BFIN_XOR,               R_xor },
-  { BFD_ARELOC_BFIN_LAND,              R_land },
-  { BFD_ARELOC_BFIN_LOR,               R_lor },
-  { BFD_ARELOC_BFIN_LEN,               R_len },
-  { BFD_ARELOC_BFIN_NEG,               R_neg },
-  { BFD_ARELOC_BFIN_COMP,              R_comp },
-  { BFD_ARELOC_BFIN_PAGE,              R_page },
-  { BFD_ARELOC_BFIN_HWPAGE,            R_hwpage },
-  { BFD_ARELOC_BFIN_ADDR,              R_addr }
-
 };
 
 
@@ -1427,9 +1052,6 @@ bfin_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
   if (r_type <= BFIN_RELOC_MAX)
     cache_ptr->howto = &bfin_howto_table [r_type];
 
-  else if (r_type >= BFIN_ARELOC_MIN && r_type <= BFIN_ARELOC_MAX)
-    cache_ptr->howto = &bfin_areloc_howto_table [r_type - BFIN_ARELOC_MIN];
-
   else if (r_type >= BFIN_GNUEXT_RELOC_MIN && r_type <= BFIN_GNUEXT_RELOC_MAX)
     cache_ptr->howto = &bfin_gnuext_howto_table [r_type - BFIN_GNUEXT_RELOC_MIN];
 
@@ -1452,9 +1074,6 @@ bfin_bfd_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED,
   if (r_type <= BFIN_RELOC_MAX && r_type > BFIN_RELOC_MIN)
     return &bfin_howto_table [r_type];
 
-  else if (r_type >= BFIN_ARELOC_MIN && r_type <= BFIN_ARELOC_MAX)
-   return &bfin_areloc_howto_table [r_type - BFIN_ARELOC_MIN];
-
   else if (r_type >= BFIN_GNUEXT_RELOC_MIN && r_type <= BFIN_GNUEXT_RELOC_MAX)
    return &bfin_gnuext_howto_table [r_type - BFIN_GNUEXT_RELOC_MIN];
 
@@ -1469,9 +1088,6 @@ bfin_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED,
   if (r_type <= BFIN_RELOC_MAX)
     return &bfin_howto_table [r_type];
 
-  else if (r_type >= BFIN_ARELOC_MIN && r_type <= BFIN_ARELOC_MAX)
-   return &bfin_areloc_howto_table [r_type - BFIN_ARELOC_MIN];
-
   else if (r_type >= BFIN_GNUEXT_RELOC_MIN && r_type <= BFIN_GNUEXT_RELOC_MAX)
    return &bfin_gnuext_howto_table [r_type - BFIN_GNUEXT_RELOC_MIN];
 
@@ -1492,96 +1108,887 @@ bfin_is_local_label_name (
   return _bfd_elf_is_local_label_name (abfd, label);
 }
 
+extern const bfd_target bfd_elf32_bfinfdpic_vec;
+#define IS_FDPIC(bfd) ((bfd)->xvec == &bfd_elf32_bfinfdpic_vec)
 
-/* Look through the relocs for a section during the first phase, and
-   allocate space in the global offset table or procedure linkage
-   table.  */
-
-static bfd_boolean
-bfin_check_relocs (bfd * abfd,
-                  struct bfd_link_info *info,
-                  asection *sec,
-                   const Elf_Internal_Rela *relocs)
+/* An extension of the elf hash table data structure, containing some
+   additional Blackfin-specific data.  */
+struct bfinfdpic_elf_link_hash_table
 {
-  bfd *dynobj;
-  Elf_Internal_Shdr *symtab_hdr;
-  struct elf_link_hash_entry **sym_hashes;
-  bfd_signed_vma *local_got_refcounts;
-  const Elf_Internal_Rela *rel;
-  const Elf_Internal_Rela *rel_end;
+  struct elf_link_hash_table elf;
+
+  /* A pointer to the .got section.  */
   asection *sgot;
-  asection *srelgot;
-  asection *sreloc;
-  if (info->relocatable)
-    return TRUE;
+  /* A pointer to the .rel.got section.  */
+  asection *sgotrel;
+  /* A pointer to the .rofixup section.  */
+  asection *sgotfixup;
+  /* A pointer to the .plt section.  */
+  asection *splt;
+  /* A pointer to the .rel.plt section.  */
+  asection *spltrel;
+  /* GOT base offset.  */
+  bfd_vma got0;
+  /* Location of the first non-lazy PLT entry, i.e., the number of
+     bytes taken by lazy PLT entries.  */
+  bfd_vma plt0;
+  /* A hash table holding information about which symbols were
+     referenced with which PIC-related relocations.  */
+  struct htab *relocs_info;
+};
 
-  dynobj = elf_hash_table (info)->dynobj;
-  symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
-  sym_hashes = elf_sym_hashes (abfd);
-  local_got_refcounts = elf_local_got_refcounts (abfd);
+/* Get the Blackfin ELF linker hash table from a link_info structure.  */
+
+#define bfinfdpic_hash_table(info) \
+  ((struct bfinfdpic_elf_link_hash_table *) ((info)->hash))
+
+#define bfinfdpic_got_section(info) \
+  (bfinfdpic_hash_table (info)->sgot)
+#define bfinfdpic_gotrel_section(info) \
+  (bfinfdpic_hash_table (info)->sgotrel)
+#define bfinfdpic_gotfixup_section(info) \
+  (bfinfdpic_hash_table (info)->sgotfixup)
+#define bfinfdpic_plt_section(info) \
+  (bfinfdpic_hash_table (info)->splt)
+#define bfinfdpic_pltrel_section(info) \
+  (bfinfdpic_hash_table (info)->spltrel)
+#define bfinfdpic_relocs_info(info) \
+  (bfinfdpic_hash_table (info)->relocs_info)
+#define bfinfdpic_got_initial_offset(info) \
+  (bfinfdpic_hash_table (info)->got0)
+#define bfinfdpic_plt_initial_offset(info) \
+  (bfinfdpic_hash_table (info)->plt0)
+
+/* Create a Blackfin ELF linker hash table.  */
 
-  sgot = NULL;
-  srelgot = NULL;
-  sreloc = NULL;
+static struct bfd_link_hash_table *
+bfinfdpic_elf_link_hash_table_create (bfd *abfd)
+{
+  struct bfinfdpic_elf_link_hash_table *ret;
+  bfd_size_type amt = sizeof (struct bfinfdpic_elf_link_hash_table);
 
-  rel_end = relocs + sec->reloc_count;
-  for (rel = relocs; rel < rel_end; rel++)
+  ret = bfd_zalloc (abfd, amt);
+  if (ret == NULL)
+    return NULL;
+
+  if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd,
+                                     _bfd_elf_link_hash_newfunc,
+                                     sizeof (struct elf_link_hash_entry)))
     {
-      unsigned long r_symndx;
-      struct elf_link_hash_entry *h;
+      free (ret);
+      return NULL;
+    }
 
-      r_symndx = ELF32_R_SYM (rel->r_info);
-      if (r_symndx < symtab_hdr->sh_info)
-       h = NULL;
-      else
-       h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+  return &ret->elf.root;
+}
 
-      switch (ELF32_R_TYPE (rel->r_info))
-       {
-       /* This relocation describes the C++ object vtable hierarchy.
-           Reconstruct it for later use during GC.  */
-        case R_BFIN_GNU_VTINHERIT:
-          if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-            return FALSE;
-          break;
+/* Decide whether a reference to a symbol can be resolved locally or
+   not.  If the symbol is protected, we want the local address, but
+   its function descriptor must be assigned by the dynamic linker.  */
+#define BFINFDPIC_SYM_LOCAL(INFO, H) \
+  (_bfd_elf_symbol_refs_local_p ((H), (INFO), 1) \
+   || ! elf_hash_table (INFO)->dynamic_sections_created)
+#define BFINFDPIC_FUNCDESC_LOCAL(INFO, H) \
+  ((H)->dynindx == -1 || ! elf_hash_table (INFO)->dynamic_sections_created)
+
+/* This structure collects information on what kind of GOT, PLT or
+   function descriptors are required by relocations that reference a
+   certain symbol.  */
+struct bfinfdpic_relocs_info
+{
+  /* The index of the symbol, as stored in the relocation r_info, if
+     we have a local symbol; -1 otherwise.  */
+  long symndx;
+  union
+  {
+    /* The input bfd in which the symbol is defined, if it's a local
+       symbol.  */
+    bfd *abfd;
+    /* If symndx == -1, the hash table entry corresponding to a global
+       symbol (even if it turns out to bind locally, in which case it
+       should ideally be replaced with section's symndx + addend).  */
+    struct elf_link_hash_entry *h;
+  } d;
+  /* The addend of the relocation that references the symbol.  */
+  bfd_vma addend;
+
+  /* The fields above are used to identify an entry.  The fields below
+     contain information on how an entry is used and, later on, which
+     locations it was assigned.  */
+  /* The following 2 fields record whether the symbol+addend above was
+     ever referenced with a GOT relocation.  The 17M4 suffix indicates a
+     GOT17M4 relocation; hilo is used for GOTLO/GOTHI pairs.  */
+  unsigned got17m4:1;
+  unsigned gothilo:1;
+  /* Whether a FUNCDESC relocation references symbol+addend.  */
+  unsigned fd:1;
+  /* Whether a FUNCDESC_GOT relocation references symbol+addend.  */
+  unsigned fdgot17m4:1;
+  unsigned fdgothilo:1;
+  /* Whether a FUNCDESC_GOTOFF relocation references symbol+addend.  */
+  unsigned fdgoff17m4:1;
+  unsigned fdgoffhilo:1;
+  /* Whether symbol+addend is referenced with GOTOFF17M4, GOTOFFLO or
+     GOTOFFHI relocations.  The addend doesn't really matter, since we
+     envision that this will only be used to check whether the symbol
+     is mapped to the same segment as the got.  */
+  unsigned gotoff:1;
+  /* Whether symbol+addend is referenced by a LABEL24 relocation.  */
+  unsigned call:1;
+  /* Whether symbol+addend is referenced by a 32 or FUNCDESC_VALUE
+     relocation.  */
+  unsigned sym:1;
+  /* Whether we need a PLT entry for a symbol.  Should be implied by
+     something like:
+     (call && symndx == -1 && ! BFINFDPIC_SYM_LOCAL (info, d.h))  */
+  unsigned plt:1;
+  /* Whether a function descriptor should be created in this link unit
+     for symbol+addend.  Should be implied by something like:
+     (plt || fdgotoff17m4 || fdgotofflohi
+      || ((fd || fdgot17m4 || fdgothilo)
+          && (symndx != -1 || BFINFDPIC_FUNCDESC_LOCAL (info, d.h))))  */
+  unsigned privfd:1;
+  /* Whether a lazy PLT entry is needed for this symbol+addend.
+     Should be implied by something like:
+     (privfd && symndx == -1 && ! BFINFDPIC_SYM_LOCAL (info, d.h)
+      && ! (info->flags & DF_BIND_NOW))  */
+  unsigned lazyplt:1;
+  /* Whether we've already emitted GOT relocations and PLT entries as
+     needed for this symbol.  */
+  unsigned done:1;
+
+  /* The number of R_byte4_data, R_BFIN_FUNCDESC and R_BFIN_FUNCDESC_VALUE
+     relocations referencing the symbol.  */
+  unsigned relocs32, relocsfd, relocsfdv;
+
+  /* The number of .rofixups entries and dynamic relocations allocated
+     for this symbol, minus any that might have already been used.  */
+  unsigned fixups, dynrelocs;
+
+  /* The offsets of the GOT entries assigned to symbol+addend, to the
+     function descriptor's address, and to a function descriptor,
+     respectively.  Should be zero if unassigned.  The offsets are
+     counted from the value that will be assigned to the PIC register,
+     not from the beginning of the .got section.  */
+  bfd_signed_vma got_entry, fdgot_entry, fd_entry;
+  /* The offsets of the PLT entries assigned to symbol+addend,
+     non-lazy and lazy, respectively.  If unassigned, should be
+     (bfd_vma)-1.  */
+  bfd_vma plt_entry, lzplt_entry;
+};
 
-        /* This relocation describes which C++ vtable entries
-           are actually used.  Record for later use during GC.  */
-        case R_BFIN_GNU_VTENTRY:
-          if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-            return FALSE;
-          break;
+/* Compute a hash with the key fields of an bfinfdpic_relocs_info entry.  */
+static hashval_t
+bfinfdpic_relocs_info_hash (const void *entry_)
+{
+  const struct bfinfdpic_relocs_info *entry = entry_;
 
-       case R_got:
-         if (h != NULL
-             && strcmp (h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
-           break;
-         /* Fall through.  */
+  return (entry->symndx == -1
+         ? (long) entry->d.h->root.root.hash
+         : entry->symndx + (long) entry->d.abfd->id * 257) + entry->addend;
+}
 
-         if (dynobj == NULL)
-           {
-             /* Create the .got section.  */
-             elf_hash_table (info)->dynobj = dynobj = abfd;
-             if (!_bfd_elf_create_got_section (dynobj, info))
-               return FALSE;
-           }
+/* Test whether the key fields of two bfinfdpic_relocs_info entries are
+   identical.  */
+static int
+bfinfdpic_relocs_info_eq (const void *entry1, const void *entry2)
+{
+  const struct bfinfdpic_relocs_info *e1 = entry1;
+  const struct bfinfdpic_relocs_info *e2 = entry2;
 
-         if (sgot == NULL)
-           {
-             sgot = bfd_get_section_by_name (dynobj, ".got");
-             BFD_ASSERT (sgot != NULL);
-           }
+  return e1->symndx == e2->symndx && e1->addend == e2->addend
+    && (e1->symndx == -1 ? e1->d.h == e2->d.h : e1->d.abfd == e2->d.abfd);
+}
 
-         if (srelgot == NULL && (h != NULL || info->shared))
-           {
-             srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
-             if (srelgot == NULL)
-               {
-                 srelgot = bfd_make_section (dynobj, ".rela.got");
-                 if (srelgot == NULL
-                     || !bfd_set_section_flags (dynobj, srelgot,
-                                                (SEC_ALLOC
-                                                 | SEC_LOAD
+/* Find or create an entry in a hash table HT that matches the key
+   fields of the given ENTRY.  If it's not found, memory for a new
+   entry is allocated in ABFD's obstack.  */
+static struct bfinfdpic_relocs_info *
+bfinfdpic_relocs_info_find (struct htab *ht,
+                          bfd *abfd,
+                          const struct bfinfdpic_relocs_info *entry,
+                          enum insert_option insert)
+{
+  struct bfinfdpic_relocs_info **loc =
+    (struct bfinfdpic_relocs_info **) htab_find_slot (ht, entry, insert);
+
+  if (! loc)
+    return NULL;
+
+  if (*loc)
+    return *loc;
+
+  *loc = bfd_zalloc (abfd, sizeof (**loc));
+
+  if (! *loc)
+    return *loc;
+
+  (*loc)->symndx = entry->symndx;
+  (*loc)->d = entry->d;
+  (*loc)->addend = entry->addend;
+  (*loc)->plt_entry = (bfd_vma)-1;
+  (*loc)->lzplt_entry = (bfd_vma)-1;
+
+  return *loc;
+}
+
+/* Obtain the address of the entry in HT associated with H's symbol +
+   addend, creating a new entry if none existed.  ABFD is only used
+   for memory allocation purposes.  */
+inline static struct bfinfdpic_relocs_info *
+bfinfdpic_relocs_info_for_global (struct htab *ht,
+                                bfd *abfd,
+                                struct elf_link_hash_entry *h,
+                                bfd_vma addend,
+                                enum insert_option insert)
+{
+  struct bfinfdpic_relocs_info entry;
+
+  entry.symndx = -1;
+  entry.d.h = h;
+  entry.addend = addend;
+
+  return bfinfdpic_relocs_info_find (ht, abfd, &entry, insert);
+}
+
+/* Obtain the address of the entry in HT associated with the SYMNDXth
+   local symbol of the input bfd ABFD, plus the addend, creating a new
+   entry if none existed.  */
+inline static struct bfinfdpic_relocs_info *
+bfinfdpic_relocs_info_for_local (struct htab *ht,
+                               bfd *abfd,
+                               long symndx,
+                               bfd_vma addend,
+                               enum insert_option insert)
+{
+  struct bfinfdpic_relocs_info entry;
+
+  entry.symndx = symndx;
+  entry.d.abfd = abfd;
+  entry.addend = addend;
+
+  return bfinfdpic_relocs_info_find (ht, abfd, &entry, insert);
+}
+
+/* Merge fields set by check_relocs() of two entries that end up being
+   mapped to the same (presumably global) symbol.  */
+
+inline static void
+bfinfdpic_pic_merge_early_relocs_info (struct bfinfdpic_relocs_info *e2,
+                                     struct bfinfdpic_relocs_info const *e1)
+{
+  e2->got17m4 |= e1->got17m4;
+  e2->gothilo |= e1->gothilo;
+  e2->fd |= e1->fd;
+  e2->fdgot17m4 |= e1->fdgot17m4;
+  e2->fdgothilo |= e1->fdgothilo;
+  e2->fdgoff17m4 |= e1->fdgoff17m4;
+  e2->fdgoffhilo |= e1->fdgoffhilo;
+  e2->gotoff |= e1->gotoff;
+  e2->call |= e1->call;
+  e2->sym |= e1->sym;
+}
+
+/* Every block of 65535 lazy PLT entries shares a single call to the
+   resolver, inserted in the 32768th lazy PLT entry (i.e., entry #
+   32767, counting from 0).  All other lazy PLT entries branch to it
+   in a single instruction.  */
+
+#define LZPLT_RESOLVER_EXTRA 10
+#define LZPLT_NORMAL_SIZE 6
+#define LZPLT_ENTRIES 1362
+
+#define BFINFDPIC_LZPLT_BLOCK_SIZE ((bfd_vma) LZPLT_NORMAL_SIZE * LZPLT_ENTRIES + LZPLT_RESOLVER_EXTRA)
+#define BFINFDPIC_LZPLT_RESOLV_LOC (LZPLT_NORMAL_SIZE * LZPLT_ENTRIES / 2)
+
+/* Add a dynamic relocation to the SRELOC section.  */
+
+inline static bfd_vma
+_bfinfdpic_add_dyn_reloc (bfd *output_bfd, asection *sreloc, bfd_vma offset,
+                        int reloc_type, long dynindx, bfd_vma addend,
+                        struct bfinfdpic_relocs_info *entry)
+{
+  Elf_Internal_Rela outrel;
+  bfd_vma reloc_offset;
+
+  outrel.r_offset = offset;
+  outrel.r_info = ELF32_R_INFO (dynindx, reloc_type);
+  outrel.r_addend = addend;
+
+  reloc_offset = sreloc->reloc_count * sizeof (Elf32_External_Rel);
+  BFD_ASSERT (reloc_offset < sreloc->size);
+  bfd_elf32_swap_reloc_out (output_bfd, &outrel,
+                           sreloc->contents + reloc_offset);
+  sreloc->reloc_count++;
+
+  /* If the entry's index is zero, this relocation was probably to a
+     linkonce section that got discarded.  We reserved a dynamic
+     relocation, but it was for another entry than the one we got at
+     the time of emitting the relocation.  Unfortunately there's no
+     simple way for us to catch this situation, since the relocation
+     is cleared right before calling relocate_section, at which point
+     we no longer know what the relocation used to point to.  */
+  if (entry->symndx)
+    {
+      BFD_ASSERT (entry->dynrelocs > 0);
+      entry->dynrelocs--;
+    }
+
+  return reloc_offset;
+}
+
+/* Add a fixup to the ROFIXUP section.  */
+
+static bfd_vma
+_bfinfdpic_add_rofixup (bfd *output_bfd, asection *rofixup, bfd_vma offset,
+                      struct bfinfdpic_relocs_info *entry)
+{
+  bfd_vma fixup_offset;
+
+  if (rofixup->flags & SEC_EXCLUDE)
+    return -1;
+
+  fixup_offset = rofixup->reloc_count * 4;
+  if (rofixup->contents)
+    {
+      BFD_ASSERT (fixup_offset < rofixup->size);
+      bfd_put_32 (output_bfd, offset, rofixup->contents + fixup_offset);
+    }
+  rofixup->reloc_count++;
+
+  if (entry && entry->symndx)
+    {
+      /* See discussion about symndx == 0 in _bfinfdpic_add_dyn_reloc
+        above.  */
+      BFD_ASSERT (entry->fixups > 0);
+      entry->fixups--;
+    }
+
+  return fixup_offset;
+}
+
+/* Find the segment number in which OSEC, and output section, is
+   located.  */
+
+static unsigned
+_bfinfdpic_osec_to_segment (bfd *output_bfd, asection *osec)
+{
+  struct elf_segment_map *m;
+  Elf_Internal_Phdr *p;
+
+  /* Find the segment that contains the output_section.  */
+  for (m = elf_tdata (output_bfd)->segment_map,
+        p = elf_tdata (output_bfd)->phdr;
+       m != NULL;
+       m = m->next, p++)
+    {
+      int i;
+
+      for (i = m->count - 1; i >= 0; i--)
+       if (m->sections[i] == osec)
+         break;
+
+      if (i >= 0)
+       break;
+    }
+
+  return p - elf_tdata (output_bfd)->phdr;
+}
+
+inline static bfd_boolean
+_bfinfdpic_osec_readonly_p (bfd *output_bfd, asection *osec)
+{
+  unsigned seg = _bfinfdpic_osec_to_segment (output_bfd, osec);
+
+  return ! (elf_tdata (output_bfd)->phdr[seg].p_flags & PF_W);
+}
+
+/* Generate relocations for GOT entries, function descriptors, and
+   code for PLT and lazy PLT entries.  */
+
+inline static bfd_boolean
+_bfinfdpic_emit_got_relocs_plt_entries (struct bfinfdpic_relocs_info *entry,
+                                       bfd *output_bfd,
+                                       struct bfd_link_info *info,
+                                       asection *sec,
+                                       Elf_Internal_Sym *sym,
+                                       bfd_vma addend)
+
+{
+  bfd_vma fd_lazy_rel_offset = (bfd_vma)-1;
+  int dynindx = -1;
+
+  if (entry->done)
+    return TRUE;
+  entry->done = 1;
+
+  if (entry->got_entry || entry->fdgot_entry || entry->fd_entry)
+    {
+      /* If the symbol is dynamic, consider it for dynamic
+        relocations, otherwise decay to section + offset.  */
+      if (entry->symndx == -1 && entry->d.h->dynindx != -1)
+       dynindx = entry->d.h->dynindx;
+      else
+       {
+         if (sec->output_section
+             && ! bfd_is_abs_section (sec->output_section)
+             && ! bfd_is_und_section (sec->output_section))
+           dynindx = elf_section_data (sec->output_section)->dynindx;
+         else
+           dynindx = 0;
+       }
+    }
+
+  /* Generate relocation for GOT entry pointing to the symbol.  */
+  if (entry->got_entry)
+    {
+      int idx = dynindx;
+      bfd_vma ad = addend;
+
+      /* If the symbol is dynamic but binds locally, use
+        section+offset.  */
+      if (sec && (entry->symndx != -1
+                 || BFINFDPIC_SYM_LOCAL (info, entry->d.h)))
+       {
+         if (entry->symndx == -1)
+           ad += entry->d.h->root.u.def.value;
+         else
+           ad += sym->st_value;
+         ad += sec->output_offset;
+         if (sec->output_section && elf_section_data (sec->output_section))
+           idx = elf_section_data (sec->output_section)->dynindx;
+         else
+           idx = 0;
+       }
+
+      /* If we're linking an executable at a fixed address, we can
+        omit the dynamic relocation as long as the symbol is local to
+        this module.  */
+      if (info->executable && !info->pie
+         && (entry->symndx != -1
+             || BFINFDPIC_SYM_LOCAL (info, entry->d.h)))
+       {
+         if (sec)
+           ad += sec->output_section->vma;
+         if (entry->symndx != -1
+             || entry->d.h->root.type != bfd_link_hash_undefweak)
+           _bfinfdpic_add_rofixup (output_bfd,
+                                  bfinfdpic_gotfixup_section (info),
+                                  bfinfdpic_got_section (info)->output_section
+                                  ->vma
+                                  + bfinfdpic_got_section (info)->output_offset
+                                  + bfinfdpic_got_initial_offset (info)
+                                  + entry->got_entry, entry);
+       }
+      else
+       _bfinfdpic_add_dyn_reloc (output_bfd, bfinfdpic_gotrel_section (info),
+                                _bfd_elf_section_offset
+                                (output_bfd, info,
+                                 bfinfdpic_got_section (info),
+                                 bfinfdpic_got_initial_offset (info)
+                                 + entry->got_entry)
+                                + bfinfdpic_got_section (info)
+                                ->output_section->vma
+                                + bfinfdpic_got_section (info)->output_offset,
+                                R_byte4_data, idx, ad, entry);
+
+      bfd_put_32 (output_bfd, ad,
+                 bfinfdpic_got_section (info)->contents
+                 + bfinfdpic_got_initial_offset (info)
+                 + entry->got_entry);
+    }
+
+  /* Generate relocation for GOT entry pointing to a canonical
+     function descriptor.  */
+  if (entry->fdgot_entry)
+    {
+      int reloc, idx;
+      bfd_vma ad = 0;
+
+      if (! (entry->symndx == -1
+            && entry->d.h->root.type == bfd_link_hash_undefweak
+            && BFINFDPIC_SYM_LOCAL (info, entry->d.h)))
+       {
+         /* If the symbol is dynamic and there may be dynamic symbol
+            resolution because we are, or are linked with, a shared
+            library, emit a FUNCDESC relocation such that the dynamic
+            linker will allocate the function descriptor.  If the
+            symbol needs a non-local function descriptor but binds
+            locally (e.g., its visibility is protected, emit a
+            dynamic relocation decayed to section+offset.  */
+         if (entry->symndx == -1
+             && ! BFINFDPIC_FUNCDESC_LOCAL (info, entry->d.h)
+             && BFINFDPIC_SYM_LOCAL (info, entry->d.h)
+             && !(info->executable && !info->pie))
+           {
+             reloc = R_BFIN_FUNCDESC;
+             idx = elf_section_data (entry->d.h->root.u.def.section
+                                     ->output_section)->dynindx;
+             ad = entry->d.h->root.u.def.section->output_offset
+               + entry->d.h->root.u.def.value;
+           }
+         else if (entry->symndx == -1
+                  && ! BFINFDPIC_FUNCDESC_LOCAL (info, entry->d.h))
+           {
+             reloc = R_BFIN_FUNCDESC;
+             idx = dynindx;
+             ad = addend;
+             if (ad)
+               return FALSE;
+           }
+         else
+           {
+             /* Otherwise, we know we have a private function descriptor,
+                so reference it directly.  */
+             if (elf_hash_table (info)->dynamic_sections_created)
+               BFD_ASSERT (entry->privfd);
+             reloc = R_byte4_data;
+             idx = elf_section_data (bfinfdpic_got_section (info)
+                                     ->output_section)->dynindx;
+             ad = bfinfdpic_got_section (info)->output_offset
+               + bfinfdpic_got_initial_offset (info) + entry->fd_entry;
+           }
+
+         /* If there is room for dynamic symbol resolution, emit the
+            dynamic relocation.  However, if we're linking an
+            executable at a fixed location, we won't have emitted a
+            dynamic symbol entry for the got section, so idx will be
+            zero, which means we can and should compute the address
+            of the private descriptor ourselves.  */
+         if (info->executable && !info->pie
+             && (entry->symndx != -1
+                 || BFINFDPIC_FUNCDESC_LOCAL (info, entry->d.h)))
+           {
+             ad += bfinfdpic_got_section (info)->output_section->vma;
+             _bfinfdpic_add_rofixup (output_bfd,
+                                    bfinfdpic_gotfixup_section (info),
+                                    bfinfdpic_got_section (info)
+                                    ->output_section->vma
+                                    + bfinfdpic_got_section (info)
+                                    ->output_offset
+                                    + bfinfdpic_got_initial_offset (info)
+                                    + entry->fdgot_entry, entry);
+           }
+         else
+           _bfinfdpic_add_dyn_reloc (output_bfd,
+                                    bfinfdpic_gotrel_section (info),
+                                    _bfd_elf_section_offset
+                                    (output_bfd, info,
+                                     bfinfdpic_got_section (info),
+                                     bfinfdpic_got_initial_offset (info)
+                                     + entry->fdgot_entry)
+                                    + bfinfdpic_got_section (info)
+                                    ->output_section->vma
+                                    + bfinfdpic_got_section (info)
+                                    ->output_offset,
+                                    reloc, idx, ad, entry);
+       }
+
+      bfd_put_32 (output_bfd, ad,
+                 bfinfdpic_got_section (info)->contents
+                 + bfinfdpic_got_initial_offset (info)
+                 + entry->fdgot_entry);
+    }
+
+  /* Generate relocation to fill in a private function descriptor in
+     the GOT.  */
+  if (entry->fd_entry)
+    {
+      int idx = dynindx;
+      bfd_vma ad = addend;
+      bfd_vma ofst;
+      long lowword, highword;
+
+      /* If the symbol is dynamic but binds locally, use
+        section+offset.  */
+      if (sec && (entry->symndx != -1
+                 || BFINFDPIC_SYM_LOCAL (info, entry->d.h)))
+       {
+         if (entry->symndx == -1)
+           ad += entry->d.h->root.u.def.value;
+         else
+           ad += sym->st_value;
+         ad += sec->output_offset;
+         if (sec->output_section && elf_section_data (sec->output_section))
+           idx = elf_section_data (sec->output_section)->dynindx;
+         else
+           idx = 0;
+       }
+
+      /* If we're linking an executable at a fixed address, we can
+        omit the dynamic relocation as long as the symbol is local to
+        this module.  */
+      if (info->executable && !info->pie
+         && (entry->symndx != -1 || BFINFDPIC_SYM_LOCAL (info, entry->d.h)))
+       {
+         if (sec)
+           ad += sec->output_section->vma;
+         ofst = 0;
+         if (entry->symndx != -1
+             || entry->d.h->root.type != bfd_link_hash_undefweak)
+           {
+             _bfinfdpic_add_rofixup (output_bfd,
+                                    bfinfdpic_gotfixup_section (info),
+                                    bfinfdpic_got_section (info)
+                                    ->output_section->vma
+                                    + bfinfdpic_got_section (info)
+                                    ->output_offset
+                                    + bfinfdpic_got_initial_offset (info)
+                                    + entry->fd_entry, entry);
+             _bfinfdpic_add_rofixup (output_bfd,
+                                    bfinfdpic_gotfixup_section (info),
+                                    bfinfdpic_got_section (info)
+                                    ->output_section->vma
+                                    + bfinfdpic_got_section (info)
+                                    ->output_offset
+                                    + bfinfdpic_got_initial_offset (info)
+                                    + entry->fd_entry + 4, entry);
+           }
+       }
+      else
+       {
+         ofst
+           = _bfinfdpic_add_dyn_reloc (output_bfd,
+                                       entry->lazyplt
+                                       ? bfinfdpic_pltrel_section (info)
+                                       : bfinfdpic_gotrel_section (info),
+                                       _bfd_elf_section_offset
+                                       (output_bfd, info,
+                                        bfinfdpic_got_section (info),
+                                        bfinfdpic_got_initial_offset (info)
+                                        + entry->fd_entry)
+                                       + bfinfdpic_got_section (info)
+                                       ->output_section->vma
+                                       + bfinfdpic_got_section (info)
+                                       ->output_offset,
+                                       R_BFIN_FUNCDESC_VALUE, idx, ad, entry);
+       }
+
+      /* If we've omitted the dynamic relocation, just emit the fixed
+        addresses of the symbol and of the local GOT base offset.  */
+      if (info->executable && !info->pie && sec && sec->output_section)
+       {
+         lowword = ad;
+         highword = bfinfdpic_got_section (info)->output_section->vma
+           + bfinfdpic_got_section (info)->output_offset
+           + bfinfdpic_got_initial_offset (info);
+       }
+      else if (entry->lazyplt)
+       {
+         if (ad)
+           return FALSE;
+
+         fd_lazy_rel_offset = ofst;
+
+         /* A function descriptor used for lazy or local resolving is
+            initialized such that its high word contains the output
+            section index in which the PLT entries are located, and
+            the low word contains the address of the lazy PLT entry
+            entry point, that must be within the memory region
+            assigned to that section.  */
+         lowword = entry->lzplt_entry + 4
+           + bfinfdpic_plt_section (info)->output_offset
+           + bfinfdpic_plt_section (info)->output_section->vma;
+         highword = _bfinfdpic_osec_to_segment
+           (output_bfd, bfinfdpic_plt_section (info)->output_section);
+       }
+      else
+       {
+         /* A function descriptor for a local function gets the index
+            of the section.  For a non-local function, it's
+            disregarded.  */
+         lowword = ad;
+         if (entry->symndx == -1 && entry->d.h->dynindx != -1
+             && entry->d.h->dynindx == idx)
+           highword = 0;
+         else
+           highword = _bfinfdpic_osec_to_segment
+             (output_bfd, sec->output_section);
+       }
+
+      bfd_put_32 (output_bfd, lowword,
+                 bfinfdpic_got_section (info)->contents
+                 + bfinfdpic_got_initial_offset (info)
+                 + entry->fd_entry);
+      bfd_put_32 (output_bfd, highword,
+                 bfinfdpic_got_section (info)->contents
+                 + bfinfdpic_got_initial_offset (info)
+                 + entry->fd_entry + 4);
+    }
+
+  /* Generate code for the PLT entry.  */
+  if (entry->plt_entry != (bfd_vma) -1)
+    {
+      bfd_byte *plt_code = bfinfdpic_plt_section (info)->contents
+       + entry->plt_entry;
+
+      BFD_ASSERT (entry->fd_entry);
+
+      /* Figure out what kind of PLT entry we need, depending on the
+        location of the function descriptor within the GOT.  */
+      if (entry->fd_entry >= -(1 << (18 - 1))
+         && entry->fd_entry + 4 < (1 << (18 - 1)))
+       {
+         /* P1 = [P3 + fd_entry]; P3 = [P3 + fd_entry + 4] */
+         bfd_put_32 (output_bfd,
+                     0xe519 | ((entry->fd_entry << 14) & 0xFFFF0000),
+                     plt_code);
+         bfd_put_32 (output_bfd,
+                     0xe51b | (((entry->fd_entry + 4) << 14) & 0xFFFF0000),
+                     plt_code + 4);
+         plt_code += 8;
+       }
+      else
+       {
+         /* P1.L = fd_entry; P1.H = fd_entry;
+            P3 = P3 + P1;
+            P1 = [P3];
+            P3 = [P3 + 4];  */
+         bfd_put_32 (output_bfd,
+                     0xe109 | (entry->fd_entry << 16),
+                     plt_code);
+         bfd_put_32 (output_bfd,
+                     0xe149 | (entry->fd_entry & 0xFFFF0000),
+                     plt_code + 4);
+         bfd_put_16 (output_bfd, 0x5ad9, plt_code + 8);
+         bfd_put_16 (output_bfd, 0x9159, plt_code + 10);
+         bfd_put_16 (output_bfd, 0xac5b, plt_code + 12);
+         plt_code += 14;
+       }
+      /* JUMP (P1) */
+      bfd_put_16 (output_bfd, 0x0051, plt_code);
+    }
+
+  /* Generate code for the lazy PLT entry.  */
+  if (entry->lzplt_entry != (bfd_vma) -1)
+    {
+      bfd_byte *lzplt_code = bfinfdpic_plt_section (info)->contents
+       + entry->lzplt_entry;
+      bfd_vma resolverStub_addr;
+
+      bfd_put_32 (output_bfd, fd_lazy_rel_offset, lzplt_code);
+      lzplt_code += 4;
+
+      resolverStub_addr = entry->lzplt_entry / BFINFDPIC_LZPLT_BLOCK_SIZE
+       * BFINFDPIC_LZPLT_BLOCK_SIZE + BFINFDPIC_LZPLT_RESOLV_LOC;
+      if (resolverStub_addr >= bfinfdpic_plt_initial_offset (info))
+       resolverStub_addr = bfinfdpic_plt_initial_offset (info) - LZPLT_NORMAL_SIZE - LZPLT_RESOLVER_EXTRA;
+
+      if (entry->lzplt_entry == resolverStub_addr)
+       {
+         /* This is a lazy PLT entry that includes a resolver call.
+            P2 = [P3];
+            R3 = [P3 + 4];
+            JUMP (P2);  */
+         bfd_put_32 (output_bfd,
+                     0xa05b915a,
+                     lzplt_code);
+         bfd_put_16 (output_bfd, 0x0052, lzplt_code + 4);
+       }
+      else
+       {
+         /* JUMP.S  resolverStub */
+         bfd_put_16 (output_bfd,
+                     0x2000
+                     | (((resolverStub_addr - entry->lzplt_entry)
+                         / 2) & (((bfd_vma)1 << 12) - 1)),
+                     lzplt_code);
+       }
+    }
+
+  return TRUE;
+}
+
+
+/* Look through the relocs for a section during the first phase, and
+   allocate space in the global offset table or procedure linkage
+   table.  */
+
+static bfd_boolean
+bfin_check_relocs (bfd * abfd,
+                  struct bfd_link_info *info,
+                  asection *sec,
+                   const Elf_Internal_Rela *relocs)
+{
+  bfd *dynobj;
+  Elf_Internal_Shdr *symtab_hdr;
+  struct elf_link_hash_entry **sym_hashes;
+  bfd_signed_vma *local_got_refcounts;
+  const Elf_Internal_Rela *rel;
+  const Elf_Internal_Rela *rel_end;
+  asection *sgot;
+  asection *srelgot;
+  asection *sreloc;
+  if (info->relocatable)
+    return TRUE;
+
+  dynobj = elf_hash_table (info)->dynobj;
+  symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
+  sym_hashes = elf_sym_hashes (abfd);
+  local_got_refcounts = elf_local_got_refcounts (abfd);
+
+  sgot = NULL;
+  srelgot = NULL;
+  sreloc = NULL;
+
+  rel_end = relocs + sec->reloc_count;
+  for (rel = relocs; rel < rel_end; rel++)
+    {
+      unsigned long r_symndx;
+      struct elf_link_hash_entry *h;
+
+      r_symndx = ELF32_R_SYM (rel->r_info);
+      if (r_symndx < symtab_hdr->sh_info)
+       h = NULL;
+      else
+       h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+
+      switch (ELF32_R_TYPE (rel->r_info))
+       {
+       /* This relocation describes the C++ object vtable hierarchy.
+           Reconstruct it for later use during GC.  */
+        case R_BFIN_GNU_VTINHERIT:
+          if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
+            return FALSE;
+          break;
+
+        /* This relocation describes which C++ vtable entries
+           are actually used.  Record for later use during GC.  */
+        case R_BFIN_GNU_VTENTRY:
+          if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
+            return FALSE;
+          break;
+
+       case R_got:
+         if (h != NULL
+             && strcmp (h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
+           break;
+         /* Fall through.  */
+
+         if (dynobj == NULL)
+           {
+             /* Create the .got section.  */
+             elf_hash_table (info)->dynobj = dynobj = abfd;
+             if (!_bfd_elf_create_got_section (dynobj, info))
+               return FALSE;
+           }
+
+         if (sgot == NULL)
+           {
+             sgot = bfd_get_section_by_name (dynobj, ".got");
+             BFD_ASSERT (sgot != NULL);
+           }
+
+         if (srelgot == NULL && (h != NULL || info->shared))
+           {
+             srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
+             if (srelgot == NULL)
+               {
+                 srelgot = bfd_make_section (dynobj, ".rela.got");
+                 if (srelgot == NULL
+                     || !bfd_set_section_flags (dynobj, srelgot,
+                                                (SEC_ALLOC
+                                                 | SEC_LOAD
                                                  | SEC_HAS_CONTENTS
                                                  | SEC_IN_MEMORY
                                                  | SEC_LINKER_CREATED
@@ -1656,492 +2063,2729 @@ elf32_bfin_reloc_type_class (const Elf_Internal_Rela * rela)
       return reloc_class_normal;
     }
 }
+\f
+/* Relocate an Blackfin ELF section.
+
+   The RELOCATE_SECTION function is called by the new ELF backend linker
+   to handle the relocations for a section.
+
+   The relocs are always passed as Rela structures; if the section
+   actually uses Rel structures, the r_addend field will always be
+   zero.
+
+   This function is responsible for adjusting the section contents as
+   necessary, and (if using Rela relocs and generating a relocatable
+   output file) adjusting the reloc addend as necessary.
+
+   This function does not have to worry about setting the reloc
+   address or the reloc symbol index.
+
+   LOCAL_SYMS is a pointer to the swapped in local symbols.
+
+   LOCAL_SECTIONS is an array giving the section in the input file
+   corresponding to the st_shndx field of each local symbol.
+
+   The global hash table entry for the global symbols can be found
+   via elf_sym_hashes (input_bfd).
+
+   When generating relocatable output, this function must handle
+   STB_LOCAL/STT_SECTION symbols specially.  The output symbol is
+   going to be the section symbol corresponding to the output
+   section, which means that the addend must be adjusted
+   accordingly.  */
 
 static bfd_boolean
-bfin_relocate_section (bfd * output_bfd,
-                      struct bfd_link_info *info,
-                      bfd * input_bfd,
-                      asection * input_section,
-                      bfd_byte * contents,
-                      Elf_Internal_Rela * relocs,
-                      Elf_Internal_Sym * local_syms,
-                      asection ** local_sections)
+bfinfdpic_relocate_section (bfd * output_bfd,
+                           struct bfd_link_info *info,
+                           bfd * input_bfd,
+                           asection * input_section,
+                           bfd_byte * contents,
+                           Elf_Internal_Rela * relocs,
+                           Elf_Internal_Sym * local_syms,
+                           asection ** local_sections)
 {
-  bfd *dynobj;
   Elf_Internal_Shdr *symtab_hdr;
   struct elf_link_hash_entry **sym_hashes;
-  bfd_vma *local_got_offsets;
-  asection *sgot;
-  asection *sreloc;
   Elf_Internal_Rela *rel;
   Elf_Internal_Rela *relend;
-  int i = 0;
+  unsigned isec_segment, got_segment, plt_segment,
+    check_segment[2];
+  int silence_segment_error = !(info->shared || info->pie);
 
   if (info->relocatable)
     return TRUE;
 
-  dynobj = elf_hash_table (info)->dynobj;
-  symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
+  symtab_hdr = & elf_tdata (input_bfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (input_bfd);
-  local_got_offsets = elf_local_got_offsets (input_bfd);
-
-  sgot = NULL;
-  sreloc = NULL;
+  relend     = relocs + input_section->reloc_count;
+
+  isec_segment = _bfinfdpic_osec_to_segment (output_bfd,
+                                            input_section->output_section);
+  if (IS_FDPIC (output_bfd) && bfinfdpic_got_section (info))
+    got_segment = _bfinfdpic_osec_to_segment (output_bfd,
+                                             bfinfdpic_got_section (info)
+                                             ->output_section);
+  else
+    got_segment = -1;
+  if (IS_FDPIC (output_bfd) && elf_hash_table (info)->dynamic_sections_created)
+    plt_segment = _bfinfdpic_osec_to_segment (output_bfd,
+                                             bfinfdpic_plt_section (info)
+                                             ->output_section);
+  else
+    plt_segment = -1;
 
-  rel = relocs;
-  relend = relocs + input_section->reloc_count;
-  for (; rel < relend; rel++, i++)
+  for (rel = relocs; rel < relend; rel ++)
     {
-      int r_type;
       reloc_howto_type *howto;
       unsigned long r_symndx;
-      struct elf_link_hash_entry *h;
       Elf_Internal_Sym *sym;
       asection *sec;
-      bfd_vma relocation = 0;
-      bfd_boolean unresolved_reloc;
+      struct elf_link_hash_entry *h;
+      bfd_vma relocation;
       bfd_reloc_status_type r;
-      bfd_vma address;
+      const char * name = NULL;
+      int r_type;
+      asection *osec;
+      struct bfinfdpic_relocs_info *picrel;
+      bfd_vma orig_addend = rel->r_addend;
 
       r_type = ELF32_R_TYPE (rel->r_info);
-      if (r_type < 0 || r_type >= 243)
-       {
-         bfd_set_error (bfd_error_bad_value);
-         return FALSE;
-       }
 
-      if (r_type == R_BFIN_GNU_VTENTRY
-          || r_type == R_BFIN_GNU_VTINHERIT)
+      if (r_type == R_BFIN_GNU_VTINHERIT
+         || r_type == R_BFIN_GNU_VTENTRY)
        continue;
 
+      /* This is a final link.  */
+      r_symndx = ELF32_R_SYM (rel->r_info);
       howto = bfin_reloc_type_lookup (input_bfd, r_type);
       if (howto == NULL)
        {
          bfd_set_error (bfd_error_bad_value);
          return FALSE;
        }
-      r_symndx = ELF32_R_SYM (rel->r_info);
 
-      h = NULL;
-      sym = NULL;
-      sec = NULL;
-      unresolved_reloc = FALSE;
+      h      = NULL;
+      sym    = NULL;
+      sec    = NULL;
 
       if (r_symndx < symtab_hdr->sh_info)
        {
          sym = local_syms + r_symndx;
-         sec = local_sections[r_symndx];
+         osec = sec = local_sections [r_symndx];
          relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel);
+
+         name = bfd_elf_string_from_elf_section
+           (input_bfd, symtab_hdr->sh_link, sym->st_name);
+         name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name;
        }
       else
        {
-         h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+         h = sym_hashes [r_symndx - symtab_hdr->sh_info];
 
          while (h->root.type == bfd_link_hash_indirect
                 || h->root.type == bfd_link_hash_warning)
            h = (struct elf_link_hash_entry *) h->root.u.i.link;
 
-         if (!
-             (!strcmp (h->root.root.string, ".__constant")
-              || !strcmp (h->root.root.string, ".__operator")))
-           {
-             bfd_boolean warned;
-             h = NULL;
-             RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
-                                      r_symndx, symtab_hdr, sym_hashes,
-                                      h, sec, relocation,
-                                      unresolved_reloc, warned);
+         name = h->root.root.string;
 
+         if ((h->root.type == bfd_link_hash_defined
+              || h->root.type == bfd_link_hash_defweak)
+             && ! BFINFDPIC_SYM_LOCAL (info, h))
+           {
+             sec = NULL;
+             relocation = 0;
            }
+         else
+           if (h->root.type == bfd_link_hash_defined
+               || h->root.type == bfd_link_hash_defweak)
+             {
+               sec = h->root.u.def.section;
+               relocation = (h->root.u.def.value
+                             + sec->output_section->vma
+                             + sec->output_offset);
+             }
+           else if (h->root.type == bfd_link_hash_undefweak)
+             {
+               relocation = 0;
+             }
+           else if (info->unresolved_syms_in_objects == RM_IGNORE
+                    && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
+             relocation = 0;
+           else
+             {
+               if (! ((*info->callbacks->undefined_symbol)
+                      (info, h->root.root.string, input_bfd,
+                       input_section, rel->r_offset,
+                       (info->unresolved_syms_in_objects == RM_GENERATE_ERROR
+                        || ELF_ST_VISIBILITY (h->other)))))
+                 return FALSE;
+               relocation = 0;
+             }
+         osec = sec;
        }
 
-      address = rel->r_offset;
-      /* First, get stack relocs out of the way.  */
       switch (r_type)
        {
-       case R_push:
-         reloc_stack_push (relocation + rel->r_addend);
-         r = bfd_reloc_ok;
-         goto done_reloc;
-       case R_const:
-         reloc_stack_push (rel->r_addend);
-         r = bfd_reloc_ok;
-         goto done_reloc;
-       case R_add:
-       case R_sub:
-       case R_mult:
-       case R_div:
-       case R_mod:
-       case R_lshift:
-       case R_rshift:
-       case R_neg:
-       case R_and:
-       case R_or:
-       case R_xor:
-       case R_land:
-       case R_lor:
-       case R_comp:
-       case R_page:
-       case R_hwpage:
-         reloc_stack_operate (r_type);
-         r = bfd_reloc_ok;
-         goto done_reloc;
+       case R_pcrel24:
+       case R_pcrel24_jump_l:
+       case R_byte4_data:
+         if (! IS_FDPIC (output_bfd))
+           goto non_fdpic;
+
+       case R_BFIN_GOT17M4:
+       case R_BFIN_GOTHI:
+       case R_BFIN_GOTLO:
+       case R_BFIN_FUNCDESC_GOT17M4:
+       case R_BFIN_FUNCDESC_GOTHI:
+       case R_BFIN_FUNCDESC_GOTLO:
+       case R_BFIN_GOTOFF17M4:
+       case R_BFIN_GOTOFFHI:
+       case R_BFIN_GOTOFFLO:
+       case R_BFIN_FUNCDESC_GOTOFF17M4:
+       case R_BFIN_FUNCDESC_GOTOFFHI:
+       case R_BFIN_FUNCDESC_GOTOFFLO:
+       case R_BFIN_FUNCDESC:
+       case R_BFIN_FUNCDESC_VALUE:
+         if (h != NULL)
+           picrel = bfinfdpic_relocs_info_for_global (bfinfdpic_relocs_info
+                                                      (info), input_bfd, h,
+                                                      orig_addend, INSERT);
+         else
+           /* In order to find the entry we created before, we must
+              use the original addend, not the one that may have been
+              modified by _bfd_elf_rela_local_sym().  */
+           picrel = bfinfdpic_relocs_info_for_local (bfinfdpic_relocs_info
+                                                     (info), input_bfd, r_symndx,
+                                                     orig_addend, INSERT);
+         if (! picrel)
+           return FALSE;
+
+         if (!_bfinfdpic_emit_got_relocs_plt_entries (picrel, output_bfd, info,
+                                                      osec, sym,
+                                                      rel->r_addend))
+           {
+             (*_bfd_error_handler)
+               (_("%B: relocation at `%A+0x%x' references symbol `%s' with nonzero addend"),
+                input_bfd, input_section, rel->r_offset, name);
+             return FALSE;
+
+           }
+
+         break;
 
        default:
-         if (!is_reloc_stack_empty())
-           relocation = reloc_stack_pop ();
+       non_fdpic:
+         picrel = NULL;
+         if (h && ! BFINFDPIC_SYM_LOCAL (info, h))
+           {
+             info->callbacks->warning
+               (info, _("relocation references symbol not defined in the module"),
+                name, input_bfd, input_section, rel->r_offset);
+             return FALSE;
+           }
          break;
        }
 
-      /* Then, process normally.  */
       switch (r_type)
        {
-       case R_BFIN_GNU_VTINHERIT:
-       case R_BFIN_GNU_VTENTRY:
-         return bfd_reloc_ok;
+       case R_pcrel24:
+       case R_pcrel24_jump_l:
+         check_segment[0] = isec_segment;
+         if (! IS_FDPIC (output_bfd))
+           check_segment[1] = isec_segment;
+         else if (picrel->plt)
+           {
+             relocation = bfinfdpic_plt_section (info)->output_section->vma
+               + bfinfdpic_plt_section (info)->output_offset
+               + picrel->plt_entry;
+             check_segment[1] = plt_segment;
+           }
+         /* We don't want to warn on calls to undefined weak symbols,
+            as calls to them must be protected by non-NULL tests
+            anyway, and unprotected calls would invoke undefined
+            behavior.  */
+         else if (picrel->symndx == -1
+                  && picrel->d.h->root.type == bfd_link_hash_undefweak)
+           check_segment[1] = check_segment[0];
+         else
+           check_segment[1] = sec
+             ? _bfinfdpic_osec_to_segment (output_bfd, sec->output_section)
+             : (unsigned)-1;
+         break;
 
-       case R_got:
-         /* Relocation is to the address of the entry for this symbol
-            in the global offset table.  */
-         if (h != NULL
-             && strcmp (h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
-           goto do_default;
-         /* Fall through.  */
-         /* Relocation is the offset of the entry for this symbol in
-            the global offset table.  */
+       case R_BFIN_GOT17M4:
+       case R_BFIN_GOTHI:
+       case R_BFIN_GOTLO:
+         relocation = picrel->got_entry;
+         check_segment[0] = check_segment[1] = got_segment;
+         break;
 
-         {
-           bfd_vma off;
+       case R_BFIN_FUNCDESC_GOT17M4:
+       case R_BFIN_FUNCDESC_GOTHI:
+       case R_BFIN_FUNCDESC_GOTLO:
+         relocation = picrel->fdgot_entry;
+         check_segment[0] = check_segment[1] = got_segment;
+         break;
 
-           if (sgot == NULL)
-             {
-               sgot = bfd_get_section_by_name (dynobj, ".got");
-               BFD_ASSERT (sgot != NULL);
-             }
+       case R_BFIN_GOTOFFHI:
+       case R_BFIN_GOTOFF17M4:
+       case R_BFIN_GOTOFFLO:
+         relocation -= bfinfdpic_got_section (info)->output_section->vma
+           + bfinfdpic_got_section (info)->output_offset
+           + bfinfdpic_got_initial_offset (info);
+         check_segment[0] = got_segment;
+         check_segment[1] = sec
+           ? _bfinfdpic_osec_to_segment (output_bfd, sec->output_section)
+           : (unsigned)-1;
+         break;
 
-           if (h != NULL)
-             {
-               bfd_boolean dyn;
+       case R_BFIN_FUNCDESC_GOTOFF17M4:
+       case R_BFIN_FUNCDESC_GOTOFFHI:
+       case R_BFIN_FUNCDESC_GOTOFFLO:
+         relocation = picrel->fd_entry;
+         check_segment[0] = check_segment[1] = got_segment;
+         break;
 
-               off = h->got.offset;
-               BFD_ASSERT (off != (bfd_vma) - 1);
-               dyn = elf_hash_table (info)->dynamic_sections_created;
+       case R_BFIN_FUNCDESC:
+         {
+           int dynindx;
+           bfd_vma addend = rel->r_addend;
 
-               if (!WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info->shared, h)
-                   || (info->shared
-                       && (info->symbolic
-                           || h->dynindx == -1
-                           || h->forced_local)
-                       && h->def_regular))
+           if (! (h && h->root.type == bfd_link_hash_undefweak
+                  && BFINFDPIC_SYM_LOCAL (info, h)))
+             {
+               /* If the symbol is dynamic and there may be dynamic
+                  symbol resolution because we are or are linked with a
+                  shared library, emit a FUNCDESC relocation such that
+                  the dynamic linker will allocate the function
+                  descriptor.  If the symbol needs a non-local function
+                  descriptor but binds locally (e.g., its visibility is
+                  protected, emit a dynamic relocation decayed to
+                  section+offset.  */
+               if (h && ! BFINFDPIC_FUNCDESC_LOCAL (info, h)
+                   && BFINFDPIC_SYM_LOCAL (info, h)
+                   && !(info->executable && !info->pie))
                  {
-                   /* This is actually a static link, or it is a
-                      -Bsymbolic link and the symbol is defined
-                      locally, or the symbol was forced to be local
-                      because of a version file..  We must initialize
-                      this entry in the global offset table.  Since
-                      the offset must always be a multiple of 4, we
-                      use the least significant bit to record whether
-                      we have initialized it already.
-
-                      When doing a dynamic link, we create a .rela.got
-                      relocation entry to initialize the value.  This
-                      is done in the finish_dynamic_symbol routine.  */
-                   if ((off & 1) != 0)
-                     off &= ~1;
-                   else
+                   dynindx = elf_section_data (h->root.u.def.section
+                                               ->output_section)->dynindx;
+                   addend += h->root.u.def.section->output_offset
+                     + h->root.u.def.value;
+                 }
+               else if (h && ! BFINFDPIC_FUNCDESC_LOCAL (info, h))
+                 {
+                   if (addend)
                      {
-                       bfd_put_32 (output_bfd, relocation,
-                                   sgot->contents + off);
-                       h->got.offset |= 1;
+                       info->callbacks->warning
+                         (info, _("R_BFIN_FUNCDESC references dynamic symbol with nonzero addend"),
+                          name, input_bfd, input_section, rel->r_offset);
+                       return FALSE;
                      }
+                   dynindx = h->dynindx;
                  }
                else
-                 unresolved_reloc = FALSE;
-             }
-           else
-             {
-               BFD_ASSERT (local_got_offsets != NULL);
-               off = local_got_offsets[r_symndx];
-               BFD_ASSERT (off != (bfd_vma) - 1);
-
-               /* The offset must always be a multiple of 4.  We use
-                  the least significant bit to record whether we have
-                  already generated the necessary reloc.  */
-               if ((off & 1) != 0)
-                 off &= ~1;
-               else
                  {
-                   bfd_put_32 (output_bfd, relocation, sgot->contents + off);
+                   /* Otherwise, we know we have a private function
+                      descriptor, so reference it directly.  */
+                   BFD_ASSERT (picrel->privfd);
+                   r_type = R_byte4_data;
+                   dynindx = elf_section_data (bfinfdpic_got_section (info)
+                                               ->output_section)->dynindx;
+                   addend = bfinfdpic_got_section (info)->output_offset
+                     + bfinfdpic_got_initial_offset (info)
+                     + picrel->fd_entry;
+                 }
 
-                   if (info->shared)
+               /* If there is room for dynamic symbol resolution, emit
+                  the dynamic relocation.  However, if we're linking an
+                  executable at a fixed location, we won't have emitted a
+                  dynamic symbol entry for the got section, so idx will
+                  be zero, which means we can and should compute the
+                  address of the private descriptor ourselves.  */
+               if (info->executable && !info->pie
+                   && (!h || BFINFDPIC_FUNCDESC_LOCAL (info, h)))
+                 {
+                   addend += bfinfdpic_got_section (info)->output_section->vma;
+                   if ((bfd_get_section_flags (output_bfd,
+                                               input_section->output_section)
+                        & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD))
                      {
-                       asection *s;
-                       Elf_Internal_Rela outrel;
-                       bfd_byte *loc;
-
-                       s = bfd_get_section_by_name (dynobj, ".rela.got");
-                       BFD_ASSERT (s != NULL);
-
-                       outrel.r_offset = (sgot->output_section->vma
-                                          + sgot->output_offset + off);
-                       outrel.r_info =
-                         ELF32_R_INFO (0, R_pcrel24);
-                       outrel.r_addend = relocation;
-                       loc = s->contents;
-                       loc +=
-                         s->reloc_count++ * sizeof (Elf32_External_Rela);
-                       bfd_elf32_swap_reloca_out (output_bfd, &outrel, loc);
+                       if (_bfinfdpic_osec_readonly_p (output_bfd,
+                                                      input_section
+                                                      ->output_section))
+                         {
+                           info->callbacks->warning
+                             (info,
+                              _("cannot emit fixups in read-only section"),
+                              name, input_bfd, input_section, rel->r_offset);
+                           return FALSE;
+                         }
+                       _bfinfdpic_add_rofixup (output_bfd,
+                                              bfinfdpic_gotfixup_section
+                                              (info),
+                                              _bfd_elf_section_offset
+                                              (output_bfd, info,
+                                               input_section, rel->r_offset)
+                                              + input_section
+                                              ->output_section->vma
+                                              + input_section->output_offset,
+                                              picrel);
                      }
-
-                   local_got_offsets[r_symndx] |= 1;
                  }
+               else if ((bfd_get_section_flags (output_bfd,
+                                                input_section->output_section)
+                         & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD))
+                 {
+                   if (_bfinfdpic_osec_readonly_p (output_bfd,
+                                                  input_section
+                                                  ->output_section))
+                     {
+                       info->callbacks->warning
+                         (info,
+                          _("cannot emit dynamic relocations in read-only section"),
+                          name, input_bfd, input_section, rel->r_offset);
+                       return FALSE;
+                     }
+                   _bfinfdpic_add_dyn_reloc (output_bfd,
+                                             bfinfdpic_gotrel_section (info),
+                                             _bfd_elf_section_offset
+                                             (output_bfd, info,
+                                              input_section, rel->r_offset)
+                                             + input_section
+                                             ->output_section->vma
+                                             + input_section->output_offset,
+                                             r_type, dynindx, addend, picrel);
+                 }
+               else
+                 addend += bfinfdpic_got_section (info)->output_section->vma;
              }
 
-           relocation = sgot->output_offset + off;
-           rel->r_addend = 0;
-            /* bfin : preg = [preg + 17bitdiv4offset] relocation is div by 4.  */
-            relocation /= 4;
+           /* We want the addend in-place because dynamic
+              relocations are REL.  Setting relocation to it should
+              arrange for it to be installed.  */
+           relocation = addend - rel->r_addend;
          }
-         goto do_default;
+         check_segment[0] = check_segment[1] = got_segment;
+         break;
 
-       case R_pcrel24:
-       case R_pcrel24_jump_l:
+       case R_byte4_data:
+         if (! IS_FDPIC (output_bfd))
+           {
+             check_segment[0] = check_segment[1] = -1;
+             break;
+           }
+         /* Fall through.  */
+       case R_BFIN_FUNCDESC_VALUE:
          {
-           bfd_vma x;
-
-           relocation += rel->r_addend;
-
-           /* Perform usual pc-relative correction.  */
-           relocation -= input_section->output_section->vma + input_section->output_offset;
-           relocation -= address;
-
-           /* We are getting reloc_entry->address 2 byte off from
-              the start of instruction. Assuming absolute postion
-              of the reloc data. But, following code had been written assuming 
-              reloc address is starting at begining of instruction.
-              To compensate that I have increased the value of 
-              relocation by 1 (effectively 2) and used the addr -2 instead of addr.  */ 
-
-           relocation += 2;
-           address -= 2;
+           int dynindx;
+           bfd_vma addend = rel->r_addend;
 
-           relocation >>= 1;
+           /* If the symbol is dynamic but binds locally, use
+              section+offset.  */
+           if (h && ! BFINFDPIC_SYM_LOCAL (info, h))
+             {
+               if (addend && r_type == R_BFIN_FUNCDESC_VALUE)
+                 {
+                   info->callbacks->warning
+                     (info, _("R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend"),
+                      name, input_bfd, input_section, rel->r_offset);
+                   return FALSE;
+                 }
+               dynindx = h->dynindx;
+             }
+           else
+             {
+               if (h)
+                 addend += h->root.u.def.value;
+               else
+                 addend += sym->st_value;
+               if (osec)
+                 addend += osec->output_offset;
+               if (osec && osec->output_section
+                   && ! bfd_is_abs_section (osec->output_section)
+                   && ! bfd_is_und_section (osec->output_section))
+                 dynindx = elf_section_data (osec->output_section)->dynindx;
+               else
+                 dynindx = 0;
+             }
 
-           x = bfd_get_16 (input_bfd, contents + address);
-           x = (x & 0xff00) | ((relocation >> 16) & 0xff);
-           bfd_put_16 (input_bfd, x, contents + address);
+           /* If we're linking an executable at a fixed address, we
+              can omit the dynamic relocation as long as the symbol
+              is defined in the current link unit (which is implied
+              by its output section not being NULL).  */
+           if (info->executable && !info->pie
+               && (!h || BFINFDPIC_SYM_LOCAL (info, h)))
+             {
+               if (osec)
+                 addend += osec->output_section->vma;
+               if (IS_FDPIC (input_bfd)
+                   && (bfd_get_section_flags (output_bfd,
+                                              input_section->output_section)
+                       & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD))
+                 {
+                   if (_bfinfdpic_osec_readonly_p (output_bfd,
+                                                  input_section
+                                                  ->output_section))
+                     {
+                       info->callbacks->warning
+                         (info,
+                          _("cannot emit fixups in read-only section"),
+                          name, input_bfd, input_section, rel->r_offset);
+                       return FALSE;
+                     }
+                   if (!h || h->root.type != bfd_link_hash_undefweak)
+                     {
+                       _bfinfdpic_add_rofixup (output_bfd,
+                                              bfinfdpic_gotfixup_section
+                                              (info),
+                                              _bfd_elf_section_offset
+                                              (output_bfd, info,
+                                               input_section, rel->r_offset)
+                                              + input_section
+                                              ->output_section->vma
+                                              + input_section->output_offset,
+                                              picrel);
+                       if (r_type == R_BFIN_FUNCDESC_VALUE)
+                         _bfinfdpic_add_rofixup
+                           (output_bfd,
+                            bfinfdpic_gotfixup_section (info),
+                            _bfd_elf_section_offset
+                            (output_bfd, info,
+                             input_section, rel->r_offset)
+                            + input_section->output_section->vma
+                            + input_section->output_offset + 4, picrel);
+                     }
+                 }
+             }
+           else
+             {
+               if ((bfd_get_section_flags (output_bfd,
+                                           input_section->output_section)
+                    & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD))
+                 {
+                   if (_bfinfdpic_osec_readonly_p (output_bfd,
+                                                  input_section
+                                                  ->output_section))
+                     {
+                       info->callbacks->warning
+                         (info,
+                          _("cannot emit dynamic relocations in read-only section"),
+                          name, input_bfd, input_section, rel->r_offset);
+                       return FALSE;
+                     }
+                   _bfinfdpic_add_dyn_reloc (output_bfd,
+                                             bfinfdpic_gotrel_section (info),
+                                             _bfd_elf_section_offset
+                                             (output_bfd, info,
+                                              input_section, rel->r_offset)
+                                             + input_section
+                                             ->output_section->vma
+                                             + input_section->output_offset,
+                                             r_type, dynindx, addend, picrel);
+                 }
+               else if (osec)
+                 addend += osec->output_section->vma;
+               /* We want the addend in-place because dynamic
+                  relocations are REL.  Setting relocation to it
+                  should arrange for it to be installed.  */
+               relocation = addend - rel->r_addend;
+             }
 
-           x = bfd_get_16 (input_bfd, contents + address + 2);
-           x = relocation & 0xFFFF;
-           bfd_put_16 (input_bfd, x, contents + address + 2);
-           r = bfd_reloc_ok;
+           if (r_type == R_BFIN_FUNCDESC_VALUE)
+             {
+               /* If we've omitted the dynamic relocation, just emit
+                  the fixed addresses of the symbol and of the local
+                  GOT base offset.  */
+               if (info->executable && !info->pie
+                   && (!h || BFINFDPIC_SYM_LOCAL (info, h)))
+                 bfd_put_32 (output_bfd,
+                             bfinfdpic_got_section (info)->output_section->vma
+                             + bfinfdpic_got_section (info)->output_offset
+                             + bfinfdpic_got_initial_offset (info),
+                             contents + rel->r_offset + 4);
+               else
+                 /* A function descriptor used for lazy or local
+                    resolving is initialized such that its high word
+                    contains the output section index in which the
+                    PLT entries are located, and the low word
+                    contains the offset of the lazy PLT entry entry
+                    point into that section.  */
+                 bfd_put_32 (output_bfd,
+                             h && ! BFINFDPIC_SYM_LOCAL (info, h)
+                             ? 0
+                             : _bfinfdpic_osec_to_segment (output_bfd,
+                                                           sec
+                                                           ->output_section),
+                             contents + rel->r_offset + 4);
+             }
          }
+         check_segment[0] = check_segment[1] = got_segment;
          break;
 
        default:
-       do_default:
-         r = _bfd_final_link_relocate (howto, input_bfd, input_section,
-                                       contents, address,
-                                       relocation, rel->r_addend);
-
+         check_segment[0] = isec_segment;
+         check_segment[1] = sec
+           ? _bfinfdpic_osec_to_segment (output_bfd, sec->output_section)
+           : (unsigned)-1;
          break;
        }
 
-    done_reloc:
-      /* Dynamic relocs are not propagated for SEC_DEBUGGING sections
-         because such sections are not SEC_ALLOC and thus ld.so will
-         not process them.  */
-      if (unresolved_reloc
+      if (check_segment[0] != check_segment[1] && IS_FDPIC (output_bfd))
+       {
+#if 1 /* If you take this out, remove the #error from fdpic-static-6.d
+        in the ld testsuite.  */
+         /* This helps catch problems in GCC while we can't do more
+            than static linking.  The idea is to test whether the
+            input file basename is crt0.o only once.  */
+         if (silence_segment_error == 1)
+           silence_segment_error =
+             (strlen (input_bfd->filename) == 6
+              && strcmp (input_bfd->filename, "crt0.o") == 0)
+             || (strlen (input_bfd->filename) > 6
+                 && strcmp (input_bfd->filename
+                            + strlen (input_bfd->filename) - 7,
+                            "/crt0.o") == 0)
+             ? -1 : 0;
+#endif
+         if (!silence_segment_error
+             /* We don't want duplicate errors for undefined
+                symbols.  */
+             && !(picrel && picrel->symndx == -1
+                  && picrel->d.h->root.type == bfd_link_hash_undefined))
+           info->callbacks->warning
+             (info,
+              (info->shared || info->pie)
+              ? _("relocations between different segments are not supported")
+              : _("warning: relocation references a different segment"),
+              name, input_bfd, input_section, rel->r_offset);
+         if (!silence_segment_error && (info->shared || info->pie))
+           return FALSE;
+         elf_elfheader (output_bfd)->e_flags |= EF_BFIN_PIC;
+       }
+
+      switch (r_type)
+       {
+       case R_BFIN_GOTOFFHI:
+         /* We need the addend to be applied before we shift the
+            value right.  */
+         relocation += rel->r_addend;
+         /* Fall through.  */
+       case R_BFIN_GOTHI:
+       case R_BFIN_FUNCDESC_GOTHI:
+       case R_BFIN_FUNCDESC_GOTOFFHI:
+         relocation >>= 16;
+         /* Fall through.  */
+
+       case R_BFIN_GOTLO:
+       case R_BFIN_FUNCDESC_GOTLO:
+       case R_BFIN_GOTOFFLO:
+       case R_BFIN_FUNCDESC_GOTOFFLO:
+         relocation &= 0xffff;
+         break;
+
+       default:
+         break;
+       }
+
+      switch (r_type)
+       {
+       case R_pcrel24:
+       case R_pcrel24_jump_l:
+         if (! IS_FDPIC (output_bfd) || ! picrel->plt)
+           break;
+         /* Fall through.  */
+
+         /* When referencing a GOT entry, a function descriptor or a
+            PLT, we don't want the addend to apply to the reference,
+            but rather to the referenced symbol.  The actual entry
+            will have already been created taking the addend into
+            account, so cancel it out here.  */
+       case R_BFIN_GOT17M4:
+       case R_BFIN_GOTHI:
+       case R_BFIN_GOTLO:
+       case R_BFIN_FUNCDESC_GOT17M4:
+       case R_BFIN_FUNCDESC_GOTHI:
+       case R_BFIN_FUNCDESC_GOTLO:
+       case R_BFIN_FUNCDESC_GOTOFF17M4:
+       case R_BFIN_FUNCDESC_GOTOFFHI:
+       case R_BFIN_FUNCDESC_GOTOFFLO:
+         /* Note that we only want GOTOFFHI, not GOTOFFLO or GOTOFF17M4
+            here, since we do want to apply the addend to the others.
+            Note that we've applied the addend to GOTOFFHI before we
+            shifted it right.  */
+       case R_BFIN_GOTOFFHI:
+         relocation -= rel->r_addend;
+         break;
+
+       default:
+         break;
+       }
+
+      if (r_type == R_pcrel24
+         || r_type == R_pcrel24_jump_l)
+       {
+         bfd_vma x;
+         bfd_vma address = rel->r_offset;
+
+         relocation += rel->r_addend;
+
+         /* Perform usual pc-relative correction.  */
+         relocation -= input_section->output_section->vma + input_section->output_offset;
+         relocation -= address;
+
+         /* We are getting reloc_entry->address 2 byte off from
+            the start of instruction. Assuming absolute postion
+            of the reloc data. But, following code had been written assuming
+            reloc address is starting at begining of instruction.
+            To compensate that I have increased the value of
+            relocation by 1 (effectively 2) and used the addr -2 instead of addr.  */
+
+         relocation += 2;
+         address -= 2;
+
+         relocation >>= 1;
+
+         x = bfd_get_16 (input_bfd, contents + address);
+         x = (x & 0xff00) | ((relocation >> 16) & 0xff);
+         bfd_put_16 (input_bfd, x, contents + address);
+
+         x = bfd_get_16 (input_bfd, contents + address + 2);
+         x = relocation & 0xFFFF;
+         bfd_put_16 (input_bfd, x, contents + address + 2);
+         r = bfd_reloc_ok;
+       }
+      else
+       r = _bfd_final_link_relocate (howto, input_bfd, input_section,
+                                     contents, rel->r_offset,
+                                     relocation, rel->r_addend);
+
+      if (r != bfd_reloc_ok)
+       {
+         const char * msg = (const char *) NULL;
+
+         switch (r)
+           {
+           case bfd_reloc_overflow:
+             r = info->callbacks->reloc_overflow
+               (info, (h ? &h->root : NULL), name, howto->name,
+                (bfd_vma) 0, input_bfd, input_section, rel->r_offset);
+             break;
+
+           case bfd_reloc_undefined:
+             r = info->callbacks->undefined_symbol
+               (info, name, input_bfd, input_section, rel->r_offset, TRUE);
+             break;
+
+           case bfd_reloc_outofrange:
+             msg = _("internal error: out of range error");
+             break;
+
+           case bfd_reloc_notsupported:
+             msg = _("internal error: unsupported relocation error");
+             break;
+
+           case bfd_reloc_dangerous:
+             msg = _("internal error: dangerous relocation");
+             break;
+
+           default:
+             msg = _("internal error: unknown error");
+             break;
+           }
+
+         if (msg)
+           r = info->callbacks->warning
+             (info, msg, name, input_bfd, input_section, rel->r_offset);
+
+         if (! r)
+           return FALSE;
+       }
+    }
+
+  return TRUE;
+}
+
+static bfd_boolean
+bfin_relocate_section (bfd * output_bfd,
+                      struct bfd_link_info *info,
+                      bfd * input_bfd,
+                      asection * input_section,
+                      bfd_byte * contents,
+                      Elf_Internal_Rela * relocs,
+                      Elf_Internal_Sym * local_syms,
+                      asection ** local_sections)
+{
+  bfd *dynobj;
+  Elf_Internal_Shdr *symtab_hdr;
+  struct elf_link_hash_entry **sym_hashes;
+  bfd_vma *local_got_offsets;
+  asection *sgot;
+  asection *sreloc;
+  Elf_Internal_Rela *rel;
+  Elf_Internal_Rela *relend;
+  int i = 0;
+
+  if (info->relocatable)
+    return TRUE;
+
+  dynobj = elf_hash_table (info)->dynobj;
+  symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
+  sym_hashes = elf_sym_hashes (input_bfd);
+  local_got_offsets = elf_local_got_offsets (input_bfd);
+
+  sgot = NULL;
+  sreloc = NULL;
+
+  rel = relocs;
+  relend = relocs + input_section->reloc_count;
+  for (; rel < relend; rel++, i++)
+    {
+      int r_type;
+      reloc_howto_type *howto;
+      unsigned long r_symndx;
+      struct elf_link_hash_entry *h;
+      Elf_Internal_Sym *sym;
+      asection *sec;
+      bfd_vma relocation = 0;
+      bfd_boolean unresolved_reloc;
+      bfd_reloc_status_type r;
+      bfd_vma address;
+
+      r_type = ELF32_R_TYPE (rel->r_info);
+      if (r_type < 0 || r_type >= 243)
+       {
+         bfd_set_error (bfd_error_bad_value);
+         return FALSE;
+       }
+
+      if (r_type == R_BFIN_GNU_VTENTRY
+          || r_type == R_BFIN_GNU_VTINHERIT)
+       continue;
+
+      howto = bfin_reloc_type_lookup (input_bfd, r_type);
+      if (howto == NULL)
+       {
+         bfd_set_error (bfd_error_bad_value);
+         return FALSE;
+       }
+      r_symndx = ELF32_R_SYM (rel->r_info);
+
+      h = NULL;
+      sym = NULL;
+      sec = NULL;
+      unresolved_reloc = FALSE;
+
+      if (r_symndx < symtab_hdr->sh_info)
+       {
+         sym = local_syms + r_symndx;
+         sec = local_sections[r_symndx];
+         relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel);
+       }
+      else
+       {
+         bfd_boolean warned;
+         h = NULL;
+         RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
+                                  r_symndx, symtab_hdr, sym_hashes,
+                                  h, sec, relocation,
+                                  unresolved_reloc, warned);
+       }
+
+      address = rel->r_offset;
+
+      /* Then, process normally.  */
+      switch (r_type)
+       {
+       case R_BFIN_GNU_VTINHERIT:
+       case R_BFIN_GNU_VTENTRY:
+         return bfd_reloc_ok;
+
+       case R_got:
+         /* Relocation is to the address of the entry for this symbol
+            in the global offset table.  */
+         if (h != NULL
+             && strcmp (h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
+           goto do_default;
+         /* Fall through.  */
+         /* Relocation is the offset of the entry for this symbol in
+            the global offset table.  */
+
+         {
+           bfd_vma off;
+
+           if (sgot == NULL)
+             {
+               sgot = bfd_get_section_by_name (dynobj, ".got");
+               BFD_ASSERT (sgot != NULL);
+             }
+
+           if (h != NULL)
+             {
+               bfd_boolean dyn;
+
+               off = h->got.offset;
+               BFD_ASSERT (off != (bfd_vma) - 1);
+               dyn = elf_hash_table (info)->dynamic_sections_created;
+
+               if (!WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info->shared, h)
+                   || (info->shared
+                       && (info->symbolic
+                           || h->dynindx == -1
+                           || h->forced_local)
+                       && h->def_regular))
+                 {
+                   /* This is actually a static link, or it is a
+                      -Bsymbolic link and the symbol is defined
+                      locally, or the symbol was forced to be local
+                      because of a version file..  We must initialize
+                      this entry in the global offset table.  Since
+                      the offset must always be a multiple of 4, we
+                      use the least significant bit to record whether
+                      we have initialized it already.
+
+                      When doing a dynamic link, we create a .rela.got
+                      relocation entry to initialize the value.  This
+                      is done in the finish_dynamic_symbol routine.  */
+                   if ((off & 1) != 0)
+                     off &= ~1;
+                   else
+                     {
+                       bfd_put_32 (output_bfd, relocation,
+                                   sgot->contents + off);
+                       h->got.offset |= 1;
+                     }
+                 }
+               else
+                 unresolved_reloc = FALSE;
+             }
+           else
+             {
+               BFD_ASSERT (local_got_offsets != NULL);
+               off = local_got_offsets[r_symndx];
+               BFD_ASSERT (off != (bfd_vma) - 1);
+
+               /* The offset must always be a multiple of 4.  We use
+                  the least significant bit to record whether we have
+                  already generated the necessary reloc.  */
+               if ((off & 1) != 0)
+                 off &= ~1;
+               else
+                 {
+                   bfd_put_32 (output_bfd, relocation, sgot->contents + off);
+
+                   if (info->shared)
+                     {
+                       asection *s;
+                       Elf_Internal_Rela outrel;
+                       bfd_byte *loc;
+
+                       s = bfd_get_section_by_name (dynobj, ".rela.got");
+                       BFD_ASSERT (s != NULL);
+
+                       outrel.r_offset = (sgot->output_section->vma
+                                          + sgot->output_offset + off);
+                       outrel.r_info =
+                         ELF32_R_INFO (0, R_pcrel24);
+                       outrel.r_addend = relocation;
+                       loc = s->contents;
+                       loc +=
+                         s->reloc_count++ * sizeof (Elf32_External_Rela);
+                       bfd_elf32_swap_reloca_out (output_bfd, &outrel, loc);
+                     }
+
+                   local_got_offsets[r_symndx] |= 1;
+                 }
+             }
+
+           relocation = sgot->output_offset + off;
+           rel->r_addend = 0;
+            /* bfin : preg = [preg + 17bitdiv4offset] relocation is div by 4.  */
+            relocation /= 4;
+         }
+         goto do_default;
+
+       case R_pcrel24:
+       case R_pcrel24_jump_l:
+         {
+           bfd_vma x;
+
+           relocation += rel->r_addend;
+
+           /* Perform usual pc-relative correction.  */
+           relocation -= input_section->output_section->vma + input_section->output_offset;
+           relocation -= address;
+
+           /* We are getting reloc_entry->address 2 byte off from
+              the start of instruction. Assuming absolute postion
+              of the reloc data. But, following code had been written assuming
+              reloc address is starting at begining of instruction.
+              To compensate that I have increased the value of
+              relocation by 1 (effectively 2) and used the addr -2 instead of addr.  */
+
+           relocation += 2;
+           address -= 2;
+
+           relocation >>= 1;
+
+           x = bfd_get_16 (input_bfd, contents + address);
+           x = (x & 0xff00) | ((relocation >> 16) & 0xff);
+           bfd_put_16 (input_bfd, x, contents + address);
+
+           x = bfd_get_16 (input_bfd, contents + address + 2);
+           x = relocation & 0xFFFF;
+           bfd_put_16 (input_bfd, x, contents + address + 2);
+           r = bfd_reloc_ok;
+         }
+         break;
+
+       default:
+       do_default:
+         r = _bfd_final_link_relocate (howto, input_bfd, input_section,
+                                       contents, address,
+                                       relocation, rel->r_addend);
+
+         break;
+       }
+
+      /* Dynamic relocs are not propagated for SEC_DEBUGGING sections
+         because such sections are not SEC_ALLOC and thus ld.so will
+         not process them.  */
+      if (unresolved_reloc
          && !((input_section->flags & SEC_DEBUGGING) != 0 && h->def_dynamic))
        {
-         (*_bfd_error_handler)
-           (_("%B(%A+0x%lx): unresolvable relocation against symbol `%s'"),
-            input_bfd,
-            input_section, (long) rel->r_offset, h->root.root.string);
+         (*_bfd_error_handler)
+           (_("%B(%A+0x%lx): unresolvable relocation against symbol `%s'"),
+            input_bfd,
+            input_section, (long) rel->r_offset, h->root.root.string);
+         return FALSE;
+       }
+
+      if (r != bfd_reloc_ok)
+       {
+         const char *name;
+
+         if (h != NULL)
+           name = h->root.root.string;
+         else
+           {
+             name = bfd_elf_string_from_elf_section (input_bfd,
+                                                     symtab_hdr->sh_link,
+                                                     sym->st_name);
+             if (name == NULL)
+               return FALSE;
+             if (*name == '\0')
+               name = bfd_section_name (input_bfd, sec);
+           }
+
+         if (r == bfd_reloc_overflow)
+           {
+             if (!(info->callbacks->reloc_overflow
+                   (info, (h ? &h->root : NULL), name, howto->name,
+                    (bfd_vma) 0, input_bfd, input_section, rel->r_offset)))
+               return FALSE;
+           }
+         else
+           {
+             (*_bfd_error_handler)
+               (_("%B(%A+0x%lx): reloc against `%s': error %d"),
+                input_bfd, input_section,
+                (long) rel->r_offset, name, (int) r);
+             return FALSE;
+           }
+       }
+    }
+
+  return TRUE;
+}
+
+static asection *
+bfin_gc_mark_hook (asection * sec,
+                  struct bfd_link_info *info ATTRIBUTE_UNUSED,
+                  Elf_Internal_Rela * rel,
+                  struct elf_link_hash_entry *h,
+                   Elf_Internal_Sym * sym)
+{
+  if (h != NULL)
+    {
+      switch (ELF32_R_TYPE (rel->r_info))
+       {
+
+       case R_BFIN_GNU_VTINHERIT:
+       case R_BFIN_GNU_VTENTRY:
+         break;
+
+       default:
+         switch (h->root.type)
+           {
+           default:
+             break;
+
+           case bfd_link_hash_defined:
+           case bfd_link_hash_defweak:
+             return h->root.u.def.section;
+
+           case bfd_link_hash_common:
+             return h->root.u.c.p->section;
+           }
+       }
+    }
+  else
+    return bfd_section_from_elf_index (sec->owner, sym->st_shndx);
+
+  return NULL;
+}
+
+
+/* Update the got entry reference counts for the section being removed.  */
+
+static bfd_boolean
+bfinfdpic_gc_sweep_hook (bfd *abfd ATTRIBUTE_UNUSED,
+                        struct bfd_link_info *info ATTRIBUTE_UNUSED,
+                        asection *sec ATTRIBUTE_UNUSED,
+                        const Elf_Internal_Rela *relocs ATTRIBUTE_UNUSED)
+{
+  return TRUE;
+}
+
+/* Update the got entry reference counts for the section being removed.  */
+
+static bfd_boolean
+bfin_gc_sweep_hook (bfd * abfd,
+                   struct bfd_link_info *info,
+                   asection * sec,
+                    const Elf_Internal_Rela * relocs)
+{
+  Elf_Internal_Shdr *symtab_hdr;
+  struct elf_link_hash_entry **sym_hashes;
+  bfd_signed_vma *local_got_refcounts;
+  const Elf_Internal_Rela *rel, *relend;
+  bfd *dynobj;
+  asection *sgot;
+  asection *srelgot;
+
+  dynobj = elf_hash_table (info)->dynobj;
+  if (dynobj == NULL)
+    return TRUE;
+
+  symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
+  sym_hashes = elf_sym_hashes (abfd);
+  local_got_refcounts = elf_local_got_refcounts (abfd);
+
+  sgot = bfd_get_section_by_name (dynobj, ".got");
+  srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
+
+  relend = relocs + sec->reloc_count;
+  for (rel = relocs; rel < relend; rel++)
+    {
+      unsigned long r_symndx;
+      struct elf_link_hash_entry *h;
+
+      switch (ELF32_R_TYPE (rel->r_info))
+       {
+       case R_got:
+         r_symndx = ELF32_R_SYM (rel->r_info);
+         if (r_symndx >= symtab_hdr->sh_info)
+           {
+             h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+             if (h->got.refcount > 0)
+               {
+                 --h->got.refcount;
+                 if (h->got.refcount == 0)
+                   {
+                     /* We don't need the .got entry any more.  */
+                     sgot->size -= 4;
+                     srelgot->size -= sizeof (Elf32_External_Rela);
+                   }
+               }
+           }
+         else if (local_got_refcounts != NULL)
+           {
+             if (local_got_refcounts[r_symndx] > 0)
+               {
+                 --local_got_refcounts[r_symndx];
+                 if (local_got_refcounts[r_symndx] == 0)
+                   {
+                     /* We don't need the .got entry any more.  */
+                     sgot->size -= 4;
+                     if (info->shared)
+                       srelgot->size -= sizeof (Elf32_External_Rela);
+                   }
+               }
+           }
+         break;
+       default:
+         break;
+       }
+    }
+  return TRUE;
+}
+
+/* We need dynamic symbols for every section, since segments can
+   relocate independently.  */
+static bfd_boolean
+_bfinfdpic_link_omit_section_dynsym (bfd *output_bfd ATTRIBUTE_UNUSED,
+                                   struct bfd_link_info *info
+                                   ATTRIBUTE_UNUSED,
+                                   asection *p ATTRIBUTE_UNUSED)
+{
+  switch (elf_section_data (p)->this_hdr.sh_type)
+    {
+    case SHT_PROGBITS:
+    case SHT_NOBITS:
+      /* If sh_type is yet undecided, assume it could be
+        SHT_PROGBITS/SHT_NOBITS.  */
+    case SHT_NULL:
+      return FALSE;
+
+      /* There shouldn't be section relative relocations
+        against any other section.  */
+    default:
+      return TRUE;
+    }
+}
+
+/* Create  a .got section, as well as its additional info field.  This
+   is almost entirely copied from
+   elflink.c:_bfd_elf_create_got_section().  */
+
+static bfd_boolean
+_bfin_create_got_section (bfd *abfd, struct bfd_link_info *info)
+{
+  flagword flags, pltflags;
+  asection *s;
+  struct elf_link_hash_entry *h;
+  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  int ptralign;
+  int offset;
+
+  /* This function may be called more than once.  */
+  s = bfd_get_section_by_name (abfd, ".got");
+  if (s != NULL && (s->flags & SEC_LINKER_CREATED) != 0)
+    return TRUE;
+
+  /* Machine specific: although pointers are 32-bits wide, we want the
+     GOT to be aligned to a 64-bit boundary, such that function
+     descriptors in it can be accessed with 64-bit loads and
+     stores.  */
+  ptralign = 3;
+
+  flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY
+          | SEC_LINKER_CREATED);
+  pltflags = flags;
+
+  s = bfd_make_section_with_flags (abfd, ".got", flags);
+  if (s == NULL
+      || !bfd_set_section_alignment (abfd, s, ptralign))
+    return FALSE;
+
+  if (bed->want_got_plt)
+    {
+      s = bfd_make_section_with_flags (abfd, ".got.plt", flags);
+      if (s == NULL
+         || !bfd_set_section_alignment (abfd, s, ptralign))
+       return FALSE;
+    }
+
+  if (bed->want_got_sym)
+    {
+      /* Define the symbol _GLOBAL_OFFSET_TABLE_ at the start of the .got
+        (or .got.plt) section.  We don't do this in the linker script
+        because we don't want to define the symbol if we are not creating
+        a global offset table.  */
+      h = _bfd_elf_define_linkage_sym (abfd, info, s, "_GLOBAL_OFFSET_TABLE_");
+      elf_hash_table (info)->hgot = h;
+      if (h == NULL)
+       return FALSE;
+
+      /* Machine-specific: we want the symbol for executables as
+        well.  */
+      if (! bfd_elf_link_record_dynamic_symbol (info, h))
+       return FALSE;
+    }
+
+  /* The first bit of the global offset table is the header.  */
+  s->size += bed->got_header_size;
+
+  /* This is the machine-specific part.  Create and initialize section
+     data for the got.  */
+  if (IS_FDPIC (abfd))
+    {
+      bfinfdpic_got_section (info) = s;
+      bfinfdpic_relocs_info (info) = htab_try_create (1,
+                                                     bfinfdpic_relocs_info_hash,
+                                                     bfinfdpic_relocs_info_eq,
+                                                     (htab_del) NULL);
+      if (! bfinfdpic_relocs_info (info))
+       return FALSE;
+
+      s = bfd_make_section_with_flags (abfd, ".rel.got",
+                                      (flags | SEC_READONLY));
+      if (s == NULL
+         || ! bfd_set_section_alignment (abfd, s, 2))
+       return FALSE;
+
+      bfinfdpic_gotrel_section (info) = s;
+
+      /* Machine-specific.  */
+      s = bfd_make_section_with_flags (abfd, ".rofixup",
+                                      (flags | SEC_READONLY));
+      if (s == NULL
+         || ! bfd_set_section_alignment (abfd, s, 2))
+       return FALSE;
+
+      bfinfdpic_gotfixup_section (info) = s;
+      offset = -2048;
+      flags = BSF_GLOBAL;
+    }
+  else
+    {
+      offset = 2048;
+      flags = BSF_GLOBAL | BSF_WEAK;
+    }
+
+  return TRUE;
+}
+
+/* Make sure the got and plt sections exist, and that our pointers in
+   the link hash table point to them.  */
+
+static bfd_boolean
+elf32_bfinfdpic_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
+{
+  /* This is mostly copied from
+     elflink.c:_bfd_elf_create_dynamic_sections().  */
+  flagword flags, pltflags;
+  asection *s;
+  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+
+  /* We need to create .plt, .rel[a].plt, .got, .got.plt, .dynbss, and
+     .rel[a].bss sections.  */
+
+  flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY
+          | SEC_LINKER_CREATED);
+
+  pltflags = flags;
+  pltflags |= SEC_CODE;
+  if (bed->plt_not_loaded)
+    pltflags &= ~ (SEC_CODE | SEC_LOAD | SEC_HAS_CONTENTS);
+  if (bed->plt_readonly)
+    pltflags |= SEC_READONLY;
+
+  s = bfd_make_section (abfd, ".plt");
+  if (s == NULL
+      || ! bfd_set_section_flags (abfd, s, pltflags)
+      || ! bfd_set_section_alignment (abfd, s, bed->plt_alignment))
+    return FALSE;
+  /* Blackfin-specific: remember it.  */
+  bfinfdpic_plt_section (info) = s;
+
+  if (bed->want_plt_sym)
+    {
+      /* Define the symbol _PROCEDURE_LINKAGE_TABLE_ at the start of the
+        .plt section.  */
+      struct elf_link_hash_entry *h;
+      struct bfd_link_hash_entry *bh = NULL;
+
+      if (! (_bfd_generic_link_add_one_symbol
+            (info, abfd, "_PROCEDURE_LINKAGE_TABLE_", BSF_GLOBAL, s, 0, NULL,
+             FALSE, get_elf_backend_data (abfd)->collect, &bh)))
+       return FALSE;
+      h = (struct elf_link_hash_entry *) bh;
+      h->def_regular = 1;
+      h->type = STT_OBJECT;
+
+      if (! info->executable
+         && ! bfd_elf_link_record_dynamic_symbol (info, h))
+       return FALSE;
+    }
+
+  /* Blackfin-specific: we want rel relocations for the plt.  */
+  s = bfd_make_section (abfd, ".rel.plt");
+  if (s == NULL
+      || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
+      || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+    return FALSE;
+  /* Blackfin-specific: remember it.  */
+  bfinfdpic_pltrel_section (info) = s;
+
+  /* Blackfin-specific: we want to create the GOT in the Blackfin way.  */
+  if (! _bfin_create_got_section (abfd, info))
+    return FALSE;
+
+  /* Blackfin-specific: make sure we created everything we wanted.  */
+  BFD_ASSERT (bfinfdpic_got_section (info) && bfinfdpic_gotrel_section (info)
+             /* && bfinfdpic_gotfixup_section (info) */
+             && bfinfdpic_plt_section (info)
+             && bfinfdpic_pltrel_section (info));
+
+  if (bed->want_dynbss)
+    {
+      /* The .dynbss section is a place to put symbols which are defined
+        by dynamic objects, are referenced by regular objects, and are
+        not functions.  We must allocate space for them in the process
+        image and use a R_*_COPY reloc to tell the dynamic linker to
+        initialize them at run time.  The linker script puts the .dynbss
+        section into the .bss section of the final image.  */
+      s = bfd_make_section (abfd, ".dynbss");
+      if (s == NULL
+         || ! bfd_set_section_flags (abfd, s, SEC_ALLOC | SEC_LINKER_CREATED))
+       return FALSE;
+
+      /* The .rel[a].bss section holds copy relocs.  This section is not
+     normally needed.  We need to create it here, though, so that the
+     linker will map it to an output section.  We can't just create it
+     only if we need it, because we will not know whether we need it
+     until we have seen all the input files, and the first time the
+     main linker code calls BFD after examining all the input files
+     (size_dynamic_sections) the input sections have already been
+     mapped to the output sections.  If the section turns out not to
+     be needed, we can discard it later.  We will never need this
+     section when generating a shared object, since they do not use
+     copy relocs.  */
+      if (! info->shared)
+       {
+         s = bfd_make_section (abfd,
+                               (bed->default_use_rela_p
+                                ? ".rela.bss" : ".rel.bss"));
+         if (s == NULL
+             || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
+             || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+           return FALSE;
+       }
+    }
+
+  return TRUE;
+}
+
+/* The name of the dynamic interpreter.  This is put in the .interp
+   section.  */
+
+#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1"
+
+#define DEFAULT_STACK_SIZE 0x20000
+
+/* This structure is used to collect the number of entries present in
+   each addressable range of the got.  */
+struct _bfinfdpic_dynamic_got_info
+{
+  /* Several bits of information about the current link.  */
+  struct bfd_link_info *info;
+  /* Total size needed for GOT entries within the 18- or 32-bit
+     ranges.  */
+  bfd_vma got17m4, gothilo;
+  /* Total size needed for function descriptor entries within the 18-
+     or 32-bit ranges.  */
+  bfd_vma fd17m4, fdhilo;
+  /* Total size needed function descriptor entries referenced in PLT
+     entries, that would be profitable to place in offsets close to
+     the PIC register.  */
+  bfd_vma fdplt;
+  /* Total size needed by lazy PLT entries.  */
+  bfd_vma lzplt;
+  /* Number of relocations carried over from input object files.  */
+  unsigned long relocs;
+  /* Number of fixups introduced by relocations in input object files.  */
+  unsigned long fixups;
+};
+
+/* Compute the total GOT size required by each symbol in each range.
+   Symbols may require up to 4 words in the GOT: an entry pointing to
+   the symbol, an entry pointing to its function descriptor, and a
+   private function descriptors taking two words.  */
+
+static int
+_bfinfdpic_count_got_plt_entries (void **entryp, void *dinfo_)
+{
+  struct bfinfdpic_relocs_info *entry = *entryp;
+  struct _bfinfdpic_dynamic_got_info *dinfo = dinfo_;
+  unsigned relocs = 0, fixups = 0;
+
+  /* Allocate space for a GOT entry pointing to the symbol.  */
+  if (entry->got17m4)
+    dinfo->got17m4 += 4;
+  else if (entry->gothilo)
+    dinfo->gothilo += 4;
+  else
+    entry->relocs32--;
+  entry->relocs32++;
+
+  /* Allocate space for a GOT entry pointing to the function
+     descriptor.  */
+  if (entry->fdgot17m4)
+    dinfo->got17m4 += 4;
+  else if (entry->fdgothilo)
+    dinfo->gothilo += 4;
+  else
+    entry->relocsfd--;
+  entry->relocsfd++;
+
+  /* Decide whether we need a PLT entry, a function descriptor in the
+     GOT, and a lazy PLT entry for this symbol.  */
+  entry->plt = entry->call
+    && entry->symndx == -1 && ! BFINFDPIC_SYM_LOCAL (dinfo->info, entry->d.h)
+    && elf_hash_table (dinfo->info)->dynamic_sections_created;
+  entry->privfd = entry->plt
+    || entry->fdgoff17m4 || entry->fdgoffhilo
+    || ((entry->fd || entry->fdgot17m4 || entry->fdgothilo)
+       && (entry->symndx != -1
+           || BFINFDPIC_FUNCDESC_LOCAL (dinfo->info, entry->d.h)));
+  entry->lazyplt = entry->privfd
+    && entry->symndx == -1 && ! BFINFDPIC_SYM_LOCAL (dinfo->info, entry->d.h)
+    && ! (dinfo->info->flags & DF_BIND_NOW)
+    && elf_hash_table (dinfo->info)->dynamic_sections_created;
+
+  /* Allocate space for a function descriptor.  */
+  if (entry->fdgoff17m4)
+    dinfo->fd17m4 += 8;
+  else if (entry->privfd && entry->plt)
+    dinfo->fdplt += 8;
+  else if (entry->privfd)
+    dinfo->fdhilo += 8;
+  else
+    entry->relocsfdv--;
+  entry->relocsfdv++;
+
+  if (entry->lazyplt)
+    dinfo->lzplt += LZPLT_NORMAL_SIZE;
+
+  if (!dinfo->info->executable || dinfo->info->pie)
+    relocs = entry->relocs32 + entry->relocsfd + entry->relocsfdv;
+  else
+    {
+      if (entry->symndx != -1 || BFINFDPIC_SYM_LOCAL (dinfo->info, entry->d.h))
+       {
+         if (entry->symndx != -1
+             || entry->d.h->root.type != bfd_link_hash_undefweak)
+           fixups += entry->relocs32 + 2 * entry->relocsfdv;
+       }
+      else
+       relocs += entry->relocs32 + entry->relocsfdv;
+
+      if (entry->symndx != -1
+         || BFINFDPIC_FUNCDESC_LOCAL (dinfo->info, entry->d.h))
+       {
+         if (entry->symndx != -1
+             || entry->d.h->root.type != bfd_link_hash_undefweak)
+           fixups += entry->relocsfd;
+       }
+      else
+       relocs += entry->relocsfd;
+    }
+
+  entry->dynrelocs += relocs;
+  entry->fixups += fixups;
+  dinfo->relocs += relocs;
+  dinfo->fixups += fixups;
+
+  return 1;
+}
+
+/* This structure is used to assign offsets to got entries, function
+   descriptors, plt entries and lazy plt entries.  */
+
+struct _bfinfdpic_dynamic_got_plt_info
+{
+  /* Summary information collected with _bfinfdpic_count_got_plt_entries.  */
+  struct _bfinfdpic_dynamic_got_info g;
+
+  /* For each addressable range, we record a MAX (positive) and MIN
+     (negative) value.  CUR is used to assign got entries, and it's
+     incremented from an initial positive value to MAX, then from MIN
+     to FDCUR (unless FDCUR wraps around first).  FDCUR is used to
+     assign function descriptors, and it's decreased from an initial
+     non-positive value to MIN, then from MAX down to CUR (unless CUR
+     wraps around first).  All of MIN, MAX, CUR and FDCUR always point
+     to even words.  ODD, if non-zero, indicates an odd word to be
+     used for the next got entry, otherwise CUR is used and
+     incremented by a pair of words, wrapping around when it reaches
+     MAX.  FDCUR is decremented (and wrapped) before the next function
+     descriptor is chosen.  FDPLT indicates the number of remaining
+     slots that can be used for function descriptors used only by PLT
+     entries.  */
+  struct _bfinfdpic_dynamic_got_alloc_data
+  {
+    bfd_signed_vma max, cur, odd, fdcur, min;
+    bfd_vma fdplt;
+  } got17m4, gothilo;
+};
+
+/* Determine the positive and negative ranges to be used by each
+   offset range in the GOT.  FDCUR and CUR, that must be aligned to a
+   double-word boundary, are the minimum (negative) and maximum
+   (positive) GOT offsets already used by previous ranges, except for
+   an ODD entry that may have been left behind.  GOT and FD indicate
+   the size of GOT entries and function descriptors that must be
+   placed within the range from -WRAP to WRAP.  If there's room left,
+   up to FDPLT bytes should be reserved for additional function
+   descriptors.  */
+
+inline static bfd_signed_vma
+_bfinfdpic_compute_got_alloc_data (struct _bfinfdpic_dynamic_got_alloc_data *gad,
+                                  bfd_signed_vma fdcur,
+                                  bfd_signed_vma odd,
+                                  bfd_signed_vma cur,
+                                  bfd_vma got,
+                                  bfd_vma fd,
+                                  bfd_vma fdplt,
+                                  bfd_vma wrap)
+{
+  bfd_signed_vma wrapmin = -wrap;
+
+  /* Start at the given initial points.  */
+  gad->fdcur = fdcur;
+  gad->cur = cur;
+
+  /* If we had an incoming odd word and we have any got entries that
+     are going to use it, consume it, otherwise leave gad->odd at
+     zero.  We might force gad->odd to zero and return the incoming
+     odd such that it is used by the next range, but then GOT entries
+     might appear to be out of order and we wouldn't be able to
+     shorten the GOT by one word if it turns out to end with an
+     unpaired GOT entry.  */
+  if (odd && got)
+    {
+      gad->odd = odd;
+      got -= 4;
+      odd = 0;
+    }
+  else
+    gad->odd = 0;
+
+  /* If we're left with an unpaired GOT entry, compute its location
+     such that we can return it.  Otherwise, if got doesn't require an
+     odd number of words here, either odd was already zero in the
+     block above, or it was set to zero because got was non-zero, or
+     got was already zero.  In the latter case, we want the value of
+     odd to carry over to the return statement, so we don't want to
+     reset odd unless the condition below is true.  */
+  if (got & 4)
+    {
+      odd = cur + got;
+      got += 4;
+    }
+
+  /* Compute the tentative boundaries of this range.  */
+  gad->max = cur + got;
+  gad->min = fdcur - fd;
+  gad->fdplt = 0;
+
+  /* If function descriptors took too much space, wrap some of them
+     around.  */
+  if (gad->min < wrapmin)
+    {
+      gad->max += wrapmin - gad->min;
+      gad->min = wrapmin;
+    }
+  /* If there is space left and we have function descriptors
+     referenced in PLT entries that could take advantage of shorter
+     offsets, place them here.  */
+  else if (fdplt && gad->min > wrapmin)
+    {
+      bfd_vma fds;
+      if ((bfd_vma) (gad->min - wrapmin) < fdplt)
+       fds = gad->min - wrapmin;
+      else
+       fds = fdplt;
+
+      fdplt -= fds;
+      gad->min -= fds;
+      gad->fdplt += fds;
+    }
+
+  /* If GOT entries took too much space, wrap some of them around.
+     This may well cause gad->min to become lower than wrapmin.  This
+     will cause a relocation overflow later on, so we don't have to
+     report it here . */
+  if ((bfd_vma) gad->max > wrap)
+    {
+      gad->min -= gad->max - wrap;
+      gad->max = wrap;
+    }
+  /* If there is more space left, try to place some more function
+     descriptors for PLT entries.  */
+  else if (fdplt && (bfd_vma) gad->max < wrap)
+    {
+      bfd_vma fds;
+      if ((bfd_vma) (wrap - gad->max) < fdplt)
+       fds = wrap - gad->max;
+      else
+       fds = fdplt;
+
+      fdplt -= fds;
+      gad->max += fds;
+      gad->fdplt += fds;
+    }
+
+  /* If odd was initially computed as an offset past the wrap point,
+     wrap it around.  */
+  if (odd > gad->max)
+    odd = gad->min + odd - gad->max;
+
+  /* _bfinfdpic_get_got_entry() below will always wrap gad->cur if needed
+     before returning, so do it here too.  This guarantees that,
+     should cur and fdcur meet at the wrap point, they'll both be
+     equal to min.  */
+  if (gad->cur == gad->max)
+    gad->cur = gad->min;
+
+  return odd;
+}
+
+/* Compute the location of the next GOT entry, given the allocation
+   data for a range.  */
+
+inline static bfd_signed_vma
+_bfinfdpic_get_got_entry (struct _bfinfdpic_dynamic_got_alloc_data *gad)
+{
+  bfd_signed_vma ret;
+
+  if (gad->odd)
+    {
+      /* If there was an odd word left behind, use it.  */
+      ret = gad->odd;
+      gad->odd = 0;
+    }
+  else
+    {
+      /* Otherwise, use the word pointed to by cur, reserve the next
+        as an odd word, and skip to the next pair of words, possibly
+        wrapping around.  */
+      ret = gad->cur;
+      gad->odd = gad->cur + 4;
+      gad->cur += 8;
+      if (gad->cur == gad->max)
+       gad->cur = gad->min;
+    }
+
+  return ret;
+}
+
+/* Compute the location of the next function descriptor entry in the
+   GOT, given the allocation data for a range.  */
+
+inline static bfd_signed_vma
+_bfinfdpic_get_fd_entry (struct _bfinfdpic_dynamic_got_alloc_data *gad)
+{
+  /* If we're at the bottom, wrap around, and only then allocate the
+     next pair of words.  */
+  if (gad->fdcur == gad->min)
+    gad->fdcur = gad->max;
+  return gad->fdcur -= 8;
+}
+
+/* Assign GOT offsets for every GOT entry and function descriptor.
+   Doing everything in a single pass is tricky.  */
+
+static int
+_bfinfdpic_assign_got_entries (void **entryp, void *info_)
+{
+  struct bfinfdpic_relocs_info *entry = *entryp;
+  struct _bfinfdpic_dynamic_got_plt_info *dinfo = info_;
+
+  if (entry->got17m4)
+    entry->got_entry = _bfinfdpic_get_got_entry (&dinfo->got17m4);
+  else if (entry->gothilo)
+    entry->got_entry = _bfinfdpic_get_got_entry (&dinfo->gothilo);
+
+  if (entry->fdgot17m4)
+    entry->fdgot_entry = _bfinfdpic_get_got_entry (&dinfo->got17m4);
+  else if (entry->fdgothilo)
+    entry->fdgot_entry = _bfinfdpic_get_got_entry (&dinfo->gothilo);
+
+  if (entry->fdgoff17m4)
+    entry->fd_entry = _bfinfdpic_get_fd_entry (&dinfo->got17m4);
+  else if (entry->plt && dinfo->got17m4.fdplt)
+    {
+      dinfo->got17m4.fdplt -= 8;
+      entry->fd_entry = _bfinfdpic_get_fd_entry (&dinfo->got17m4);
+    }
+  else if (entry->plt)
+    {
+      dinfo->gothilo.fdplt -= 8;
+      entry->fd_entry = _bfinfdpic_get_fd_entry (&dinfo->gothilo);
+    }
+  else if (entry->privfd)
+    entry->fd_entry = _bfinfdpic_get_fd_entry (&dinfo->gothilo);
+
+  return 1;
+}
+
+/* Assign GOT offsets to private function descriptors used by PLT
+   entries (or referenced by 32-bit offsets), as well as PLT entries
+   and lazy PLT entries.  */
+
+static int
+_bfinfdpic_assign_plt_entries (void **entryp, void *info_)
+{
+  struct bfinfdpic_relocs_info *entry = *entryp;
+  struct _bfinfdpic_dynamic_got_plt_info *dinfo = info_;
+
+  /* If this symbol requires a local function descriptor, allocate
+     one.  */
+  if (entry->privfd && entry->fd_entry == 0)
+    {
+      if (dinfo->got17m4.fdplt)
+       {
+         entry->fd_entry = _bfinfdpic_get_fd_entry (&dinfo->got17m4);
+         dinfo->got17m4.fdplt -= 8;
+       }
+      else
+       {
+         BFD_ASSERT (dinfo->gothilo.fdplt);
+         entry->fd_entry = _bfinfdpic_get_fd_entry (&dinfo->gothilo);
+         dinfo->gothilo.fdplt -= 8;
+       }
+    }
+
+  if (entry->plt)
+    {
+      int size;
+
+      /* We use the section's raw size to mark the location of the
+        next PLT entry.  */
+      entry->plt_entry = bfinfdpic_plt_section (dinfo->g.info)->size;
+
+      /* Figure out the length of this PLT entry based on the
+        addressing mode we need to reach the function descriptor.  */
+      BFD_ASSERT (entry->fd_entry);
+      if (entry->fd_entry >= -(1 << (18 - 1))
+         && entry->fd_entry + 4 < (1 << (18 - 1)))
+       size = 10;
+      else
+       size = 16;
+
+      bfinfdpic_plt_section (dinfo->g.info)->size += size;
+    }
+
+  if (entry->lazyplt)
+    {
+      entry->lzplt_entry = dinfo->g.lzplt;
+      dinfo->g.lzplt += LZPLT_NORMAL_SIZE;
+      /* If this entry is the one that gets the resolver stub, account
+        for the additional instruction.  */
+      if (entry->lzplt_entry % BFINFDPIC_LZPLT_BLOCK_SIZE
+         == BFINFDPIC_LZPLT_RESOLV_LOC)
+       dinfo->g.lzplt += LZPLT_RESOLVER_EXTRA;
+    }
+
+  return 1;
+}
+
+/* Follow indirect and warning hash entries so that each got entry
+   points to the final symbol definition.  P must point to a pointer
+   to the hash table we're traversing.  Since this traversal may
+   modify the hash table, we set this pointer to NULL to indicate
+   we've made a potentially-destructive change to the hash table, so
+   the traversal must be restarted.  */
+static int
+_bfinfdpic_resolve_final_relocs_info (void **entryp, void *p)
+{
+  struct bfinfdpic_relocs_info *entry = *entryp;
+  htab_t *htab = p;
+
+  if (entry->symndx == -1)
+    {
+      struct elf_link_hash_entry *h = entry->d.h;
+      struct bfinfdpic_relocs_info *oentry;
+
+      while (h->root.type == bfd_link_hash_indirect
+            || h->root.type == bfd_link_hash_warning)
+       h = (struct elf_link_hash_entry *)h->root.u.i.link;
+
+      if (entry->d.h == h)
+       return 1;
+
+      oentry = bfinfdpic_relocs_info_for_global (*htab, 0, h, entry->addend,
+                                               NO_INSERT);
+
+      if (oentry)
+       {
+         /* Merge the two entries.  */
+         bfinfdpic_pic_merge_early_relocs_info (oentry, entry);
+         htab_clear_slot (*htab, entryp);
+         return 1;
+       }
+
+      entry->d.h = h;
+
+      /* If we can't find this entry with the new bfd hash, re-insert
+        it, and get the traversal restarted.  */
+      if (! htab_find (*htab, entry))
+       {
+         htab_clear_slot (*htab, entryp);
+         entryp = htab_find_slot (*htab, entry, INSERT);
+         if (! *entryp)
+           *entryp = entry;
+         /* Abort the traversal, since the whole table may have
+            moved, and leave it up to the parent to restart the
+            process.  */
+         *(htab_t *)p = NULL;
+         return 0;
+       }
+    }
+
+  return 1;
+}
+
+/* Set the sizes of the dynamic sections.  */
+
+static bfd_boolean
+elf32_bfinfdpic_size_dynamic_sections (bfd *output_bfd,
+                                     struct bfd_link_info *info)
+{
+  bfd *dynobj;
+  asection *s;
+  struct _bfinfdpic_dynamic_got_plt_info gpinfo;
+  bfd_signed_vma odd;
+  bfd_vma limit;
+
+  dynobj = elf_hash_table (info)->dynobj;
+  BFD_ASSERT (dynobj != NULL);
+
+  if (elf_hash_table (info)->dynamic_sections_created)
+    {
+      /* Set the contents of the .interp section to the interpreter.  */
+      if (info->executable)
+       {
+         s = bfd_get_section_by_name (dynobj, ".interp");
+         BFD_ASSERT (s != NULL);
+         s->size = sizeof ELF_DYNAMIC_INTERPRETER;
+         s->contents = (bfd_byte *) ELF_DYNAMIC_INTERPRETER;
+       }
+    }
+
+  memset (&gpinfo, 0, sizeof (gpinfo));
+  gpinfo.g.info = info;
+
+  for (;;)
+    {
+      htab_t relocs = bfinfdpic_relocs_info (info);
+
+      htab_traverse (relocs, _bfinfdpic_resolve_final_relocs_info, &relocs);
+
+      if (relocs == bfinfdpic_relocs_info (info))
+       break;
+    }
+
+  htab_traverse (bfinfdpic_relocs_info (info), _bfinfdpic_count_got_plt_entries,
+                &gpinfo.g);
+
+  odd = 12;
+  /* Compute the total size taken by entries in the 18-bit range,
+     to tell how many PLT function descriptors we can bring into it
+     without causing it to overflow.  */
+  limit = odd + gpinfo.g.got17m4 + gpinfo.g.fd17m4;
+  if (limit < (bfd_vma)1 << 18)
+    limit = ((bfd_vma)1 << 18) - limit;
+  else
+    limit = 0;
+  if (gpinfo.g.fdplt < limit)
+    limit = gpinfo.g.fdplt;
+
+  /* Determine the ranges of GOT offsets that we can use for each
+     range of addressing modes.  */
+  odd = _bfinfdpic_compute_got_alloc_data (&gpinfo.got17m4,
+                                         0,
+                                         odd,
+                                         16,
+                                         gpinfo.g.got17m4,
+                                         gpinfo.g.fd17m4,
+                                         limit,
+                                         (bfd_vma)1 << (18-1));
+  odd = _bfinfdpic_compute_got_alloc_data (&gpinfo.gothilo,
+                                         gpinfo.got17m4.min,
+                                         odd,
+                                         gpinfo.got17m4.max,
+                                         gpinfo.g.gothilo,
+                                         gpinfo.g.fdhilo,
+                                         gpinfo.g.fdplt - gpinfo.got17m4.fdplt,
+                                         (bfd_vma)1 << (32-1));
+
+  /* Now assign (most) GOT offsets.  */
+  htab_traverse (bfinfdpic_relocs_info (info), _bfinfdpic_assign_got_entries,
+                &gpinfo);
+
+  bfinfdpic_got_section (info)->size = gpinfo.gothilo.max
+    - gpinfo.gothilo.min
+    /* If an odd word is the last word of the GOT, we don't need this
+       word to be part of the GOT.  */
+    - (odd + 4 == gpinfo.gothilo.max ? 4 : 0);
+  if (bfinfdpic_got_section (info)->size == 0)
+    bfinfdpic_got_section (info)->flags |= SEC_EXCLUDE;
+  else if (bfinfdpic_got_section (info)->size == 12
+          && ! elf_hash_table (info)->dynamic_sections_created)
+    {
+      bfinfdpic_got_section (info)->flags |= SEC_EXCLUDE;
+      bfinfdpic_got_section (info)->size = 0;
+    }
+  else
+    {
+      bfinfdpic_got_section (info)->contents =
+       (bfd_byte *) bfd_zalloc (dynobj,
+                                bfinfdpic_got_section (info)->size);
+      if (bfinfdpic_got_section (info)->contents == NULL)
+       return FALSE;
+    }
+
+  if (elf_hash_table (info)->dynamic_sections_created)
+    /* Subtract the number of lzplt entries, since those will generate
+       relocations in the pltrel section.  */
+    bfinfdpic_gotrel_section (info)->size =
+      (gpinfo.g.relocs - gpinfo.g.lzplt / LZPLT_NORMAL_SIZE)
+      * get_elf_backend_data (output_bfd)->s->sizeof_rel;
+  else
+    BFD_ASSERT (gpinfo.g.relocs == 0);
+  if (bfinfdpic_gotrel_section (info)->size == 0)
+    bfinfdpic_gotrel_section (info)->flags |= SEC_EXCLUDE;
+  else
+    {
+      bfinfdpic_gotrel_section (info)->contents =
+       (bfd_byte *) bfd_zalloc (dynobj,
+                                bfinfdpic_gotrel_section (info)->size);
+      if (bfinfdpic_gotrel_section (info)->contents == NULL)
+       return FALSE;
+    }
+
+  bfinfdpic_gotfixup_section (info)->size = (gpinfo.g.fixups + 1) * 4;
+  if (bfinfdpic_gotfixup_section (info)->size == 0)
+    bfinfdpic_gotfixup_section (info)->flags |= SEC_EXCLUDE;
+  else
+    {
+      bfinfdpic_gotfixup_section (info)->contents =
+       (bfd_byte *) bfd_zalloc (dynobj,
+                                bfinfdpic_gotfixup_section (info)->size);
+      if (bfinfdpic_gotfixup_section (info)->contents == NULL)
+       return FALSE;
+    }
+
+  if (elf_hash_table (info)->dynamic_sections_created)
+    {
+      bfinfdpic_pltrel_section (info)->size =
+       gpinfo.g.lzplt / LZPLT_NORMAL_SIZE * get_elf_backend_data (output_bfd)->s->sizeof_rel;
+      if (bfinfdpic_pltrel_section (info)->size == 0)
+       bfinfdpic_pltrel_section (info)->flags |= SEC_EXCLUDE;
+      else
+       {
+         bfinfdpic_pltrel_section (info)->contents =
+           (bfd_byte *) bfd_zalloc (dynobj,
+                                    bfinfdpic_pltrel_section (info)->size);
+         if (bfinfdpic_pltrel_section (info)->contents == NULL)
+           return FALSE;
+       }
+    }
+
+  /* Add 4 bytes for every block of at most 65535 lazy PLT entries,
+     such that there's room for the additional instruction needed to
+     call the resolver.  Since _bfinfdpic_assign_got_entries didn't
+     account for them, our block size is 4 bytes smaller than the real
+     block size.  */
+  if (elf_hash_table (info)->dynamic_sections_created)
+    {
+      bfinfdpic_plt_section (info)->size = gpinfo.g.lzplt
+       + ((gpinfo.g.lzplt + (BFINFDPIC_LZPLT_BLOCK_SIZE - 4) - LZPLT_NORMAL_SIZE)
+          / (BFINFDPIC_LZPLT_BLOCK_SIZE - 4) * LZPLT_RESOLVER_EXTRA);
+    }
+
+  /* Reset it, such that _bfinfdpic_assign_plt_entries() can use it to
+     actually assign lazy PLT entries addresses.  */
+  gpinfo.g.lzplt = 0;
+
+  /* Save information that we're going to need to generate GOT and PLT
+     entries.  */
+  bfinfdpic_got_initial_offset (info) = -gpinfo.gothilo.min;
+
+  if (get_elf_backend_data (output_bfd)->want_got_sym)
+    elf_hash_table (info)->hgot->root.u.def.value
+      += bfinfdpic_got_initial_offset (info);
+
+  if (elf_hash_table (info)->dynamic_sections_created)
+    bfinfdpic_plt_initial_offset (info) =
+      bfinfdpic_plt_section (info)->size;
+
+  htab_traverse (bfinfdpic_relocs_info (info), _bfinfdpic_assign_plt_entries,
+                &gpinfo);
+
+  /* Allocate the PLT section contents only after
+     _bfinfdpic_assign_plt_entries has a chance to add the size of the
+     non-lazy PLT entries.  */
+  if (elf_hash_table (info)->dynamic_sections_created)
+    {
+      if (bfinfdpic_plt_section (info)->size == 0)
+       bfinfdpic_plt_section (info)->flags |= SEC_EXCLUDE;
+      else
+       {
+         bfinfdpic_plt_section (info)->contents =
+           (bfd_byte *) bfd_zalloc (dynobj,
+                                    bfinfdpic_plt_section (info)->size);
+         if (bfinfdpic_plt_section (info)->contents == NULL)
+           return FALSE;
+       }
+    }
+
+  if (elf_hash_table (info)->dynamic_sections_created)
+    {
+      if (bfinfdpic_got_section (info)->size)
+       if (!_bfd_elf_add_dynamic_entry (info, DT_PLTGOT, 0))
+         return FALSE;
+
+      if (bfinfdpic_pltrel_section (info)->size)
+       if (!_bfd_elf_add_dynamic_entry (info, DT_PLTRELSZ, 0)
+           || !_bfd_elf_add_dynamic_entry (info, DT_PLTREL, DT_REL)
+           || !_bfd_elf_add_dynamic_entry (info, DT_JMPREL, 0))
+         return FALSE;
+
+      if (bfinfdpic_gotrel_section (info)->size)
+       if (!_bfd_elf_add_dynamic_entry (info, DT_REL, 0)
+           || !_bfd_elf_add_dynamic_entry (info, DT_RELSZ, 0)
+           || !_bfd_elf_add_dynamic_entry (info, DT_RELENT,
+                                           sizeof (Elf32_External_Rel)))
          return FALSE;
+    }
+
+  return TRUE;
+}
+
+static bfd_boolean
+elf32_bfinfdpic_always_size_sections (bfd *output_bfd,
+                                    struct bfd_link_info *info)
+{
+  if (!info->relocatable)
+    {
+      struct elf_link_hash_entry *h;
+      asection *sec;
+
+      /* Force a PT_GNU_STACK segment to be created.  */
+      if (! elf_tdata (output_bfd)->stack_flags)
+       elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X;
+
+      /* Define __stacksize if it's not defined yet.  */
+      h = elf_link_hash_lookup (elf_hash_table (info), "__stacksize",
+                               FALSE, FALSE, FALSE);
+      if (! h || h->root.type != bfd_link_hash_defined
+         || h->type != STT_OBJECT
+         || !h->def_regular)
+       {
+         struct bfd_link_hash_entry *bh = NULL;
+
+         if (!(_bfd_generic_link_add_one_symbol
+               (info, output_bfd, "__stacksize",
+                BSF_GLOBAL, bfd_abs_section_ptr, DEFAULT_STACK_SIZE,
+                (const char *) NULL, FALSE,
+                get_elf_backend_data (output_bfd)->collect, &bh)))
+           return FALSE;
+
+         h = (struct elf_link_hash_entry *) bh;
+         h->def_regular = 1;
+         h->type = STT_OBJECT;
        }
 
-      if (r != bfd_reloc_ok)
+      /* Create a stack section, and set its alignment.  */
+      sec = bfd_make_section (output_bfd, ".stack");
+
+      if (sec == NULL
+         || ! bfd_set_section_alignment (output_bfd, sec, 3))
+       return FALSE;
+    }
+
+  return TRUE;
+}
+
+static bfd_boolean
+elf32_bfinfdpic_modify_segment_map (bfd *output_bfd,
+                                  struct bfd_link_info *info)
+{
+  struct elf_segment_map *m;
+
+  /* objcopy and strip preserve what's already there using
+     elf32_bfinfdpic_copy_private_bfd_data ().  */
+  if (! info)
+    return TRUE;
+
+  for (m = elf_tdata (output_bfd)->segment_map; m != NULL; m = m->next)
+    if (m->p_type == PT_GNU_STACK)
+      break;
+
+  if (m)
+    {
+      asection *sec = bfd_get_section_by_name (output_bfd, ".stack");
+      struct elf_link_hash_entry *h;
+
+      if (sec)
        {
-         const char *name;
+         /* Obtain the pointer to the __stacksize symbol.  */
+         h = elf_link_hash_lookup (elf_hash_table (info), "__stacksize",
+                                   FALSE, FALSE, FALSE);
+         while (h->root.type == bfd_link_hash_indirect
+                || h->root.type == bfd_link_hash_warning)
+           h = (struct elf_link_hash_entry *)h->root.u.i.link;
+         BFD_ASSERT (h->root.type == bfd_link_hash_defined);
 
-         if (h != NULL)
-           name = h->root.root.string;
+         /* Set the section size from the symbol value.  We
+            intentionally ignore the symbol section.  */
+         if (h->root.type == bfd_link_hash_defined)
+           sec->size = h->root.u.def.value;
          else
-           {
-             name = bfd_elf_string_from_elf_section (input_bfd,
-                                                     symtab_hdr->sh_link,
-                                                     sym->st_name);
-             if (name == NULL)
-               return FALSE;
-             if (*name == '\0')
-               name = bfd_section_name (input_bfd, sec);
-           }
+           sec->size = DEFAULT_STACK_SIZE;
 
-         if (r == bfd_reloc_overflow)
-           {
-             if (!(info->callbacks->reloc_overflow
-                   (info, (h ? &h->root : NULL), name, howto->name,
-                    (bfd_vma) 0, input_bfd, input_section, rel->r_offset)))
-               return FALSE;
-           }
-         else
+         /* Add the stack section to the PT_GNU_STACK segment,
+            such that its size and alignment requirements make it
+            to the segment.  */
+         m->sections[m->count] = sec;
+         m->count++;
+       }
+    }
+
+  return TRUE;
+}
+
+static bfd_boolean
+elf32_bfinfdpic_finish_dynamic_sections (bfd *output_bfd,
+                                       struct bfd_link_info *info)
+{
+  bfd *dynobj;
+  asection *sdyn;
+
+  dynobj = elf_hash_table (info)->dynobj;
+
+  if (bfinfdpic_got_section (info))
+    {
+      BFD_ASSERT (bfinfdpic_gotrel_section (info)->size
+                 == (bfinfdpic_gotrel_section (info)->reloc_count
+                     * sizeof (Elf32_External_Rel)));
+
+      if (bfinfdpic_gotfixup_section (info))
+       {
+         struct elf_link_hash_entry *hgot = elf_hash_table (info)->hgot;
+         bfd_vma got_value = hgot->root.u.def.value
+           + hgot->root.u.def.section->output_section->vma
+           + hgot->root.u.def.section->output_offset;
+
+         _bfinfdpic_add_rofixup (output_bfd, bfinfdpic_gotfixup_section (info),
+                                got_value, 0);
+
+         if (bfinfdpic_gotfixup_section (info)->size
+             != (bfinfdpic_gotfixup_section (info)->reloc_count * 4))
            {
              (*_bfd_error_handler)
-               (_("%B(%A+0x%lx): reloc against `%s': error %d"),
-                input_bfd, input_section,
-                (long) rel->r_offset, name, (int) r);
+               ("LINKER BUG: .rofixup section size mismatch");
              return FALSE;
            }
        }
     }
+  if (elf_hash_table (info)->dynamic_sections_created)
+    {
+      BFD_ASSERT (bfinfdpic_pltrel_section (info)->size
+                 == (bfinfdpic_pltrel_section (info)->reloc_count
+                     * sizeof (Elf32_External_Rel)));
+    }
+
+  sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
+
+  if (elf_hash_table (info)->dynamic_sections_created)
+    {
+      Elf32_External_Dyn * dyncon;
+      Elf32_External_Dyn * dynconend;
+
+      BFD_ASSERT (sdyn != NULL);
+
+      dyncon = (Elf32_External_Dyn *) sdyn->contents;
+      dynconend = (Elf32_External_Dyn *) (sdyn->contents + sdyn->size);
+
+      for (; dyncon < dynconend; dyncon++)
+       {
+         Elf_Internal_Dyn dyn;
+
+         bfd_elf32_swap_dyn_in (dynobj, dyncon, &dyn);
+
+         switch (dyn.d_tag)
+           {
+           default:
+             break;
+
+           case DT_PLTGOT:
+             dyn.d_un.d_ptr = bfinfdpic_got_section (info)->output_section->vma
+               + bfinfdpic_got_section (info)->output_offset
+               + bfinfdpic_got_initial_offset (info);
+             bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
+             break;
+
+           case DT_JMPREL:
+             dyn.d_un.d_ptr = bfinfdpic_pltrel_section (info)
+               ->output_section->vma
+               + bfinfdpic_pltrel_section (info)->output_offset;
+             bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
+             break;
+
+           case DT_PLTRELSZ:
+             dyn.d_un.d_val = bfinfdpic_pltrel_section (info)->size;
+             bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
+             break;
+           }
+       }
+    }
+
+  return TRUE;
+}
+
+/* Adjust a symbol defined by a dynamic object and referenced by a
+   regular object.  */
+
+static bfd_boolean
+elf32_bfinfdpic_adjust_dynamic_symbol
+(struct bfd_link_info *info ATTRIBUTE_UNUSED,
+ struct elf_link_hash_entry *h ATTRIBUTE_UNUSED)
+{
+  bfd * dynobj;
+
+  dynobj = elf_hash_table (info)->dynobj;
+
+  /* Make sure we know what is going on here.  */
+  BFD_ASSERT (dynobj != NULL
+             && (h->u.weakdef != NULL
+                 || (h->def_dynamic
+                     && h->ref_regular
+                     && !h->def_regular)));
+
+  /* If this is a weak symbol, and there is a real definition, the
+     processor independent code will have arranged for us to see the
+     real definition first, and we can just use the same value.  */
+  if (h->u.weakdef != NULL)
+    {
+      BFD_ASSERT (h->u.weakdef->root.type == bfd_link_hash_defined
+                 || h->u.weakdef->root.type == bfd_link_hash_defweak);
+      h->root.u.def.section = h->u.weakdef->root.u.def.section;
+      h->root.u.def.value = h->u.weakdef->root.u.def.value;
+    }
 
   return TRUE;
 }
 
-static asection *
-bfin_gc_mark_hook (asection * sec,
-                  struct bfd_link_info *info ATTRIBUTE_UNUSED,
-                  Elf_Internal_Rela * rel,
-                  struct elf_link_hash_entry *h,
-                   Elf_Internal_Sym * sym)
+/* Perform any actions needed for dynamic symbols.  */
+
+static bfd_boolean
+elf32_bfinfdpic_finish_dynamic_symbol
+(bfd *output_bfd ATTRIBUTE_UNUSED,
+ struct bfd_link_info *info ATTRIBUTE_UNUSED,
+ struct elf_link_hash_entry *h ATTRIBUTE_UNUSED,
+ Elf_Internal_Sym *sym ATTRIBUTE_UNUSED)
 {
-  if (h != NULL)
-    {
-      switch (ELF32_R_TYPE (rel->r_info))
-       {
+  return TRUE;
+}
 
-       case R_BFIN_GNU_VTINHERIT:
-       case R_BFIN_GNU_VTENTRY:
-         break;
+/* Decide whether to attempt to turn absptr or lsda encodings in
+   shared libraries into pcrel within the given input section.  */
 
-       default:
-         switch (h->root.type)
-           {
-           default:
-             break;
+static bfd_boolean
+bfinfdpic_elf_use_relative_eh_frame
+(bfd *input_bfd ATTRIBUTE_UNUSED,
+ struct bfd_link_info *info ATTRIBUTE_UNUSED,
+ asection *eh_frame_section ATTRIBUTE_UNUSED)
+{
+  /* We can't use PC-relative encodings in FDPIC binaries, in general.  */
+  return FALSE;
+}
 
-           case bfd_link_hash_defined:
-           case bfd_link_hash_defweak:
-             return h->root.u.def.section;
+/* Adjust the contents of an eh_frame_hdr section before they're output.  */
 
-           case bfd_link_hash_common:
-             return h->root.u.c.p->section;
-           }
-       }
-    }
-  else
-    return bfd_section_from_elf_index (sec->owner, sym->st_shndx);
+static bfd_byte
+bfinfdpic_elf_encode_eh_address (bfd *abfd,
+                               struct bfd_link_info *info,
+                               asection *osec, bfd_vma offset,
+                               asection *loc_sec, bfd_vma loc_offset,
+                               bfd_vma *encoded)
+{
+  struct elf_link_hash_entry *h;
 
-  return NULL;
+  h = elf_hash_table (info)->hgot;
+  BFD_ASSERT (h && h->root.type == bfd_link_hash_defined);
+
+  if (! h || (_bfinfdpic_osec_to_segment (abfd, osec)
+             == _bfinfdpic_osec_to_segment (abfd, loc_sec->output_section)))
+    return _bfd_elf_encode_eh_address (abfd, info, osec, offset,
+                                      loc_sec, loc_offset, encoded);
+
+  BFD_ASSERT (_bfinfdpic_osec_to_segment (abfd, osec)
+             == (_bfinfdpic_osec_to_segment
+                 (abfd, h->root.u.def.section->output_section)));
+
+  *encoded = osec->vma + offset
+    - (h->root.u.def.value
+       + h->root.u.def.section->output_section->vma
+       + h->root.u.def.section->output_offset);
+
+  return DW_EH_PE_datarel | DW_EH_PE_sdata4;
 }
 
 
-/* Update the got entry reference counts for the section being removed.  */
+
+/* Look through the relocs for a section during the first phase.
+
+   Besides handling virtual table relocs for gc, we have to deal with
+   all sorts of PIC-related relocations.  We describe below the
+   general plan on how to handle such relocations, even though we only
+   collect information at this point, storing them in hash tables for
+   perusal of later passes.
+
+   32 relocations are propagated to the linker output when creating
+   position-independent output.  LO16 and HI16 relocations are not
+   supposed to be encountered in this case.
+
+   LABEL16 should always be resolvable by the linker, since it's only
+   used by branches.
+
+   LABEL24, on the other hand, is used by calls.  If it turns out that
+   the target of a call is a dynamic symbol, a PLT entry must be
+   created for it, which triggers the creation of a private function
+   descriptor and, unless lazy binding is disabled, a lazy PLT entry.
+
+   GPREL relocations require the referenced symbol to be in the same
+   segment as _gp, but this can only be checked later.
+
+   All GOT, GOTOFF and FUNCDESC relocations require a .got section to
+   exist.  LABEL24 might as well, since it may require a PLT entry,
+   that will require a got.
+
+   Non-FUNCDESC GOT relocations require a GOT entry to be created
+   regardless of whether the symbol is dynamic.  However, since a
+   global symbol that turns out to not be exported may have the same
+   address of a non-dynamic symbol, we don't assign GOT entries at
+   this point, such that we can share them in this case.  A relocation
+   for the GOT entry always has to be created, be it to offset a
+   private symbol by the section load address, be it to get the symbol
+   resolved dynamically.
+
+   FUNCDESC GOT relocations require a GOT entry to be created, and
+   handled as if a FUNCDESC relocation was applied to the GOT entry in
+   an object file.
+
+   FUNCDESC relocations referencing a symbol that turns out to NOT be
+   dynamic cause a private function descriptor to be created.  The
+   FUNCDESC relocation then decays to a 32 relocation that points at
+   the private descriptor.  If the symbol is dynamic, the FUNCDESC
+   relocation is propagated to the linker output, such that the
+   dynamic linker creates the canonical descriptor, pointing to the
+   dynamically-resolved definition of the function.
+
+   Non-FUNCDESC GOTOFF relocations must always refer to non-dynamic
+   symbols that are assigned to the same segment as the GOT, but we
+   can only check this later, after we know the complete set of
+   symbols defined and/or exported.
+
+   FUNCDESC GOTOFF relocations require a function descriptor to be
+   created and, unless lazy binding is disabled or the symbol is not
+   dynamic, a lazy PLT entry.  Since we can't tell at this point
+   whether a symbol is going to be dynamic, we have to decide later
+   whether to create a lazy PLT entry or bind the descriptor directly
+   to the private function.
+
+   FUNCDESC_VALUE relocations are not supposed to be present in object
+   files, but they may very well be simply propagated to the linker
+   output, since they have no side effect.
+
+
+   A function descriptor always requires a FUNCDESC_VALUE relocation.
+   Whether it's in .plt.rel or not depends on whether lazy binding is
+   enabled and on whether the referenced symbol is dynamic.
+
+   The existence of a lazy PLT requires the resolverStub lazy PLT
+   entry to be present.
+
+
+   As for assignment of GOT, PLT and lazy PLT entries, and private
+   descriptors, we might do them all sequentially, but we can do
+   better than that.  For example, we can place GOT entries and
+   private function descriptors referenced using 12-bit operands
+   closer to the PIC register value, such that these relocations don't
+   overflow.  Those that are only referenced with LO16 relocations
+   could come next, but we may as well place PLT-required function
+   descriptors in the 12-bit range to make them shorter.  Symbols
+   referenced with LO16/HI16 may come next, but we may place
+   additional function descriptors in the 16-bit range if we can
+   reliably tell that we've already placed entries that are ever
+   referenced with only LO16.  PLT entries are therefore generated as
+   small as possible, while not introducing relocation overflows in
+   GOT or FUNCDESC_GOTOFF relocations.  Lazy PLT entries could be
+   generated before or after PLT entries, but not intermingled with
+   them, such that we can have more lazy PLT entries in range for a
+   branch to the resolverStub.  The resolverStub should be emitted at
+   the most distant location from the first lazy PLT entry such that
+   it's still in range for a branch, or closer, if there isn't a need
+   for so many lazy PLT entries.  Additional lazy PLT entries may be
+   emitted after the resolverStub, as long as branches are still in
+   range.  If the branch goes out of range, longer lazy PLT entries
+   are emitted.
+
+   We could further optimize PLT and lazy PLT entries by giving them
+   priority in assignment to closer-to-gr17 locations depending on the
+   number of occurrences of references to them (assuming a function
+   that's called more often is more important for performance, so its
+   PLT entry should be faster), or taking hints from the compiler.
+   Given infinite time and money... :-)  */
 
 static bfd_boolean
-bfin_gc_sweep_hook (bfd * abfd,
-                   struct bfd_link_info *info,
-                   asection * sec,
-                    const Elf_Internal_Rela * relocs)
+bfinfdpic_check_relocs (bfd *abfd, struct bfd_link_info *info,
+                       asection *sec, const Elf_Internal_Rela *relocs)
 {
   Elf_Internal_Shdr *symtab_hdr;
-  struct elf_link_hash_entry **sym_hashes;
-  bfd_signed_vma *local_got_refcounts;
-  const Elf_Internal_Rela *rel, *relend;
+  struct elf_link_hash_entry **sym_hashes, **sym_hashes_end;
+  const Elf_Internal_Rela *rel;
+  const Elf_Internal_Rela *rel_end;
   bfd *dynobj;
-  asection *sgot;
-  asection *srelgot;
+  struct bfinfdpic_relocs_info *picrel;
 
-  dynobj = elf_hash_table (info)->dynobj;
-  if (dynobj == NULL)
+  if (info->relocatable)
     return TRUE;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
-  local_got_refcounts = elf_local_got_refcounts (abfd);
-
-  sgot = bfd_get_section_by_name (dynobj, ".got");
-  srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
+  sym_hashes_end = sym_hashes + symtab_hdr->sh_size/sizeof(Elf32_External_Sym);
+  if (!elf_bad_symtab (abfd))
+    sym_hashes_end -= symtab_hdr->sh_info;
 
-  relend = relocs + sec->reloc_count;
-  for (rel = relocs; rel < relend; rel++)
+  dynobj = elf_hash_table (info)->dynobj;
+  rel_end = relocs + sec->reloc_count;
+  for (rel = relocs; rel < rel_end; rel++)
     {
-      unsigned long r_symndx;
       struct elf_link_hash_entry *h;
+      unsigned long r_symndx;
+
+      r_symndx = ELF32_R_SYM (rel->r_info);
+      if (r_symndx < symtab_hdr->sh_info)
+        h = NULL;
+      else
+        h = sym_hashes[r_symndx - symtab_hdr->sh_info];
 
       switch (ELF32_R_TYPE (rel->r_info))
        {
-       case R_got:
-         r_symndx = ELF32_R_SYM (rel->r_info);
-         if (r_symndx >= symtab_hdr->sh_info)
+       case R_BFIN_GOT17M4:
+       case R_BFIN_GOTHI:
+       case R_BFIN_GOTLO:
+       case R_BFIN_FUNCDESC_GOT17M4:
+       case R_BFIN_FUNCDESC_GOTHI:
+       case R_BFIN_FUNCDESC_GOTLO:
+       case R_BFIN_GOTOFF17M4:
+       case R_BFIN_GOTOFFHI:
+       case R_BFIN_GOTOFFLO:
+       case R_BFIN_FUNCDESC_GOTOFF17M4:
+       case R_BFIN_FUNCDESC_GOTOFFHI:
+       case R_BFIN_FUNCDESC_GOTOFFLO:
+       case R_BFIN_FUNCDESC:
+       case R_BFIN_FUNCDESC_VALUE:
+         if (! IS_FDPIC (abfd))
+           goto bad_reloc;
+         /* Fall through.  */
+       case R_pcrel24:
+       case R_pcrel24_jump_l:
+       case R_byte4_data:
+         if (IS_FDPIC (abfd) && ! dynobj)
            {
-             h = sym_hashes[r_symndx - symtab_hdr->sh_info];
-             if (h->got.refcount > 0)
-               {
-                 --h->got.refcount;
-                 if (h->got.refcount == 0)
-                   {
-                     /* We don't need the .got entry any more.  */
-                     sgot->size -= 4;
-                     srelgot->size -= sizeof (Elf32_External_Rela);
-                   }
-               }
+             elf_hash_table (info)->dynobj = dynobj = abfd;
+             if (! _bfin_create_got_section (abfd, info))
+               return FALSE;
            }
-         else if (local_got_refcounts != NULL)
+         if (! IS_FDPIC (abfd))
            {
-             if (local_got_refcounts[r_symndx] > 0)
-               {
-                 --local_got_refcounts[r_symndx];
-                 if (local_got_refcounts[r_symndx] == 0)
-                   {
-                     /* We don't need the .got entry any more.  */
-                     sgot->size -= 4;
-                     if (info->shared)
-                       srelgot->size -= sizeof (Elf32_External_Rela);
-                   }
-               }
+             picrel = NULL;
+             break;
+           }
+         if (h != NULL)
+           {
+             if (h->dynindx == -1)
+               switch (ELF_ST_VISIBILITY (h->other))
+                 {
+                 case STV_INTERNAL:
+                 case STV_HIDDEN:
+                   break;
+                 default:
+                   bfd_elf_link_record_dynamic_symbol (info, h);
+                   break;
+                 }
+             picrel
+               = bfinfdpic_relocs_info_for_global (bfinfdpic_relocs_info (info),
+                                                  abfd, h,
+                                                  rel->r_addend, INSERT);
            }
+         else
+           picrel = bfinfdpic_relocs_info_for_local (bfinfdpic_relocs_info
+                                                    (info), abfd, r_symndx,
+                                                    rel->r_addend, INSERT);
+         if (! picrel)
+           return FALSE;
          break;
+
        default:
+         picrel = NULL;
          break;
        }
+
+      switch (ELF32_R_TYPE (rel->r_info))
+        {
+       case R_pcrel24:
+       case R_pcrel24_jump_l:
+         if (IS_FDPIC (abfd))
+           picrel->call = 1;
+         break;
+
+       case R_BFIN_FUNCDESC_VALUE:
+         picrel->relocsfdv++;
+         if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC)
+           picrel->relocs32--;
+         /* Fall through.  */
+
+       case R_byte4_data:
+         if (! IS_FDPIC (abfd))
+           break;
+
+         picrel->sym = 1;
+         if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC)
+           picrel->relocs32++;
+         break;
+
+       case R_BFIN_GOT17M4:
+         picrel->got17m4 = 1;
+         break;
+
+       case R_BFIN_GOTHI:
+       case R_BFIN_GOTLO:
+         picrel->gothilo = 1;
+         break;
+
+       case R_BFIN_FUNCDESC_GOT17M4:
+         picrel->fdgot17m4 = 1;
+         break;
+
+       case R_BFIN_FUNCDESC_GOTHI:
+       case R_BFIN_FUNCDESC_GOTLO:
+         picrel->fdgothilo = 1;
+         break;
+
+       case R_BFIN_GOTOFF17M4:
+       case R_BFIN_GOTOFFHI:
+       case R_BFIN_GOTOFFLO:
+         picrel->gotoff = 1;
+         break;
+
+       case R_BFIN_FUNCDESC_GOTOFF17M4:
+         picrel->fdgoff17m4 = 1;
+         break;
+
+       case R_BFIN_FUNCDESC_GOTOFFHI:
+       case R_BFIN_FUNCDESC_GOTOFFLO:
+         picrel->fdgoffhilo = 1;
+         break;
+
+       case R_BFIN_FUNCDESC:
+         picrel->fd = 1;
+         picrel->relocsfd++;
+         break;
+
+        /* This relocation describes the C++ object vtable hierarchy.
+           Reconstruct it for later use during GC.  */
+        case R_BFIN_GNU_VTINHERIT:
+          if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
+            return FALSE;
+          break;
+
+        /* This relocation describes which C++ vtable entries are actually
+           used.  Record for later use during GC.  */
+        case R_BFIN_GNU_VTENTRY:
+          if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
+            return FALSE;
+          break;
+
+       case R_huimm16:
+       case R_luimm16:
+       case R_pcrel12_jump_s:
+       case R_pcrel10:
+         break;
+
+       default:
+       bad_reloc:
+         (*_bfd_error_handler)
+           (_("%B: unsupported relocation type %i"),
+            abfd, ELF32_R_TYPE (rel->r_info));
+         return FALSE;
+        }
     }
 
   return TRUE;
 }
 
+/* Set the right machine number for a Blackfin ELF file.  */
+
+static bfd_boolean
+elf32_bfin_object_p (bfd *abfd)
+{
+  bfd_default_set_arch_mach (abfd, bfd_arch_bfin, 0);
+  return (((elf_elfheader (abfd)->e_flags & EF_BFIN_FDPIC) != 0)
+         == (IS_FDPIC (abfd)));
+}
 
-/* Merge backend specific data from an object file to the output
-   object file when linking.  */
 static bfd_boolean
-elf32_bfin_merge_private_bfd_data (bfd * ibfd, bfd * obfd)
+elf32_bfin_set_private_flags (bfd * abfd, flagword flags)
 {
-  flagword out_flags;
-  flagword in_flags;
+  elf_elfheader (abfd)->e_flags = flags;
+  elf_flags_init (abfd) = TRUE;
+  return TRUE;
+}
+
+/* Copy backend specific data from one object module to another.  */
 
+static bfd_boolean
+bfin_elf_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
+{
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
     return TRUE;
 
-  in_flags = elf_elfheader (ibfd)->e_flags;
-  out_flags = elf_elfheader (obfd)->e_flags;
-
-  if (!elf_flags_init (obfd))
-    {
-      elf_flags_init (obfd) = TRUE;
-      elf_elfheader (obfd)->e_flags = in_flags;
-    }
+  BFD_ASSERT (!elf_flags_init (obfd)
+             || elf_elfheader (obfd)->e_flags == elf_elfheader (ibfd)->e_flags);
 
+  elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags;
+  elf_flags_init (obfd) = TRUE;
   return TRUE;
 }
 
-
 static bfd_boolean
-elf32_bfin_set_private_flags (bfd * abfd, flagword flags)
+elf32_bfinfdpic_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
-  elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
+  unsigned i;
+
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
+      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+    return TRUE;
+
+  if (! bfin_elf_copy_private_bfd_data (ibfd, obfd))
+    return FALSE;
+
+  if (! elf_tdata (ibfd) || ! elf_tdata (ibfd)->phdr
+      || ! elf_tdata (obfd) || ! elf_tdata (obfd)->phdr)
+    return TRUE;
+
+  /* Copy the stack size.  */
+  for (i = 0; i < elf_elfheader (ibfd)->e_phnum; i++)
+    if (elf_tdata (ibfd)->phdr[i].p_type == PT_GNU_STACK)
+      {
+       Elf_Internal_Phdr *iphdr = &elf_tdata (ibfd)->phdr[i];
+
+       for (i = 0; i < elf_elfheader (obfd)->e_phnum; i++)
+         if (elf_tdata (obfd)->phdr[i].p_type == PT_GNU_STACK)
+           {
+             memcpy (&elf_tdata (obfd)->phdr[i], iphdr, sizeof (*iphdr));
+
+             /* Rewrite the phdrs, since we're only called after they
+                were first written.  */
+             if (bfd_seek (obfd, (bfd_signed_vma) get_elf_backend_data (obfd)
+                           ->s->sizeof_ehdr, SEEK_SET) != 0
+                 || get_elf_backend_data (obfd)->s
+                 ->write_out_phdrs (obfd, elf_tdata (obfd)->phdr,
+                                    elf_elfheader (obfd)->e_phnum) != 0)
+               return FALSE;
+             break;
+           }
+
+       break;
+      }
+
   return TRUE;
 }
 
@@ -2151,23 +4795,103 @@ static bfd_boolean
 elf32_bfin_print_private_bfd_data (bfd * abfd, PTR ptr)
 {
   FILE *file = (FILE *) ptr;
+  flagword flags;
 
   BFD_ASSERT (abfd != NULL && ptr != NULL);
 
   /* Print normal ELF private data.  */
   _bfd_elf_print_private_bfd_data (abfd, ptr);
 
-  /* Ignore init flag - it may not be set, despite the flags field
-     containing valid data.  */
+  flags = elf_elfheader (abfd)->e_flags;
 
   /* xgettext:c-format */
   fprintf (file, _("private flags = %lx:"), elf_elfheader (abfd)->e_flags);
 
+  if (flags & EF_BFIN_PIC)
+    fprintf (file, " -fpic");
+
+  if (flags & EF_BFIN_FDPIC)
+    fprintf (file, " -mfdpic");
+
   fputc ('\n', file);
 
   return TRUE;
 }
 
+/* Merge backend specific data from an object file to the output
+   object file when linking.  */
+
+static bfd_boolean
+elf32_bfin_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+{
+  flagword old_flags, old_partial;
+  flagword new_flags, new_partial;
+  bfd_boolean error = FALSE;
+
+  new_flags = elf_elfheader (ibfd)->e_flags;
+  old_flags = elf_elfheader (obfd)->e_flags;
+
+  if (new_flags & EF_BFIN_FDPIC)
+    new_flags &= ~EF_BFIN_PIC;
+
+#ifdef DEBUG
+  (*_bfd_error_handler) ("old_flags = 0x%.8lx, new_flags = 0x%.8lx, init = %s, filename = %s",
+                        old_flags, new_flags, elf_flags_init (obfd) ? "yes" : "no",
+                        bfd_get_filename (ibfd));
+#endif
+
+  if (!elf_flags_init (obfd))                  /* First call, no flags set.  */
+    {
+      elf_flags_init (obfd) = TRUE;
+      old_flags = new_flags;
+    }
+
+  else if (new_flags == old_flags)             /* Compatible flags are ok.  */
+    ;
+
+  else                                         /* Possibly incompatible flags.  */
+    {
+      /* We don't have to do anything if the pic flags are the same, or the new
+         module(s) were compiled with -mlibrary-pic.  */
+      new_partial = (new_flags & EF_BFIN_PIC_FLAGS);
+      old_partial = (old_flags & EF_BFIN_PIC_FLAGS);
+      if (new_partial == old_partial)
+       ;
+
+      /* If we have mixtures of -fpic and -fPIC, or in both bits.  */
+      else if (new_partial != 0 && old_partial != 0)
+       old_flags |= new_partial;
+
+      /* One module was compiled for pic and the other was not, see if we have
+         had any relocations that are not pic-safe.  */
+      else
+       old_flags |= new_partial;
+
+    }
+
+  /* Update the old flags now with changes made above.  */
+  elf_elfheader (obfd)->e_flags = old_flags;
+
+  if (((new_flags & EF_BFIN_FDPIC) == 0)
+      != (! IS_FDPIC (ibfd)))
+    {
+      error = TRUE;
+      if (IS_FDPIC (obfd))
+       (*_bfd_error_handler)
+         (_("%s: cannot link non-fdpic object file into fdpic executable"),
+          bfd_get_filename (ibfd));
+      else
+       (*_bfd_error_handler)
+         (_("%s: cannot link fdpic object file into non-fdpic executable"),
+          bfd_get_filename (ibfd));
+    }
+
+  if (error)
+    bfd_set_error (bfd_error_bad_value);
+
+  return !error;
+}
+\f
 /* bfin ELF linker hash entry.  */
 
 struct bfin_link_hash_entry
@@ -2192,7 +4916,7 @@ struct bfin_link_hash_table
 
 static struct bfd_hash_entry *
 bfin_link_hash_newfunc (struct bfd_hash_entry *entry,
-                           struct bfd_hash_table *table, const char *string)
+                       struct bfd_hash_table *table, const char *string)
 {
   struct bfd_hash_entry *ret = entry;
 
@@ -2219,13 +4943,13 @@ bfin_link_hash_table_create (bfd * abfd)
   struct bfin_link_hash_table *ret;
   bfd_size_type amt = sizeof (struct bfin_link_hash_table);
 
-  ret = (struct bfin_link_hash_table *) bfd_malloc (amt);
-  if (ret == (struct bfin_link_hash_table *) NULL)
+  ret = bfd_zalloc (abfd, amt);
+  if (ret == NULL)
     return NULL;
 
   if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
                                      bfin_link_hash_newfunc,
-                                     sizeof (struct bfin_link_hash_entry)))
+                                     sizeof (struct elf_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -2512,9 +5236,6 @@ bfin_discard_copies (struct elf_link_hash_entry *h, PTR inf)
   return TRUE;
 }
 
-/* Set the sizes of the dynamic sections.  */
-#define ELF_DYNAMIC_INTERPRETER "/usr/lib/libc.so.1"
-
 static bfd_boolean
 bfin_size_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
                                struct bfd_link_info *info)
@@ -2660,7 +5381,7 @@ bfin_size_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
 
   return TRUE;
 }
-
+\f
 /* Given a .data section and a .emreloc in-memory section, store
    relocation information into the .emreloc section which can be
    used at runtime to relocate the section.  This is called by the
@@ -2668,6 +5389,9 @@ bfin_size_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
    after the add_symbols entry point has been called for all the
    objects, and before the final_link entry point is called.  */
 
+bfd_boolean bfd_bfin_elf32_create_embedded_relocs
+  PARAMS ((bfd *, struct bfd_link_info *, asection *, asection *, char **));
+
 bfd_boolean
 bfd_bfin_elf32_create_embedded_relocs (
      bfd *abfd,
@@ -2783,17 +5507,18 @@ error_return:
     free (internal_relocs);
   return FALSE;
 }
-
+\f
 #define TARGET_LITTLE_SYM              bfd_elf32_bfin_vec
 #define TARGET_LITTLE_NAME             "elf32-bfin"
 #define ELF_ARCH                       bfd_arch_bfin
-#define ELF_MACHINE_CODE               EM_BLACKFIN     
+#define ELF_MACHINE_CODE               EM_BLACKFIN
 #define ELF_MAXPAGESIZE                        0x1000
 #define elf_symbol_leading_char                '_'
 
 #define bfd_elf32_bfd_reloc_type_lookup        bfin_bfd_reloc_type_lookup
 #define elf_info_to_howto              bfin_info_to_howto
 #define elf_info_to_howto_rel          0
+#define elf_backend_object_p           elf32_bfin_object_p
 
 #define bfd_elf32_bfd_is_local_label_name \
                                         bfin_is_local_label_name
@@ -2808,7 +5533,7 @@ error_return:
                                         bfin_link_hash_table_create
 #define bfd_elf32_bfd_final_link        bfd_elf_gc_common_final_link
 
-#define elf_backend_check_relocs   bfin_check_relocs
+#define elf_backend_check_relocs        bfin_check_relocs
 #define elf_backend_adjust_dynamic_symbol \
                                         bfin_adjust_dynamic_symbol
 #define elf_backend_size_dynamic_sections \
@@ -2835,5 +5560,74 @@ error_return:
 #define elf_backend_got_header_size     12
 #define elf_backend_rela_normal         1
 
+#include "elf32-target.h"
+
+#undef TARGET_LITTLE_SYM
+#define TARGET_LITTLE_SYM          bfd_elf32_bfinfdpic_vec
+#undef TARGET_LITTLE_NAME
+#define TARGET_LITTLE_NAME             "elf32-bfinfdpic"
+#undef elf32_bed
+#define        elf32_bed               elf32_bfinfdpic_bed
+
+#undef elf_backend_gc_sweep_hook
+#define elf_backend_gc_sweep_hook       bfinfdpic_gc_sweep_hook
+
+#undef elf_backend_got_header_size
+#define elf_backend_got_header_size     0
+
+#undef elf_backend_relocate_section
+#define elf_backend_relocate_section    bfinfdpic_relocate_section
+#undef elf_backend_check_relocs
+#define elf_backend_check_relocs        bfinfdpic_check_relocs
+
+#undef bfd_elf32_bfd_link_hash_table_create
+#define bfd_elf32_bfd_link_hash_table_create \
+               bfinfdpic_elf_link_hash_table_create
+#undef elf_backend_always_size_sections
+#define elf_backend_always_size_sections \
+               elf32_bfinfdpic_always_size_sections
+#undef elf_backend_modify_segment_map
+#define elf_backend_modify_segment_map \
+               elf32_bfinfdpic_modify_segment_map
+#undef bfd_elf32_bfd_copy_private_bfd_data
+#define bfd_elf32_bfd_copy_private_bfd_data \
+               elf32_bfinfdpic_copy_private_bfd_data
+
+#undef elf_backend_create_dynamic_sections
+#define elf_backend_create_dynamic_sections \
+               elf32_bfinfdpic_create_dynamic_sections
+#undef elf_backend_adjust_dynamic_symbol
+#define elf_backend_adjust_dynamic_symbol \
+               elf32_bfinfdpic_adjust_dynamic_symbol
+#undef elf_backend_size_dynamic_sections
+#define elf_backend_size_dynamic_sections \
+               elf32_bfinfdpic_size_dynamic_sections
+#undef elf_backend_finish_dynamic_symbol
+#define elf_backend_finish_dynamic_symbol \
+               elf32_bfinfdpic_finish_dynamic_symbol
+#undef elf_backend_finish_dynamic_sections
+#define elf_backend_finish_dynamic_sections \
+               elf32_bfinfdpic_finish_dynamic_sections
+
+#undef elf_backend_can_make_relative_eh_frame
+#define elf_backend_can_make_relative_eh_frame \
+               bfinfdpic_elf_use_relative_eh_frame
+#undef elf_backend_can_make_lsda_relative_eh_frame
+#define elf_backend_can_make_lsda_relative_eh_frame \
+               bfinfdpic_elf_use_relative_eh_frame
+#undef elf_backend_encode_eh_address
+#define elf_backend_encode_eh_address \
+               bfinfdpic_elf_encode_eh_address
+
+#undef elf_backend_may_use_rel_p
+#define elf_backend_may_use_rel_p       1
+#undef elf_backend_may_use_rela_p
+#define elf_backend_may_use_rela_p      1
+/* We use REL for dynamic relocations only.  */
+#undef elf_backend_default_use_rela_p
+#define elf_backend_default_use_rela_p  1
+
+#undef elf_backend_omit_section_dynsym
+#define elf_backend_omit_section_dynsym _bfinfdpic_link_omit_section_dynsym
 
 #include "elf32-target.h"
index bc44cba..754aa52 100644 (file)
@@ -582,6 +582,10 @@ struct elf_i386_link_hash_entry
 #define GOT_TLS_IE_NEG 6
 #define GOT_TLS_IE_BOTH 7
 #define GOT_TLS_GDESC  8
+#define GOT_TLS_MASK   0x0f
+#define GOT_TLS_IE_IE  0x10
+#define GOT_TLS_IE_GD  0x20
+#define GOT_TLS_IE_MASK        0x30
 #define GOT_TLS_GD_BOTH_P(type)                                                \
   ((type) == (GOT_TLS_GD | GOT_TLS_GDESC))
 #define GOT_TLS_GD_P(type)                                             \
@@ -1007,12 +1011,25 @@ elf_i386_check_relocs (bfd *abfd,
              case R_386_TLS_IE_32:
                if (ELF32_R_TYPE (rel->r_info) == r_type)
                  tls_type = GOT_TLS_IE_NEG;
+               else if (h
+                        && ELF32_R_TYPE (rel->r_info) == R_386_TLS_GD)
+                 /* If this is a GD->IE transition, we may use either
+                    of R_386_TLS_TPOFF and R_386_TLS_TPOFF32.  But if
+                    we may have both R_386_TLS_IE and R_386_TLS_GD,
+                    we can't share the same R_386_TLS_TPOFF since
+                    they require different offsets. So we remember
+                    it comes from R_386_TLS_GD.  */
+                 tls_type = GOT_TLS_IE | GOT_TLS_IE_GD;
                else
-                 /* If this is a GD->IE transition, we may use either of
-                    R_386_TLS_TPOFF and R_386_TLS_TPOFF32.  */
                  tls_type = GOT_TLS_IE;
                break;
              case R_386_TLS_IE:
+               if (h)
+                 {
+                   /* We remember it comes from R_386_TLS_IE.  */
+                   tls_type = GOT_TLS_IE_POS | GOT_TLS_IE_IE;
+                   break;
+                 }
              case R_386_TLS_GOTIE:
                tls_type = GOT_TLS_IE_POS; break;
              }
@@ -1052,7 +1069,8 @@ elf_i386_check_relocs (bfd *abfd,
              tls_type |= old_tls_type;
            /* If a TLS symbol is accessed using IE at least once,
               there is no point to use dynamic model for it.  */
-           else if (old_tls_type != tls_type && old_tls_type != GOT_UNKNOWN
+           else if (old_tls_type != tls_type
+                    && old_tls_type != GOT_UNKNOWN
                     && (! GOT_TLS_GD_ANY_P (old_tls_type)
                         || (tls_type & GOT_TLS_IE) == 0))
              {
@@ -1682,6 +1700,14 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
       asection *s;
       bfd_boolean dyn;
       int tls_type = elf_i386_hash_entry(h)->tls_type;
+      
+      /* If we have both R_386_TLS_IE and R_386_TLS_GD, GOT_TLS_IE_BOTH
+        should be used.  */
+      if ((tls_type & GOT_TLS_IE_MASK)
+         == (GOT_TLS_IE_IE | GOT_TLS_IE_GD))
+       tls_type = GOT_TLS_IE_BOTH;
+      else
+       tls_type &= GOT_TLS_MASK;
 
       /* Make sure this symbol is output as a dynamic symbol.
         Undefined weak syms won't yet be marked as dynamic.  */
@@ -2685,6 +2711,13 @@ elf_i386_relocate_section (bfd *output_bfd,
          else if (h != NULL)
            {
              tls_type = elf_i386_hash_entry(h)->tls_type;
+             /* If we have both R_386_TLS_IE and R_386_TLS_GD,
+                GOT_TLS_IE_BOTH should be used.  */
+             if ((tls_type & GOT_TLS_IE_MASK)
+                 == (GOT_TLS_IE_IE | GOT_TLS_IE_GD))
+               tls_type = GOT_TLS_IE_BOTH;
+             else
+               tls_type &= GOT_TLS_MASK;
              if (!info->shared && h->dynindx == -1 && (tls_type & GOT_TLS_IE))
                r_type = R_386_TLS_LE_32;
            }
index f56efd2..5e9f3ab 100644 (file)
@@ -482,6 +482,22 @@ m32c_elf_relocate_section
                relocation = (splt->output_section->vma
                              + splt->output_offset
                              + (*plt_offset & -2));
+               if (name)
+               {
+                 char *newname = bfd_malloc (strlen(name)+5);
+                 strcpy (newname, name);
+                 strcat(newname, ".plt");
+                 _bfd_generic_link_add_one_symbol (info,
+                                                   input_bfd,
+                                                   newname,
+                                                   BSF_FUNCTION | BSF_WEAK,
+                                                   splt,
+                                                   (*plt_offset & -2),
+                                                   0,
+                                                   1,
+                                                   0,
+                                                   0);
+               }
              }
          }
          break;
index 3cdaeee..6ed4ad3 100644 (file)
@@ -37,6 +37,7 @@ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
 #include "elf-bfd.h"
 #include "elfxx-mips.h"
 #include "elf/mips.h"
+#include "elf-vxworks.h"
 
 /* Get the ECOFF swapping routines.  */
 #include "coff/sym.h"
@@ -1319,10 +1320,12 @@ mips_elf32_rtype_to_howto (unsigned int r_type,
 static void
 mips_info_to_howto_rel (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst)
 {
+  const struct elf_backend_data *bed;
   unsigned int r_type;
 
   r_type = ELF32_R_TYPE (dst->r_info);
-  cache_ptr->howto = mips_elf32_rtype_to_howto (r_type, FALSE);
+  bed = get_elf_backend_data (abfd);
+  cache_ptr->howto = bed->elf_backend_mips_rtype_to_howto (r_type, FALSE);
 
   /* The addend for a GPREL16 or LITERAL relocation comes from the GP
      value for the object file.  We get the addend now, rather than
@@ -1619,3 +1622,147 @@ static const struct ecoff_debug_swap mips_elf32_ecoff_debug_swap = {
 
 /* Include the target file again for this target.  */
 #include "elf32-target.h"
+
+
+/* Specific to VxWorks.  */
+static reloc_howto_type mips_vxworks_copy_howto_rela =
+  HOWTO (R_MIPS_COPY,          /* type */
+        0,                     /* rightshift */
+        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        32,                    /* bitsize */
+        FALSE,                 /* pc_relative */
+        0,                     /* bitpos */
+        complain_overflow_bitfield, /* complain_on_overflow */
+        bfd_elf_generic_reloc, /* special_function */
+        "R_MIPS_COPY",         /* name */
+        FALSE,                 /* partial_inplace */
+        0x0,                   /* src_mask */
+        0x0,                   /* dst_mask */
+        FALSE);                /* pcrel_offset */
+
+/* Specific to VxWorks.  */
+static reloc_howto_type mips_vxworks_jump_slot_howto_rela =
+  HOWTO (R_MIPS_JUMP_SLOT,     /* type */
+        0,                     /* rightshift */
+        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+        32,                    /* bitsize */
+        FALSE,                 /* pc_relative */
+        0,                     /* bitpos */
+        complain_overflow_bitfield, /* complain_on_overflow */
+        bfd_elf_generic_reloc, /* special_function */
+        "R_MIPS_JUMP_SLOT",    /* name */
+        FALSE,                 /* partial_inplace */
+        0x0,                   /* src_mask */
+        0x0,                   /* dst_mask */
+        FALSE);                /* pcrel_offset */
+
+/* Implement elf_backend_bfd_reloc_type_lookup for VxWorks.  */
+
+static reloc_howto_type *
+mips_vxworks_bfd_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code)
+{
+  switch (code)
+    {
+    case BFD_RELOC_MIPS_COPY:
+      return &mips_vxworks_copy_howto_rela;
+    case BFD_RELOC_MIPS_JUMP_SLOT:
+      return &mips_vxworks_jump_slot_howto_rela;
+    default:
+      return bfd_elf32_bfd_reloc_type_lookup (abfd, code);
+    }
+}
+
+/* Implement elf_backend_mips_rtype_to_lookup for VxWorks.  */
+
+static reloc_howto_type *
+mips_vxworks_rtype_to_howto (unsigned int r_type, bfd_boolean rela_p)
+{
+  switch (r_type)
+    {
+    case R_MIPS_COPY:
+      return &mips_vxworks_copy_howto_rela;
+    case R_MIPS_JUMP_SLOT:
+      return &mips_vxworks_jump_slot_howto_rela;
+    default:
+      return mips_elf32_rtype_to_howto (r_type, rela_p);
+    }
+}
+
+/* Implement elf_backend_final_write_processing for VxWorks.  */
+
+static void
+mips_vxworks_final_write_processing (bfd *abfd, bfd_boolean linker)
+{
+  _bfd_mips_elf_final_write_processing (abfd, linker);
+  elf_vxworks_final_write_processing (abfd, linker);
+}
+
+#undef TARGET_LITTLE_SYM
+#undef TARGET_LITTLE_NAME
+#undef TARGET_BIG_SYM
+#undef TARGET_BIG_NAME
+
+#define TARGET_LITTLE_SYM               bfd_elf32_littlemips_vxworks_vec
+#define TARGET_LITTLE_NAME              "elf32-littlemips-vxworks"
+#define TARGET_BIG_SYM                  bfd_elf32_bigmips_vxworks_vec
+#define TARGET_BIG_NAME                 "elf32-bigmips-vxworks"
+
+#undef elf32_bed
+#define elf32_bed                      elf32_mips_vxworks_bed
+
+#undef ELF_MAXPAGESIZE
+#define ELF_MAXPAGESIZE                        0x1000
+
+#undef elf_backend_want_got_plt
+#define elf_backend_want_got_plt               1
+#undef elf_backend_want_plt_sym
+#define elf_backend_want_plt_sym               1
+#undef elf_backend_got_symbol_offset
+#define elf_backend_got_symbol_offset          0
+#undef elf_backend_want_dynbss
+#define elf_backend_want_dynbss                        1
+#undef elf_backend_may_use_rel_p
+#define elf_backend_may_use_rel_p              0
+#undef elf_backend_may_use_rela_p
+#define elf_backend_may_use_rela_p             1
+#undef elf_backend_default_use_rela_p
+#define elf_backend_default_use_rela_p         1
+#undef elf_backend_got_header_size
+#define elf_backend_got_header_size            (4 * 3)
+#undef elf_backend_plt_readonly
+#define elf_backend_plt_readonly               1
+
+#undef bfd_elf32_bfd_reloc_type_lookup
+#define bfd_elf32_bfd_reloc_type_lookup \
+  mips_vxworks_bfd_reloc_type_lookup
+#undef elf_backend_mips_rtype_to_howto
+#define elf_backend_mips_rtype_to_howto        \
+  mips_vxworks_rtype_to_howto
+#undef elf_backend_adjust_dynamic_symbol
+#define elf_backend_adjust_dynamic_symbol \
+  _bfd_mips_vxworks_adjust_dynamic_symbol
+#undef elf_backend_finish_dynamic_symbol
+#define elf_backend_finish_dynamic_symbol \
+  _bfd_mips_vxworks_finish_dynamic_symbol
+#undef bfd_elf32_bfd_link_hash_table_create
+#define bfd_elf32_bfd_link_hash_table_create \
+  _bfd_mips_vxworks_link_hash_table_create
+#undef elf_backend_add_symbol_hook
+#define elf_backend_add_symbol_hook \
+  elf_vxworks_add_symbol_hook
+#undef elf_backend_link_output_symbol_hook
+#define elf_backend_link_output_symbol_hook \
+  elf_vxworks_link_output_symbol_hook
+#undef elf_backend_emit_relocs
+#define elf_backend_emit_relocs \
+  elf_vxworks_emit_relocs
+#undef elf_backend_final_write_processing
+#define elf_backend_final_write_processing \
+  mips_vxworks_final_write_processing
+
+#undef elf_backend_additional_program_headers
+#undef elf_backend_modify_segment_map
+#undef elf_backend_symbol_processing
+/* NOTE: elf_backend_rela_normal is not defined for MIPS.  */
+
+#include "elf32-target.h"
index 6a2d517..53d1046 100644 (file)
@@ -5181,6 +5181,10 @@ ppc_elf_relax_section (bfd *abfd,
       else if (r_type != R_PPC_PLTREL24)
        toff += irel->r_addend;
 
+      /* Attempted -shared link of non-pic code loses.  */
+      if (tsec->output_section == NULL)
+       continue;
+
       symaddr = tsec->output_section->vma + tsec->output_offset + toff;
 
       roff = irel->r_offset;
index 031b303..3bfb38a 100644 (file)
@@ -26,6 +26,7 @@
 #include "elf/sparc.h"
 #include "opcode/sparc.h"
 #include "elfxx-sparc.h"
+#include "elf-vxworks.h"
 
 /* Support for core dump NOTE sections.  */
 
@@ -215,3 +216,68 @@ elf32_sparc_reloc_type_class (const Elf_Internal_Rela *rela)
 #define elf_backend_rela_normal 1
 
 #include "elf32-target.h"
+
+/* A wrapper around _bfd_sparc_elf_link_hash_table_create that identifies
+   the target system as VxWorks.  */
+
+static struct bfd_link_hash_table *
+elf32_sparc_vxworks_link_hash_table_create (bfd *abfd)
+{
+  struct bfd_link_hash_table *ret;
+
+  ret = _bfd_sparc_elf_link_hash_table_create (abfd);
+  if (ret)
+    {
+      struct _bfd_sparc_elf_link_hash_table *htab;
+
+      htab = (struct _bfd_sparc_elf_link_hash_table *) ret;
+      htab->is_vxworks = 1;
+    }
+  return ret;
+}
+
+/* A final_write_processing hook that does both the SPARC- and VxWorks-
+   specific handling.  */
+
+static void
+elf32_sparc_vxworks_final_write_processing (bfd *abfd, bfd_boolean linker)
+{
+  elf32_sparc_final_write_processing (abfd, linker);
+  elf_vxworks_final_write_processing (abfd, linker);
+}
+
+#undef TARGET_BIG_SYM
+#define TARGET_BIG_SYM bfd_elf32_sparc_vxworks_vec
+#undef TARGET_BIG_NAME
+#define TARGET_BIG_NAME        "elf32-sparc-vxworks"
+
+#undef ELF_MINPAGESIZE
+#define ELF_MINPAGESIZE        0x1000
+
+#undef bfd_elf32_bfd_link_hash_table_create
+#define bfd_elf32_bfd_link_hash_table_create \
+  elf32_sparc_vxworks_link_hash_table_create
+
+#undef elf_backend_want_got_plt
+#define elf_backend_want_got_plt               1
+#undef elf_backend_plt_readonly
+#define elf_backend_plt_readonly               1
+#undef elf_backend_got_header_size
+#define elf_backend_got_header_size            12
+#undef elf_backend_add_symbol_hook
+#define elf_backend_add_symbol_hook \
+  elf_vxworks_add_symbol_hook
+#undef elf_backend_link_output_symbol_hook
+#define elf_backend_link_output_symbol_hook \
+  elf_vxworks_link_output_symbol_hook
+#undef elf_backend_emit_relocs
+#define elf_backend_emit_relocs \
+  elf_vxworks_emit_relocs
+#undef elf_backend_final_write_processing
+#define elf_backend_final_write_processing \
+  elf32_sparc_vxworks_final_write_processing
+
+#undef elf32_bed
+#define elf32_bed                              sparc_elf_vxworks_bed
+
+#include "elf32-target.h"
index 18610c7..7a41d62 100644 (file)
@@ -640,7 +640,6 @@ xtensa_read_table_entries (bfd *abfd,
            {
              bfd_vma sym_off = get_elf_r_symndx_offset (abfd, r_symndx);
              BFD_ASSERT (sym_off == 0);
-             BFD_ASSERT (rel->r_addend == 0);
              blocks[block_count].address =
                (section_addr + sym_off + rel->r_addend
                 + bfd_get_32 (abfd, table_data + rel->r_offset));
@@ -5767,7 +5766,8 @@ static bfd_boolean compute_text_actions
 static bfd_boolean compute_ebb_proposed_actions (ebb_constraint *);
 static bfd_boolean compute_ebb_actions (ebb_constraint *);
 static bfd_boolean check_section_ebb_pcrels_fit
-  (bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, const ebb_constraint *);
+  (bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, const ebb_constraint *,
+   const xtensa_opcode *);
 static bfd_boolean check_section_ebb_reduces (const ebb_constraint *);
 static void text_action_add_proposed
   (text_action_list *, const ebb_constraint *, asection *);
@@ -6303,6 +6303,24 @@ find_associated_l32r_irel (bfd *abfd,
 }
 
 
+static xtensa_opcode *
+build_reloc_opcodes (bfd *abfd,
+                    asection *sec,
+                    bfd_byte *contents,
+                    Elf_Internal_Rela *internal_relocs)
+{
+  unsigned i;
+  xtensa_opcode *reloc_opcodes =
+    (xtensa_opcode *) bfd_malloc (sizeof (xtensa_opcode) * sec->reloc_count);
+  for (i = 0; i < sec->reloc_count; i++)
+    {
+      Elf_Internal_Rela *irel = &internal_relocs[i];
+      reloc_opcodes[i] = get_relocation_opcode (abfd, sec, contents, irel);
+    }
+  return reloc_opcodes;
+}
+
+
 /* The compute_text_actions function will build a list of potential
    transformation actions for code in the extended basic block of each
    longcall that is optimized to a direct call.  From this list we
@@ -6319,6 +6337,7 @@ compute_text_actions (bfd *abfd,
                      asection *sec,
                      struct bfd_link_info *link_info)
 {
+  xtensa_opcode *reloc_opcodes = NULL;
   xtensa_relax_info *relax_info;
   bfd_byte *contents;
   Elf_Internal_Rela *internal_relocs;
@@ -6424,11 +6443,17 @@ compute_text_actions (bfd *abfd,
       ebb->start_reloc_idx = i;
       ebb->end_reloc_idx = i;
 
+      /* Precompute the opcode for each relocation.  */
+      if (reloc_opcodes == NULL)
+       reloc_opcodes = build_reloc_opcodes (abfd, sec, contents,
+                                            internal_relocs);
+
       if (!extend_ebb_bounds (ebb)
          || !compute_ebb_proposed_actions (&ebb_table)
          || !compute_ebb_actions (&ebb_table)
          || !check_section_ebb_pcrels_fit (abfd, sec, contents,
-                                           internal_relocs, &ebb_table)
+                                           internal_relocs, &ebb_table,
+                                           reloc_opcodes)
          || !check_section_ebb_reduces (&ebb_table))
        {
          /* If anything goes wrong or we get unlucky and something does
@@ -6460,6 +6485,8 @@ error_return:
   release_internal_relocs (sec, internal_relocs);
   if (prop_table)
     free (prop_table);
+  if (reloc_opcodes)
+    free (reloc_opcodes);
 
   return ok;
 }
@@ -7027,7 +7054,8 @@ check_section_ebb_pcrels_fit (bfd *abfd,
                              asection *sec,
                              bfd_byte *contents,
                              Elf_Internal_Rela *internal_relocs,
-                             const ebb_constraint *constraint)
+                             const ebb_constraint *constraint,
+                             const xtensa_opcode *reloc_opcodes)
 {
   unsigned i, j;
   Elf_Internal_Rela *irel;
@@ -7118,7 +7146,10 @@ check_section_ebb_pcrels_fit (bfd *abfd,
          xtensa_opcode opcode;
          int opnum;
 
-         opcode = get_relocation_opcode (abfd, sec, contents, irel);
+         if (reloc_opcodes)
+           opcode = reloc_opcodes[i];
+         else
+           opcode = get_relocation_opcode (abfd, sec, contents, irel);
          if (opcode == XTENSA_UNDEFINED)
            {
              ok = FALSE;
@@ -7815,7 +7846,7 @@ move_shared_literal (asection *sec,
   relocs_fit = check_section_ebb_pcrels_fit (target_sec->owner, target_sec, 
                                             target_sec_cache->contents,
                                             target_sec_cache->relocs,
-                                            &ebb_table);
+                                            &ebb_table, NULL);
 
   if (!relocs_fit) 
     return FALSE;
index 4e0b83c..58798ae 100644 (file)
@@ -2542,6 +2542,68 @@ elf64_hppa_finish_dynamic_sections (output_bfd, info)
   return TRUE;
 }
 
+/* Support for core dump NOTE sections.  */
+
+static bfd_boolean
+elf64_hppa_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
+{
+  int offset;
+  size_t size;
+
+  switch (note->descsz)
+    {
+      default:
+       return FALSE;
+
+      case 760:                /* Linux/hppa */
+       /* pr_cursig */
+       elf_tdata (abfd)->core_signal = bfd_get_16 (abfd, note->descdata + 12);
+
+       /* pr_pid */
+       elf_tdata (abfd)->core_pid = bfd_get_32 (abfd, note->descdata + 32);
+
+       /* pr_reg */
+       offset = 112;
+       size = 640;
+
+       break;
+    }
+
+  /* Make a ".reg/999" section.  */
+  return _bfd_elfcore_make_pseudosection (abfd, ".reg",
+                                         size, note->descpos + offset);
+}
+
+static bfd_boolean
+elf64_hppa_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
+{
+  char * command;
+  int n;
+
+  switch (note->descsz)
+    {
+    default:
+      return FALSE;
+
+    case 136:          /* Linux/hppa elf_prpsinfo.  */
+      elf_tdata (abfd)->core_program
+       = _bfd_elfcore_strndup (abfd, note->descdata + 40, 16);
+      elf_tdata (abfd)->core_command
+       = _bfd_elfcore_strndup (abfd, note->descdata + 56, 80);
+    }
+
+  /* Note that for some reason, a spurious space is tacked
+     onto the end of the args in some (at least one anyway)
+     implementations, so strip it off if it exists.  */
+  command = elf_tdata (abfd)->core_command;
+  n = strlen (command);
+
+  if (0 < n && command[n - 1] == ' ')
+    command[n - 1] = '\0';
+
+  return TRUE;
+}
+
 /* Return the number of additional phdrs we will need.
 
    The generic ELF code only creates PT_PHDRs for executables.  The HP
@@ -2775,7 +2837,9 @@ const struct elf_size_info hppa64_elf_size_info =
                                        elf64_hppa_finish_dynamic_symbol
 #define elf_backend_finish_dynamic_sections \
                                        elf64_hppa_finish_dynamic_sections
-
+#define elf_backend_grok_prstatus      elf64_hppa_grok_prstatus
+#define elf_backend_grok_psinfo                elf64_hppa_grok_psinfo
 /* Stuff for the BFD linker: */
 #define bfd_elf64_bfd_link_hash_table_create \
        elf64_hppa_hash_table_create
index fc8c182..33327f4 100644 (file)
@@ -2623,6 +2623,32 @@ compare_symbols (const void *ap, const void *bp)
   if (a->value + a->section->vma > b->value + b->section->vma)
     return 1;
 
+  /* For syms with the same value, prefer strong dynamic global function
+     syms over other syms.  */
+  if ((a->flags & BSF_GLOBAL) != 0 && (b->flags & BSF_GLOBAL) == 0)
+    return -1;
+
+  if ((a->flags & BSF_GLOBAL) == 0 && (b->flags & BSF_GLOBAL) != 0)
+    return 1;
+
+  if ((a->flags & BSF_FUNCTION) != 0 && (b->flags & BSF_FUNCTION) == 0)
+    return -1;
+
+  if ((a->flags & BSF_FUNCTION) == 0 && (b->flags & BSF_FUNCTION) != 0)
+    return 1;
+
+  if ((a->flags & BSF_WEAK) == 0 && (b->flags & BSF_WEAK) != 0)
+    return -1;
+
+  if ((a->flags & BSF_WEAK) != 0 && (b->flags & BSF_WEAK) == 0)
+    return 1;
+
+  if ((a->flags & BSF_DYNAMIC) != 0 && (b->flags & BSF_DYNAMIC) == 0)
+    return -1;
+
+  if ((a->flags & BSF_DYNAMIC) == 0 && (b->flags & BSF_DYNAMIC) != 0)
+    return 1;
+
   return 0;
 }
 
@@ -6696,12 +6722,22 @@ ppc64_elf_tls_optimize (bfd *obfd ATTRIBUTE_UNUSED, struct bfd_link_info *info)
   for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next)
     {
       Elf_Internal_Sym *locsyms = NULL;
+      asection *toc = bfd_get_section_by_name (ibfd, ".toc");
+      unsigned char *toc_ref = NULL;
 
-      for (sec = ibfd->sections; sec != NULL; sec = sec->next)
+      /* Look at all the sections for this file, with TOC last.  */
+      for (sec = (ibfd->sections == toc && toc && toc->next ? toc->next
+                 : ibfd->sections);
+          sec != NULL;
+          sec = (sec == toc ? NULL
+                 : sec->next == NULL ? toc
+                 : sec->next == toc && toc->next ? toc->next
+                 : sec->next))
        if (sec->has_tls_reloc && !bfd_is_abs_section (sec->output_section))
          {
            Elf_Internal_Rela *relstart, *rel, *relend;
            int expecting_tls_get_addr;
+           long toc_ref_index = 0;
 
            /* Read the relocations.  */
            relstart = _bfd_elf_link_read_relocs (ibfd, sec, NULL, NULL,
@@ -6730,6 +6766,8 @@ ppc64_elf_tls_optimize (bfd *obfd ATTRIBUTE_UNUSED, struct bfd_link_info *info)
                  err_free_rel:
                    if (elf_section_data (sec)->relocs != relstart)
                      free (relstart);
+                   if (toc_ref != NULL)
+                     free (toc_ref);
                    if (locsyms != NULL
                        && (elf_tdata (ibfd)->symtab_hdr.contents
                            != (unsigned char *) locsyms))
@@ -6837,8 +6875,12 @@ ppc64_elf_tls_optimize (bfd *obfd ATTRIBUTE_UNUSED, struct bfd_link_info *info)
                                                   rel - 1, ibfd);
                            if (retval == 0)
                              goto err_free_rel;
-                           if (toc_tls != NULL)
-                             expecting_tls_get_addr = retval > 1;
+                           if (retval > 1 && toc_tls != NULL)
+                             {
+                               expecting_tls_get_addr = 1;
+                               if (toc_ref != NULL)
+                                 toc_ref[toc_ref_index] = 1;
+                             }
                          }
 
                        if (expecting_tls_get_addr)
@@ -6856,8 +6898,40 @@ ppc64_elf_tls_optimize (bfd *obfd ATTRIBUTE_UNUSED, struct bfd_link_info *info)
                    expecting_tls_get_addr = 0;
                    continue;
 
+                 case R_PPC64_TOC16:
+                 case R_PPC64_TOC16_LO:
+                 case R_PPC64_TLS:
+                   expecting_tls_get_addr = 0;
+                   if (sym_sec == toc && toc != NULL)
+                     {
+                       /* Mark this toc entry as referenced by a TLS
+                          code sequence.  We can do that now in the
+                          case of R_PPC64_TLS, and after checking for
+                          tls_get_addr for the TOC16 relocs.  */
+                       if (toc_ref == NULL)
+                         {
+                           toc_ref = bfd_zmalloc (toc->size / 8);
+                           if (toc_ref == NULL)
+                             goto err_free_rel;
+                         }
+                       if (h != NULL)
+                         value = h->root.u.def.value;
+                       else
+                         value = sym->st_value;
+                       value += rel->r_addend;
+                       BFD_ASSERT (value < toc->size && value % 8 == 0);
+                       toc_ref_index = value / 8;
+                       if (r_type == R_PPC64_TLS)
+                         toc_ref[toc_ref_index] = 1;
+                     }
+                   continue;
+
                  case R_PPC64_TPREL64:
                    expecting_tls_get_addr = 0;
+                   if (sec != toc
+                       || toc_ref == NULL
+                       || !toc_ref[rel->r_offset / 8])
+                     continue;
                    if (ok_tprel)
                      {
                        /* IE -> LE */
@@ -6870,6 +6944,10 @@ ppc64_elf_tls_optimize (bfd *obfd ATTRIBUTE_UNUSED, struct bfd_link_info *info)
 
                  case R_PPC64_DTPMOD64:
                    expecting_tls_get_addr = 0;
+                   if (sec != toc
+                       || toc_ref == NULL
+                       || !toc_ref[rel->r_offset / 8])
+                     continue;
                    if (rel + 1 < relend
                        && (rel[1].r_info
                            == ELF64_R_INFO (r_symndx, R_PPC64_DTPREL64))
@@ -6948,6 +7026,9 @@ ppc64_elf_tls_optimize (bfd *obfd ATTRIBUTE_UNUSED, struct bfd_link_info *info)
              free (relstart);
          }
 
+      if (toc_ref != NULL)
+       free (toc_ref);
+
       if (locsyms != NULL
          && (elf_tdata (ibfd)->symtab_hdr.contents
              != (unsigned char *) locsyms))
@@ -7143,13 +7224,14 @@ ppc64_elf_edit_toc (bfd *obfd ATTRIBUTE_UNUSED, struct bfd_link_info *info)
          return FALSE;
        }
 
-      /* Now check all kept sections that might reference the toc.  */
-      for (sec = ibfd->sections;
+      /* Now check all kept sections that might reference the toc.
+        Check the toc itself last.  */
+      for (sec = (ibfd->sections == toc && toc->next ? toc->next
+                 : ibfd->sections);
           sec != NULL;
-          /* Check the toc itself last.  */
           sec = (sec == toc ? NULL
-                 : sec->next == toc && sec->next->next ? sec->next->next
                  : sec->next == NULL ? toc
+                 : sec->next == toc && toc->next ? toc->next
                  : sec->next))
        {
          int repeat;
index 504a19b..9befd69 100644 (file)
@@ -31,8 +31,8 @@
 #define MINUS_ONE (~ (bfd_vma) 0)
 
 /* The relocation "howto" table.  Order of fields:
-   type, size, bitsize, pc_relative, complain_on_overflow,
-   special_function, name, partial_inplace, src_mask, dst_pack, pcrel_offset.  */
+   type, rightshift, size, bitsize, pc_relative, bitpos, complain_on_overflow,
+   special_function, name, partial_inplace, src_mask, dst_mask, pcrel_offset.  */
 static reloc_howto_type x86_64_elf_howto_table[] =
 {
   HOWTO(R_X86_64_NONE, 0, 0, 0, FALSE, 0, complain_overflow_dont,
@@ -112,11 +112,21 @@ static reloc_howto_type x86_64_elf_howto_table[] =
   HOWTO(R_X86_64_GOTPC32, 0, 2, 32, TRUE, 0, complain_overflow_signed,
        bfd_elf_generic_reloc, "R_X86_64_GOTPC32",
        FALSE, 0xffffffff, 0xffffffff, TRUE),
-  EMPTY_HOWTO (27),
-  EMPTY_HOWTO (28),
-  EMPTY_HOWTO (29),
-  EMPTY_HOWTO (30),
-  EMPTY_HOWTO (31),
+  HOWTO(R_X86_64_GOT64, 0, 4, 64, FALSE, 0, complain_overflow_signed,
+       bfd_elf_generic_reloc, "R_X86_64_GOT64", FALSE, MINUS_ONE, MINUS_ONE,
+       FALSE),
+  HOWTO(R_X86_64_GOTPCREL64, 0, 4, 64, TRUE, 0, complain_overflow_signed,
+       bfd_elf_generic_reloc, "R_X86_64_GOTPCREL64", FALSE, MINUS_ONE,
+       MINUS_ONE, TRUE),
+  HOWTO(R_X86_64_GOTPC64, 0, 4, 64, TRUE, 0, complain_overflow_signed,
+       bfd_elf_generic_reloc, "R_X86_64_GOTPC64",
+       FALSE, MINUS_ONE, MINUS_ONE, TRUE),
+  HOWTO(R_X86_64_GOTPLT64, 0, 4, 64, FALSE, 0, complain_overflow_signed,
+       bfd_elf_generic_reloc, "R_X86_64_GOTPLT64", FALSE, MINUS_ONE,
+       MINUS_ONE, FALSE),
+  HOWTO(R_X86_64_PLTOFF64, 0, 4, 64, FALSE, 0, complain_overflow_signed,
+       bfd_elf_generic_reloc, "R_X86_64_PLTOFF64", FALSE, MINUS_ONE,
+       MINUS_ONE, FALSE),
   EMPTY_HOWTO (32),
   EMPTY_HOWTO (33),
   HOWTO(R_X86_64_GOTPC32_TLSDESC, 0, 2, 32, TRUE, 0,
@@ -185,6 +195,11 @@ static const struct elf_reloc_map x86_64_reloc_map[] =
   { BFD_RELOC_64_PCREL,                R_X86_64_PC64, },
   { BFD_RELOC_X86_64_GOTOFF64, R_X86_64_GOTOFF64, },
   { BFD_RELOC_X86_64_GOTPC32,  R_X86_64_GOTPC32, },
+  { BFD_RELOC_X86_64_GOT64,    R_X86_64_GOT64, },
+  { BFD_RELOC_X86_64_GOTPCREL64,R_X86_64_GOTPCREL64, },
+  { BFD_RELOC_X86_64_GOTPC64,  R_X86_64_GOTPC64, },
+  { BFD_RELOC_X86_64_GOTPLT64, R_X86_64_GOTPLT64, },
+  { BFD_RELOC_X86_64_PLTOFF64, R_X86_64_PLTOFF64, },
   { BFD_RELOC_X86_64_GOTPC32_TLSDESC, R_X86_64_GOTPC32_TLSDESC, },
   { BFD_RELOC_X86_64_TLSDESC_CALL, R_X86_64_TLSDESC_CALL, },
   { BFD_RELOC_X86_64_TLSDESC,  R_X86_64_TLSDESC, },
@@ -777,6 +792,9 @@ elf64_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
        case R_X86_64_GOT32:
        case R_X86_64_GOTPCREL:
        case R_X86_64_TLSGD:
+       case R_X86_64_GOT64:
+       case R_X86_64_GOTPCREL64:
+       case R_X86_64_GOTPLT64:
        case R_X86_64_GOTPC32_TLSDESC:
        case R_X86_64_TLSDESC_CALL:
          /* This symbol requires a global offset table entry.  */
@@ -795,6 +813,14 @@ elf64_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
 
            if (h != NULL)
              {
+               if (r_type == R_X86_64_GOTPLT64)
+                 {
+                   /* This relocation indicates that we also need
+                      a PLT entry, as this is a function.  We don't need
+                      a PLT entry for local symbols.  */
+                   h->needs_plt = 1;
+                   h->plt.refcount += 1;
+                 }
                h->got.refcount += 1;
                old_tls_type = elf64_x86_64_hash_entry (h)->tls_type;
              }
@@ -858,6 +884,7 @@ elf64_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
 
        case R_X86_64_GOTOFF64:
        case R_X86_64_GOTPC32:
+       case R_X86_64_GOTPC64:
        create_got:
          if (htab->sgot == NULL)
            {
@@ -885,6 +912,16 @@ elf64_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
          h->plt.refcount += 1;
          break;
 
+       case R_X86_64_PLTOFF64:
+         /* This tries to form the 'address' of a function relative
+            to GOT.  For global symbols we need a PLT entry.  */
+         if (h != NULL)
+           {
+             h->needs_plt = 1;
+             h->plt.refcount += 1;
+           }
+         goto create_got;
+
        case R_X86_64_8:
        case R_X86_64_16:
        case R_X86_64_32:
@@ -1189,8 +1226,13 @@ elf64_x86_64_gc_sweep_hook (bfd *abfd, struct bfd_link_info *info,
        case R_X86_64_GOTTPOFF:
        case R_X86_64_GOT32:
        case R_X86_64_GOTPCREL:
+       case R_X86_64_GOT64:
+       case R_X86_64_GOTPCREL64:
+       case R_X86_64_GOTPLT64:
          if (h != NULL)
            {
+             if (r_type == R_X86_64_GOTPLT64 && h->plt.refcount > 0)
+               h->plt.refcount -= 1;
              if (h->got.refcount > 0)
                h->got.refcount -= 1;
            }
@@ -1215,6 +1257,7 @@ elf64_x86_64_gc_sweep_hook (bfd *abfd, struct bfd_link_info *info,
          /* Fall thru */
 
        case R_X86_64_PLT32:
+       case R_X86_64_PLTOFF64:
          if (h != NULL)
            {
              if (h->plt.refcount > 0)
@@ -2096,11 +2139,23 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
         copied into the output file to be resolved at run time.  */
       switch (r_type)
        {
+       asection *base_got;
        case R_X86_64_GOT32:
+       case R_X86_64_GOT64:
          /* Relocation is to the entry for this symbol in the global
             offset table.  */
        case R_X86_64_GOTPCREL:
-         /* Use global offset table as symbol value.  */
+       case R_X86_64_GOTPCREL64:
+         /* Use global offset table entry as symbol value.  */
+       case R_X86_64_GOTPLT64:
+         /* This is the same as GOT64 for relocation purposes, but
+            indicates the existence of a PLT entry.  The difficulty is,
+            that we must calculate the GOT slot offset from the PLT
+            offset, if this symbol got a PLT entry (it was global).
+            Additionally if it's computed from the PLT entry, then that
+            GOT offset is relative to .got.plt, not to .got.  */
+         base_got = htab->sgot;
+
          if (htab->sgot == NULL)
            abort ();
 
@@ -2109,6 +2164,19 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
              bfd_boolean dyn;
 
              off = h->got.offset;
+             if (h->needs_plt
+                 && h->plt.offset != (bfd_vma)-1
+                 && off == (bfd_vma)-1)
+               {
+                 /* We can't use h->got.offset here to save
+                    state, or even just remember the offset, as
+                    finish_dynamic_symbol would use that as offset into
+                    .got.  */
+                 bfd_vma plt_index = h->plt.offset / PLT_ENTRY_SIZE - 1;
+                 off = (plt_index + 3) * GOT_ENTRY_SIZE;
+                 base_got = htab->sgotplt;
+               }
+
              dyn = htab->elf.dynamic_sections_created;
 
              if (! WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info->shared, h)
@@ -2133,7 +2201,9 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
                  else
                    {
                      bfd_put_64 (output_bfd, relocation,
-                                 htab->sgot->contents + off);
+                                 base_got->contents + off);
+                     /* Note that this is harmless for the GOTPLT64 case,
+                        as -1 | 1 still is -1.  */
                      h->got.offset |= 1;
                    }
                }
@@ -2155,7 +2225,7 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
              else
                {
                  bfd_put_64 (output_bfd, relocation,
-                             htab->sgot->contents + off);
+                             base_got->contents + off);
 
                  if (info->shared)
                    {
@@ -2169,8 +2239,8 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
                      if (s == NULL)
                        abort ();
 
-                     outrel.r_offset = (htab->sgot->output_section->vma
-                                        + htab->sgot->output_offset
+                     outrel.r_offset = (base_got->output_section->vma
+                                        + base_got->output_offset
                                         + off);
                      outrel.r_info = ELF64_R_INFO (0, R_X86_64_RELATIVE);
                      outrel.r_addend = relocation;
@@ -2186,9 +2256,9 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
          if (off >= (bfd_vma) -2)
            abort ();
 
-         relocation = htab->sgot->output_section->vma
-                      + htab->sgot->output_offset + off;
-         if (r_type != R_X86_64_GOTPCREL)
+         relocation = base_got->output_section->vma
+                      + base_got->output_offset + off;
+         if (r_type != R_X86_64_GOTPCREL && r_type != R_X86_64_GOTPCREL64)
            relocation -= htab->sgotplt->output_section->vma
                          - htab->sgotplt->output_offset;
 
@@ -2224,12 +2294,31 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
          break;
 
        case R_X86_64_GOTPC32:
+       case R_X86_64_GOTPC64:
          /* Use global offset table as symbol value.  */
          relocation = htab->sgotplt->output_section->vma
                       + htab->sgotplt->output_offset;
          unresolved_reloc = FALSE;
          break;
 
+       case R_X86_64_PLTOFF64:
+         /* Relocation is PLT entry relative to GOT.  For local
+            symbols it's the symbol itself relative to GOT.  */
+          if (h != NULL
+             /* See PLT32 handling.  */
+             && h->plt.offset != (bfd_vma) -1
+             && htab->splt != NULL)
+           {
+             relocation = (htab->splt->output_section->vma
+                           + htab->splt->output_offset
+                           + h->plt.offset);
+             unresolved_reloc = FALSE;
+           }
+
+         relocation -= htab->sgotplt->output_section->vma
+                       + htab->sgotplt->output_offset;
+         break;
+
        case R_X86_64_PLT32:
          /* Relocation is to the entry for this symbol in the
             procedure linkage table.  */
index f7f85ba..1f8ec2b 100644 (file)
@@ -458,6 +458,25 @@ elf_file_p (Elf_External_Ehdr *x_ehdrp)
          && (x_ehdrp->e_ident[EI_MAG3] == ELFMAG3));
 }
 
+/* Determines if a given section index is valid.  */
+
+static inline bfd_boolean
+valid_section_index_p (unsigned index, unsigned num_sections)
+{
+  /* Note: We allow SHN_UNDEF as a valid section index.  */
+  if (index < SHN_LORESERVE || index > SHN_HIRESERVE)
+    return index < num_sections;
+  
+  /* We disallow the use of reserved indcies, except for those
+     with OS or Application specific meaning.  The test make use
+     of the knowledge that:
+       SHN_LORESERVE == SHN_LOPROC
+     and
+       SHN_HIPROC == SHN_LOOS - 1  */
+  /* XXX - Should we allow SHN_XINDEX as a valid index here ?  */
+  return (index >= SHN_LOPROC && index <= SHN_HIOS);
+}
+
 /* Check to see if the file associated with ABFD matches the target vector
    that ABFD points to.
 
@@ -545,7 +564,7 @@ elf_object_p (bfd *abfd)
   if (i_ehdrp->e_shoff == 0 && i_ehdrp->e_type == ET_REL)
     goto got_wrong_format_error;
 
-  /* As a simple sanity check, verify that the what BFD thinks is the
+  /* As a simple sanity check, verify that what BFD thinks is the
      size of each section header table entry actually matches the size
      recorded in the file, but only if there are any sections.  */
   if (i_ehdrp->e_shentsize != sizeof (x_shdr) && i_ehdrp->e_shnum != 0)
@@ -711,17 +730,13 @@ elf_object_p (bfd *abfd)
          elf_swap_shdr_in (abfd, &x_shdr, i_shdrp + shindex);
 
          /* Sanity check sh_link and sh_info.  */
-         if (i_shdrp[shindex].sh_link >= num_sec
-             || (i_shdrp[shindex].sh_link >= SHN_LORESERVE
-                 && i_shdrp[shindex].sh_link <= SHN_HIRESERVE))
+         if (! valid_section_index_p (i_shdrp[shindex].sh_link, num_sec))
            goto got_wrong_format_error;
 
          if (((i_shdrp[shindex].sh_flags & SHF_INFO_LINK)
               || i_shdrp[shindex].sh_type == SHT_RELA
               || i_shdrp[shindex].sh_type == SHT_REL)
-             && (i_shdrp[shindex].sh_info >= num_sec
-                 || (i_shdrp[shindex].sh_info >= SHN_LORESERVE
-                     && i_shdrp[shindex].sh_info <= SHN_HIRESERVE)))
+             && ! valid_section_index_p (i_shdrp[shindex].sh_info, num_sec))
            goto got_wrong_format_error;
 
          /* If the section is loaded, but not page aligned, clear
@@ -739,12 +754,19 @@ elf_object_p (bfd *abfd)
   /* A further sanity check.  */
   if (i_ehdrp->e_shnum != 0)
     {
-      if (i_ehdrp->e_shstrndx >= elf_numsections (abfd)
-         || (i_ehdrp->e_shstrndx >= SHN_LORESERVE
-             && i_ehdrp->e_shstrndx <= SHN_HIRESERVE))
-       goto got_wrong_format_error;
+      if (! valid_section_index_p (i_ehdrp->e_shstrndx, elf_numsections (abfd)))
+       {
+         /* PR 2257:
+            We used to just goto got_wrong_format_error here
+            but there are binaries in existance for which this test
+            will prevent the binutils from working with them at all.
+            So we are kind, and reset the string index value to 0
+            so that at least some processing can be done.  */
+         i_ehdrp->e_shstrndx = SHN_UNDEF;
+         _bfd_error_handler (_("warning: %s has a corrupt string table index - ignoring"), abfd->filename);
+       }
     }
-  else if (i_ehdrp->e_shstrndx != 0)
+  else if (i_ehdrp->e_shstrndx != SHN_UNDEF)
     goto got_wrong_format_error;
 
   /* Read in the program headers.  */
@@ -1340,10 +1362,9 @@ elf_slurp_reloc_table_from_section (bfd *abfd,
        }
       else
        {
-         asymbol **ps, *s;
+         asymbol **ps;
 
          ps = symbols + ELF_R_SYM (rela.r_info) - 1;
-         s = *ps;
 
          relent->sym_ptr_ptr = ps;
        }
index 8c1c3c1..8600d46 100644 (file)
@@ -889,6 +889,26 @@ _bfd_elf_merge_symbol (bfd *abfd,
            && h->root.type != bfd_link_hash_undefweak
            && h->root.type != bfd_link_hash_common);
 
+  /* When we try to create a default indirect symbol from the dynamic
+     definition with the default version, we skip it if its type and
+     the type of existing regular definition mismatch.  We only do it
+     if the existing regular definition won't be dynamic.  */
+  if (pold_alignment == NULL
+      && !info->shared
+      && !info->export_dynamic
+      && !h->ref_dynamic
+      && newdyn
+      && newdef
+      && !olddyn
+      && (olddef || h->root.type == bfd_link_hash_common)
+      && ELF_ST_TYPE (sym->st_info) != h->type
+      && ELF_ST_TYPE (sym->st_info) != STT_NOTYPE
+      && h->type != STT_NOTYPE)
+    {
+      *skip = TRUE;
+      return TRUE;
+    }
+
   /* Check TLS symbol.  We don't check undefined symbol introduced by
      "ld -u".  */
   if ((ELF_ST_TYPE (sym->st_info) == STT_TLS || h->type == STT_TLS)
@@ -2790,10 +2810,6 @@ _bfd_elf_add_dynamic_entry (struct bfd_link_info *info,
   if (! is_elf_hash_table (hash_table))
     return FALSE;
 
-  if (info->warn_shared_textrel && info->shared && tag == DT_TEXTREL)
-    _bfd_error_handler
-      (_("warning: creating a DT_TEXTREL in a shared object."));
-
   bed = get_elf_backend_data (hash_table->dynobj);
   s = bfd_get_section_by_name (hash_table->dynobj, ".dynamic");
   BFD_ASSERT (s != NULL);
@@ -6184,6 +6200,24 @@ elf_link_output_sym (struct elf_final_link_info *finfo,
   return TRUE;
 }
 
+/* Return TRUE if the dynamic symbol SYM in ABFD is supported.  */
+
+static bfd_boolean
+check_dynsym (bfd *abfd, Elf_Internal_Sym *sym)
+{
+  if (sym->st_shndx > SHN_HIRESERVE)
+    {
+      /* The gABI doesn't support dynamic symbols in output sections
+         beyond 64k.  */
+      (*_bfd_error_handler)
+       (_("%B: Too many sections: %d (>= %d)"),
+        abfd, bfd_count_sections (abfd), SHN_LORESERVE);
+      bfd_set_error (bfd_error_nonrepresentable_section);
+      return FALSE;
+    }
+  return TRUE;
+}
+
 /* For DSOs loaded in via a DT_NEEDED entry, emulate ld.so in
    allowing an unsatisfied unversioned symbol in the DSO to match a
    versioned symbol that would normally require an explicit version.
@@ -6616,6 +6650,11 @@ elf_link_output_extsym (struct elf_link_hash_entry *h, void *data)
 
       sym.st_name = h->dynstr_index;
       esym = finfo->dynsym_sec->contents + h->dynindx * bed->s->sizeof_sym;
+      if (! check_dynsym (finfo->output_bfd, &sym))
+       {
+         eoinfo->failed = TRUE;
+         return FALSE;
+       }
       bed->s->swap_symbol_out (finfo->output_bfd, &sym, esym, 0);
 
       bucketcount = elf_hash_table (finfo->info)->bucketcount;
@@ -6715,7 +6754,7 @@ unsigned int
 _bfd_elf_default_action_discarded (asection *sec)
 {
   if (sec->flags & SEC_DEBUGGING)
-    return 0;
+    return PRETEND;
 
   if (strcmp (".eh_frame", sec->name) == 0)
     return 0;
@@ -6739,6 +6778,7 @@ match_group_member (asection *sec, asection *group)
       if (bfd_elf_match_symbols_in_sections (s, sec))
        return s;
 
+      s = elf_next_in_group (s);
       if (s == first)
        break;
     }
@@ -7665,7 +7705,7 @@ elf_fixup_link_order (bfd *abfd, asection *o)
   struct bfd_link_order *p;
   bfd *sub;
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
-  int elfsec;
+  unsigned elfsec;
   struct bfd_link_order **sections;
   asection *s, *other_sec, *linkorder_sec;
   bfd_vma offset;
@@ -7682,7 +7722,8 @@ elf_fixup_link_order (bfd *abfd, asection *o)
          sub = s->owner;
          if (bfd_get_flavour (sub) == bfd_target_elf_flavour
              && elf_elfheader (sub)->e_ident[EI_CLASS] == bed->s->elfclass
-             && (elfsec = _bfd_elf_section_from_bfd_section (sub, s)) != -1
+             && (elfsec = _bfd_elf_section_from_bfd_section (sub, s))
+             && elfsec < elf_numsections (sub)
              && elf_elfsections (sub)[elfsec]->sh_flags & SHF_LINK_ORDER)
            {
              seen_linkorder++;
@@ -8305,6 +8346,8 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
              indx = elf_section_data (s)->this_idx;
              BFD_ASSERT (indx > 0);
              sym.st_shndx = indx;
+             if (! check_dynsym (abfd, &sym))
+               return FALSE;
              sym.st_value = s->vma;
              dest = dynsym + dynindx * bed->s->sizeof_sym;
              if (last_local < dynindx)
@@ -8339,6 +8382,8 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
 
                  sym.st_shndx =
                    elf_section_data (s->output_section)->this_idx;
+                 if (! check_dynsym (abfd, &sym))
+                   return FALSE;
                  sym.st_value = (s->output_section->vma
                                  + s->output_offset
                                  + e->isym.st_value);
@@ -8619,6 +8664,32 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
       if (! (*bed->elf_backend_finish_dynamic_sections) (abfd, info))
        goto error_return;
 
+      /* Check for DT_TEXTREL (late, in case the backend removes it).  */
+      if (info->warn_shared_textrel && info->shared)
+       {
+         bfd_byte *dyncon, *dynconend;
+
+         /* Fix up .dynamic entries.  */
+         o = bfd_get_section_by_name (dynobj, ".dynamic");
+         BFD_ASSERT (o != NULL);
+
+         dyncon = o->contents;
+         dynconend = o->contents + o->size;
+         for (; dyncon < dynconend; dyncon += bed->s->sizeof_dyn)
+           {
+             Elf_Internal_Dyn dyn;
+
+             bed->s->swap_dyn_in (dynobj, dyncon, &dyn);
+
+             if (dyn.d_tag == DT_TEXTREL)
+               {
+                 _bfd_error_handler
+                   (_("warning: creating a DT_TEXTREL in a shared object."));
+                 break;
+               }
+           }
+       }
+
       for (o = dynobj->sections; o != NULL; o = o->next)
        {
          if ((o->flags & SEC_HAS_CONTENTS) == 0
@@ -8929,7 +9000,7 @@ elf_gc_sweep (bfd *abfd, struct bfd_link_info *info)
        {
          /* Keep debug and special sections.  */
          if ((o->flags & (SEC_DEBUGGING | SEC_LINKER_CREATED)) != 0
-             || (o->flags & (SEC_ALLOC | SEC_LOAD)) == 0)
+             || (o->flags & (SEC_ALLOC | SEC_LOAD | SEC_RELOC)) == 0)
            o->gc_mark = 1;
 
          if (o->gc_mark)
index f0bb0fa..6b3257a 100644 (file)
@@ -80,9 +80,6 @@ struct elfNN_ia64_dyn_sym_info
   /* The addend for which this entry is relevant.  */
   bfd_vma addend;
 
-  /* Next addend in the list.  */
-  struct elfNN_ia64_dyn_sym_info *next;
-
   bfd_vma got_offset;
   bfd_vma fptr_offset;
   bfd_vma pltoff_offset;
@@ -133,6 +130,13 @@ struct elfNN_ia64_local_hash_entry
 {
   int id;
   unsigned int r_sym;
+  /* The number of elements in elfNN_ia64_dyn_sym_info array.  */
+  unsigned int count;
+  /* The number of sorted elements in elfNN_ia64_dyn_sym_info array.  */
+  unsigned int sorted_count;
+  /* The size of elfNN_ia64_dyn_sym_info array.  */
+  unsigned int size;
+  /* The array of elfNN_ia64_dyn_sym_info.  */
   struct elfNN_ia64_dyn_sym_info *info;
 
   /* TRUE if this hash entry's addends was translated for
@@ -143,6 +147,13 @@ struct elfNN_ia64_local_hash_entry
 struct elfNN_ia64_link_hash_entry
 {
   struct elf_link_hash_entry root;
+  /* The number of elements in elfNN_ia64_dyn_sym_info array.  */
+  unsigned int count;
+  /* The number of sorted elements in elfNN_ia64_dyn_sym_info array.  */
+  unsigned int sorted_count;
+  /* The size of elfNN_ia64_dyn_sym_info array.  */
+  unsigned int size;
+  /* The array of elfNN_ia64_dyn_sym_info.  */
   struct elfNN_ia64_dyn_sym_info *info;
 };
 
@@ -852,6 +863,12 @@ elfNN_ia64_relax_brl (bfd_byte *contents, bfd_vma off)
   bfd_putl64 (t0, hit_addr);
   bfd_putl64 (t1, hit_addr + 8);
 }
+
+/* Rename some of the generic section flags to better document how they
+   are used here.  */
+#define skip_relax_pass_0 need_finalize_relax
+#define skip_relax_pass_1 has_gp_reloc
+
 \f
 /* These functions do relaxation for IA-64 ELF.  */
 
@@ -880,6 +897,8 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
   bfd_boolean changed_contents = FALSE;
   bfd_boolean changed_relocs = FALSE;
   bfd_boolean changed_got = FALSE;
+  bfd_boolean skip_relax_pass_0 = TRUE;
+  bfd_boolean skip_relax_pass_1 = TRUE;
   bfd_vma gp = 0;
 
   /* Assume we're not going to change any sizes, and we'll only need
@@ -891,11 +910,11 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
     return FALSE;
 
   /* Nothing to do if there are no relocations or there is no need for
-     the relax finalize pass.  */
+     the current pass.  */
   if ((sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0
-      || (!link_info->need_relax_finalize
-         && sec->need_finalize_relax == 0))
+      || (link_info->relax_pass == 0 && sec->skip_relax_pass_0)
+      || (link_info->relax_pass == 1 && sec->skip_relax_pass_1))
     return TRUE;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
@@ -936,20 +955,19 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
        case R_IA64_PCREL21BI:
        case R_IA64_PCREL21M:
        case R_IA64_PCREL21F:
-         /* In the finalize pass, all br relaxations are done. We can
-            skip it. */
-         if (!link_info->need_relax_finalize)
+         /* In pass 1, all br relaxations are done. We can skip it. */
+         if (link_info->relax_pass == 1)
            continue;
+         skip_relax_pass_0 = FALSE;
          is_branch = TRUE;
          break;
 
        case R_IA64_PCREL60B:
-         /* We can't optimize brl to br before the finalize pass since
-            br relaxations will increase the code size. Defer it to
-            the finalize pass.  */
-         if (link_info->need_relax_finalize)
+         /* We can't optimize brl to br in pass 0 since br relaxations
+            will increase the code size. Defer it to pass 1.  */
+         if (link_info->relax_pass == 0)
            {
-             sec->need_finalize_relax = 1;
+             skip_relax_pass_1 = FALSE;
              continue;
            }
          is_branch = TRUE;
@@ -957,12 +975,11 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
 
        case R_IA64_LTOFF22X:
        case R_IA64_LDXMOV:
-         /* We can't relax ldx/mov before the finalize pass since
-            br relaxations will increase the code size. Defer it to
-            the finalize pass.  */
-         if (link_info->need_relax_finalize)
+         /* We can't relax ldx/mov in pass 0 since br relaxations will
+            increase the code size. Defer it to pass 1.  */
+         if (link_info->relax_pass == 0)
            {
-             sec->need_finalize_relax = 1;
+             skip_relax_pass_1 = FALSE;
              continue;
            }
          is_branch = FALSE;
@@ -1352,8 +1369,12 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
        }
     }
 
-  if (!link_info->need_relax_finalize)
-    sec->need_finalize_relax = 0;
+  if (link_info->relax_pass == 0)
+    {
+      /* Pass 0 is only needed to relax br.  */
+      sec->skip_relax_pass_0 = skip_relax_pass_0;
+      sec->skip_relax_pass_1 = skip_relax_pass_1;
+    }
 
   *again = changed_contents || changed_relocs;
   return TRUE;
@@ -1369,6 +1390,8 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
     free (internal_relocs);
   return FALSE;
 }
+#undef skip_relax_pass_0
+#undef skip_relax_pass_1
 
 static void
 elfNN_ia64_relax_ldxmov (contents, off)
@@ -1799,6 +1822,9 @@ elfNN_ia64_new_elf_hash_entry (entry, table, string)
                                     table, string));
 
   ret->info = NULL;
+  ret->count = 0;
+  ret->sorted_count = 0;
+  ret->size = 0;
   return (struct bfd_hash_entry *) ret;
 }
 
@@ -1829,16 +1855,25 @@ elfNN_ia64_hash_copy_indirect (info, xdir, xind)
   if (ind->info != NULL)
     {
       struct elfNN_ia64_dyn_sym_info *dyn_i;
-      struct elfNN_ia64_dyn_sym_info **pdyn;
+      unsigned int count;
+
+      if (dir->info)
+       free (dir->info);
+
+      dir->info = ind->info;
+      dir->count = ind->count;
+      dir->sorted_count = ind->sorted_count;
+      dir->size = ind->size;
 
-      pdyn = &dir->info;
-      while ((dyn_i = *pdyn) != NULL)
-       pdyn = &dyn_i->next;
-      *pdyn = dyn_i = ind->info;
       ind->info = NULL;
+      ind->count = 0;
+      ind->sorted_count = 0;
+      ind->size = 0;
 
       /* Fix up the dyn_sym_info pointers to the global symbol.  */
-      for (; dyn_i; dyn_i = dyn_i->next)
+      for (count = dir->count, dyn_i = dir->info;
+          count != 0;
+          count--, dyn_i++)
        dyn_i->h = &dir->root;
     }
 
@@ -1864,12 +1899,15 @@ elfNN_ia64_hash_hide_symbol (info, xh, force_local)
 {
   struct elfNN_ia64_link_hash_entry *h;
   struct elfNN_ia64_dyn_sym_info *dyn_i;
+  unsigned int count;
 
   h = (struct elfNN_ia64_link_hash_entry *)xh;
 
   _bfd_elf_link_hash_hide_symbol (info, &h->root, force_local);
 
-  for (dyn_i = h->info; dyn_i; dyn_i = dyn_i->next)
+  for (count = h->count, dyn_i = h->info;
+       count != 0;
+       count--, dyn_i++)
     {
       dyn_i->want_plt2 = 0;
       dyn_i->want_plt = 0;
@@ -1937,6 +1975,51 @@ elfNN_ia64_hash_table_create (abfd)
   return &ret->root.root;
 }
 
+/* Free the global elfNN_ia64_dyn_sym_info array.  */
+
+static bfd_boolean
+elfNN_ia64_global_dyn_info_free (void **xentry,
+                               PTR unused ATTRIBUTE_UNUSED)
+{
+  struct elfNN_ia64_link_hash_entry *entry
+    = (struct elfNN_ia64_link_hash_entry *) xentry;
+
+  if (entry->root.root.type == bfd_link_hash_warning)
+    entry = (struct elfNN_ia64_link_hash_entry *) entry->root.root.u.i.link;
+
+  if (entry->info)
+    {
+      free (entry->info);
+      entry->info = NULL;
+      entry->count = 0;
+      entry->sorted_count = 0;
+      entry->size = 0;
+    }
+
+  return TRUE;
+}
+
+/* Free the local elfNN_ia64_dyn_sym_info array.  */
+
+static bfd_boolean
+elfNN_ia64_local_dyn_info_free (void **slot,
+                               PTR unused ATTRIBUTE_UNUSED)
+{
+  struct elfNN_ia64_local_hash_entry *entry
+    = (struct elfNN_ia64_local_hash_entry *) *slot;
+
+  if (entry->info)
+    {
+      free (entry->info);
+      entry->info = NULL;
+      entry->count = 0;
+      entry->sorted_count = 0;
+      entry->size = 0;
+    }
+
+  return TRUE;
+}
+
 /* Destroy IA-64 linker hash table.  */
 
 static void
@@ -1946,9 +2029,15 @@ elfNN_ia64_hash_table_free (hash)
   struct elfNN_ia64_link_hash_table *ia64_info
     = (struct elfNN_ia64_link_hash_table *) hash;
   if (ia64_info->loc_hash_table)
-    htab_delete (ia64_info->loc_hash_table);
+    {
+      htab_traverse (ia64_info->loc_hash_table,
+                    elfNN_ia64_local_dyn_info_free, NULL);
+      htab_delete (ia64_info->loc_hash_table);
+    }
   if (ia64_info->loc_hash_memory)
     objalloc_free ((struct objalloc *) ia64_info->loc_hash_memory);
+  elf_link_hash_traverse (&ia64_info->root,
+                         elfNN_ia64_global_dyn_info_free, NULL);
   _bfd_generic_link_hash_table_free (hash);
 }
 
@@ -1970,11 +2059,14 @@ elfNN_ia64_global_dyn_sym_thunk (xentry, xdata)
   struct elfNN_ia64_dyn_sym_traverse_data *data
     = (struct elfNN_ia64_dyn_sym_traverse_data *) xdata;
   struct elfNN_ia64_dyn_sym_info *dyn_i;
+  unsigned int count;
 
   if (entry->root.root.type == bfd_link_hash_warning)
     entry = (struct elfNN_ia64_link_hash_entry *) entry->root.root.u.i.link;
 
-  for (dyn_i = entry->info; dyn_i; dyn_i = dyn_i->next)
+  for (count = entry->count, dyn_i = entry->info;
+       count != 0;
+       count--, dyn_i++)
     if (! (*data->func) (dyn_i, data->data))
       return FALSE;
   return TRUE;
@@ -1990,11 +2082,14 @@ elfNN_ia64_local_dyn_sym_thunk (slot, xdata)
   struct elfNN_ia64_dyn_sym_traverse_data *data
     = (struct elfNN_ia64_dyn_sym_traverse_data *) xdata;
   struct elfNN_ia64_dyn_sym_info *dyn_i;
+  unsigned int count;
 
-  for (dyn_i = entry->info; dyn_i; dyn_i = dyn_i->next)
+  for (count = entry->count, dyn_i = entry->info;
+       count != 0;
+       count--, dyn_i++)
     if (! (*data->func) (dyn_i, data->data))
-      return 0;
-  return 1;
+      return FALSE;
+  return TRUE;
 }
 
 static void
@@ -2103,8 +2198,129 @@ get_local_sym_hash (ia64_info, abfd, rel, create)
   return ret;
 }
 
+/* Used to sort elfNN_ia64_dyn_sym_info array.  */
+
+static int
+addend_compare (const void *xp, const void *yp)
+{
+  const struct elfNN_ia64_dyn_sym_info *x
+    = (const struct elfNN_ia64_dyn_sym_info *) xp;
+  const struct elfNN_ia64_dyn_sym_info *y
+    = (const struct elfNN_ia64_dyn_sym_info *) yp;
+
+  return x->addend - y->addend;
+}
+
+/* Sort elfNN_ia64_dyn_sym_info array and remove duplicates.  */
+
+static unsigned int
+sort_dyn_sym_info (struct elfNN_ia64_dyn_sym_info *info,
+                  unsigned int count)
+{
+  bfd_vma curr, prev;
+  unsigned int i, dup, diff, dest, src, len;
+
+  qsort (info, count, sizeof (*info), addend_compare);
+
+  /* Find the first duplicate.  */
+  prev = info [0].addend;
+  for (i = 1; i < count; i++)
+    {
+      curr = info [i].addend;
+      if (curr == prev)
+       break;
+      prev = curr;
+    }
+
+  /* Remove duplicates.  */
+  if (i < count)
+    {
+      /* We need to move a block of elements to here.  */
+      dest = i++;
+      while (i < count)
+       {
+         curr = info [i].addend;
+
+         /* Move a block of elements whose first one is different from
+            the previous.  */
+         if (curr == prev)
+           {
+             for (src = i + 1; src < count; src++)
+               if (info [src].addend != curr)
+                 break;
+           }
+         else
+           src = i;
+
+         if (src >= count)
+           break;
+
+         /* Find the next duplicate.  */
+         prev = info [src].addend;
+         for (dup = src + 1; dup < count; dup++)
+           {
+             curr = info [dup].addend;
+             if (curr == prev)
+               break;
+             prev = curr;
+           }
+
+         /* How much to move.  */
+         len = dup - src;
+         i = dup + 1;
+
+         if (len == 1 && dup < count)
+           {
+             /* If we only move 1 element, we combine it with the next
+                one.  Find the next different one.  */
+             for (diff = dup + 1, src++; diff < count; diff++, src++)
+               if (info [diff].addend != curr)
+                 break;
+
+             if (diff < count)
+               {
+                 /* Find the next duplicate.  */
+                 prev = info [diff].addend;
+                 for (dup = diff + 1; dup < count; dup++)
+                   {
+                     curr = info [dup].addend;
+                     if (curr == prev)
+                       break;
+                     prev = curr;
+                     diff++;
+                   }
+
+                 len = diff - src + 1;
+                 i = diff + 1;
+               }
+           }
+
+         memmove (&info [dest], &info [src], len * sizeof (*info));
+
+         dest += len;
+       }
+
+      count = dest;
+    }
+
+  return count;
+}
+
 /* Find and/or create a descriptor for dynamic symbol info.  This will
-   vary based on global or local symbol, and the addend to the reloc.  */
+   vary based on global or local symbol, and the addend to the reloc.
+
+   We don't sort when inserting.  Also, we sort and eliminate
+   duplicates if there is an unsorted section.  Typically, this will
+   only happen once, because we do all insertions before lookups.  We
+   then use bsearch to do a lookup.  This also allows lookups to be
+   fast.  So we have fast insertion (O(log N) due to duplicate check),
+   fast lookup (O(log N)) and one sort (O(N log N) expected time).
+   Previously, all lookups were O(N) because of the use of the linked
+   list and also all insertions were O(N) because of the check for
+   duplicates.  There are some complications here because the array
+   size grows occasionally, which may add an O(N) factor, but this
+   should be rare.  Also,  we free the excess array allocation, which
+   requires a copy which is O(N), but this only happens once.  */
 
 static struct elfNN_ia64_dyn_sym_info *
 get_dyn_sym_info (ia64_info, h, abfd, rel, create)
@@ -2114,12 +2330,22 @@ get_dyn_sym_info (ia64_info, h, abfd, rel, create)
      const Elf_Internal_Rela *rel;
      bfd_boolean create;
 {
-  struct elfNN_ia64_dyn_sym_info **pp;
-  struct elfNN_ia64_dyn_sym_info *dyn_i;
+  struct elfNN_ia64_dyn_sym_info **info_p, *info, *dyn_i, key;
+  unsigned int *count_p, *sorted_count_p, *size_p;
+  unsigned int count, sorted_count, size;
   bfd_vma addend = rel ? rel->r_addend : 0;
+  bfd_size_type amt;
 
   if (h)
-    pp = &((struct elfNN_ia64_link_hash_entry *)h)->info;
+    {
+      struct elfNN_ia64_link_hash_entry *global_h;
+
+      global_h = (struct elfNN_ia64_link_hash_entry *) h;
+      info_p = &global_h->info;
+      count_p = &global_h->count;
+      sorted_count_p = &global_h->sorted_count;
+      size_p = &global_h->size;
+    }
   else
     {
       struct elfNN_ia64_local_hash_entry *loc_h;
@@ -2131,18 +2357,107 @@ get_dyn_sym_info (ia64_info, h, abfd, rel, create)
          return NULL;
        }
 
-      pp = &loc_h->info;
+      info_p = &loc_h->info;
+      count_p = &loc_h->count;
+      sorted_count_p = &loc_h->sorted_count;
+      size_p = &loc_h->size;
     }
 
-  for (dyn_i = *pp; dyn_i && dyn_i->addend != addend; dyn_i = *pp)
-    pp = &dyn_i->next;
-
-  if (dyn_i == NULL && create)
+  count = *count_p;
+  sorted_count = *sorted_count_p;
+  size = *size_p;
+  info = *info_p;
+  if (create)
     {
-      dyn_i = ((struct elfNN_ia64_dyn_sym_info *)
-              bfd_zalloc (abfd, (bfd_size_type) sizeof *dyn_i));
-      *pp = dyn_i;
+      /* When we create the array, we don't check for duplicates,
+         except in the previously sorted section if one exists, and
+        against the last inserted entry.  This allows insertions to
+        be fast.  */
+      if (info)
+       {
+         if (sorted_count)
+           {
+             /* Try bsearch first on the sorted section.  */
+             key.addend = addend;
+             dyn_i = bsearch (&key, info, sorted_count,
+                              sizeof (*info), addend_compare);
+
+             if (dyn_i)
+               {
+                 return dyn_i;
+               }
+           }
+
+         /* Do a quick check for the last inserted entry.  */
+         dyn_i = info + count - 1;
+         if (dyn_i->addend == addend)
+           {
+             return dyn_i;
+           }
+       }
+
+      if (size == 0)
+       {
+         /* It is the very first element. We create the array of size
+            1.  */
+         size = 1;
+         amt = size * sizeof (*info);
+         info = bfd_malloc (amt);
+       }
+      else if (size <= count)
+       {
+         /* We double the array size every time when we reach the
+            size limit.  */
+         size += size;
+         amt = size * sizeof (*info);
+         info = bfd_realloc (info, amt);
+       }
+      else
+       goto has_space;
+
+      if (info == NULL)
+       return NULL;
+      *size_p = size;
+      *info_p = info;
+
+has_space:
+      /* Append the new one to the array.  */
+      dyn_i = info + count;
+      memset (dyn_i, 0, sizeof (*dyn_i));
       dyn_i->addend = addend;
+      
+      /* We increment count only since the new ones are unsorted and
+        may have duplicate.  */
+      (*count_p)++;
+    }
+  else
+    {
+      /* It is a lookup without insertion.  Sort array if part of the
+        array isn't sorted.  */
+      if (count != sorted_count)
+       {
+         count = sort_dyn_sym_info (info, count);
+         *count_p = count;
+         *sorted_count_p = count;
+       }
+
+      /* Free unused memory.  */
+      if (size != count)
+       {
+         amt = count * sizeof (*info);
+         info = bfd_malloc (amt);
+         if (info != NULL)
+           {
+             memcpy (info, *info_p, amt);
+             free (*info_p);
+             *size_p = count;
+             *info_p = info;
+           }
+       }
+
+      key.addend = addend;
+      dyn_i = bsearch (&key, info, count,
+                      sizeof (*info), addend_compare);
     }
 
   return dyn_i;
@@ -2368,6 +2683,23 @@ elfNN_ia64_check_relocs (abfd, info, sec, relocs)
   Elf_Internal_Shdr *symtab_hdr;
   const Elf_Internal_Rela *rel;
   asection *got, *fptr, *srel, *pltoff;
+  enum {
+    NEED_GOT = 1,
+    NEED_GOTX = 2,
+    NEED_FPTR = 4,
+    NEED_PLTOFF = 8,
+    NEED_MIN_PLT = 16,
+    NEED_FULL_PLT = 32,
+    NEED_DYNREL = 64,
+    NEED_LTOFF_FPTR = 128,
+    NEED_TPREL = 256,
+    NEED_DTPMOD = 512,
+    NEED_DTPREL = 1024
+  };
+  int need_entry;
+  struct elf_link_hash_entry *h;
+  unsigned long r_symndx;
+  bfd_boolean maybe_dynamic;
 
   if (info->relocatable)
     return TRUE;
@@ -2378,29 +2710,181 @@ elfNN_ia64_check_relocs (abfd, info, sec, relocs)
   got = fptr = srel = pltoff = NULL;
 
   relend = relocs + sec->reloc_count;
+
+  /* We scan relocations first to create dynamic relocation arrays.  We
+     modified get_dyn_sym_info to allow fast insertion and support fast
+     lookup in the next loop.  */
+  for (rel = relocs; rel < relend; ++rel)
+    {
+      r_symndx = ELFNN_R_SYM (rel->r_info);
+      if (r_symndx >= symtab_hdr->sh_info)
+       {
+         long indx = r_symndx - symtab_hdr->sh_info;
+         h = elf_sym_hashes (abfd)[indx];
+         while (h->root.type == bfd_link_hash_indirect
+                || h->root.type == bfd_link_hash_warning)
+           h = (struct elf_link_hash_entry *) h->root.u.i.link;
+       }
+      else
+       h = NULL;
+
+      /* We can only get preliminary data on whether a symbol is
+        locally or externally defined, as not all of the input files
+        have yet been processed.  Do something with what we know, as
+        this may help reduce memory usage and processing time later.  */
+      maybe_dynamic = (h && ((!info->executable
+                             && (!info->symbolic
+                                 || info->unresolved_syms_in_shared_libs == RM_IGNORE))
+                            || !h->def_regular
+                            || h->root.type == bfd_link_hash_defweak));
+
+      need_entry = 0;
+      switch (ELFNN_R_TYPE (rel->r_info))
+       {
+       case R_IA64_TPREL64MSB:
+       case R_IA64_TPREL64LSB:
+         if (info->shared || maybe_dynamic)
+           need_entry = NEED_DYNREL;
+         break;
+
+       case R_IA64_LTOFF_TPREL22:
+         need_entry = NEED_TPREL;
+         if (info->shared)
+           info->flags |= DF_STATIC_TLS;
+         break;
+
+       case R_IA64_DTPREL32MSB:
+       case R_IA64_DTPREL32LSB:
+       case R_IA64_DTPREL64MSB:
+       case R_IA64_DTPREL64LSB:
+         if (info->shared || maybe_dynamic)
+           need_entry = NEED_DYNREL;
+         break;
+
+       case R_IA64_LTOFF_DTPREL22:
+         need_entry = NEED_DTPREL;
+         break;
+
+       case R_IA64_DTPMOD64MSB:
+       case R_IA64_DTPMOD64LSB:
+         if (info->shared || maybe_dynamic)
+           need_entry = NEED_DYNREL;
+         break;
+
+       case R_IA64_LTOFF_DTPMOD22:
+         need_entry = NEED_DTPMOD;
+         break;
+
+       case R_IA64_LTOFF_FPTR22:
+       case R_IA64_LTOFF_FPTR64I:
+       case R_IA64_LTOFF_FPTR32MSB:
+       case R_IA64_LTOFF_FPTR32LSB:
+       case R_IA64_LTOFF_FPTR64MSB:
+       case R_IA64_LTOFF_FPTR64LSB:
+         need_entry = NEED_FPTR | NEED_GOT | NEED_LTOFF_FPTR;
+         break;
+
+       case R_IA64_FPTR64I:
+       case R_IA64_FPTR32MSB:
+       case R_IA64_FPTR32LSB:
+       case R_IA64_FPTR64MSB:
+       case R_IA64_FPTR64LSB:
+         if (info->shared || h)
+           need_entry = NEED_FPTR | NEED_DYNREL;
+         else
+           need_entry = NEED_FPTR;
+         break;
+
+       case R_IA64_LTOFF22:
+       case R_IA64_LTOFF64I:
+         need_entry = NEED_GOT;
+         break;
+
+       case R_IA64_LTOFF22X:
+         need_entry = NEED_GOTX;
+         break;
+
+       case R_IA64_PLTOFF22:
+       case R_IA64_PLTOFF64I:
+       case R_IA64_PLTOFF64MSB:
+       case R_IA64_PLTOFF64LSB:
+         need_entry = NEED_PLTOFF;
+         if (h)
+           {
+             if (maybe_dynamic)
+               need_entry |= NEED_MIN_PLT;
+           }
+         else
+           {
+             (*info->callbacks->warning)
+               (info, _("@pltoff reloc against local symbol"), 0,
+                abfd, 0, (bfd_vma) 0);
+           }
+         break;
+
+       case R_IA64_PCREL21B:
+        case R_IA64_PCREL60B:
+         /* Depending on where this symbol is defined, we may or may not
+            need a full plt entry.  Only skip if we know we'll not need
+            the entry -- static or symbolic, and the symbol definition
+            has already been seen.  */
+         if (maybe_dynamic && rel->r_addend == 0)
+           need_entry = NEED_FULL_PLT;
+         break;
+
+       case R_IA64_IMM14:
+       case R_IA64_IMM22:
+       case R_IA64_IMM64:
+       case R_IA64_DIR32MSB:
+       case R_IA64_DIR32LSB:
+       case R_IA64_DIR64MSB:
+       case R_IA64_DIR64LSB:
+         /* Shared objects will always need at least a REL relocation.  */
+         if (info->shared || maybe_dynamic)
+           need_entry = NEED_DYNREL;
+         break;
+
+       case R_IA64_IPLTMSB:
+       case R_IA64_IPLTLSB:
+         /* Shared objects will always need at least a REL relocation.  */
+         if (info->shared || maybe_dynamic)
+           need_entry = NEED_DYNREL;
+         break;
+
+       case R_IA64_PCREL22:
+       case R_IA64_PCREL64I:
+       case R_IA64_PCREL32MSB:
+       case R_IA64_PCREL32LSB:
+       case R_IA64_PCREL64MSB:
+       case R_IA64_PCREL64LSB:
+         if (maybe_dynamic)
+           need_entry = NEED_DYNREL;
+         break;
+       }
+
+      if (!need_entry)
+       continue;
+
+      if ((need_entry & NEED_FPTR) != 0
+         && rel->r_addend)
+       {
+         (*info->callbacks->warning)
+           (info, _("non-zero addend in @fptr reloc"), 0,
+            abfd, 0, (bfd_vma) 0);
+       }
+
+      if (get_dyn_sym_info (ia64_info, h, abfd, rel, TRUE) == NULL)
+       return FALSE;
+    }
+
+  /* Now, we only do lookup without insertion, which is very fast
+     with the modified get_dyn_sym_info.  */ 
   for (rel = relocs; rel < relend; ++rel)
     {
-      enum {
-       NEED_GOT = 1,
-       NEED_GOTX = 2,
-       NEED_FPTR = 4,
-       NEED_PLTOFF = 8,
-       NEED_MIN_PLT = 16,
-       NEED_FULL_PLT = 32,
-       NEED_DYNREL = 64,
-       NEED_LTOFF_FPTR = 128,
-       NEED_TPREL = 256,
-       NEED_DTPMOD = 512,
-       NEED_DTPREL = 1024
-      };
-
-      struct elf_link_hash_entry *h = NULL;
-      unsigned long r_symndx = ELFNN_R_SYM (rel->r_info);
       struct elfNN_ia64_dyn_sym_info *dyn_i;
-      int need_entry;
-      bfd_boolean maybe_dynamic;
       int dynrel_type = R_IA64_NONE;
 
+      r_symndx = ELFNN_R_SYM (rel->r_info);
       if (r_symndx >= symtab_hdr->sh_info)
        {
          /* We're dealing with a global symbol -- find its hash entry
@@ -2413,18 +2897,18 @@ elfNN_ia64_check_relocs (abfd, info, sec, relocs)
 
          h->ref_regular = 1;
        }
+      else
+       h = NULL;
 
       /* We can only get preliminary data on whether a symbol is
         locally or externally defined, as not all of the input files
         have yet been processed.  Do something with what we know, as
         this may help reduce memory usage and processing time later.  */
-      maybe_dynamic = FALSE;
-      if (h && ((!info->executable
-                && (!info->symbolic
-                    || info->unresolved_syms_in_shared_libs == RM_IGNORE))
-               || !h->def_regular
-               || h->root.type == bfd_link_hash_defweak))
-       maybe_dynamic = TRUE;
+      maybe_dynamic = (h && ((!info->executable
+                             && (!info->symbolic
+                                 || info->unresolved_syms_in_shared_libs == RM_IGNORE))
+                            || !h->def_regular
+                            || h->root.type == bfd_link_hash_defweak));
 
       need_entry = 0;
       switch (ELFNN_R_TYPE (rel->r_info))
@@ -2508,12 +2992,6 @@ elfNN_ia64_check_relocs (abfd, info, sec, relocs)
              if (maybe_dynamic)
                need_entry |= NEED_MIN_PLT;
            }
-         else
-           {
-             (*info->callbacks->warning)
-               (info, _("@pltoff reloc against local symbol"), 0,
-                abfd, 0, (bfd_vma) 0);
-           }
          break;
 
        case R_IA64_PCREL21B:
@@ -2562,15 +3040,7 @@ elfNN_ia64_check_relocs (abfd, info, sec, relocs)
       if (!need_entry)
        continue;
 
-      if ((need_entry & NEED_FPTR) != 0
-         && rel->r_addend)
-       {
-         (*info->callbacks->warning)
-           (info, _("non-zero addend in @fptr reloc"), 0,
-            abfd, 0, (bfd_vma) 0);
-       }
-
-      dyn_i = get_dyn_sym_info (ia64_info, h, abfd, rel, TRUE);
+      dyn_i = get_dyn_sym_info (ia64_info, h, abfd, rel, FALSE);
 
       /* Record whether or not this is a local symbol.  */
       dyn_i->h = h;
@@ -4145,8 +4615,11 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
              if (loc_h && ! loc_h->sec_merge_done)
                {
                  struct elfNN_ia64_dyn_sym_info *dynent;
+                 unsigned int count;
 
-                 for (dynent = loc_h->info; dynent; dynent = dynent->next)
+                 for (count = loc_h->count, dynent = loc_h->info;
+                      count != 0;
+                      count--, dynent++)
                    {
                      msec = sym_sec;
                      dynent->addend =
@@ -4161,6 +4634,10 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
                                        - sym_sec->output_section->vma
                                        - sym_sec->output_offset;
                    }
+                 
+                 qsort (loc_h->info, loc_h->count,
+                        sizeof (*loc_h->info), addend_compare);
+
                  loc_h->sec_merge_done = 1;
                }
            }
index 7f124b0..d2c41c0 100644 (file)
@@ -34,6 +34,7 @@
 #include "elf-bfd.h"
 #include "elfxx-mips.h"
 #include "elf/mips.h"
+#include "elf-vxworks.h"
 
 /* Get the ECOFF swapping routines.  */
 #include "coff/sym.h"
 
 #include "hashtab.h"
 
-/* This structure is used to hold .got entries while estimating got
-   sizes.  */
+/* This structure is used to hold information about one GOT entry.
+   There are three types of entry:
+
+      (1) absolute addresses
+           (abfd == NULL)
+      (2) SYMBOL + OFFSET addresses, where SYMBOL is local to an input bfd
+           (abfd != NULL, symndx >= 0)
+      (3) global and forced-local symbols
+           (abfd != NULL, symndx == -1)
+
+   Type (3) entries are treated differently for different types of GOT.
+   In the "master" GOT -- i.e.  the one that describes every GOT
+   reference needed in the link -- the mips_got_entry is keyed on both
+   the symbol and the input bfd that references it.  If it turns out
+   that we need multiple GOTs, we can then use this information to
+   create separate GOTs for each input bfd.
+
+   However, we want each of these separate GOTs to have at most one
+   entry for a given symbol, so their type (3) entries are keyed only
+   on the symbol.  The input bfd given by the "abfd" field is somewhat
+   arbitrary in this case.
+
+   This means that when there are multiple GOTs, each GOT has a unique
+   mips_got_entry for every symbol within it.  We can therefore use the
+   mips_got_entry fields (tls_type and gotidx) to track the symbol's
+   GOT index.
+
+   However, if it turns out that we need only a single GOT, we continue
+   to use the master GOT to describe it.  There may therefore be several
+   mips_got_entries for the same symbol, each with a different input bfd.
+   We want to make sure that each symbol gets a unique GOT entry, so when
+   there's a single GOT, we use the symbol's hash entry, not the
+   mips_got_entry fields, to track a symbol's GOT index.  */
 struct mips_got_entry
 {
   /* The input bfd in which the symbol is defined.  */
@@ -246,6 +278,12 @@ struct mips_elf_link_hash_entry
      the initial global GOT entry to a local GOT entry.  */
   bfd_boolean forced_local;
 
+  /* Are we referenced by some kind of relocation?  */
+  bfd_boolean is_relocation_target;
+
+  /* Are we referenced by branch relocations?  */
+  bfd_boolean is_branch_target;
+
 #define GOT_NORMAL     0
 #define GOT_TLS_GD     1
 #define GOT_TLS_LDM    2
@@ -283,6 +321,22 @@ struct mips_elf_link_hash_table
   bfd_vma rld_value;
   /* This is set if we see any mips16 stub sections.  */
   bfd_boolean mips16_stubs_seen;
+  /* True if we're generating code for VxWorks.  */
+  bfd_boolean is_vxworks;
+  /* Shortcuts to some dynamic sections, or NULL if they are not
+     being used.  */
+  asection *srelbss;
+  asection *sdynbss;
+  asection *srelplt;
+  asection *srelplt2;
+  asection *sgotplt;
+  asection *splt;
+  /* The size of the PLT header in bytes (VxWorks only).  */
+  bfd_vma plt_header_size;
+  /* The size of a PLT entry in bytes (VxWorks only).  */
+  bfd_vma plt_entry_size;
+  /* The size of a function stub entry in bytes.  */
+  bfd_vma function_stub_size;
 };
 
 #define TLS_RELOC_P(r_type) \
@@ -433,8 +487,8 @@ typedef struct runtime_pdr {
 #define rpdNil ((pRPDR) 0)
 \f
 static struct mips_got_entry *mips_elf_create_local_got_entry
-  (bfd *, bfd *, struct mips_got_info *, asection *, bfd_vma, unsigned long,
-   struct mips_elf_link_hash_entry *, int);
+  (bfd *, struct bfd_link_info *, bfd *, struct mips_got_info *, asection *,
+   asection *, bfd_vma, unsigned long, struct mips_elf_link_hash_entry *, int);
 static bfd_boolean mips_elf_sort_hash_table_f
   (struct mips_elf_link_hash_entry *, void *);
 static bfd_vma mips_elf_high
@@ -483,6 +537,11 @@ static bfd *reldyn_sorting_bfd;
 #define MIPS_ELF_OPTIONS_SECTION_NAME_P(NAME) \
   (strcmp (NAME, ".MIPS.options") == 0 || strcmp (NAME, ".options") == 0)
 
+/* Whether the section is readonly.  */
+#define MIPS_ELF_READONLY_SECTION(sec) \
+  ((sec->flags & (SEC_ALLOC | SEC_LOAD | SEC_READONLY))                \
+   == (SEC_ALLOC | SEC_LOAD | SEC_READONLY))
+
 /* The name of the stub section.  */
 #define MIPS_ELF_STUB_SECTION_NAME(abfd) ".MIPS.stubs"
 
@@ -490,6 +549,10 @@ static bfd *reldyn_sorting_bfd;
 #define MIPS_ELF_REL_SIZE(abfd) \
   (get_elf_backend_data (abfd)->s->sizeof_rel)
 
+/* The size of an external RELA relocation.  */
+#define MIPS_ELF_RELA_SIZE(abfd) \
+  (get_elf_backend_data (abfd)->s->sizeof_rela)
+
 /* The size of an external dynamic table entry.  */
 #define MIPS_ELF_DYN_SIZE(abfd) \
   (get_elf_backend_data (abfd)->s->sizeof_dyn)
@@ -540,36 +603,47 @@ static bfd *reldyn_sorting_bfd;
        == (ABI_64_P (abfd) ? sizeof (Elf64_External_Rela)              \
           : sizeof (Elf32_External_Rela))))
 
+/* The name of the dynamic relocation section.  */
+#define MIPS_ELF_REL_DYN_NAME(INFO) \
+  (mips_elf_hash_table (INFO)->is_vxworks ? ".rela.dyn" : ".rel.dyn")
+
 /* In case we're on a 32-bit machine, construct a 64-bit "-1" value
    from smaller values.  Start with zero, widen, *then* decrement.  */
 #define MINUS_ONE      (((bfd_vma)0) - 1)
 #define MINUS_TWO      (((bfd_vma)0) - 2)
 
 /* The number of local .got entries we reserve.  */
-#define MIPS_RESERVED_GOTNO (2)
+#define MIPS_RESERVED_GOTNO(INFO) \
+  (mips_elf_hash_table (INFO)->is_vxworks ? 3 : 2)
 
 /* The offset of $gp from the beginning of the .got section.  */
-#define ELF_MIPS_GP_OFFSET(abfd) (0x7ff0)
+#define ELF_MIPS_GP_OFFSET(INFO) \
+  (mips_elf_hash_table (INFO)->is_vxworks ? 0x0 : 0x7ff0)
 
 /* The maximum size of the GOT for it to be addressable using 16-bit
    offsets from $gp.  */
-#define MIPS_ELF_GOT_MAX_SIZE(abfd) (ELF_MIPS_GP_OFFSET(abfd) + 0x7fff)
+#define MIPS_ELF_GOT_MAX_SIZE(INFO) (ELF_MIPS_GP_OFFSET (INFO) + 0x7fff)
 
 /* Instructions which appear in a stub.  */
-#define STUB_LW(abfd)                                          \
-  ((ABI_64_P (abfd)                                            \
-    ? 0xdf998010               /* ld t9,0x8010(gp) */          \
-    : 0x8f998010))              /* lw t9,0x8010(gp) */
-#define STUB_MOVE(abfd)                                         \
-   ((ABI_64_P (abfd)                                           \
-     ? 0x03e0782d              /* daddu t7,ra */               \
-     : 0x03e07821))            /* addu t7,ra */
-#define STUB_JALR 0x0320f809   /* jalr t9,ra */
-#define STUB_LI16(abfd)                                         \
-  ((ABI_64_P (abfd)                                            \
-   ? 0x64180000                        /* daddiu t8,zero,0 */          \
-   : 0x24180000))              /* addiu t8,zero,0 */
-#define MIPS_FUNCTION_STUB_SIZE (16)
+#define STUB_LW(abfd)                                                  \
+  ((ABI_64_P (abfd)                                                    \
+    ? 0xdf998010                               /* ld t9,0x8010(gp) */  \
+    : 0x8f998010))                             /* lw t9,0x8010(gp) */
+#define STUB_MOVE(abfd)                                                        \
+   ((ABI_64_P (abfd)                                                   \
+     ? 0x03e0782d                              /* daddu t7,ra */       \
+     : 0x03e07821))                            /* addu t7,ra */
+#define STUB_LUI(VAL) (0x3c180000 + (VAL))     /* lui t8,VAL */
+#define STUB_JALR 0x0320f809                   /* jalr t9,ra */
+#define STUB_ORI(VAL) (0x37180000 + (VAL))     /* ori t8,t8,VAL */
+#define STUB_LI16U(VAL) (0x34180000 + (VAL))   /* ori t8,zero,VAL unsigned */
+#define STUB_LI16S(abfd, VAL)                                          \
+   ((ABI_64_P (abfd)                                                   \
+    ? (0x64180000 + (VAL))     /* daddiu t8,zero,VAL sign extended */  \
+    : (0x24180000 + (VAL))))   /* addiu t8,zero,VAL sign extended */
+
+#define MIPS_FUNCTION_STUB_NORMAL_SIZE 16
+#define MIPS_FUNCTION_STUB_BIG_SIZE 20
 
 /* The name of the dynamic interpreter.  This is put in the .interp
    section.  */
@@ -636,6 +710,44 @@ static bfd *reldyn_sorting_bfd;
 #define CALL_STUB ".mips16.call."
 #define CALL_FP_STUB ".mips16.call.fp."
 \f
+/* The format of the first PLT entry in a VxWorks executable.  */
+static const bfd_vma mips_vxworks_exec_plt0_entry[] = {
+  0x3c190000,  /* lui t9, %hi(_GLOBAL_OFFSET_TABLE_)           */
+  0x27390000,  /* addiu t9, t9, %lo(_GLOBAL_OFFSET_TABLE_)     */
+  0x8f390008,  /* lw t9, 8(t9)                                 */
+  0x00000000,  /* nop                                          */
+  0x03200008,  /* jr t9                                        */
+  0x00000000   /* nop                                          */
+};
+
+/* The format of subsequent PLT entries.  */
+static const bfd_vma mips_vxworks_exec_plt_entry[] = {
+  0x10000000,  /* b .PLT_resolver                      */
+  0x24180000,  /* li t8, <pltindex>                    */
+  0x3c190000,  /* lui t9, %hi(<.got.plt slot>)         */
+  0x27390000,  /* addiu t9, t9, %lo(<.got.plt slot>)   */
+  0x8f390000,  /* lw t9, 0(t9)                         */
+  0x00000000,  /* nop                                  */
+  0x03200008,  /* jr t9                                */
+  0x00000000   /* nop                                  */
+};
+
+/* The format of the first PLT entry in a VxWorks shared object.  */
+static const bfd_vma mips_vxworks_shared_plt0_entry[] = {
+  0x8f990008,  /* lw t9, 8(gp)         */
+  0x00000000,  /* nop                  */
+  0x03200008,  /* jr t9                */
+  0x00000000,  /* nop                  */
+  0x00000000,  /* nop                  */
+  0x00000000   /* nop                  */
+};
+
+/* The format of subsequent PLT entries.  */
+static const bfd_vma mips_vxworks_shared_plt_entry[] = {
+  0x10000000,  /* b .PLT_resolver      */
+  0x24180000   /* li t8, <pltindex>    */
+};
+\f
 /* Look up an entry in a MIPS ELF linker hash table.  */
 
 #define mips_elf_link_hash_lookup(table, string, create, copy, follow) \
@@ -715,6 +827,8 @@ mips_elf_link_hash_newfunc (struct bfd_hash_entry *entry,
       ret->call_stub = NULL;
       ret->call_fp_stub = NULL;
       ret->forced_local = FALSE;
+      ret->is_branch_target = FALSE;
+      ret->is_relocation_target = FALSE;
       ret->tls_type = GOT_NORMAL;
     }
 
@@ -1896,14 +2010,19 @@ mips_elf_multi_got_entry_eq (const void *entry1, const void *entry2)
        : e1->d.h == e2->d.h);
 }
 \f
-/* Returns the dynamic relocation section for DYNOBJ.  */
+/* Return the dynamic relocation section.  If it doesn't exist, try to
+   create a new it if CREATE_P, otherwise return NULL.  Also return NULL
+   if creation fails.  */
 
 static asection *
-mips_elf_rel_dyn_section (bfd *dynobj, bfd_boolean create_p)
+mips_elf_rel_dyn_section (struct bfd_link_info *info, bfd_boolean create_p)
 {
-  static const char dname[] = ".rel.dyn";
+  const char *dname;
   asection *sreloc;
+  bfd *dynobj;
 
+  dname = MIPS_ELF_REL_DYN_NAME (info);
+  dynobj = elf_hash_table (info)->dynobj;
   sreloc = bfd_get_section_by_name (dynobj, dname);
   if (sreloc == NULL && create_p)
     {
@@ -2121,7 +2240,7 @@ mips_elf_initialize_tls_slots (bfd *abfd, bfd_vma got_offset,
              || h->root.root.type == bfd_link_hash_undefweak);
 
   /* Emit necessary relocations.  */
-  sreloc = mips_elf_rel_dyn_section (dynobj, FALSE);
+  sreloc = mips_elf_rel_dyn_section (info, FALSE);
 
   /* General Dynamic.  */
   if (*tls_type_p & GOT_TLS_GD)
@@ -2240,14 +2359,46 @@ mips_tls_got_index (bfd *abfd, bfd_vma got_index, unsigned char *tls_type,
   return got_index;
 }
 
-/* Returns the GOT offset at which the indicated address can be found.
-   If there is not yet a GOT entry for this value, create one.  If
-   R_SYMNDX refers to a TLS symbol, create a TLS GOT entry instead.
-   Returns -1 if no satisfactory GOT offset can be found.  */
+/* Return the offset from _GLOBAL_OFFSET_TABLE_ of the .got.plt entry
+   for global symbol H.  .got.plt comes before the GOT, so the offset
+   will be negative.  */
+
+static bfd_vma
+mips_elf_gotplt_index (struct bfd_link_info *info,
+                      struct elf_link_hash_entry *h)
+{
+  bfd_vma plt_index, got_address, got_value;
+  struct mips_elf_link_hash_table *htab;
+
+  htab = mips_elf_hash_table (info);
+  BFD_ASSERT (h->plt.offset != (bfd_vma) -1);
+
+  /* Calculate the index of the symbol's PLT entry.  */
+  plt_index = (h->plt.offset - htab->plt_header_size) / htab->plt_entry_size;
+
+  /* Calculate the address of the associated .got.plt entry.  */
+  got_address = (htab->sgotplt->output_section->vma
+                + htab->sgotplt->output_offset
+                + plt_index * 4);
+
+  /* Calculate the value of _GLOBAL_OFFSET_TABLE_.  */
+  got_value = (htab->root.hgot->root.u.def.section->output_section->vma
+              + htab->root.hgot->root.u.def.section->output_offset
+              + htab->root.hgot->root.u.def.value);
+
+  return got_address - got_value;
+}
+
+/* Return the GOT offset for address VALUE, which was derived from
+   a symbol belonging to INPUT_SECTION.   If there is not yet a GOT
+   entry for this value, create one.  If R_SYMNDX refers to a TLS symbol,
+   create a TLS GOT entry instead.  Return -1 if no satisfactory GOT
+   offset can be found.  */
 
 static bfd_vma
 mips_elf_local_got_index (bfd *abfd, bfd *ibfd, struct bfd_link_info *info,
-                         bfd_vma value, unsigned long r_symndx,
+                         asection *input_section, bfd_vma value,
+                         unsigned long r_symndx,
                          struct mips_elf_link_hash_entry *h, int r_type)
 {
   asection *sgot;
@@ -2256,14 +2407,23 @@ mips_elf_local_got_index (bfd *abfd, bfd *ibfd, struct bfd_link_info *info,
 
   g = mips_elf_got_info (elf_hash_table (info)->dynobj, &sgot);
 
-  entry = mips_elf_create_local_got_entry (abfd, ibfd, g, sgot, value,
+  entry = mips_elf_create_local_got_entry (abfd, info, ibfd, g, sgot,
+                                          input_section, value,
                                           r_symndx, h, r_type);
   if (!entry)
     return MINUS_ONE;
 
   if (TLS_RELOC_P (r_type))
-    return mips_tls_got_index (abfd, entry->gotidx, &entry->tls_type, r_type,
-                              info, h, value);
+    {
+      if (entry->symndx == -1 && g->next == NULL)
+       /* A type (3) entry in the single-GOT case.  We use the symbol's
+          hash table entry to track the index.  */
+       return mips_tls_got_index (abfd, h->tls_got_offset, &h->tls_type,
+                                  r_type, info, h, value);
+      else
+       return mips_tls_got_index (abfd, entry->gotidx, &entry->tls_type,
+                                  r_type, info, h, value);
+    }
   else
     return entry->gotidx;
 }
@@ -2350,26 +2510,27 @@ mips_elf_global_got_index (bfd *abfd, bfd *ibfd, struct elf_link_hash_entry *h,
   return index;
 }
 
-/* Find a GOT entry that is within 32KB of the VALUE.  These entries
-   are supposed to be placed at small offsets in the GOT, i.e.,
-   within 32KB of GP.  Return the index into the GOT for this page,
-   and store the offset from this entry to the desired address in
-   OFFSETP, if it is non-NULL.  */
+/* Find a GOT page entry that points to within 32KB of VALUE, which was
+   calculated from a symbol belonging to INPUT_SECTION.  These entries
+   are supposed to be placed at small offsets in the GOT, i.e., within
+   32KB of GP.  Return the index of the GOT entry, or -1 if no entry
+   could be created.  If OFFSETP is nonnull, use it to return the
+   offset of the GOT entry from VALUE.  */
 
 static bfd_vma
 mips_elf_got_page (bfd *abfd, bfd *ibfd, struct bfd_link_info *info,
-                  bfd_vma value, bfd_vma *offsetp)
+                  asection *input_section, bfd_vma value, bfd_vma *offsetp)
 {
   asection *sgot;
   struct mips_got_info *g;
-  bfd_vma index;
+  bfd_vma page, index;
   struct mips_got_entry *entry;
 
   g = mips_elf_got_info (elf_hash_table (info)->dynobj, &sgot);
 
-  entry = mips_elf_create_local_got_entry (abfd, ibfd, g, sgot,
-                                          (value + 0x8000)
-                                          & (~(bfd_vma)0xffff), 0,
+  page = (value + 0x8000) & ~(bfd_vma) 0xffff;
+  entry = mips_elf_create_local_got_entry (abfd, info, ibfd, g, sgot,
+                                          input_section, page, 0,
                                           NULL, R_MIPS_GOT_PAGE);
 
   if (!entry)
@@ -2383,30 +2544,32 @@ mips_elf_got_page (bfd *abfd, bfd *ibfd, struct bfd_link_info *info,
   return index;
 }
 
-/* Find a GOT entry whose higher-order 16 bits are the same as those
-   for value.  Return the index into the GOT for this entry.  */
+/* Find a local GOT entry for an R_MIPS_GOT16 relocation against VALUE,
+   which was calculated from a symbol belonging to INPUT_SECTION.
+   EXTERNAL is true if the relocation was against a global symbol
+   that has been forced local.  */
 
 static bfd_vma
 mips_elf_got16_entry (bfd *abfd, bfd *ibfd, struct bfd_link_info *info,
-                     bfd_vma value, bfd_boolean external)
+                     asection *input_section, bfd_vma value,
+                     bfd_boolean external)
 {
   asection *sgot;
   struct mips_got_info *g;
   struct mips_got_entry *entry;
 
+  /* GOT16 relocations against local symbols are followed by a LO16
+     relocation; those against global symbols are not.  Thus if the
+     symbol was originally local, the GOT16 relocation should load the
+     equivalent of %hi(VALUE), otherwise it should load VALUE itself.  */
   if (! external)
-    {
-      /* Although the ABI says that it is "the high-order 16 bits" that we
-        want, it is really the %high value.  The complete value is
-        calculated with a `addiu' of a LO16 relocation, just as with a
-        HI16/LO16 pair.  */
-      value = mips_elf_high (value) << 16;
-    }
+    value = mips_elf_high (value) << 16;
 
   g = mips_elf_got_info (elf_hash_table (info)->dynobj, &sgot);
 
-  entry = mips_elf_create_local_got_entry (abfd, ibfd, g, sgot, value, 0, NULL,
-                                          R_MIPS_GOT16);
+  entry = mips_elf_create_local_got_entry (abfd, info, ibfd, g, sgot,
+                                          input_section, value, 0,
+                                          NULL, R_MIPS_GOT16);
   if (entry)
     return entry->gotidx;
   else
@@ -2431,20 +2594,24 @@ mips_elf_got_offset_from_index (bfd *dynobj, bfd *output_bfd,
   return sgot->output_section->vma + sgot->output_offset + index - gp;
 }
 
-/* Create a local GOT entry for VALUE.  Return the index of the entry,
-   or -1 if it could not be created.  If R_SYMNDX refers to a TLS symbol,
-   create a TLS entry instead.  */
+/* Create and return a local GOT entry for VALUE, which was calculated
+   from a symbol belonging to INPUT_SECTON.  Return NULL if it could not
+   be created.  If R_SYMNDX refers to a TLS symbol, create a TLS entry
+   instead.  */
 
 static struct mips_got_entry *
-mips_elf_create_local_got_entry (bfd *abfd, bfd *ibfd,
-                                struct mips_got_info *gg,
-                                asection *sgot, bfd_vma value,
-                                unsigned long r_symndx,
+mips_elf_create_local_got_entry (bfd *abfd, struct bfd_link_info *info,
+                                bfd *ibfd, struct mips_got_info *gg,
+                                asection *sgot, asection *input_section,
+                                bfd_vma value, unsigned long r_symndx,
                                 struct mips_elf_link_hash_entry *h,
                                 int r_type)
 {
   struct mips_got_entry entry, **loc;
   struct mips_got_info *g;
+  struct mips_elf_link_hash_table *htab;
+
+  htab = mips_elf_hash_table (info);
 
   entry.abfd = NULL;
   entry.symndx = -1;
@@ -2517,6 +2684,33 @@ mips_elf_create_local_got_entry (bfd *abfd, bfd *ibfd,
   MIPS_ELF_PUT_WORD (abfd, value,
                     (sgot->contents + entry.gotidx));
 
+  /* These GOT entries need a dynamic relocation on VxWorks.  Because
+     the offset between segments is not fixed, the relocation must be
+     against a symbol in the same segment as the original symbol.
+     The easiest way to do this is to take INPUT_SECTION's output
+     section and emit a relocation against its section symbol.  */
+  if (htab->is_vxworks)
+    {
+      Elf_Internal_Rela outrel;
+      asection *s, *output_section;
+      bfd_byte *loc;
+      bfd_vma got_address;
+      int dynindx;
+
+      s = mips_elf_rel_dyn_section (info, FALSE);
+      output_section = input_section->output_section;
+      dynindx = elf_section_data (output_section)->dynindx;
+      got_address = (sgot->output_section->vma
+                    + sgot->output_offset
+                    + entry.gotidx);
+
+      loc = s->contents + (s->reloc_count++ * sizeof (Elf32_External_Rela));
+      outrel.r_offset = got_address;
+      outrel.r_info = ELF32_R_INFO (dynindx, R_MIPS_32);
+      outrel.r_addend = value - output_section->vma;
+      bfd_elf32_swap_reloca_out (abfd, &outrel, loc);
+    }
+
   return *loc;
 }
 
@@ -2892,7 +3086,7 @@ mips_elf_merge_gots (void **bfd2got_, void *p)
     {
       unsigned int primary_total = lcount + tcount + arg->global_count;
       if (primary_total * MIPS_ELF_GOT_SIZE (bfd2got->bfd)
-          >= MIPS_ELF_GOT_MAX_SIZE (bfd2got->bfd))
+         >= MIPS_ELF_GOT_MAX_SIZE (arg->info))
        too_many_for_tls = TRUE;
     }
 
@@ -2975,55 +3169,54 @@ mips_elf_merge_gots (void **bfd2got_, void *p)
   return 1;
 }
 
-/* Set the TLS GOT index for the GOT entry in ENTRYP.  */
+/* Set the TLS GOT index for the GOT entry in ENTRYP.  ENTRYP's NEXT field
+   is null iff there is just a single GOT.  */
 
 static int
 mips_elf_initialize_tls_index (void **entryp, void *p)
 {
   struct mips_got_entry *entry = (struct mips_got_entry *)*entryp;
   struct mips_got_info *g = p;
+  bfd_vma next_index;
 
   /* We're only interested in TLS symbols.  */
   if (entry->tls_type == 0)
     return 1;
 
-  if (entry->symndx == -1)
+  next_index = MIPS_ELF_GOT_SIZE (entry->abfd) * (long) g->tls_assigned_gotno;
+
+  if (entry->symndx == -1 && g->next == NULL)
     {
-      /* There may be multiple mips_got_entry structs for a global variable
-        if there is just one GOT.  Just do this once.  */
-      if (g->next == NULL)
+      /* A type (3) got entry in the single-GOT case.  We use the symbol's
+        hash table entry to track its index.  */
+      if (entry->d.h->tls_type & GOT_TLS_OFFSET_DONE)
+       return 1;
+      entry->d.h->tls_type |= GOT_TLS_OFFSET_DONE;
+      entry->d.h->tls_got_offset = next_index;
+    }
+  else
+    {
+      if (entry->tls_type & GOT_TLS_LDM)
        {
-         if (entry->d.h->tls_type & GOT_TLS_OFFSET_DONE)
+         /* There are separate mips_got_entry objects for each input bfd
+            that requires an LDM entry.  Make sure that all LDM entries in
+            a GOT resolve to the same index.  */
+         if (g->tls_ldm_offset != MINUS_TWO && g->tls_ldm_offset != MINUS_ONE)
            {
-             entry->gotidx = entry->d.h->tls_got_offset;
+             entry->gotidx = g->tls_ldm_offset;
              return 1;
            }
-         entry->d.h->tls_type |= GOT_TLS_OFFSET_DONE;
+         g->tls_ldm_offset = next_index;
        }
+      entry->gotidx = next_index;
     }
-  else if (entry->tls_type & GOT_TLS_LDM)
-    {
-      /* Similarly, there may be multiple structs for the LDM entry.  */
-      if (g->tls_ldm_offset != MINUS_TWO && g->tls_ldm_offset != MINUS_ONE)
-       {
-         entry->gotidx = g->tls_ldm_offset;
-         return 1;
-       }
-    }
-
-  /* Initialize the GOT offset.  */
-  entry->gotidx = MIPS_ELF_GOT_SIZE (entry->abfd) * (long) g->tls_assigned_gotno;
-  if (g->next == NULL && entry->symndx == -1)
-    entry->d.h->tls_got_offset = entry->gotidx;
 
+  /* Account for the entries we've just allocated.  */
   if (entry->tls_type & (GOT_TLS_GD | GOT_TLS_LDM))
     g->tls_assigned_gotno += 2;
   if (entry->tls_type & GOT_TLS_IE)
     g->tls_assigned_gotno += 1;
 
-  if (entry->tls_type & GOT_TLS_LDM)
-    g->tls_ldm_offset = entry->gotidx;
-
   return 1;
 }
 
@@ -3207,9 +3400,9 @@ mips_elf_multi_got (bfd *abfd, struct bfd_link_info *info,
   /* Taking out PAGES entries is a worst-case estimate.  We could
      compute the maximum number of pages that each separate input bfd
      uses, but it's probably not worth it.  */
-  got_per_bfd_arg.max_count = ((MIPS_ELF_GOT_MAX_SIZE (abfd)
+  got_per_bfd_arg.max_count = ((MIPS_ELF_GOT_MAX_SIZE (info)
                                / MIPS_ELF_GOT_SIZE (abfd))
-                              - MIPS_RESERVED_GOTNO - pages);
+                              - MIPS_RESERVED_GOTNO (info) - pages);
   /* The number of globals that will be included in the primary GOT.
      See the calls to mips_elf_set_global_got_offset below for more
      information.  */
@@ -3344,21 +3537,24 @@ mips_elf_multi_got (bfd *abfd, struct bfd_link_info *info,
     {
       struct mips_got_info *gn;
 
-      assign += MIPS_RESERVED_GOTNO;
+      assign += MIPS_RESERVED_GOTNO (info);
       g->assigned_gotno = assign;
       g->local_gotno += assign + pages;
       assign = g->local_gotno + g->global_gotno + g->tls_gotno;
 
+      /* Take g out of the direct list, and push it onto the reversed
+        list that gg points to.  g->next is guaranteed to be nonnull after
+        this operation, as required by mips_elf_initialize_tls_index. */
+      gn = g->next;
+      g->next = gg->next;
+      gg->next = g;
+
       /* Set up any TLS entries.  We always place the TLS entries after
         all non-TLS entries.  */
       g->tls_assigned_gotno = g->local_gotno + g->global_gotno;
       htab_traverse (g->got_entries, mips_elf_initialize_tls_index, g);
 
-      /* Take g out of the direct list, and push it onto the reversed
-        list that gg points to.  */
-      gn = g->next;
-      g->next = gg->next;
-      gg->next = g;
+      /* Move onto the next GOT.  It will be a secondary GOT if nonull.  */
       g = gn;
 
       /* Mark global symbols in every non-primary GOT as ineligible for
@@ -3540,6 +3736,9 @@ mips_elf_create_got_section (bfd *abfd, struct bfd_link_info *info,
   struct bfd_link_hash_entry *bh;
   struct mips_got_info *g;
   bfd_size_type amt;
+  struct mips_elf_link_hash_table *htab;
+
+  htab = mips_elf_hash_table (info);
 
   /* This function may be called more than once.  */
   s = mips_elf_got_section (abfd, TRUE);
@@ -3589,8 +3788,8 @@ mips_elf_create_got_section (bfd *abfd, struct bfd_link_info *info,
   g->global_gotsym = NULL;
   g->global_gotno = 0;
   g->tls_gotno = 0;
-  g->local_gotno = MIPS_RESERVED_GOTNO;
-  g->assigned_gotno = MIPS_RESERVED_GOTNO;
+  g->local_gotno = MIPS_RESERVED_GOTNO (info);
+  g->assigned_gotno = MIPS_RESERVED_GOTNO (info);
   g->bfd2got = NULL;
   g->next = NULL;
   g->tls_ldm_offset = MINUS_ONE;
@@ -3602,9 +3801,33 @@ mips_elf_create_got_section (bfd *abfd, struct bfd_link_info *info,
   mips_elf_section_data (s)->elf.this_hdr.sh_flags
     |= SHF_ALLOC | SHF_WRITE | SHF_MIPS_GPREL;
 
+  /* VxWorks also needs a .got.plt section.  */
+  if (htab->is_vxworks)
+    {
+      s = bfd_make_section_with_flags (abfd, ".got.plt",
+                                      SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS
+                                      | SEC_IN_MEMORY | SEC_LINKER_CREATED);
+      if (s == NULL || !bfd_set_section_alignment (abfd, s, 4))
+       return FALSE;
+
+      htab->sgotplt = s;
+    }
   return TRUE;
 }
 \f
+/* Return true if H refers to the special VxWorks __GOTT_BASE__ or
+   __GOTT_INDEX__ symbols.  These symbols are only special for
+   shared objects; they are not used in executables.  */
+
+static bfd_boolean
+is_gott_symbol (struct bfd_link_info *info, struct elf_link_hash_entry *h)
+{
+  return (mips_elf_hash_table (info)->is_vxworks
+         && info->shared
+         && (strcmp (h->root.root.string, "__GOTT_BASE__") == 0
+             || strcmp (h->root.root.string, "__GOTT_INDEX__") == 0));
+}
+\f
 /* Calculate the value produced by the RELOCATION (which comes from
    the INPUT_BFD).  The ADDEND is the addend to use for this
    RELOCATION; RELOCATION->R_ADDEND is ignored.
@@ -3667,6 +3890,11 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
   bfd_boolean overflowed_p;
   /* TRUE if this relocation refers to a MIPS16 function.  */
   bfd_boolean target_is_16_bit_code_p = FALSE;
+  struct mips_elf_link_hash_table *htab;
+  bfd *dynobj;
+
+  dynobj = elf_hash_table (info)->dynobj;
+  htab = mips_elf_hash_table (info);
 
   /* Parse the relocation.  */
   r_symndx = ELF_R_SYM (input_bfd, relocation->r_info);
@@ -3916,52 +4144,61 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
       /* Find the index into the GOT where this value is located.  */
       if (r_type == R_MIPS_TLS_LDM)
        {
-         g = mips_elf_local_got_index (abfd, input_bfd, info, 0, 0, NULL,
-                                       r_type);
+         g = mips_elf_local_got_index (abfd, input_bfd, info,
+                                       sec, 0, 0, NULL, r_type);
          if (g == MINUS_ONE)
            return bfd_reloc_outofrange;
        }
       else if (!local_p)
        {
-         /* GOT_PAGE may take a non-zero addend, that is ignored in a
-            GOT_PAGE relocation that decays to GOT_DISP because the
-            symbol turns out to be global.  The addend is then added
-            as GOT_OFST.  */
-         BFD_ASSERT (addend == 0 || r_type == R_MIPS_GOT_PAGE);
-         g = mips_elf_global_got_index (elf_hash_table (info)->dynobj,
-                                        input_bfd,
-                                        (struct elf_link_hash_entry *) h,
-                                        r_type, info);
-         if (h->tls_type == GOT_NORMAL
-             && (! elf_hash_table(info)->dynamic_sections_created
-                 || (info->shared
-                     && (info->symbolic || h->root.forced_local)
-                     && h->root.def_regular)))
+         /* On VxWorks, CALL relocations should refer to the .got.plt
+            entry, which is initialized to point at the PLT stub.  */
+         if (htab->is_vxworks
+             && (r_type == R_MIPS_CALL_HI16
+                 || r_type == R_MIPS_CALL_LO16
+                 || r_type == R_MIPS_CALL16))
            {
-             /* This is a static link or a -Bsymbolic link.  The
-                symbol is defined locally, or was forced to be local.
-                We must initialize this entry in the GOT.  */
-             bfd *tmpbfd = elf_hash_table (info)->dynobj;
-             asection *sgot = mips_elf_got_section (tmpbfd, FALSE);
-             MIPS_ELF_PUT_WORD (tmpbfd, symbol, sgot->contents + g);
+             BFD_ASSERT (addend == 0);
+             BFD_ASSERT (h->root.needs_plt);
+             g = mips_elf_gotplt_index (info, &h->root);
+           }
+         else
+           {
+             /* GOT_PAGE may take a non-zero addend, that is ignored in a
+                GOT_PAGE relocation that decays to GOT_DISP because the
+                symbol turns out to be global.  The addend is then added
+                as GOT_OFST.  */
+             BFD_ASSERT (addend == 0 || r_type == R_MIPS_GOT_PAGE);
+             g = mips_elf_global_got_index (dynobj, input_bfd,
+                                            &h->root, r_type, info);
+             if (h->tls_type == GOT_NORMAL
+                 && (! elf_hash_table(info)->dynamic_sections_created
+                     || (info->shared
+                         && (info->symbolic || h->root.forced_local)
+                         && h->root.def_regular)))
+               {
+                 /* This is a static link or a -Bsymbolic link.  The
+                    symbol is defined locally, or was forced to be local.
+                    We must initialize this entry in the GOT.  */
+                 asection *sgot = mips_elf_got_section (dynobj, FALSE);
+                 MIPS_ELF_PUT_WORD (dynobj, symbol, sgot->contents + g);
+               }
            }
        }
-      else if (r_type == R_MIPS_GOT16 || r_type == R_MIPS_CALL16)
-       /* There's no need to create a local GOT entry here; the
-          calculation for a local GOT16 entry does not involve G.  */
+      else if (!htab->is_vxworks
+              && (r_type == R_MIPS_CALL16 || (r_type == R_MIPS_GOT16)))
+       /* The calculation below does not involve "g".  */
        break;
       else
        {
-         g = mips_elf_local_got_index (abfd, input_bfd,
-                                       info, symbol + addend, r_symndx, h,
-                                       r_type);
+         g = mips_elf_local_got_index (abfd, input_bfd, info, sec,
+                                       symbol + addend, r_symndx, h, r_type);
          if (g == MINUS_ONE)
            return bfd_reloc_outofrange;
        }
 
       /* Convert GOT indices to actual offsets.  */
-      g = mips_elf_got_offset_from_index (elf_hash_table (info)->dynobj,
-                                         abfd, input_bfd, g);
+      g = mips_elf_got_offset_from_index (dynobj, abfd, input_bfd, g);
       break;
 
     case R_MIPS_HI16:
@@ -3974,10 +4211,8 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
     case R_MIPS16_GPREL:
       gp0 = _bfd_get_gp_value (input_bfd);
       gp = _bfd_get_gp_value (abfd);
-      if (elf_hash_table (info)->dynobj)
-       gp += mips_elf_adjust_gp (abfd,
-                                 mips_elf_got_info
-                                 (elf_hash_table (info)->dynobj, NULL),
+      if (dynobj)
+       gp += mips_elf_adjust_gp (abfd, mips_elf_got_info (dynobj, NULL),
                                  input_bfd);
       break;
 
@@ -3988,6 +4223,27 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
   if (gnu_local_gp_p)
     symbol = gp;
 
+  /* Relocations against the VxWorks __GOTT_BASE__ and __GOTT_INDEX__
+     symbols are resolved by the loader.  Add them to .rela.dyn.  */
+  if (h != NULL && is_gott_symbol (info, &h->root))
+    {
+      Elf_Internal_Rela outrel;
+      bfd_byte *loc;
+      asection *s;
+
+      s = mips_elf_rel_dyn_section (info, FALSE);
+      loc = s->contents + s->reloc_count++ * sizeof (Elf32_External_Rela);
+
+      outrel.r_offset = (input_section->output_section->vma
+                        + input_section->output_offset
+                        + relocation->r_offset);
+      outrel.r_info = ELF32_R_INFO (h->root.dynindx, r_type);
+      outrel.r_addend = addend;
+      bfd_elf32_swap_reloca_out (abfd, &outrel, loc);
+      *valuep = 0;
+      return bfd_reloc_ok;
+    }
+
   /* Figure out what kind of relocation is being performed.  */
   switch (r_type)
     {
@@ -4003,7 +4259,8 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
     case R_MIPS_REL32:
     case R_MIPS_64:
       if ((info->shared
-          || (elf_hash_table (info)->dynamic_sections_created
+          || (!htab->is_vxworks
+              && htab->root.dynamic_sections_created
               && h != NULL
               && h->root.def_dynamic
               && !h->root.def_regular))
@@ -4014,7 +4271,11 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
             against a symbol in a shared library, then we can't know
             where the symbol will end up.  So, we create a relocation
             record in the output, and leave the job up to the dynamic
-            linker.  */
+            linker.
+
+            In VxWorks executables, references to external symbols
+            are handled using copy relocs or PLT stubs, so there's
+            no need to add a dynamic relocation here.  */
          value = addend;
          if (!mips_elf_create_dynamic_relocation (abfd,
                                                   info,
@@ -4166,22 +4427,20 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
 
     case R_MIPS_GOT16:
     case R_MIPS_CALL16:
-      if (local_p)
+      /* VxWorks does not have separate local and global semantics for
+        R_MIPS_GOT16; every relocation evaluates to "G".  */
+      if (!htab->is_vxworks && local_p)
        {
          bfd_boolean forced;
 
-         /* The special case is when the symbol is forced to be local.  We
-            need the full address in the GOT since no R_MIPS_LO16 relocation
-            follows.  */
          forced = ! mips_elf_local_relocation_p (input_bfd, relocation,
                                                  local_sections, FALSE);
-         value = mips_elf_got16_entry (abfd, input_bfd, info,
+         value = mips_elf_got16_entry (abfd, input_bfd, info, sec,
                                        symbol + addend, forced);
          if (value == MINUS_ONE)
            return bfd_reloc_outofrange;
          value
-           = mips_elf_got_offset_from_index (elf_hash_table (info)->dynobj,
-                                             abfd, input_bfd, value);
+           = mips_elf_got_offset_from_index (dynobj, abfd, input_bfd, value);
          overflowed_p = mips_elf_overflow_p (value, 16);
          break;
        }
@@ -4231,17 +4490,18 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
         0.  */
       if (! local_p)
        goto got_disp;
-      value = mips_elf_got_page (abfd, input_bfd, info, symbol + addend, NULL);
+      value = mips_elf_got_page (abfd, input_bfd, info, sec,
+                                symbol + addend, NULL);
       if (value == MINUS_ONE)
        return bfd_reloc_outofrange;
-      value = mips_elf_got_offset_from_index (elf_hash_table (info)->dynobj,
-                                             abfd, input_bfd, value);
+      value = mips_elf_got_offset_from_index (dynobj, abfd, input_bfd, value);
       overflowed_p = mips_elf_overflow_p (value, 16);
       break;
 
     case R_MIPS_GOT_OFST:
       if (local_p)
-       mips_elf_got_page (abfd, input_bfd, info, symbol + addend, &value);
+       mips_elf_got_page (abfd, input_bfd, info, sec,
+                          symbol + addend, &value);
       else
        value = addend;
       overflowed_p = mips_elf_overflow_p (value, 16);
@@ -4426,23 +4686,31 @@ mips_elf_stub_section_p (bfd *abfd ATTRIBUTE_UNUSED, asection *section)
          || strncmp (name, CALL_FP_STUB, sizeof CALL_FP_STUB - 1) == 0);
 }
 \f
-/* Add room for N relocations to the .rel.dyn section in ABFD.  */
+/* Add room for N relocations to the .rel(a).dyn section in ABFD.  */
 
 static void
-mips_elf_allocate_dynamic_relocations (bfd *abfd, unsigned int n)
+mips_elf_allocate_dynamic_relocations (bfd *abfd, struct bfd_link_info *info,
+                                      unsigned int n)
 {
   asection *s;
+  struct mips_elf_link_hash_table *htab;
 
-  s = mips_elf_rel_dyn_section (abfd, FALSE);
+  htab = mips_elf_hash_table (info);
+  s = mips_elf_rel_dyn_section (info, FALSE);
   BFD_ASSERT (s != NULL);
 
-  if (s->size == 0)
+  if (htab->is_vxworks)
+    s->size += n * MIPS_ELF_RELA_SIZE (abfd);
+  else
     {
-      /* Make room for a null element.  */
-      s->size += MIPS_ELF_REL_SIZE (abfd);
-      ++s->reloc_count;
+      if (s->size == 0)
+       {
+         /* Make room for a null element.  */
+         s->size += MIPS_ELF_REL_SIZE (abfd);
+         ++s->reloc_count;
+       }
+      s->size += n * MIPS_ELF_REL_SIZE (abfd);
     }
-  s->size += n * MIPS_ELF_REL_SIZE (abfd);
 }
 
 /* Create a rel.dyn relocation for the dynamic linker to resolve.  REL
@@ -4464,10 +4732,12 @@ mips_elf_create_dynamic_relocation (bfd *output_bfd,
   int r_type;
   long indx;
   bfd_boolean defined_p;
+  struct mips_elf_link_hash_table *htab;
 
+  htab = mips_elf_hash_table (info);
   r_type = ELF_R_TYPE (output_bfd, rel->r_info);
   dynobj = elf_hash_table (info)->dynobj;
-  sreloc = mips_elf_rel_dyn_section (dynobj, FALSE);
+  sreloc = mips_elf_rel_dyn_section (info, FALSE);
   BFD_ASSERT (sreloc != NULL);
   BFD_ASSERT (sreloc->contents != NULL);
   BFD_ASSERT (sreloc->reloc_count * MIPS_ELF_REL_SIZE (output_bfd)
@@ -4552,10 +4822,15 @@ mips_elf_create_dynamic_relocation (bfd *output_bfd,
   if (defined_p && r_type != R_MIPS_REL32)
     *addendp += symbol;
 
-  /* The relocation is always an REL32 relocation because we don't
-     know where the shared library will wind up at load-time.  */
-  outrel[0].r_info = ELF_R_INFO (output_bfd, (unsigned long) indx,
-                                R_MIPS_REL32);
+  if (htab->is_vxworks)
+    /* VxWorks uses non-relative relocations for this.  */
+    outrel[0].r_info = ELF32_R_INFO (indx, R_MIPS_32);
+  else
+    /* The relocation is always an REL32 relocation because we don't
+       know where the shared library will wind up at load-time.  */
+    outrel[0].r_info = ELF_R_INFO (output_bfd, (unsigned long) indx,
+                                  R_MIPS_REL32);
+
   /* For strict adherence to the ABI specification, we should
      generate a R_MIPS_64 relocation record by itself before the
      _REL32/_64 record as well, such that the addend is read in as
@@ -4593,6 +4868,15 @@ mips_elf_create_dynamic_relocation (bfd *output_bfd,
         (sreloc->contents
          + sreloc->reloc_count * sizeof (Elf64_Mips_External_Rel)));
     }
+  else if (htab->is_vxworks)
+    {
+      /* VxWorks uses RELA rather than REL dynamic relocations.  */
+      outrel[0].r_addend = *addendp;
+      bfd_elf32_swap_reloca_out
+       (output_bfd, &outrel[0],
+        (sreloc->contents
+         + sreloc->reloc_count * sizeof (Elf32_External_Rela)));
+    }
   else
     bfd_elf32_swap_reloc_out
       (output_bfd, &outrel[0],
@@ -4637,6 +4921,12 @@ mips_elf_create_dynamic_relocation (bfd *output_bfd,
        }
     }
 
+  /* If we've written this relocation for a readonly section,
+     we need to set DF_TEXTREL again, so that we do not delete the
+     DT_TEXTREL tag.  */
+  if (MIPS_ELF_READONLY_SECTION (input_section))
+    info->flags |= DF_TEXTREL;
+
   return TRUE;
 }
 \f
@@ -5609,23 +5899,29 @@ _bfd_mips_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
   flagword flags;
   register asection *s;
   const char * const *namep;
+  struct mips_elf_link_hash_table *htab;
 
+  htab = mips_elf_hash_table (info);
   flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY
           | SEC_LINKER_CREATED | SEC_READONLY);
 
-  /* Mips ABI requests the .dynamic section to be read only.  */
-  s = bfd_get_section_by_name (abfd, ".dynamic");
-  if (s != NULL)
+  /* The psABI requires a read-only .dynamic section, but the VxWorks
+     EABI doesn't.  */
+  if (!htab->is_vxworks)
     {
-      if (! bfd_set_section_flags (abfd, s, flags))
-       return FALSE;
+      s = bfd_get_section_by_name (abfd, ".dynamic");
+      if (s != NULL)
+       {
+         if (! bfd_set_section_flags (abfd, s, flags))
+           return FALSE;
+       }
     }
 
   /* We need to create .got section.  */
   if (! mips_elf_create_got_section (abfd, info, FALSE))
     return FALSE;
 
-  if (! mips_elf_rel_dyn_section (elf_hash_table (info)->dynobj, TRUE))
+  if (! mips_elf_rel_dyn_section (info, TRUE))
     return FALSE;
 
   /* Create .stub section.  */
@@ -5746,6 +6042,45 @@ _bfd_mips_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
        }
     }
 
+  if (htab->is_vxworks)
+    {
+      /* Create the .plt, .rela.plt, .dynbss and .rela.bss sections.
+        Also create the _PROCEDURE_LINKAGE_TABLE symbol.  */
+      if (!_bfd_elf_create_dynamic_sections (abfd, info))
+       return FALSE;
+
+      /* Cache the sections created above.  */
+      htab->sdynbss = bfd_get_section_by_name (abfd, ".dynbss");
+      htab->srelbss = bfd_get_section_by_name (abfd, ".rela.bss");
+      htab->srelplt = bfd_get_section_by_name (abfd, ".rela.plt");
+      htab->splt = bfd_get_section_by_name (abfd, ".plt");
+      if (!htab->sdynbss
+         || (!htab->srelbss && !info->shared)
+         || !htab->srelplt
+         || !htab->splt)
+       abort ();
+
+      /* Do the usual VxWorks handling.  */
+      if (!elf_vxworks_create_dynamic_sections (abfd, info, &htab->srelplt2))
+       return FALSE;
+
+      /* Work out the PLT sizes.  */
+      if (info->shared)
+       {
+         htab->plt_header_size
+           = 4 * ARRAY_SIZE (mips_vxworks_shared_plt0_entry);
+         htab->plt_entry_size
+           = 4 * ARRAY_SIZE (mips_vxworks_shared_plt_entry);
+       }
+      else
+       {
+         htab->plt_header_size
+           = 4 * ARRAY_SIZE (mips_vxworks_exec_plt0_entry);
+         htab->plt_entry_size
+           = 4 * ARRAY_SIZE (mips_vxworks_exec_plt_entry);
+       }
+    }
+
   return TRUE;
 }
 \f
@@ -5767,10 +6102,12 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
   asection *sgot;
   asection *sreloc;
   const struct elf_backend_data *bed;
+  struct mips_elf_link_hash_table *htab;
 
   if (info->relocatable)
     return TRUE;
 
+  htab = mips_elf_hash_table (info);
   dynobj = elf_hash_table (info)->dynobj;
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
@@ -6012,13 +6349,24 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
              if (! mips_elf_create_got_section (dynobj, info, FALSE))
                return FALSE;
              g = mips_elf_got_info (dynobj, &sgot);
+             if (htab->is_vxworks && !info->shared)
+               {
+                 (*_bfd_error_handler)
+                   (_("%B: GOT reloc at 0x%lx not expected in executables"),
+                    abfd, (unsigned long) rel->r_offset);
+                 bfd_set_error (bfd_error_bad_value);
+                 return FALSE;
+               }
              break;
 
            case R_MIPS_32:
            case R_MIPS_REL32:
            case R_MIPS_64:
+             /* In VxWorks executables, references to external symbols
+                are handled using copy relocs or PLT stubs, so there's
+                no need to add a dynamic relocation here.  */
              if (dynobj == NULL
-                 && (info->shared || h != NULL)
+                 && (info->shared || (h != NULL && !htab->is_vxworks))
                  && (sec->flags & SEC_ALLOC) != 0)
                elf_hash_table (info)->dynobj = dynobj = abfd;
              break;
@@ -6028,15 +6376,35 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
            }
        }
 
-      if (!h && (r_type == R_MIPS_CALL_LO16
-                || r_type == R_MIPS_GOT_LO16
-                || r_type == R_MIPS_GOT_DISP))
+      if (h)
+       {
+         ((struct mips_elf_link_hash_entry *) h)->is_relocation_target = TRUE;
+
+         /* Relocations against the special VxWorks __GOTT_BASE__ and
+            __GOTT_INDEX__ symbols must be left to the loader.  Allocate
+            room for them in .rela.dyn.  */
+         if (is_gott_symbol (info, h))
+           {
+             if (sreloc == NULL)
+               {
+                 sreloc = mips_elf_rel_dyn_section (info, TRUE);
+                 if (sreloc == NULL)
+                   return FALSE;
+               }
+             mips_elf_allocate_dynamic_relocations (dynobj, info, 1);
+           }
+       }
+      else if (r_type == R_MIPS_CALL_LO16
+              || r_type == R_MIPS_GOT_LO16
+              || r_type == R_MIPS_GOT_DISP
+              || (r_type == R_MIPS_GOT16 && htab->is_vxworks))
        {
          /* We may need a local GOT entry for this relocation.  We
             don't count R_MIPS_GOT_PAGE because we can estimate the
             maximum number of pages needed by looking at the size of
             the segment.  Similar comments apply to R_MIPS_GOT16 and
-            R_MIPS_CALL16.  We don't count R_MIPS_GOT_HI16, or
+            R_MIPS_CALL16, except on VxWorks, where GOT relocations
+            always evaluate to "G".  We don't count R_MIPS_GOT_HI16, or
             R_MIPS_CALL_HI16 because these are always followed by an
             R_MIPS_GOT_LO16 or R_MIPS_CALL_LO16.  */
          if (! mips_elf_record_local_got_symbol (abfd, r_symndx,
@@ -6061,8 +6429,11 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
        case R_MIPS_CALL_LO16:
          if (h != NULL)
            {
-             /* This symbol requires a global offset table entry.  */
-             if (! mips_elf_record_global_got_symbol (h, abfd, info, g, 0))
+             /* VxWorks call relocations point the function's .got.plt
+                entry, which will be allocated by adjust_dynamic_symbol.
+                Otherwise, this symbol requires a global GOT entry.  */
+             if (!htab->is_vxworks
+                 && !mips_elf_record_global_got_symbol (h, abfd, info, g, 0))
                return FALSE;
 
              /* We need a stub, not a plt entry for the undefined
@@ -6148,25 +6519,25 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
        case R_MIPS_32:
        case R_MIPS_REL32:
        case R_MIPS_64:
-         if ((info->shared || h != NULL)
+         /* In VxWorks executables, references to external symbols
+            are handled using copy relocs or PLT stubs, so there's
+            no need to add a .rela.dyn entry for this relocation.  */
+         if ((info->shared || (h != NULL && !htab->is_vxworks))
              && (sec->flags & SEC_ALLOC) != 0)
            {
              if (sreloc == NULL)
                {
-                 sreloc = mips_elf_rel_dyn_section (dynobj, TRUE);
+                 sreloc = mips_elf_rel_dyn_section (info, TRUE);
                  if (sreloc == NULL)
                    return FALSE;
                }
-#define MIPS_READONLY_SECTION (SEC_ALLOC | SEC_LOAD | SEC_READONLY)
              if (info->shared)
                {
                  /* When creating a shared object, we must copy these
                     reloc types into the output file as R_MIPS_REL32
-                    relocs.  We make room for this reloc in the
-                    .rel.dyn reloc section.  */
-                 mips_elf_allocate_dynamic_relocations (dynobj, 1);
-                 if ((sec->flags & MIPS_READONLY_SECTION)
-                     == MIPS_READONLY_SECTION)
+                    relocs.  Make room for this reloc in .rel(a).dyn.  */
+                 mips_elf_allocate_dynamic_relocations (dynobj, info, 1);
+                 if (MIPS_ELF_READONLY_SECTION (sec))
                    /* We tell the dynamic linker that there are
                       relocations against the text segment.  */
                    info->flags |= DF_TEXTREL;
@@ -6179,8 +6550,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
                      defined in a dynamic object.  */
                  hmips = (struct mips_elf_link_hash_entry *) h;
                  ++hmips->possibly_dynamic_relocs;
-                 if ((sec->flags & MIPS_READONLY_SECTION)
-                     == MIPS_READONLY_SECTION)
+                 if (MIPS_ELF_READONLY_SECTION (sec))
                    /* We need it to tell the dynamic linker if there
                       are relocations against the text segment.  */
                    hmips->readonly_reloc = TRUE;
@@ -6189,8 +6559,10 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
              /* Even though we don't directly need a GOT entry for
                 this symbol, a symbol must have a dynamic symbol
                 table index greater that DT_MIPS_GOTSYM if there are
-                dynamic relocations against it.  */
-             if (h != NULL)
+                dynamic relocations against it.  This does not apply
+                to VxWorks, which does not have the usual coupling
+                between global GOT entries and .dynsym entries.  */
+             if (h != NULL && !htab->is_vxworks)
                {
                  if (dynobj == NULL)
                    elf_hash_table (info)->dynobj = dynobj = abfd;
@@ -6207,7 +6579,16 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
              sizeof (Elf32_External_crinfo);
          break;
 
+       case R_MIPS_PC16:
+         if (h)
+           ((struct mips_elf_link_hash_entry *) h)->is_branch_target = TRUE;
+         break;
+
        case R_MIPS_26:
+         if (h)
+           ((struct mips_elf_link_hash_entry *) h)->is_branch_target = TRUE;
+         /* Fall through.  */
+
        case R_MIPS_GPREL16:
        case R_MIPS_LITERAL:
        case R_MIPS_GPREL32:
@@ -6235,24 +6616,21 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
        }
 
       /* We must not create a stub for a symbol that has relocations
-         related to taking the function's address.  */
-      switch (r_type)
-       {
-       default:
-         if (h != NULL)
-           {
-             struct mips_elf_link_hash_entry *mh;
-
-             mh = (struct mips_elf_link_hash_entry *) h;
-             mh->no_fn_stub = TRUE;
-           }
-         break;
-       case R_MIPS_CALL16:
-       case R_MIPS_CALL_HI16:
-       case R_MIPS_CALL_LO16:
-       case R_MIPS_JALR:
-         break;
-       }
+        related to taking the function's address.  This doesn't apply to
+        VxWorks, where CALL relocs refer to a .got.plt entry instead of
+        a normal .got entry.  */
+      if (!htab->is_vxworks && h != NULL)
+       switch (r_type)
+         {
+         default:
+           ((struct mips_elf_link_hash_entry *) h)->no_fn_stub = TRUE;
+           break;
+         case R_MIPS_CALL16:
+         case R_MIPS_CALL_HI16:
+         case R_MIPS_CALL_LO16:
+         case R_MIPS_JALR:
+           break;
+         }
 
       /* If this reloc is not a 16 bit call, and it has a global
          symbol, then we will need the fn_stub if there is one.
@@ -6459,7 +6837,9 @@ _bfd_mips_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
   bfd *dynobj;
   struct mips_elf_link_hash_entry *hmips;
   asection *s;
+  struct mips_elf_link_hash_table *htab;
 
+  htab = mips_elf_hash_table (info);
   dynobj = elf_hash_table (info)->dynobj;
 
   /* Make sure we know what is going on here.  */
@@ -6479,8 +6859,8 @@ _bfd_mips_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
       && (h->root.type == bfd_link_hash_defweak
          || !h->def_regular))
     {
-      mips_elf_allocate_dynamic_relocations (dynobj,
-                                            hmips->possibly_dynamic_relocs);
+      mips_elf_allocate_dynamic_relocations
+       (dynobj, info, hmips->possibly_dynamic_relocs);
       if (hmips->readonly_reloc)
        /* We tell the dynamic linker that there are relocations
           against the text segment.  */
@@ -6512,7 +6892,7 @@ _bfd_mips_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
          h->plt.offset = s->size;
 
          /* Make room for this stub code.  */
-         s->size += MIPS_FUNCTION_STUB_SIZE;
+         s->size += htab->function_stub_size;
 
          /* The last half word of the stub will be filled with the index
             of this symbol in .dynsym section.  */
@@ -6545,7 +6925,187 @@ _bfd_mips_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 
   return TRUE;
 }
+
+/* Likewise, for VxWorks.  */
+
+bfd_boolean
+_bfd_mips_vxworks_adjust_dynamic_symbol (struct bfd_link_info *info,
+                                        struct elf_link_hash_entry *h)
+{
+  bfd *dynobj;
+  struct mips_elf_link_hash_entry *hmips;
+  struct mips_elf_link_hash_table *htab;
+  unsigned int power_of_two;
+
+  htab = mips_elf_hash_table (info);
+  dynobj = elf_hash_table (info)->dynobj;
+  hmips = (struct mips_elf_link_hash_entry *) h;
+
+  /* Make sure we know what is going on here.  */
+  BFD_ASSERT (dynobj != NULL
+             && (h->needs_plt
+                 || h->needs_copy
+                 || h->u.weakdef != NULL
+                 || (h->def_dynamic
+                     && h->ref_regular
+                     && !h->def_regular)));
+
+  /* If the symbol is defined by a dynamic object, we need a PLT stub if
+     either (a) we want to branch to the symbol or (b) we're linking an
+     executable that needs a canonical function address.  In the latter
+     case, the canonical address will be the address of the executable's
+     load stub.  */
+  if ((hmips->is_branch_target
+       || (!info->shared
+          && h->type == STT_FUNC
+          && hmips->is_relocation_target))
+      && h->def_dynamic
+      && h->ref_regular
+      && !h->def_regular
+      && !h->forced_local)
+    h->needs_plt = 1;
+
+  /* Locally-binding symbols do not need a PLT stub; we can refer to
+     the functions directly.  */
+  else if (h->needs_plt
+          && (SYMBOL_CALLS_LOCAL (info, h)
+              || (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
+                  && h->root.type == bfd_link_hash_undefweak)))
+    {
+      h->needs_plt = 0;
+      return TRUE;
+    }
+
+  if (h->needs_plt)
+    {
+      /* If this is the first symbol to need a PLT entry, allocate room
+        for the header, and for the header's .rela.plt.unloaded entries.  */
+      if (htab->splt->size == 0)
+       {
+         htab->splt->size += htab->plt_header_size;
+         if (!info->shared)
+           htab->srelplt2->size += 2 * sizeof (Elf32_External_Rela);
+       }
+
+      /* Assign the next .plt entry to this symbol.  */
+      h->plt.offset = htab->splt->size;
+      htab->splt->size += htab->plt_entry_size;
+
+      /* If the output file has no definition of the symbol, set the
+        symbol's value to the address of the stub.  For executables,
+        point at the PLT load stub rather than the lazy resolution stub;
+        this stub will become the canonical function address.  */
+      if (!h->def_regular)
+       {
+         h->root.u.def.section = htab->splt;
+         h->root.u.def.value = h->plt.offset;
+         if (!info->shared)
+           h->root.u.def.value += 8;
+       }
+
+      /* Make room for the .got.plt entry and the R_JUMP_SLOT relocation.  */
+      htab->sgotplt->size += 4;
+      htab->srelplt->size += sizeof (Elf32_External_Rela);
+
+      /* Make room for the .rela.plt.unloaded relocations.  */
+      if (!info->shared)
+       htab->srelplt2->size += 3 * sizeof (Elf32_External_Rela);
+
+      return TRUE;
+    }
+
+  /* If a function symbol is defined by a dynamic object, and we do not
+     need a PLT stub for it, the symbol's value should be zero.  */
+  if (h->type == STT_FUNC
+      && h->def_dynamic
+      && h->ref_regular
+      && !h->def_regular)
+    {
+      h->root.u.def.value = 0;
+      return TRUE;
+    }
+
+  /* If this is a weak symbol, and there is a real definition, the
+     processor independent code will have arranged for us to see the
+     real definition first, and we can just use the same value.  */
+  if (h->u.weakdef != NULL)
+    {
+      BFD_ASSERT (h->u.weakdef->root.type == bfd_link_hash_defined
+                 || h->u.weakdef->root.type == bfd_link_hash_defweak);
+      h->root.u.def.section = h->u.weakdef->root.u.def.section;
+      h->root.u.def.value = h->u.weakdef->root.u.def.value;
+      return TRUE;
+    }
+
+  /* This is a reference to a symbol defined by a dynamic object which
+     is not a function.  */
+  if (info->shared)
+    return TRUE;
+
+  /* We must allocate the symbol in our .dynbss section, which will
+     become part of the .bss section of the executable.  There will be
+     an entry for this symbol in the .dynsym section.  The dynamic
+     object will contain position independent code, so all references
+     from the dynamic object to this symbol will go through the global
+     offset table.  The dynamic linker will use the .dynsym entry to
+     determine the address it must put in the global offset table, so
+     both the dynamic object and the regular object will refer to the
+     same memory location for the variable.  */
+
+  if ((h->root.u.def.section->flags & SEC_ALLOC) != 0)
+    {
+      htab->srelbss->size += sizeof (Elf32_External_Rela);
+      h->needs_copy = 1;
+    }
+
+  /* We need to figure out the alignment required for this symbol.  */
+  power_of_two = bfd_log2 (h->size);
+  if (power_of_two > 4)
+    power_of_two = 4;
+
+  /* Apply the required alignment.  */
+  htab->sdynbss->size = BFD_ALIGN (htab->sdynbss->size,
+                                  (bfd_size_type) 1 << power_of_two);
+  if (power_of_two > bfd_get_section_alignment (dynobj, htab->sdynbss)
+      && !bfd_set_section_alignment (dynobj, htab->sdynbss, power_of_two))
+    return FALSE;
+
+  /* Define the symbol as being at this point in the section.  */
+  h->root.u.def.section = htab->sdynbss;
+  h->root.u.def.value = htab->sdynbss->size;
+
+  /* Increment the section size to make room for the symbol.  */
+  htab->sdynbss->size += h->size;
+
+  return TRUE;
+}
 \f
+/* Return the number of dynamic section symbols required by OUTPUT_BFD.
+   The number might be exact or a worst-case estimate, depending on how
+   much information is available to elf_backend_omit_section_dynsym at
+   the current linking stage.  */
+
+static bfd_size_type
+count_section_dynsyms (bfd *output_bfd, struct bfd_link_info *info)
+{
+  bfd_size_type count;
+
+  count = 0;
+  if (info->shared)
+    {
+      asection *p;
+      const struct elf_backend_data *bed;
+
+      bed = get_elf_backend_data (output_bfd);
+      for (p = output_bfd->sections; p ; p = p->next)
+       if ((p->flags & SEC_EXCLUDE) == 0
+           && (p->flags & SEC_ALLOC) != 0
+           && !(*bed->elf_backend_omit_section_dynsym) (output_bfd, info, p))
+         ++count;
+    }
+  return count;
+}
+
 /* This function is called after all the input files have been read,
    and the input sections have been assigned to output sections.  We
    check for any mips16 stub sections that we can discard.  */
@@ -6562,8 +7122,12 @@ _bfd_mips_elf_always_size_sections (bfd *output_bfd,
   int i;
   bfd_size_type loadable_size = 0;
   bfd_size_type local_gotno;
+  bfd_size_type dynsymcount;
   bfd *sub;
   struct mips_elf_count_tls_arg count_tls_arg;
+  struct mips_elf_link_hash_table *htab;
+
+  htab = mips_elf_hash_table (info);
 
   /* The .reginfo section has a fixed size.  */
   ri = bfd_get_section_by_name (output_bfd, ".reginfo");
@@ -6617,14 +7181,32 @@ _bfd_mips_elf_always_size_sections (bfd *output_bfd,
        relocations, then GLOBAL_GOTSYM will be NULL.  */
     i = 0;
 
+  /* Get a worst-case estimate of the number of dynamic symbols needed.
+     At this point, dynsymcount does not account for section symbols
+     and count_section_dynsyms may overestimate the number that will
+     be needed.  */
+  dynsymcount = (elf_hash_table (info)->dynsymcount
+                + count_section_dynsyms (output_bfd, info));
+
+  /* Determine the size of one stub entry.  */
+  htab->function_stub_size = (dynsymcount > 0x10000
+                             ? MIPS_FUNCTION_STUB_BIG_SIZE
+                             : MIPS_FUNCTION_STUB_NORMAL_SIZE);
+
   /* In the worst case, we'll get one stub per dynamic symbol, plus
      one to account for the dummy entry at the end required by IRIX
      rld.  */
-  loadable_size += MIPS_FUNCTION_STUB_SIZE * (i + 1);
+  loadable_size += htab->function_stub_size * (i + 1);
 
-  /* Assume there are two loadable segments consisting of
-     contiguous sections.  Is 5 enough?  */
-  local_gotno = (loadable_size >> 16) + 5;
+  if (htab->is_vxworks)
+    /* There's no need to allocate page entries for VxWorks; R_MIPS_GOT16
+       relocations against local symbols evaluate to "G", and the EABI does
+       not include R_MIPS_GOT_PAGE.  */
+    local_gotno = 0;
+  else
+    /* Assume there are two loadable segments consisting of contiguous
+       sections.  Is 5 enough?  */
+    local_gotno = (loadable_size >> 16) + 5;
 
   g->local_gotno += local_gotno;
   s->size += g->local_gotno * MIPS_ELF_GOT_SIZE (output_bfd);
@@ -6645,7 +7227,10 @@ _bfd_mips_elf_always_size_sections (bfd *output_bfd,
 
   mips_elf_resolve_final_got_entries (g);
 
-  if (s->size > MIPS_ELF_GOT_MAX_SIZE (output_bfd))
+  /* VxWorks does not support multiple GOTs.  It initializes $gp to
+     __GOTT_BASE__[__GOTT_INDEX__], the value of which is set by the
+     dynamic loader.  */
+  if (!htab->is_vxworks && s->size > MIPS_ELF_GOT_MAX_SIZE (info))
     {
       if (! mips_elf_multi_got (output_bfd, info, g, s, local_gotno))
        return FALSE;
@@ -6667,9 +7252,11 @@ _bfd_mips_elf_size_dynamic_sections (bfd *output_bfd,
                                     struct bfd_link_info *info)
 {
   bfd *dynobj;
-  asection *s;
+  asection *s, *sreldyn;
   bfd_boolean reltext;
+  struct mips_elf_link_hash_table *htab;
 
+  htab = mips_elf_hash_table (info);
   dynobj = elf_hash_table (info)->dynobj;
   BFD_ASSERT (dynobj != NULL);
 
@@ -6691,6 +7278,7 @@ _bfd_mips_elf_size_dynamic_sections (bfd *output_bfd,
      determined the sizes of the various dynamic sections.  Allocate
      memory for them.  */
   reltext = FALSE;
+  sreldyn = NULL;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       const char *name;
@@ -6711,7 +7299,7 @@ _bfd_mips_elf_size_dynamic_sections (bfd *output_bfd,
 
              /* If this relocation section applies to a read only
                  section, then we probably need a DT_TEXTREL entry.
-                 If the relocation section is .rel.dyn, we always
+                 If the relocation section is .rel(a).dyn, we always
                  assert a DT_TEXTREL entry rather than testing whether
                  there exists a relocation to a read only section or
                  not.  */
@@ -6721,12 +7309,12 @@ _bfd_mips_elf_size_dynamic_sections (bfd *output_bfd,
              if ((target != NULL
                   && (target->flags & SEC_READONLY) != 0
                   && (target->flags & SEC_ALLOC) != 0)
-                 || strcmp (outname, ".rel.dyn") == 0)
+                 || strcmp (outname, MIPS_ELF_REL_DYN_NAME (info)) == 0)
                reltext = TRUE;
 
              /* We use the reloc_count field as a counter if we need
                 to copy relocs into the output file.  */
-             if (strcmp (name, ".rel.dyn") != 0)
+             if (strcmp (name, MIPS_ELF_REL_DYN_NAME (info)) != 0)
                s->reloc_count = 0;
 
              /* If combreloc is enabled, elf_link_sort_relocs() will
@@ -6738,7 +7326,23 @@ _bfd_mips_elf_size_dynamic_sections (bfd *output_bfd,
              info->combreloc = 0;
            }
        }
-      else if (strncmp (name, ".got", 4) == 0)
+      else if (htab->is_vxworks && strcmp (name, ".got") == 0)
+       {
+         /* Executables do not need a GOT.  */
+         if (info->shared)
+           {
+             /* Allocate relocations for all but the reserved entries.  */
+             struct mips_got_info *g;
+             unsigned int count;
+
+             g = mips_elf_got_info (dynobj, NULL);
+             count = (g->global_gotno
+                      + g->local_gotno
+                      - MIPS_RESERVED_GOTNO (info));
+             mips_elf_allocate_dynamic_relocations (dynobj, info, count);
+           }
+       }
+      else if (!htab->is_vxworks && strncmp (name, ".got", 4) == 0)
        {
          /* _bfd_mips_elf_always_size_sections() has already done
             most of the work, but some symbols may have been mapped
@@ -6783,7 +7387,7 @@ _bfd_mips_elf_size_dynamic_sections (bfd *output_bfd,
                      BFD_ASSERT (g->assigned_gotno == g->next->local_gotno
                                  + g->next->global_gotno
                                  + g->next->tls_gotno
-                                 + MIPS_RESERVED_GOTNO);
+                                 + MIPS_RESERVED_GOTNO (info));
                    }
                }
            }
@@ -6803,26 +7407,29 @@ _bfd_mips_elf_size_dynamic_sections (bfd *output_bfd,
            }
 
          if (needed_relocs)
-           mips_elf_allocate_dynamic_relocations (dynobj, needed_relocs);
+           mips_elf_allocate_dynamic_relocations (dynobj, info,
+                                                  needed_relocs);
        }
       else if (strcmp (name, MIPS_ELF_STUB_SECTION_NAME (output_bfd)) == 0)
        {
          /* IRIX rld assumes that the function stub isn't at the end
-            of .text section. So put a dummy. XXX  */
-         s->size += MIPS_FUNCTION_STUB_SIZE;
+            of .text section.  So put a dummy.  XXX  */
+         s->size += htab->function_stub_size;
        }
       else if (! info->shared
               && ! mips_elf_hash_table (info)->use_rld_obj_head
               && strncmp (name, ".rld_map", 8) == 0)
        {
-         /* We add a room for __rld_map. It will be filled in by the
+         /* We add a room for __rld_map.  It will be filled in by the
             rtld to contain a pointer to the _r_debug structure.  */
          s->size += 4;
        }
       else if (SGI_COMPAT (output_bfd)
               && strncmp (name, ".compact_rel", 12) == 0)
        s->size += mips_elf_hash_table (info)->compact_rel_size;
-      else if (strncmp (name, ".init", 5) != 0)
+      else if (strncmp (name, ".init", 5) != 0
+              && s != htab->sgotplt
+              && s != htab->splt)
        {
          /* It's not one of our sections, so don't allocate space.  */
          continue;
@@ -6837,6 +7444,14 @@ _bfd_mips_elf_size_dynamic_sections (bfd *output_bfd,
       if ((s->flags & SEC_HAS_CONTENTS) == 0)
        continue;
 
+      /* Allocate memory for this section last, since we may increase its
+        size above.  */
+      if (strcmp (name, MIPS_ELF_REL_DYN_NAME (info)) == 0)
+       {
+         sreldyn = s;
+         continue;
+       }
+
       /* Allocate memory for the section contents.  */
       s->contents = bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
@@ -6846,6 +7461,17 @@ _bfd_mips_elf_size_dynamic_sections (bfd *output_bfd,
        }
     }
 
+  /* Allocate memory for the .rel(a).dyn section.  */
+  if (sreldyn != NULL)
+    {
+      sreldyn->contents = bfd_zalloc (dynobj, sreldyn->size);
+      if (sreldyn->contents == NULL)
+       {
+         bfd_set_error (bfd_error_no_memory);
+         return FALSE;
+       }
+    }
+
   if (elf_hash_table (info)->dynamic_sections_created)
     {
       /* Add some entries to the .dynamic section.  We fill in the
@@ -6875,60 +7501,96 @@ _bfd_mips_elf_size_dynamic_sections (bfd *output_bfd,
            }
        }
 
-      if (reltext && SGI_COMPAT (output_bfd))
+      if (reltext && (SGI_COMPAT (output_bfd) || htab->is_vxworks))
        info->flags |= DF_TEXTREL;
 
       if ((info->flags & DF_TEXTREL) != 0)
        {
          if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_TEXTREL, 0))
            return FALSE;
+
+         /* Clear the DF_TEXTREL flag.  It will be set again if we
+            write out an actual text relocation; we may not, because
+            at this point we do not know whether e.g. any .eh_frame
+            absolute relocations have been converted to PC-relative.  */
+         info->flags &= ~DF_TEXTREL;
        }
 
       if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_PLTGOT, 0))
        return FALSE;
 
-      if (mips_elf_rel_dyn_section (dynobj, FALSE))
+      if (htab->is_vxworks)
        {
-         if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_REL, 0))
-           return FALSE;
+         /* VxWorks uses .rela.dyn instead of .rel.dyn.  It does not
+            use any of the DT_MIPS_* tags.  */
+         if (mips_elf_rel_dyn_section (info, FALSE))
+           {
+             if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_RELA, 0))
+               return FALSE;
 
-         if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_RELSZ, 0))
-           return FALSE;
+             if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_RELASZ, 0))
+               return FALSE;
 
-         if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_RELENT, 0))
-           return FALSE;
+             if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_RELAENT, 0))
+               return FALSE;
+           }
+         if (htab->splt->size > 0)
+           {
+             if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_PLTREL, 0))
+               return FALSE;
+
+             if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_JMPREL, 0))
+               return FALSE;
+
+             if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_PLTRELSZ, 0))
+               return FALSE;
+           }
        }
+      else
+       {
+         if (mips_elf_rel_dyn_section (info, FALSE))
+           {
+             if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_REL, 0))
+               return FALSE;
 
-      if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_RLD_VERSION, 0))
-       return FALSE;
+             if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_RELSZ, 0))
+               return FALSE;
 
-      if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_FLAGS, 0))
-       return FALSE;
+             if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_RELENT, 0))
+               return FALSE;
+           }
 
-      if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_BASE_ADDRESS, 0))
-       return FALSE;
+         if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_RLD_VERSION, 0))
+           return FALSE;
 
-      if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_LOCAL_GOTNO, 0))
-       return FALSE;
+         if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_FLAGS, 0))
+           return FALSE;
 
-      if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_SYMTABNO, 0))
-       return FALSE;
+         if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_BASE_ADDRESS, 0))
+           return FALSE;
 
-      if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_UNREFEXTNO, 0))
-       return FALSE;
+         if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_LOCAL_GOTNO, 0))
+           return FALSE;
 
-      if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_GOTSYM, 0))
-       return FALSE;
+         if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_SYMTABNO, 0))
+           return FALSE;
 
-      if (IRIX_COMPAT (dynobj) == ict_irix5
-         && ! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_HIPAGENO, 0))
-       return FALSE;
+         if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_UNREFEXTNO, 0))
+           return FALSE;
 
-      if (IRIX_COMPAT (dynobj) == ict_irix6
-         && (bfd_get_section_by_name
-             (dynobj, MIPS_ELF_OPTIONS_SECTION_NAME (dynobj)))
-         && !MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_OPTIONS, 0))
-       return FALSE;
+         if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_GOTSYM, 0))
+           return FALSE;
+
+         if (IRIX_COMPAT (dynobj) == ict_irix5
+             && ! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_HIPAGENO, 0))
+           return FALSE;
+
+         if (IRIX_COMPAT (dynobj) == ict_irix6
+             && (bfd_get_section_by_name
+                 (dynobj, MIPS_ELF_OPTIONS_SECTION_NAME (dynobj)))
+             && !MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_OPTIONS, 0))
+           return FALSE;
+       }
     }
 
   return TRUE;
@@ -7389,13 +8051,16 @@ _bfd_mips_elf_finish_dynamic_symbol (bfd *output_bfd,
   asection *sgot;
   struct mips_got_info *g, *gg;
   const char *name;
+  int idx;
+  struct mips_elf_link_hash_table *htab;
 
+  htab = mips_elf_hash_table (info);
   dynobj = elf_hash_table (info)->dynobj;
 
   if (h->plt.offset != MINUS_ONE)
     {
       asection *s;
-      bfd_byte stub[MIPS_FUNCTION_STUB_SIZE];
+      bfd_byte stub[MIPS_FUNCTION_STUB_BIG_SIZE];
 
       /* This symbol has a stub.  Set it up.  */
 
@@ -7405,18 +8070,42 @@ _bfd_mips_elf_finish_dynamic_symbol (bfd *output_bfd,
                                   MIPS_ELF_STUB_SECTION_NAME (dynobj));
       BFD_ASSERT (s != NULL);
 
-      /* FIXME: Can h->dynindx be more than 64K?  */
-      if (h->dynindx & 0xffff0000)
+      BFD_ASSERT ((htab->function_stub_size == MIPS_FUNCTION_STUB_BIG_SIZE)
+                  || (h->dynindx <= 0xffff));
+
+      /* Values up to 2^31 - 1 are allowed.  Larger values would cause
+        sign extension at runtime in the stub, resulting in a negative
+        index value.  */
+      if (h->dynindx & ~0x7fffffff)
        return FALSE;
 
       /* Fill the stub.  */
-      bfd_put_32 (output_bfd, STUB_LW (output_bfd), stub);
-      bfd_put_32 (output_bfd, STUB_MOVE (output_bfd), stub + 4);
-      bfd_put_32 (output_bfd, STUB_JALR, stub + 8);
-      bfd_put_32 (output_bfd, STUB_LI16 (output_bfd) + h->dynindx, stub + 12);
+      idx = 0;
+      bfd_put_32 (output_bfd, STUB_LW (output_bfd), stub + idx);
+      idx += 4;
+      bfd_put_32 (output_bfd, STUB_MOVE (output_bfd), stub + idx);
+      idx += 4;
+      if (htab->function_stub_size == MIPS_FUNCTION_STUB_BIG_SIZE)
+        {
+          bfd_put_32 (output_bfd, STUB_LUI ((h->dynindx >> 16) & 0x7fff),
+                      stub + idx);
+          idx += 4;
+        }
+      bfd_put_32 (output_bfd, STUB_JALR, stub + idx);
+      idx += 4;
+
+      /* If a large stub is not required and sign extension is not a
+         problem, then use legacy code in the stub.  */
+      if (htab->function_stub_size == MIPS_FUNCTION_STUB_BIG_SIZE)
+       bfd_put_32 (output_bfd, STUB_ORI (h->dynindx & 0xffff), stub + idx);
+      else if (h->dynindx & ~0x7fff)
+        bfd_put_32 (output_bfd, STUB_LI16U (h->dynindx & 0xffff), stub + idx);
+      else
+        bfd_put_32 (output_bfd, STUB_LI16S (output_bfd, h->dynindx),
+                   stub + idx);
 
       BFD_ASSERT (h->plt.offset <= s->size);
-      memcpy (s->contents + h->plt.offset, stub, MIPS_FUNCTION_STUB_SIZE);
+      memcpy (s->contents + h->plt.offset, stub, htab->function_stub_size);
 
       /* Mark the symbol as undefined.  plt.offset != -1 occurs
         only for the referenced symbol.  */
@@ -7584,6 +8273,268 @@ _bfd_mips_elf_finish_dynamic_symbol (bfd *output_bfd,
   return TRUE;
 }
 
+/* Likewise, for VxWorks.  */
+
+bfd_boolean
+_bfd_mips_vxworks_finish_dynamic_symbol (bfd *output_bfd,
+                                        struct bfd_link_info *info,
+                                        struct elf_link_hash_entry *h,
+                                        Elf_Internal_Sym *sym)
+{
+  bfd *dynobj;
+  asection *sgot;
+  struct mips_got_info *g;
+  struct mips_elf_link_hash_table *htab;
+
+  htab = mips_elf_hash_table (info);
+  dynobj = elf_hash_table (info)->dynobj;
+
+  if (h->plt.offset != (bfd_vma) -1)
+    {
+      bfd_byte *loc;
+      bfd_vma plt_address, plt_index, got_address, got_offset, branch_offset;
+      Elf_Internal_Rela rel;
+      static const bfd_vma *plt_entry;
+
+      BFD_ASSERT (h->dynindx != -1);
+      BFD_ASSERT (htab->splt != NULL);
+      BFD_ASSERT (h->plt.offset <= htab->splt->size);
+
+      /* Calculate the address of the .plt entry.  */
+      plt_address = (htab->splt->output_section->vma
+                    + htab->splt->output_offset
+                    + h->plt.offset);
+
+      /* Calculate the index of the entry.  */
+      plt_index = ((h->plt.offset - htab->plt_header_size)
+                  / htab->plt_entry_size);
+
+      /* Calculate the address of the .got.plt entry.  */
+      got_address = (htab->sgotplt->output_section->vma
+                    + htab->sgotplt->output_offset
+                    + plt_index * 4);
+
+      /* Calculate the offset of the .got.plt entry from
+        _GLOBAL_OFFSET_TABLE_.  */
+      got_offset = mips_elf_gotplt_index (info, h);
+
+      /* Calculate the offset for the branch at the start of the PLT
+        entry.  The branch jumps to the beginning of .plt.  */
+      branch_offset = -(h->plt.offset / 4 + 1) & 0xffff;
+
+      /* Fill in the initial value of the .got.plt entry.  */
+      bfd_put_32 (output_bfd, plt_address,
+                 htab->sgotplt->contents + plt_index * 4);
+
+      /* Find out where the .plt entry should go.  */
+      loc = htab->splt->contents + h->plt.offset;
+
+      if (info->shared)
+       {
+         plt_entry = mips_vxworks_shared_plt_entry;
+         bfd_put_32 (output_bfd, plt_entry[0] | branch_offset, loc);
+         bfd_put_32 (output_bfd, plt_entry[1] | plt_index, loc + 4);
+       }
+      else
+       {
+         bfd_vma got_address_high, got_address_low;
+
+         plt_entry = mips_vxworks_exec_plt_entry;
+         got_address_high = ((got_address + 0x8000) >> 16) & 0xffff;
+         got_address_low = got_address & 0xffff;
+
+         bfd_put_32 (output_bfd, plt_entry[0] | branch_offset, loc);
+         bfd_put_32 (output_bfd, plt_entry[1] | plt_index, loc + 4);
+         bfd_put_32 (output_bfd, plt_entry[2] | got_address_high, loc + 8);
+         bfd_put_32 (output_bfd, plt_entry[3] | got_address_low, loc + 12);
+         bfd_put_32 (output_bfd, plt_entry[4], loc + 16);
+         bfd_put_32 (output_bfd, plt_entry[5], loc + 20);
+         bfd_put_32 (output_bfd, plt_entry[6], loc + 24);
+         bfd_put_32 (output_bfd, plt_entry[7], loc + 28);
+
+         loc = (htab->srelplt2->contents
+                + (plt_index * 3 + 2) * sizeof (Elf32_External_Rela));
+
+         /* Emit a relocation for the .got.plt entry.  */
+         rel.r_offset = got_address;
+         rel.r_info = ELF32_R_INFO (htab->root.hplt->indx, R_MIPS_32);
+         rel.r_addend = h->plt.offset;
+         bfd_elf32_swap_reloca_out (output_bfd, &rel, loc);
+
+         /* Emit a relocation for the lui of %hi(<.got.plt slot>).  */
+         loc += sizeof (Elf32_External_Rela);
+         rel.r_offset = plt_address + 8;
+         rel.r_info = ELF32_R_INFO (htab->root.hgot->indx, R_MIPS_HI16);
+         rel.r_addend = got_offset;
+         bfd_elf32_swap_reloca_out (output_bfd, &rel, loc);
+
+         /* Emit a relocation for the addiu of %lo(<.got.plt slot>).  */
+         loc += sizeof (Elf32_External_Rela);
+         rel.r_offset += 4;
+         rel.r_info = ELF32_R_INFO (htab->root.hgot->indx, R_MIPS_LO16);
+         bfd_elf32_swap_reloca_out (output_bfd, &rel, loc);
+       }
+
+      /* Emit an R_MIPS_JUMP_SLOT relocation against the .got.plt entry.  */
+      loc = htab->srelplt->contents + plt_index * sizeof (Elf32_External_Rela);
+      rel.r_offset = got_address;
+      rel.r_info = ELF32_R_INFO (h->dynindx, R_MIPS_JUMP_SLOT);
+      rel.r_addend = 0;
+      bfd_elf32_swap_reloca_out (output_bfd, &rel, loc);
+
+      if (!h->def_regular)
+       sym->st_shndx = SHN_UNDEF;
+    }
+
+  BFD_ASSERT (h->dynindx != -1 || h->forced_local);
+
+  sgot = mips_elf_got_section (dynobj, FALSE);
+  BFD_ASSERT (sgot != NULL);
+  BFD_ASSERT (mips_elf_section_data (sgot) != NULL);
+  g = mips_elf_section_data (sgot)->u.got_info;
+  BFD_ASSERT (g != NULL);
+
+  /* See if this symbol has an entry in the GOT.  */
+  if (g->global_gotsym != NULL
+      && h->dynindx >= g->global_gotsym->dynindx)
+    {
+      bfd_vma offset;
+      Elf_Internal_Rela outrel;
+      bfd_byte *loc;
+      asection *s;
+
+      /* Install the symbol value in the GOT.   */
+      offset = mips_elf_global_got_index (dynobj, output_bfd, h,
+                                         R_MIPS_GOT16, info);
+      MIPS_ELF_PUT_WORD (output_bfd, sym->st_value, sgot->contents + offset);
+
+      /* Add a dynamic relocation for it.  */
+      s = mips_elf_rel_dyn_section (info, FALSE);
+      loc = s->contents + (s->reloc_count++ * sizeof (Elf32_External_Rela));
+      outrel.r_offset = (sgot->output_section->vma
+                        + sgot->output_offset
+                        + offset);
+      outrel.r_info = ELF32_R_INFO (h->dynindx, R_MIPS_32);
+      outrel.r_addend = 0;
+      bfd_elf32_swap_reloca_out (dynobj, &outrel, loc);
+    }
+
+  /* Emit a copy reloc, if needed.  */
+  if (h->needs_copy)
+    {
+      Elf_Internal_Rela rel;
+
+      BFD_ASSERT (h->dynindx != -1);
+
+      rel.r_offset = (h->root.u.def.section->output_section->vma
+                     + h->root.u.def.section->output_offset
+                     + h->root.u.def.value);
+      rel.r_info = ELF32_R_INFO (h->dynindx, R_MIPS_COPY);
+      rel.r_addend = 0;
+      bfd_elf32_swap_reloca_out (output_bfd, &rel,
+                                htab->srelbss->contents
+                                + (htab->srelbss->reloc_count
+                                   * sizeof (Elf32_External_Rela)));
+      ++htab->srelbss->reloc_count;
+    }
+
+  /* If this is a mips16 symbol, force the value to be even.  */
+  if (sym->st_other == STO_MIPS16)
+    sym->st_value &= ~1;
+
+  return TRUE;
+}
+
+/* Install the PLT header for a VxWorks executable and finalize the
+   contents of .rela.plt.unloaded.  */
+
+static void
+mips_vxworks_finish_exec_plt (bfd *output_bfd, struct bfd_link_info *info)
+{
+  Elf_Internal_Rela rela;
+  bfd_byte *loc;
+  bfd_vma got_value, got_value_high, got_value_low, plt_address;
+  static const bfd_vma *plt_entry;
+  struct mips_elf_link_hash_table *htab;
+
+  htab = mips_elf_hash_table (info);
+  plt_entry = mips_vxworks_exec_plt0_entry;
+
+  /* Calculate the value of _GLOBAL_OFFSET_TABLE_.  */
+  got_value = (htab->root.hgot->root.u.def.section->output_section->vma
+              + htab->root.hgot->root.u.def.section->output_offset
+              + htab->root.hgot->root.u.def.value);
+
+  got_value_high = ((got_value + 0x8000) >> 16) & 0xffff;
+  got_value_low = got_value & 0xffff;
+
+  /* Calculate the address of the PLT header.  */
+  plt_address = htab->splt->output_section->vma + htab->splt->output_offset;
+
+  /* Install the PLT header.  */
+  loc = htab->splt->contents;
+  bfd_put_32 (output_bfd, plt_entry[0] | got_value_high, loc);
+  bfd_put_32 (output_bfd, plt_entry[1] | got_value_low, loc + 4);
+  bfd_put_32 (output_bfd, plt_entry[2], loc + 8);
+  bfd_put_32 (output_bfd, plt_entry[3], loc + 12);
+  bfd_put_32 (output_bfd, plt_entry[4], loc + 16);
+  bfd_put_32 (output_bfd, plt_entry[5], loc + 20);
+
+  /* Output the relocation for the lui of %hi(_GLOBAL_OFFSET_TABLE_).  */
+  loc = htab->srelplt2->contents;
+  rela.r_offset = plt_address;
+  rela.r_info = ELF32_R_INFO (htab->root.hgot->indx, R_MIPS_HI16);
+  rela.r_addend = 0;
+  bfd_elf32_swap_reloca_out (output_bfd, &rela, loc);
+  loc += sizeof (Elf32_External_Rela);
+
+  /* Output the relocation for the following addiu of
+     %lo(_GLOBAL_OFFSET_TABLE_).  */
+  rela.r_offset += 4;
+  rela.r_info = ELF32_R_INFO (htab->root.hgot->indx, R_MIPS_LO16);
+  bfd_elf32_swap_reloca_out (output_bfd, &rela, loc);
+  loc += sizeof (Elf32_External_Rela);
+
+  /* Fix up the remaining relocations.  They may have the wrong
+     symbol index for _G_O_T_ or _P_L_T_ depending on the order
+     in which symbols were output.  */
+  while (loc < htab->srelplt2->contents + htab->srelplt2->size)
+    {
+      Elf_Internal_Rela rel;
+
+      bfd_elf32_swap_reloca_in (output_bfd, loc, &rel);
+      rel.r_info = ELF32_R_INFO (htab->root.hplt->indx, R_MIPS_32);
+      bfd_elf32_swap_reloca_out (output_bfd, &rel, loc);
+      loc += sizeof (Elf32_External_Rela);
+
+      bfd_elf32_swap_reloca_in (output_bfd, loc, &rel);
+      rel.r_info = ELF32_R_INFO (htab->root.hgot->indx, R_MIPS_HI16);
+      bfd_elf32_swap_reloca_out (output_bfd, &rel, loc);
+      loc += sizeof (Elf32_External_Rela);
+
+      bfd_elf32_swap_reloca_in (output_bfd, loc, &rel);
+      rel.r_info = ELF32_R_INFO (htab->root.hgot->indx, R_MIPS_LO16);
+      bfd_elf32_swap_reloca_out (output_bfd, &rel, loc);
+      loc += sizeof (Elf32_External_Rela);
+    }
+}
+
+/* Install the PLT header for a VxWorks shared library.  */
+
+static void
+mips_vxworks_finish_shared_plt (bfd *output_bfd, struct bfd_link_info *info)
+{
+  unsigned int i;
+  struct mips_elf_link_hash_table *htab;
+
+  htab = mips_elf_hash_table (info);
+
+  /* We just need to copy the entry byte-by-byte.  */
+  for (i = 0; i < ARRAY_SIZE (mips_vxworks_shared_plt0_entry); i++)
+    bfd_put_32 (output_bfd, mips_vxworks_shared_plt0_entry[i],
+               htab->splt->contents + i * 4);
+}
+
 /* Finish up the dynamic sections.  */
 
 bfd_boolean
@@ -7594,7 +8545,9 @@ _bfd_mips_elf_finish_dynamic_sections (bfd *output_bfd,
   asection *sdyn;
   asection *sgot;
   struct mips_got_info *gg, *g;
+  struct mips_elf_link_hash_table *htab;
 
+  htab = mips_elf_hash_table (info);
   dynobj = elf_hash_table (info)->dynobj;
 
   sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
@@ -7614,6 +8567,7 @@ _bfd_mips_elf_finish_dynamic_sections (bfd *output_bfd,
   if (elf_hash_table (info)->dynamic_sections_created)
     {
       bfd_byte *b;
+      int dyn_to_skip = 0, dyn_skipped = 0;
 
       BFD_ASSERT (sdyn != NULL);
       BFD_ASSERT (g != NULL);
@@ -7637,11 +8591,14 @@ _bfd_mips_elf_finish_dynamic_sections (bfd *output_bfd,
          switch (dyn.d_tag)
            {
            case DT_RELENT:
-             s = mips_elf_rel_dyn_section (dynobj, FALSE);
-             BFD_ASSERT (s != NULL);
              dyn.d_un.d_val = MIPS_ELF_REL_SIZE (dynobj);
              break;
 
+           case DT_RELAENT:
+             BFD_ASSERT (htab->is_vxworks);
+             dyn.d_un.d_val = MIPS_ELF_RELA_SIZE (dynobj);
+             break;
+
            case DT_STRSZ:
              /* Rewrite DT_STRSZ.  */
              dyn.d_un.d_val =
@@ -7650,9 +8607,20 @@ _bfd_mips_elf_finish_dynamic_sections (bfd *output_bfd,
 
            case DT_PLTGOT:
              name = ".got";
-             s = bfd_get_section_by_name (output_bfd, name);
-             BFD_ASSERT (s != NULL);
-             dyn.d_un.d_ptr = s->vma;
+             if (htab->is_vxworks)
+               {
+                 /* _GLOBAL_OFFSET_TABLE_ is defined to be the beginning
+                    of the ".got" section in DYNOBJ.  */
+                 s = bfd_get_section_by_name (dynobj, name);
+                 BFD_ASSERT (s != NULL);
+                 dyn.d_un.d_ptr = s->output_section->vma + s->output_offset;
+               }
+             else
+               {
+                 s = bfd_get_section_by_name (output_bfd, name);
+                 BFD_ASSERT (s != NULL);
+                 dyn.d_un.d_ptr = s->vma;
+               }
              break;
 
            case DT_MIPS_RLD_VERSION:
@@ -7718,7 +8686,7 @@ _bfd_mips_elf_finish_dynamic_sections (bfd *output_bfd,
              break;
 
            case DT_MIPS_HIPAGENO:
-             dyn.d_un.d_val = g->local_gotno - MIPS_RESERVED_GOTNO;
+             dyn.d_un.d_val = g->local_gotno - MIPS_RESERVED_GOTNO (info);
              break;
 
            case DT_MIPS_RLD_MAP:
@@ -7731,25 +8699,96 @@ _bfd_mips_elf_finish_dynamic_sections (bfd *output_bfd,
              dyn.d_un.d_ptr = s->vma;
              break;
 
+           case DT_RELASZ:
+             BFD_ASSERT (htab->is_vxworks);
+             /* The count does not include the JUMP_SLOT relocations.  */
+             if (htab->srelplt)
+               dyn.d_un.d_val -= htab->srelplt->size;
+             break;
+
+           case DT_PLTREL:
+             BFD_ASSERT (htab->is_vxworks);
+             dyn.d_un.d_val = DT_RELA;
+             break;
+
+           case DT_PLTRELSZ:
+             BFD_ASSERT (htab->is_vxworks);
+             dyn.d_un.d_val = htab->srelplt->size;
+             break;
+
+           case DT_JMPREL:
+             BFD_ASSERT (htab->is_vxworks);
+             dyn.d_un.d_val = (htab->srelplt->output_section->vma
+                               + htab->srelplt->output_offset);
+             break;
+
+           case DT_TEXTREL:
+             /* If we didn't need any text relocations after all, delete
+                the dynamic tag.  */
+             if (!(info->flags & DF_TEXTREL))
+               {
+                 dyn_to_skip = MIPS_ELF_DYN_SIZE (dynobj);
+                 swap_out_p = FALSE;
+               }
+             break;
+
+           case DT_FLAGS:
+             /* If we didn't need any text relocations after all, clear
+                DF_TEXTREL from DT_FLAGS.  */
+             if (!(info->flags & DF_TEXTREL))
+               dyn.d_un.d_val &= ~DF_TEXTREL;
+             else
+               swap_out_p = FALSE;
+             break;
+
            default:
              swap_out_p = FALSE;
              break;
            }
 
-         if (swap_out_p)
+         if (swap_out_p || dyn_skipped)
            (*get_elf_backend_data (dynobj)->s->swap_dyn_out)
-             (dynobj, &dyn, b);
+             (dynobj, &dyn, b - dyn_skipped);
+
+         if (dyn_to_skip)
+           {
+             dyn_skipped += dyn_to_skip;
+             dyn_to_skip = 0;
+           }
        }
+
+      /* Wipe out any trailing entries if we shifted down a dynamic tag.  */
+      if (dyn_skipped > 0)
+       memset (b - dyn_skipped, 0, dyn_skipped);
     }
 
-  /* The first entry of the global offset table will be filled at
-     runtime. The second entry will be used by some runtime loaders.
-     This isn't the case of IRIX rld.  */
   if (sgot != NULL && sgot->size > 0)
     {
-      MIPS_ELF_PUT_WORD (output_bfd, 0, sgot->contents);
-      MIPS_ELF_PUT_WORD (output_bfd, 0x80000000,
-                        sgot->contents + MIPS_ELF_GOT_SIZE (output_bfd));
+      if (htab->is_vxworks)
+       {
+         /* The first entry of the global offset table points to the
+            ".dynamic" section.  The second is initialized by the
+            loader and contains the shared library identifier.
+            The third is also initialized by the loader and points
+            to the lazy resolution stub.  */
+         MIPS_ELF_PUT_WORD (output_bfd,
+                            sdyn->output_offset + sdyn->output_section->vma,
+                            sgot->contents);
+         MIPS_ELF_PUT_WORD (output_bfd, 0,
+                            sgot->contents + MIPS_ELF_GOT_SIZE (output_bfd));
+         MIPS_ELF_PUT_WORD (output_bfd, 0,
+                            sgot->contents
+                            + 2 * MIPS_ELF_GOT_SIZE (output_bfd));
+       }
+      else
+       {
+         /* The first entry of the global offset table will be filled at
+            runtime. The second entry will be used by some runtime loaders.
+            This isn't the case of IRIX rld.  */
+         MIPS_ELF_PUT_WORD (output_bfd, (bfd_vma) 0, sgot->contents);
+         MIPS_ELF_PUT_WORD (output_bfd, (bfd_vma) 0x80000000,
+                            sgot->contents + MIPS_ELF_GOT_SIZE (output_bfd));
+       }
     }
 
   if (sgot != NULL)
@@ -7823,7 +8862,7 @@ _bfd_mips_elf_finish_dynamic_sections (bfd *output_bfd,
                 decided not to make.  This is for the n64 irix rld,
                 which doesn't seem to apply any relocations if there
                 are trailing null entries.  */
-             s = mips_elf_rel_dyn_section (dynobj, FALSE);
+             s = mips_elf_rel_dyn_section (info, FALSE);
              dyn.d_un.d_val = (s->reloc_count
                                * (ABI_64_P (output_bfd)
                                   ? sizeof (Elf64_Mips_External_Rel)
@@ -7869,32 +8908,45 @@ _bfd_mips_elf_finish_dynamic_sections (bfd *output_bfd,
              {
                file_ptr dummy_offset;
 
-               BFD_ASSERT (s->size >= MIPS_FUNCTION_STUB_SIZE);
-               dummy_offset = s->size - MIPS_FUNCTION_STUB_SIZE;
+               BFD_ASSERT (s->size >= htab->function_stub_size);
+               dummy_offset = s->size - htab->function_stub_size;
                memset (s->contents + dummy_offset, 0,
-                       MIPS_FUNCTION_STUB_SIZE);
+                       htab->function_stub_size);
              }
          }
       }
 
-    /* We need to sort the entries of the dynamic relocation section.  */
-
-    s = mips_elf_rel_dyn_section (dynobj, FALSE);
-
-    if (s != NULL
-       && s->size > (bfd_vma)2 * MIPS_ELF_REL_SIZE (output_bfd))
+    /* The psABI says that the dynamic relocations must be sorted in
+       increasing order of r_symndx.  The VxWorks EABI doesn't require
+       this, and because the code below handles REL rather than RELA
+       relocations, using it for VxWorks would be outright harmful.  */
+    if (!htab->is_vxworks)
       {
-       reldyn_sorting_bfd = output_bfd;
+       s = mips_elf_rel_dyn_section (info, FALSE);
+       if (s != NULL
+           && s->size > (bfd_vma)2 * MIPS_ELF_REL_SIZE (output_bfd))
+         {
+           reldyn_sorting_bfd = output_bfd;
 
-       if (ABI_64_P (output_bfd))
-         qsort ((Elf64_External_Rel *) s->contents + 1, s->reloc_count - 1,
-                sizeof (Elf64_Mips_External_Rel), sort_dynamic_relocs_64);
-       else
-         qsort ((Elf32_External_Rel *) s->contents + 1, s->reloc_count - 1,
-                sizeof (Elf32_External_Rel), sort_dynamic_relocs);
+           if (ABI_64_P (output_bfd))
+             qsort ((Elf64_External_Rel *) s->contents + 1,
+                    s->reloc_count - 1, sizeof (Elf64_Mips_External_Rel),
+                    sort_dynamic_relocs_64);
+           else
+             qsort ((Elf32_External_Rel *) s->contents + 1,
+                    s->reloc_count - 1, sizeof (Elf32_External_Rel),
+                    sort_dynamic_relocs);
+         }
       }
   }
 
+  if (htab->is_vxworks && htab->splt->size > 0)
+    {
+      if (info->shared)
+       mips_vxworks_finish_shared_plt (output_bfd, info);
+      else
+       mips_vxworks_finish_exec_plt (output_bfd, info);
+    }
   return TRUE;
 }
 
@@ -8962,9 +10014,37 @@ _bfd_mips_elf_link_hash_table_create (bfd *abfd)
   ret->use_rld_obj_head = FALSE;
   ret->rld_value = 0;
   ret->mips16_stubs_seen = FALSE;
+  ret->is_vxworks = FALSE;
+  ret->srelbss = NULL;
+  ret->sdynbss = NULL;
+  ret->srelplt = NULL;
+  ret->srelplt2 = NULL;
+  ret->sgotplt = NULL;
+  ret->splt = NULL;
+  ret->plt_header_size = 0;
+  ret->plt_entry_size = 0;
+  ret->function_stub_size = 0;
 
   return &ret->root.root;
 }
+
+/* Likewise, but indicate that the target is VxWorks.  */
+
+struct bfd_link_hash_table *
+_bfd_mips_vxworks_link_hash_table_create (bfd *abfd)
+{
+  struct bfd_link_hash_table *ret;
+
+  ret = _bfd_mips_elf_link_hash_table_create (abfd);
+  if (ret)
+    {
+      struct mips_elf_link_hash_table *htab;
+
+      htab = (struct mips_elf_link_hash_table *) ret;
+      htab->is_vxworks = 1;
+    }
+  return ret;
+}
 \f
 /* We need to use a special link routine to handle the .reginfo and
    the .mdebug sections.  We need to merge all instances of these
@@ -8987,6 +10067,7 @@ _bfd_mips_elf_final_link (bfd *abfd, struct bfd_link_info *info)
   EXTR esym;
   unsigned int i;
   bfd_size_type amt;
+  struct mips_elf_link_hash_table *htab;
 
   static const char * const secname[] =
   {
@@ -9003,6 +10084,7 @@ _bfd_mips_elf_final_link (bfd *abfd, struct bfd_link_info *info)
      generic size_dynamic_sections renumbered them out from under us.
      Rather than trying somehow to prevent the renumbering, just do
      the sort again.  */
+  htab = mips_elf_hash_table (info);
   if (elf_hash_table (info)->dynamic_sections_created)
     {
       bfd *dynobj;
@@ -9017,18 +10099,7 @@ _bfd_mips_elf_final_link (bfd *abfd, struct bfd_link_info *info)
         we count the sections after (possibly) removing the .options
         section above.  */
 
-      dynsecsymcount = 0;
-      if (info->shared)
-       {
-         asection * p;
-
-         for (p = abfd->sections; p ; p = p->next)
-           if ((p->flags & SEC_EXCLUDE) == 0
-               && (p->flags & SEC_ALLOC) != 0
-               && !(*bed->elf_backend_omit_section_dynsym) (abfd, info, p))
-             ++ dynsecsymcount;
-       }
-
+      dynsecsymcount = count_section_dynsyms (abfd, info);
       if (! mips_elf_sort_hash_table (info, dynsecsymcount + 1))
        return FALSE;
 
@@ -9053,6 +10124,14 @@ _bfd_mips_elf_final_link (bfd *abfd, struct bfd_link_info *info)
        elf_gp (abfd) = (h->u.def.value
                         + h->u.def.section->output_section->vma
                         + h->u.def.section->output_offset);
+      else if (htab->is_vxworks
+              && (h = bfd_link_hash_lookup (info->hash,
+                                            "_GLOBAL_OFFSET_TABLE_",
+                                            FALSE, FALSE, TRUE))
+              && h->type == bfd_link_hash_defined)
+       elf_gp (abfd) = (h->u.def.section->output_section->vma
+                        + h->u.def.section->output_offset
+                        + h->u.def.value);
       else if (info->relocatable)
        {
          bfd_vma lo = MINUS_ONE;
@@ -9064,7 +10143,7 @@ _bfd_mips_elf_final_link (bfd *abfd, struct bfd_link_info *info)
              lo = o->vma;
 
          /* And calculate GP relative to that.  */
-         elf_gp (abfd) = lo + ELF_MIPS_GP_OFFSET (abfd);
+         elf_gp (abfd) = lo + ELF_MIPS_GP_OFFSET (info);
        }
       else
        {
@@ -9796,6 +10875,12 @@ _bfd_mips_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
   new_flags &= ~EF_MIPS_UCODE;
   old_flags &= ~EF_MIPS_UCODE;
 
+  /* Don't care about the PIC flags from dynamic objects; they are
+     PIC by design.  */
+  if ((new_flags & (EF_MIPS_PIC | EF_MIPS_CPIC)) != 0
+      && (ibfd->flags & DYNAMIC) != 0)
+    new_flags &= ~ (EF_MIPS_PIC | EF_MIPS_CPIC);
+
   if (new_flags == old_flags)
     return TRUE;
 
index 07e661d..6c3c9a3 100644 (file)
@@ -48,6 +48,8 @@ extern bfd_boolean _bfd_mips_elf_check_relocs
   (bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *);
 extern bfd_boolean _bfd_mips_elf_adjust_dynamic_symbol
   (struct bfd_link_info *, struct elf_link_hash_entry *);
+extern bfd_boolean _bfd_mips_vxworks_adjust_dynamic_symbol
+  (struct bfd_link_info *, struct elf_link_hash_entry *);
 extern bfd_boolean _bfd_mips_elf_always_size_sections
   (bfd *, struct bfd_link_info *);
 extern bfd_boolean _bfd_mips_elf_size_dynamic_sections
@@ -58,6 +60,9 @@ extern bfd_boolean _bfd_mips_elf_relocate_section
 extern bfd_boolean _bfd_mips_elf_finish_dynamic_symbol
   (bfd *, struct bfd_link_info *, struct elf_link_hash_entry *,
    Elf_Internal_Sym *);
+extern bfd_boolean _bfd_mips_vxworks_finish_dynamic_symbol
+  (bfd *, struct bfd_link_info *, struct elf_link_hash_entry *,
+   Elf_Internal_Sym *);
 extern bfd_boolean _bfd_mips_elf_finish_dynamic_sections
   (bfd *, struct bfd_link_info *);
 extern void _bfd_mips_elf_final_write_processing
@@ -90,6 +95,8 @@ extern bfd_byte *_bfd_elf_mips_get_relocated_section_contents
    bfd_byte *, bfd_boolean, asymbol **);
 extern struct bfd_link_hash_table *_bfd_mips_elf_link_hash_table_create
   (bfd *);
+extern struct bfd_link_hash_table *_bfd_mips_vxworks_link_hash_table_create
+  (bfd *);
 extern bfd_boolean _bfd_mips_elf_final_link
   (bfd *, struct bfd_link_info *);
 extern bfd_boolean _bfd_mips_elf_merge_private_bfd_data
index cb5f7cb..ef7ff48 100644 (file)
 #include "sysdep.h"
 #include "bfdlink.h"
 #include "libbfd.h"
+#include "libiberty.h"
 #include "elf-bfd.h"
 #include "elf/sparc.h"
 #include "opcode/sparc.h"
 #include "elfxx-sparc.h"
+#include "elf-vxworks.h"
 
 /* In case we're on a 32-bit machine, construct a 64-bit "-1" value.  */
 #define MINUS_ONE (~ (bfd_vma) 0)
@@ -697,6 +699,50 @@ sparc64_plt_entry_build (bfd *output_bfd, asection *splt, bfd_vma offset,
   return index - 4;
 }
 
+/* The format of the first PLT entry in a VxWorks executable.  */
+static const bfd_vma sparc_vxworks_exec_plt0_entry[] =
+  {
+    0x05000000,        /* sethi  %hi(_GLOBAL_OFFSET_TABLE_+8), %g2 */
+    0x8410a000,        /* or     %g2, %lo(_GLOBAL_OFFSET_TABLE_+8), %g2 */
+    0xc4008000,        /* ld     [ %g2 ], %g2 */
+    0x81c08000,        /* jmp    %g2 */
+    0x01000000 /* nop */
+  };
+
+/* The format of subsequent PLT entries.  */
+static const bfd_vma sparc_vxworks_exec_plt_entry[] =
+  {
+    0x03000000,        /* sethi  %hi(_GLOBAL_OFFSET_TABLE_+f@got), %g1 */
+    0x82106000,        /* or     %g1, %lo(_GLOBAL_OFFSET_TABLE_+f@got), %g1 */
+    0xc2004000,        /* ld     [ %g1 ], %g1 */
+    0x81c04000,        /* jmp    %g1 */
+    0x01000000,        /* nop */
+    0x03000000,        /* sethi  %hi(f@pltindex), %g1 */
+    0x10800000,        /* b      _PLT_resolve */
+    0x82106000 /* or     %g1, %lo(f@pltindex), %g1 */
+  };
+
+/* The format of the first PLT entry in a VxWorks shared object.  */
+static const bfd_vma sparc_vxworks_shared_plt0_entry[] =
+  {
+    0xc405e008,        /* ld     [ %l7 + 8 ], %g2 */
+    0x81c08000,        /* jmp    %g2 */
+    0x01000000 /* nop */
+  };
+
+/* The format of subsequent PLT entries.  */
+static const bfd_vma sparc_vxworks_shared_plt_entry[] =
+  {
+    0x03000000,        /* sethi  %hi(f@got), %g1 */
+    0x82106000,        /* or     %g1, %lo(f@got), %g1 */
+    0xc205c001,        /* ld     [ %l7 + %g1 ], %g1 */
+    0x81c04000,        /* jmp    %g1 */
+    0x01000000,        /* nop */
+    0x03000000,        /* sethi  %hi(f@pltindex), %g1 */
+    0x10800000,        /* b      _PLT_resolve */
+    0x82106000 /* or     %g1, %lo(f@pltindex), %g1 */
+  };
+
 #define SPARC_ELF_PUT_WORD(htab, bfd, val, ptr)        \
        htab->put_word(bfd, val, ptr)
 
@@ -781,7 +827,6 @@ _bfd_sparc_elf_link_hash_table_create (bfd *abfd)
       ret->append_rela = sparc_elf_append_rela_64;
       ret->r_info = sparc_elf_r_info_64;
       ret->r_symndx = sparc_elf_r_symndx_64;
-      ret->build_plt_entry = sparc64_plt_entry_build;
       ret->dtpoff_reloc = R_SPARC_TLS_DTPOFF64;
       ret->dtpmod_reloc = R_SPARC_TLS_DTPMOD64;
       ret->tpoff_reloc = R_SPARC_TLS_TPOFF64;
@@ -798,7 +843,6 @@ _bfd_sparc_elf_link_hash_table_create (bfd *abfd)
       ret->append_rela = sparc_elf_append_rela_32;
       ret->r_info = sparc_elf_r_info_32;
       ret->r_symndx = sparc_elf_r_symndx_32;
-      ret->build_plt_entry = sparc32_plt_entry_build;
       ret->dtpoff_reloc = R_SPARC_TLS_DTPOFF32;
       ret->dtpmod_reloc = R_SPARC_TLS_DTPMOD32;
       ret->tpoff_reloc = R_SPARC_TLS_TPOFF32;
@@ -846,6 +890,14 @@ create_got_section (bfd *dynobj, struct bfd_link_info *info)
       || ! bfd_set_section_alignment (dynobj, htab->srelgot,
                                      htab->word_align_power))
     return FALSE;
+
+  if (htab->is_vxworks)
+    {
+      htab->sgotplt = bfd_get_section_by_name (dynobj, ".got.plt");
+      if (!htab->sgotplt)
+       return FALSE;
+    }
+
   return TRUE;
 }
 
@@ -872,6 +924,41 @@ _bfd_sparc_elf_create_dynamic_sections (bfd *dynobj,
   if (!info->shared)
     htab->srelbss = bfd_get_section_by_name (dynobj, ".rela.bss");
 
+  if (htab->is_vxworks)
+    {
+      if (!elf_vxworks_create_dynamic_sections (dynobj, info, &htab->srelplt2))
+       return FALSE;
+      if (info->shared)
+       {
+         htab->plt_header_size
+           = 4 * ARRAY_SIZE (sparc_vxworks_shared_plt0_entry);
+         htab->plt_entry_size
+           = 4 * ARRAY_SIZE (sparc_vxworks_shared_plt_entry);
+       }
+      else
+       {
+         htab->plt_header_size
+           = 4 * ARRAY_SIZE (sparc_vxworks_exec_plt0_entry);
+         htab->plt_entry_size
+           = 4 * ARRAY_SIZE (sparc_vxworks_exec_plt_entry);
+       }
+    }
+  else
+    {
+      if (ABI_64_P (dynobj))
+       {
+         htab->build_plt_entry = sparc64_plt_entry_build;
+         htab->plt_header_size = PLT64_HEADER_SIZE;
+         htab->plt_entry_size = PLT64_ENTRY_SIZE;
+       }
+      else
+       {
+         htab->build_plt_entry = sparc32_plt_entry_build;
+         htab->plt_header_size = PLT32_HEADER_SIZE;
+         htab->plt_entry_size = PLT32_ENTRY_SIZE;
+       }
+    }
+
   if (!htab->splt || !htab->srelplt || !htab->sdynbss
       || (!info->shared && !htab->srelbss))
     abort ();
@@ -1807,10 +1894,15 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, PTR inf)
        {
          asection *s = htab->splt;
 
-         /* The first four entries in .plt is reserved.  */
+         /* Allocate room for the header.  */
          if (s->size == 0)
-           s->size = (SPARC_ELF_WORD_BYTES(htab) == 8 ?
-                      PLT64_HEADER_SIZE : PLT32_HEADER_SIZE);
+           {
+             s->size = htab->plt_header_size;
+
+             /* Allocate space for the .rela.plt.unloaded relocations.  */
+             if (htab->is_vxworks && !info->shared)
+               htab->srelplt2->size = sizeof (Elf32_External_Rela) * 2;
+           }
 
          /* The procedure linkage table size is bounded by the magnitude
             of the offset we can describe in the entry.  */
@@ -1847,11 +1939,20 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, PTR inf)
            }
 
          /* Make room for this entry.  */
-         s->size += (SPARC_ELF_WORD_BYTES(htab) == 8 ?
-                     PLT64_ENTRY_SIZE : PLT32_ENTRY_SIZE);
+         s->size += htab->plt_entry_size;
 
          /* We also need to make an entry in the .rela.plt section.  */
          htab->srelplt->size += SPARC_ELF_RELA_BYTES (htab);
+
+         if (htab->is_vxworks)
+           {
+             /* Allocate space for the .got.plt entry.  */
+             htab->sgotplt->size += 4;
+
+             /* ...and for the .rela.plt.unloaded relocations.  */
+             if (!info->shared)
+               htab->srelplt2->size += sizeof (Elf32_External_Rela) * 3;
+           }
        }
       else
        {
@@ -2153,6 +2254,7 @@ _bfd_sparc_elf_size_dynamic_sections (bfd *output_bfd,
   elf_link_hash_traverse (&htab->elf, allocate_dynrelocs, (PTR) info);
 
   if (! ABI_64_P (output_bfd)
+      && !htab->is_vxworks
       && elf_hash_table (info)->dynamic_sections_created)
     {
       /* Make space for the trailing nop in .plt.  */
@@ -2179,7 +2281,8 @@ _bfd_sparc_elf_size_dynamic_sections (bfd *output_bfd,
 
       if (s == htab->splt
          || s == htab->sgot
-         || s == htab->sdynbss)
+         || s == htab->sdynbss
+         || s == htab->sgotplt)
        {
          /* Strip this section if we don't need it; see the
             comment below.  */
@@ -3428,6 +3531,97 @@ _bfd_sparc_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
   return TRUE;
 }
 
+/* Build a VxWorks PLT entry.  PLT_INDEX is the index of the PLT entry
+   and PLT_OFFSET is the byte offset from the start of .plt.  GOT_OFFSET
+   is the offset of the associated .got.plt entry from
+   _GLOBAL_OFFSET_TABLE_.  */
+
+static void
+sparc_vxworks_build_plt_entry (bfd *output_bfd, struct bfd_link_info *info,
+                              bfd_vma plt_offset, bfd_vma plt_index,
+                              bfd_vma got_offset)
+{
+  bfd_vma got_base;
+  const bfd_vma *plt_entry;
+  struct _bfd_sparc_elf_link_hash_table *htab;
+  bfd_byte *loc;
+  Elf_Internal_Rela rela;
+
+  htab = _bfd_sparc_elf_hash_table (info);
+  if (info->shared)
+    {
+      plt_entry = sparc_vxworks_shared_plt_entry;
+      got_base = 0;
+    }
+  else
+    {
+      plt_entry = sparc_vxworks_exec_plt_entry;
+      got_base = (htab->elf.hgot->root.u.def.value
+                 + htab->elf.hgot->root.u.def.section->output_offset
+                 + htab->elf.hgot->root.u.def.section->output_section->vma);
+    }
+
+  /* Fill in the entry in the procedure linkage table.  */
+  bfd_put_32 (output_bfd, plt_entry[0] + ((got_base + got_offset) >> 10),
+             htab->splt->contents + plt_offset);
+  bfd_put_32 (output_bfd, plt_entry[1] + ((got_base + got_offset) & 0x3ff),
+             htab->splt->contents + plt_offset + 4);
+  bfd_put_32 (output_bfd, plt_entry[2],
+             htab->splt->contents + plt_offset + 8);
+  bfd_put_32 (output_bfd, plt_entry[3],
+             htab->splt->contents + plt_offset + 12);
+  bfd_put_32 (output_bfd, plt_entry[4],
+             htab->splt->contents + plt_offset + 16);
+  bfd_put_32 (output_bfd, plt_entry[5] + (plt_index >> 10),
+             htab->splt->contents + plt_offset + 20);
+  /* PC-relative displacement for a branch to the start of
+     the PLT section.  */
+  bfd_put_32 (output_bfd, plt_entry[6] + (((-plt_offset - 24) >> 2)
+                                         & 0x003fffff),
+             htab->splt->contents + plt_offset + 24);
+  bfd_put_32 (output_bfd, plt_entry[7] + (plt_index & 0x3ff),
+             htab->splt->contents + plt_offset + 28);
+
+  /* Fill in the .got.plt entry, pointing initially at the
+     second half of the PLT entry.  */
+  BFD_ASSERT (htab->sgotplt != NULL);
+  bfd_put_32 (output_bfd,
+             htab->splt->output_section->vma
+             + htab->splt->output_offset
+             + plt_offset + 20,
+             htab->sgotplt->contents + got_offset);
+
+  /* Add relocations to .rela.plt.unloaded.  */
+  if (!info->shared)
+    {
+      loc = (htab->srelplt2->contents
+            + (2 + 3 * plt_index) * sizeof (Elf32_External_Rela));
+
+      /* Relocate the initial sethi.  */
+      rela.r_offset = (htab->splt->output_section->vma
+                      + htab->splt->output_offset
+                      + plt_offset);
+      rela.r_info = ELF32_R_INFO (htab->elf.hgot->indx, R_SPARC_HI22);
+      rela.r_addend = got_offset;
+      bfd_elf32_swap_reloca_out (output_bfd, &rela, loc);
+      loc += sizeof (Elf32_External_Rela);
+
+      /* Likewise the following or.  */
+      rela.r_offset += 4;
+      rela.r_info = ELF32_R_INFO (htab->elf.hgot->indx, R_SPARC_LO10);
+      bfd_elf32_swap_reloca_out (output_bfd, &rela, loc);
+      loc += sizeof (Elf32_External_Rela);
+
+      /* Relocate the .got.plt entry.  */
+      rela.r_offset = (htab->sgotplt->output_section->vma
+                      + htab->sgotplt->output_offset
+                      + got_offset);
+      rela.r_info = ELF32_R_INFO (htab->elf.hplt->indx, R_SPARC_32);
+      rela.r_addend = plt_offset + 20;
+      bfd_elf32_swap_reloca_out (output_bfd, &rela, loc);
+    }
+}
+
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
@@ -3449,7 +3643,7 @@ _bfd_sparc_elf_finish_dynamic_symbol (bfd *output_bfd,
       asection *srela;
       Elf_Internal_Rela rela;
       bfd_byte *loc;
-      bfd_vma r_offset;
+      bfd_vma r_offset, got_offset;
       int rela_index;
 
       /* This symbol has an entry in the PLT.  Set it up.  */
@@ -3460,23 +3654,48 @@ _bfd_sparc_elf_finish_dynamic_symbol (bfd *output_bfd,
       srela = htab->srelplt;
       BFD_ASSERT (splt != NULL && srela != NULL);
 
-      /* Fill in the entry in the procedure linkage table.  */
-      rela_index = SPARC_ELF_BUILD_PLT_ENTRY (htab, output_bfd, splt,
-                                             h->plt.offset, splt->size,
-                                             &r_offset);
-
       /* Fill in the entry in the .rela.plt section.  */
-      rela.r_offset = r_offset
-       + (splt->output_section->vma + splt->output_offset);
-      if (! ABI_64_P (output_bfd)
-         || h->plt.offset < (PLT64_LARGE_THRESHOLD * PLT64_ENTRY_SIZE))
+      if (htab->is_vxworks)
        {
+         /* Work out the index of this PLT entry.  */
+         rela_index = ((h->plt.offset - htab->plt_header_size)
+                       / htab->plt_entry_size);
+
+         /* Calculate the offset of the associated .got.plt entry.
+            The first three entries are reserved.  */
+         got_offset = (rela_index + 3) * 4;
+
+         sparc_vxworks_build_plt_entry (output_bfd, info, h->plt.offset,
+                                        rela_index, got_offset);
+
+
+         /* On VxWorks, the relocation points to the .got.plt entry,
+            not the .plt entry.  */
+         rela.r_offset = (htab->sgotplt->output_section->vma
+                          + htab->sgotplt->output_offset
+                          + got_offset);
          rela.r_addend = 0;
        }
       else
        {
-         rela.r_addend = -(h->plt.offset + 4)
-                         -(splt->output_section->vma + splt->output_offset);
+         /* Fill in the entry in the procedure linkage table.  */
+         rela_index = SPARC_ELF_BUILD_PLT_ENTRY (htab, output_bfd, splt,
+                                                 h->plt.offset, splt->size,
+                                                 &r_offset);
+
+         rela.r_offset = r_offset
+           + (splt->output_section->vma + splt->output_offset);
+         if (! ABI_64_P (output_bfd)
+             || h->plt.offset < (PLT64_LARGE_THRESHOLD * PLT64_ENTRY_SIZE))
+           {
+             rela.r_addend = 0;
+           }
+         else
+           {
+             rela.r_addend = (-(h->plt.offset + 4)
+                              - splt->output_section->vma
+                              - splt->output_offset);
+           }
        }
       rela.r_info = SPARC_ELF_R_INFO (htab, NULL, h->dynindx, R_SPARC_JMP_SLOT);
 
@@ -3577,10 +3796,12 @@ _bfd_sparc_elf_finish_dynamic_symbol (bfd *output_bfd,
       SPARC_ELF_APPEND_RELA (htab, output_bfd, s, &rela);
     }
 
-  /* Mark some specially defined symbols as absolute.  */
+  /* Mark some specially defined symbols as absolute.  On VxWorks,
+     _GLOBAL_OFFSET_TABLE_ is not absolute: it is relative to the
+     ".got" section.  Likewise _PROCEDURE_LINKAGE_TABLE_ and ".plt".  */
   if (strcmp (h->root.root.string, "_DYNAMIC") == 0
-      || h == htab->elf.hgot
-      || h == htab->elf.hplt)
+      || (!htab->is_vxworks
+         && (h == htab->elf.hgot || h == htab->elf.hplt)))
     sym->st_shndx = SHN_ABS;
 
   return TRUE;
@@ -3648,13 +3869,14 @@ sparc64_finish_dyn (bfd *output_bfd, struct bfd_link_info *info,
 #endif
 
 static bfd_boolean
-sparc32_finish_dyn (bfd *output_bfd,
-                   struct bfd_link_info *info ATTRIBUTE_UNUSED,
+sparc32_finish_dyn (bfd *output_bfd, struct bfd_link_info *info,
                    bfd *dynobj, asection *sdyn,
                    asection *splt ATTRIBUTE_UNUSED)
 {
   Elf32_External_Dyn *dyncon, *dynconend;
+  struct _bfd_sparc_elf_link_hash_table *htab;
 
+  htab = _bfd_sparc_elf_hash_table (info);
   dyncon = (Elf32_External_Dyn *) sdyn->contents;
   dynconend = (Elf32_External_Dyn *) (sdyn->contents + sdyn->size);
   for (; dyncon < dynconend; dyncon++)
@@ -3665,34 +3887,150 @@ sparc32_finish_dyn (bfd *output_bfd,
 
       bfd_elf32_swap_dyn_in (dynobj, dyncon, &dyn);
 
-      switch (dyn.d_tag)
+      if (htab->is_vxworks && dyn.d_tag == DT_RELASZ)
        {
-       case DT_PLTGOT:   name = ".plt"; size = FALSE; break;
-       case DT_PLTRELSZ: name = ".rela.plt"; size = TRUE; break;
-       case DT_JMPREL:   name = ".rela.plt"; size = FALSE; break;
-       default:          name = NULL; size = FALSE; break;
+         /* On VxWorks, DT_RELASZ should not include the relocations
+            in .rela.plt.  */
+         if (htab->srelplt)
+           {
+             dyn.d_un.d_val -= htab->srelplt->size;
+             bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
+           }
        }
-
-      if (name != NULL)
+      else if (htab->is_vxworks && dyn.d_tag == DT_PLTGOT)
        {
-         asection *s;
+         /* On VxWorks, DT_PLTGOT should point to the start of the GOT,
+            not to the start of the PLT.  */
+         if (htab->sgotplt)
+           {
+             dyn.d_un.d_val = (htab->sgotplt->output_section->vma
+                               + htab->sgotplt->output_offset);
+             bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
+           }
+       }
+      else
+       {
+         switch (dyn.d_tag)
+           {
+           case DT_PLTGOT:   name = ".plt"; size = FALSE; break;
+           case DT_PLTRELSZ: name = ".rela.plt"; size = TRUE; break;
+           case DT_JMPREL:   name = ".rela.plt"; size = FALSE; break;
+           default:      name = NULL; size = FALSE; break;
+           }
 
-         s = bfd_get_section_by_name (output_bfd, name);
-         if (s == NULL)
-           dyn.d_un.d_val = 0;
-         else
+         if (name != NULL)
            {
-             if (! size)
-               dyn.d_un.d_ptr = s->vma;
+             asection *s;
+
+             s = bfd_get_section_by_name (output_bfd, name);
+             if (s == NULL)
+               dyn.d_un.d_val = 0;
              else
-               dyn.d_un.d_val = s->size;
+               {
+                 if (! size)
+                   dyn.d_un.d_ptr = s->vma;
+                 else
+                   dyn.d_un.d_val = s->size;
+               }
+             bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
            }
-         bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
        }
     }
   return TRUE;
 }
 
+/* Install the first PLT entry in a VxWorks executable and make sure that
+   .rela.plt.unloaded relocations have the correct symbol indexes.  */
+
+static void
+sparc_vxworks_finish_exec_plt (bfd *output_bfd, struct bfd_link_info *info)
+{
+  struct _bfd_sparc_elf_link_hash_table *htab;
+  Elf_Internal_Rela rela;
+  bfd_vma got_base;
+  bfd_byte *loc;
+
+  htab = _bfd_sparc_elf_hash_table (info);
+
+  /* Calculate the absolute value of _GLOBAL_OFFSET_TABLE_.  */
+  got_base = (htab->elf.hgot->root.u.def.section->output_section->vma
+             + htab->elf.hgot->root.u.def.section->output_offset
+             + htab->elf.hgot->root.u.def.value);
+
+  /* Install the initial PLT entry.  */
+  bfd_put_32 (output_bfd,
+             sparc_vxworks_exec_plt0_entry[0] + ((got_base + 8) >> 10),
+             htab->splt->contents);
+  bfd_put_32 (output_bfd,
+             sparc_vxworks_exec_plt0_entry[1] + ((got_base + 8) & 0x3ff),
+             htab->splt->contents + 4);
+  bfd_put_32 (output_bfd,
+             sparc_vxworks_exec_plt0_entry[2],
+             htab->splt->contents + 8);
+  bfd_put_32 (output_bfd,
+             sparc_vxworks_exec_plt0_entry[3],
+             htab->splt->contents + 12);
+  bfd_put_32 (output_bfd,
+             sparc_vxworks_exec_plt0_entry[4],
+             htab->splt->contents + 16);
+
+  loc = htab->srelplt2->contents;
+
+  /* Add an unloaded relocation for the initial entry's "sethi".  */
+  rela.r_offset = (htab->splt->output_section->vma
+                  + htab->splt->output_offset);
+  rela.r_info = ELF32_R_INFO (htab->elf.hgot->indx, R_SPARC_HI22);
+  rela.r_addend = 8;
+  bfd_elf32_swap_reloca_out (output_bfd, &rela, loc);
+  loc += sizeof (Elf32_External_Rela);
+
+  /* Likewise the following "or".  */
+  rela.r_offset += 4;
+  rela.r_info = ELF32_R_INFO (htab->elf.hgot->indx, R_SPARC_LO10);
+  bfd_elf32_swap_reloca_out (output_bfd, &rela, loc);
+  loc += sizeof (Elf32_External_Rela);
+
+  /* Fix up the remaining .rela.plt.unloaded relocations.  They may have
+     the wrong symbol index for _G_O_T_ or _P_L_T_ depending on the order
+     in which symbols were output.  */
+  while (loc < htab->srelplt2->contents + htab->srelplt2->size)
+    {
+      Elf_Internal_Rela rel;
+
+      /* The entry's initial "sethi" (against _G_O_T_).  */
+      bfd_elf32_swap_reloc_in (output_bfd, loc, &rel);
+      rel.r_info = ELF32_R_INFO (htab->elf.hgot->indx, R_SPARC_HI22);
+      bfd_elf32_swap_reloc_out (output_bfd, &rel, loc);
+      loc += sizeof (Elf32_External_Rela);
+
+      /* The following "or" (also against _G_O_T_).  */
+      bfd_elf32_swap_reloc_in (output_bfd, loc, &rel);
+      rel.r_info = ELF32_R_INFO (htab->elf.hgot->indx, R_SPARC_LO10);
+      bfd_elf32_swap_reloc_out (output_bfd, &rel, loc);
+      loc += sizeof (Elf32_External_Rela);
+
+      /* The .got.plt entry (against _P_L_T_).  */
+      bfd_elf32_swap_reloc_in (output_bfd, loc, &rel);
+      rel.r_info = ELF32_R_INFO (htab->elf.hplt->indx, R_SPARC_32);
+      bfd_elf32_swap_reloc_out (output_bfd, &rel, loc);
+      loc += sizeof (Elf32_External_Rela);
+    }
+}
+
+/* Install the first PLT entry in a VxWorks shared object.  */
+
+static void
+sparc_vxworks_finish_shared_plt (bfd *output_bfd, struct bfd_link_info *info)
+{
+  struct _bfd_sparc_elf_link_hash_table *htab;
+  unsigned int i;
+
+  htab = _bfd_sparc_elf_hash_table (info);
+  for (i = 0; i < ARRAY_SIZE (sparc_vxworks_shared_plt0_entry); i++)
+    bfd_put_32 (output_bfd, sparc_vxworks_shared_plt0_entry[i],
+               htab->splt->contents + i * 4);
+}
+
 bfd_boolean
 _bfd_sparc_elf_finish_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
 {
@@ -3726,18 +4064,24 @@ _bfd_sparc_elf_finish_dynamic_sections (bfd *output_bfd, struct bfd_link_info *i
       /* Initialize the contents of the .plt section.  */
       if (splt->size > 0)
        {
-         if (ABI_64_P (output_bfd))
-           memset (splt->contents, 0, 4 * PLT64_ENTRY_SIZE);
+         if (htab->is_vxworks)
+           {
+             if (info->shared)
+               sparc_vxworks_finish_shared_plt (output_bfd, info);
+             else
+               sparc_vxworks_finish_exec_plt (output_bfd, info);
+           }
          else
            {
-             memset (splt->contents, 0, 4 * PLT32_ENTRY_SIZE);
-             bfd_put_32 (output_bfd, (bfd_vma) SPARC_NOP,
-                         splt->contents + splt->size - 4);
+             memset (splt->contents, 0, htab->plt_header_size);
+             if (!ABI_64_P (output_bfd))
+               bfd_put_32 (output_bfd, (bfd_vma) SPARC_NOP,
+                           splt->contents + splt->size - 4);
            }
        }
 
-      elf_section_data (splt->output_section)->this_hdr.sh_entsize =
-       (ABI_64_P (output_bfd) ? PLT64_ENTRY_SIZE : PLT32_ENTRY_SIZE);
+      elf_section_data (splt->output_section)->this_hdr.sh_entsize
+       = htab->plt_entry_size;
     }
 
   /* Set the first entry in the global offset table to the address of
index 624aea5..0a5a88b 100644 (file)
@@ -61,6 +61,15 @@ struct _bfd_sparc_elf_link_hash_table
   /* Small local sym to section mapping cache.  */
   struct sym_sec_cache sym_sec;
 
+  /* True if the target system is VxWorks.  */
+  int is_vxworks;
+
+  /* The (unloaded but important) .rela.plt.unloaded section, for VxWorks.  */
+  asection *srelplt2;
+
+  /* .got.plt is only used on VxWorks.  */
+  asection *sgotplt;
+
   void (*put_word) (bfd *, bfd_vma, void *);
   void (*append_rela) (bfd *, asection *, Elf_Internal_Rela *);
   bfd_vma (*r_info) (Elf_Internal_Rela *, bfd_vma, bfd_vma);
@@ -70,6 +79,8 @@ struct _bfd_sparc_elf_link_hash_table
   int dynamic_interpreter_size;
   unsigned int word_align_power;
   unsigned int align_power_max;
+  unsigned int plt_header_size;
+  unsigned int plt_entry_size;
   int bytes_per_word;
   int bytes_per_rela;
   int dtpoff_reloc;
index c303c31..0c5cfe4 100644 (file)
@@ -972,6 +972,9 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_MIPS_TLS_TPREL_HI16",
   "BFD_RELOC_MIPS_TLS_TPREL_LO16",
 
+  "BFD_RELOC_MIPS_COPY",
+  "BFD_RELOC_MIPS_JUMP_SLOT",
+
   "BFD_RELOC_FRV_LABEL16",
   "BFD_RELOC_FRV_LABEL24",
   "BFD_RELOC_FRV_LO16",
@@ -1062,6 +1065,11 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_X86_64_TPOFF32",
   "BFD_RELOC_X86_64_GOTOFF64",
   "BFD_RELOC_X86_64_GOTPC32",
+  "BFD_RELOC_X86_64_GOT64",
+  "BFD_RELOC_X86_64_GOTPCREL64",
+  "BFD_RELOC_X86_64_GOTPC64",
+  "BFD_RELOC_X86_64_GOTPLT64",
+  "BFD_RELOC_X86_64_PLTOFF64",
   "BFD_RELOC_X86_64_GOTPC32_TLSDESC",
   "BFD_RELOC_X86_64_TLSDESC_CALL",
   "BFD_RELOC_X86_64_TLSDESC",
@@ -1377,6 +1385,20 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_BFIN_12_PCREL_JUMP_S",
   "BFD_RELOC_BFIN_24_PCREL_CALL_X",
   "BFD_RELOC_BFIN_24_PCREL_JUMP_L",
+  "BFD_RELOC_BFIN_GOT17M4",
+  "BFD_RELOC_BFIN_GOTHI",
+  "BFD_RELOC_BFIN_GOTLO",
+  "BFD_RELOC_BFIN_FUNCDESC",
+  "BFD_RELOC_BFIN_FUNCDESC_GOT17M4",
+  "BFD_RELOC_BFIN_FUNCDESC_GOTHI",
+  "BFD_RELOC_BFIN_FUNCDESC_GOTLO",
+  "BFD_RELOC_BFIN_FUNCDESC_VALUE",
+  "BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4",
+  "BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI",
+  "BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO",
+  "BFD_RELOC_BFIN_GOTOFF17M4",
+  "BFD_RELOC_BFIN_GOTOFFHI",
+  "BFD_RELOC_BFIN_GOTOFFLO",
   "BFD_RELOC_BFIN_GOT",
   "BFD_RELOC_BFIN_PLTPC",
   "BFD_ARELOC_BFIN_PUSH",
index 3d1f342..f11ccb4 100644 (file)
@@ -1,6 +1,6 @@
 # Makefile for program source directory in GNU NLS utilities package.
 # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
-# Copyright 2001, 2003 Free Software Foundation, Inc.
+# Copyright 2001, 2003, 2006 Free Software Foundation, Inc.
 #
 # This file may be copied and used freely without restrictions.  It can
 # be used in projects which are not available under the GNU Public License
@@ -199,7 +199,7 @@ check: all
 
 cat-id-tbl.o: ../intl/libgettext.h
 
-html dvi info tags TAGS ID:
+html dvi pdf ps info tags TAGS ID:
 
 mostlyclean:
        rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
index 1c11480..8bcf979 100644 (file)
@@ -115,6 +115,7 @@ cpu-v850.c
 cpu-vax.c
 cpu-w65.c
 cpu-we32k.c
+cpu-xc16x.c
 cpu-xstormy16.c
 cpu-xtensa.c
 cpu-z80.c
@@ -174,6 +175,7 @@ elf32-sh-symbian.c
 elf32-sparc.c
 elf32-v850.c
 elf32-vax.c
+elf32-xc16x.c
 elf32-xstormy16.c
 elf32-xtensa.c
 elf64-alpha.c
index 2b66422..2a95afe 100644 (file)
@@ -1,65 +1,65 @@
-# Mensajes en español para bfd 2.15.96.
-# Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-# Cristian Othón Martínez Vera <cfuga@itam.mx>, 2002, 2003, 2004, 2005.
+# Mensajes en español para bfd 2.16.93.
+# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# Cristian Othón Martínez Vera <cfuga@itam.mx>, 2002, 2003, 2004, 2005, 2006.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bfd 2.15.96\n"
+"Project-Id-Version: bfd 2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-05 22:14+1030\n"
-"PO-Revision-Date: 2005-03-14 17:11-0600\n"
+"POT-Creation-Date: 2005-10-25 22:24+0930\n"
+"PO-Revision-Date: 2006-05-27 11:34-0500\n"
 "Last-Translator: Cristian Othón Martínez Vera <cfuga@itam.mx>\n"
 "Language-Team: Spanish <es@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: aout-adobe.c:204
+#: aout-adobe.c:127
 msgid "%B: Unknown section type in a.out.adobe file: %x\n"
 msgstr "%B: Tipo de sección desconocido en el fichero a.out.adobe: %x\n"
 
-#: aout-cris.c:207
+#: aout-cris.c:202
 #, c-format
 msgid "%s: Invalid relocation type exported: %d"
 msgstr "%s: Tipo de reubicación exportado inválido: %d"
 
-#: aout-cris.c:251
+#: aout-cris.c:245
 msgid "%B: Invalid relocation type imported: %d"
 msgstr "%B: Tipo de reubicación importado inválido: %d"
 
-#: aout-cris.c:262
+#: aout-cris.c:256
 msgid "%B: Bad relocation record imported: %d"
 msgstr "%B: Registro de reubicación importado erróneo: %d"
 
-#: aoutx.h:1287 aoutx.h:1626
+#: aoutx.h:1244 aoutx.h:1578
 #, c-format
 msgid "%s: can not represent section `%s' in a.out object file format"
 msgstr "%s: no se puede representar la sección `%s' en el fichero objeto de formato a.out"
 
-#: aoutx.h:1592
+#: aoutx.h:1544
 #, c-format
 msgid "%s: can not represent section for symbol `%s' in a.out object file format"
 msgstr "%s: no se puede representar la sección para el símbolo `%s' en el fichero objeto de formato a.out"
 
-#: aoutx.h:1594
+#: aoutx.h:1546
 msgid "*unknown*"
 msgstr "*desconocido*"
 
-#: aoutx.h:3682
+#: aoutx.h:5281
 #, c-format
 msgid "%s: relocatable link from %s to %s not supported"
 msgstr "%s: el enlace reubicable de %s a %s no está soportado"
 
-#: archive.c:1729
+#: archive.c:1760
 msgid "Warning: writing archive was slow: rewriting timestamp\n"
 msgstr "Aviso: la escritura del fichero fue lenta: reescribiendo la marca de tiempo\n"
 
 # ¡Uff! Si utilizáramos file=archivo, esta traducción sería imposible. cfuga
-#: archive.c:1992
+#: archive.c:2019
 msgid "Reading archive file mod timestamp"
 msgstr "Leyendo el archivo de la modificación de marca de tiempo del fichero"
 
-#: archive.c:2018
+#: archive.c:2043
 msgid "Writing updated armap timestamp"
 msgstr "Escribiendo la marca de tiempo actualizada de armap"
 
@@ -143,22 +143,22 @@ msgstr "Fichero demasiado grande"
 msgid "#<Invalid error code>"
 msgstr "#<Código de error inválido>"
 
-#: bfd.c:768
+#: bfd.c:771
 #, c-format
 msgid "BFD %s assertion fail %s:%d"
 msgstr "falló la aseveración BFD %s %s:%d"
 
-#: bfd.c:784
+#: bfd.c:787
 #, c-format
 msgid "BFD %s internal error, aborting at %s line %d in %s\n"
 msgstr "error interno de BFD %s, abortando en %s línea %d en %s\n"
 
-#: bfd.c:788
+#: bfd.c:791
 #, c-format
 msgid "BFD %s internal error, aborting at %s line %d\n"
 msgstr "error interno de BFD %s, abortando en %s línea %d\n"
 
-#: bfd.c:790
+#: bfd.c:793
 msgid "Please report this bug.\n"
 msgstr "Por favor reporte este bicho.\n"
 
@@ -172,54 +172,59 @@ msgstr "no se mapea: datos=%lx mapeados%d\n"
 msgid "not mapping: env var not set\n"
 msgstr "no se mapea: no se estableció la variable de ambiente\n"
 
-#: binary.c:309
+#: binary.c:285
 #, c-format
 msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx."
 msgstr "Aviso: Escribiendo la sección `%s' a un desplazamiento de fichero grande (pe negativo) 0x%lx."
 
-#: coff64-rs6000.c:2107 coff-rs6000.c:3608
+#: coff64-rs6000.c:2109 coff-rs6000.c:3610
 msgid "%B: symbol `%s' has unrecognized smclas %d"
 msgstr "%B: el símbolo `%s' tiene smclas %d no reconocido"
 
-#: coff-a29k.c:120
-msgid "Missing IHCONST"
-msgstr "IHCONST faltante"
-
-#: coff-a29k.c:181
-msgid "Missing IHIHALF"
-msgstr "IHIHALF faltante"
-
-#: coff-a29k.c:213 coff-or32.c:227
-msgid "Unrecognized reloc"
-msgstr "Reubicación no reconocida"
-
-#: coff-a29k.c:409
-msgid "missing IHCONST reloc"
-msgstr "reubicación IHCONST faltante"
+#: coff-alpha.c:489
+msgid ""
+"%B: Cannot handle compressed Alpha binaries.\n"
+"   Use compiler flags, or objZ, to generate uncompressed binaries."
+msgstr ""
+"%B: No se pueden manejar binarios Alpha comprimidos.\n"
+"   Use las opciones del compilador, o objZ, para generar binarios sin comprimir."
 
-#: coff-a29k.c:499
-msgid "missing IHIHALF reloc"
-msgstr "reubicación IHIHALF faltante"
+#: coff-alpha.c:646
+msgid "%B: unknown/unsupported relocation type %d"
+msgstr "%B: tipo de reubicación %d desconocida/sin soporte"
 
-#: coff-alpha.c:881 coff-alpha.c:918 coff-alpha.c:1972 coff-mips.c:985
+#: coff-alpha.c:898 coff-alpha.c:935 coff-alpha.c:2007 coff-mips.c:985
 msgid "GP relative relocation used when GP not defined"
 msgstr "se usó una reubicación GP relativa cuando GP no estaba definido"
 
-#: coff-alpha.c:1467
+#: coff-alpha.c:1484
 msgid "using multiple gp values"
 msgstr "usando valores múltiples de gp"
 
-#: coff-arm.c:1066 elf32-arm.c:1425
+#: coff-alpha.c:1543
+msgid "%B: unsupported relocation: ALPHA_R_GPRELHIGH"
+msgstr "%B: tipo de reubicación sin soporte: ALPHA_R_GPRELHIGH"
+
+#: coff-alpha.c:1550
+msgid "%B: unsupported relocation: ALPHA_R_GPRELLOW"
+msgstr "%B: tipo de reubicación sin soporte: ALPHA_R_GPRELLOW"
+
+#: coff-alpha.c:1557 elf32-m32r.c:2471 elf64-alpha.c:3912 elf64-alpha.c:4038
+#: elf32-ia64.c:4108 elf64-ia64.c:4108
+msgid "%B: unknown relocation type %d"
+msgstr "%B: tipo de reubicación %d desconocido"
+
+#: coff-arm.c:990 elf32-arm.c:1926
 #, c-format
 msgid "%B: unable to find THUMB glue '%s' for `%s'"
 msgstr "%B: no se puede encontrar el pegamento THUMB '%s' para `%s'"
 
-#: coff-arm.c:1096 elf32-arm.c:1459
+#: coff-arm.c:1019 elf32-arm.c:1960
 #, c-format
 msgid "%B: unable to find ARM glue '%s' for `%s'"
 msgstr "%B: no se puede encontrar el pegamento ARM '%s' para `%s'"
 
-#: coff-arm.c:1394 elf32-arm.c:2165
+#: coff-arm.c:1319 elf32-arm.c:2683
 #, c-format
 msgid ""
 "%B(%s): warning: interworking not enabled.\n"
@@ -228,7 +233,7 @@ msgstr ""
 "%B(%s): aviso: interoperabilidad no activada.\n"
 "  primer suceso: %B: llamada arm a thumb"
 
-#: coff-arm.c:1484
+#: coff-arm.c:1409
 #, c-format
 msgid ""
 "%B(%s): warning: interworking not enabled.\n"
@@ -239,148 +244,148 @@ msgstr ""
 "  primer suceso: %B: llamada arm a thumb\n"
 "  considere reenlazar con --support-old-code activado"
 
-#: coff-arm.c:1776 cofflink.c:3013 coff-tic80.c:687
+#: coff-arm.c:1702 cofflink.c:3015 coff-tic80.c:695
 msgid "%B: bad reloc address 0x%lx in section `%A'"
 msgstr "%B: dirección de reubicación 0x%lx errónea en la sección `%A'"
 
-#: coff-arm.c:2110
+#: coff-arm.c:2028
 msgid "%B: illegal symbol index in reloc: %d"
 msgstr "%B: índice de símbolos ilegal en la reubicación: %d"
 
-#: coff-arm.c:2243
+#: coff-arm.c:2158
 #, c-format
 msgid "ERROR: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d"
 msgstr "ERROR: %B está compilado para APCS-%d, mientras que %B está compilado para APCS-%d"
 
-#: coff-arm.c:2259 elf32-arm.c:3583
+#: coff-arm.c:2174 elf32-arm.c:5093
 #, c-format
 msgid "ERROR: %B passes floats in float registers, whereas %B passes them in integer registers"
 msgstr "ERROR: %B pasa números de coma flotante en registros de coma flotante, mientras que %B los pasa en registros enteros"
 
-#: coff-arm.c:2262 elf32-arm.c:3587
+#: coff-arm.c:2177 elf32-arm.c:5097
 #, c-format
 msgid "ERROR: %B passes floats in integer registers, whereas %B passes them in float registers"
 msgstr "ERROR: %B pasa números de coma flotante en registros enteros, mientras que %B los pasa en registros de coma flotante"
 
-#: coff-arm.c:2276
+#: coff-arm.c:2191
 #, c-format
 msgid "ERROR: %B is compiled as position independent code, whereas target %B is absolute position"
 msgstr "ERROR: %B está compilado como código independiente de posición, mientras que el objetivo %B es de posición absoluta"
 
-#: coff-arm.c:2279
+#: coff-arm.c:2194
 #, c-format
 msgid "ERROR: %B is compiled as absolute position code, whereas target %B is position independent"
 msgstr "ERROR: %B está compilado como código de posición absoluta, mientras que el objetivo %B es independiente de posición"
 
-#: coff-arm.c:2307 elf32-arm.c:3652
+#: coff-arm.c:2222 elf32-arm.c:5162
 #, c-format
 msgid "Warning: %B supports interworking, whereas %B does not"
 msgstr "Aviso: %B soporta interoperabilidad, mientras que %B no"
 
-#: coff-arm.c:2310 elf32-arm.c:3658
+#: coff-arm.c:2225 elf32-arm.c:5168
 #, c-format
 msgid "Warning: %B does not support interworking, whereas %B does"
 msgstr "Aviso: %B no soporta interoperabilidad, mientras que %B sí"
 
-#: coff-arm.c:2336
+#: coff-arm.c:2249
 #, c-format
 msgid "private flags = %x:"
 msgstr "opciones privadas = %x:"
 
-#: coff-arm.c:2344 elf32-arm.c:3709
+#: coff-arm.c:2257 elf32-arm.c:5219
 #, c-format
 msgid " [floats passed in float registers]"
 msgstr "[números de coma flotante pasados en registros de coma flotante]"
 
-#: coff-arm.c:2346
+#: coff-arm.c:2259
 #, c-format
 msgid " [floats passed in integer registers]"
 msgstr "[números de coma flotante pasados en registros enteros]"
 
-#: coff-arm.c:2349 elf32-arm.c:3712
+#: coff-arm.c:2262 elf32-arm.c:5222
 #, c-format
 msgid " [position independent]"
 msgstr "[independiente de posición]"
 
-#: coff-arm.c:2351
+#: coff-arm.c:2264
 #, c-format
 msgid " [absolute position]"
 msgstr "[posición absoluta]"
 
-#: coff-arm.c:2355
+#: coff-arm.c:2268
 #, c-format
 msgid " [interworking flag not initialised]"
 msgstr "[opción de interoperabilidad no iniciada]"
 
-#: coff-arm.c:2357
+#: coff-arm.c:2270
 #, c-format
 msgid " [interworking supported]"
 msgstr "[soporte para interoperabilidad]"
 
-#: coff-arm.c:2359
+#: coff-arm.c:2272
 #, c-format
 msgid " [interworking not supported]"
 msgstr "[sin soporte para interoperabilidad]"
 
-#: coff-arm.c:2407 elf32-arm.c:3390
+#: coff-arm.c:2318 elf32-arm.c:4571
 #, c-format
 msgid "Warning: Not setting interworking flag of %B since it has already been specified as non-interworking"
 msgstr "Aviso: No se establece la opción de interoperabilidad de %B ya que se había especificado con anterioridad como no interoperable"
 
-#: coff-arm.c:2411 elf32-arm.c:3394
+#: coff-arm.c:2322 elf32-arm.c:4575
 #, c-format
 msgid "Warning: Clearing the interworking flag of %B due to outside request"
 msgstr "Aviso: Limpiando la opción de interoperabilidad de %B debido a una petición externa"
 
-#: coffcode.h:859
+#: coffcode.h:849
 msgid "%B: warning: COMDAT symbol '%s' does not match section name '%s'"
 msgstr "%B: aviso: el símbolo COMDAT '%s' no coincide con el nombre de sección '%s'"
 
 #. Generate a warning message rather using the 'unhandled'
 #. variable as this will allow some .sys files generate by
 #. other toolchains to be processed.  See bugzilla issue 196.
-#: coffcode.h:1072
+#: coffcode.h:1061
 msgid "%B: Warning: Ignoring section flag IMAGE_SCN_MEM_NOT_PAGED in section %s"
 msgstr "%B: Aviso: Se ignora la opción de sección IMAGE_SCN_MEM_NOT_PAGED en la sección %s"
 
-#: coffcode.h:1127
+#: coffcode.h:1116
 msgid "%B (%s): Section flag %s (0x%x) ignored"
 msgstr "%B (%s): Se ignora la opción de sección %s (0x%x)"
 
-#: coffcode.h:2255
+#: coffcode.h:2204
 #, c-format
 msgid "Unrecognized TI COFF target id '0x%x'"
 msgstr "Id de objetivo TI COFF '0x%x' no reconocido"
 
-#: coffcode.h:4375
+#: coffcode.h:4211
 msgid "%B: warning: line number table read failed"
 msgstr "%B: aviso: falló la lectura de tabla de números de línea"
 
-#: coffcode.h:4407
+#: coffcode.h:4243
 msgid "%B: warning: illegal symbol index %ld in line numbers"
 msgstr "%B: aviso: índice de símbolos %ld ilegal en los números de línea"
 
-#: coffcode.h:4421
+#: coffcode.h:4257
 msgid "%B: warning: duplicate line number information for `%s'"
 msgstr "%B: aviso: información duplicada de números de línea para `%s'"
 
-#: coffcode.h:4771
+#: coffcode.h:4597
 msgid "%B: Unrecognized storage class %d for %s symbol `%s'"
 msgstr "%B: Clase de almacenamiento %d no reconocida para %s símbolo `%s'"
 
-#: coffcode.h:4904
+#: coffcode.h:4723
 msgid "warning: %B: local symbol `%s' has no section"
 msgstr "aviso: %B: el símbolo local `%s' no tiene sección"
 
-#: coffcode.h:5010 coff-i860.c:586 coff-tic54x.c:376
+#: coffcode.h:4827 coff-i860.c:586 coff-tic54x.c:376
 msgid "%B: warning: illegal symbol index %ld in relocs"
 msgstr "%B: aviso: índice de símbolos %ld ilegal en reubicaciones"
 
-#: coffcode.h:5048
+#: coffcode.h:4865
 msgid "%B: illegal relocation type %d at address 0x%lx"
 msgstr "%B: tipo de reubicación %d ilegal en la dirección 0x%lx"
 
-#: coffgen.c:1594
+#: coffgen.c:1511
 msgid "%B: bad string table size %lu"
 msgstr "%B: tamaño de tabla de cadenas %lu erróneo"
 
@@ -398,7 +403,7 @@ msgstr "La reubicaci
 msgid "uncertain calling convention for non-COFF symbol"
 msgstr "convención de llamada incierta para un símbolo que no es COFF"
 
-#: cofflink.c:507 elflink.c:3955
+#: cofflink.c:507 elflink.c:3948
 msgid "Warning: type of symbol `%s' changed from %d to %d in %B"
 msgstr "Aviso: el tipo del símbolo `%s' cambió de %d a %d en %B"
 
@@ -406,17 +411,17 @@ msgstr "Aviso: el tipo del s
 msgid "%B: relocs in section `%A', but it has no contents"
 msgstr "%B: reubicaciones en la sección `%A', pero no tiene contenido"
 
-#: cofflink.c:2624 coffswap.h:890
+#: cofflink.c:2624 coffswap.h:823
 #, c-format
 msgid "%s: %s: reloc overflow: 0x%lx > 0xffff"
 msgstr "%s: %s: desbordamiento de reubicación: 0x%lx > 0xffff"
 
-#: cofflink.c:2633 coffswap.h:876
+#: cofflink.c:2633 coffswap.h:809
 #, c-format
 msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff"
 msgstr "%s: aviso: %s: desbordamiento de número de línea: 0x%lx > 0xffff"
 
-#: coff-m68k.c:482 elf32-m68k.c:2128
+#: coff-m68k.c:482 elf32-bfin.c:2722 elf32-m68k.c:2193
 msgid "unsupported reloc type"
 msgstr "tipo de reubicación sin soporte"
 
@@ -444,17 +449,21 @@ msgstr "Tipo de Reubicaci
 msgid "GP relative relocation when _gp not defined"
 msgstr "reubicación GP relativa cuando _gp no está definido"
 
-#: coff-rs6000.c:2783
+#: coff-or32.c:227
+msgid "Unrecognized reloc"
+msgstr "Reubicación no reconocida"
+
+#: coff-rs6000.c:2785
 #, c-format
 msgid "%s: unsupported relocation type 0x%02x"
 msgstr "%s: tipo de reubicación 0x%02x sin soporte"
 
-#: coff-rs6000.c:2876
+#: coff-rs6000.c:2878
 #, c-format
 msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry"
 msgstr "%s: reubicación de TOC en 0x%x al símbolo `%s' sin entrada TOC"
 
-#: coff-tic4x.c:174 coff-tic54x.c:282 coff-tic80.c:450
+#: coff-tic4x.c:174 coff-tic54x.c:282 coff-tic80.c:458
 #, c-format
 msgid "Unrecognized reloc type 0x%x"
 msgstr "Tipo de reubicación 0x%x no reconocida"
@@ -478,72 +487,76 @@ msgstr "ERROR: %B est
 msgid "warning: unable to update contents of %s section in %s"
 msgstr "aviso: no se puede actualizar el contenido de la sección %s en %s"
 
-#: dwarf2.c:296
+#: dwarf2.c:315
 msgid "Dwarf Error: Can't find .debug_str section."
 msgstr "Error de Dwarf: No se puede encontrar la sección .debug_str."
 
-#: dwarf2.c:314
+#: dwarf2.c:333
 #, c-format
 msgid "Dwarf Error: DW_FORM_strp offset (%lu) greater than or equal to .debug_str size (%lu)."
 msgstr "Error de Dwarf: El desplazamiento DW_FROM_strp (%lu) es más grande o igual que el tamaño de .debug_str (%lu)."
 
-#: dwarf2.c:388
+#: dwarf2.c:426
 msgid "Dwarf Error: Can't find .debug_abbrev section."
 msgstr "Error de Dwarf: No se puede encontrar la sección .debug_abbrev."
 
-#: dwarf2.c:403
+#: dwarf2.c:441
 #, c-format
 msgid "Dwarf Error: Abbrev offset (%lu) greater than or equal to .debug_abbrev size (%lu)."
 msgstr "Error de Dwarf: El desplazamiento de abreviatura (%lu) es más grande o igual que el tamaño de .debug_abbrev (%lu)."
 
-#: dwarf2.c:601
+#: dwarf2.c:656
 #, c-format
 msgid "Dwarf Error: Invalid or unhandled FORM value: %u."
 msgstr "Error de Dwarf: Valor de FORM inválido o no manejado: %u."
 
-#: dwarf2.c:773
+#: dwarf2.c:856
 msgid "Dwarf Error: mangled line number section (bad file number)."
 msgstr "Error de Dwarf: sección de números de línea revuelta (número erróneo de fichero)."
 
-#: dwarf2.c:866
+#: dwarf2.c:947
 msgid "Dwarf Error: Can't find .debug_line section."
 msgstr "Error de Dwarf: No se puede encontrar lan sección .debug_line."
 
-#: dwarf2.c:883
+#: dwarf2.c:964
 #, c-format
 msgid "Dwarf Error: Line offset (%lu) greater than or equal to .debug_line size (%lu)."
 msgstr "Error de Dwarf: El desplazamiento de línea (%lu) es más grande o igual que el tamaño de .debug_line (%lu)."
 
-#: dwarf2.c:1088
+#: dwarf2.c:1192
 msgid "Dwarf Error: mangled line number section."
 msgstr "Error de Dwarf: sección de números de línea revuelta."
 
-#: dwarf2.c:1285 dwarf2.c:1343 dwarf2.c:1498
+#: dwarf2.c:1382
+msgid "Dwarf Error: Can't find .debug_ranges section."
+msgstr "Error de Dwarf: No se puede encontrar lan sección .debug_ranges."
+
+#: dwarf2.c:1544 dwarf2.c:1660 dwarf2.c:1930
 #, c-format
 msgid "Dwarf Error: Could not find abbrev number %u."
 msgstr "Error de Dwarf: No se puede encontrar el número de abreviatura %u."
 
-#: dwarf2.c:1459
+#: dwarf2.c:1891
 #, c-format
 msgid "Dwarf Error: found dwarf version '%u', this reader only handles version 2 information."
 msgstr "Error de Dwarf: se encontró la versión de dwarf '%u', este lector solamente maneja información de la versión 2."
 
-#: dwarf2.c:1466
+#: dwarf2.c:1898
 #, c-format
 msgid "Dwarf Error: found address size '%u', this reader can not handle sizes greater than '%u'."
 msgstr "Error de Dwarf: se encontró el tamaño de dirección '%u', este lector no puede manejar tamaños más grandes que '%u'."
 
-#: dwarf2.c:1489
+#: dwarf2.c:1921
 #, c-format
 msgid "Dwarf Error: Bad abbrev number: %u."
 msgstr "Error de Dwarf: Número de abreviación erróneo: %u."
 
-#: ecoff.c:1269
+#: ecoff.c:1227
 #, c-format
 msgid "Unknown basic type %d"
 msgstr "Tipo básico %d desconocido"
 
-#: ecoff.c:1529
+#: ecoff.c:1484
 #, c-format
 msgid ""
 "\n"
@@ -552,7 +565,7 @@ msgstr ""
 "\n"
 "      Símbolo final+1: %ld"
 
-#: ecoff.c:1536 ecoff.c:1539
+#: ecoff.c:1491 ecoff.c:1494
 #, c-format
 msgid ""
 "\n"
@@ -561,7 +574,7 @@ msgstr ""
 "\n"
 "      Primer símbolo: %ld"
 
-#: ecoff.c:1551
+#: ecoff.c:1506
 #, c-format
 msgid ""
 "\n"
@@ -570,7 +583,7 @@ msgstr ""
 "\n"
 "      Símbolo final+1: %-7ld Tipo: %s"
 
-#: ecoff.c:1558
+#: ecoff.c:1513
 #, c-format
 msgid ""
 "\n"
@@ -579,7 +592,7 @@ msgstr ""
 "\n"
 "      Símbolo local: %ld"
 
-#: ecoff.c:1566
+#: ecoff.c:1521
 #, c-format
 msgid ""
 "\n"
@@ -588,7 +601,7 @@ msgstr ""
 "\n"
 "      struct; símbolo final+1: %ld"
 
-#: ecoff.c:1571
+#: ecoff.c:1526
 #, c-format
 msgid ""
 "\n"
@@ -597,7 +610,7 @@ msgstr ""
 "\n"
 "      union; símbolo final+1: %ld"
 
-#: ecoff.c:1576
+#: ecoff.c:1531
 #, c-format
 msgid ""
 "\n"
@@ -606,7 +619,7 @@ msgstr ""
 "\n"
 "      enum; símbolo final+1: %ld"
 
-#: ecoff.c:1582
+#: ecoff.c:1537
 #, c-format
 msgid ""
 "\n"
@@ -615,16 +628,16 @@ msgstr ""
 "\n"
 "      Tipo: %s"
 
-#: elf32-arm.c:1794
+#: elf32-arm.c:2315
 msgid "%B: BE8 images only valid in big-endian mode."
 msgstr "%B: las imágenes BE8 sólo son válidas en modo big-endian."
 
-#: elf32-arm.c:1953
+#: elf32-arm.c:2471
 #, c-format
 msgid "Invalid TARGET2 relocation type '%s'."
 msgstr "Tipo de reubicación TARGET2 '%s' inválido."
 
-#: elf32-arm.c:2060
+#: elf32-arm.c:2578
 msgid ""
 "%B(%s): warning: interworking not enabled.\n"
 "  first occurrence: %B: thumb call to arm"
@@ -632,212 +645,298 @@ msgstr ""
 "%s(%s): aviso: interoperabilidad no activada.\n"
 "  primer suceso: %B: llamada thumb para arm"
 
-#: elf32-arm.c:2476
+#: elf32-arm.c:3044
 msgid "\\%B: Warning: Arm BLX instruction targets Arm function '%s'."
 msgstr "\\%B: Aviso: La instrucción Arm BLX apunta a la función Arm '%s'."
 
-#: elf32-arm.c:2665
+#: elf32-arm.c:3227
 msgid "%B: Warning: Thumb BLX instruction targets thumb function '%s'."
 msgstr "%B: Aviso: La instrucción Thumb BLX apunta a la función thumb '%s'."
 
-#: elf32-arm.c:3185 elf32-sh.c:4610 elf64-sh64.c:1537
+#: elf32-arm.c:3889
+msgid "%B(%A+0x%lx): R_ARM_TLS_LE32 relocation not permitted in shared object"
+msgstr "%B(%A+0x%lx): la reubicación R_ARM_TLS_LE32 no se permite en objetos compartidos"
+
+#: elf32-arm.c:4290 elf32-sh.c:4618 elf64-sh64.c:1537
 msgid "%B(%A+0x%lx): %s relocation against SEC_MERGE section"
 msgstr "%B(%A+0x%lx): reubicación %s contra la sección SEC_MERGE"
 
-#: elf32-arm.c:3277
-msgid "%B(%A): warning: unresolvable relocation %d against symbol `%s'"
-msgstr "%B(%A): aviso: reubicación %d sin resolución contra el símbolo `%s'"
+#: elf32-arm.c:4351 elf64-ppc.c:9672
+msgid "%B(%A+0x%lx): %s used with TLS symbol %s"
+msgstr "%B(%A+0x%lx): se usó %s con el símbolo TLS %s"
 
-#: elf32-arm.c:3329 elf32-avr.c:875 elf32-cr16c.c:773 elf32-cris.c:1502
-#: elf32-crx.c:911 elf32-d10v.c:564 elf32-fr30.c:595 elf32-frv.c:4107
-#: elf32-h8300.c:494 elf32-i860.c:1189 elf32-ip2k.c:1550 elf32-iq2000.c:611
-#: elf32-m32r.c:3250 elf32-m68hc1x.c:1189 elf32-msp430.c:503
-#: elf32-openrisc.c:415 elf32-v850.c:1749 elf32-xstormy16.c:954
-#: elf64-mmix.c:1517 elf-m10200.c:427 elf-m10300.c:1527
+#: elf32-arm.c:4352 elf64-ppc.c:9673
+msgid "%B(%A+0x%lx): %s used with non-TLS symbol %s"
+msgstr "%B(%A+0x%lx): se usó %s con el símbolo %s que no es TLS"
+
+#: elf32-arm.c:4375 elf32-i386.c:3038 elf32-m32r.c:2653 elf32-m68k.c:1737
+#: elf32-ppc.c:6561 elf32-s390.c:3012 elf32-sh.c:4717 elf32-xtensa.c:2311
+#: elf64-ppc.c:10825 elf64-s390.c:3010 elf64-sh64.c:1626 elf64-x86-64.c:2522
+#: elf-hppa.h:1413 elf-m10300.c:1460 elfxx-sparc.c:3137
+msgid "%B(%A+0x%lx): unresolvable %s relocation against symbol `%s'"
+msgstr "%B(%A+0x%lx): reubicación %s sin resolución contra el símbolo `%s'"
+
+#: elf32-arm.c:4411 elf32-avr.c:880 elf32-cr16c.c:773 elf32-cris.c:1502
+#: elf32-crx.c:911 elf32-d10v.c:536 elf32-fr30.c:595 elf32-frv.c:4107
+#: elf32-h8300.c:494 elf32-i860.c:1189 elf32-ip2k.c:1474 elf32-iq2000.c:616
+#: elf32-m32c.c:465 elf32-m32r.c:3111 elf32-m68hc1x.c:1194 elf32-ms1.c:373
+#: elf32-msp430.c:508 elf32-openrisc.c:383 elf32-v850.c:1672
+#: elf32-xstormy16.c:909 elf64-mmix.c:1517 elf-m10200.c:427 elf-m10300.c:1509
 msgid "internal error: out of range error"
 msgstr "error interno: error fuera de rango"
 
-#: elf32-arm.c:3333 elf32-avr.c:879 elf32-cr16c.c:777 elf32-cris.c:1506
-#: elf32-crx.c:915 elf32-d10v.c:568 elf32-fr30.c:599 elf32-frv.c:4111
-#: elf32-h8300.c:498 elf32-i860.c:1193 elf32-iq2000.c:615 elf32-m32r.c:3254
-#: elf32-m68hc1x.c:1193 elf32-msp430.c:507 elf32-openrisc.c:419
-#: elf32-v850.c:1753 elf32-xstormy16.c:958 elf64-mmix.c:1521 elf-m10200.c:431
-#: elf-m10300.c:1531 elfxx-mips.c:7179
+#: elf32-arm.c:4415 elf32-avr.c:884 elf32-cr16c.c:777 elf32-cris.c:1506
+#: elf32-crx.c:915 elf32-d10v.c:540 elf32-fr30.c:599 elf32-frv.c:4111
+#: elf32-h8300.c:498 elf32-i860.c:1193 elf32-iq2000.c:620 elf32-m32c.c:469
+#: elf32-m32r.c:3115 elf32-m68hc1x.c:1198 elf32-msp430.c:512
+#: elf32-openrisc.c:387 elf32-v850.c:1676 elf32-xstormy16.c:913
+#: elf64-mmix.c:1521 elf-m10200.c:431 elf-m10300.c:1513 elfxx-mips.c:7212
 msgid "internal error: unsupported relocation error"
 msgstr "error interno: error de reubicación sin soporte"
 
-#: elf32-arm.c:3337 elf32-cr16c.c:781 elf32-crx.c:919 elf32-d10v.c:572
-#: elf32-h8300.c:502 elf32-m32r.c:3258 elf32-m68hc1x.c:1197 elf-m10200.c:435
-#: elf-m10300.c:1535
+#: elf32-arm.c:4419 elf32-cr16c.c:781 elf32-crx.c:919 elf32-d10v.c:544
+#: elf32-h8300.c:502 elf32-m32r.c:3119 elf32-m68hc1x.c:1202 elf-m10200.c:435
+#: elf-m10300.c:1517
 msgid "internal error: dangerous error"
 msgstr "error interno: error peligroso"
 
-#: elf32-arm.c:3341 elf32-avr.c:887 elf32-cr16c.c:785 elf32-cris.c:1514
-#: elf32-crx.c:923 elf32-d10v.c:576 elf32-fr30.c:607 elf32-frv.c:4119
-#: elf32-h8300.c:506 elf32-i860.c:1201 elf32-ip2k.c:1565 elf32-iq2000.c:623
-#: elf32-m32r.c:3262 elf32-m68hc1x.c:1201 elf32-msp430.c:515
-#: elf32-openrisc.c:427 elf32-v850.c:1773 elf32-xstormy16.c:966
-#: elf64-mmix.c:1529 elf-m10200.c:439 elf-m10300.c:1539
+#: elf32-arm.c:4423 elf32-avr.c:892 elf32-cr16c.c:785 elf32-cris.c:1514
+#: elf32-crx.c:923 elf32-d10v.c:548 elf32-fr30.c:607 elf32-frv.c:4119
+#: elf32-h8300.c:506 elf32-i860.c:1201 elf32-ip2k.c:1489 elf32-iq2000.c:628
+#: elf32-m32c.c:477 elf32-m32r.c:3123 elf32-m68hc1x.c:1206 elf32-ms1.c:381
+#: elf32-msp430.c:520 elf32-openrisc.c:395 elf32-v850.c:1696
+#: elf32-xstormy16.c:921 elf64-mmix.c:1529 elf-m10200.c:439 elf-m10300.c:1521
 msgid "internal error: unknown error"
 msgstr "error interno: error desconocido"
 
-#: elf32-arm.c:3440
+#: elf32-arm.c:4664
 msgid "Warning: Clearing the interworking flag of %B because non-interworking code in %B has been linked with it"
 msgstr "Aviso: Limpiando la opción de interoperación en %B porque se ha enlazado con él código no interoperable en %B"
 
-#: elf32-arm.c:3559
+#: elf32-arm.c:4751
+msgid "ERROR: %B uses VFP register arguments, %B does not"
+msgstr "ERROR: %B utiliza argumentos de registro VFP, mientras que %B no"
+
+#: elf32-arm.c:4798
+msgid "ERROR: %B: Conflicting architecture profiles %c/%c"
+msgstr "ERROR: %B: Perfiles de arquitecturas en conflicto %c/%c"
+
+#: elf32-arm.c:4813
+msgid "Warning: %B: Conflicting platform configuration"
+msgstr "Aviso: %B: Configuración de plataformas en conflicto"
+
+#: elf32-arm.c:4821
+msgid "ERROR: %B: Conflicting use of R9"
+msgstr "ERROR: %B: Uso en conflicto de R9"
+
+#: elf32-arm.c:4833
+msgid "ERROR: %B: SB relative addressing conflicts with use of R9"
+msgstr "ERROR: %B: El direccionamiento relativo a SB tiene conflictos con el uso de R9"
+
+#: elf32-arm.c:4855
+msgid "ERROR: %B: Conflicting definitions of wchar_t"
+msgstr "ERROR: %B: Definiciones en conflicto de wchar_t"
+
+#: elf32-arm.c:4881
+msgid "ERROR: %B: Conflicting enum sizes"
+msgstr "ERROR: %B: Tamaños de enum en conflicto"
+
+#: elf32-arm.c:4892
+msgid "ERROR: %B uses iWMMXt register arguments, %B does not"
+msgstr "ERROR: %B utiliza argumentos de registro iWMMXt, mientras que %B no"
+
+#: elf32-arm.c:4912
+msgid "ERROR: %B: Must be processed by '%s' toolchain"
+msgstr "ERROR: %B: Se debe procesar por la cadena de compilación '%s'"
+
+#: elf32-arm.c:4932 elf32-arm.c:4951
+msgid "ERROR: %B: Incompatible object tag '%s':%d"
+msgstr "ERROR: %B: Etiqueta de objeto '%s' incompatible:%d"
+
+#: elf32-arm.c:4961
+msgid "Warning: %B: Unknown EABI object attribute %d"
+msgstr "Aviso: %B: Atributo de objeto EABI %d desconocido"
+
+#: elf32-arm.c:5069
 msgid "ERROR: Source object %B has EABI version %d, but target %B has EABI version %d"
 msgstr "ERROR: El objeto fuente %B tiene EABI versión %d, pero el objetivo %B tiene EABI versión %d"
 
-#: elf32-arm.c:3572
+#: elf32-arm.c:5082
 msgid "ERROR: %B is compiled for APCS-%d, whereas target %B uses APCS-%d"
 msgstr "ERROR: %B está compilado para APCS-%d mientras que el objetivo %B usa APCS-%d"
 
-#: elf32-arm.c:3597
+#: elf32-arm.c:5107
 msgid "ERROR: %B uses VFP instructions, whereas %B does not"
 msgstr "ERROR: %B utiliza instrucciones VFP, mientras que %B no"
 
-#: elf32-arm.c:3601
+#: elf32-arm.c:5111
 msgid "ERROR: %B uses FPA instructions, whereas %B does not"
 msgstr "ERROR: %B utiliza instrucciones FPA, mientras que %B no"
 
-#: elf32-arm.c:3611
+#: elf32-arm.c:5121
 msgid "ERROR: %B uses Maverick instructions, whereas %B does not"
 msgstr "ERROR: %B utiliza instrucciones Maverick, mientras que %B no"
 
-#: elf32-arm.c:3615
+#: elf32-arm.c:5125
 msgid "ERROR: %B does not use Maverick instructions, whereas %B does"
 msgstr "ERROR: %B no utiliza instrucciones Maverick, mientras que %B sí"
 
-#: elf32-arm.c:3634
+#: elf32-arm.c:5144
 msgid "ERROR: %B uses software FP, whereas %B uses hardware FP"
 msgstr "ERROR: %B utiliza FP de software, mientras que %B utiliza FP de hardware"
 
-#: elf32-arm.c:3638
+#: elf32-arm.c:5148
 msgid "ERROR: %B uses hardware FP, whereas %B uses software FP"
 msgstr "ERROR: %B utiliza FP de hardware, mientras que %B utiliza FP de software"
 
 #. Ignore init flag - it may not be set, despite the flags field
 #. containing valid data.
 #. Ignore init flag - it may not be set, despite the flags field containing valid data.
-#: elf32-arm.c:3685 elf32-cris.c:3243 elf32-m68hc1x.c:1333 elf32-m68k.c:397
-#: elf32-vax.c:546 elfxx-mips.c:9846
+#: elf32-arm.c:5195 elf32-bfin.c:2164 elf32-cris.c:3243 elf32-m68hc1x.c:1338
+#: elf32-m68k.c:428 elf32-vax.c:528 elfxx-mips.c:9933
 #, c-format
 msgid "private flags = %lx:"
 msgstr "opciones privadas = %lx:"
 
-#: elf32-arm.c:3694
+#: elf32-arm.c:5204
 #, c-format
 msgid " [interworking enabled]"
 msgstr " [interoperabilidad activada]"
 
-#: elf32-arm.c:3702
+#: elf32-arm.c:5212
 #, c-format
 msgid " [VFP float format]"
 msgstr " [formato de coma flotante VFP]"
 
-#: elf32-arm.c:3704
+#: elf32-arm.c:5214
 #, c-format
 msgid " [Maverick float format]"
 msgstr " [formato de coma flotante Maverick]"
 
-#: elf32-arm.c:3706
+#: elf32-arm.c:5216
 #, c-format
 msgid " [FPA float format]"
 msgstr " [formato de coma flotante FPA]"
 
-#: elf32-arm.c:3715
+#: elf32-arm.c:5225
 #, c-format
 msgid " [new ABI]"
 msgstr " [ABI nuevo]"
 
-#: elf32-arm.c:3718
+#: elf32-arm.c:5228
 #, c-format
 msgid " [old ABI]"
 msgstr " [ABI antiguo]"
 
-#: elf32-arm.c:3721
+#: elf32-arm.c:5231
 #, c-format
 msgid " [software FP]"
 msgstr " [FP por software]"
 
-#: elf32-arm.c:3730
+#: elf32-arm.c:5240
 #, c-format
 msgid " [Version1 EABI]"
 msgstr " [EABI Version1]"
 
-#: elf32-arm.c:3733 elf32-arm.c:3744
+#: elf32-arm.c:5243 elf32-arm.c:5254
 #, c-format
 msgid " [sorted symbol table]"
 msgstr " [tabla de símbolos ordenados]"
 
-#: elf32-arm.c:3735 elf32-arm.c:3746
+#: elf32-arm.c:5245 elf32-arm.c:5256
 #, c-format
 msgid " [unsorted symbol table]"
 msgstr " [tabla de símbolos sin ordenar]"
 
-#: elf32-arm.c:3741
+#: elf32-arm.c:5251
 #, c-format
 msgid " [Version2 EABI]"
 msgstr " [EABI Version2]"
 
-#: elf32-arm.c:3749
+#: elf32-arm.c:5259
 #, c-format
 msgid " [dynamic symbols use segment index]"
 msgstr " [los símbolos dinámicos utilizan índices de segmento]"
 
-#: elf32-arm.c:3752
+#: elf32-arm.c:5262
 #, c-format
 msgid " [mapping symbols precede others]"
 msgstr " [el mapeo de símbolos precede a otros]"
 
-#: elf32-arm.c:3759
+#: elf32-arm.c:5269
 #, c-format
 msgid " [Version3 EABI]"
 msgstr " [EABI Version3]"
 
-#: elf32-arm.c:3763
+#: elf32-arm.c:5273
 #, c-format
 msgid " [Version4 EABI]"
 msgstr " [EABI Version4]"
 
-#: elf32-arm.c:3766
+#: elf32-arm.c:5276
 #, c-format
 msgid " [BE8]"
 msgstr " [BE8]"
 
-#: elf32-arm.c:3769
+#: elf32-arm.c:5279
 #, c-format
 msgid " [LE8]"
 msgstr " [LE8]"
 
-#: elf32-arm.c:3775
+#: elf32-arm.c:5285
 #, c-format
 msgid " <EABI version unrecognised>"
 msgstr " <versión de EABI no reconocida>"
 
-#: elf32-arm.c:3782
+#: elf32-arm.c:5292
 #, c-format
 msgid " [relocatable executable]"
 msgstr " [ejecutable reubicable]"
 
-#: elf32-arm.c:3785
+#: elf32-arm.c:5295
 #, c-format
 msgid " [has entry point]"
 msgstr " [tiene punto de entrada]"
 
-#: elf32-arm.c:3790
+#: elf32-arm.c:5300
 #, c-format
 msgid "<Unrecognised flag bits set>"
 msgstr "<Conjunto de bits de opción no reconocidos>"
 
-#: elf32-avr.c:883 elf32-cris.c:1510 elf32-fr30.c:603 elf32-frv.c:4115
-#: elf32-i860.c:1197 elf32-ip2k.c:1561 elf32-iq2000.c:619 elf32-msp430.c:511
-#: elf32-openrisc.c:423 elf32-v850.c:1757 elf32-xstormy16.c:962
-#: elf64-mmix.c:1525
+#: elf32-arm.c:5536 elf32-i386.c:902 elf32-s390.c:989 elf32-xtensa.c:784
+#: elf64-s390.c:942 elf64-x86-64.c:666 elfxx-sparc.c:1016
+msgid "%B: bad symbol index: %d"
+msgstr "%B: índice de símbolos erróneo: %d"
+
+#: elf32-arm.c:6023 elf32-cris.c:2385 elf32-hppa.c:1813 elf32-i370.c:491
+#: elf32-i386.c:1465 elf32-m32r.c:1913 elf32-m68k.c:1088 elf32-ppc.c:4145
+#: elf32-s390.c:1686 elf32-sh.c:3920 elf32-vax.c:1059 elf64-ppc.c:5717
+#: elf64-s390.c:1659 elf64-sh64.c:3442 elf64-x86-64.c:1252 elf-m10300.c:4107
+#: elfxx-sparc.c:1720
+#, c-format
+msgid "dynamic variable `%s' is zero size"
+msgstr "la variable dinámica `%s' es de tamaño cero"
+
+#: elf32-avr.c:888 elf32-cris.c:1510 elf32-fr30.c:603 elf32-frv.c:4115
+#: elf32-i860.c:1197 elf32-ip2k.c:1485 elf32-iq2000.c:624 elf32-m32c.c:473
+#: elf32-ms1.c:377 elf32-msp430.c:516 elf32-openrisc.c:391 elf32-v850.c:1680
+#: elf32-xstormy16.c:917 elf64-mmix.c:1525
 msgid "internal error: dangerous relocation"
 msgstr "error interno: reubicación peligrosa"
 
+#: elf32-bfin.c:96
+msgid "Division by zero. "
+msgstr "División por cero. "
+
+#: elf32-bfin.c:1958
+msgid "%B(%A+0x%lx): unresolvable relocation against symbol `%s'"
+msgstr "%B(%A+0x%lx): reubicación sin resolución contra el símbolo `%s'"
+
+#: elf32-bfin.c:1991 elf32-i386.c:3079 elf32-m68k.c:1778 elf32-s390.c:3064
+#: elf64-s390.c:3062 elf64-x86-64.c:2567
+msgid "%B(%A+0x%lx): reloc against `%s': error %d"
+msgstr "%B(%A+0x%lx): reubicación contra `%s': error %d"
+
 #: elf32-cris.c:1050
 msgid "%B, section %A: unresolvable relocation %s against symbol `%s'"
 msgstr "%B, sección %A: reubicación %s sin resolución contra el símbolo `%s'"
@@ -874,7 +973,7 @@ msgstr "%B, secci
 msgid "%B: Internal inconsistency; no relocation section %s"
 msgstr "%B: Inconsistencia interna; no se encuentra la sección de reubicación %s"
 
-#: elf32-cris.c:2507
+#: elf32-cris.c:2520
 msgid ""
 "%B, section %A:\n"
 "  v10/v32 compatible object %s must not contain a PIC relocation"
@@ -882,7 +981,7 @@ msgstr ""
 "%B, sección %A:\n"
 "  el objeto %s compatible con v10/v32 no debe contener una reubicación PIC"
 
-#: elf32-cris.c:2694 elf32-cris.c:2762
+#: elf32-cris.c:2707 elf32-cris.c:2775
 msgid ""
 "%B, section %A:\n"
 "  relocation %s should not be used in a shared object; recompile with -fPIC"
@@ -1009,276 +1108,251 @@ msgstr "%B(%A+0x%lx): reubicaci
 msgid "relocation references a different segment"
 msgstr "la reubicación referencía un segmento diferente"
 
-#: elf32-frv.c:6344
+#: elf32-frv.c:6324
 msgid "%B: unsupported relocation type %i"
 msgstr "%B: tipo de reubicación %i sin soporte"
 
-#: elf32-frv.c:6662
+#: elf32-frv.c:6642
 #, c-format
 msgid "%s: compiled with %s and linked with modules that use non-pic relocations"
 msgstr "%s: compilado con %s y enlazado con módulos que usan reubicaciones que no son pic"
 
-#: elf32-frv.c:6715 elf32-iq2000.c:796
+#: elf32-frv.c:6695 elf32-iq2000.c:801 elf32-m32c.c:785
 #, c-format
 msgid "%s: compiled with %s and linked with modules compiled with %s"
 msgstr "%s: compilado con %s y enlazado con módulos compilados con %s"
 
-#: elf32-frv.c:6727
+#: elf32-frv.c:6707
 #, c-format
 msgid "%s: uses different unknown e_flags (0x%lx) fields than previous modules (0x%lx)"
 msgstr "%s: usa campos e_flags desconocidos (0x%lx) diferentes a aquéllos de los módulos previos (0x%lx)"
 
-#: elf32-frv.c:6748
+#: elf32-frv.c:6728
 #, c-format
 msgid "%s: cannot link non-fdpic object file into fdpic executable"
 msgstr "%s: enlazando código que no es fdpic en un ejecutable fdpic"
 
-#: elf32-frv.c:6752
+#: elf32-frv.c:6732
 #, c-format
 msgid "%s: cannot link fdpic object file into non-fdpic executable"
 msgstr "%s: enlazando código fdpic en un ejecutable que no es fdpic"
 
-#: elf32-frv.c:6777 elf32-iq2000.c:833
+#: elf32-frv.c:6757 elf32-iq2000.c:838 elf32-m32c.c:821 elf32-ms1.c:596
 #, c-format
 msgid "private flags = 0x%lx:"
 msgstr "opciones privadas = 0x%lx:"
 
-#: elf32-gen.c:83 elf64-gen.c:83
+#: elf32-gen.c:68 elf64-gen.c:68
 msgid "%B: Relocations in generic ELF (EM: %d)"
 msgstr "%B: Reubicaciones en ELF genérico (EM: %d)"
 
-#: elf32-hppa.c:542 elf32-m68hc1x.c:161 elf64-ppc.c:3644
+#: elf32-hppa.c:569 elf32-m68hc1x.c:161 elf64-ppc.c:3660
 msgid "%B: cannot create stub entry %s"
 msgstr "%B: no se puede crear la entrada de cabo %s"
 
-#: elf32-hppa.c:795 elf32-hppa.c:3359
+#: elf32-hppa.c:822 elf32-hppa.c:3411
 msgid "%B(%A+0x%lx): cannot reach %s, recompile with -ffunction-sections"
 msgstr "%B(%A+0x%lx): no se puede alcanzar %s, recompile con -ffuntion-sections"
 
-#: elf32-hppa.c:1176
+#: elf32-hppa.c:1212
 msgid "%B: relocation %s can not be used when making a shared object; recompile with -fPIC"
 msgstr "%B: no se puede usar la reubicación %s cuando se hace un objeto compartido; recompile con -fPIC"
 
-#: elf32-hppa.c:1370
+#: elf32-hppa.c:1405
 #, c-format
 msgid "Could not find relocation section for %s"
 msgstr "No se puede encontrar la sección de reubicación para %s"
 
-#: elf32-hppa.c:2623
+#: elf32-hppa.c:2677
 msgid "%B: duplicate export stub %s"
 msgstr "%B: cabo de exportación %s duplicado"
 
-#: elf32-hppa.c:3214
+#: elf32-hppa.c:3266
 msgid "%B(%A+0x%lx): %s fixup for insn 0x%x is not supported in a non-shared link"
 msgstr "%B(%A+0x%lx): la compostura %s para la insn 0x%x no tiene soporte en un enlazado que no es compartido"
 
-#: elf32-hppa.c:3844
+#: elf32-hppa.c:3895
 msgid "%B(%A+0x%lx): cannot handle %s for %s"
 msgstr "%B(%A+0x%lx): no se puede manejar %s para %s"
 
-#: elf32-hppa.c:4137
+#: elf32-hppa.c:4189
 msgid ".got section not immediately after .plt section"
 msgstr "la sección .got no está inmediatamente después de la sección .plt"
 
-#: elf32-i386.c:326
+#: elf32-i386.c:327 elf32-s390.c:368 elf64-ppc.c:2124 elf64-s390.c:390
+#: elf64-x86-64.c:204
 msgid "%B: invalid relocation type %d"
 msgstr "%B: tipo de reubicación %d inválido"
 
-#: elf32-i386.c:865 elf32-s390.c:985 elf32-sparc.c:910 elf32-xtensa.c:788
-#: elf64-s390.c:938 elf64-x86-64.c:646
-msgid "%B: bad symbol index: %d"
-msgstr "%B: índice de símbolos erróneo: %d"
-
-#: elf32-i386.c:973 elf32-s390.c:1162 elf32-sh.c:6388 elf32-sparc.c:1033
-#: elf64-s390.c:1124
+#: elf32-i386.c:1015 elf32-s390.c:1171 elf32-sh.c:6389 elf64-s390.c:1133
+#: elfxx-sparc.c:1144
 msgid "%B: `%s' accessed both as normal and thread local symbol"
 msgstr "%B: se accesó `%s' como un símbolo normal y un símbolo local de hilo"
 
-#: elf32-i386.c:1088 elf32-s390.c:1271 elf64-ppc.c:4676 elf64-s390.c:1236
-#: elf64-x86-64.c:882
+#: elf32-i386.c:1130 elf32-s390.c:1280 elf64-ppc.c:4731 elf64-s390.c:1245
+#: elf64-x86-64.c:910
 msgid "%B: bad relocation section name `%s'"
 msgstr "%B: nombre de sección de reubicación `%s' erróneo"
 
-#: elf32-i386.c:2043
+#: elf32-i386.c:2149
 msgid "%B: unrecognized relocation (0x%x) in section `%A'"
 msgstr "%B: no se reconoce la dirección de reubicación (0x%lx) en la sección `%A'"
 
-#: elf32-i386.c:2287
+#: elf32-i386.c:2409
 msgid "%B: relocation R_386_GOTOFF against protected function `%s' can not be used when making a shared object"
 msgstr "%B: no se puede usar la reubicación R_386_GOTOFF contra la función protegida `%s' cuando se hace un objeto compartido"
 
-#: elf32-i386.c:2931 elf32-m68k.c:1700 elf32-s390.c:2993 elf32-sparc.c:2859
-#: elf32-xtensa.c:2321 elf64-s390.c:2990 elf64-sparc.c:2684
-#: elf64-x86-64.c:2438
-msgid "%B(%A+0x%lx): unresolvable relocation against symbol `%s'"
-msgstr "%B(%A+0x%lx): reubicación sin resolución contra el símbolo `%s'"
-
-#: elf32-i386.c:2971 elf32-m68k.c:1740 elf32-s390.c:3044 elf64-s390.c:3041
-#: elf64-x86-64.c:2482
-msgid "%B(%A+0x%lx): reloc against `%s': error %d"
-msgstr "%B(%A+0x%lx): reubicación contra `%s': error %d"
-
-#: elf32-ip2k.c:557 elf32-ip2k.c:563 elf32-ip2k.c:726 elf32-ip2k.c:732
+#: elf32-ip2k.c:853 elf32-ip2k.c:859 elf32-ip2k.c:926 elf32-ip2k.c:932
 msgid "ip2k relaxer: switch table without complete matching relocation information."
 msgstr "relajador ip2k: tabla switch sin información completa de reubicación de coincidencias."
 
-#: elf32-ip2k.c:580 elf32-ip2k.c:759
+#: elf32-ip2k.c:876 elf32-ip2k.c:959
 msgid "ip2k relaxer: switch table header corrupt."
 msgstr "relajador ip2k: encabezado de tabla switch corrupto."
 
-#: elf32-ip2k.c:1377
+#: elf32-ip2k.c:1301
 #, c-format
 msgid "ip2k linker: missing page instruction at 0x%08lx (dest = 0x%08lx)."
 msgstr "enlazador ip2k: instrucción de página faltante en 0x%08lx (dest = 0x%08lx)."
 
-#: elf32-ip2k.c:1391
+#: elf32-ip2k.c:1317
 #, c-format
 msgid "ip2k linker: redundant page instruction at 0x%08lx (dest = 0x%08lx)."
 msgstr "enlazador ip2k: instrucción de página redundante en 0x%08lx (dest = 0x%08lx)."
 
 #. Only if it's not an unresolved symbol.
-#: elf32-ip2k.c:1557
+#: elf32-ip2k.c:1481
 msgid "unsupported relocation between data/insn address spaces"
 msgstr "reubicación sin soporte entre espacios de direcciones datos/insn"
 
-#: elf32-iq2000.c:809
+#: elf32-iq2000.c:814 elf32-m32c.c:797
 #, c-format
 msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)"
 msgstr "%s: usa campos de e_flags diferentes (0x%lx) que los módulos previos (0x%lx)"
 
-#: elf32-m32r.c:1530
+#: elf32-m32r.c:1436
 msgid "SDA relocation when _SDA_BASE_ not defined"
 msgstr "reubicación SDA cuando _SDA_BASE_ no está definido"
 
-#: elf32-m32r.c:2604 elf64-alpha.c:4181 elf64-alpha.c:4307 elf32-ia64.c:3910
-#: elf64-ia64.c:3910
-msgid "%B: unknown relocation type %d"
-msgstr "%B: tipo de reubicación %d desconocido"
-
-#: elf32-m32r.c:2789 elf64-sh64.c:1626 elf-m10300.c:1481
-#, c-format
-msgid "%s: warning: unresolvable relocation against symbol `%s' from %s section"
-msgstr "%s: aviso: reubicación sin resolución contra el símbolo `%s' de la sección %s"
-
-#: elf32-m32r.c:3187
+#: elf32-m32r.c:3048
 msgid "%B: The target (%s) of an %s relocation is in the wrong section (%A)"
 msgstr "%B: El objetivo (%s) de una reubicación %s está en la sección errónea (%A)"
 
-#: elf32-m32r.c:3719
+#: elf32-m32r.c:3576
 msgid "%B: Instruction set mismatch with previous modules"
 msgstr "%B: Conjunto de instrucciones no coincidente con módulos previos"
 
-#: elf32-m32r.c:3741
+#: elf32-m32r.c:3597
 #, c-format
 msgid "private flags = %lx"
 msgstr "opciones privadas = %lx"
 
-#: elf32-m32r.c:3746
+#: elf32-m32r.c:3602
 #, c-format
 msgid ": m32r instructions"
 msgstr ": instrucciones m32r"
 
-#: elf32-m32r.c:3747
+#: elf32-m32r.c:3603
 #, c-format
 msgid ": m32rx instructions"
 msgstr ": instrucciones m32rx"
 
-#: elf32-m32r.c:3748
+#: elf32-m32r.c:3604
 #, c-format
 msgid ": m32r2 instructions"
 msgstr ": instrucciones m32r2"
 
-#: elf32-m68hc1x.c:1101
+#: elf32-m68hc1x.c:1106
 #, c-format
 msgid "Reference to the far symbol `%s' using a wrong relocation may result in incorrect execution"
 msgstr "Una referencia al símbolo far `%s' usando una reubicación incorrecta puede resultar en una ejecución incorrecta"
 
-#: elf32-m68hc1x.c:1124
+#: elf32-m68hc1x.c:1129
 #, c-format
 msgid "banked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)"
 msgstr "la dirección almacenada [%lx:%04lx] (%lx) no está en el mismo banco que la dirección almacenada actual [%lx:%04lx] (%lx)"
 
-#: elf32-m68hc1x.c:1143
+#: elf32-m68hc1x.c:1148
 #, c-format
 msgid "reference to a banked address [%lx:%04lx] in the normal address space at %04lx"
 msgstr "referencia a una dirección almacenada [%lx:%04lx] en el espacio normal de direcciones en %04lx"
 
-#: elf32-m68hc1x.c:1276
+#: elf32-m68hc1x.c:1281
 msgid "%B: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers"
 msgstr "%B: enlazando ficheros compilados con enteros de 16-bit (-mshort) y otros con enteros de 32-bit"
 
-#: elf32-m68hc1x.c:1283
+#: elf32-m68hc1x.c:1288
 msgid "%B: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double"
 msgstr "%B: enlazando ficheros compilados con dobles de 32-bit (-fshort-double) y otros con dobles de 64-bit"
 
-#: elf32-m68hc1x.c:1292
+#: elf32-m68hc1x.c:1297
 msgid "%B: linking files compiled for HCS12 with others compiled for HC12"
 msgstr "%B: enlazando ficheros compilados para HCS12, con otros compilados para HC12"
 
-#: elf32-m68hc1x.c:1308 elf32-ppc.c:2298 elf64-sparc.c:3090 elfxx-mips.c:9807
+#: elf32-m68hc1x.c:1313 elf32-ppc.c:3576 elf64-sparc.c:696 elfxx-mips.c:9894
 msgid "%B: uses different e_flags (0x%lx) fields than previous modules (0x%lx)"
 msgstr "%B: usa campos de e_flags diferentes (0x%lx) que los módulos previos (0x%lx)"
 
-#: elf32-m68hc1x.c:1336
+#: elf32-m68hc1x.c:1341
 #, c-format
 msgid "[abi=32-bit int, "
 msgstr "[abi=int de 32-bit, "
 
-#: elf32-m68hc1x.c:1338
+#: elf32-m68hc1x.c:1343
 #, c-format
 msgid "[abi=16-bit int, "
 msgstr "[abi=int de 16-bit, "
 
-#: elf32-m68hc1x.c:1341
+#: elf32-m68hc1x.c:1346
 #, c-format
 msgid "64-bit double, "
 msgstr "doble de 64-bit, "
 
-#: elf32-m68hc1x.c:1343
+#: elf32-m68hc1x.c:1348
 #, c-format
 msgid "32-bit double, "
 msgstr "doble de 32-bit, "
 
-#: elf32-m68hc1x.c:1346
+#: elf32-m68hc1x.c:1351
 #, c-format
 msgid "cpu=HC11]"
 msgstr "cpu=HC11]"
 
-#: elf32-m68hc1x.c:1348
+#: elf32-m68hc1x.c:1353
 #, c-format
 msgid "cpu=HCS12]"
 msgstr "cpu=HCS12]"
 
-#: elf32-m68hc1x.c:1350
+#: elf32-m68hc1x.c:1355
 #, c-format
 msgid "cpu=HC12]"
 msgstr "cpu=HC12]"
 
-#: elf32-m68hc1x.c:1353
+#: elf32-m68hc1x.c:1358
 #, c-format
 msgid " [memory=bank-model]"
 msgstr " [memoria=modelo de bancos]"
 
-#: elf32-m68hc1x.c:1355
+#: elf32-m68hc1x.c:1360
 #, c-format
 msgid " [memory=flat]"
 msgstr " [memoria=plana]"
 
-#: elf32-m68k.c:400
+#: elf32-m68k.c:431
 #, c-format
 msgid " [cpu32]"
 msgstr " [cpu32]"
 
-#: elf32-m68k.c:403
+#: elf32-m68k.c:434
 #, c-format
 msgid " [m68000]"
 msgstr " [m68000]"
 
-#: elf32-mcore.c:353 elf32-mcore.c:455
+#: elf32-mcore.c:98 elf32-mcore.c:428
 msgid "%B: Relocation %s (%d) is not currently supported.\n"
 msgstr "%B: La reubicación %s (%d) actualmente no tiene soporte.\n"
 
-#: elf32-mcore.c:441
+#: elf32-mcore.c:414
 msgid "%B: Unknown relocation type %d\n"
 msgstr "%B: Tipo de reubicación %d desconocido\n"
 
@@ -1295,128 +1369,124 @@ msgstr "la reubicaci
 msgid "Linking mips16 objects into %s format is not supported"
 msgstr "Enlazar objetos mips16 en el formato %s no tiene soporte"
 
-#: elf32-ppc.c:2181
+#: elf32-ppc.c:1652
 #, c-format
 msgid "generic linker can't handle %s"
 msgstr "el enlazador genérico no puede manejar %s"
 
-#: elf32-ppc.c:2263
-msgid "%B: compiled with -mrelocatable and linked with modules compiled normally"
-msgstr "%B: compilado con -mrelocatable y enlazado con módulos compilados de forma normal"
+#: elf32-ppc.c:2080
+msgid "corrupt or empty %s section in %B"
+msgstr "sección %s corrupta o vacía en %B"
 
-#: elf32-ppc.c:2271
-msgid "%B: compiled normally and linked with modules compiled with -mrelocatable"
-msgstr "%B: compilado de forma normal y enlazado con módulos compilados con -mrelocatable"
+#: elf32-ppc.c:2087
+msgid "unable to read in %s section from %B"
+msgstr "no se puede leer en la sección %s desde %B"
+
+#: elf32-ppc.c:2093
+msgid "corrupt %s section in %B"
+msgstr "sección %s corrupta en %B"
+
+#: elf32-ppc.c:2136
+msgid "warning: unable to set size of %s section in %B"
+msgstr "aviso: no se puede establecer el tamaño de la sección %s en %B"
+
+#: elf32-ppc.c:2183
+msgid "failed to allocate space for new APUinfo section."
+msgstr "no se puede reservar espacio para la nueva sección APUinfo."
+
+#: elf32-ppc.c:2202
+msgid "failed to compute new APUinfo section."
+msgstr "no se puede calcular la nueva sección APUinfo."
+
+#: elf32-ppc.c:2205
+msgid "failed to install new APUinfo section."
+msgstr "no se puede instalar la nueva sección APUinfo."
 
-#: elf32-ppc.c:3526
+#: elf32-ppc.c:2941
 msgid "%B: relocation %s cannot be used when making a shared object"
 msgstr "%B: no se puede usar la reubicación %s cuando se hace un objeto compartido"
 
 #. It does not make sense to have a procedure linkage
 #. table entry for a local symbol.
-#: elf32-ppc.c:3731
+#: elf32-ppc.c:3211
 msgid "%B(%A+0x%lx): %s reloc against local symbol"
 msgstr "%B(%A+0x%lx): reubicación %s contra un símbolo local"
 
-#: elf32-ppc.c:4935 elf64-ppc.c:9967
+#: elf32-ppc.c:3541
+msgid "%B: compiled with -mrelocatable and linked with modules compiled normally"
+msgstr "%B: compilado con -mrelocatable y enlazado con módulos compilados de forma normal"
+
+#: elf32-ppc.c:3549
+msgid "%B: compiled normally and linked with modules compiled with -mrelocatable"
+msgstr "%B: compilado de forma normal y enlazado con módulos compilados con -mrelocatable"
+
+#: elf32-ppc.c:5768 elf64-ppc.c:10186
 msgid "%B: unknown relocation type %d for symbol %s"
 msgstr "%B: tipo de reubicación %d desconocido para el símbolo %s"
 
-#: elf32-ppc.c:5184
+#: elf32-ppc.c:6018
 msgid "%B(%A+0x%lx): non-zero addend on %s reloc against `%s'"
 msgstr "%B(%A+0x%lx): adición que no es cero en la reubicación %s contra `%s'"
 
-#: elf32-ppc.c:5510 elf32-ppc.c:5536 elf32-ppc.c:5595
+#: elf32-ppc.c:6365 elf32-ppc.c:6391 elf32-ppc.c:6450
 msgid "%B: the target (%s) of a %s relocation is in the wrong output section (%s)"
 msgstr "%B: el objetivo (%s) de una reubicación %s está en la sección de salida errónea (%s)"
 
-#: elf32-ppc.c:5650
+#: elf32-ppc.c:6505
 msgid "%B: relocation %s is not yet supported for symbol %s."
 msgstr "%B: la reubicación %s aún no tiene soporte para el símbolo %s."
 
-#: elf32-ppc.c:5705 elf64-ppc.c:10606
-msgid "%B(%A+0x%lx): unresolvable %s relocation against symbol `%s'"
-msgstr "%B(%A+0x%lx): reubicación %s sin resolución contra el símbolo `%s'"
-
-#: elf32-ppc.c:5756 elf64-ppc.c:10653
+#: elf32-ppc.c:6610 elf64-ppc.c:10872
 msgid "%B(%A+0x%lx): %s reloc against `%s': error %d"
 msgstr "%B(%A+0x%lx): reubicación %s contra `%s': error %d"
 
-#: elf32-ppc.c:5999
-msgid "corrupt or empty %s section in %B"
-msgstr "sección %s corrupta o vacía en %B"
-
-#: elf32-ppc.c:6006
-msgid "unable to read in %s section from %B"
-msgstr "no se puede leer en la sección %s desde %B"
-
-#: elf32-ppc.c:6012
-msgid "corrupt %s section in %B"
-msgstr "sección %s corrupta en %B"
-
-#: elf32-ppc.c:6055
-msgid "warning: unable to set size of %s section in %B"
-msgstr "aviso: no se puede establecer el tamaño de la sección %s en %B"
-
-#: elf32-ppc.c:6104
-msgid "failed to allocate space for new APUinfo section."
-msgstr "no se puede reservar espacio para la nueva sección APUinfo."
-
-#: elf32-ppc.c:6123
-msgid "failed to compute new APUinfo section."
-msgstr "no se puede calcular la nueva sección APUinfo."
-
-#: elf32-ppc.c:6126
-msgid "failed to install new APUinfo section."
-msgstr "no se puede instalar la nueva sección APUinfo."
-
-#: elf32-s390.c:2234 elf64-s390.c:2205
+#: elf32-s390.c:2253 elf64-s390.c:2225
 msgid "%B(%A+0x%lx): invalid instruction for TLS relocation %s"
 msgstr "%B(%A+0x%lx): instrucción inválida para la reubicación TLS %s"
 
-#: elf32-sh64.c:218 elf64-sh64.c:2319
+#: elf32-sh64.c:218 elf64-sh64.c:2322
 #, c-format
 msgid "%s: compiled as 32-bit object and %s is 64-bit"
 msgstr "%s: compilado como un objeto de 32-bit y %s es de 64-bit"
 
-#: elf32-sh64.c:221 elf64-sh64.c:2322
+#: elf32-sh64.c:221 elf64-sh64.c:2325
 #, c-format
 msgid "%s: compiled as 64-bit object and %s is 32-bit"
 msgstr "%s: compilado como un objeto de 64-bit y %s es de 32-bit"
 
-#: elf32-sh64.c:223 elf64-sh64.c:2324
+#: elf32-sh64.c:223 elf64-sh64.c:2327
 #, c-format
 msgid "%s: object size does not match that of target %s"
 msgstr "%s: el tamaño del objeto no coincide con el tamaño del objetivo %s"
 
-#: elf32-sh64.c:445 elf64-sh64.c:2890
+#: elf32-sh64.c:446 elf64-sh64.c:2899
 #, c-format
 msgid "%s: encountered datalabel symbol in input"
 msgstr "%s: se encontró un símbolo datalabel en la entrada"
 
-#: elf32-sh64.c:522
+#: elf32-sh64.c:523
 msgid "PTB mismatch: a SHmedia address (bit 0 == 1)"
 msgstr "No coincide PTB: una dirección SHmedia (bit 0 == 1)"
 
-#: elf32-sh64.c:525
+#: elf32-sh64.c:526
 msgid "PTA mismatch: a SHcompact address (bit 0 == 0)"
 msgstr "No coincide PTA: una dirección SHcompact (bit 0 == 0)"
 
-#: elf32-sh64.c:543
+#: elf32-sh64.c:544
 #, c-format
 msgid "%s: GAS error: unexpected PTB insn with R_SH_PT_16"
 msgstr "%s: error de GAS: instrucción PTB inesperada con R_SH_PT_16"
 
-#: elf32-sh64.c:592
+#: elf32-sh64.c:593
 msgid "%B: error: unaligned relocation type %d at %08x reloc %p\n"
 msgstr "%B: error: tipo de reubicación %d sin alinear en %08x reubicación %p\n"
 
-#: elf32-sh64.c:668
+#: elf32-sh64.c:669
 #, c-format
 msgid "%s: could not write out added .cranges entries"
 msgstr "%s: no se pueden escribir las entradas .cranges agregadas"
 
-#: elf32-sh64.c:728
+#: elf32-sh64.c:729
 #, c-format
 msgid "%s: could not write out sorted .cranges entries"
 msgstr "%s: no se pueden escribir las entradas .cranges ordenadas"
@@ -1453,31 +1523,27 @@ msgstr "%B: 0x%lx: aviso: cuenta err
 msgid "%B: 0x%lx: fatal: reloc overflow while relaxing"
 msgstr "%B: 0x%lx: fatal: desbordamiento de reubicación durante la relajación"
 
-#: elf32-sh.c:4558 elf64-sh64.c:1509
+#: elf32-sh.c:4566 elf64-sh64.c:1509
 msgid "Unexpected STO_SH5_ISA32 on local symbol is not handled"
 msgstr "No se maneja un STO_SH5_ISA32 inesperado en un símbolo local"
 
-#: elf32-sh.c:4709
-msgid "%B(%A): unresolvable relocation against symbol `%s'"
-msgstr "%B(%A+0x%lx): reubicación sin resolución contra el símbolo `%s'"
-
-#: elf32-sh.c:4779
+#: elf32-sh.c:4791
 msgid "%B: 0x%lx: fatal: unaligned branch target for relax-support relocation"
 msgstr "%B: 0x%lx: fatal: objetivo de ramificación sin alineación para la reubicación de soporte de relajamiento"
 
-#: elf32-sh.c:4812 elf32-sh.c:4827
+#: elf32-sh.c:4824 elf32-sh.c:4839
 msgid "%B: 0x%lx: fatal: unaligned %s relocation 0x%lx"
 msgstr "%B: 0x%lx: fatal: reubicación %s sin alineación 0x%lx"
 
-#: elf32-sh.c:4841
+#: elf32-sh.c:4853
 msgid "%B: 0x%lx: fatal: R_SH_PSHA relocation %d not in range -32..32"
 msgstr "%B: 0x%lx: fatal: la reubicación R_SH_PSHA %d no está en el rango -32..32"
 
-#: elf32-sh.c:4855
+#: elf32-sh.c:4867
 msgid "%B: 0x%lx: fatal: R_SH_PSHL relocation %d not in range -32..32"
 msgstr "%B: 0x%lx: fatal: la reubicación R_SH_PSHL %d no está en el rango -32..32"
 
-#: elf32-sh.c:6599 elf64-alpha.c:4725
+#: elf32-sh.c:6601 elf64-alpha.c:4466
 msgid "%B: TLS local exec code cannot be linked into shared objects"
 msgstr "%B: el código de ejecución local TLS no se puede enlazar en objetos compartidos"
 
@@ -1493,214 +1559,209 @@ msgstr "%B: Orden .directive no reconocida: %s"
 msgid "%B: Failed to add renamed symbol %s"
 msgstr "%B: Falló al agregar el símbolo renombrado %s"
 
-#: elf32-sparc.c:2501 elf64-sparc.c:2340
-msgid "%B: probably compiled without -fPIC?"
-msgstr "%B: ¿Compilado probablemente sin -fPIC?"
-
-#: elf32-sparc.c:3324
+#: elf32-sparc.c:87
 msgid "%B: compiled for a 64 bit system and target is 32 bit"
 msgstr "%B: compilado para un sistema de 64 bit y el objetivo es de 32 bit"
 
-#: elf32-sparc.c:3337
+#: elf32-sparc.c:100
 msgid "%B: linking little endian files with big endian files"
 msgstr "%B: enlazando ficheros little endian con ficheros big endian"
 
-#: elf32-v850.c:769
+#: elf32-v850.c:160
 #, c-format
 msgid "Variable `%s' cannot occupy in multiple small data regions"
 msgstr "La variable `%s' no puede ocupar múltiples regiones de datos small"
 
-#: elf32-v850.c:772
+#: elf32-v850.c:163
 #, c-format
 msgid "Variable `%s' can only be in one of the small, zero, and tiny data regions"
 msgstr "La variable `%s' solamente puede estar en una de las regiones de datos small, cero, y tiny"
 
-#: elf32-v850.c:775
+#: elf32-v850.c:166
 #, c-format
 msgid "Variable `%s' cannot be in both small and zero data regions simultaneously"
 msgstr "La variable `%s' no puede estar simultáneamente en las regiones de datos small y cero"
 
-#: elf32-v850.c:778
+#: elf32-v850.c:169
 #, c-format
 msgid "Variable `%s' cannot be in both small and tiny data regions simultaneously"
 msgstr "La variable `%s' no puede estar simultáneamente en las regiones de datos small y tiny"
 
-#: elf32-v850.c:781
+#: elf32-v850.c:172
 #, c-format
 msgid "Variable `%s' cannot be in both zero and tiny data regions simultaneously"
 msgstr "La variable `%s' no puede estar simultáneamente en las regiones de datos cero y tiny"
 
-#: elf32-v850.c:1090
+#: elf32-v850.c:475
 #, c-format
 msgid "FAILED to find previous HI16 reloc\n"
 msgstr "FALLO para encontrar la reubicación HI16 previa\n"
 
-#: elf32-v850.c:1761
+#: elf32-v850.c:1684
 msgid "could not locate special linker symbol __gp"
 msgstr "no se puede localizar el símbolo especial del enlazador __gp"
 
-#: elf32-v850.c:1765
+#: elf32-v850.c:1688
 msgid "could not locate special linker symbol __ep"
 msgstr "no se puede localizar el símbolo especial del enlazador __ep"
 
-#: elf32-v850.c:1769
+#: elf32-v850.c:1692
 msgid "could not locate special linker symbol __ctbp"
 msgstr "no se puede localizar el símbolo especial del enlazador __ctbp"
 
-#: elf32-v850.c:1954
+#: elf32-v850.c:1870
 msgid "%B: Architecture mismatch with previous modules"
 msgstr "%B: No coincide la arquitectura con los módulos previos"
 
-#: elf32-v850.c:1975
+#: elf32-v850.c:1889
 #, c-format
 msgid "private flags = %lx: "
 msgstr "opciones privadas = %lx: "
 
-#: elf32-v850.c:1980
+#: elf32-v850.c:1894
 #, c-format
 msgid "v850 architecture"
 msgstr "arquitectura v850"
 
-#: elf32-v850.c:1981
+#: elf32-v850.c:1895
 #, c-format
 msgid "v850e architecture"
 msgstr "arquitectura v850e"
 
-#: elf32-v850.c:1982
+#: elf32-v850.c:1896
 #, c-format
 msgid "v850e1 architecture"
 msgstr "arquitectura v850e1"
 
-#: elf32-vax.c:549
+#: elf32-vax.c:531
 #, c-format
 msgid " [nonpic]"
 msgstr " [no pic]"
 
-#: elf32-vax.c:552
+#: elf32-vax.c:534
 #, c-format
 msgid " [d-float]"
 msgstr " [flotante-d]"
 
-#: elf32-vax.c:555
+#: elf32-vax.c:537
 #, c-format
 msgid " [g-float]"
 msgstr " [flotante-g]"
 
-#: elf32-vax.c:663
+#: elf32-vax.c:647
 #, c-format
 msgid "%s: warning: GOT addend of %ld to `%s' does not match previous GOT addend of %ld"
 msgstr "%s: aviso: la adición GOT de %ld a `%s' no coincide con la adición previa GOT de %ld"
 
-#: elf32-vax.c:1636
+#: elf32-vax.c:1604
 #, c-format
 msgid "%s: warning: PLT addend of %d to `%s' from %s section ignored"
 msgstr "%s: aviso: se ignora la adición PLT de %d a `%s' de la sección %s"
 
-#: elf32-vax.c:1760
+#: elf32-vax.c:1728
 #, c-format
 msgid "%s: warning: %s relocation against symbol `%s' from %s section"
 msgstr "%s: aviso: reubicación %s contra el símbolo `%s' de la sección %s"
 
-#: elf32-vax.c:1766
+#: elf32-vax.c:1734
 #, c-format
 msgid "%s: warning: %s relocation to 0x%x from %s section"
 msgstr "%s: aviso: reubicación %s a 0x%x de la sección %s"
 
-#: elf32-xstormy16.c:462 elf32-ia64.c:2394 elf64-ia64.c:2394
+#: elf32-xstormy16.c:425 elf32-ia64.c:2563 elf64-ia64.c:2563
 msgid "non-zero addend in @fptr reloc"
 msgstr "adición que no es cero en la reubicación @fptr"
 
-#: elf32-xtensa.c:709
+#: elf32-xtensa.c:705
 msgid "%B(%A): invalid property table"
 msgstr "%B(%A): tabla de propiedades inválida"
 
-#: elf32-xtensa.c:2209
+#: elf32-xtensa.c:2199
 msgid "%B(%A+0x%lx): relocation offset out of range (size=0x%x)"
 msgstr "%B(%A+0x%lx): desplazamiento de reubicación fuera de rango (tamaño=0x%x)"
 
-#: elf32-xtensa.c:2266
+#: elf32-xtensa.c:2256
 msgid "dynamic relocation in read-only section"
 msgstr "reubicación dinámica en la sección de sólo lectura"
 
-#: elf32-xtensa.c:2430
+#: elf32-xtensa.c:2421
 msgid "internal inconsistency in size of .got.loc section"
 msgstr "inconsistencia interna en el tamaño de la sección .got.loc"
 
-#: elf32-xtensa.c:2744
+#: elf32-xtensa.c:2735
 msgid "%B: incompatible machine type. Output is 0x%x. Input is 0x%x"
 msgstr "%B: tipo de máquina incompatible. La salida es 0x%x. La entrada es 0x%x"
 
-#: elf32-xtensa.c:3890 elf32-xtensa.c:3898
+#: elf32-xtensa.c:3881 elf32-xtensa.c:3889
 msgid "Attempt to convert L32R/CALLX to CALL failed"
 msgstr "Falló el intento de convertir L32R/CALLX a CALL"
 
-#: elf32-xtensa.c:5476 elf32-xtensa.c:5552 elf32-xtensa.c:6505
-#: elf32-xtensa.c:6559
+#: elf32-xtensa.c:5467 elf32-xtensa.c:5543 elf32-xtensa.c:6496
+#: elf32-xtensa.c:6550
 msgid "%B(%A+0x%lx): could not decode instruction; possible configuration mismatch"
 msgstr "%B(%A+0x%lx): no se puede decodificar la instrucción; posible falta de coincidencia de la configuración"
 
-#: elf32-xtensa.c:6378 elf32-xtensa.c:6541
+#: elf32-xtensa.c:6369 elf32-xtensa.c:6532
 msgid "%B(%A+0x%lx): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch"
 msgstr "%B(%A+0x%lx): no se puede decodificar la instrucción para la reubicación XTENSA_ASM_SIMPLIFY; posible falta de coincidencia de la configuración"
 
-#: elf32-xtensa.c:7859
+#: elf32-xtensa.c:7855
 msgid "invalid relocation address"
 msgstr "dirección de reubicación inválida"
 
-#: elf32-xtensa.c:7908
+#: elf32-xtensa.c:7904
 msgid "overflow after relaxation"
 msgstr "desbordamiento después de la relajación"
 
-#: elf32-xtensa.c:9036
+#: elf32-xtensa.c:9032
 msgid "%B(%A+0x%lx): unexpected fix for %s relocation"
 msgstr "%B(%A+0x%lx): compostura inesperada para la reubicación %s"
 
-#: elf64-alpha.c:1069
+#: elf64-alpha.c:443
 msgid "GPDISP relocation did not find ldah and lda instructions"
 msgstr "la reubicación GPDISP no encontró las instrucciones ldah y lda"
 
-#: elf64-alpha.c:3557
-#, c-format
-msgid "Symbol %s has no GOT subsection for offset 0x%x"
-msgstr "El símbolo %s no tiene subsección GOT para el desplazamiento 0x%x"
-
-#: elf64-alpha.c:3642
+#: elf64-alpha.c:2363
 msgid "%B: .got subsegment exceeds 64K (size %d)"
 msgstr "%B: el subsegmento .got excede los 64K (tamaño %d)"
 
-#: elf64-alpha.c:4479 elf64-alpha.c:4491
+#: elf64-alpha.c:4210 elf64-alpha.c:4222
 msgid "%B: gp-relative relocation against dynamic symbol %s"
 msgstr "%B: reubicación gp relativa contra el símbolo dinámico %s"
 
-#: elf64-alpha.c:4517 elf64-alpha.c:4650
+#: elf64-alpha.c:4248 elf64-alpha.c:4383
 msgid "%B: pc-relative relocation against dynamic symbol %s"
 msgstr "%B: reubicación relativa al pc contra el símbolo dinámico %s"
 
-#: elf64-alpha.c:4545
+#: elf64-alpha.c:4276
 msgid "%B: change in gp: BRSGP %s"
 msgstr "%B: cambio en gp: BRSGP %s"
 
-#: elf64-alpha.c:4570
+#: elf64-alpha.c:4301
 msgid "<unknown>"
 msgstr "<desconocido>"
 
-#: elf64-alpha.c:4575
+#: elf64-alpha.c:4306
 msgid "%B: !samegp reloc against symbol without .prologue: %s"
 msgstr "%B: reubicación !samegp contra un símbolo sin .prologue: %s"
 
-#: elf64-alpha.c:4626
+#: elf64-alpha.c:4358
 msgid "%B: unhandled dynamic relocation against %s"
 msgstr "%B: reubicación dinámica sin manejar contra %s"
 
-#: elf64-alpha.c:4709
+#: elf64-alpha.c:4390
+msgid "%B: pc-relative relocation against undefined weak symbol %s"
+msgstr "%B: reubicación relativa al pc contra el símbolo débil sin definir %s"
+
+#: elf64-alpha.c:4450
 msgid "%B: dtp-relative relocation against dynamic symbol %s"
 msgstr "%B: reubicación relativa a dtp contra el símbolo dinámico %s"
 
-#: elf64-alpha.c:4732
+#: elf64-alpha.c:4473
 msgid "%B: tp-relative relocation against dynamic symbol %s"
 msgstr "%B: reubicación relativa a tp contra el símbolo dinámico %s"
 
-#: elf64-hppa.c:2085
+#: elf64-hppa.c:2046
 #, c-format
 msgid "stub entry for %s cannot load .plt, dp offset = %ld"
 msgstr "la entrada de cabo para %s no puede cargar .plt, desplazamiento dp = %ld"
@@ -1744,16 +1805,16 @@ msgstr "%s: la directiva LOCAL s
 msgid "%s: LOCAL directive: Register $%ld is not a local register.  First global register is $%ld."
 msgstr "%s: directiva LOCAL: El registro $%ld no es un registro local.  El primer registro global es $%ld."
 
-#: elf64-mmix.c:2201
+#: elf64-mmix.c:2207
 #, c-format
 msgid "%s: Error: multiple definition of `%s'; start of %s is set in a earlier linked file\n"
 msgstr "%s: Error: definición múltiple de `%s'; el inicio de %s está definido en un fichero enlazado con anterioridad\n"
 
-#: elf64-mmix.c:2260
+#: elf64-mmix.c:2265
 msgid "Register section has contents\n"
 msgstr "La sección de registros no tiene contenido\n"
 
-#: elf64-mmix.c:2453
+#: elf64-mmix.c:2457
 #, c-format
 msgid ""
 "Internal inconsistency: remaining %u != max %u.\n"
@@ -1762,60 +1823,73 @@ msgstr ""
 "Inconsistencia interna: %u restante != %u máximo.\n"
 "  Por favor reporte este bicho."
 
-#: elf64-ppc.c:2490 libbfd.c:826
+#: elf64-ppc.c:2500 libbfd.c:931
 msgid "%B: compiled for a big endian system and target is little endian"
 msgstr "%B: compilado para un sistema big endian y el objetivo es little endian"
 
-#: elf64-ppc.c:2493 libbfd.c:828
+#: elf64-ppc.c:2503 libbfd.c:933
 msgid "%B: compiled for a little endian system and target is big endian"
 msgstr "%B: compilado para un sistema little endian y el objetivo es big endian"
 
-#: elf64-ppc.c:5640
+#: elf64-ppc.c:5707
 #, c-format
 msgid "copy reloc against `%s' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc"
 msgstr "la reubicación de copia contra `%s' requiere de enlazado plt suelto; evite establecer LD_BIND_NOW=1 o actualice gcc"
 
-#: elf64-ppc.c:6043
+#: elf64-ppc.c:6155
+msgid "dynreloc miscount for %B, section %A"
+msgstr "cuenta errónea de la reubicación dinámica de %B, sección %A"
+
+#: elf64-ppc.c:6257
 msgid "%B: .opd is not a regular array of opd entries"
 msgstr "%B: .opd no es una matriz regular de entradas opd"
 
-#: elf64-ppc.c:6052
+#: elf64-ppc.c:6266
 msgid "%B: unexpected reloc type %u in .opd section"
 msgstr "%B: tipo de reubicación %u inesperado en la sección .opd"
 
-#: elf64-ppc.c:6072
+#: elf64-ppc.c:6287
 msgid "%B: undefined sym `%s' in .opd section"
 msgstr "%B: símbolo `%s' indefinido en la sección .opd"
 
-#: elf64-ppc.c:6757 elf64-ppc.c:7132
+#: elf64-ppc.c:6939 elf64-ppc.c:7318
 #, c-format
 msgid "%s defined in removed toc entry"
 msgstr "se definió %s en la entrada toc eliminada"
 
-#: elf64-ppc.c:7921
+#: elf64-ppc.c:8041
+#, c-format
+msgid "long branch stub `%s' offset overflow"
+msgstr "desbordamiento del desplazamiento de stub de ramificación long `%s'"
+
+#: elf64-ppc.c:8116
 #, c-format
 msgid "can't find branch stub `%s'"
 msgstr "no se puede encontrar la ramificación de cabo `%s'"
 
-#: elf64-ppc.c:7960 elf64-ppc.c:8036
+#: elf64-ppc.c:8155 elf64-ppc.c:8231
 #, c-format
 msgid "linkage table error against `%s'"
 msgstr "error de la tabla de enlazado contra `%s'"
 
-#: elf64-ppc.c:8165
+#: elf64-ppc.c:8360
 #, c-format
 msgid "can't build branch stub `%s'"
 msgstr "no se puede construir la ramificación de cabos `%s'"
 
-#: elf64-ppc.c:9093
+#: elf64-ppc.c:8784
+msgid "%B section %A exceeds stub group size"
+msgstr "%B sección %A excede el tamaño de grupo de stub"
+
+#: elf64-ppc.c:9295
 msgid ".glink and .plt too far apart"
 msgstr ".glink y .plt están demasiado alejados"
 
-#: elf64-ppc.c:9206
+#: elf64-ppc.c:9408
 msgid "stubs don't match calculated size"
 msgstr "los cabos no coinciden con el tamaño calculado"
 
-#: elf64-ppc.c:9218
+#: elf64-ppc.c:9420
 #, c-format
 msgid ""
 "linker stubs in %u group%s\n"
@@ -1832,88 +1906,84 @@ msgstr ""
 "  ajuste toc long %lu\n"
 "  llamada plt     %lu"
 
-#: elf64-ppc.c:9455
-msgid "%B(%A+0x%lx): %s used with TLS symbol %s"
-msgstr "%B(%A+0x%lx): se usó %s con el símbolo TLS %s"
-
-#: elf64-ppc.c:9456
-msgid "%B(%A+0x%lx): %s used with non-TLS symbol %s"
-msgstr "%B(%A+0x%lx): se usó %s con el símbolo %s que no es TLS"
-
-#: elf64-ppc.c:9856
+#: elf64-ppc.c:10075
 msgid "%B(%A+0x%lx): automatic multiple TOCs not supported using your crt files; recompile with -mminimal-toc or upgrade gcc"
 msgstr "%B(%A+0x%lx): los TOCs múltiples automáticos no tienen soporte utilizando sus ficheros crt; recompile con -mminimal-toc o actualice gcc"
 
-#: elf64-ppc.c:9864
+#: elf64-ppc.c:10083
 msgid "%B(%A+0x%lx): sibling call optimization to `%s' does not allow automatic multiple TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or make `%s' extern"
 msgstr "%B(%A+0x%lx): la optimización de llamada hermana a `%s' no permite TOCs múltiples automáticos; recompile con -mminimal-toc ó -fno-optimize-sibling-calls, o vuelva `%s' externa"
 
-#: elf64-ppc.c:10508
+#: elf64-ppc.c:10727
 msgid "%B: relocation %s is not supported for symbol %s."
 msgstr "%B: la reubicación %s no tiene soporte para el símbolo %s."
 
-#: elf64-ppc.c:10587
+#: elf64-ppc.c:10806
 msgid "%B: error: relocation %s not a multiple of %d"
 msgstr "%B: error: la reubicación %s no es un múltiplo de %d"
 
-#: elf64-sh64.c:1673
+#: elf64-sh64.c:1676
 #, c-format
 msgid "%s: error: unaligned relocation type %d at %08x reloc %08x\n"
 msgstr "%s: error: tipo de reubicación %d sin alinear en %08x reubicación %08x\n"
 
-#: elf64-sparc.c:1419
-msgid "%B: check_relocs: unhandled reloc type %d"
-msgstr "%B: check_relocs: tipo de reubicación %d sin manejar"
-
-#: elf64-sparc.c:1455
+#: elf64-sparc.c:438
 msgid "%B: Only registers %%g[2367] can be declared using STT_REGISTER"
 msgstr "%B: Solamente los registros %%g[2367] se pueden declarar utilizando STT_REGISTER"
 
-#: elf64-sparc.c:1475
+#: elf64-sparc.c:458
 msgid "Register %%g%d used incompatibly: %s in %B, previously %s in %B"
 msgstr "El registro %%g%d se usó de forma incompatible: %s en %B, previamente %s en %B"
 
-#: elf64-sparc.c:1498
+#: elf64-sparc.c:481
 msgid "Symbol `%s' has differing types: REGISTER in %B, previously %s in %B"
 msgstr "El símbolo `%s' tiene tipos divergentes: REGISTER en %B, previamente %s en %B"
 
-#: elf64-sparc.c:1543
+#: elf64-sparc.c:526
 msgid "Symbol `%s' has differing types: %s in %B, previously REGISTER in %B"
 msgstr "El símbolo `%s' tiene tipos divergentes: %s en %B, previamente REGISTER en %B"
 
-#: elf64-sparc.c:3071
+#: elf64-sparc.c:677
 msgid "%B: linking UltraSPARC specific with HAL specific code"
 msgstr "%B: enlazando código específico de UltraSPARC con código específico de HAL"
 
-#: elf64-x86-64.c:667 elf64-x86-64.c:792 elf64-x86-64.c:1988
+#: elf64-x86-64.c:692 elf64-x86-64.c:818 elf64-x86-64.c:2069
 msgid "%B: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC"
 msgstr "%B: no se puede usar la reubicación %s contra `%s' cuando se hace un objeto compartido; recompile con -fPIC"
 
-#: elf64-x86-64.c:735
+#: elf64-x86-64.c:760
 msgid "%B: %s' accessed both as normal and thread local symbol"
 msgstr "%B: se accesó `%s' como un símbolo normal y como un símbolo local de hilo"
 
-#: elf64-x86-64.c:1984
+#: elf64-x86-64.c:2000
+msgid "%B: relocation R_X86_64_GOTOFF64 against protected function `%s' can not be used when making a shared object"
+msgstr "%B: no se puede usar la reubicación R_X86_64_GOTOFF contra la función protegida `%s' cuando se hace un objeto compartido"
+
+#: elf64-x86-64.c:2065
 msgid "%B: relocation R_X86_64_PC32 against protected function `%s' can not be used when making a shared object"
 msgstr "%B: no se puede usar la reubicación R_X86_64_PC32 contra la función protegida `%' cuando se hace un objeto compartido"
 
-#: elf.c:296
+#: elf.c:288
 msgid "%B: invalid string offset %u >= %lu for section `%s'"
 msgstr "%B: desplazamiento de cadena inválido %u >= %lu para la sección `%s'"
 
-#: elf.c:543
+#: elf.c:552
 msgid "%B: invalid SHT_GROUP entry"
 msgstr "%B: entrada SHT_GROUP inválida"
 
-#: elf.c:613
+#: elf.c:622
 msgid "%B: no group info for section %A"
 msgstr "%B: no hay información de grupo para la sección %A"
 
-#: elf.c:650
+#: elf.c:652 elf.c:3091 elflink.c:7588
+msgid "%B: warning: sh_link not set for section `%A'"
+msgstr "%B: aviso: no se estableción sh_link para la sección `%A'"
+
+#: elf.c:688
 msgid "%B: unknown [%d] section `%s' in group [%s]"
 msgstr "%B: sección [%d] desconocida `%s' en el grupo [%s]"
 
-#: elf.c:1011
+#: elf.c:1071
 #, c-format
 msgid ""
 "\n"
@@ -1922,7 +1992,7 @@ msgstr ""
 "\n"
 "Encabezado del Programa:\n"
 
-#: elf.c:1063
+#: elf.c:1123
 #, c-format
 msgid ""
 "\n"
@@ -1931,7 +2001,7 @@ msgstr ""
 "\n"
 "Sección Dinámica:\n"
 
-#: elf.c:1188
+#: elf.c:1248
 #, c-format
 msgid ""
 "\n"
@@ -1940,7 +2010,7 @@ msgstr ""
 "\n"
 "Definiciones de versión:\n"
 
-#: elf.c:1211
+#: elf.c:1273
 #, c-format
 msgid ""
 "\n"
@@ -1949,358 +2019,375 @@ msgstr ""
 "\n"
 "Referencias de Versión:\n"
 
-#: elf.c:1216
+#: elf.c:1278
 #, c-format
 msgid "  required from %s:\n"
 msgstr "  requerido desde %s:\n"
 
-#: elf.c:1905
+#: elf.c:1985
 msgid "%B: invalid link %lu for reloc section %s (index %u)"
 msgstr "%B: enlace %lu inválido para la sección de reubicación %s (índice %u)"
 
-#: elf.c:2910
-msgid "%B: warning: sh_link not set for section `%S'"
-msgstr "%B: aviso: no se estableció sh_link para la sección `%S'"
+#: elf.c:3062
+msgid "%B: sh_link of section `%A' points to discarded section `%A' of `%B'"
+msgstr "%B: sh_link de la sección `%A' apunta a la sección descartada `%A' de `%B'"
 
-#: elf.c:3904
+#: elf.c:4070
 msgid "%B: Not enough room for program headers (allocated %u, need %u)"
 msgstr "%B: No hay suficiente espacio para los encabezados del programa (%u asignados, %u necesarios)"
 
-#: elf.c:4010
+#: elf.c:4173
 msgid "%B: The first section in the PT_DYNAMIC segment is not the .dynamic section"
 msgstr "%B: La primera sección en el segmento PT_DYNAMIC no es la sección .dynamic"
 
-#: elf.c:4054
+#: elf.c:4217
 msgid "%B: Not enough room for program headers, try linking with -N"
 msgstr "%B: No hay suficiente espacio para los encabezados del programa, pruebe enlazar con -N"
 
-#: elf.c:4145
+#: elf.c:4308
 msgid "%B: section %A lma 0x%lx overlaps previous sections"
 msgstr "%B: la sección %A lma 0x%lx traslapa las secciones anteriores"
 
-#: elf.c:4546
+#: elf.c:4709
 msgid "%B: warning: allocated section `%s' not in segment"
 msgstr "%B: aviso: la sección asignada `%s' no está en el segmento"
 
-#: elf.c:4850
+#: elf.c:5002
 msgid "%B: symbol `%s' required but not present"
 msgstr "%B: se requiere el símbolo `%s' pero no está presente"
 
-#: elf.c:5147
+#: elf.c:5299
 msgid "%B: warning: Empty loadable segment detected, is this intentional ?\n"
 msgstr "%B: aviso: Se detectó un segmento cargable vacío, ¿ esto es intencional ?\n"
 
-#: elf.c:5761
+#: elf.c:5961
 #, c-format
 msgid "Unable to find equivalent output section for symbol '%s' from section '%s'"
 msgstr "No se puede encontrar la sección de salida equivalente para el símbolo '%s' de la sección '%s'"
 
-#: elf.c:6620
+#: elf.c:6917
 msgid "%B: unsupported relocation type %s"
 msgstr "%B: tipo de reubicación %s sin soporte"
 
-#: elfcode.h:1039
+#: elfcode.h:1110
 #, c-format
 msgid "%s: version count (%ld) does not match symbol count (%ld)"
 msgstr "%s: la cuenta de versión (%ld) no coincide con la cuenta de símbolos (%ld)"
 
-#: elfcode.h:1266
+#: elfcode.h:1337
 #, c-format
 msgid "%s(%s): relocation %d has invalid symbol index %ld"
 msgstr "%s(%s): la reubicación %d tiene un índice de símbolo %ld inválido"
 
-#: elf-hppa.h:1401 elf-hppa.h:1427 elf-hppa.h:1442
+#: elf-hppa.h:1443 elf-hppa.h:1458
 msgid "%B(%A): warning: unresolvable relocation against symbol `%s'"
 msgstr "%B(%A): aviso: reubicación sin resolución contra el símbolo `%s'"
 
-#: elflink.c:941
+#: elflink.c:907
 msgid "%s: TLS definition in %B section %A mismatches non-TLS definition in %B section %A"
 msgstr "%s: la definición TLS en %B sección %A no coincide con la definición que no es TLS en %B sección %A"
 
-#: elflink.c:945
+#: elflink.c:911
 msgid "%s: TLS reference in %B mismatches non-TLS reference in %B"
 msgstr "%s: la referencia TLS en %b no coincide con la referencia que no es TLS en %B"
 
-#: elflink.c:949
+#: elflink.c:915
 msgid "%s: TLS definition in %B section %A mismatches non-TLS reference in %B"
 msgstr "%s: la definición TLS en %B sección %A no coincide con la referencia que no es TLS en %B"
 
-#: elflink.c:953
+#: elflink.c:919
 msgid "%s: TLS reference in %B mismatches non-TLS definition in %B section %A"
 msgstr "%s: la referencia TLS en %B no coincide con la definición que no es TLS en %B sección %A"
 
-#: elflink.c:1508
+#: elflink.c:1491
 msgid "%B: unexpected redefinition of indirect versioned symbol `%s'"
 msgstr "%B: redefinición inesperada del símbolo con versión indirecta `%s'"
 
-#: elflink.c:1825
+#: elflink.c:1807
 msgid "%B: undefined versioned symbol name %s"
 msgstr "%B: nombre de símbolo con versión %s sin definir"
 
-#: elflink.c:1974
+#: elflink.c:1955
 msgid "%B: bad reloc symbol index (0x%lx >= 0x%lx) for offset 0x%lx in section `%A'"
 msgstr "%B: índice de símbolos de reubicación inválido (0x%lx >= 0x%lx) erróneo para el desplazamiento 0x%lx en la sección `%A'"
 
-#: elflink.c:2164
+#: elflink.c:2147
 msgid "%B: relocation size mismatch in %B section %A"
 msgstr "%B: el tamaño de reubicación no coincide en %B sección %A"
 
-#: elflink.c:2454
+#: elflink.c:2437
 #, c-format
 msgid "warning: type and size of dynamic symbol `%s' are not defined"
 msgstr "aviso: el tipo y tamaño del símbolo dinámico `%s' no están definidos"
 
-#: elflink.c:2775
+#: elflink.c:2761
 msgid "warning: creating a DT_TEXTREL in a shared object."
 msgstr "aviso: se crea un DT_TEXTREL en un objeto compartido."
 
-#: elflink.c:3702
+#: elflink.c:3696
 msgid "%B: %s: invalid version %u (max %d)"
 msgstr "%B: %s: versión %u inválida (máximo %d)"
 
-#: elflink.c:3738
+#: elflink.c:3732
 msgid "%B: %s: invalid needed version %d"
 msgstr "%B: %s: versión requerida %d inválida"
 
-#: elflink.c:3919
+#: elflink.c:3912
 msgid "Warning: alignment %u of symbol `%s' in %B is smaller than %u in %B"
 msgstr "Aviso: la alineación %u del símbolo `%s' en %B es más pequeña que %u en %B"
 
-#: elflink.c:3931
+#: elflink.c:3924
 msgid "Warning: size of symbol `%s' changed from %lu in %B to %lu in %B"
 msgstr "Aviso: el tamaño del símbolo `%s' cambió de %lu en %B a %lu en %B"
 
-#: elflink.c:4098
+#: elflink.c:4091
 #, c-format
 msgid "%s: invalid DSO for symbol `%s' definition"
 msgstr "%s: DSO inválido para la definición del símbolo `%s'"
 
-#: elflink.c:5155
+#: elflink.c:5152
 #, c-format
 msgid "%s: undefined version: %s"
 msgstr "%s: versión sin definir: %s"
 
-#: elflink.c:5221
+#: elflink.c:5219
 msgid "%B: .preinit_array section is not allowed in DSO"
 msgstr "%B: no se permite la sección .preinit_array en DSO"
 
-#: elflink.c:5961
+#: elflink.c:5978
 msgid "Not enough memory to sort relocations"
 msgstr "No hay suficiente memoria para ordenar las reubicaciones"
 
-#: elflink.c:6352
+#: elflink.c:6369
 msgid "%B: %s symbol `%s' in %B is referenced by DSO"
 msgstr "%B: el símbolo %s `%s' en %B está referenciado por DSO"
 
-#: elflink.c:6433
+#: elflink.c:6452
 msgid "%B: could not find output section %A for input section %A"
 msgstr "%B: no se puede encontrar la sección de salida %A para la sección de entrada %A"
 
-#: elflink.c:6530
+#: elflink.c:6549
 msgid "%B: %s symbol `%s' isn't defined"
 msgstr "%B: el símbolo %s `%s' no está definido"
 
-#: elflink.c:7017
-msgid "`%s' referenced in section `%A' of %B: defined in discarded section `%A' of %B\n"
-msgstr "`%s' referido en la sección `%A' de %B: se definió en la sección descartada `%A' de %B\n"
+#: elflink.c:7024
+msgid "error: %B contains a reloc (0x%s) for section %A that references a non-existent global symbol"
+msgstr "error: %B contiene una reubicación (0x%s) para la sección %A que refiere a un símbolo global que no existe"
 
-#: elflink.c:7551
-msgid "%B: warning: sh_link not set for section `%A'"
-msgstr "%B: aviso: no se estableción sh_link para la sección `%A'"
+#: elflink.c:7058
+msgid "%X`%s' referenced in section `%A' of %B: defined in discarded section `%A' of %B\n"
+msgstr "%X`%s' referido en la sección `%A' de %B: se definió en la sección descartada `%A' de %B\n"
+
+#: elflink.c:7665
+msgid "%A has both ordered [`%A' in %B] and unordered [`%A' in %B] sections"
+msgstr "%A tiene tanto secciones ordenadas [`%A' en %B] como desordenadas [`%A' en %B]"
 
-#: elflink.c:7624
+#: elflink.c:7670
 #, c-format
 msgid "%A has both ordered and unordered sections"
 msgstr "%A tiene tanto secciones ordenadas como desordenadas"
 
-#: elflink.c:8437 elflink.c:8478
+#: elflink.c:8487 elflink.c:8528
 msgid "%B: could not find output section %s"
 msgstr "%B: no se puede encontrar la sección de salida %s"
 
-#: elflink.c:8442
+#: elflink.c:8492
 #, c-format
 msgid "warning: %s section has zero size"
 msgstr "aviso: la sección %s es de tamaño cero"
 
-#: elflink.c:9017
+#: elflink.c:9087
 msgid "Warning: gc-sections option ignored"
 msgstr "Aviso: se ignora la opción gc-sections"
 
-#: elflink.c:9606
-msgid "%B: ignoring duplicate section `%A'\n"
-msgstr "%B: se ignora la sección duplicada `%A'\n"
+#: elflink.c:9704
+msgid "%B: ignoring duplicate section `%A'"
+msgstr "%B: se ignora la sección duplicada `%A'"
 
-#: elflink.c:9613 elflink.c:9620
-msgid "%B: duplicate section `%A' has different size\n"
-msgstr "%B: la sección duplicada `%A' tiene tamaño diferente\n"
+#: elflink.c:9711 elflink.c:9718
+msgid "%B: duplicate section `%A' has different size"
+msgstr "%B: la sección duplicada `%A' tiene tamaño diferente"
 
-#: elflink.c:9628 elflink.c:9633
-msgid "%B: warning: could not read contents of section `%A'\n"
-msgstr "%B: aviso: no se puede leer el contenido de la sección `%A'\n"
+#: elflink.c:9726 elflink.c:9731
+msgid "%B: warning: could not read contents of section `%A'"
+msgstr "%B: aviso: no se puede leer el contenido de la sección `%A'"
 
-#: elflink.c:9637
-msgid "%B: warning: duplicate section `%A' has different contents\n"
-msgstr "%B: aviso: la sección duplicada `%A' tiene contenido diferente\n"
+#: elflink.c:9735
+msgid "%B: warning: duplicate section `%A' has different contents"
+msgstr "%B: aviso: la sección duplicada `%A' tiene contenido diferente"
 
-#: elfxx-mips.c:860
+#: elfxx-mips.c:866
 msgid "static procedure (no name)"
 msgstr "procedimiento estático (sin nombre)"
 
-#: elfxx-mips.c:2508
+#: elfxx-mips.c:2513
 msgid "not enough GOT space for local GOT entries"
 msgstr "no hay suficiente espacio GOT para entradas GOT locales"
 
-#: elfxx-mips.c:4353
+#: elfxx-mips.c:4356
 msgid "%B: %A+0x%lx: jump to stub routine which is not jal"
 msgstr "%B: %A+0x%lx: salto a una rutina cabo la cual no es jal"
 
-#: elfxx-mips.c:5919
+#: elfxx-mips.c:4993 elfxx-mips.c:5214
+msgid "%B: Warning: bad `%s' option size %u smaller than its header"
+msgstr "%B: Aviso: el tamaño de opción `%s' %u erróneo es más pequeño que su encabezado"
+
+#: elfxx-mips.c:5965
 msgid "%B: Malformed reloc detected for section %s"
 msgstr "%B: Se detectó una reubicación malformada para la sección %s"
 
-#: elfxx-mips.c:5995
+#: elfxx-mips.c:6041
 msgid "%B: CALL16 reloc at 0x%lx not against global symbol"
 msgstr "%B: la reubicación CALL16 en 0x%lx no es contra un símbolo global"
 
-#: elfxx-mips.c:9308
+#: elfxx-mips.c:9380
 #, c-format
 msgid "%s: illegal section name `%s'"
 msgstr "%s: nombre de sección `%s' ilegal"
 
-#: elfxx-mips.c:9632
+#: elfxx-mips.c:9719
 msgid "%B: endianness incompatible with that of the selected emulation"
 msgstr "%B: la endianez es incompatible con aquella de la emulación seleccionada"
 
-#: elfxx-mips.c:9644
+#: elfxx-mips.c:9731
 msgid "%B: ABI is incompatible with that of the selected emulation"
 msgstr "%B: la ABI es incompatible con aquella de la emulación seleccionada"
 
-#: elfxx-mips.c:9716
+#: elfxx-mips.c:9803
 msgid "%B: warning: linking PIC files with non-PIC files"
 msgstr "%B: aviso: enlazando ficheros PIC con ficheros que no son PIC"
 
-#: elfxx-mips.c:9733
+#: elfxx-mips.c:9820
 msgid "%B: linking 32-bit code with 64-bit code"
 msgstr "%B: enlazando código de 32-bit con código de 64-bit"
 
-#: elfxx-mips.c:9761
+#: elfxx-mips.c:9848
 msgid "%B: linking %s module with previous %s modules"
 msgstr "%B: enlazando el módulo %s con módulos %s previos"
 
-#: elfxx-mips.c:9784
+#: elfxx-mips.c:9871
 msgid "%B: ABI mismatch: linking %s module with previous %s modules"
 msgstr "%B: no coincide el ABI: enlazando el módulo %s con módulos %s previos"
 
-#: elfxx-mips.c:9849
+#: elfxx-mips.c:9936
 #, c-format
 msgid " [abi=O32]"
 msgstr " [abi=O32]"
 
-#: elfxx-mips.c:9851
+#: elfxx-mips.c:9938
 #, c-format
 msgid " [abi=O64]"
 msgstr " [abi=O64]"
 
-#: elfxx-mips.c:9853
+#: elfxx-mips.c:9940
 #, c-format
 msgid " [abi=EABI32]"
 msgstr " [abi=EABI32]"
 
-#: elfxx-mips.c:9855
+#: elfxx-mips.c:9942
 #, c-format
 msgid " [abi=EABI64]"
 msgstr " [abi=EABI64]"
 
-#: elfxx-mips.c:9857
+#: elfxx-mips.c:9944
 #, c-format
 msgid " [abi unknown]"
 msgstr " [abi desconocido]"
 
-#: elfxx-mips.c:9859
+#: elfxx-mips.c:9946
 #, c-format
 msgid " [abi=N32]"
 msgstr " [abi=N32]"
 
-#: elfxx-mips.c:9861
+#: elfxx-mips.c:9948
 #, c-format
 msgid " [abi=64]"
 msgstr " [abi=64]"
 
-#: elfxx-mips.c:9863
+#: elfxx-mips.c:9950
 #, c-format
 msgid " [no abi set]"
 msgstr " [no hay conjunto abi]"
 
-#: elfxx-mips.c:9866
+#: elfxx-mips.c:9953
 #, c-format
 msgid " [mips1]"
 msgstr " [mips1]"
 
-#: elfxx-mips.c:9868
+#: elfxx-mips.c:9955
 #, c-format
 msgid " [mips2]"
 msgstr " [mips2]"
 
-#: elfxx-mips.c:9870
+#: elfxx-mips.c:9957
 #, c-format
 msgid " [mips3]"
 msgstr " [mips3]"
 
-#: elfxx-mips.c:9872
+#: elfxx-mips.c:9959
 #, c-format
 msgid " [mips4]"
 msgstr " [mips4]"
 
-#: elfxx-mips.c:9874
+#: elfxx-mips.c:9961
 #, c-format
 msgid " [mips5]"
 msgstr " [mips5]"
 
-#: elfxx-mips.c:9876
+#: elfxx-mips.c:9963
 #, c-format
 msgid " [mips32]"
 msgstr " [mips32]"
 
-#: elfxx-mips.c:9878
+#: elfxx-mips.c:9965
 #, c-format
 msgid " [mips64]"
 msgstr " [mips64]"
 
-#: elfxx-mips.c:9880
+#: elfxx-mips.c:9967
 #, c-format
 msgid " [mips32r2]"
 msgstr " [mips32r2]"
 
-#: elfxx-mips.c:9882
+#: elfxx-mips.c:9969
 #, c-format
 msgid " [mips64r2]"
 msgstr " [mips64r2]"
 
-#: elfxx-mips.c:9884
+#: elfxx-mips.c:9971
 #, c-format
 msgid " [unknown ISA]"
 msgstr " [ISA desconocido]"
 
-#: elfxx-mips.c:9887
+#: elfxx-mips.c:9974
 #, c-format
 msgid " [mdmx]"
 msgstr " [mdmx]"
 
-#: elfxx-mips.c:9890
+#: elfxx-mips.c:9977
 #, c-format
 msgid " [mips16]"
 msgstr " [mips16]"
 
-#: elfxx-mips.c:9893
+#: elfxx-mips.c:9980
 #, c-format
 msgid " [32bitmode]"
 msgstr " [modo 32bit]"
 
-#: elfxx-mips.c:9895
+#: elfxx-mips.c:9982
 #, c-format
 msgid " [not 32bitmode]"
 msgstr " [no es modo 32bit]"
 
+#: elfxx-sparc.c:402
+#, c-format
+msgid "invalid relocation type %d"
+msgstr "tipo de reubicación %d inválido"
+
+#: elfxx-sparc.c:2783
+msgid "%B: probably compiled without -fPIC?"
+msgstr "%B: ¿Compilado probablemente sin -fPIC?"
+
 #: i386linux.c:457 m68klinux.c:461 sparclinux.c:458
 #, c-format
 msgid "Output file requires shared library `%s'\n"
@@ -2321,75 +2408,75 @@ msgstr "El s
 msgid "Warning: fixup count mismatch\n"
 msgstr "Aviso: no coincide la cuenta de composturas\n"
 
-#: ieee.c:293
+#: ieee.c:157
 #, c-format
 msgid "%s: string too long (%d chars, max 65535)"
 msgstr "%s: la cadena es demasiado larga (%d caracteres, máximo 65535)"
 
-#: ieee.c:428
+#: ieee.c:284
 #, c-format
 msgid "%s: unrecognized symbol `%s' flags 0x%x"
 msgstr "%s: símbolo `%s' no reconocido opciones 0x%x"
 
-#: ieee.c:938
+#: ieee.c:786
 msgid "%B: unimplemented ATI record %u for symbol %u"
 msgstr "%B: grabación ATI %u sin implementar para el símbolo %u"
 
-#: ieee.c:962
+#: ieee.c:810
 msgid "%B: unexpected ATN type %d in external part"
 msgstr "%B: tipo ATN %d inesperado en la parte externa"
 
-#: ieee.c:984
+#: ieee.c:832
 msgid "%B: unexpected type after ATN"
 msgstr "%B: tipo inesperado después de ATN"
 
-#: ihex.c:264
+#: ihex.c:228
 msgid "%B:%d: unexpected character `%s' in Intel Hex file"
 msgstr "%B:%d: carácter `%s' inesperado en el fichero Hexadecimal de Intel"
 
-#: ihex.c:372
+#: ihex.c:335
 msgid "%B:%u: bad checksum in Intel Hex file (expected %u, found %u)"
 msgstr "%B:%u: suma de comprobación errónea en el fichero Hexadecimal de Intel (se esperaba %u, se obtuvo %u)"
 
-#: ihex.c:426
+#: ihex.c:389
 msgid "%B:%u: bad extended address record length in Intel Hex file"
 msgstr "%B:%u: longitud de registro de dirección extendida errónea en el fichero Hexadecimal de Intel"
 
-#: ihex.c:443
+#: ihex.c:406
 msgid "%B:%u: bad extended start address length in Intel Hex file"
 msgstr "%B:%u: longitud de dirección de inicio extendida errónea en el fichero Hexadecimal de Intel"
 
-#: ihex.c:460
+#: ihex.c:423
 msgid "%B:%u: bad extended linear address record length in Intel Hex file"
 msgstr "%B:%u: longitud de registro de dirección lineal extendida errónea en el fichero Hexadecimal de Intel"
 
-#: ihex.c:477
+#: ihex.c:440
 msgid "%B:%u: bad extended linear start address length in Intel Hex file"
 msgstr "%B:%u: longitud de dirección de inicio lineal extendida errónea en el fichero Hexadecimal de Intel"
 
-#: ihex.c:494
+#: ihex.c:457
 msgid "%B:%u: unrecognized ihex type %u in Intel Hex file"
 msgstr "%B:%u: tipo ihex %u no reconocido en el fichero Hexadecimal de Intel"
 
-#: ihex.c:619
+#: ihex.c:578
 msgid "%B: internal error in ihex_read_section"
 msgstr "%B: error interno en ihex_read_section"
 
-#: ihex.c:653
+#: ihex.c:612
 msgid "%B: bad section length in ihex_read_section"
 msgstr "%B: longitud de sección errónea en ihex_read_section"
 
-#: ihex.c:870
+#: ihex.c:824
 #, c-format
 msgid "%s: address 0x%s out of range for Intel Hex file"
 msgstr "%s: la dirección 0x%s está fuera de rango en el fichero Hexadecimal de Intel"
 
-#: libbfd.c:856
+#: libbfd.c:961
 #, c-format
 msgid "Deprecated %s called at %s line %d in %s\n"
 msgstr "Se llamó a %s que es obsoleto en %s línea %d en %s\n"
 
-#: libbfd.c:859
+#: libbfd.c:964
 #, c-format
 msgid "Deprecated %s called\n"
 msgstr "Se llamó a %s que es obsoleto\n"
@@ -2398,20 +2485,20 @@ msgstr "Se llam
 msgid "%B: indirect symbol `%s' to `%s' is a loop"
 msgstr "%B: el símbolo indirecto `%s' para `%s' es un ciclo"
 
-#: linker.c:2741
+#: linker.c:2740
 #, c-format
 msgid "Attempt to do relocatable link with %s input and %s output"
 msgstr "Se intentó hacer un enlace reubicable con entrada %s y salida %s"
 
-#: linker.c:3038
+#: linker.c:3037
 msgid "%B: warning: ignoring duplicate section `%A'\n"
 msgstr "%B: aviso: se ignora la sección duplicada `%A'\n"
 
-#: linker.c:3052
+#: linker.c:3051
 msgid "%B: warning: duplicate section `%A' has different size\n"
 msgstr "%B: aviso: la sección duplicada `%A' es de tamaño diferente\n"
 
-#: merge.c:796
+#: merge.c:817
 #, c-format
 msgid "%s: access beyond end of merged section (%ld)"
 msgstr "%s: acceso más allá del final de la sección mezclada (%ld)"
@@ -2486,62 +2573,62 @@ msgstr "%s: fichero mmo inv
 msgid "%s: invalid mmo file: file name for number %d was not specified before use\n"
 msgstr "%s: fichero mmo inválido: no se especificó un nombre de fichero para el número %d antes de utilizarse\n"
 
-#: mmo.c:1891
+#: mmo.c:1892
 #, c-format
 msgid "%s: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n"
 msgstr "%s: fichero mmo inválido: los campos y y z de lop_stab no son cero, y: %d, z: %d\n"
 
-#: mmo.c:1927
+#: mmo.c:1928
 #, c-format
 msgid "%s: invalid mmo file: lop_end not last item in file\n"
 msgstr "%s: fichero mmo inválido: lop_end no es el último elemento en el fichero\n"
 
-#: mmo.c:1940
+#: mmo.c:1941
 #, c-format
 msgid "%s: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras to the preceding lop_stab (%ld)\n"
 msgstr "%s: fichero mmo inválido: YZ de lop_end (%ld) no es igual al número de tetras del lop_stab precedente (%ld)\n"
 
-#: mmo.c:2647
+#: mmo.c:2649
 #, c-format
 msgid "%s: invalid symbol table: duplicate symbol `%s'\n"
 msgstr "%s: tabla de símbolos inválida: símbolo `%s' duplicado\n"
 
-#: mmo.c:2890
+#: mmo.c:2892
 #, c-format
 msgid "%s: Bad symbol definition: `Main' set to %s rather than the start address %s\n"
 msgstr "%s: Definición de símbolo errónea: `Main' se estableción como %s en lugar de la dirección de inicio %s\n"
 
-#: mmo.c:2982
+#: mmo.c:2984
 #, c-format
 msgid "%s: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d.  Only `Main' will be emitted.\n"
 msgstr "%s: aviso: la tabla de símbolos es demasiado grande para mmo, es más grande que 65535 words de 32-bit: %d. Sólo se emitirá `Main'.\n"
 
-#: mmo.c:3027
+#: mmo.c:3029
 #, c-format
 msgid "%s: internal error, symbol table changed size from %d to %d words\n"
 msgstr "%s: error interno, la tabla de símbolos cambió de tamaño de %d a %d words\n"
 
-#: mmo.c:3079
+#: mmo.c:3081
 #, c-format
 msgid "%s: internal error, internal register section %s had contents\n"
 msgstr "%s: error interno, la sección interna de registros %s tiene contenido\n"
 
-#: mmo.c:3130
+#: mmo.c:3132
 #, c-format
 msgid "%s: no initialized registers; section length 0\n"
 msgstr "%s: no hay registros iniciados; longitud de sección 0\n"
 
-#: mmo.c:3136
+#: mmo.c:3138
 #, c-format
 msgid "%s: too many initialized registers; section length %ld\n"
 msgstr "%s: demasiados registros iniciados: longitud de sección %ld\n"
 
-#: mmo.c:3141
+#: mmo.c:3143
 #, c-format
 msgid "%s: invalid start address for initialized registers of length %ld: 0x%lx%08lx\n"
 msgstr "%s: dirección de inicio inválida para los registros iniciados de longitud %ld: 0x%lx%08lx\n"
 
-#: oasys.c:1033
+#: oasys.c:876
 #, c-format
 msgid "%s: can not represent section `%s' in oasys"
 msgstr "%s: no se puede representar la sección `%s' en oasys"
@@ -2552,56 +2639,55 @@ msgid "Unhandled OSF/1 core file section type %d\n"
 msgstr "Tipo de sección de fichero núcleo OSF/1 %d sin manejar\n"
 
 #. XXX code yet to be written.
-#: peicode.h:760
+#: peicode.h:731
 msgid "%B: Unhandled import type; %x"
 msgstr "%B: Tipo de importación sin manejar; %x"
 
-#: peicode.h:765
+#: peicode.h:736
 msgid "%B: Unrecognised import type; %x"
 msgstr "%B: Tipo de importación no reconocida; %x"
 
-#: peicode.h:779
+#: peicode.h:750
 msgid "%B: Unrecognised import name type; %x"
 msgstr "%B: Tipo de nombre de importación no reconocida; %x"
 
-#: peicode.h:1169
+#: peicode.h:1120
 msgid "%B: Unrecognised machine type (0x%x) in Import Library Format archive"
 msgstr "%B: Tipo de máquina (0x%x) no reconocida en el archivo de Formato de Importación de Bibliotecas"
 
-#: peicode.h:1181
+#: peicode.h:1132
 msgid "%B: Recognised but unhandled machine type (0x%x) in Import Library Format archive"
 msgstr "%B: Tipo de máquina (0x%x) reconocida pero sin manejar en el archivo de Formato de Importación de Bibliotecas"
 
-#: peicode.h:1199
+#: peicode.h:1150
 msgid "%B: size field is zero in Import Library Format header"
 msgstr "%B: el tamaño del campo es cero en el encabezado del Formato de Importación de Bibliotecas"
 
-#: peicode.h:1230
+#: peicode.h:1181
 msgid "%B: string not null terminated in ILF object file."
 msgstr "%B: cadena no terminada en null en el fichero objeto ILF."
 
-#: pe-mips.c:627
+#: pe-mips.c:588
 msgid "%B: `ld -r' not supported with PE MIPS objects\n"
 msgstr "%B: `ld -r' no tiene soporte con objetos PE MIPS\n"
 
 #. OK, at this point the following variables are set up:
 #. src = VMA of the memory we're fixing up
 #. mem = pointer to memory we're fixing up
-#. val = VMA of what we need to refer to
-#.
-#: pe-mips.c:749
+#. val = VMA of what we need to refer to.
+#: pe-mips.c:704
 msgid "%B: unimplemented %s\n"
 msgstr "%B: %s sin implementar\n"
 
-#: pe-mips.c:775
+#: pe-mips.c:730
 msgid "%B: jump too far away\n"
 msgstr "%B: salto demasiado lejos\n"
 
-#: pe-mips.c:801
+#: pe-mips.c:756
 msgid "%B: bad pair/reflo after refhi\n"
 msgstr "%B: pair/reflo erróneo después de refhi\n"
 
-#: ppcboot.c:418
+#: ppcboot.c:419
 #, c-format
 msgid ""
 "\n"
@@ -2610,27 +2696,27 @@ msgstr ""
 "\n"
 "encabezado de ppcboot:\n"
 
-#: ppcboot.c:419
+#: ppcboot.c:420
 #, c-format
 msgid "Entry offset        = 0x%.8lx (%ld)\n"
 msgstr "Desplazamiento de entrada = 0x%.8lx (%ld)\n"
 
-#: ppcboot.c:420
+#: ppcboot.c:421
 #, c-format
 msgid "Length              = 0x%.8lx (%ld)\n"
 msgstr "Longitud                  = 0x%.8lx (%ld)\n"
 
-#: ppcboot.c:423
+#: ppcboot.c:424
 #, c-format
 msgid "Flag field          = 0x%.2x\n"
 msgstr "Campo de opciones         = 0x%.2x\n"
 
-#: ppcboot.c:429
+#: ppcboot.c:430
 #, c-format
 msgid "Partition name      = \"%s\"\n"
 msgstr "Nombre de la partición    = \"%s\"\n"
 
-#: ppcboot.c:448
+#: ppcboot.c:449
 #, c-format
 msgid ""
 "\n"
@@ -2639,22 +2725,22 @@ msgstr ""
 "\n"
 "Partición[%d] inicio = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
 
-#: ppcboot.c:454
+#: ppcboot.c:455
 #, c-format
 msgid "Partition[%d] end    = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
 msgstr "Partición[%d] fin    = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
 
-#: ppcboot.c:460
+#: ppcboot.c:461
 #, c-format
 msgid "Partition[%d] sector = 0x%.8lx (%ld)\n"
 msgstr "Partición[%d] sector = 0x%.8lx (%ld)\n"
 
-#: ppcboot.c:461
+#: ppcboot.c:462
 #, c-format
 msgid "Partition[%d] length = 0x%.8lx (%ld)\n"
 msgstr "Partición[%d] longitud = 0x%.8lx (%ld)\n"
 
-#: som.c:5269
+#: som.c:5069
 #, c-format
 msgid ""
 "\n"
@@ -2663,15 +2749,15 @@ msgstr ""
 "\n"
 "Encabezado Auxiliar de Ejecución\n"
 
-#: som.c:5543
+#: som.c:5330
 msgid "som_sizeof_headers unimplemented"
 msgstr "som_sizeof_headers sin implementar"
 
-#: srec.c:302
+#: srec.c:259
 msgid "%B:%d: Unexpected character `%s' in S-record file\n"
 msgstr "%B:%d: Caractér `%s' inesperado en el fichero S-record\n"
 
-#: stabs.c:296
+#: stabs.c:276
 msgid "%B(%A+0x%lx): Stabs entry has invalid string index."
 msgstr "%B(%A+0x%lx): La entrada de cabos tiene una cadena índice inválida."
 
@@ -2679,118 +2765,118 @@ msgstr "%B(%A+0x%lx): La entrada de cabos tiene una cadena 
 msgid "Unsupported .stab relocation"
 msgstr "Reubicación .stab sin soporte"
 
-#: vms-gsd.c:356
+#: vms-gsd.c:337
 #, c-format
 msgid "bfd_make_section (%s) failed"
 msgstr "bfd_make_section (%s) falló"
 
-#: vms-gsd.c:371
+#: vms-gsd.c:352
 #, c-format
 msgid "bfd_set_section_flags (%s, %x) failed"
 msgstr "bfd_set_section_flags (%s, %x) falló"
 
-#: vms-gsd.c:407
+#: vms-gsd.c:387
 #, c-format
 msgid "Size mismatch section %s=%lx, %s=%lx"
 msgstr "No coincide el tamaño de la sección %s=%lx, %s=%lx"
 
-#: vms-gsd.c:702
+#: vms-gsd.c:678
 #, c-format
 msgid "unknown gsd/egsd subtype %d"
 msgstr "subtipo de gsd/egsd %d desconocido"
 
-#: vms-hdr.c:409
+#: vms-hdr.c:327
 msgid "Object module NOT error-free !\n"
 msgstr "¡ El módulo objeto NO está libre de errores !\n"
 
-#: vms-misc.c:541
+#: vms-misc.c:473
 #, c-format
 msgid "Stack overflow (%d) in _bfd_vms_push"
 msgstr "Desbordamiento de la pila (%d) en _bfd_vms_push"
 
-#: vms-misc.c:559
+#: vms-misc.c:488
 msgid "Stack underflow in _bfd_vms_pop"
 msgstr "Desbordamiento por debajo de la pila en _bfd_vms_pop"
 
-#: vms-misc.c:912
+#: vms-misc.c:802
 msgid "_bfd_vms_output_counted called with zero bytes"
 msgstr "se llamó _bfd_vms_output_counted con cero bytes"
 
-#: vms-misc.c:917
+#: vms-misc.c:807
 msgid "_bfd_vms_output_counted called with too many bytes"
 msgstr "se llamó _bfd_vms_output_counted con demasiados bytes"
 
-#: vms-misc.c:1048
+#: vms-misc.c:925
 #, c-format
 msgid "Symbol %s replaced by %s\n"
 msgstr "El símbolo %s fue reemplazado por %s\n"
 
-#: vms-misc.c:1111
+#: vms-misc.c:984
 #, c-format
 msgid "failed to enter %s"
 msgstr "falló la introducción de %s"
 
-#: vms-tir.c:102
+#: vms-tir.c:55
 msgid "No Mem !"
 msgstr "¡ No hay Memoria !"
 
-#: vms-tir.c:383
+#: vms-tir.c:298
 #, c-format
 msgid "bad section index in %s"
 msgstr "Índice de sección erróneo en %s"
 
-#: vms-tir.c:396
+#: vms-tir.c:311
 #, c-format
 msgid "unsupported STA cmd %s"
 msgstr "orden STA %s sin soporte"
 
-#: vms-tir.c:401 vms-tir.c:1247
+#: vms-tir.c:316 vms-tir.c:1118
 #, c-format
 msgid "reserved STA cmd %d"
 msgstr "orden STA %d reservada"
 
-#: vms-tir.c:502 vms-tir.c:525
+#: vms-tir.c:408 vms-tir.c:430
 #, c-format
 msgid "%s: no symbol \"%s\""
 msgstr "%s: no existe el símbolo \"%s\""
 
-#. unsigned shift
-#. rotate
+#. Unsigned shift.
+#. Rotate.
 #. Redefine symbol to current location.
 #. Define a literal.
-#: vms-tir.c:592 vms-tir.c:704 vms-tir.c:814 vms-tir.c:832 vms-tir.c:840
-#: vms-tir.c:849 vms-tir.c:1570
+#: vms-tir.c:495 vms-tir.c:604 vms-tir.c:702 vms-tir.c:719 vms-tir.c:726
+#: vms-tir.c:734 vms-tir.c:1438
 #, c-format
 msgid "%s: not supported"
 msgstr "%s: no tiene soporte"
 
-#: vms-tir.c:597 vms-tir.c:1425
+#: vms-tir.c:500 vms-tir.c:1295
 #, c-format
 msgid "%s: not implemented"
 msgstr "%s: sin implementar"
 
-#: vms-tir.c:601 vms-tir.c:1429
+#: vms-tir.c:504 vms-tir.c:1299
 #, c-format
 msgid "reserved STO cmd %d"
 msgstr "orden STO %d reservada"
 
-#: vms-tir.c:719 vms-tir.c:1575
+#: vms-tir.c:619 vms-tir.c:1443
 #, c-format
 msgid "reserved OPR cmd %d"
 msgstr "orden OPR %d reservada"
 
-#: vms-tir.c:787 vms-tir.c:1639
+#: vms-tir.c:679 vms-tir.c:1507
 #, c-format
 msgid "reserved CTL cmd %d"
 msgstr "orden CTL %d reservada"
 
 #. stack byte from image
 #. arg: none.
-#: vms-tir.c:1155
+#: vms-tir.c:1026
 msgid "stack-from-image not implemented"
 msgstr "pila-desde-imagen sin implementar"
 
-#: vms-tir.c:1173
+#: vms-tir.c:1044
 msgid "stack-entry-mask not fully implemented"
 msgstr "pila-máscara-entrada no está completamente implementado"
 
@@ -2801,262 +2887,262 @@ msgstr "pila-m
 #.
 #. compare argument descriptor with symbol argument (ARG$V_PASSMECH)
 #. and stack TRUE (args match) or FALSE (args dont match) value.
-#: vms-tir.c:1187
+#: vms-tir.c:1058
 msgid "PASSMECH not fully implemented"
 msgstr "PASSMECH no está completamente implementado"
 
-#: vms-tir.c:1206
+#: vms-tir.c:1077
 msgid "stack-local-symbol not fully implemented"
 msgstr "pila-símbolo-local no está completamente implementado"
 
-#: vms-tir.c:1219
+#: vms-tir.c:1090
 msgid "stack-literal not fully implemented"
 msgstr "pila-literal no está completamente implementado"
 
-#: vms-tir.c:1240
+#: vms-tir.c:1111
 msgid "stack-local-symbol-entry-point-mask not fully implemented"
 msgstr "pila-símbolo-local-máscara-punto-entrada no está completamente implementado"
 
-#: vms-tir.c:1517 vms-tir.c:1529 vms-tir.c:1541 vms-tir.c:1553 vms-tir.c:1618
-#: vms-tir.c:1626 vms-tir.c:1634
+#: vms-tir.c:1385 vms-tir.c:1397 vms-tir.c:1409 vms-tir.c:1421 vms-tir.c:1486
+#: vms-tir.c:1494 vms-tir.c:1502
 #, c-format
 msgid "%s: not fully implemented"
 msgstr "%s: no está completamente implementado"
 
-#: vms-tir.c:1691
+#: vms-tir.c:1560
 #, c-format
 msgid "obj code %d not found"
 msgstr "no se encontró el código objeto %d"
 
-#: vms-tir.c:2029
+#: vms-tir.c:1868
 #, c-format
 msgid "SEC_RELOC with no relocs in section %s"
 msgstr "SEC_RELOC sin reubicaciones en la sección %s"
 
-#: vms-tir.c:2304
+#: vms-tir.c:2150
 #, c-format
 msgid "Unhandled relocation %s"
 msgstr "Reubicación %s sin manejar"
 
-#: xcofflink.c:1243
+#: xcofflink.c:564
+#, c-format
+msgid "%s: XCOFF shared object when not producing XCOFF output"
+msgstr "%s: objeto compartido XCOFF cuando no se produce salida XCOFF"
+
+#: xcofflink.c:585
+#, c-format
+msgid "%s: dynamic object with no .loader section"
+msgstr "%s: objeto dinámico sin sección .loader"
+
+#: xcofflink.c:1148
 msgid "%B: `%s' has line numbers but no enclosing section"
 msgstr "%B: `%s' tiene números de línea pero no una sección contenedora"
 
-#: xcofflink.c:1296
+#: xcofflink.c:1200
 msgid "%B: class %d symbol `%s' has no aux entries"
 msgstr "%B: clase %d símbolo `%s' no tiene entradas auxiliares"
 
-#: xcofflink.c:1319
+#: xcofflink.c:1223
 msgid "%B: symbol `%s' has unrecognized csect type %d"
 msgstr "%B: el símbolo `%s' tiene un tipo csect %d no reconocido"
 
-#: xcofflink.c:1331
+#: xcofflink.c:1235
 msgid "%B: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d"
 msgstr "%B: símbolo XTY_ER `%s' erróneo: clase %d scnum %d scnlen %d"
 
-#: xcofflink.c:1367
+#: xcofflink.c:1271
 msgid "%B: XMC_TC0 symbol `%s' is class %d scnlen %d"
 msgstr "%B: símbolo XMC_TCO `%s' es clase %d scnlen %d"
 
-#: xcofflink.c:1518
+#: xcofflink.c:1417
 msgid "%B: csect `%s' not in enclosing section"
 msgstr "%B: csect `%s' no está contenido en una sección"
 
-#: xcofflink.c:1625
+#: xcofflink.c:1524
 msgid "%B: misplaced XTY_LD `%s'"
 msgstr "%B: XTY_LD `%s' mal ubicado"
 
-#: xcofflink.c:1956
+#: xcofflink.c:1839
 msgid "%B: reloc %s:%d not in csect"
 msgstr "%B: la reubicación %s:%d no está en csect"
 
-#: xcofflink.c:2093
-#, c-format
-msgid "%s: XCOFF shared object when not producing XCOFF output"
-msgstr "%s: objeto compartido XCOFF cuando no se produce salida XCOFF"
-
-#: xcofflink.c:2114
-#, c-format
-msgid "%s: dynamic object with no .loader section"
-msgstr "%s: objeto dinámico sin sección .loader"
-
-#: xcofflink.c:2759
+#: xcofflink.c:2637
 #, c-format
 msgid "%s: no such symbol"
 msgstr "%s: no hay tal símbolo"
 
-#: xcofflink.c:2892
-msgid "error: undefined symbol __rtinit"
-msgstr "error: símbolo __rtinit indefinido"
-
-#: xcofflink.c:3449
+#: xcofflink.c:2866
 #, c-format
 msgid "warning: attempt to export undefined symbol `%s'"
 msgstr "aviso: intento de exportar el símbolo sin definir `%s'"
 
-#: xcofflink.c:4444
+#: xcofflink.c:3033
+msgid "error: undefined symbol __rtinit"
+msgstr "error: símbolo __rtinit indefinido"
+
+#: xcofflink.c:3653
 #, c-format
 msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling"
 msgstr "Desbordamiento de TOC: 0x%lx > 0x10000; pruebe -mminimal-toc al compilar"
 
-#: xcofflink.c:5285
+#: xcofflink.c:4489
 msgid "%B: loader reloc in unrecognized section `%A'"
 msgstr "%B: reubicación del cargador en la sección `%A' no reconocida"
 
-#: xcofflink.c:5306
+#: xcofflink.c:4510
 msgid "%B: `%s' in loader reloc but not loader sym"
 msgstr "%B: `%s' en la reubicación del cargador pero no es un símbolo del cargador"
 
-#: xcofflink.c:5321
+#: xcofflink.c:4525
 msgid "%B: loader reloc in read-only section %A"
 msgstr "%B: reubicación del cargador en la sección de sólo lectura %A"
 
-#: xcofflink.c:5747 xcofflink.c:5809 xcofflink.c:6111
+#: xcofflink.c:4934 xcofflink.c:4996 xcofflink.c:5291
 #, c-format
 msgid "%s: loader reloc in unrecognized section `%s'"
 msgstr "%s: reubicación del cargador en la sección `%s' no reconocida"
 
-#: xcofflink.c:6122
+#: xcofflink.c:5302
 #, c-format
 msgid "%s: `%s' in loader reloc but not loader sym"
 msgstr "%s: `%s' en la reubicación del cargador pero no es un símbolo del cargador"
 
-#: elf32-ia64.c:987 elf64-ia64.c:987
+#: elf32-ia64.c:1139 elf64-ia64.c:1139
 msgid "%B: Can't relax br at 0x%lx in section `%A'. Please use brl or indirect branch."
 msgstr "%B: No se puede relajar br en 0x%lx en la sección `%A'. Por favor use brl o ramificación indirecta."
 
-#: elf32-ia64.c:2339 elf64-ia64.c:2339
+#: elf32-ia64.c:2508 elf64-ia64.c:2508
 msgid "@pltoff reloc against local symbol"
 msgstr "reubicación @pltoff contra un símbolo local"
 
-#: elf32-ia64.c:3757 elf64-ia64.c:3757
+#: elf32-ia64.c:3955 elf64-ia64.c:3955
 #, c-format
 msgid "%s: short data segment overflowed (0x%lx >= 0x400000)"
 msgstr "%s: segmento de datos short desbordado (0x%lx >= 0x400000)"
 
-#: elf32-ia64.c:3768 elf64-ia64.c:3768
+#: elf32-ia64.c:3966 elf64-ia64.c:3966
 #, c-format
 msgid "%s: __gp does not cover short data segment"
 msgstr "%s: __gp no cubre el segmento de datos short"
 
-#: elf32-ia64.c:4015 elf64-ia64.c:4015
+#: elf32-ia64.c:4213 elf64-ia64.c:4213
 msgid "%B: non-pic code with imm relocation against dynamic symbol `%s'"
 msgstr "%B: código que no es pic con reubicación imm contra el símbolo dinámico %s"
 
-#: elf32-ia64.c:4080 elf64-ia64.c:4080
+#: elf32-ia64.c:4280 elf64-ia64.c:4280
 msgid "%B: @gprel relocation against dynamic symbol %s"
 msgstr "%B: reubicación @gprel contra el símbolo dinámico %s"
 
-#: elf32-ia64.c:4140 elf64-ia64.c:4140
+#: elf32-ia64.c:4343 elf64-ia64.c:4343
 msgid "%B: linking non-pic code in a position independent executable"
 msgstr "%B: enlazando código que no es pic en un ejecutable independiente de posición"
 
-#: elf32-ia64.c:4277 elf64-ia64.c:4277
+#: elf32-ia64.c:4480 elf64-ia64.c:4480
 msgid "%B: @internal branch to dynamic symbol %s"
 msgstr "%B: ramificación @internal al símbolo dinámico %s"
 
-#: elf32-ia64.c:4279 elf64-ia64.c:4279
+#: elf32-ia64.c:4482 elf64-ia64.c:4482
 msgid "%B: speculation fixup to dynamic symbol %s"
 msgstr "%B: compostura de especulación al símbolo dinámico %s"
 
-#: elf32-ia64.c:4281 elf64-ia64.c:4281
+#: elf32-ia64.c:4484 elf64-ia64.c:4484
 msgid "%B: @pcrel relocation against dynamic symbol %s"
 msgstr "%B: reubicación @pcrel contra el símbolo dinámico %s"
 
-#: elf32-ia64.c:4488 elf64-ia64.c:4488
+#: elf32-ia64.c:4691 elf64-ia64.c:4691
 msgid "unsupported reloc"
 msgstr "reubicación sin soporte"
 
-#: elf32-ia64.c:4528 elf64-ia64.c:4528
+#: elf32-ia64.c:4724 elf64-ia64.c:4724
 msgid "%B: Can't relax br (%s) to `%s' at 0x%lx in section `%A' with size 0x%lx (> 0x1000000)."
 msgstr "%B: No se puede relajar br (%s) a `%s' en 0x%lx en la sección `%A' con tamaño 0x%lx (> 0x1000000)."
 
-#: elf32-ia64.c:4789 elf64-ia64.c:4789
+#: elf32-ia64.c:4985 elf64-ia64.c:4985
 msgid "%B: linking trap-on-NULL-dereference with non-trapping files"
 msgstr "%B: enlazando deferencias-captura-en-NULL con ficheros que no son de captura"
 
-#: elf32-ia64.c:4798 elf64-ia64.c:4798
+#: elf32-ia64.c:4994 elf64-ia64.c:4994
 msgid "%B: linking big-endian files with little-endian files"
 msgstr "%B: enlazando ficheros big-endian con ficheros little-endian"
 
-#: elf32-ia64.c:4807 elf64-ia64.c:4807
+#: elf32-ia64.c:5003 elf64-ia64.c:5003
 msgid "%B: linking 64-bit files with 32-bit files"
 msgstr "%B: enlazando ficheros de 64-bit con ficheros de 32-bit"
 
-#: elf32-ia64.c:4816 elf64-ia64.c:4816
+#: elf32-ia64.c:5012 elf64-ia64.c:5012
 msgid "%B: linking constant-gp files with non-constant-gp files"
 msgstr "%B: enlazando ficheros de gp constante con ficheros con gp no constante"
 
-#: elf32-ia64.c:4826 elf64-ia64.c:4826
+#: elf32-ia64.c:5022 elf64-ia64.c:5022
 msgid "%B: linking auto-pic files with non-auto-pic files"
 msgstr "%B: enlazando ficheros de pic automático con ficheros sin pic automático"
 
-#: peigen.c:1014 pepigen.c:1014
+#: peigen.c:979 pepigen.c:979
 #, c-format
 msgid "%s: line number overflow: 0x%lx > 0xffff"
 msgstr "%s: desbordamiento de número de línea: 0x%lx > 0xffff"
 
-#: peigen.c:1041 pepigen.c:1041
+#: peigen.c:1006 pepigen.c:1006
 msgid "Export Directory [.edata (or where ever we found it)]"
 msgstr "Directorio de Exportación [.edata (o donde quiera que se encuentre)]"
 
-#: peigen.c:1042 pepigen.c:1042
+#: peigen.c:1007 pepigen.c:1007
 msgid "Import Directory [parts of .idata]"
 msgstr "Directorio de Importación [partes de .idata]"
 
-#: peigen.c:1043 pepigen.c:1043
+#: peigen.c:1008 pepigen.c:1008
 msgid "Resource Directory [.rsrc]"
 msgstr "Directorio de Recursos [.rsrc]"
 
-#: peigen.c:1044 pepigen.c:1044
+#: peigen.c:1009 pepigen.c:1009
 msgid "Exception Directory [.pdata]"
 msgstr "Directorio de Excepciones [.pdata]"
 
-#: peigen.c:1045 pepigen.c:1045
+#: peigen.c:1010 pepigen.c:1010
 msgid "Security Directory"
 msgstr "Directorio de Seguridad"
 
-#: peigen.c:1046 pepigen.c:1046
+#: peigen.c:1011 pepigen.c:1011
 msgid "Base Relocation Directory [.reloc]"
 msgstr "Directorio de Reubicación Base [.reloc]"
 
-#: peigen.c:1047 pepigen.c:1047
+#: peigen.c:1012 pepigen.c:1012
 msgid "Debug Directory"
 msgstr "Directorio de Depuración"
 
-#: peigen.c:1048 pepigen.c:1048
+#: peigen.c:1013 pepigen.c:1013
 msgid "Description Directory"
 msgstr "Directorio de Descripciones"
 
-#: peigen.c:1049 pepigen.c:1049
+#: peigen.c:1014 pepigen.c:1014
 msgid "Special Directory"
 msgstr "Directorio Especial"
 
-#: peigen.c:1050 pepigen.c:1050
+#: peigen.c:1015 pepigen.c:1015
 msgid "Thread Storage Directory [.tls]"
 msgstr "Directorio de Almacenamiento de Hilos [.tls]"
 
-#: peigen.c:1051 pepigen.c:1051
+#: peigen.c:1016 pepigen.c:1016
 msgid "Load Configuration Directory"
 msgstr "Directorio de Carga de Configuraciones"
 
-#: peigen.c:1052 pepigen.c:1052
+#: peigen.c:1017 pepigen.c:1017
 msgid "Bound Import Directory"
 msgstr "Directorio de Importación de Relaciones"
 
-#: peigen.c:1053 pepigen.c:1053
+#: peigen.c:1018 pepigen.c:1018
 msgid "Import Address Table Directory"
 msgstr "Directorio de Importación de Tablas de Direcciones"
 
-#: peigen.c:1054 pepigen.c:1054
+#: peigen.c:1019 pepigen.c:1019
 msgid "Delay Import Directory"
 msgstr "Directorio de Retardo de Importación"
 
-#: peigen.c:1055 peigen.c:1056 pepigen.c:1055 pepigen.c:1056
+#: peigen.c:1020 peigen.c:1021 pepigen.c:1020 pepigen.c:1021
 msgid "Reserved"
 msgstr "Reservado"
 
-#: peigen.c:1118 pepigen.c:1118
+#: peigen.c:1081 pepigen.c:1081
 #, c-format
 msgid ""
 "\n"
@@ -3065,7 +3151,7 @@ msgstr ""
 "\n"
 "Hay una tabla de importación, pero la sección que la contiene no se puede encontrar\n"
 
-#: peigen.c:1123 pepigen.c:1123
+#: peigen.c:1086 pepigen.c:1086
 #, c-format
 msgid ""
 "\n"
@@ -3074,7 +3160,7 @@ msgstr ""
 "\n"
 "Hay una tabla de importación en %s en 0x%lx\n"
 
-#: peigen.c:1159 pepigen.c:1159
+#: peigen.c:1129 pepigen.c:1129
 #, c-format
 msgid ""
 "\n"
@@ -3083,12 +3169,12 @@ msgstr ""
 "\n"
 "Se localizó el descriptor de función en la dirección de inicio: %04lx\n"
 
-#: peigen.c:1162 pepigen.c:1162
+#: peigen.c:1132 pepigen.c:1132
 #, c-format
 msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n"
 msgstr "\tcódigo-base %08lx tabla-de-contenidos (cargable/actual) %08lx/%08lx\n"
 
-#: peigen.c:1170 pepigen.c:1170
+#: peigen.c:1140 pepigen.c:1140
 #, c-format
 msgid ""
 "\n"
@@ -3097,7 +3183,7 @@ msgstr ""
 "\n"
 "¡No está la sección reldata! No se decodificó el descriptor de función.\n"
 
-#: peigen.c:1175 pepigen.c:1175
+#: peigen.c:1145 pepigen.c:1145
 #, c-format
 msgid ""
 "\n"
@@ -3106,7 +3192,7 @@ msgstr ""
 "\n"
 "Las Tablas de Importación (se interpretaron los contenidos de la sección %s)\n"
 
-#: peigen.c:1178 pepigen.c:1178
+#: peigen.c:1148 pepigen.c:1148
 #, c-format
 msgid ""
 " vma:            Hint    Time      Forward  DLL       First\n"
@@ -3115,7 +3201,7 @@ msgstr ""
 " vma:            Pista   Fecha     Adelante DLL       Primero\n"
 "                 Tabla   Estampa   Cadena   Nombre    Thunk\n"
 
-#: peigen.c:1223 pepigen.c:1223
+#: peigen.c:1196 pepigen.c:1196
 #, c-format
 msgid ""
 "\n"
@@ -3124,12 +3210,12 @@ msgstr ""
 "\n"
 "\tNombre de la DLL: %s\n"
 
-#: peigen.c:1234 pepigen.c:1234
+#: peigen.c:1207 pepigen.c:1207
 #, c-format
 msgid "\tvma:  Hint/Ord Member-Name Bound-To\n"
 msgstr "\tvma:  Pista/Ord Nombre-Miembro Unido-A\n"
 
-#: peigen.c:1259 pepigen.c:1259
+#: peigen.c:1232 pepigen.c:1232
 #, c-format
 msgid ""
 "\n"
@@ -3138,7 +3224,7 @@ msgstr ""
 "\n"
 "Hay un thunk inicial, pero la sección que lo contiene no se puede encontrar\n"
 
-#: peigen.c:1399 pepigen.c:1399
+#: peigen.c:1365 pepigen.c:1365
 #, c-format
 msgid ""
 "\n"
@@ -3147,7 +3233,16 @@ msgstr ""
 "\n"
 "Hay una tabla de exportación, pero la sección que la contiene no se puede encontrar\n"
 
-#: peigen.c:1404 pepigen.c:1404
+#: peigen.c:1374 pepigen.c:1374
+#, c-format
+msgid ""
+"\n"
+"There is an export table in %s, but it does not fit into that section\n"
+msgstr ""
+"\n"
+"Hay una tabla de exportación en %s, pero no cabe en esa sección\n"
+
+#: peigen.c:1380 pepigen.c:1380
 #, c-format
 msgid ""
 "\n"
@@ -3156,7 +3251,7 @@ msgstr ""
 "\n"
 "Hay una tabla de exportación en %s en 0x%lx\n"
 
-#: peigen.c:1435 pepigen.c:1435
+#: peigen.c:1408 pepigen.c:1408
 #, c-format
 msgid ""
 "\n"
@@ -3167,68 +3262,68 @@ msgstr ""
 "Las Tablas de Exportación (se interpretaron los contenidos de la sección %s)\n"
 "\n"
 
-#: peigen.c:1439 pepigen.c:1439
+#: peigen.c:1412 pepigen.c:1412
 #, c-format
 msgid "Export Flags \t\t\t%lx\n"
 msgstr "Opciones de Exportación \t\t\t%lx\n"
 
-#: peigen.c:1442 pepigen.c:1442
+#: peigen.c:1415 pepigen.c:1415
 #, c-format
 msgid "Time/Date stamp \t\t%lx\n"
 msgstr "marca de Hora/Fecha \t\t%lx\n"
 
-#: peigen.c:1445 pepigen.c:1445
+#: peigen.c:1418 pepigen.c:1418
 #, c-format
 msgid "Major/Minor \t\t\t%d/%d\n"
 msgstr "Mayor/Menor \t\t\t%d/%d\n"
 
-#: peigen.c:1448 pepigen.c:1448
+#: peigen.c:1421 pepigen.c:1421
 #, c-format
 msgid "Name \t\t\t\t"
 msgstr "Nombre \t\t\t\t"
 
-#: peigen.c:1454 pepigen.c:1454
+#: peigen.c:1427 pepigen.c:1427
 #, c-format
 msgid "Ordinal Base \t\t\t%ld\n"
 msgstr "Base Ordinal \t\t\t%ld\n"
 
-#: peigen.c:1457 pepigen.c:1457
+#: peigen.c:1430 pepigen.c:1430
 #, c-format
 msgid "Number in:\n"
 msgstr "Número en:\n"
 
-#: peigen.c:1460 pepigen.c:1460
+#: peigen.c:1433 pepigen.c:1433
 #, c-format
 msgid "\tExport Address Table \t\t%08lx\n"
 msgstr "\tTabla de Exportación de Direcciones \t\t%08lx\n"
 
-#: peigen.c:1464 pepigen.c:1464
+#: peigen.c:1437 pepigen.c:1437
 #, c-format
 msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n"
 msgstr "\tTabla [Nombre Puntero/Ordinal]\t%08lx\n"
 
-#: peigen.c:1467 pepigen.c:1467
+#: peigen.c:1440 pepigen.c:1440
 #, c-format
 msgid "Table Addresses\n"
 msgstr "Direcciones de la Tabla\n"
 
-#: peigen.c:1470 pepigen.c:1470
+#: peigen.c:1443 pepigen.c:1443
 #, c-format
 msgid "\tExport Address Table \t\t"
 msgstr "\tTabla de Exportación de Direcciones \t\t"
 
-#: peigen.c:1475 pepigen.c:1475
+#: peigen.c:1448 pepigen.c:1448
 #, c-format
 msgid "\tName Pointer Table \t\t"
 msgstr "\tNombre de la Tabla de Punteros \t\t"
 
 # continuar aqui
-#: peigen.c:1480 pepigen.c:1480
+#: peigen.c:1453 pepigen.c:1453
 #, c-format
 msgid "\tOrdinal Table \t\t\t"
 msgstr "\tTabla Ordinal \t\t\t"
 
-#: peigen.c:1495 pepigen.c:1495
+#: peigen.c:1467 pepigen.c:1467
 #, c-format
 msgid ""
 "\n"
@@ -3237,15 +3332,15 @@ msgstr ""
 "\n"
 "Tabla de Exportación de Direcciones -- Base Ordinal %ld\n"
 
-#: peigen.c:1514 pepigen.c:1514
+#: peigen.c:1486 pepigen.c:1486
 msgid "Forwarder RVA"
 msgstr "RVA Adelantador"
 
-#: peigen.c:1525 pepigen.c:1525
+#: peigen.c:1497 pepigen.c:1497
 msgid "Export RVA"
 msgstr "RVA Exportador"
 
-#: peigen.c:1532 pepigen.c:1532
+#: peigen.c:1504 pepigen.c:1504
 #, c-format
 msgid ""
 "\n"
@@ -3254,12 +3349,12 @@ msgstr ""
 "\n"
 "Tabla [Puntero a Ordinal/Nombre]\n"
 
-#: peigen.c:1587 pepigen.c:1587
+#: peigen.c:1557 pepigen.c:1557
 #, c-format
 msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n"
 msgstr "Aviso, el tamaño de la sección .pdata (%ld) no es un múltiplo de %d\n"
 
-#: peigen.c:1591 pepigen.c:1591
+#: peigen.c:1561 pepigen.c:1561
 #, c-format
 msgid ""
 "\n"
@@ -3268,12 +3363,12 @@ msgstr ""
 "\n"
 "La Tabla de Funciones (se interpretaron los contenidos de la sección .pdata)\n"
 
-#: peigen.c:1594 pepigen.c:1594
+#: peigen.c:1564 pepigen.c:1564
 #, c-format
 msgid " vma:\t\t\tBegin Address    End Address      Unwind Info\n"
 msgstr " vma:\t\t\tDirección Inicio Dirección Fin    Información Desenvuelta\n"
 
-#: peigen.c:1596 pepigen.c:1596
+#: peigen.c:1566 pepigen.c:1566
 #, c-format
 msgid ""
 " vma:\t\tBegin    End      EH       EH       PrologEnd  Exception\n"
@@ -3282,22 +3377,22 @@ msgstr ""
 " vma:\t\tInicio   Fin      EH       EH       FinPrólogo Excepción\n"
 "     \t\tDirecc   Direcc   Asa      Datos    Dirección  Máscara\n"
 
-#: peigen.c:1666 pepigen.c:1666
+#: peigen.c:1636 pepigen.c:1636
 #, c-format
 msgid " Register save millicode"
 msgstr " Registro para guardar milicódigo"
 
-#: peigen.c:1669 pepigen.c:1669
+#: peigen.c:1639 pepigen.c:1639
 #, c-format
 msgid " Register restore millicode"
 msgstr " Registro para restaurar milicódigo"
 
-#: peigen.c:1672 pepigen.c:1672
+#: peigen.c:1642 pepigen.c:1642
 #, c-format
 msgid " Glue code sequence"
 msgstr " Secuencia de código pegamento"
 
-#: peigen.c:1724 pepigen.c:1724
+#: peigen.c:1692 pepigen.c:1692
 #, c-format
 msgid ""
 "\n"
@@ -3308,7 +3403,7 @@ msgstr ""
 "\n"
 "Reubicaciones de Fichero Base PE (se interpretaron los contenidos de la sección .reloc)\n"
 
-#: peigen.c:1754 pepigen.c:1754
+#: peigen.c:1722 pepigen.c:1722
 #, c-format
 msgid ""
 "\n"
@@ -3317,7 +3412,7 @@ msgstr ""
 "\n"
 "Dirección Virtual: %08lx Tamaño del trozo %ld (0x%lx) Número de composturas %ld\n"
 
-#: peigen.c:1767 pepigen.c:1767
+#: peigen.c:1735 pepigen.c:1735
 #, c-format
 msgid "\treloc %4d offset %4x [%4lx] %s"
 msgstr "\treubicación %4d desplazamiento %4x [%4lx] %s"
@@ -3325,7 +3420,7 @@ msgstr "\treubicaci
 #. The MS dumpbin program reportedly ands with 0xff0f before
 #. printing the characteristics field.  Not sure why.  No reason to
 #. emulate it here.
-#: peigen.c:1807 pepigen.c:1807
+#: peigen.c:1773 pepigen.c:1773
 #, c-format
 msgid ""
 "\n"
@@ -3334,6 +3429,36 @@ msgstr ""
 "\n"
 "Características 0x%x\n"
 
+#~ msgid "Missing IHCONST"
+#~ msgstr "IHCONST faltante"
+
+#~ msgid "Missing IHIHALF"
+#~ msgstr "IHIHALF faltante"
+
+#~ msgid "missing IHCONST reloc"
+#~ msgstr "reubicación IHCONST faltante"
+
+#~ msgid "missing IHIHALF reloc"
+#~ msgstr "reubicación IHIHALF faltante"
+
+#~ msgid "%B(%A): warning: unresolvable relocation %d against symbol `%s'"
+#~ msgstr "%B(%A): aviso: reubicación %d sin resolución contra el símbolo `%s'"
+
+#~ msgid "%s: warning: unresolvable relocation against symbol `%s' from %s section"
+#~ msgstr "%s: aviso: reubicación sin resolución contra el símbolo `%s' de la sección %s"
+
+#~ msgid "%B(%A): unresolvable relocation against symbol `%s'"
+#~ msgstr "%B(%A+0x%lx): reubicación sin resolución contra el símbolo `%s'"
+
+#~ msgid "Symbol %s has no GOT subsection for offset 0x%x"
+#~ msgstr "El símbolo %s no tiene subsección GOT para el desplazamiento 0x%x"
+
+#~ msgid "%B: check_relocs: unhandled reloc type %d"
+#~ msgstr "%B: check_relocs: tipo de reubicación %d sin manejar"
+
+#~ msgid "%B: warning: sh_link not set for section `%S'"
+#~ msgstr "%B: aviso: no se estableció sh_link para la sección `%S'"
+
 #~ msgid "  first occurrence: %s: arm call to thumb"
 #~ msgstr "  primera ocurrencia: %s: llamada arm a thumb"
 
index 2479782..06ded9b 100644 (file)
@@ -2140,6 +2140,14 @@ ENUMDOC
 COMMENT
 
 ENUM
+  BFD_RELOC_MIPS_COPY
+ENUMX
+  BFD_RELOC_MIPS_JUMP_SLOT
+ENUMDOC
+  MIPS ELF relocations (VxWorks extensions).
+COMMENT
+
+ENUM
   BFD_RELOC_FRV_LABEL16
 ENUMX
   BFD_RELOC_FRV_LABEL24
@@ -2344,6 +2352,16 @@ ENUMX
 ENUMX
   BFD_RELOC_X86_64_GOTPC32
 ENUMX
+  BFD_RELOC_X86_64_GOT64
+ENUMX
+  BFD_RELOC_X86_64_GOTPCREL64
+ENUMX
+  BFD_RELOC_X86_64_GOTPC64
+ENUMX
+  BFD_RELOC_X86_64_GOTPLT64
+ENUMX
+  BFD_RELOC_X86_64_PLTOFF64
+ENUMX
   BFD_RELOC_X86_64_GOTPC32_TLSDESC
 ENUMX
   BFD_RELOC_X86_64_TLSDESC_CALL
@@ -3093,6 +3111,36 @@ ENUM
 ENUMDOC
   ADI Blackfin Long Jump pcrel.
 ENUM
+  BFD_RELOC_BFIN_GOT17M4
+ENUMX
+  BFD_RELOC_BFIN_GOTHI
+ENUMX
+  BFD_RELOC_BFIN_GOTLO
+ENUMX
+  BFD_RELOC_BFIN_FUNCDESC
+ENUMX
+  BFD_RELOC_BFIN_FUNCDESC_GOT17M4
+ENUMX
+  BFD_RELOC_BFIN_FUNCDESC_GOTHI
+ENUMX
+  BFD_RELOC_BFIN_FUNCDESC_GOTLO
+ENUMX
+  BFD_RELOC_BFIN_FUNCDESC_VALUE
+ENUMX
+  BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4
+ENUMX
+  BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI
+ENUMX
+  BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO
+ENUMX
+  BFD_RELOC_BFIN_GOTOFF17M4
+ENUMX
+  BFD_RELOC_BFIN_GOTOFFHI
+ENUMX
+  BFD_RELOC_BFIN_GOTOFFLO
+ENUMDOC
+  ADI Blackfin FD-PIC relocations.
+ENUM
   BFD_RELOC_BFIN_GOT
 ENUMDOC
   ADI Blackfin GOT relocation.
index 99f3006..849eb94 100644 (file)
@@ -554,12 +554,14 @@ extern const bfd_target bfd_efi_app_ia32_vec;
 extern const bfd_target bfd_efi_app_ia64_vec;
 extern const bfd_target bfd_elf32_avr_vec;
 extern const bfd_target bfd_elf32_bfin_vec;
+extern const bfd_target bfd_elf32_bfinfdpic_vec;
 extern const bfd_target bfd_elf32_big_generic_vec;
 extern const bfd_target bfd_elf32_bigarc_vec;
 extern const bfd_target bfd_elf32_bigarm_vec;
 extern const bfd_target bfd_elf32_bigarm_symbian_vec;
 extern const bfd_target bfd_elf32_bigarm_vxworks_vec;
 extern const bfd_target bfd_elf32_bigmips_vec;
+extern const bfd_target bfd_elf32_bigmips_vxworks_vec;
 extern const bfd_target bfd_elf32_cr16c_vec;
 extern const bfd_target bfd_elf32_cris_vec;
 extern const bfd_target bfd_elf32_crx_vec;
@@ -590,6 +592,7 @@ extern const bfd_target bfd_elf32_littlearm_vec;
 extern const bfd_target bfd_elf32_littlearm_symbian_vec;
 extern const bfd_target bfd_elf32_littlearm_vxworks_vec;
 extern const bfd_target bfd_elf32_littlemips_vec;
+extern const bfd_target bfd_elf32_littlemips_vxworks_vec;
 extern const bfd_target bfd_elf32_m32c_vec;
 extern const bfd_target bfd_elf32_m32r_vec;
 extern const bfd_target bfd_elf32_m32rle_vec;
@@ -631,6 +634,7 @@ extern const bfd_target bfd_elf32_shlin_vec;
 extern const bfd_target bfd_elf32_shlnbsd_vec;
 extern const bfd_target bfd_elf32_shnbsd_vec;
 extern const bfd_target bfd_elf32_sparc_vec;
+extern const bfd_target bfd_elf32_sparc_vxworks_vec;
 extern const bfd_target bfd_elf32_tradbigmips_vec;
 extern const bfd_target bfd_elf32_tradlittlemips_vec;
 extern const bfd_target bfd_elf32_us_cris_vec;
@@ -852,6 +856,7 @@ static const bfd_target * const _bfd_target_vector[] = {
 #endif
        &bfd_elf32_avr_vec,
        &bfd_elf32_bfin_vec,
+       &bfd_elf32_bfinfdpic_vec,
 
        /* This, and other vectors, may not be used in any *.mt configuration.
           But that does not mean they are unnecessary.  If configured with
@@ -863,6 +868,7 @@ static const bfd_target * const _bfd_target_vector[] = {
        &bfd_elf32_bigarm_symbian_vec,
        &bfd_elf32_bigarm_vxworks_vec,
        &bfd_elf32_bigmips_vec,
+       &bfd_elf32_bigmips_vxworks_vec,
        &bfd_elf32_cr16c_vec,
        &bfd_elf32_cris_vec,
        &bfd_elf32_crx_vec,
@@ -897,6 +903,7 @@ static const bfd_target * const _bfd_target_vector[] = {
        &bfd_elf32_littlearm_symbian_vec,
        &bfd_elf32_littlearm_vxworks_vec,
        &bfd_elf32_littlemips_vec,
+       &bfd_elf32_littlemips_vxworks_vec,
        &bfd_elf32_m32c_vec,
        &bfd_elf32_m32r_vec,
         &bfd_elf32_m32rle_vec,
@@ -942,6 +949,7 @@ static const bfd_target * const _bfd_target_vector[] = {
        &bfd_elf32_sh64blin_vec,
 #endif
        &bfd_elf32_sparc_vec,
+       &bfd_elf32_sparc_vxworks_vec,
        &bfd_elf32_tradbigmips_vec,
        &bfd_elf32_tradlittlemips_vec,
        &bfd_elf32_us_cris_vec,
index 559f21a..afe42cc 100644 (file)
@@ -264,36 +264,50 @@ typedef struct tekhex_data_struct
 
 #define enda(x) (x->vma + x->size)
 
-static bfd_vma
-getvalue (char **srcp)
+static bfd_boolean
+getvalue (char **srcp, bfd_vma *valuep)
 {
   char *src = *srcp;
   bfd_vma value = 0;
-  unsigned int len = hex_value(*src++);
+  unsigned int len;
+
+  if (!ISHEX (*src))
+    return FALSE;
 
+  len = hex_value (*src++);
   if (len == 0)
     len = 16;
   while (len--)
-    value = value << 4 | hex_value(*src++);
+    {
+      if (!ISHEX (*src))
+       return FALSE;
+      value = value << 4 | hex_value (*src++);
+    }
 
   *srcp = src;
-  return value;
+  *valuep = value;
+  return TRUE;
 }
 
-static unsigned int
-getsym (char *dstp, char **srcp)
+static bfd_boolean
+getsym (char *dstp, char **srcp, unsigned int *lenp)
 {
   char *src = *srcp;
   unsigned int i;
-  unsigned int len = hex_value(*src++);
+  unsigned int len;
+  
+  if (!ISHEX (*src))
+    return FALSE;
 
+  len = hex_value (*src++);
   if (len == 0)
     len = 16;
   for (i = 0; i < len; i++)
     dstp[i] = src[i];
   dstp[i] = 0;
   *srcp = src + i;
-  return len;
+  *lenp = len;
+  return TRUE;
 }
 
 static struct data_struct *
@@ -333,11 +347,12 @@ insert_byte (bfd *abfd, int value, bfd_vma addr)
 /* The first pass is to find the names of all the sections, and see
   how big the data is.  */
 
-static void
+static bfd_boolean
 first_phase (bfd *abfd, int type, char *src)
 {
   asection *section = bfd_abs_section_ptr;
   unsigned int len;
+  bfd_vma val;
   char sym[17];                        /* A symbol can only be 16chars long.  */
 
   switch (type)
@@ -345,7 +360,10 @@ first_phase (bfd *abfd, int type, char *src)
     case '6':
       /* Data record - read it and store it.  */
       {
-       bfd_vma addr = getvalue (&src);
+       bfd_vma addr;
+
+       if (!getvalue (&src, &addr))
+         return FALSE;
 
        while (*src)
          {
@@ -355,17 +373,18 @@ first_phase (bfd *abfd, int type, char *src)
          }
       }
 
-      return;
+      return TRUE;
     case '3':
       /* Symbol record, read the segment.  */
-      len = getsym (sym, &src);
+      if (!getsym (sym, &src, &len))
+       return FALSE;
       section = bfd_get_section_by_name (abfd, sym);
       if (section == NULL)
        {
          char *n = bfd_alloc (abfd, (bfd_size_type) len + 1);
 
          if (!n)
-           abort ();           /* FIXME.  */
+           return FALSE;
          memcpy (n, sym, len + 1);
          section = bfd_make_section (abfd, n);
        }
@@ -375,8 +394,11 @@ first_phase (bfd *abfd, int type, char *src)
            {
            case '1':           /* Section range.  */
              src++;
-             section->vma = getvalue (&src);
-             section->size = getvalue (&src) - section->vma;
+             if (!getvalue (&src, &section->vma))
+               return FALSE;
+             if (!getvalue (&src, &val))
+               return FALSE;
+             section->size = val - section->vma;
              section->flags = SEC_HAS_CONTENTS | SEC_LOAD | SEC_ALLOC;
              break;
            case '0':
@@ -393,35 +415,42 @@ first_phase (bfd *abfd, int type, char *src)
                char stype = (*src);
 
                if (!new)
-                 abort ();     /* FIXME.  */
+                 return FALSE;
                new->symbol.the_bfd = abfd;
                src++;
                abfd->symcount++;
                abfd->flags |= HAS_SYMS;
                new->prev = abfd->tdata.tekhex_data->symbols;
                abfd->tdata.tekhex_data->symbols = new;
-               len = getsym (sym, &src);
+               if (!getsym (sym, &src, &len))
+                 return FALSE;
                new->symbol.name = bfd_alloc (abfd, (bfd_size_type) len + 1);
                if (!new->symbol.name)
-                 abort ();     /* FIXME.  */
+                 return FALSE;
                memcpy ((char *) (new->symbol.name), sym, len + 1);
                new->symbol.section = section;
                if (stype <= '4')
                  new->symbol.flags = (BSF_GLOBAL | BSF_EXPORT);
                else
                  new->symbol.flags = BSF_LOCAL;
-               new->symbol.value = getvalue (&src) - section->vma;
+               if (!getvalue (&src, &val))
+                 return FALSE;
+               new->symbol.value = val - section->vma;
              }
+           default:
+             return FALSE;
            }
        }
     }
+
+  return TRUE;
 }
 
 /* Pass over a tekhex, calling one of the above functions on each
    record.  */
 
-static void
-pass_over (bfd *abfd, void (*func) (bfd *, int, char *))
+static bfd_boolean
+pass_over (bfd *abfd, bfd_boolean (*func) (bfd *, int, char *))
 {
   unsigned int chars_on_line;
   bfd_boolean eof = FALSE;
@@ -462,8 +491,11 @@ pass_over (bfd *abfd, void (*func) (bfd *, int, char *))
       /* Put a null at the end.  */
       src[chars_on_line] = 0;
 
-      func (abfd, type, src);
+      if (!func (abfd, type, src))
+       return FALSE;
     }
+
+  return TRUE;
 }
 
 static long
@@ -524,7 +556,9 @@ tekhex_object_p (bfd *abfd)
 
   tekhex_mkobject (abfd);
 
-  pass_over (abfd, first_phase);
+  if (!pass_over (abfd, first_phase))
+    return NULL;
+
   return abfd->xvec;
 }
 
index 0ab4127..004c17c 100644 (file)
@@ -1,4 +1,4 @@
-#define BFD_VERSION_DATE 20060320
+#define BFD_VERSION_DATE 20060623
 #define BFD_VERSION @bfd_version@
 #define BFD_VERSION_SUFFIX @bfd_version_suffix@
 #define BFD_VERSION_STRING @bfd_version_string@ BFD_VERSION_SUFFIX
index 19eabe7..b770ef4 100644 (file)
@@ -13,13 +13,13 @@ for the branch (e.g., "no commits without permission of X or Y").
 Organization Branches  Description
 ---------------------  -----------
 binutils-csl-arm-2005q1-branch
-binutils-csl-arm-2006q1-branch
                        CodeSourcery toolchain release branches.
                        Please do not commit to these branches without
                        permission from a CodeSourcery developer.
 
 binutils-csl-gxxpro-3_4-branch
-                       CodeSourcery branded GNU Toolchain release branch.
+binutils-csl-2_17-branch
+                       CodeSourcery branded GNU Toolchain release branches.
                        Please do not commit to this branch without
                        permission from a CodeSourcery developer.
 
index cb247a1..a89bde5 100644 (file)
@@ -1,3 +1,97 @@
+2006-06-07  Joseph S. Myers  <joseph@codesourcery.com>
+
+       * po/Make-in (pdf, ps): New dummy targets.
+
+2006-06-02  Joseph S. Myers  <joseph@codesourcery.com>
+
+       * doc/Makefile.am (TEXI2DVI): Define.
+       * doc/Makefile.in: Regenerate.
+
+2006-06-01  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       Backport:
+       2006-05-19  Andreas Schwab  <schwab@suse.de>
+       * doc/Makefile.am (addr2line.1): Depend on $(binutils_TEXINFOS).
+       (ar.1): Likewise.
+       (dlltool.1): Likewise.
+       (nlmconv.1): Likewise.
+       (nm.1): Likewise.
+       (objcopy.1): Likewise.
+       (objdump.1): Likewise.
+       (ranlib.1): Likewise.
+       (readelf.1): Likewise.
+       (size.1): Likewise.
+       (strings.1): Likewise.
+       (strip.1): Likewise.
+       (windres.1): Likewise.
+       (cxxfilt.man): Likewise.
+       * doc/Makefile.in: Regenerated.
+
+2006-05-30  Nick Clifton  <nickc@redhat.com>
+
+       * po/es.po: Updated Spanish translation.
+
+2006-05-24  Nick Clifton  <nickc@redhat.com>
+
+       * po/fr.po: Updated French translation.
+
+2006-05-23  Nick Clifton  <nickc@redhat.com>
+
+       * po/vi.po: Updated Vietnamese translation.
+
+2006-05-22  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * po/ru.po: Updated translation.
+
+2006-05-02  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * doc/Makefile.am (AM_MAKEINFOFLAGS): New.
+       (TEXI2POD): Use AM_MAKEINFOFLAGS.
+       (config.texi): Don't set top_srcdir.
+       * doc/binutils.texi: Don't use top_srcdir.
+       * aclocal.m4, Makefile.in, doc/Makefile.in: Regenerated.
+
+2006-04-12  Nick Clifton  <nickc@redhat.com>
+
+       * objdump.c (objdump_symbol_at_address): Fix typo in comment.
+
+2006-04-10  Ben Elliston  <bje@gnu.org>
+
+       * MAINTAINERS (CGEN Maintainers): Remove myself.
+
+2006-04-06  Carlos O'Donell  <carlos@codesourcery.com>
+
+       * po/Make-in: Add install-html target.
+       * Makefile.am: Add install-html and install-html-recursive targets.
+       * Makefile.in: Regenerate.
+       * configure.in: AC_SUBST datarootdir, docdir and htmldir.
+       * configure: Regenerate.
+       * doc/Makefile.am: Add install-html and install-html-am targets.
+       * doc/Makefile.in: Regenerate.
+
+2006-04-05  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * addr2line.c (long_options): Add new option 'section'.
+       (usage): Document new -j/--section option.
+       (find_offset_in_section): New function.
+       (translate_addresses): Add 'section' parameter.
+       If it is non-null, call find_offset_in_section on it.
+       (process_file): Add 'section_name' parameter.
+       If it is non-null, look for the section in the BFD object.
+       Pass the section to translate_addresses.
+       (main): Handle new -j option.
+       Pass the section name to process_file.
+       * doc/binutils.texi (addr2line): Document new -j/--section option.
+
+2006-03-29  Ben Elliston  <bje@au.ibm.com>
+
+       * resbin.c: Avoid duplicating constants in calls to reswr_alloc.
+
+2006-03-20  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * BRANCHES: Remove binutils-csl-arm-2006q1-branch.  Document
+       binutils-csl-2_17-branch instead.
+
 2006-03-20  Paul Brook  <paul@codesourcery.com>
 
        * BRANCHES: Mention binutils-csl-arm-2006q1-branch.
index e98b5df..f5beb03 100644 (file)
@@ -129,7 +129,7 @@ If you have CGEN related problems you can send email to;
 
 The current CGEN maintainers are:
 
-  Doug Evans, Ben Elliston, Frank Eigler
+  Doug Evans, Frank Eigler
 
      --------- Write After Approval ---------
 
index 91b02c1..e0e3b52 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -14,8 +14,6 @@
 
 @SET_MAKE@
 
-SOURCES = $(addr2line_SOURCES) $(ar_SOURCES) $(coffdump_SOURCES) $(cxxfilt_SOURCES) $(dlltool_SOURCES) $(dllwrap_SOURCES) $(nlmconv_SOURCES) $(nm_new_SOURCES) $(objcopy_SOURCES) $(objdump_SOURCES) $(ranlib_SOURCES) $(readelf_SOURCES) $(size_SOURCES) $(srconv_SOURCES) $(strings_SOURCES) $(strip_new_SOURCES) $(sysdump_SOURCES) $(windres_SOURCES)
-
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
 VPATH = @srcdir@
index ca84997..cd42673 100644 (file)
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.9.5 -*- Autoconf -*-
+# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
 # 2005  Free Software Foundation, Inc.
@@ -28,7 +28,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
 # Call AM_AUTOMAKE_VERSION so it can be traced.
 # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-        [AM_AUTOMAKE_VERSION([1.9.5])])
+        [AM_AUTOMAKE_VERSION([1.9.6])])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
index aae69ca..7cd67bc 100644 (file)
@@ -1,5 +1,5 @@
 /* addr2line.c -- convert addresses to line number and function name
-   Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+   Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006
    Free Software Foundation, Inc.
    Contributed by Ulrich Lauther <Ulrich.Lauther@mchp.siemens.de>
 
@@ -56,6 +56,7 @@ static struct option long_options[] =
   {"exe", required_argument, NULL, 'e'},
   {"functions", no_argument, NULL, 'f'},
   {"inlines", no_argument, NULL, 'i'},
+  {"section", required_argument, NULL, 'j'},
   {"target", required_argument, NULL, 'b'},
   {"help", no_argument, NULL, 'H'},
   {"version", no_argument, NULL, 'V'},
@@ -65,8 +66,9 @@ static struct option long_options[] =
 static void usage (FILE *, int);
 static void slurp_symtab (bfd *);
 static void find_address_in_section (bfd *, asection *, void *);
-static void translate_addresses (bfd *);
-static void process_file (const char *, const char *);
+static void find_offset_in_section (bfd *, asection *);
+static void translate_addresses (bfd *, asection *);
+static void process_file (const char *, const char *, const char *);
 \f
 /* Print a usage message to STREAM and exit with STATUS.  */
 
@@ -80,7 +82,8 @@ usage (FILE *stream, int status)
   @<file>                Read options from <file>\n\
   -b --target=<bfdname>  Set the binary file format\n\
   -e --exe=<executable>  Set the input file name (default is a.out)\n\
-  -i --inlines          Unwind inlined functions\n\
+  -i --inlines           Unwind inlined functions\n\
+  -j --section=<name>    Read section-relative offsets instead of addresses\n\
   -s --basenames         Strip directory names\n\
   -f --functions         Show function names\n\
   -C --demangle[=style]  Demangle function names\n\
@@ -150,11 +153,32 @@ find_address_in_section (bfd *abfd, asection *section,
                                 &filename, &functionname, &line);
 }
 
+/* Look for an offset in a section.  This is directly called.  */
+
+static void
+find_offset_in_section (bfd *abfd, asection *section)
+{
+  bfd_size_type size;
+
+  if (found)
+    return;
+
+  if ((bfd_get_section_flags (abfd, section) & SEC_ALLOC) == 0)
+    return;
+
+  size = bfd_get_section_size (section);
+  if (pc >= size)
+    return;
+
+  found = bfd_find_nearest_line (abfd, section, syms, pc,
+                                &filename, &functionname, &line);
+}
+
 /* Read hexadecimal addresses from stdin, translate into
    file_name:line_number and optionally function name.  */
 
 static void
-translate_addresses (bfd *abfd)
+translate_addresses (bfd *abfd, asection *section)
 {
   int read_stdin = (naddr == 0);
 
@@ -177,7 +201,10 @@ translate_addresses (bfd *abfd)
        }
 
       found = FALSE;
-      bfd_map_over_sections (abfd, find_address_in_section, NULL);
+      if (section)
+       find_offset_in_section (abfd, section);
+      else
+       bfd_map_over_sections (abfd, find_address_in_section, NULL);
 
       if (! found)
        {
@@ -237,9 +264,11 @@ translate_addresses (bfd *abfd)
 /* Process a file.  */
 
 static void
-process_file (const char *file_name, const char *target)
+process_file (const char *file_name, const char *section_name,
+             const char *target)
 {
   bfd *abfd;
+  asection *section;
   char **matching;
 
   if (get_file_size (file_name) < 1)
@@ -250,7 +279,7 @@ process_file (const char *file_name, const char *target)
     bfd_fatal (file_name);
 
   if (bfd_check_format (abfd, bfd_archive))
-    fatal (_("%s: can not get addresses from archive"), file_name);
+    fatal (_("%s: cannot get addresses from archive"), file_name);
 
   if (! bfd_check_format_matches (abfd, bfd_object, &matching))
     {
@@ -263,9 +292,18 @@ process_file (const char *file_name, const char *target)
       xexit (1);
     }
 
+  if (section_name != NULL)
+    {
+      section = bfd_get_section_by_name (abfd, section_name);
+      if (section == NULL)
+       fatal (_("%s: cannot find section %s"), file_name, section_name);
+    }
+  else
+    section = NULL;
+
   slurp_symtab (abfd);
 
-  translate_addresses (abfd);
+  translate_addresses (abfd, section);
 
   if (syms != NULL)
     {
@@ -276,12 +314,11 @@ process_file (const char *file_name, const char *target)
   bfd_close (abfd);
 }
 \f
-int main (int, char **);
-
 int
 main (int argc, char **argv)
 {
   const char *file_name;
+  const char *section_name;
   char *target;
   int c;
 
@@ -303,8 +340,9 @@ main (int argc, char **argv)
   set_default_bfd_target ();
 
   file_name = NULL;
+  section_name = NULL;
   target = NULL;
-  while ((c = getopt_long (argc, argv, "b:Ce:sfHhiVv", long_options, (int *) 0))
+  while ((c = getopt_long (argc, argv, "b:Ce:sfHhij:Vv", long_options, (int *) 0))
         != EOF)
     {
       switch (c)
@@ -348,6 +386,9 @@ main (int argc, char **argv)
        case 'i':
          unwind_inlines = TRUE;
          break;
+       case 'j':
+         section_name = optarg;
+         break;
        default:
          usage (stderr, 1);
          break;
@@ -360,7 +401,7 @@ main (int argc, char **argv)
   addr = argv + optind;
   naddr = argc - optind;
 
-  process_file (file_name, target);
+  process_file (file_name, section_name, target);
 
   return 0;
 }
index 3f79ad4..1d043e7 100644 (file)
@@ -8,7 +8,7 @@ CONFIG=all
 # Options to extract the man page from as.texinfo
 MANCONF = -Dman
 
-TEXI2POD = perl $(top_srcdir)/../etc/texi2pod.pl
+TEXI2POD = perl $(top_srcdir)/../etc/texi2pod.pl $(AM_MAKEINFOFLAGS)
 
 POD2MAN = pod2man --center="GNU Development Tools" \
         --release="binutils-$(VERSION)" --section=1
@@ -34,106 +34,108 @@ info_TEXINFOS = binutils.texi
 binutils_TEXINFOS = config.texi
 binutils_TEXI = $(srcdir)/binutils.texi
 
+AM_MAKEINFOFLAGS = -I "$(srcdir)" -I "$(top_srcdir)/../libiberty"
+TEXI2DVI = texi2dvi -I "$(srcdir)" -I "$(top_srcdir)/../libiberty"
+
 config.texi: $(srcdir)/../../bfd/configure $(binutils_TEXI)
        rm -f config.texi
        eval `grep '^ *VERSION=' $(srcdir)/../../bfd/configure`; \
          echo "@set VERSION $$VERSION" > $@
        echo "@set UPDATED `date "+%B %Y"`" >> config.texi
-       echo "@set top_srcdir $(top_srcdir)" >> config.texi
 
 # Man page generation from texinfo
-addr2line.1:   $(binutils_TEXI)
+addr2line.1:   $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Daddr2line < $(binutils_TEXI) > addr2line.pod
        -($(POD2MAN) addr2line.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f addr2line.pod
 
-ar.1:  $(binutils_TEXI)
+ar.1:  $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dar < $(binutils_TEXI) > ar.pod
        -($(POD2MAN) ar.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f ar.pod
 
-dlltool.1:     $(binutils_TEXI)
+dlltool.1:     $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Ddlltool < $(binutils_TEXI) > dlltool.pod
        -($(POD2MAN) dlltool.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f dlltool.pod
 
-nlmconv.1:     $(binutils_TEXI)
+nlmconv.1:     $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dnlmconv < $(binutils_TEXI) > nlmconv.pod
        -($(POD2MAN) nlmconv.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f nlmconv.pod
 
-nm.1:  $(binutils_TEXI)
+nm.1:  $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dnm < $(binutils_TEXI) > nm.pod
        -($(POD2MAN) nm.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f nm.pod
 
-objcopy.1:     $(binutils_TEXI)
+objcopy.1:     $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dobjcopy < $(binutils_TEXI) > objcopy.pod
        -($(POD2MAN) objcopy.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f objcopy.pod
 
-objdump.1:     $(binutils_TEXI)
+objdump.1:     $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dobjdump < $(binutils_TEXI) > objdump.pod
        -($(POD2MAN) objdump.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f objdump.pod
 
-ranlib.1:      $(binutils_TEXI)
+ranlib.1:      $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dranlib < $(binutils_TEXI) > ranlib.pod
        -($(POD2MAN) ranlib.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f ranlib.pod
 
-readelf.1:     $(binutils_TEXI)
+readelf.1:     $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dreadelf < $(binutils_TEXI) > readelf.pod
        -($(POD2MAN) readelf.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f readelf.pod
 
-size.1:        $(binutils_TEXI)
+size.1:        $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dsize < $(binutils_TEXI) > size.pod
        -($(POD2MAN) size.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f size.pod
 
-strings.1:     $(binutils_TEXI)
+strings.1:     $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dstrings < $(binutils_TEXI) > strings.pod
        -($(POD2MAN) strings.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f strings.pod
 
-strip.1:       $(binutils_TEXI)
+strip.1:       $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dstrip < $(binutils_TEXI) > strip.pod
        -($(POD2MAN) strip.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f strip.pod
 
-windres.1:     $(binutils_TEXI)
+windres.1:     $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dwindres < $(binutils_TEXI) > windres.pod
        -($(POD2MAN) windres.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f windres.pod
 
-cxxfilt.man:   $(binutils_TEXI)
+cxxfilt.man:   $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dcxxfilt < $(binutils_TEXI) > $(DEMANGLER_NAME).pod
        -($(POD2MAN) $(DEMANGLER_NAME).pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
index 4315c46..19354a4 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -61,11 +61,6 @@ PDFS = binutils.pdf
 PSS = binutils.ps
 HTMLS = binutils.html
 TEXINFOS = binutils.texi
-TEXI2DVI = `if test -f $(top_srcdir)/../texinfo/util/texi2dvi; then \
-             echo $(top_srcdir)/../texinfo/util/texi2dvi; \
-           else \
-             echo texi2dvi; \
-           fi`
 TEXI2PDF = $(TEXI2DVI) --pdf --batch
 MAKEINFOHTML = $(MAKEINFO) --html
 AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
@@ -218,7 +213,7 @@ CONFIG = all
 
 # Options to extract the man page from as.texinfo
 MANCONF = -Dman
-TEXI2POD = perl $(top_srcdir)/../etc/texi2pod.pl
+TEXI2POD = perl $(top_srcdir)/../etc/texi2pod.pl $(AM_MAKEINFOFLAGS)
 POD2MAN = pod2man --center="GNU Development Tools" \
         --release="binutils-$(VERSION)" --section=1
 
@@ -243,6 +238,8 @@ man_MANS = \
 info_TEXINFOS = binutils.texi
 binutils_TEXINFOS = config.texi
 binutils_TEXI = $(srcdir)/binutils.texi
+AM_MAKEINFOFLAGS = -I "$(srcdir)" -I "$(top_srcdir)/../libiberty"
+TEXI2DVI = texi2dvi -I "$(srcdir)" -I "$(top_srcdir)/../libiberty"
 MAINTAINERCLEANFILES = config.texi
 MOSTLYCLEANFILES = $(DEMANGLER_NAME).1
 html__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
@@ -293,9 +290,11 @@ distclean-libtool:
        restore=: && backupdir="$(am__leading_dot)am$$$$" && \
        am__cwd=`pwd` && cd $(srcdir) && \
        rm -rf $$backupdir && mkdir $$backupdir && \
-       for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
-         if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
-       done; \
+       if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+         for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+           if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+         done; \
+       else :; fi && \
        cd "$$am__cwd"; \
        if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
         -o $@ $<; \
@@ -337,6 +336,7 @@ binutils.dvi: binutils.texi $(binutils_TEXINFOS)
 binutils.pdf: binutils.texi $(binutils_TEXINFOS)
 binutils.html: binutils.texi $(binutils_TEXINFOS)
 .dvi.ps:
+       TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
        $(DVIPS) -o $@ $<
 
 uninstall-info-am:
@@ -575,101 +575,100 @@ config.texi: $(srcdir)/../../bfd/configure $(binutils_TEXI)
        eval `grep '^ *VERSION=' $(srcdir)/../../bfd/configure`; \
          echo "@set VERSION $$VERSION" > $@
        echo "@set UPDATED `date "+%B %Y"`" >> config.texi
-       echo "@set top_srcdir $(top_srcdir)" >> config.texi
 
 # Man page generation from texinfo
-addr2line.1:   $(binutils_TEXI)
+addr2line.1:   $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Daddr2line < $(binutils_TEXI) > addr2line.pod
        -($(POD2MAN) addr2line.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f addr2line.pod
 
-ar.1:  $(binutils_TEXI)
+ar.1:  $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dar < $(binutils_TEXI) > ar.pod
        -($(POD2MAN) ar.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f ar.pod
 
-dlltool.1:     $(binutils_TEXI)
+dlltool.1:     $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Ddlltool < $(binutils_TEXI) > dlltool.pod
        -($(POD2MAN) dlltool.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f dlltool.pod
 
-nlmconv.1:     $(binutils_TEXI)
+nlmconv.1:     $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dnlmconv < $(binutils_TEXI) > nlmconv.pod
        -($(POD2MAN) nlmconv.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f nlmconv.pod
 
-nm.1:  $(binutils_TEXI)
+nm.1:  $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dnm < $(binutils_TEXI) > nm.pod
        -($(POD2MAN) nm.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f nm.pod
 
-objcopy.1:     $(binutils_TEXI)
+objcopy.1:     $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dobjcopy < $(binutils_TEXI) > objcopy.pod
        -($(POD2MAN) objcopy.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f objcopy.pod
 
-objdump.1:     $(binutils_TEXI)
+objdump.1:     $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dobjdump < $(binutils_TEXI) > objdump.pod
        -($(POD2MAN) objdump.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f objdump.pod
 
-ranlib.1:      $(binutils_TEXI)
+ranlib.1:      $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dranlib < $(binutils_TEXI) > ranlib.pod
        -($(POD2MAN) ranlib.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f ranlib.pod
 
-readelf.1:     $(binutils_TEXI)
+readelf.1:     $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dreadelf < $(binutils_TEXI) > readelf.pod
        -($(POD2MAN) readelf.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f readelf.pod
 
-size.1:        $(binutils_TEXI)
+size.1:        $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dsize < $(binutils_TEXI) > size.pod
        -($(POD2MAN) size.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f size.pod
 
-strings.1:     $(binutils_TEXI)
+strings.1:     $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dstrings < $(binutils_TEXI) > strings.pod
        -($(POD2MAN) strings.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f strings.pod
 
-strip.1:       $(binutils_TEXI)
+strip.1:       $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dstrip < $(binutils_TEXI) > strip.pod
        -($(POD2MAN) strip.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f strip.pod
 
-windres.1:     $(binutils_TEXI)
+windres.1:     $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dwindres < $(binutils_TEXI) > windres.pod
        -($(POD2MAN) windres.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
                mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
        rm -f windres.pod
 
-cxxfilt.man:   $(binutils_TEXI)
+cxxfilt.man:   $(binutils_TEXI) $(binutils_TEXINFOS)
        touch $@
        -$(TEXI2POD) $(MANCONF) -Dcxxfilt < $(binutils_TEXI) > $(DEMANGLER_NAME).pod
        -($(POD2MAN) $(DEMANGLER_NAME).pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
index 0559b5b..0abcef5 100644 (file)
@@ -2607,6 +2607,7 @@ addr2line [@option{-b} @var{bfdname}|@option{--target=}@var{bfdname}]
           [@option{-e} @var{filename}|@option{--exe=}@var{filename}]
           [@option{-f}|@option{--functions}] [@option{-s}|@option{--basename}]
           [@option{-i}|@option{--inlines}]
+          [@option{-j}|@option{--section=}@var{name}]
           [@option{-H}|@option{--help}] [@option{-V}|@option{--version}]
           [addr addr @dots{}]
 @c man end
@@ -2614,13 +2615,14 @@ addr2line [@option{-b} @var{bfdname}|@option{--target=}@var{bfdname}]
 
 @c man begin DESCRIPTION addr2line
 
-@command{addr2line} translates program addresses into file names and line
-numbers.  Given an address and an executable, it uses the debugging
-information in the executable to figure out which file name and line
-number are associated with a given address.
+@command{addr2line} translates addresses into file names and line numbers.
+Given an address in an executable or an offset in a section of a relocatable
+object, it uses the debugging information to figure out which file name and
+line number are associated with it.
 
-The executable to use is specified with the @option{-e} option.  The
-default is the file @file{a.out}.
+The executable or relocatable object to use is specified with the @option{-e}
+option.  The default is the file @file{a.out}.  The section in the relocatable
+object to use is specified with the @option{-j} option.
 
 @command{addr2line} has two modes of operation.
 
@@ -2688,6 +2690,10 @@ function will also be printed.  For example, if @code{main} inlines
 @code{callee1} which inlines @code{callee2}, and address is from
 @code{callee2}, the source information for @code{callee1} and @code{main}
 will also be printed.
+
+@item -j
+@itemx --section
+Read offsets relative to the specified section instead of absolute addresses.
 @end table
 
 @c man end
@@ -3525,7 +3531,7 @@ programs described in this manual.
 
 @c man begin OPTIONS
 @table @env
-@include @value{top_srcdir}/../libiberty/at-file.texi
+@include at-file.texi
 @c man end
 
 @item --help
index 838f083..6e5eab5 100644 (file)
@@ -899,7 +899,7 @@ objdump_print_address (bfd_vma vma, struct disassemble_info *info)
   objdump_print_addr (vma, info, ! prefix_addresses);
 }
 
-/* Determine of the given address has a symbol associated with it.  */
+/* Determine if the given address has a symbol associated with it.  */
 
 static int
 objdump_symbol_at_address (bfd_vma vma, struct disassemble_info * info)
index 4ec0ca0..be09b4c 100644 (file)
@@ -1,6 +1,6 @@
 # Makefile for program source directory in GNU NLS utilities package.
 # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
-# Copyright 2003 Free Software Foundation, Inc.
+# Copyright 2003, 2006 Free Software Foundation, Inc.
 #
 # This file may be copied and used freely without restrictions.  It can
 # be used in projects which are not available under the GNU Public License
@@ -186,7 +186,7 @@ check: all
 
 cat-id-tbl.o: ../intl/libgettext.h
 
-html dvi info tags TAGS ID:
+html dvi pdf ps info tags TAGS ID:
 
 mostlyclean:
        rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
index 17a780c..d706ba4 100644 (file)
@@ -1,40 +1,42 @@
-# Mensajes en español para binutils 2.15.96.
-# Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-# Cristian Othón Martínez Vera <cfuga@itam.mx>, 2002, 2003, 2004, 2005.
+# Mensajes en español para binutils 2.16.93.
+# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# Cristian Othón Martínez Vera <cfuga@itam.mx>, 2002, 2003, 2004, 2005, 2006.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: binutils 2.15.96\n"
+"Project-Id-Version: binutils 2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-03 21:03+1030\n"
-"PO-Revision-Date: 2005-03-14 17:11-0600\n"
+"POT-Creation-Date: 2005-10-25 09:14+0930\n"
+"PO-Revision-Date: 2006-05-27 11:17-0500\n"
 "Last-Translator: Cristian Othón Martínez Vera <cfuga@itam.mx>\n"
 "Language-Team: Spanish <es@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: addr2line.c:73
+#: addr2line.c:76
 #, c-format
 msgid "Usage: %s [option(s)] [addr(s)]\n"
 msgstr "Modo de empleo: %s [opcion(es)] [direccion(es)]\n"
 
-#: addr2line.c:74
+#: addr2line.c:77
 #, c-format
 msgid " Convert addresses into line number/file name pairs.\n"
 msgstr " Convierte direcciones en pares de nombre número/fila.\n"
 
-#: addr2line.c:75
+#: addr2line.c:78
 #, c-format
 msgid " If no addresses are specified on the command line, they will be read from stdin\n"
 msgstr " Si no se especifican direcciones en la línea de órdenes, se leerán de la entrada estándar\n"
 
-#: addr2line.c:76
+#: addr2line.c:79
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                Read options from <file>\n"
 "  -b --target=<bfdname>  Set the binary file format\n"
 "  -e --exe=<executable>  Set the input file name (default is a.out)\n"
+"  -i --inlines\t\t Unwind inlined functions\n"
 "  -s --basenames         Strip directory names\n"
 "  -f --functions         Show function names\n"
 "  -C --demangle[=style]  Demangle function names\n"
@@ -43,9 +45,11 @@ msgid ""
 "\n"
 msgstr ""
 " Las opciones son:\n"
+"  @<fichero>              Lee opciones del <fichero>\n"
 "  -b --target=<nombrebfd> Establece el formato del fichero binario\n"
 "  -e --exe=<ejecutable>   Establece el nombre del fichero de entrada\n"
 "                          (por defecto es a.out)\n"
+"  -i --inlines\t\t Desenreda las funciones inline\n"
 "  -s --basenames          Elimina los nombres de directorio\n"
 "  -f --functions          Muestra los nombres de función\n"
 "  -C --demangle[=estilo]  Desenreda los nombres de función\n"
@@ -53,210 +57,217 @@ msgstr ""
 "  -v --version            Muestra la versión del programa\n"
 "\n"
 
-#: addr2line.c:88 ar.c:263 coffdump.c:467 nlmconv.c:1110 objcopy.c:478
-#: objcopy.c:512 readelf.c:2631 size.c:99 srconv.c:1731 strings.c:667
-#: sysdump.c:655 windres.c:672
+#: addr2line.c:93 ar.c:263 coffdump.c:466 nlmconv.c:1113 objcopy.c:486
+#: objcopy.c:520 readelf.c:2622 size.c:102 srconv.c:1732 strings.c:725
+#: sysdump.c:648 windres.c:673
 #, c-format
 msgid "Report bugs to %s\n"
 msgstr "Reportar bichos a %s\n"
 
-#: addr2line.c:241
+#: addr2line.c:253
 #, c-format
 msgid "%s: can not get addresses from archive"
 msgstr "%s: no se pueden obtener las direcciones del archivo"
 
-#: addr2line.c:311 nm.c:1519 objdump.c:2848
+#: addr2line.c:325 nm.c:1523 objdump.c:3033
 #, c-format
 msgid "unknown demangling style `%s'"
 msgstr "estilo de desenredo `%s' desconocido"
 
-#: ar.c:205
+#: ar.c:203
 #, c-format
 msgid "no entry %s in archive\n"
 msgstr "no existe la entrada %s en el archivo\n"
 
-#: ar.c:221
+#: ar.c:219
 #, c-format
 msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
 msgstr "Modo de empleo: %s [opciones emulación] [-]{dmpqrstx}[abcfilNoPsSuvV] [nombre-miembro] [cuenta] fichero-archivo fichero...\n"
 
-#: ar.c:224
+#: ar.c:222
 #, c-format
 msgid "       %s -M [<mri-script]\n"
 msgstr "       %s -M [<guión-mri>]\n"
 
-#: ar.c:225
+#: ar.c:223
 #, c-format
 msgid " commands:\n"
 msgstr " órdenes:\n"
 
-#: ar.c:226
+#: ar.c:224
 #, c-format
 msgid "  d            - delete file(s) from the archive\n"
 msgstr "  d            - borra fichero(s) del archivo\n"
 
-#: ar.c:227
+#: ar.c:225
 #, c-format
 msgid "  m[ab]        - move file(s) in the archive\n"
 msgstr "  m[ab]        - mueve fichero(s) en el archivo\n"
 
-#: ar.c:228
+#: ar.c:226
 #, c-format
 msgid "  p            - print file(s) found in the archive\n"
 msgstr "  p            - muestra fichero(s) encontrados en el archivo\n"
 
-#: ar.c:229
+#: ar.c:227
 #, c-format
 msgid "  q[f]         - quick append file(s) to the archive\n"
 msgstr "  q[f]         - agrega rápidamente fichero(s) al archivo\n"
 
-#: ar.c:230
+#: ar.c:228
 #, c-format
 msgid "  r[ab][f][u]  - replace existing or insert new file(s) into the archive\n"
 msgstr "  r[ab][f][u]  - reemplaza fichero(s) existente(s) o inserta fichero(s) nuevo(s) en el archivo\n"
 
-#: ar.c:231
+#: ar.c:229
 #, c-format
 msgid "  t            - display contents of archive\n"
 msgstr "  t            - muestra los contenidos del archivo\n"
 
-#: ar.c:232
+#: ar.c:230
 #, c-format
 msgid "  x[o]         - extract file(s) from the archive\n"
 msgstr "  x[o]         - extrae fichero(s) del archivo\n"
 
-#: ar.c:233
+#: ar.c:231
 #, c-format
 msgid " command specific modifiers:\n"
 msgstr " modificadores específicos de la orden:\n"
 
-#: ar.c:234
+#: ar.c:232
 #, c-format
 msgid "  [a]          - put file(s) after [member-name]\n"
 msgstr "  [a]          - coloca fichero(s) despúes de [nombre-miembro]\n"
 
-#: ar.c:235
+#: ar.c:233
 #, c-format
 msgid "  [b]          - put file(s) before [member-name] (same as [i])\n"
 msgstr "  [b]          - coloca fichero(s) antes de [nombre-miembro] (igual que [i])\n"
 
-#: ar.c:236
+#: ar.c:234
 #, c-format
 msgid "  [N]          - use instance [count] of name\n"
 msgstr "  [N]          - usa la instancia [cuenta] del nombre\n"
 
-#: ar.c:237
+#: ar.c:235
 #, c-format
 msgid "  [f]          - truncate inserted file names\n"
 msgstr "  [f]          - trunca los nombres de fichero insertados\n"
 
-#: ar.c:238
+#: ar.c:236
 #, c-format
 msgid "  [P]          - use full path names when matching\n"
 msgstr "  [P]          - utiliza nombres completos de ruta cuando se buscan coincidencias\n"
 
-#: ar.c:239
+#: ar.c:237
 #, c-format
 msgid "  [o]          - preserve original dates\n"
 msgstr "  [o]          - conserva las fechas originales\n"
 
-#: ar.c:240
+#: ar.c:238
 #, c-format
 msgid "  [u]          - only replace files that are newer than current archive contents\n"
 msgstr "  [u]          - sólo reemplaza ficheros que sean más nuevos que el contenido actual del archivo\n"
 
-#: ar.c:241
+#: ar.c:239
 #, c-format
 msgid " generic modifiers:\n"
 msgstr " modificadores genéricos:\n"
 
-#: ar.c:242
+#: ar.c:240
 #, c-format
 msgid "  [c]          - do not warn if the library had to be created\n"
 msgstr "  [c]          - no avisa si se tiene que crear la biblioteca\n"
 
-#: ar.c:243
+#: ar.c:241
 #, c-format
 msgid "  [s]          - create an archive index (cf. ranlib)\n"
 msgstr "  [s]          - crea un índice del archivo (cf. ranlib)\n"
 
-#: ar.c:244
+#: ar.c:242
 #, c-format
 msgid "  [S]          - do not build a symbol table\n"
 msgstr "  [S]          - no construye una tabla de símbolos\n"
 
-#: ar.c:245
+#: ar.c:243
 #, c-format
 msgid "  [v]          - be verbose\n"
 msgstr "  [v]          - detallado\n"
 
-#: ar.c:246
+#: ar.c:244
 #, c-format
 msgid "  [V]          - display the version number\n"
 msgstr "  [V]          - muestra el número de versión\n"
 
-#: ar.c:253
+#: ar.c:245
+#, c-format
+msgid "  @<file>      - read options from <file>\n"
+msgstr "  @<fichero>   - lee opciones del <fichero>\n"
+
+#: ar.c:252
 #, c-format
 msgid "Usage: %s [options] archive\n"
 msgstr "Modo de empleo: %s [opciones] archivo\n"
 
-#: ar.c:254
+#: ar.c:253
 #, c-format
 msgid " Generate an index to speed access to archives\n"
 msgstr " Generar un índice para acelerar el acceso a los archivos\n"
 
-#: ar.c:255
+#: ar.c:254
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                      Read options from <file>\n"
 "  -h --help                    Print this help message\n"
 "  -V --version                 Print version information\n"
 msgstr ""
 " Las opciones son:\n"
+"  @<fichero>                   Lee opciones del <fichero>\n"
 "  -h --help                    Muestra este mensaje de ayuda\n"
 "  -V --version                 Muestra la información de versión\n"
 
-#: ar.c:483
+#: ar.c:485
 msgid "two different operation options specified"
 msgstr "se especificaron dos opciones de operación diferentes"
 
-#: ar.c:558
+#: ar.c:560
 #, c-format
 msgid "illegal option -- %c"
 msgstr "opción ilegal -- %c"
 
-#: ar.c:604
+#: ar.c:606
 msgid "no operation specified"
 msgstr "no se especificó una operación"
 
-#: ar.c:607
+#: ar.c:609
 msgid "`u' is only meaningful with the `r' option."
 msgstr "`u' sólo tiene significado con la opción `r'."
 
-#: ar.c:615
+#: ar.c:617
 msgid "`N' is only meaningful with the `x' and `d' options."
 msgstr "`N' sólo tiene significado con las opciones `x' y `d'."
 
-#: ar.c:618
+#: ar.c:620
 msgid "Value for `N' must be positive."
 msgstr "El valor para `N' debe ser positivo."
 
-#: ar.c:668
+#: ar.c:670
 #, c-format
 msgid "internal error -- this option not implemented"
 msgstr "error interno -- esta opción no está implementada"
 
-#: ar.c:737
+#: ar.c:739
 #, c-format
 msgid "creating %s"
 msgstr "creando %s"
 
-#: ar.c:786 ar.c:836 ar.c:1154 objcopy.c:1603
+#: ar.c:788 ar.c:838 ar.c:1156 objcopy.c:1683
 #, c-format
 msgid "internal stat error on %s"
 msgstr "error interno de stat en %s"
 
-#: ar.c:790
+#: ar.c:792
 #, c-format
 msgid ""
 "\n"
@@ -267,37 +278,37 @@ msgstr ""
 "<%s>\n"
 "\n"
 
-#: ar.c:806 ar.c:873
+#: ar.c:808 ar.c:875
 #, c-format
 msgid "%s is not a valid archive"
 msgstr "%s no es un archivo válido"
 
-#: ar.c:841
+#: ar.c:843
 #, c-format
 msgid "stat returns negative size for %s"
 msgstr "stat devuelve un valor negativo para %s"
 
-#: ar.c:1059
+#: ar.c:1061
 #, c-format
 msgid "No member named `%s'\n"
 msgstr "No hay un miembro llamado `%s'\n"
 
-#: ar.c:1109
+#: ar.c:1111
 #, c-format
 msgid "no entry %s in archive %s!"
 msgstr "¡no hay una entrada %s en el archivo %s!"
 
-#: ar.c:1246
+#: ar.c:1248
 #, c-format
 msgid "%s: no archive map to update"
 msgstr "%s: no hay un mapa de archivo para actualizar"
 
-#: arsup.c:83
+#: arsup.c:87
 #, c-format
 msgid "No entry %s in archive.\n"
 msgstr "No hay una entrada %s en el archivo.\n"
 
-#: arsup.c:109
+#: arsup.c:112
 #, c-format
 msgid "Can't open file %s\n"
 msgstr "No se puede abrir el fichero %s\n"
@@ -353,95 +364,97 @@ msgid "  No emulation specific options\n"
 msgstr "  No hay opciones específicas de la emulación\n"
 
 #. Macros for common output.
-#: binemul.h:42
+#: binemul.h:40
 #, c-format
 msgid " emulation options: \n"
 msgstr "  opciones de emulación:\n"
 
-#: bucomm.c:109
+#: bucomm.c:110
 #, c-format
 msgid "can't set BFD default target to `%s': %s"
 msgstr "no se puede establecer el objetivo BFD por defecto a `%s': %s"
 
-#: bucomm.c:120
+#: bucomm.c:121
 #, c-format
 msgid "%s: Matching formats:"
 msgstr "%s: Formatos coincidentes:"
 
-#: bucomm.c:135
+#: bucomm.c:136
 #, c-format
 msgid "Supported targets:"
 msgstr "Objetivos con soporte:"
 
-#: bucomm.c:137
+#: bucomm.c:138
 #, c-format
 msgid "%s: supported targets:"
 msgstr "%s: objetivos con soporte:"
 
-#: bucomm.c:153
+#: bucomm.c:154
 #, c-format
 msgid "Supported architectures:"
 msgstr "Arquitecturas con soporte:"
 
-#: bucomm.c:155
+#: bucomm.c:156
 #, c-format
 msgid "%s: supported architectures:"
 msgstr "%s: arquitecturas con soporte:"
 
-#: bucomm.c:348
+#: bucomm.c:349
 #, c-format
 msgid "BFD header file version %s\n"
 msgstr "encabezado del fichero BFD versión %s\n"
 
-#: bucomm.c:449
+#: bucomm.c:450
 #, c-format
 msgid "%s: bad number: %s"
 msgstr "%s: número erróneo: %s"
 
-#: bucomm.c:466 strings.c:386
+#: bucomm.c:467 strings.c:438
 #, c-format
 msgid "'%s': No such file"
 msgstr "'%s': No hay tal fichero"
 
-#: bucomm.c:468 strings.c:388
+#: bucomm.c:469 strings.c:440
 #, c-format
 msgid "Warning: could not locate '%s'.  reason: %s"
 msgstr "Aviso: no se puede encontrar '%s'. razón: %s"
 
-#: bucomm.c:472
+#: bucomm.c:473
 #, c-format
 msgid "Warning: '%s' is not an ordinary file"
 msgstr "Aviso: '%s' no es un fichero ordinario"
 
-#: coffdump.c:105
+#: coffdump.c:103
 #, c-format
 msgid "#lines %d "
 msgstr "#líneas %d "
 
-#: coffdump.c:459 sysdump.c:648
+#: coffdump.c:457 sysdump.c:641
 #, c-format
 msgid "Usage: %s [option(s)] in-file\n"
 msgstr "Modo de empleo: %s [opcion(es)] fichero-entrada\n"
 
-#: coffdump.c:460
+#: coffdump.c:458
 #, c-format
 msgid " Print a human readable interpretation of a SYSROFF object file\n"
 msgstr " Muestra una interpretación legible por humanos de un fichero objeto SYSROFF\n"
 
-#: coffdump.c:461
+#: coffdump.c:459
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                Read options from <file>\n"
 "  -h --help              Display this information\n"
 "  -v --version           Display the program's version\n"
 "\n"
 msgstr ""
 " Las opciones son:\n"
+"  @<fichero>             Lee opciones del <fichero>\n"
 "  -h --help              Muestra esta información\n"
 "  -v --version           Muestra la versión del programa\n"
 "\n"
 
-#: coffdump.c:527 srconv.c:1819 sysdump.c:710
+#: coffdump.c:528 srconv.c:1822 sysdump.c:705
 msgid "no input file specified"
 msgstr "no se especificó un fichero de entrada"
 
@@ -538,577 +551,587 @@ msgstr "debug_get_real_type: informaci
 msgid "debug_write_type: illegal type encountered"
 msgstr "debug_write_type: se encontró un tipo ilegal"
 
-#: dlltool.c:773 dlltool.c:797 dlltool.c:826
+#: dlltool.c:765 dlltool.c:789 dlltool.c:818
 #, c-format
 msgid "Internal error: Unknown machine type: %d"
 msgstr "Error interno: Tipo de máquina desconocido: %d"
 
-#: dlltool.c:862
+#: dlltool.c:854
 #, c-format
 msgid "Can't open def file: %s"
 msgstr "No se puede abrir el fichero def: %s"
 
-#: dlltool.c:867
+#: dlltool.c:859
 #, c-format
 msgid "Processing def file: %s"
 msgstr "Procesando el fichero def: %s"
 
-#: dlltool.c:871
+#: dlltool.c:863
 msgid "Processed def file"
 msgstr "Fichero def procesado"
 
-#: dlltool.c:895
+#: dlltool.c:887
 #, c-format
 msgid "Syntax error in def file %s:%d"
 msgstr "Error sintáctico en el fichero def %s:%d"
 
-#: dlltool.c:930
+#: dlltool.c:922
 #, c-format
 msgid "%s: Path components stripped from image name, '%s'."
 msgstr "%s: Se eliminaron los componentes de la ruta del nombre de la imagen, '%s'."
 
-#: dlltool.c:939
+#: dlltool.c:931
 #, c-format
 msgid "NAME: %s base: %x"
 msgstr "NOMBRE: %s base: %x"
 
-#: dlltool.c:942 dlltool.c:958
+#: dlltool.c:934 dlltool.c:950
 msgid "Can't have LIBRARY and NAME"
 msgstr "No se puede tener BIBLIOTECA y NOMBRE"
 
-#: dlltool.c:955
+#: dlltool.c:947
 #, c-format
 msgid "LIBRARY: %s base: %x"
 msgstr "BIBLIOTECA: %s base %x"
 
-#: dlltool.c:1191 resrc.c:269
+#: dlltool.c:1183 resrc.c:269
 #, c-format
 msgid "wait: %s"
 msgstr "espera: %s"
 
-#: dlltool.c:1196 dllwrap.c:418 resrc.c:274
+#: dlltool.c:1188 dllwrap.c:413 resrc.c:274
 #, c-format
 msgid "subprocess got fatal signal %d"
 msgstr "el subproceso recibió la señal fatal %d"
 
-#: dlltool.c:1202 dllwrap.c:425 resrc.c:281
+#: dlltool.c:1194 dllwrap.c:420 resrc.c:281
 #, c-format
 msgid "%s exited with status %d"
 msgstr "%s terminó con estado %d"
 
-#: dlltool.c:1233
+#: dlltool.c:1225
 #, c-format
 msgid "Sucking in info from %s section in %s"
 msgstr "Succionando la información de la sección %s en %s"
 
-#: dlltool.c:1358
+#: dlltool.c:1350
 #, c-format
 msgid "Excluding symbol: %s"
 msgstr "Excluyendo el símbolo: %s"
 
-#: dlltool.c:1447 dlltool.c:1458 nm.c:998 nm.c:1009
+#: dlltool.c:1439 dlltool.c:1450 nm.c:1000 nm.c:1011
 #, c-format
 msgid "%s: no symbols"
 msgstr "%s: no hay símbolos"
 
 #. FIXME: we ought to read in and block out the base relocations.
-#: dlltool.c:1484
+#: dlltool.c:1476
 #, c-format
 msgid "Done reading %s"
 msgstr "%s leído"
 
-#: dlltool.c:1494
+#: dlltool.c:1486
 #, c-format
 msgid "Unable to open object file: %s"
 msgstr "No se puede abrir el fichero objeto: %s"
 
-#: dlltool.c:1497
+#: dlltool.c:1489
 #, c-format
 msgid "Scanning object file %s"
 msgstr "Revisando el fichero objeto %s"
 
-#: dlltool.c:1512
+#: dlltool.c:1504
 #, c-format
 msgid "Cannot produce mcore-elf dll from archive file: %s"
 msgstr "No se puede producir una dll mcore-elf del fichero archivo: %s"
 
-#: dlltool.c:1598
+#: dlltool.c:1590
 msgid "Adding exports to output file"
 msgstr "Agregando exportaciones al fichero de salida"
 
-#: dlltool.c:1646
+#: dlltool.c:1638
 msgid "Added exports to output file"
 msgstr "Exportaciones agregadas al fichero de salida"
 
-#: dlltool.c:1767
+#: dlltool.c:1759
 #, c-format
 msgid "Generating export file: %s"
 msgstr "Generando el fichero de exportación: %s"
 
-#: dlltool.c:1772
+#: dlltool.c:1764
 #, c-format
 msgid "Unable to open temporary assembler file: %s"
 msgstr "No se puede abrir el fichero temporal de ensamblador: %s"
 
-#: dlltool.c:1775
+#: dlltool.c:1767
 #, c-format
 msgid "Opened temporary file: %s"
 msgstr "Se abrió el fichero temporal: %s"
 
-#: dlltool.c:1997
+#: dlltool.c:1989
 msgid "Generated exports file"
 msgstr "Fichero de exportación generado"
 
-#: dlltool.c:2203
+#: dlltool.c:2195
 #, c-format
 msgid "bfd_open failed open stub file: %s"
 msgstr "falló bfd_open al abrirl el fichero de cabos: %s"
 
-#: dlltool.c:2206
+#: dlltool.c:2198
 #, c-format
 msgid "Creating stub file: %s"
 msgstr "Creando el ficheor de cabos: %s"
 
-#: dlltool.c:2588
+#: dlltool.c:2580
 #, c-format
 msgid "failed to open temporary head file: %s"
 msgstr "falló la apertura del inicio del fichero temporal: %s"
 
-#: dlltool.c:2647
+#: dlltool.c:2639
 #, c-format
 msgid "failed to open temporary tail file: %s"
 msgstr "falló la apertura del final del fichero temporal: %s"
 
-#: dlltool.c:2714
+#: dlltool.c:2706
 #, c-format
 msgid "Can't open .lib file: %s"
 msgstr "No se puede abrir el fichero .lib: %s"
 
-#: dlltool.c:2717
+#: dlltool.c:2709
 #, c-format
 msgid "Creating library file: %s"
 msgstr "Creando el fichero de biblioteca: %s"
 
-#: dlltool.c:2800 dlltool.c:2806
+#: dlltool.c:2792 dlltool.c:2798
 #, c-format
 msgid "cannot delete %s: %s"
 msgstr "no se puede borrar %s: %s"
 
-#: dlltool.c:2811
+#: dlltool.c:2803
 msgid "Created lib file"
 msgstr "Fichero de biblioteca creado"
 
-#: dlltool.c:2904
+#: dlltool.c:2882
 #, c-format
 msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
 msgstr "Aviso, ignorando las EXPORTaciones duplicadas %s %d,%d"
 
-#: dlltool.c:2910
+#: dlltool.c:2888
 #, c-format
 msgid "Error, duplicate EXPORT with oridinals: %s"
 msgstr "Error, EXPORTaciones duplicadas con ordinales: %s"
 
-#: dlltool.c:3026
+#: dlltool.c:2993
 msgid "Processing definitions"
 msgstr "Procesando definiciones"
 
-#: dlltool.c:3058
+#: dlltool.c:3025
 msgid "Processed definitions"
 msgstr "Definiciones procesadas"
 
 #. xgetext:c-format
-#: dlltool.c:3065 dllwrap.c:479
+#: dlltool.c:3032 dllwrap.c:474
 #, c-format
 msgid "Usage %s <option(s)> <object-file(s)>\n"
 msgstr "Modo de empleo %s <opcion(es)> <fichero(s)-objeto>\n"
 
 #. xgetext:c-format
-#: dlltool.c:3067
+#: dlltool.c:3034
 #, c-format
 msgid "   -m --machine <machine>    Create as DLL for <machine>.  [default: %s]\n"
 msgstr "   -m --machine <máquina>    Crear una DLL para la <máquina>.  [por defecto: %s]\n"
 
-#: dlltool.c:3068
+#: dlltool.c:3035
 #, c-format
 msgid "        possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
 msgstr "        <máquina> posible: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
 
-#: dlltool.c:3069
+#: dlltool.c:3036
 #, c-format
 msgid "   -e --output-exp <outname> Generate an export file.\n"
 msgstr "   -e --output-exp <nomsal>  Generar un fichero de exportación.\n"
 
-#: dlltool.c:3070
+#: dlltool.c:3037
 #, c-format
 msgid "   -l --output-lib <outname> Generate an interface library.\n"
 msgstr "   -l --output-lib <nomsal>  Generar un fichero de interfaz.\n"
 
-#: dlltool.c:3071
+#: dlltool.c:3038
 #, c-format
 msgid "   -a --add-indirect         Add dll indirects to export file.\n"
 msgstr "   -a --add-indirect         Agregar indirecciones dll al fichero de exportación.\n"
 
-#: dlltool.c:3072
+#: dlltool.c:3039
 #, c-format
 msgid "   -D --dllname <name>       Name of input dll to put into interface lib.\n"
 msgstr "   -D --dllname <nombre>     Nombre de la dll de entrada a colocar en la biblioteca de interfaz.\n"
 
-#: dlltool.c:3073
+#: dlltool.c:3040
 #, c-format
 msgid "   -d --input-def <deffile>  Name of .def file to be read in.\n"
 msgstr "   -d --input-def <fichdef>  Nombre del fichero .def para leer.\n"
 
-#: dlltool.c:3074
+#: dlltool.c:3041
 #, c-format
 msgid "   -z --output-def <deffile> Name of .def file to be created.\n"
 msgstr "   -z --output-def <fichdef> Nombre del fichero .def para crear.\n"
 
-#: dlltool.c:3075
+#: dlltool.c:3042
 #, c-format
 msgid "      --export-all-symbols   Export all symbols to .def\n"
 msgstr "      --export-all-symbols   Exportar todos los símbolos a un .def\n"
 
-#: dlltool.c:3076
+#: dlltool.c:3043
 #, c-format
 msgid "      --no-export-all-symbols  Only export listed symbols\n"
 msgstr "      --no-export-all-symbols  Sólo exportar los símbolos enlistados\n"
 
-#: dlltool.c:3077
+#: dlltool.c:3044
 #, c-format
 msgid "      --exclude-symbols <list> Don't export <list>\n"
 msgstr "      --exclude-symbols <list> No exportar la <list>a\n"
 
-#: dlltool.c:3078
+#: dlltool.c:3045
 #, c-format
 msgid "      --no-default-excludes  Clear default exclude symbols\n"
 msgstr "      --no-default-excludes  Limpiar los símbolos excluídos por defecto\n"
 
-#: dlltool.c:3079
+#: dlltool.c:3046
 #, c-format
 msgid "   -b --base-file <basefile> Read linker generated base file.\n"
 msgstr "   -b --base-file <fichbase> Leer el fichero base generado por el enlazador.\n"
 
-#: dlltool.c:3080
+#: dlltool.c:3047
 #, c-format
 msgid "   -x --no-idata4            Don't generate idata$4 section.\n"
 msgstr "   -x --no-idata4            No generar la sección idata$4.\n"
 
-#: dlltool.c:3081
+#: dlltool.c:3048
 #, c-format
 msgid "   -c --no-idata5            Don't generate idata$5 section.\n"
 msgstr "   -c --no-idata5            No generar la sección idata$5.\n"
 
-#: dlltool.c:3082
+#: dlltool.c:3049
 #, c-format
 msgid "   -U --add-underscore       Add underscores to symbols in interface library.\n"
 msgstr "   -U --add-underscore       Agregar subrayado a los símbolos en la biblioteca de interfaz.\n"
 
-#: dlltool.c:3083
+#: dlltool.c:3050
 #, c-format
 msgid "   -k --kill-at              Kill @<n> from exported names.\n"
 msgstr "   -k --kill-at              Eliminar @<n> de los nombres exportados.\n"
 
-#: dlltool.c:3084
+#: dlltool.c:3051
 #, c-format
 msgid "   -A --add-stdcall-alias    Add aliases without @<n>.\n"
 msgstr "   -A --add-stdcall-alias    Agregar aliases sin @<n>.\n"
 
-#: dlltool.c:3085
+#: dlltool.c:3052
 #, c-format
 msgid "   -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
 msgstr "   -p --ext-prefix-alias <prefijo> Agregar aliases con <prefijo>.\n"
 
-#: dlltool.c:3086
+#: dlltool.c:3053
 #, c-format
 msgid "   -S --as <name>            Use <name> for assembler.\n"
 msgstr "   -S --as <nombre>          Usar <nombre> para ensamblador.\n"
 
-#: dlltool.c:3087
+#: dlltool.c:3054
 #, c-format
 msgid "   -f --as-flags <flags>     Pass <flags> to the assembler.\n"
 msgstr "   -f --as-flags <opciones>  Pasar <opciones> al ensamblador.\n"
 
-#: dlltool.c:3088
+#: dlltool.c:3055
 #, c-format
 msgid "   -C --compat-implib        Create backward compatible import library.\n"
 msgstr "   -C --compat-implib        Crear biblioteca de importación compatible hacia atrás.\n"
 
-#: dlltool.c:3089
+#: dlltool.c:3056
 #, c-format
 msgid "   -n --no-delete            Keep temp files (repeat for extra preservation).\n"
 msgstr "   -n --no-delete            Conservar los ficheros temporales (repetir para conservación extra).\n"
 
-#: dlltool.c:3090
+#: dlltool.c:3057
 #, c-format
 msgid "   -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"
 msgstr "   -t --temp-prefix <prefijo> Usar el <prefijo> para construir nombres de ficheros temporales.\n"
 
-#: dlltool.c:3091
+#: dlltool.c:3058
 #, c-format
 msgid "   -v --verbose              Be verbose.\n"
 msgstr "   -v --verbose              Detallado.\n"
 
-#: dlltool.c:3092
+#: dlltool.c:3059
 #, c-format
 msgid "   -V --version              Display the program version.\n"
 msgstr "   -V --version              Muestra la versión del programa.\n"
 
-#: dlltool.c:3093
+#: dlltool.c:3060
 #, c-format
 msgid "   -h --help                 Display this information.\n"
 msgstr "   -h --help                 Muestra esta información.\n"
 
-#: dlltool.c:3095
+#: dlltool.c:3061
+#, c-format
+msgid "   @<file>                   Read options from <file>.\n"
+msgstr "   @<fichero>                Lee opciones del <fichero>.\n"
+
+#: dlltool.c:3063
 #, c-format
 msgid "   -M --mcore-elf <outname>  Process mcore-elf object files into <outname>.\n"
 msgstr "   -M --mcore-elf <nomsal>   Procesa los ficheros objeto mcore-elf hacia <nomsal>.\n"
 
-#: dlltool.c:3096
+#: dlltool.c:3064
 #, c-format
 msgid "   -L --linker <name>        Use <name> as the linker.\n"
 msgstr "   -L --linker <nombre>      Usa <nombre> como el enlazador.\n"
 
-#: dlltool.c:3097
+#: dlltool.c:3065
 #, c-format
 msgid "   -F --linker-flags <flags> Pass <flags> to the linker.\n"
 msgstr "   -F --linker-flags <opts>  Pasa <opts> al enlazador.\n"
 
-#: dlltool.c:3211
+#: dlltool.c:3181
 #, c-format
 msgid "Path components stripped from dllname, '%s'."
 msgstr "Se eliminaron los componentes de la ruta del nombre de dll, '%s'."
 
-#: dlltool.c:3256
+#: dlltool.c:3226
 #, c-format
 msgid "Unable to open base-file: %s"
 msgstr "No se puede abrir el fichero-base: %s"
 
-#: dlltool.c:3288
+#: dlltool.c:3258
 #, c-format
 msgid "Machine '%s' not supported"
 msgstr "La máquina '%s' no tiene soporte"
 
-#: dlltool.c:3392 dllwrap.c:209
+#: dlltool.c:3362 dllwrap.c:204
 #, c-format
 msgid "Tried file: %s"
 msgstr "Fichero intentado: %s"
 
-#: dlltool.c:3399 dllwrap.c:216
+#: dlltool.c:3369 dllwrap.c:211
 #, c-format
 msgid "Using file: %s"
 msgstr "Usando el fichero: %s"
 
-#: dllwrap.c:299
+#: dllwrap.c:294
 #, c-format
 msgid "Keeping temporary base file %s"
 msgstr "Conservando el fichero base temporal %s"
 
-#: dllwrap.c:301
+#: dllwrap.c:296
 #, c-format
 msgid "Deleting temporary base file %s"
 msgstr "Borrando el fichero base temporal %s"
 
-#: dllwrap.c:315
+#: dllwrap.c:310
 #, c-format
 msgid "Keeping temporary exp file %s"
 msgstr "Conservando el fichero exp temporal %s"
 
-#: dllwrap.c:317
+#: dllwrap.c:312
 #, c-format
 msgid "Deleting temporary exp file %s"
 msgstr "Borrando el fichero exp temporal %s"
 
-#: dllwrap.c:330
+#: dllwrap.c:325
 #, c-format
 msgid "Keeping temporary def file %s"
 msgstr "Conservando el fichero def temporal %s"
 
-#: dllwrap.c:332
+#: dllwrap.c:327
 #, c-format
 msgid "Deleting temporary def file %s"
 msgstr "Borrando el fichero def temporal %s"
 
-#: dllwrap.c:480
+#: dllwrap.c:475
 #, c-format
 msgid "  Generic options:\n"
 msgstr "  Opciones genéricas:\n"
 
-#: dllwrap.c:481
+#: dllwrap.c:476
+#, c-format
+msgid "   @<file>                Read options from <file>\n"
+msgstr "   @<fichero>             Lee opciones del <fichero>\n"
+
+#: dllwrap.c:477
 #, c-format
 msgid "   --quiet, -q            Work quietly\n"
 msgstr "   --quiet, -q            Trabajar silenciosamente\n"
 
-#: dllwrap.c:482
+#: dllwrap.c:478
 #, c-format
 msgid "   --verbose, -v          Verbose\n"
 msgstr "   --verbose, -v         Con detalle\n"
 
-#: dllwrap.c:483
+#: dllwrap.c:479
 #, c-format
 msgid "   --version              Print dllwrap version\n"
 msgstr "   --version              Muestra la versión de dllwrap\n"
 
-#: dllwrap.c:484
+#: dllwrap.c:480
 #, c-format
 msgid "   --implib <outname>     Synonym for --output-lib\n"
 msgstr "   --impllib <nombresal>  Sinónimo para --output-lib\n"
 
-#: dllwrap.c:485
+#: dllwrap.c:481
 #, c-format
 msgid "  Options for %s:\n"
 msgstr "  Opciones para %s:\n"
 
-#: dllwrap.c:486
+#: dllwrap.c:482
 #, c-format
 msgid "   --driver-name <driver> Defaults to \"gcc\"\n"
 msgstr "   --driver-name <cntrl>  Por defecto es \"gcc\"\n"
 
-#: dllwrap.c:487
+#: dllwrap.c:483
 #, c-format
 msgid "   --driver-flags <flags> Override default ld flags\n"
 msgstr "   --driver-flags <opts>  Cambia las opciones por defecto de ld\n"
 
-#: dllwrap.c:488
+#: dllwrap.c:484
 #, c-format
 msgid "   --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
 msgstr "   --dlltool-name <dlltool> Por defecto es \"dlltool\"\n"
 
-#: dllwrap.c:489
+#: dllwrap.c:485
 #, c-format
 msgid "   --entry <entry>        Specify alternate DLL entry point\n"
 msgstr "   --entry <entrada>      Especifica un punto de entrada alternativo para la DLL\n"
 
-#: dllwrap.c:490
+#: dllwrap.c:486
 #, c-format
 msgid "   --image-base <base>    Specify image base address\n"
 msgstr "   --image-base <base>    Especifica la dirección de la imagen base\n"
 
-#: dllwrap.c:491
+#: dllwrap.c:487
 #, c-format
 msgid "   --target <machine>     i386-cygwin32 or i386-mingw32\n"
 msgstr "   --target <máquina>     i386-cygwin32 ó i386-mingw32\n"
 
-#: dllwrap.c:492
+#: dllwrap.c:488
 #, c-format
 msgid "   --dry-run              Show what needs to be run\n"
 msgstr "   --dry-run              Muestra lo que se necesita ejecutar\n"
 
-#: dllwrap.c:493
+#: dllwrap.c:489
 #, c-format
 msgid "   --mno-cygwin           Create Mingw DLL\n"
 msgstr "   --mno-cygwin           Crea una DLL Mingw\n"
 
-#: dllwrap.c:494
+#: dllwrap.c:490
 #, c-format
 msgid "  Options passed to DLLTOOL:\n"
 msgstr "  Opciones pasadas a DLLTOOL:\n"
 
-#: dllwrap.c:495
+#: dllwrap.c:491
 #, c-format
 msgid "   --machine <machine>\n"
 msgstr "   --machine <máquina>\n"
 
-#: dllwrap.c:496
+#: dllwrap.c:492
 #, c-format
 msgid "   --output-exp <outname> Generate export file.\n"
 msgstr "   --output-exp <nomsal>  Genera un fichero de exportación.\n"
 
 # ¿No será acaso una biblioteca de salida? cfuga
-#: dllwrap.c:497
+#: dllwrap.c:493
 #, c-format
 msgid "   --output-lib <outname> Generate input library.\n"
 msgstr "   --output-lib <nomsal>  Genera una biblioteca de entrada.\n"
 
-#: dllwrap.c:498
+#: dllwrap.c:494
 #, c-format
 msgid "   --add-indirect         Add dll indirects to export file.\n"
 msgstr "   --add-indirect         Agrega indirecciones de dll al fichero de exportación.\n"
 
-#: dllwrap.c:499
+#: dllwrap.c:495
 #, c-format
 msgid "   --dllname <name>       Name of input dll to put into output lib.\n"
 msgstr "   --dllname <nombre>     Nombre del fichero dll de entrada a colocar en la biblioteca de salida.\n"
 
-#: dllwrap.c:500
+#: dllwrap.c:496
 #, c-format
 msgid "   --def <deffile>        Name input .def file\n"
 msgstr "   --def <ficherodef>     Nombre del fichero .def de entrada\n"
 
-#: dllwrap.c:501
+#: dllwrap.c:497
 #, c-format
 msgid "   --output-def <deffile> Name output .def file\n"
 msgstr "   --output-def <fichdef> Nombre del fichero .def de salida\n"
 
-#: dllwrap.c:502
+#: dllwrap.c:498
 #, c-format
 msgid "   --export-all-symbols     Export all symbols to .def\n"
 msgstr "   --export-all-symbols     Exporta todos los símbolos a un .def\n"
 
-#: dllwrap.c:503
+#: dllwrap.c:499
 #, c-format
 msgid "   --no-export-all-symbols  Only export .drectve symbols\n"
 msgstr "   --no-export-all-symbols  Sólo exporta los símbolos .drectve\n"
 
-#: dllwrap.c:504
+#: dllwrap.c:500
 #, c-format
 msgid "   --exclude-symbols <list> Exclude <list> from .def\n"
 msgstr "   --exclude-symbols <list> Excluye la <list>a del .def\n"
 
-#: dllwrap.c:505
+#: dllwrap.c:501
 #, c-format
 msgid "   --no-default-excludes    Zap default exclude symbols\n"
 msgstr "   --no-default-excludes    Elimina los símbolos excluídos por defecto\n"
 
-#: dllwrap.c:506
+#: dllwrap.c:502
 #, c-format
 msgid "   --base-file <basefile> Read linker generated base file\n"
 msgstr "   --base-file <fichbase> Lee el fichero base generado por el enlazador\n"
 
-#: dllwrap.c:507
+#: dllwrap.c:503
 #, c-format
 msgid "   --no-idata4           Don't generate idata$4 section\n"
 msgstr "   --no-idata4           No genera la sección idata$4\n"
 
-#: dllwrap.c:508
+#: dllwrap.c:504
 #, c-format
 msgid "   --no-idata5           Don't generate idata$5 section\n"
 msgstr "   --no-idata5           No genera la sección idata$5\n"
 
-#: dllwrap.c:509
+#: dllwrap.c:505
 #, c-format
 msgid "   -U                     Add underscores to .lib\n"
 msgstr "   -U                     Agrega subrayados a .lib\n"
 
-#: dllwrap.c:510
+#: dllwrap.c:506
 #, c-format
 msgid "   -k                     Kill @<n> from exported names\n"
 msgstr "   -k                     Elimina @<n> de los nombres exportados\n"
 
-#: dllwrap.c:511
+#: dllwrap.c:507
 #, c-format
 msgid "   --add-stdcall-alias    Add aliases without @<n>\n"
 msgstr "   --add-stdcall-alias    Agrega aliases sin @<n>\n"
 
-#: dllwrap.c:512
+#: dllwrap.c:508
 #, c-format
 msgid "   --as <name>            Use <name> for assembler\n"
 msgstr "   --as <nombre>          Usa <nombre> como ensamblador\n"
 
-#: dllwrap.c:513
+#: dllwrap.c:509
 #, c-format
 msgid "   --nodelete             Keep temp files.\n"
 msgstr "   --nodelete             Conserva los ficheros temporales.\n"
 
-#: dllwrap.c:514
+#: dllwrap.c:510
 #, c-format
 msgid "  Rest are passed unmodified to the language driver\n"
 msgstr "  El resto se pasa sin modificación al controlador del lenguaje\n"
 
-#: dllwrap.c:784
+#: dllwrap.c:782
 msgid "Must provide at least one of -o or --dllname options"
 msgstr "Se debe proveer por lo menos una de las opciones -o ó --dllname"
 
-#: dllwrap.c:813
+#: dllwrap.c:811
 msgid ""
 "no export definition file provided.\n"
 "Creating one, but that may not be what you want"
@@ -1116,3404 +1139,3466 @@ msgstr ""
 "no se provee un fichero de definición de exportación.\n"
 "Creando uno, pero tal vez eso no es lo que quiere"
 
-#: dllwrap.c:972
+#: dllwrap.c:970
 #, c-format
 msgid "DLLTOOL name    : %s\n"
 msgstr "nombre DLLTOOL  : %s\n"
 
-#: dllwrap.c:973
+#: dllwrap.c:971
 #, c-format
 msgid "DLLTOOL options : %s\n"
 msgstr "opciones DLLTOOL: %s\n"
 
-#: dllwrap.c:974
+#: dllwrap.c:972
 #, c-format
 msgid "DRIVER name     : %s\n"
 msgstr "nombre DRIVER   : %s\n"
 
-#: dllwrap.c:975
+#: dllwrap.c:973
 #, c-format
 msgid "DRIVER options  : %s\n"
 msgstr "opciones DRIVER : %s\n"
 
-#: emul_aix.c:51
+#: dwarf.c:93 dwarf.c:137 readelf.c:322 readelf.c:515
 #, c-format
-msgid "  [-g]         - 32 bit small archive\n"
-msgstr "  [-g]         - archivo small de 32 bit\n"
+msgid "Unhandled data length: %d\n"
+msgstr "Longitud de datos sin manejar: %d\n"
 
-#: emul_aix.c:52
+#: dwarf.c:237
+msgid "badly formed extended line op encountered!\n"
+msgstr "¡se encontró un operador extendido de línea mal formado!\n"
+
+#: dwarf.c:244
 #, c-format
-msgid "  [-X32]       - ignores 64 bit objects\n"
-msgstr "  [-X32]       - ignora los objetos de 64 bit\n"
+msgid "  Extended opcode %d: "
+msgstr "  Código de operación extendido %d: "
 
-#: emul_aix.c:53
+#: dwarf.c:249
 #, c-format
-msgid "  [-X64]       - ignores 32 bit objects\n"
-msgstr "  [-X64]       - ignora los objetos de 32 bit\n"
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"Fin de la Secuencia\n"
+"\n"
 
-#: emul_aix.c:54
+#: dwarf.c:255
 #, c-format
-msgid "  [-X32_64]    - accepts 32 and 64 bit objects\n"
-msgstr "  [-X32_64]    -acepta objetos de 32 y 64 bit\n"
+msgid "set Address to 0x%lx\n"
+msgstr "establecer la Dirección a 0x%lx\n"
 
-#: ieee.c:311
-msgid "unexpected end of debugging information"
-msgstr "fin inesperado de la información de depuración"
+#: dwarf.c:260
+#, c-format
+msgid "  define new File Table entry\n"
+msgstr "  definir la nueva entrada en la Tabla de Ficheros\n"
 
-#: ieee.c:398
-msgid "invalid number"
-msgstr "número inválido"
+#: dwarf.c:261 dwarf.c:1944
+#, c-format
+msgid "  Entry\tDir\tTime\tSize\tName\n"
+msgstr "  Entr\tDir\tHora\tTam\tNombre\n"
 
-#: ieee.c:451
-msgid "invalid string length"
-msgstr "longitud de cadena inválida"
+#: dwarf.c:263
+#, c-format
+msgid "   %d\t"
+msgstr "   %d\t"
 
-#: ieee.c:506 ieee.c:547
-msgid "expression stack overflow"
-msgstr "desbordamiento de la pila de expresión"
+#: dwarf.c:266 dwarf.c:268 dwarf.c:270 dwarf.c:1956 dwarf.c:1958 dwarf.c:1960
+#, c-format
+msgid "%lu\t"
+msgstr "%lu\t"
 
-#: ieee.c:526
-msgid "unsupported IEEE expression operator"
-msgstr "operador de expresión IEEE sin soporte"
+#: dwarf.c:271
+#, c-format
+msgid ""
+"%s\n"
+"\n"
+msgstr ""
+"%s\n"
+"\n"
 
-#: ieee.c:541
-msgid "unknown section"
-msgstr "sección desconocida"
+#: dwarf.c:275
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr "UNKNOWN: longitud %d\n"
 
-#: ieee.c:562
-msgid "expression stack underflow"
-msgstr "desbordamiento por debajo de la pila de expresión"
+#: dwarf.c:288
+msgid "<no .debug_str section>"
+msgstr "<no hay sección .debug_str>"
 
-#: ieee.c:576
-msgid "expression stack mismatch"
-msgstr "no hay coincidencia en la pila de expresión"
+#: dwarf.c:294
+#, c-format
+msgid "DW_FORM_strp offset too big: %lx\n"
+msgstr "desplazamiento DW_FORM_strp demasiado grande: %lx\n"
 
-#: ieee.c:613
-msgid "unknown builtin type"
-msgstr "tipo interno desconocido"
+#: dwarf.c:295
+msgid "<offset is too big>"
+msgstr "<desplazamiento demasiado grande>"
 
-#: ieee.c:758
-msgid "BCD float type not supported"
-msgstr "tipo de coma flotante BCD sin soporte"
+#: dwarf.c:528
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "Valor TAG desconocido: %lx"
 
-#: ieee.c:895
-msgid "unexpected number"
-msgstr "número inesperado"
+#: dwarf.c:564
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr "Valor FORM desconocido: %lx"
 
-#: ieee.c:902
-msgid "unexpected record type"
-msgstr "tipo de grabación inesperado"
+#: dwarf.c:573
+#, c-format
+msgid " %lu byte block: "
+msgstr " bloque de bytes %lu: "
 
-#: ieee.c:935
-msgid "blocks left on stack at end"
-msgstr "se dejaron bloques en la pila al final"
+#: dwarf.c:907
+#, c-format
+msgid "(User defined location op)"
+msgstr "(Operador de ubicación definido por el usuario)"
 
-#: ieee.c:1198
-msgid "unknown BB type"
-msgstr "typo BB desconocido"
+#: dwarf.c:909
+#, c-format
+msgid "(Unknown location op)"
+msgstr "(Operador de ubicación desconocido)"
 
-#: ieee.c:1207
-msgid "stack overflow"
-msgstr "desbordamiento de la pila"
+#: dwarf.c:955
+msgid "Internal error: DWARF version is not 2 or 3.\n"
+msgstr "Error interno: la versión DWARF no es 2 ó 3.\n"
 
-#: ieee.c:1230
-msgid "stack underflow"
-msgstr "desbordamiento de la pila por debajo"
+#: dwarf.c:1053
+msgid "DW_FORM_data8 is unsupported when sizeof (unsigned long) != 8\n"
+msgstr "DW_FORM_data8 no tiene soporte cuando sizeof (unsigned long) != 8\n"
 
-#: ieee.c:1342 ieee.c:1412 ieee.c:2109
-msgid "illegal variable index"
-msgstr "índice de variable ilegal"
+#: dwarf.c:1102
+#, c-format
+msgid " (indirect string, offset: 0x%lx): %s"
+msgstr " (cadena indirecta, desplazamiento 0x%lx): %s"
 
-#: ieee.c:1390
-msgid "illegal type index"
-msgstr "índice de tipo ilegal"
-
-#: ieee.c:1400 ieee.c:1437
-msgid "unknown TY code"
-msgstr "código TY desconocido"
+#: dwarf.c:1111
+#, c-format
+msgid "Unrecognized form: %lu\n"
+msgstr "Form no reconocido: %lu\n"
 
-#: ieee.c:1419
-msgid "undefined variable in TY"
-msgstr "variable indefinida en TY"
+#: dwarf.c:1196
+#, c-format
+msgid "(not inlined)"
+msgstr "(no es inlined)"
 
-#. Pascal file name.  FIXME.
-#: ieee.c:1830
-msgid "Pascal file name not supported"
-msgstr "El nombre de fichero Pascal no tiene soporte"
+#: dwarf.c:1199
+#, c-format
+msgid "(inlined)"
+msgstr "(inlined)"
 
-#: ieee.c:1878
-msgid "unsupported qualifier"
-msgstr "calificador sin soporte"
+#: dwarf.c:1202
+#, c-format
+msgid "(declared as inline but ignored)"
+msgstr "(declarado como inline pero ignorado)"
 
-#: ieee.c:2147
-msgid "undefined variable in ATN"
-msgstr "variable indefinida en ATN"
+#: dwarf.c:1205
+#, c-format
+msgid "(declared as inline and inlined)"
+msgstr "(declarado como inline y es inline)"
 
-#: ieee.c:2190
-msgid "unknown ATN type"
-msgstr "tipo ATN desconocido"
+#: dwarf.c:1208
+#, c-format
+msgid "  (Unknown inline attribute value: %lx)"
+msgstr "  (Valor desconocido de atributo inline: %lx)"
 
-#. Reserved for FORTRAN common.
-#: ieee.c:2312
-msgid "unsupported ATN11"
-msgstr "ATN11 sin soporte"
+#: dwarf.c:1354 dwarf.c:2484
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr " [sin DW_AT_frame_base]"
 
-#. We have no way to record this information.  FIXME.
-#: ieee.c:2339
-msgid "unsupported ATN12"
-msgstr "ATN12 sin soporte"
+#: dwarf.c:1357
+#, c-format
+msgid "(location list)"
+msgstr "(lista de ubicación)"
 
-#: ieee.c:2399
-msgid "unexpected string in C++ misc"
-msgstr "cadena inesperada en misc de C++"
+#: dwarf.c:1475
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "Valor AT desconocido: %lx"
 
-#: ieee.c:2412
-msgid "bad misc record"
-msgstr "grabación misc errónea"
+#: dwarf.c:1544
+#, c-format
+msgid "No comp units in %s section ?"
+msgstr "¿ No hay unidades de compilación en la sección %s ?"
 
-#: ieee.c:2453
-msgid "unrecognized C++ misc record"
-msgstr "grabación misc de C++ no reconocida"
+#: dwarf.c:1553
+#, c-format
+msgid "Not enough memory for a debug info array of %u entries"
+msgstr "No hay suficiente memoria para una matriz de información de depuración de %u entradas"
 
-#: ieee.c:2568
-msgid "undefined C++ object"
-msgstr "objeto C++ no definido"
+#: dwarf.c:1561 dwarf.c:2573
+#, c-format
+msgid ""
+"The section %s contains:\n"
+"\n"
+msgstr ""
+"La sección %s contiene:\n"
+"\n"
 
-#: ieee.c:2602
-msgid "unrecognized C++ object spec"
-msgstr "especificación de objeto C++ no reconocida"
+#: dwarf.c:1569
+#, c-format
+msgid "Unable to locate %s section!\n"
+msgstr "¡No se puede localizar la sección %s!\n"
 
-#: ieee.c:2638
-msgid "unsupported C++ object type"
-msgstr "tipo de objeto C++ sin soporte"
+#: dwarf.c:1635
+#, c-format
+msgid "  Compilation Unit @ offset 0x%lx:\n"
+msgstr "  Unidad de Compilación @ desplazamiento 0x%lx:\n"
 
-#: ieee.c:2648
-msgid "C++ base class not defined"
-msgstr "no está definida la clase base de C++"
+#: dwarf.c:1636
+#, c-format
+msgid "   Length:        %ld\n"
+msgstr "   Longitud:      %ld\n"
 
-#: ieee.c:2660 ieee.c:2765
-msgid "C++ object has no fields"
-msgstr "el objeto C++ no tiene campos"
+#: dwarf.c:1637
+#, c-format
+msgid "   Version:       %d\n"
+msgstr "   Versión:       %d\n"
 
-#: ieee.c:2679
-msgid "C++ base class not found in container"
-msgstr "no se encuentra la clase base C++ en el contenedor"
+#: dwarf.c:1638
+#, c-format
+msgid "   Abbrev Offset: %ld\n"
+msgstr "   Desplaz Abrev: %ld\n"
 
-#: ieee.c:2786
-msgid "C++ data member not found in container"
-msgstr "no se encuentra los datos miembros C++ en el contenedor"
+#: dwarf.c:1639
+#, c-format
+msgid "   Pointer Size:  %d\n"
+msgstr "   Tamaño de Puntero: %d\n"
 
-#: ieee.c:2827 ieee.c:2977
-msgid "unknown C++ visibility"
-msgstr "visibilidad C++ desconocida"
+#: dwarf.c:1644
+msgid "Only version 2 and 3 DWARF debug information is currently supported.\n"
+msgstr "Sólo la información de depuración DWARF versión 2 y 3 tiene soporte actualmente.\n"
 
-#: ieee.c:2861
-msgid "bad C++ field bit pos or size"
-msgstr "posición o tamaño erróneo del campo de bit C++"
+#: dwarf.c:1685
+#, c-format
+msgid "Unable to locate entry %lu in the abbreviation table\n"
+msgstr "No se puede localizar la entrada %lu en la tabla de abreviaciones\n"
 
-#: ieee.c:2953
-msgid "bad type for C++ method function"
-msgstr "tipo erróneo para la función del método C++"
+#: dwarf.c:1691
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n"
+msgstr " <%d><%lx>: Número de Abrev: %lu (%s)\n"
 
-#: ieee.c:2963
-msgid "no type information for C++ method function"
-msgstr "no hay información de tipo para la función del método C++"
+#: dwarf.c:1785
+#, c-format
+msgid "%s section needs a populated .debug_info section\n"
+msgstr "la sección %s necesita una sección .debug_info llena\n"
 
-#: ieee.c:3002
-msgid "C++ static virtual method"
-msgstr "método virtual static de C++"
+#: dwarf.c:1792
+#, c-format
+msgid "%s section has more comp units than .debug_info section\n"
+msgstr "la sección %s tiene más unidades de compilación que la sección .debug_info\n"
 
-#: ieee.c:3097
-msgid "unrecognized C++ object overhead spec"
-msgstr "especificación de adelanto de objeto C++ no reconocida"
+#: dwarf.c:1794
+#, c-format
+msgid ""
+"assuming that the pointer size is %d, from the last comp unit in .debug_info\n"
+"\n"
+msgstr "asumiendo que el tamaño del puntero es %d, de la última unidad de compilación en .debug_info\n"
 
-#: ieee.c:3136
-msgid "undefined C++ vtable"
-msgstr "vtable C++ no definida"
+#: dwarf.c:1819
+#, c-format
+msgid ""
+"\n"
+"Dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"\n"
+"Volcado del contenido de depuración de la sección %s:\n"
+"\n"
 
-#: ieee.c:3205
-msgid "C++ default values not in a function"
-msgstr "valores C++ por defecto no están en una función"
+#: dwarf.c:1858
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr "La información de línea parece estar corrupta - esta sección es demasiado pequeña\n"
 
-#: ieee.c:3245
-msgid "unrecognized C++ default type"
-msgstr "tipo por defecto de C++ no reconocido"
+#: dwarf.c:1867
+msgid "Only DWARF version 2 and 3 line info is currently supported.\n"
+msgstr "Solamente la información de línea de DWARF versión 2 y 3 tiene soporte actualmente.\n"
 
-#: ieee.c:3276
-msgid "reference parameter is not a pointer"
-msgstr "el parámetro de referencia no es un puntero"
+#: dwarf.c:1894
+#, c-format
+msgid "  Length:                      %ld\n"
+msgstr "  Longitud:                    %ld\n"
 
-#: ieee.c:3359
-msgid "unrecognized C++ reference type"
-msgstr "tipo de referencia de C++ no reconocido"
+#: dwarf.c:1895
+#, c-format
+msgid "  DWARF Version:               %d\n"
+msgstr "  Versión DWARF:               %d\n"
 
-#: ieee.c:3441
-msgid "C++ reference not found"
-msgstr "no se encontró la referencia C++"
+#: dwarf.c:1896
+#, c-format
+msgid "  Prologue Length:             %d\n"
+msgstr "  Longitud del Prólogo:        %d\n"
 
-#: ieee.c:3449
-msgid "C++ reference is not pointer"
-msgstr "la referencia C++ no es un puntero"
+#: dwarf.c:1897
+#, c-format
+msgid "  Minimum Instruction Length:  %d\n"
+msgstr "  Longitud Mínima Instrucción: %d\n"
 
-#: ieee.c:3475 ieee.c:3483
-msgid "missing required ASN"
-msgstr "falta el ASN requerido"
+#: dwarf.c:1898
+#, c-format
+msgid "  Initial value of 'is_stmt':  %d\n"
+msgstr "  Valor inicial de 'is_stmt':  %d\n"
 
-#: ieee.c:3510 ieee.c:3518
-msgid "missing required ATN65"
-msgstr "falta el ATN65 requerido"
+#: dwarf.c:1899
+#, c-format
+msgid "  Line Base:                   %d\n"
+msgstr "  Base Línea:                  %d\n"
 
-#: ieee.c:3532
-msgid "bad ATN65 record"
-msgstr "registro ATN65 erróneo"
+#: dwarf.c:1900
+#, c-format
+msgid "  Line Range:                  %d\n"
+msgstr "  Rango Lìnea:                 %d\n"
 
-#: ieee.c:4160
+#: dwarf.c:1901
 #, c-format
-msgid "IEEE numeric overflow: 0x"
-msgstr "desbordamiento numérico IEEE: 0x"
+msgid "  Opcode Base:                 %d\n"
+msgstr "  Base de Código de Operación: %d\n"
 
-#: ieee.c:4204
+#: dwarf.c:1902
 #, c-format
-msgid "IEEE string length overflow: %u\n"
-msgstr "desbordamiento de longitud de cadena IEEE: %u\n"
+msgid "  (Pointer size:               %u)%s\n"
+msgstr "  (Tamaño del puntero:         %u)%s\n"
 
-#: ieee.c:5203
+#: dwarf.c:1913
 #, c-format
-msgid "IEEE unsupported integer type size %u\n"
-msgstr "tamaño de tipo entero IEEE %u sin soporte\n"
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+"\n"
+" Códigos de operación:\n"
 
-#: ieee.c:5237
+#: dwarf.c:1916
 #, c-format
-msgid "IEEE unsupported float type size %u\n"
-msgstr "tamaño de tipo coma flotante IEEE %u sin soporte\n"
+msgid "  Opcode %d has %d args\n"
+msgstr "  El código de operación %d tiene %d argumentos\n"
 
-#: ieee.c:5271
+#: dwarf.c:1922
 #, c-format
-msgid "IEEE unsupported complex type size %u\n"
-msgstr "tamaño de tipo complejo IEEE %u sin soporte\n"
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+"\n"
+" La Tabla de Directorios está vacía.\n"
 
-#: nlmconv.c:267 srconv.c:1810
-msgid "input and output files must be different"
-msgstr "los ficheros de entrada y salida deben ser diferentes"
+#: dwarf.c:1925
+#, c-format
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+"\n"
+" La Tabla de Directorios:\n"
 
-#: nlmconv.c:314
-msgid "input file named both on command line and with INPUT"
-msgstr "fichero de entrada nombrado en la línea de comandos y con INPUT"
+#: dwarf.c:1929
+#, c-format
+msgid "  %s\n"
+msgstr "  %s\n"
 
-#: nlmconv.c:323
-msgid "no input file"
-msgstr "no hay fichero de entrada"
+#: dwarf.c:1940
+#, c-format
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr ""
+"\n"
+" La Tabla de Nombres de Fichero está vacía.\n"
 
-#: nlmconv.c:353
-msgid "no name for output file"
-msgstr "no hay nombre para el fichero de salida"
+#: dwarf.c:1943
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+"\n"
+" La Tabla de Nombres de Fichero:\n"
 
-#: nlmconv.c:367
-msgid "warning: input and output formats are not compatible"
-msgstr "aviso: los formatos de entrada y salida no son compatibles"
+#: dwarf.c:1951
+#, c-format
+msgid "  %d\t"
+msgstr "  %d\t"
 
-#: nlmconv.c:396
-msgid "make .bss section"
-msgstr "hacer sección .bss"
+#: dwarf.c:1962
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
 
-#: nlmconv.c:405
-msgid "make .nlmsections section"
-msgstr "hacer sección .nlmsections"
+#. Now display the statements.
+#: dwarf.c:1970
+#, c-format
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+"\n"
+" Declaraciones de Número de Línea:\n"
 
-#: nlmconv.c:407
-msgid "set .nlmsections flags"
-msgstr "establecer opciones .nlmsections"
+#: dwarf.c:1986
+#, c-format
+msgid "  Special opcode %d: advance Address by %lu to 0x%lx"
+msgstr "  código de Operación especial %d: Dirección de avance por %lu a 0x%lx"
 
-#: nlmconv.c:435
-msgid "set .bss vma"
-msgstr "establecer vma .bss"
+#: dwarf.c:1990
+#, c-format
+msgid " and Line by %d to %d\n"
+msgstr " y Línea por %d a %d\n"
 
-#: nlmconv.c:442
-msgid "set .data size"
-msgstr "establecer tamaño de .data"
+#: dwarf.c:1998
+msgid "Extend line ops need a valid pointer size, guessing at 4\n"
+msgstr "Los operadores de linea extendida necesitan un tamaño de puntero válido, adivinando en 4\n"
 
-#: nlmconv.c:622
+#: dwarf.c:2007
 #, c-format
-msgid "warning: symbol %s imported but not in import list"
-msgstr "aviso: se importó el símbolo %s pero no está en la lista de importación"
+msgid "  Copy\n"
+msgstr "  Copiar\n"
 
-#: nlmconv.c:642
-msgid "set start address"
-msgstr "establecer la dirección de inicio"
+#: dwarf.c:2015
+#, c-format
+msgid "  Advance PC by %lu to 0x%lx\n"
+msgstr "  Avanzar el PC por %lu para %lx\n"
 
-#: nlmconv.c:691
+#: dwarf.c:2023
 #, c-format
-msgid "warning: START procedure %s not defined"
-msgstr "aviso: el procedimiento START %s no está definido"
+msgid "  Advance Line by %d to %d\n"
+msgstr "  Línea de Avance por %d para %d\n"
 
-#: nlmconv.c:693
+#: dwarf.c:2030
 #, c-format
-msgid "warning: EXIT procedure %s not defined"
-msgstr "aviso: el procedimiento EXIT %s no está definido"
+msgid "  Set File Name to entry %d in the File Name Table\n"
+msgstr "  Establecer el Nombre de Fichero para la entrada %d en la Tabla de Nombres de Fichero\n"
 
-#: nlmconv.c:695
+#: dwarf.c:2038
 #, c-format
-msgid "warning: CHECK procedure %s not defined"
-msgstr "aviso: el procedimiento CHECK %s no está definido"
+msgid "  Set column to %lu\n"
+msgstr "  Establecer la columna a %lu\n"
 
-#: nlmconv.c:716 nlmconv.c:905
-msgid "custom section"
-msgstr "sección a la medida"
+#: dwarf.c:2045
+#, c-format
+msgid "  Set is_stmt to %d\n"
+msgstr "  Establecer is_stmt a %d\n"
 
-#: nlmconv.c:737 nlmconv.c:934
-msgid "help section"
-msgstr "sección de ayuda"
+#: dwarf.c:2050
+#, c-format
+msgid "  Set basic block\n"
+msgstr "  Establecer el bloque básico\n"
 
-#: nlmconv.c:759 nlmconv.c:952
-msgid "message section"
-msgstr "sección de mensajes"
+#: dwarf.c:2058
+#, c-format
+msgid "  Advance PC by constant %lu to 0x%lx\n"
+msgstr "  Avanzar el PC por la constante %lu a 0x%lx\n"
 
-#: nlmconv.c:775 nlmconv.c:985
-msgid "module section"
-msgstr "sección de módulos"
+#: dwarf.c:2066
+#, c-format
+msgid "  Advance PC by fixed size amount %lu to 0x%lx\n"
+msgstr "  Avanzar el PC por la cantidad de tamaño fijo %lu a 0x%lx\n"
 
-#: nlmconv.c:795 nlmconv.c:1001
-msgid "rpc section"
-msgstr "sección de rpc"
+#: dwarf.c:2071
+#, c-format
+msgid "  Set prologue_end to true\n"
+msgstr "  Establecer prologue_end a true\n"
 
-#. There is no place to record this information.
-#: nlmconv.c:831
+#: dwarf.c:2075
 #, c-format
-msgid "%s: warning: shared libraries can not have uninitialized data"
-msgstr "%s: aviso: las bibliotecas compartidas no pueden tener datos sin iniciar"
+msgid "  Set epilogue_begin to true\n"
+msgstr "  Establecer epilogue_begin a true\n"
 
-#: nlmconv.c:852 nlmconv.c:1020
-msgid "shared section"
-msgstr "sección compartida"
+#: dwarf.c:2081
+#, c-format
+msgid "  Set ISA to %lu\n"
+msgstr "  Establecer ISA a %lu\n"
 
-#: nlmconv.c:860
-msgid "warning: No version number given"
-msgstr "aviso: No se dió un número de versión"
+#: dwarf.c:2085
+#, c-format
+msgid "  Unknown opcode %d with operands: "
+msgstr "  Código de operación desconocido %d con los operandos: "
 
-#: nlmconv.c:900 nlmconv.c:929 nlmconv.c:947 nlmconv.c:996 nlmconv.c:1015
+#: dwarf.c:2111 dwarf.c:2197 dwarf.c:2271 dwarf.c:2382 dwarf.c:2514
+#: dwarf.c:2739
 #, c-format
-msgid "%s: read: %s"
-msgstr "%s: leído: %s"
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+"Contenido de la sección %s:\n"
+"\n"
 
-#: nlmconv.c:922
-msgid "warning: FULLMAP is not supported; try ld -M"
-msgstr "aviso: FULLMAP no tiene soporte; pruebe ld -M"
+#: dwarf.c:2151
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr "Actualmente sólo tienen soporte los nombres públicos DWARF 2 y 3\n"
 
-#: nlmconv.c:1098
+#: dwarf.c:2158
 #, c-format
-msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
-msgstr "Modo de empleo: %s [opcion(es)] [fichero-entrada [fichero-salida]]\n"
+msgid "  Length:                              %ld\n"
+msgstr "  Longitud:                            %ld\n"
 
-#: nlmconv.c:1099
+#: dwarf.c:2160
 #, c-format
-msgid " Convert an object file into a NetWare Loadable Module\n"
-msgstr "Convertir un fichero objeto en un Módulo Cargable de NetWare (NLM)\n"
+msgid "  Version:                             %d\n"
+msgstr "  Versión:                             %d\n"
 
-#: nlmconv.c:1100
+#: dwarf.c:2162
+#, c-format
+msgid "  Offset into .debug_info section:     %ld\n"
+msgstr "  Desplazamiento en sección .debug_info: %ld\n"
+
+#: dwarf.c:2164
+#, c-format
+msgid "  Size of area in .debug_info section: %ld\n"
+msgstr "  Tamaño de área en sección .debug_info: %ld\n"
+
+#: dwarf.c:2167
 #, c-format
 msgid ""
-" The options are:\n"
-"  -I --input-target=<bfdname>   Set the input binary file format\n"
-"  -O --output-target=<bfdname>  Set the output binary file format\n"
-"  -T --header-file=<file>       Read <file> for NLM header information\n"
-"  -l --linker=<linker>          Use <linker> for any linking\n"
-"  -d --debug                    Display on stderr the linker command line\n"
-"  -h --help                     Display this information\n"
-"  -v --version                  Display the program's version\n"
+"\n"
+"    Offset\tName\n"
 msgstr ""
-" Las opciones son:\n"
-"  -I --input-target=<nombrebfd>  Establece el formato del fichero binario de entrada\n"
-"  -O --output-target=<nombrebfd> Establece el formato del fichero binario de salida\n"
-"  -T --header-file=<fichero>     Lee el <fichero> para la información del encabezado NLM\n"
-"  -l --linker=<enlazador>        Usa el <enlazador> para cualquier enlazado\n"
-"  -d --debug                     Muestra en salida estándar la línea de comando del enlazador\n"
-"  -h --help                      Muestra esta información\n"
-"  -v --version                   Muestra la versión del programa\n"
+"\n"
+"    Desplazamiento\tNombre\n"
 
-#: nlmconv.c:1140
+#: dwarf.c:2218
 #, c-format
-msgid "support not compiled in for %s"
-msgstr "soporte no compilado para %s"
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACINFO_start_file - numlinea: %d numfichero: %d\n"
 
-#: nlmconv.c:1177
-msgid "make section"
-msgstr "sección make"
+#: dwarf.c:2224
+#, c-format
+msgid " DW_MACINFO_end_file\n"
+msgstr " DW_MACINFO_end_file\n"
 
-#: nlmconv.c:1191
-msgid "set section size"
-msgstr "establecer el tamaño de la sección"
+#: dwarf.c:2232
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_define - numlinea : %d macro : %s\n"
 
-#: nlmconv.c:1197
-msgid "set section alignment"
-msgstr "establecer la alineación de la sección"
+#: dwarf.c:2241
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_undef - numlinea : %d macro : %s\n"
 
-#: nlmconv.c:1201
-msgid "set section flags"
-msgstr "establecer las opciones de la sección"
+#: dwarf.c:2253
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr " DW_MACINFO_vendor_ext - constante : %d cadena : %s\n"
 
-#: nlmconv.c:1212
-msgid "set .nlmsections size"
-msgstr "establecer el tamaño de .nlmsections"
+#: dwarf.c:2282
+#, c-format
+msgid "  Number TAG\n"
+msgstr "  Número TAG\n"
 
-#: nlmconv.c:1293 nlmconv.c:1301 nlmconv.c:1310 nlmconv.c:1315
-msgid "set .nlmsection contents"
-msgstr "establecer el contenido de .nlmsection"
+#: dwarf.c:2288
+#, c-format
+msgid "   %ld      %s    [%s]\n"
+msgstr "   %ld      %s    [%s]\n"
 
-#: nlmconv.c:1794
-msgid "stub section sizes"
-msgstr "tamaños de la sección de cabos"
+#: dwarf.c:2291
+msgid "has children"
+msgstr "tiene hijos"
 
-#: nlmconv.c:1841
-msgid "writing stub"
-msgstr "escribiendo cabo"
+#: dwarf.c:2291
+msgid "no children"
+msgstr "sin hijos"
 
-#: nlmconv.c:1925
+#: dwarf.c:2294
 #, c-format
-msgid "unresolved PC relative reloc against %s"
-msgstr "reubicación relativa PC contra %s sin resolver"
+msgid "    %-18s %s\n"
+msgstr "    %-18s %s\n"
 
-#: nlmconv.c:1989
+#: dwarf.c:2327 dwarf.c:2510 dwarf.c:2684
 #, c-format
-msgid "overflow when adjusting relocation against %s"
-msgstr "desbordamiento al ajustar la reubicación contra %s"
+msgid ""
+"\n"
+"The %s section is empty.\n"
+msgstr ""
+"\n"
+"La sección %s está vacía.\n"
+
+#. FIXME: Should we handle this case?
+#: dwarf.c:2372
+msgid "Location lists in .debug_info section aren't in ascending order!\n"
+msgstr "¡Las listas de ubicación en la sección .debug_info no están en orden ascendente!\n"
+
+#: dwarf.c:2375
+msgid "No location lists in .debug_info section!\n"
+msgstr "¡No hay listas de ubicación en la sección .debug_info!\n"
 
-#: nlmconv.c:2116
+#: dwarf.c:2379
 #, c-format
-msgid "%s: execution of %s failed: "
-msgstr "%s: falló la ejecución de %s: "
+msgid "Location lists in %s section start at 0x%lx\n"
+msgstr "Las listas de ubicación en la sección %s empiezan en 0x%lx\n"
 
-#: nlmconv.c:2131
+#: dwarf.c:2383
 #, c-format
-msgid "Execution of %s failed"
-msgstr "Falló la ejecución de %s"
+msgid "    Offset   Begin    End      Expression\n"
+msgstr "    Desplaz  Inicio   Fin      Expresión\n"
 
-#: nm.c:224 size.c:80 strings.c:651
+#: dwarf.c:2414
 #, c-format
-msgid "Usage: %s [option(s)] [file(s)]\n"
-msgstr "Modo de empleo: %s [opcion(es)] [fichero(s)]\n"
+msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "Hay un agujero [0x%lx - 0x%lx] en la sección .debug_loc.\n"
 
-#: nm.c:225
+#: dwarf.c:2417
 #, c-format
-msgid " List symbols in [file(s)] (a.out by default).\n"
-msgstr "Lista de símbolos en [fichero(s)] (a.out por defecto).\n"
+msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "Hay un traslape [0x%lx - 0x%lx] en la sección .debug_loc.\n"
 
-#: nm.c:226
+#: dwarf.c:2424
 #, c-format
-msgid ""
-" The options are:\n"
-"  -a, --debug-syms       Display debugger-only symbols\n"
-"  -A, --print-file-name  Print name of the input file before every symbol\n"
-"  -B                     Same as --format=bsd\n"
-"  -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
-"                          The STYLE, if specified, can be `auto' (the default),\n"
-"                          `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
-"                          or `gnat'\n"
-"      --no-demangle      Do not demangle low-level symbol names\n"
-"  -D, --dynamic          Display dynamic symbols instead of normal symbols\n"
-"      --defined-only     Display only defined symbols\n"
-"  -e                     (ignored)\n"
-"  -f, --format=FORMAT    Use the output format FORMAT.  FORMAT can be `bsd',\n"
-"                           `sysv' or `posix'.  The default is `bsd'\n"
-"  -g, --extern-only      Display only external symbols\n"
-"  -l, --line-numbers     Use debugging information to find a filename and\n"
-"                           line number for each symbol\n"
-"  -n, --numeric-sort     Sort symbols numerically by address\n"
-"  -o                     Same as -A\n"
-"  -p, --no-sort          Do not sort the symbols\n"
-"  -P, --portability      Same as --format=posix\n"
-"  -r, --reverse-sort     Reverse the sense of the sort\n"
-"  -S, --print-size       Print size of defined symbols\n"
-"  -s, --print-armap      Include index for symbols from archive members\n"
-"      --size-sort        Sort symbols by size\n"
-"      --special-syms     Include special symbols in the output\n"
-"      --synthetic        Display synthetic symbols as well\n"
-"  -t, --radix=RADIX      Use RADIX for printing symbol values\n"
-"      --target=BFDNAME   Specify the target object format as BFDNAME\n"
-"  -u, --undefined-only   Display only undefined symbols\n"
-"  -X 32_64               (ignored)\n"
-"  -h, --help             Display this information\n"
-"  -V, --version          Display this program's version number\n"
-"\n"
-msgstr ""
-"Las opciones son:\n"
-"  -a, --debug-syms        Muestra símbolos sólo para el depurador\n"
-"  -A, --print-file-name   Muestra el nombre del fichero de entrada antes de\n"
-"                           cada símbolo\n"
-"  -B                      Igual que --format=bsd\n"
-"  -C, --demangle[=ESTILO] Decodifica los nombres de símbolo de bajo nivel en\n"
-"                           nombres de nivel de usuario\n"
-"                           El ESTILO, si se especifica, puede ser `auto'\n"
-"                           (por defecto), `gnu', `lucid', `arm', `hp', `edg',\n"
-"                           `gnu-v3', `java' o `gnat'\n"
-"      --no-demangle       No decodifica los nombres de símbolo de bajo nivel\n"
-"  -D, --dynamic           Muestra los símbolos dinámicos en lugar de los\n"
-"                           símbolos normales\n"
-"      --defined-only      Muestra solamente los símbolos definidos\n"
-"  -e                      (ignorado)\n"
-"  -f, --format=FORMATO    Usa el formato de salida FORMATO.  FORMATO puede ser\n"
-"                            `bsd', `sysv' o `posix'.  Por defecto es `bsd'\n"
-"  -g, --extern-only       Muestra solamente los símbolos externos\n"
-"  -l, --line-numbers      Utiliza la información de depuración para encontrar\n"
-"                           un nombre de fichero y un número de línea para cada\n"
-"                           símbolo\n"
-"  -n, --numeric-sort      Ordena los símbolos numéricamente por dirección\n"
-"  -o                      Igual que -A\n"
-"  -p, --no-sort           No ordena los símbolos\n"
-"  -P, --portability       Igual que --format=posix\n"
-"  -r, --reverse-sort      Cambia el sentido de la ordenación\n"
-"  -S, --print-size        Muestra el tamaño de los símbolos definidos\n"
-"  -s, --print-armap       Incluye el índice de los símbolos de miembros\n"
-"                           del archivo\n"
-"      --size-sort         Ordena los símbolos por tamaño\n"
-"      --special-syms      Incluye los símbolos especiales en la salida\n"
-"      --synthetic         Muestra también símbolos sintéticos\n"
-"  -t, --radix=RADICAL     Utiliza el RADICAL para mostrar los valores de\n"
-"                           los símbolos\n"
-"      --target=NOMBREBFD  Especifica el formato de objeto objetivo como\n"
-"                           NOMBREBFD\n"
-"  -u, --undefined-only    Muestra sólo los símbolos indefinidos\n"
-"  -X 32_64                (ignorado)\n"
-"  -h, --help              Muestra esta información\n"
-"  -V, --version           Muestra el número de versión de este programa\n"
-"\n"
+msgid "Offset 0x%lx is bigger than .debug_loc section size.\n"
+msgstr "El desplazamiento 0x%lx es más grande que el tamaño de la sección .debug_loc.\n"
 
-#: nm.c:262 objdump.c:232
+#: dwarf.c:2433 dwarf.c:2460 dwarf.c:2470
 #, c-format
-msgid "Report bugs to %s.\n"
-msgstr "Reportar bichos a %s.\n"
+msgid "Location list starting at offset 0x%lx is not terminated.\n"
+msgstr "La lista de reubicación que comienza en el desplazamiento 0x%lx no está terminada.\n"
 
-#: nm.c:294
+#: dwarf.c:2445 dwarf.c:2784
 #, c-format
-msgid "%s: invalid radix"
-msgstr "%s: radical inválido"
+msgid "    %8.8lx <End of list>\n"
+msgstr "    %8.8lx <Fin de la lista>\n"
 
-#: nm.c:318
+#: dwarf.c:2453
 #, c-format
-msgid "%s: invalid output format"
-msgstr "%s: formato de salida inválido"
+msgid "    %8.8lx %8.8lx %8.8lx (base address)\n"
+msgstr "    %8.8lx %8.8lx %8.8lx (dirección base)\n"
+
+#: dwarf.c:2487 dwarf.c:2801
+msgid " (start == end)"
+msgstr " (inicio == final)"
 
-#: nm.c:339 readelf.c:6342 readelf.c:6378
+#: dwarf.c:2489 dwarf.c:2803
+msgid " (start > end)"
+msgstr " (inicio > final)"
+
+#: dwarf.c:2618
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr "Sólo los rangos-a de DWARF 2 y 3 tienen soporte actualmente.\n"
+
+#: dwarf.c:2622
 #, c-format
-msgid "<processor specific>: %d"
-msgstr "<específico del procesador> %d:"
+msgid "  Length:                   %ld\n"
+msgstr "  Longitud:                 %ld\n"
 
-#: nm.c:341 readelf.c:6345 readelf.c:6390
+#: dwarf.c:2623
 #, c-format
-msgid "<OS specific>: %d"
-msgstr "<específico del SO>: %d"
+msgid "  Version:                  %d\n"
+msgstr "  Versión:                  %d\n"
 
-#: nm.c:343 readelf.c:6347 readelf.c:6393
+#: dwarf.c:2624
 #, c-format
-msgid "<unknown>: %d"
-msgstr "<desconocido>: %d"
+msgid "  Offset into .debug_info:  %lx\n"
+msgstr "  Desplaz. en .debug_info:  %lx\n"
 
-#: nm.c:380
+#: dwarf.c:2625
 #, c-format
-msgid ""
-"\n"
-"Archive index:\n"
-msgstr ""
-"\n"
-"Índice del archivo:\n"
+msgid "  Pointer Size:             %d\n"
+msgstr "  Tamaño del Puntero:       %d\n"
 
-#: nm.c:1225
+#: dwarf.c:2626
 #, c-format
-msgid ""
-"\n"
-"\n"
-"Undefined symbols from %s:\n"
-"\n"
-msgstr ""
-"\n"
-"\n"
-"Símbolos indefinidos de %s:\n"
-"\n"
+msgid "  Segment Size:             %d\n"
+msgstr "  Tamaño del Segmento:      %d\n"
 
-#: nm.c:1227
+#: dwarf.c:2628
 #, c-format
 msgid ""
 "\n"
-"\n"
-"Symbols from %s:\n"
-"\n"
+"    Address  Length\n"
 msgstr ""
 "\n"
-"\n"
-"Símbolos de %s:\n"
-"\n"
+"    Longitud de la Dirección\n"
+
+#. FIXME: Should we handle this case?
+#: dwarf.c:2729
+msgid "Range lists in .debug_info section aren't in ascending order!\n"
+msgstr "¡Las listas de rango en la sección .debug_info no están en orden ascendente!\n"
+
+#: dwarf.c:2732
+msgid "No range lists in .debug_info section!\n"
+msgstr "¡No hay listas de rango en la sección .debug_info!\n"
 
-#: nm.c:1229 nm.c:1280
+#: dwarf.c:2736
 #, c-format
-msgid ""
-"Name                  Value   Class        Type         Size     Line  Section\n"
-"\n"
-msgstr ""
-"Nombre                Valor   Clase        Tipo         Tamaño   Línea Sección\n"
-"\n"
+msgid "Range lists in %s section start at 0x%lx\n"
+msgstr "Las listas de rango en la sección %s inician en 0x%lx\n"
 
-#: nm.c:1232 nm.c:1283
+#: dwarf.c:2740
 #, c-format
-msgid ""
-"Name                  Value           Class        Type         Size             Line  Section\n"
-"\n"
-msgstr ""
-"Nombre                Valor           Clase        Tipo         Tamaño           Línea Sección\n"
-"\n"
+msgid "    Offset   Begin    End\n"
+msgstr "    Desplaz  Inicio   Fin\n"
 
-#: nm.c:1276
+#: dwarf.c:2765
 #, c-format
-msgid ""
-"\n"
-"\n"
-"Undefined symbols from %s[%s]:\n"
-"\n"
-msgstr ""
-"\n"
-"\n"
-"Símbolos indefinidos de %s[%s]:\n"
-"\n"
+msgid "There is a hole [0x%lx - 0x%lx] in %s section.\n"
+msgstr "Hay un agujero [0x%lx - 0x%lx] en la sección %s.\n"
 
-#: nm.c:1278
+#: dwarf.c:2769
 #, c-format
-msgid ""
-"\n"
-"\n"
-"Symbols from %s[%s]:\n"
-"\n"
-msgstr ""
-"\n"
-"\n"
-"Símbolos de %s[%s]:\n"
-"\n"
+msgid "There is an overlap [0x%lx - 0x%lx] in %s section.\n"
+msgstr "Hay un traslape [0x%lx - 0x%lx] en la sección %s.\n"
 
-#: nm.c:1580
-msgid "Only -X 32_64 is supported"
-msgstr "Solamente -X 32_64 tiene soporte"
+#: dwarf.c:2964
+#, c-format
+msgid "The section %s contains:\n"
+msgstr "La sección %s contiene:\n"
 
-#: nm.c:1600
-msgid "Using the --size-sort and --undefined-only options together"
-msgstr "Al usar juntas las opciones --size-sort y --undefined-only"
+#: dwarf.c:3608
+#, c-format
+msgid "unsupported or unknown DW_CFA_%d\n"
+msgstr "DW_CFA_%d desconocido o sin soporte\n"
 
-#: nm.c:1601
-msgid "will produce no output, since undefined symbols have no size."
-msgstr "no se producirá salida, porque los símbolos indefinidos no tienen tamaño."
+#: dwarf.c:3632
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr "Aún no tiene soporte el mostrar el contenido de depuración de la sección %s.\n"
 
-#: nm.c:1629
+#: dwarf.c:3674
 #, c-format
-msgid "data size %ld"
-msgstr "tamaño de datos %ld"
+msgid "%s: Error: "
+msgstr "%s: Error: "
 
-#: objcopy.c:396 srconv.c:1721
+#: dwarf.c:3685
 #, c-format
-msgid "Usage: %s [option(s)] in-file [out-file]\n"
-msgstr "Modo de empleo: %s [opcion(es)] fichero-entrada [fichero-salida]\n"
+msgid "%s: Warning: "
+msgstr "%s: Aviso: "
 
-#: objcopy.c:397
+#: emul_aix.c:51
 #, c-format
-msgid " Copies a binary file, possibly transforming it in the process\n"
-msgstr " Copia un fichero binario, posiblemente transformándolo en el proceso\n"
+msgid "  [-g]         - 32 bit small archive\n"
+msgstr "  [-g]         - archivo small de 32 bit\n"
 
-#: objcopy.c:398 objcopy.c:487
+#: emul_aix.c:52
 #, c-format
-msgid " The options are:\n"
-msgstr "  Las opciones son:\n"
+msgid "  [-X32]       - ignores 64 bit objects\n"
+msgstr "  [-X32]       - ignora los objetos de 64 bit\n"
 
-#: objcopy.c:399
+#: emul_aix.c:53
 #, c-format
-msgid ""
-"  -I --input-target <bfdname>      Assume input file is in format <bfdname>\n"
-"  -O --output-target <bfdname>     Create an output file in format <bfdname>\n"
-"  -B --binary-architecture <arch>  Set arch of output file, when input is binary\n"
-"  -F --target <bfdname>            Set both input and output format to <bfdname>\n"
-"     --debugging                   Convert debugging information, if possible\n"
-"  -p --preserve-dates              Copy modified/access timestamps to the output\n"
-"  -j --only-section <name>         Only copy section <name> into the output\n"
-"     --add-gnu-debuglink=<file>    Add section .gnu_debuglink linking to <file>\n"
-"  -R --remove-section <name>       Remove section <name> from the output\n"
-"  -S --strip-all                   Remove all symbol and relocation information\n"
-"  -g --strip-debug                 Remove all debugging symbols & sections\n"
-"     --strip-unneeded              Remove all symbols not needed by relocations\n"
-"  -N --strip-symbol <name>         Do not copy symbol <name>\n"
-"     --strip-unneeded-symbol <name>\n"
-"                                   Do not copy symbol <name> unless needed by\n"
-"                                     relocations\n"
-"     --only-keep-debug             Strip everything but the debug information\n"
-"  -K --keep-symbol <name>          Only copy symbol <name>\n"
-"  -L --localize-symbol <name>      Force symbol <name> to be marked as a local\n"
-"  -G --keep-global-symbol <name>   Localize all symbols except <name>\n"
-"  -W --weaken-symbol <name>        Force symbol <name> to be marked as a weak\n"
-"     --weaken                      Force all global symbols to be marked as weak\n"
-"  -w --wildcard                    Permit wildcard in symbol comparison\n"
-"  -x --discard-all                 Remove all non-global symbols\n"
-"  -X --discard-locals              Remove any compiler-generated symbols\n"
-"  -i --interleave <number>         Only copy one out of every <number> bytes\n"
-"  -b --byte <num>                  Select byte <num> in every interleaved block\n"
-"     --gap-fill <val>              Fill gaps between sections with <val>\n"
-"     --pad-to <addr>               Pad the last section up to address <addr>\n"
-"     --set-start <addr>            Set the start address to <addr>\n"
-"    {--change-start|--adjust-start} <incr>\n"
-"                                   Add <incr> to the start address\n"
-"    {--change-addresses|--adjust-vma} <incr>\n"
-"                                   Add <incr> to LMA, VMA and start addresses\n"
-"    {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
-"                                   Change LMA and VMA of section <name> by <val>\n"
-"     --change-section-lma <name>{=|+|-}<val>\n"
-"                                   Change the LMA of section <name> by <val>\n"
-"     --change-section-vma <name>{=|+|-}<val>\n"
-"                                   Change the VMA of section <name> by <val>\n"
-"    {--[no-]change-warnings|--[no-]adjust-warnings}\n"
-"                                   Warn if a named section does not exist\n"
-"     --set-section-flags <name>=<flags>\n"
-"                                   Set section <name>'s properties to <flags>\n"
-"     --add-section <name>=<file>   Add section <name> found in <file> to output\n"
-"     --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
-"     --change-leading-char         Force output format's leading character style\n"
-"     --remove-leading-char         Remove leading character from global symbols\n"
-"     --redefine-sym <old>=<new>    Redefine symbol name <old> to <new>\n"
-"     --redefine-syms <file>        --redefine-sym for all symbol pairs \n"
-"                                     listed in <file>\n"
-"     --srec-len <number>           Restrict the length of generated Srecords\n"
-"     --srec-forceS3                Restrict the type of generated Srecords to S3\n"
-"     --strip-symbols <file>        -N for all symbols listed in <file>\n"
-"     --strip-unneeded-symbols <file>\n"
-"                                   --strip-unneeded-symbol for all symbols listed\n"
-"                                     in <file>\n"
-"     --keep-symbols <file>         -K for all symbols listed in <file>\n"
-"     --localize-symbols <file>     -L for all symbols listed in <file>\n"
-"     --keep-global-symbols <file>  -G for all symbols listed in <file>\n"
-"     --weaken-symbols <file>       -W for all symbols listed in <file>\n"
-"     --alt-machine-code <index>    Use alternate machine code for output\n"
-"     --writable-text               Mark the output text as writable\n"
-"     --readonly-text               Make the output text write protected\n"
-"     --pure                        Mark the output file as demand paged\n"
-"     --impure                      Mark the output file as impure\n"
-"     --prefix-symbols <prefix>     Add <prefix> to start of every symbol name\n"
-"     --prefix-sections <prefix>    Add <prefix> to start of every section name\n"
-"     --prefix-alloc-sections <prefix>\n"
-"                                   Add <prefix> to start of every allocatable\n"
-"                                     section name\n"
-"  -v --verbose                     List all object files modified\n"
-"  -V --version                     Display this program's version number\n"
-"  -h --help                        Display this output\n"
-"     --info                        List object formats & architectures supported\n"
-msgstr ""
-"  -I --input-target <nombrebfd>    Asume que el fichero de entrada está en\n"
-"                                   el formato <nombrebfd>\n"
-"  -O --output-target <nombrebfd>   Crea un fichero de salida en el formato\n"
-"                                   <nombrebfd>\n"
-"  -B --binary-architecture <arch>  Establece la arquitectura del fichero de\n"
-"                                   salida, cuando la entrada es binaria\n"
-"  -F --target <nombrebfd>          Establece tanto el formato de salida como\n"
-"                                   el de entrada a <nombrebfd>\n"
-"     --debugging                   Convierte la información de depuración, si\n"
-"                                   es posible\n"
-"  -p --preserve-dates              Copia las marcas de tiempo de modificación y\n"
-"                                   acceso a la salida\n"
-"  -j --only-section <nombre>       Sólo copiar la sección <nombre> en la salida\n"
-"     --add-gnu-debuglink=<fich>    Agrega la sección de enlazado .gnu_debuglink\n"
-"                                   al <fich>ero\n"
-"  -R --remove-section <nombre>     Borra la sección <nombre> de la salida\n"
-"  -S --strip-all                   Borra todos los símbolos y la información de\n"
-"                                   reubicación\n"
-"  -g --strip-debug                 Borra todos los símbolos y secciones de\n"
-"                                   depuración\n"
-"     --strip-unneeded              Borra todos los símbolos innecesarios para\n"
-"                                   las reubicaciones\n"
-"  -N --strip-symbol <nombre>       No copia el símbolo <nombre>\n"
-"     --strip-unneeded-symbol <nombre>\n"
-"                                   No copia el símbolo <nombre> a menos que sea\n"
-"                                   necesario para las reubicaciones\n"
-"     --only-keep-debug             Borra todo excepto la información de\n"
-"                                   depuración\n"
-"  -K --keep-symbol <nombre>        Sólo copia el símbolo <nombre>\n"
-"  -L --localize-symbol <nom>       Forza que el símbolo <nom> se marque como\n"
-"                                   local\n"
-"  -G --keep-global-symbol <nom>    Vuelve locales todos los símbolos excepto\n"
-"                                   <nom>\n"
-"  -W --weaken-symbol <nom>         Forza que el símbolo <nom> se marque como\n"
-"                                   débil\n"
-"     --weaken                      Forza que todos los símbolos se marquen como\n"
-"                                   débiles\n"
-"  -w --wildcard                    Permite comodines en la comparación de\n"
-"                                   símbolos\n"
-"  -x --discard-all                 Borra todos los símbolos que no son globales\n"
-"  -X --discard-locals              Borra cualquier símbolo generado por el\n"
-"                                   compilador\n"
-"  -i --interleave <num>            Sólo copia uno de cada <num> bytes\n"
-"  -b --byte <num>                  Selecciona el byte <num> en cada bloque\n"
-"                                   espaciado\n"
-"     --gap-fill <val>              Rellena los huecos entre secciones con <val>\n"
-"     --pad-to <dirección>          Rellena la última sección hasta la dirección <dirección>\n"
-"     --set-start <dirección>       Establece la dirección de inicio en\n"
-"                                   <dirección>\n"
-"    {--change-start|--adjust-start} <incr>\n"
-"                                   Agrega <incr> a la dirección de inicio\n"
-"    {--change-addresses|--adjust-vma} <incr>\n"
-"                                   Agrega <incr> a las direcciones LMA, VMA y\n"
-"                                   la de inicio\n"
-"    {--change-section-address|--adjust-section-vma} <nombre>{=|+|-}<val>\n"
-"                                   Cambia el LMA y el VMA de la sección\n"
-"                                   <nombre> por <val>\n"
-"     --change-section-lma <name>{=|+|-}<val>\n"
-"                                   Cambia LMA de la sección <nombre> por <val>\n"
-"     --change-section-vma <name>{=|+|-}<val>\n"
-"                                   Cambia VMA de la sección <nombre> por <val>\n"
-"    {--[no-]change-warnings|--[no-]adjust-warnings}\n"
-"                                   Avisar si no existe una sección nombrada\n"
-"     --set-section-flags <nombre>=<opciones>\n"
-"                                   Establece las propiedades de la sección\n"
-"                                   <nombre> a <opciones>\n"
-"     --add-section <nombre>=<fichero>\n"
-"                                   Agrega la sección <nombre> que se encuentra\n"
-"                                   en el <fichero> a la salida\n"
-"     --rename-section <ant>=<nvo>[,<opts>] Renombra la sección <ant> a <nvo>\n"
-"     --change-leading-char         Fuerza el carácter de estilo inicial en\n"
-"                                   el formato de salida\n"
-"     --remove-leading-char         Borra el carácter inicial de los símbolos\n"
-"                                   globales\n"
-"     --redefine-sym <ant>=<nvo>    Redefine el nombre de símbolo <ant> a <nvo>\n"
-"     --redefine-syms <fichero>     --redefine-sym para todos los pares de\n"
-"                                   símbolos enlistados en el <fichero>\n"
-"     --srec-len <número>           Restringe la longitud de los Srecords\n"
-"                                   generados\n"
-"     --srec-forceS3                Restringe el tipo de los Srecords generados\n"
-"                                   a S3\n"
-"     --strip-symbols <fichero>     -N para todos los símbolos enlistados en el\n"
-"                                   <fichero>\n"
-"     --strip-unneeded-symbols <fichero>\n"
-"                                   --strip-unneeded-symbol para todos los\n"
-"                                   símbolos enlistados en el <fichero>\n"
-"     --keep-symbols <fichero>      -K para todos los símbolos enlistados en el\n"
-"                                   <fichero>\n"
-"     --localize-symbols <fichero>  -L para todos los símbolos enlistados en el\n"
-"                                   <fichero>\n"
-"     --keep-global-symbols <fichero>\n"
-"                                   -G para todos los símbolos enlistados en el\n"
-"                                   <fich>ero\n"
-"     --weaken-symbols <fichero>    -W para todos los símbolos enlistados en el\n"
-"                                   <fichero>\n"
-"     --alt-machine-code <índice>   Utiliza código máquina alternativo para la\n"
-"                                   salida\n"
-"     --writable-text               Marca el texto de salida como modificable\n"
-"     --readonly-text               Marca el texto de salida como protegido\n"
-"                                   contra escritura\n"
-"     --pure                        Marca el fichero de salida como paginado en\n"
-"                                   demanda\n"
-"     --impure                      Marca el fichero de salida como impuro     --prefix-symbols <prefijo>    Agrega <prefijo> al inicio de cada nombre de\n"
-"                                   símbolo\n"
-"     --prefix-sections <prefijo>   Agrega <prefijo> al inicio de cada nombre de\n"
-"                                   sección\n"
-"     --prefix-alloc-sections <prefijo>\n"
-"                                   Agrega <prefijo> al inicio de cada nombre de\n"
-"                                   sección alojable\n"
-"  -v --verbose                     Enlista todos los ficheros objeto modificados\n"
-"  -V --version                     Muestra el número de versión de este programa\n"
-"  -h --help                        Muestra esta salida\n"
-"     --info                        Enlista los formatos objeto y arquitecturas\n"
-"                                   que se soportan\n"
+msgid "  [-X64]       - ignores 32 bit objects\n"
+msgstr "  [-X64]       - ignora los objetos de 32 bit\n"
 
-#: objcopy.c:485
+#: emul_aix.c:54
 #, c-format
-msgid "Usage: %s <option(s)> in-file(s)\n"
-msgstr "Modo de empleo: %s <opcion(es)> fichero(s)-entrada\n"
+msgid "  [-X32_64]    - accepts 32 and 64 bit objects\n"
+msgstr "  [-X32_64]    -acepta objetos de 32 y 64 bit\n"
 
-#: objcopy.c:486
-#, c-format
-msgid " Removes symbols and sections from files\n"
-msgstr " Remueve símbolos y secciones de los ficheros\n"
+#: ieee.c:311
+msgid "unexpected end of debugging information"
+msgstr "fin inesperado de la información de depuración"
 
-#: objcopy.c:488
-#, c-format
-msgid ""
-"  -I --input-target=<bfdname>      Assume input file is in format <bfdname>\n"
-"  -O --output-target=<bfdname>     Create an output file in format <bfdname>\n"
-"  -F --target=<bfdname>            Set both input and output format to <bfdname>\n"
-"  -p --preserve-dates              Copy modified/access timestamps to the output\n"
-"  -R --remove-section=<name>       Remove section <name> from the output\n"
-"  -s --strip-all                   Remove all symbol and relocation information\n"
-"  -g -S -d --strip-debug           Remove all debugging symbols & sections\n"
-"     --strip-unneeded              Remove all symbols not needed by relocations\n"
-"     --only-keep-debug             Strip everything but the debug information\n"
-"  -N --strip-symbol=<name>         Do not copy symbol <name>\n"
-"  -K --keep-symbol=<name>          Only copy symbol <name>\n"
-"  -w --wildcard                    Permit wildcard in symbol comparison\n"
-"  -x --discard-all                 Remove all non-global symbols\n"
-"  -X --discard-locals              Remove any compiler-generated symbols\n"
-"  -v --verbose                     List all object files modified\n"
-"  -V --version                     Display this program's version number\n"
-"  -h --help                        Display this output\n"
-"     --info                        List object formats & architectures supported\n"
-"  -o <file>                        Place stripped output into <file>\n"
-msgstr ""
-"  -I --input-target=<nombrebfd>    Asume que el fichero de entrada está en\n"
-"                                   el formato <nombrebfd>\n"
-"  -O --output-target=<nombrebfd>   Crea un fichero de salida en el formato\n"
-"                                   <nombrebfd>\n"
-"  -F --target <nombrebfd>          Establece tanto el formato de salida como\n"
-"                                   el de entrada a <nombrebfd>\n"
-"  -p --preserve-dates              Copia las marcas de tiempo de modificación\n"
-"                                   y acceso a la salida\n"
-"  -R --remove-section=<nombre>     Borra la sección <nombre> de la salida\n"
-"  -s --strip-all                   Borra todos los símbolos y la información\n"
-"                                   de reubicación\n"
-"  -g -S --strip-debug              Borra todos los símbolos y secciones de\n"
-"                                   depuración\n"
-"     --strip-unneeded              Borra todos los símbolos innecesarios para\n"
-"                                   las reubicaciones\n"
-"     --only-keep-debug             Borra todo excepto la información de\n"
-"                                   depuración\n"
-"  -N --strip-symbol=<nombre>       No copia el símbolo <nombre>\n"
-"  -K --keep-symbol=<nombre>        Sólo copia el símbolo <nombre>\n"
-"  -w --wildcard                    Permite comodines en la comparación de\n"
-"                                   símbolos\n"
-"  -x --discard-all                 Borra todos los símbolos que no son globales\n"
-"  -X --discard-locals              Borra cualquier símbolo generado por\n"
-"                                   el compilador\n"
-"  -v --verbose                     Enlista todos los ficheros objeto modificados\n"
-"  -V --version                     Muestra el número de versión de este programa\n"
-"  -h --help                        Muestra esta salida\n"
-"     --info                        Muestra los formatos objeto y arquitecturas\n"
-"                                   soportados  -o <fichero>                     Coloca la salida limpia en el <fichero>\n"
+#: ieee.c:398
+msgid "invalid number"
+msgstr "número inválido"
 
-#: objcopy.c:560
-#, c-format
-msgid "unrecognized section flag `%s'"
-msgstr "opción de sección `%s' desconocida"
+#: ieee.c:451
+msgid "invalid string length"
+msgstr "longitud de cadena inválida"
 
-#: objcopy.c:561
-#, c-format
-msgid "supported flags: %s"
-msgstr "opciones con soporte: %s"
+#: ieee.c:506 ieee.c:547
+msgid "expression stack overflow"
+msgstr "desbordamiento de la pila de expresión"
 
-#: objcopy.c:638
-#, c-format
-msgid "cannot open '%s': %s"
-msgstr "no se puede abrir '%s': %s"
+#: ieee.c:526
+msgid "unsupported IEEE expression operator"
+msgstr "operador de expresión IEEE sin soporte"
 
-#: objcopy.c:641 objcopy.c:2629
-#, c-format
-msgid "%s: fread failed"
-msgstr "%s: fread falló"
+#: ieee.c:541
+msgid "unknown section"
+msgstr "sección desconocida"
 
-#: objcopy.c:714
-#, c-format
-msgid "%s:%d: Ignoring rubbish found on this line"
-msgstr "%s:%d: Se ignora la basura encontrada en esta línea"
+#: ieee.c:562
+msgid "expression stack underflow"
+msgstr "desbordamiento por debajo de la pila de expresión"
 
-#: objcopy.c:976
-#, c-format
-msgid "%s: Multiple redefinition of symbol \"%s\""
-msgstr "%s: Redefiniciones múltiples del símbolo \"%s\""
+#: ieee.c:576
+msgid "expression stack mismatch"
+msgstr "no hay coincidencia en la pila de expresión"
 
-#: objcopy.c:980
-#, c-format
-msgid "%s: Symbol \"%s\" is target of more than one redefinition"
-msgstr "%s: El símbolo \"%s\" es objetivo de más de una redefinición"
+#: ieee.c:613
+msgid "unknown builtin type"
+msgstr "tipo interno desconocido"
 
-#: objcopy.c:1008
-#, c-format
-msgid "couldn't open symbol redefinition file %s (error: %s)"
-msgstr "no se puede abrir el fichero de redefinición de símbolos %s (error: %s)"
+#: ieee.c:758
+msgid "BCD float type not supported"
+msgstr "tipo de coma flotante BCD sin soporte"
 
-#: objcopy.c:1086
-#, c-format
-msgid "%s:%d: garbage found at end of line"
-msgstr "%s:%d: se encontró basura al final de la línea"
+#: ieee.c:895
+msgid "unexpected number"
+msgstr "número inesperado"
 
-#: objcopy.c:1089
-#, c-format
-msgid "%s:%d: missing new symbol name"
-msgstr "%s:%d: falta el nombre del símbolo nuevo"
+#: ieee.c:902
+msgid "unexpected record type"
+msgstr "tipo de grabación inesperado"
 
-#: objcopy.c:1099
-#, c-format
-msgid "%s:%d: premature end of file"
-msgstr "%s:%d: fin de fichero prematuro"
+#: ieee.c:935
+msgid "blocks left on stack at end"
+msgstr "se dejaron bloques en la pila al final"
 
-#: objcopy.c:1124
-msgid "Unable to change endianness of input file(s)"
-msgstr "No se puede cambiar la endianez del (los) fichero(s) de entrada"
+#: ieee.c:1198
+msgid "unknown BB type"
+msgstr "typo BB desconocido"
 
-#: objcopy.c:1133
-#, c-format
-msgid "copy from %s(%s) to %s(%s)\n"
-msgstr "copiar de %s(%s) a %s(%s)\n"
+#: ieee.c:1207
+msgid "stack overflow"
+msgstr "desbordamiento de la pila"
 
-#: objcopy.c:1170
-#, c-format
-msgid "Unable to recognise the format of the input file %s"
-msgstr "No se puede reconocer el formato del fichero de entrada %s"
+#: ieee.c:1230
+msgid "stack underflow"
+msgstr "desbordamiento de la pila por debajo"
 
-#: objcopy.c:1174
-#, c-format
-msgid "Warning: Output file cannot represent architecture %s"
-msgstr "Aviso: El fichero de salida no puede representar a la arquitectura %s"
+#: ieee.c:1342 ieee.c:1412 ieee.c:2109
+msgid "illegal variable index"
+msgstr "índice de variable ilegal"
 
-#: objcopy.c:1211
-#, c-format
-msgid "can't create section `%s': %s"
-msgstr "no se puede crear la sección `%s' %s"
+#: ieee.c:1390
+msgid "illegal type index"
+msgstr "índice de tipo ilegal"
 
-#: objcopy.c:1277
-msgid "there are no sections to be copied!"
-msgstr "¡no hay secciones para copiar!"
+#: ieee.c:1400 ieee.c:1437
+msgid "unknown TY code"
+msgstr "código TY desconocido"
 
-#: objcopy.c:1323
-#, c-format
-msgid "Can't fill gap after %s: %s"
-msgstr "No se puede llenar el espacio después de %s: %s"
+#: ieee.c:1419
+msgid "undefined variable in TY"
+msgstr "variable indefinida en TY"
 
-#: objcopy.c:1348
-#, c-format
-msgid "Can't add padding to %s: %s"
-msgstr "No se puede agregar relleno a %s: %s"
+#. Pascal file name.  FIXME.
+#: ieee.c:1830
+msgid "Pascal file name not supported"
+msgstr "El nombre de fichero Pascal no tiene soporte"
 
-#: objcopy.c:1514
-#, c-format
-msgid "%s: error copying private BFD data: %s"
-msgstr "%s: error al copiar los datos privados BFD: %s"
+#: ieee.c:1878
+msgid "unsupported qualifier"
+msgstr "calificador sin soporte"
 
-#: objcopy.c:1525
-msgid "unknown alternate machine code, ignored"
-msgstr "código máquina alternativo desconocido, ignorado"
+#: ieee.c:2147
+msgid "undefined variable in ATN"
+msgstr "variable indefinida en ATN"
 
-#: objcopy.c:1555 objcopy.c:1585
-#, c-format
-msgid "cannot mkdir %s for archive copying (error: %s)"
-msgstr "no se puede crear el directorio %s para copiar el archivo (error: %s)"
+#: ieee.c:2190
+msgid "unknown ATN type"
+msgstr "tipo ATN desconocido"
 
-#: objcopy.c:1790
-#, c-format
-msgid "Multiple renames of section %s"
-msgstr "Renombrado múltiple de la sección %s"
+#. Reserved for FORTRAN common.
+#: ieee.c:2312
+msgid "unsupported ATN11"
+msgstr "ATN11 sin soporte"
 
-#: objcopy.c:1841
-msgid "private header data"
-msgstr "datos de encabezado privado"
+#. We have no way to record this information.  FIXME.
+#: ieee.c:2339
+msgid "unsupported ATN12"
+msgstr "ATN12 sin soporte"
 
-#: objcopy.c:1849
-#, c-format
-msgid "%s: error in %s: %s"
-msgstr "%s: error en %s: %s"
+#: ieee.c:2399
+msgid "unexpected string in C++ misc"
+msgstr "cadena inesperada en misc de C++"
 
-#: objcopy.c:1903
-msgid "making"
-msgstr "haciendo"
+#: ieee.c:2412
+msgid "bad misc record"
+msgstr "grabación misc errónea"
 
-#: objcopy.c:1912
-msgid "size"
-msgstr "tamaño"
+#: ieee.c:2453
+msgid "unrecognized C++ misc record"
+msgstr "grabación misc de C++ no reconocida"
 
-#: objcopy.c:1926
-msgid "vma"
-msgstr "vma"
+#: ieee.c:2568
+msgid "undefined C++ object"
+msgstr "objeto C++ no definido"
 
-#: objcopy.c:1951
-msgid "alignment"
-msgstr "alineación"
+#: ieee.c:2602
+msgid "unrecognized C++ object spec"
+msgstr "especificación de objeto C++ no reconocida"
 
-#: objcopy.c:1966
-msgid "flags"
-msgstr "opciones"
+#: ieee.c:2638
+msgid "unsupported C++ object type"
+msgstr "tipo de objeto C++ sin soporte"
 
-#: objcopy.c:1988
-msgid "private data"
-msgstr "datos privados"
+#: ieee.c:2648
+msgid "C++ base class not defined"
+msgstr "no está definida la clase base de C++"
 
-#: objcopy.c:1996
-#, c-format
-msgid "%s: section `%s': error in %s: %s"
-msgstr "%s: sección `%s': error en %s: %s"
+#: ieee.c:2660 ieee.c:2765
+msgid "C++ object has no fields"
+msgstr "el objeto C++ no tiene campos"
 
-#: objcopy.c:2274
-#, c-format
-msgid "%s: can't create debugging section: %s"
-msgstr "%s: no se puede crear la sección de depuración: %s"
+#: ieee.c:2679
+msgid "C++ base class not found in container"
+msgstr "no se encuentra la clase base C++ en el contenedor"
 
-#: objcopy.c:2288
-#, c-format
-msgid "%s: can't set debugging section contents: %s"
-msgstr "%s: no se puede establecer el contenido de la sección de depuración: %s"
+#: ieee.c:2786
+msgid "C++ data member not found in container"
+msgstr "no se encuentra los datos miembros C++ en el contenedor"
 
-#: objcopy.c:2297
-#, c-format
-msgid "%s: don't know how to write debugging information for %s"
-msgstr "%s: se ignora cómo escribir la información de depuración para %s"
+#: ieee.c:2827 ieee.c:2977
+msgid "unknown C++ visibility"
+msgstr "visibilidad C++ desconocida"
 
-#: objcopy.c:2472
-msgid "byte number must be non-negative"
-msgstr "el número de bytes no debe ser negativo"
+#: ieee.c:2861
+msgid "bad C++ field bit pos or size"
+msgstr "posición o tamaño erróneo del campo de bit C++"
 
-#: objcopy.c:2482
-msgid "interleave must be positive"
-msgstr "el espacio debe ser positivo"
+#: ieee.c:2953
+msgid "bad type for C++ method function"
+msgstr "tipo erróneo para la función del método C++"
 
-#: objcopy.c:2502 objcopy.c:2510
-#, c-format
-msgid "%s both copied and removed"
-msgstr "%s copiado y borrado"
+#: ieee.c:2963
+msgid "no type information for C++ method function"
+msgstr "no hay información de tipo para la función del método C++"
 
-#: objcopy.c:2603 objcopy.c:2674 objcopy.c:2774 objcopy.c:2805 objcopy.c:2829
-#: objcopy.c:2833 objcopy.c:2853
-#, c-format
-msgid "bad format for %s"
-msgstr "formato erróneo para %s"
+#: ieee.c:3002
+msgid "C++ static virtual method"
+msgstr "método virtual static de C++"
 
-#: objcopy.c:2624
-#, c-format
-msgid "cannot open: %s: %s"
-msgstr "no se puede abrir: %s: %s"
+#: ieee.c:3097
+msgid "unrecognized C++ object overhead spec"
+msgstr "especificación de adelanto de objeto C++ no reconocida"
 
-#: objcopy.c:2743
-#, c-format
-msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
-msgstr "Aviso: truncando el relleno de espacio de 0x%s a 0x%x"
+#: ieee.c:3136
+msgid "undefined C++ vtable"
+msgstr "vtable C++ no definida"
 
-#: objcopy.c:2903
-msgid "alternate machine code index must be positive"
-msgstr "el índice de código máquina alternativo debe ser positivo"
+#: ieee.c:3205
+msgid "C++ default values not in a function"
+msgstr "valores C++ por defecto no están en una función"
 
-#: objcopy.c:2961
-msgid "byte number must be less than interleave"
-msgstr "el número de bytes debe ser menor al espacio"
+#: ieee.c:3245
+msgid "unrecognized C++ default type"
+msgstr "tipo por defecto de C++ no reconocido"
 
-#: objcopy.c:2991
-#, c-format
-msgid "architecture %s unknown"
-msgstr "arquitectura %s desconocida"
+#: ieee.c:3276
+msgid "reference parameter is not a pointer"
+msgstr "el parámetro de referencia no es un puntero"
 
-#: objcopy.c:2995
-msgid "Warning: input target 'binary' required for binary architecture parameter."
-msgstr "Aviso: se requiere el objetivo de entrada 'binary' para el parámeto binario de arquitectura."
+#: ieee.c:3359
+msgid "unrecognized C++ reference type"
+msgstr "tipo de referencia de C++ no reconocido"
+
+#: ieee.c:3441
+msgid "C++ reference not found"
+msgstr "no se encontró la referencia C++"
+
+#: ieee.c:3449
+msgid "C++ reference is not pointer"
+msgstr "la referencia C++ no es un puntero"
+
+#: ieee.c:3475 ieee.c:3483
+msgid "missing required ASN"
+msgstr "falta el ASN requerido"
+
+#: ieee.c:3510 ieee.c:3518
+msgid "missing required ATN65"
+msgstr "falta el ATN65 requerido"
+
+#: ieee.c:3532
+msgid "bad ATN65 record"
+msgstr "registro ATN65 erróneo"
 
-#: objcopy.c:2996
+#: ieee.c:4160
 #, c-format
-msgid " Argument %s ignored"
-msgstr " Se ignora el argumento %s"
+msgid "IEEE numeric overflow: 0x"
+msgstr "desbordamiento numérico IEEE: 0x"
 
-#: objcopy.c:3002
+#: ieee.c:4204
 #, c-format
-msgid "warning: could not locate '%s'.  System error message: %s"
-msgstr "aviso: no se puede encontrar '%s'.  Mensaje de error del sistema: %s"
+msgid "IEEE string length overflow: %u\n"
+msgstr "desbordamiento de longitud de cadena IEEE: %u\n"
 
-#: objcopy.c:3042 objcopy.c:3056
+#: ieee.c:5203
 #, c-format
-msgid "%s %s%c0x%s never used"
-msgstr "%s nunca se usa %s%c0x%s"
+msgid "IEEE unsupported integer type size %u\n"
+msgstr "tamaño de tipo entero IEEE %u sin soporte\n"
 
-#: objdump.c:176
+#: ieee.c:5237
 #, c-format
-msgid "Usage: %s <option(s)> <file(s)>\n"
-msgstr "Modo de empleo: %s <opcion(es)> <fichero(s)>\n"
+msgid "IEEE unsupported float type size %u\n"
+msgstr "tamaño de tipo coma flotante IEEE %u sin soporte\n"
 
-#: objdump.c:177
+#: ieee.c:5271
 #, c-format
-msgid " Display information from object <file(s)>.\n"
-msgstr "Muestra la información de <fichero(s)> objeto.\n"
+msgid "IEEE unsupported complex type size %u\n"
+msgstr "tamaño de tipo complejo IEEE %u sin soporte\n"
 
-#: objdump.c:178
+#: nlmconv.c:269 srconv.c:1813
+msgid "input and output files must be different"
+msgstr "los ficheros de entrada y salida deben ser diferentes"
+
+#: nlmconv.c:316
+msgid "input file named both on command line and with INPUT"
+msgstr "fichero de entrada nombrado en la línea de comandos y con INPUT"
+
+#: nlmconv.c:325
+msgid "no input file"
+msgstr "no hay fichero de entrada"
+
+#: nlmconv.c:355
+msgid "no name for output file"
+msgstr "no hay nombre para el fichero de salida"
+
+#: nlmconv.c:369
+msgid "warning: input and output formats are not compatible"
+msgstr "aviso: los formatos de entrada y salida no son compatibles"
+
+#: nlmconv.c:398
+msgid "make .bss section"
+msgstr "hacer sección .bss"
+
+#: nlmconv.c:407
+msgid "make .nlmsections section"
+msgstr "hacer sección .nlmsections"
+
+#: nlmconv.c:409
+msgid "set .nlmsections flags"
+msgstr "establecer opciones .nlmsections"
+
+#: nlmconv.c:437
+msgid "set .bss vma"
+msgstr "establecer vma .bss"
+
+#: nlmconv.c:444
+msgid "set .data size"
+msgstr "establecer tamaño de .data"
+
+#: nlmconv.c:624
 #, c-format
-msgid " At least one of the following switches must be given:\n"
-msgstr "Por lo menos se requiere una de los siguientes opciones:\n"
+msgid "warning: symbol %s imported but not in import list"
+msgstr "aviso: se importó el símbolo %s pero no está en la lista de importación"
 
-#: objdump.c:179
+#: nlmconv.c:644
+msgid "set start address"
+msgstr "establecer la dirección de inicio"
+
+#: nlmconv.c:693
 #, c-format
-msgid ""
-"  -a, --archive-headers    Display archive header information\n"
-"  -f, --file-headers       Display the contents of the overall file header\n"
-"  -p, --private-headers    Display object format specific file header contents\n"
-"  -h, --[section-]headers  Display the contents of the section headers\n"
-"  -x, --all-headers        Display the contents of all headers\n"
-"  -d, --disassemble        Display assembler contents of executable sections\n"
-"  -D, --disassemble-all    Display assembler contents of all sections\n"
-"  -S, --source             Intermix source code with disassembly\n"
-"  -s, --full-contents      Display the full contents of all sections requested\n"
-"  -g, --debugging          Display debug information in object file\n"
-"  -e, --debugging-tags     Display debug information using ctags style\n"
-"  -G, --stabs              Display (in raw form) any STABS info in the file\n"
-"  -t, --syms               Display the contents of the symbol table(s)\n"
-"  -T, --dynamic-syms       Display the contents of the dynamic symbol table\n"
-"  -r, --reloc              Display the relocation entries in the file\n"
-"  -R, --dynamic-reloc      Display the dynamic relocation entries in the file\n"
-"  -v, --version            Display this program's version number\n"
-"  -i, --info               List object formats and architectures supported\n"
-"  -H, --help               Display this information\n"
-msgstr ""
-"  -a, --archive-headers    Muestra información de los encabezados del archivo\n"
-"  -f, --file-headers       Muestra el contenido de todos los encabezados del\n"
-"                           fichero\n"
-"  -p, --private-headers    Muestra el contenido de los encabezados del fichero\n"
-"                           específicos del formato objeto\n"
-"  -h, --[section-]headers  Muestra el contenido de los encabezados de sección\n"
-"  -x, --all-headers        Muestra el contenido de todos los encabezados\n"
-"  -d, --disassemble        Muestra el contenido de ensamblador de las secciones\n"
-"                           ejecutables\n"
-"  -D, --disassemble-all    Muestra el contenido de ensamblador de todas las\n"
-"                           secciones\n"
-"  -S, --source             Intermezclar código fuente con el desensamblado\n"
-"  -s, --full-contents      Muestra el contenido completo de todas las secciones\n"
-"                           requeridas\n"
-"  -g, --debugging          Muestra la información de depuración en el fichero\n"
-"                           objeto\n"
-"  -e, --debugging-tags     Muestra la información de depuración en estilo ctags\n"
-"  -G, --stabs              Muestra (sin formato) cualquier información de STABS\n"
-"                           en el fichero\n"
-"  -t, --syms               Muestra el contenido de la(s) tabla(s) de símbolos\n"
-"  -T, --dynamic-syms       Muestra el contenido de la tabla de símbolos\n"
-"                           dinámicos\n"
-"  -r, --reloc              Muestra las entradas de reubicación en el fichero\n"
-"  -R, --dynamic-reloc      Muestra las entradas de reubicación dinámica en el\n"
-"                           fichero\n"
-"  -v, --version            Muestra el número de versión de este programa\n"
-"  -i, --info               Enlista los formatos objeto y las arquitecturas\n"
-"                           con soporte\n"
-"  -H, --help               Muestra esta información\n"
+msgid "warning: START procedure %s not defined"
+msgstr "aviso: el procedimiento START %s no está definido"
 
-#: objdump.c:202
+#: nlmconv.c:695
 #, c-format
-msgid ""
-"\n"
-" The following switches are optional:\n"
-msgstr ""
-"\n"
-" Los siguientes interruptores son opcionales:\n"
+msgid "warning: EXIT procedure %s not defined"
+msgstr "aviso: el procedimiento EXIT %s no está definido"
 
-#: objdump.c:203
+#: nlmconv.c:697
 #, c-format
-msgid ""
-"  -b, --target=BFDNAME           Specify the target object format as BFDNAME\n"
-"  -m, --architecture=MACHINE     Specify the target architecture as MACHINE\n"
-"  -j, --section=NAME             Only display information for section NAME\n"
-"  -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
-"  -EB --endian=big               Assume big endian format when disassembling\n"
-"  -EL --endian=little            Assume little endian format when disassembling\n"
-"      --file-start-context       Include context from start of file (with -S)\n"
-"  -I, --include=DIR              Add DIR to search list for source files\n"
-"  -l, --line-numbers             Include line numbers and filenames in output\n"
-"  -C, --demangle[=STYLE]         Decode mangled/processed symbol names\n"
-"                                  The STYLE, if specified, can be `auto', `gnu',\n"
-"                                  `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
-"                                  or `gnat'\n"
-"  -w, --wide                     Format output for more than 80 columns\n"
-"  -z, --disassemble-zeroes       Do not skip blocks of zeroes when disassembling\n"
-"      --start-address=ADDR       Only process data whose address is >= ADDR\n"
-"      --stop-address=ADDR        Only process data whose address is <= ADDR\n"
-"      --prefix-addresses         Print complete address alongside disassembly\n"
-"      --[no-]show-raw-insn       Display hex alongside symbolic disassembly\n"
-"      --adjust-vma=OFFSET        Add OFFSET to all displayed section addresses\n"
-"      --special-syms             Include special symbols in symbol dumps\n"
-"\n"
-msgstr ""
-"  -b, --target=NOMBREBFD         Especifica el formato objeto objetivo\n"
-"                                  como NOMBREBFD\n"
-"  -m, --architecture=MÁQUINA     Especifica la arquitectura objetivo\n"
-"                                  como MÁQUINA\n"
-"  -j, --section=NOMBRE           Sólo muestra la información de\n"
-"                                  la sección NOMBRE\n"
-"  -M, --disassembler-options=OPT Pasa el texto OPT al desensamblador\n"
-"  -EB --endian=big               Asume el formato big endian al desensamblar\n"
-"  -EL --endian=little            Asume el formato little endian al desensamblar\n"
-"      --file-start-context       Incluye el contexto del inicio del fichero\n"
-"                                  (con -S)\n"
-"  -I, --include=DIR              Agrega el DIRectorio a la lista de búsqueda de\n"
-"                                  ficheros fuente\n"
-"  -l, --line-numbers             Incluye los números de línea y los nombres de fichero\n"
-"                                  en la salida\n"
-"  -C, --demangle[=ESTILO]        Decodifica los nombres de símbolo obtenidos/procesados\n"
-"                                  El ESTILO, si se especifica, puede ser `auto', 'gnu',\n"
-"                                  `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
-"                                  o `gnat'\n"
-"  -w, --wide                     Da formato a la salida para más de 80 columnas\n"
-"  -z, --disassemble-zeroes       No salta los bloques de ceros al desensamblar\n"
-"      --start-address=DIR        Sólo procesa los datos cuya dirección es\n"
-"                                  >= DIR\n"
-"      --stop-address=DIR         Sólo procesa los datos cuya dirección es\n"
-"                                  <= DIR\n"
-"      --prefix-addresses         Muestra las direcciones completas a lo largo\n"
-"                                  del desensamblado\n"
-"      --[no-]show-raw-insn       Muestra en hexadecimal a lo largo\n"
-"                                  del desensamblado simbólico\n"
-"      --adjust-vma=DESPL         Agrega el DESPLazamiento a todas las direcciones\n"
-"                                  mostradas de sección\n"
-"      --special-syms             Incluye símbolos especiales en los volcados de\n"
-"                                  símbolos\n"
+msgid "warning: CHECK procedure %s not defined"
+msgstr "aviso: el procedimiento CHECK %s no está definido"
 
-#: objdump.c:378
-#, c-format
-msgid "Sections:\n"
-msgstr "Secciones:\n"
+#: nlmconv.c:718 nlmconv.c:907
+msgid "custom section"
+msgstr "sección a la medida"
 
-#: objdump.c:381 objdump.c:385
-#, c-format
-msgid "Idx Name          Size      VMA       LMA       File off  Algn"
-msgstr "Ind Nombre        Tamaño    VMA       LMA       Desp fich Alin"
+#: nlmconv.c:739 nlmconv.c:936
+msgid "help section"
+msgstr "sección de ayuda"
 
-#: objdump.c:387
-#, c-format
-msgid "Idx Name          Size      VMA               LMA               File off  Algn"
-msgstr "Ind Nombre        Tamaño    VMA               LMA               Desp fich Alin"
+#: nlmconv.c:761 nlmconv.c:954
+msgid "message section"
+msgstr "sección de mensajes"
 
-#: objdump.c:391
-#, c-format
-msgid "  Flags"
-msgstr "  Opciones"
+#: nlmconv.c:777 nlmconv.c:987
+msgid "module section"
+msgstr "sección de módulos"
 
-#: objdump.c:393
-#, c-format
-msgid "  Pg"
-msgstr "  Pg"
+#: nlmconv.c:797 nlmconv.c:1003
+msgid "rpc section"
+msgstr "sección de rpc"
 
-#: objdump.c:436
+#. There is no place to record this information.
+#: nlmconv.c:833
 #, c-format
-msgid "%s: not a dynamic object"
-msgstr "%s: no es un objeto dinámico"
+msgid "%s: warning: shared libraries can not have uninitialized data"
+msgstr "%s: aviso: las bibliotecas compartidas no pueden tener datos sin iniciar"
 
-#: objdump.c:1722
-#, c-format
-msgid "Disassembly of section %s:\n"
-msgstr "Desensamblado de la sección %s:\n"
+#: nlmconv.c:854 nlmconv.c:1022
+msgid "shared section"
+msgstr "sección compartida"
 
-#: objdump.c:1884
-#, c-format
-msgid "Can't use supplied machine %s"
-msgstr "No se puede utilizar la máquina %s proporcionada"
+#: nlmconv.c:862
+msgid "warning: No version number given"
+msgstr "aviso: No se dió un número de versión"
 
-#: objdump.c:1903
+#: nlmconv.c:902 nlmconv.c:931 nlmconv.c:949 nlmconv.c:998 nlmconv.c:1017
 #, c-format
-msgid "Can't disassemble for architecture %s\n"
-msgstr "No se puede desensamblar para la arquitectura %s\n"
+msgid "%s: read: %s"
+msgstr "%s: leído: %s"
+
+#: nlmconv.c:924
+msgid "warning: FULLMAP is not supported; try ld -M"
+msgstr "aviso: FULLMAP no tiene soporte; pruebe ld -M"
 
-#: objdump.c:1973
+#: nlmconv.c:1100
 #, c-format
-msgid ""
-"No %s section present\n"
-"\n"
-msgstr ""
-"No está presente la sección %s\n"
-"\n"
+msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
+msgstr "Modo de empleo: %s [opcion(es)] [fichero-entrada [fichero-salida]]\n"
 
-#: objdump.c:1982
+#: nlmconv.c:1101
 #, c-format
-msgid "Reading %s section of %s failed: %s"
-msgstr "Falló al leer la sección %s de %s: %s"
+msgid " Convert an object file into a NetWare Loadable Module\n"
+msgstr "Convertir un fichero objeto en un Módulo Cargable de NetWare (NLM)\n"
 
-#: objdump.c:2026
+#: nlmconv.c:1102
 #, c-format
 msgid ""
-"Contents of %s section:\n"
-"\n"
+" The options are:\n"
+"  -I --input-target=<bfdname>   Set the input binary file format\n"
+"  -O --output-target=<bfdname>  Set the output binary file format\n"
+"  -T --header-file=<file>       Read <file> for NLM header information\n"
+"  -l --linker=<linker>          Use <linker> for any linking\n"
+"  -d --debug                    Display on stderr the linker command line\n"
+"  @<file>                       Read options from <file>.\n"
+"  -h --help                     Display this information\n"
+"  -v --version                  Display the program's version\n"
 msgstr ""
-"Contenido de la sección %s:\n"
-"\n"
+" Las opciones son:\n"
+"  -I --input-target=<nombrebfd>  Establece el formato del fichero binario de entrada\n"
+"  -O --output-target=<nombrebfd> Establece el formato del fichero binario de salida\n"
+"  -T --header-file=<fichero>     Lee el <fichero> para la información del encabezado NLM\n"
+"  -l --linker=<enlazador>        Usa el <enlazador> para cualquier enlazado\n"
+"  -d --debug                     Muestra en salida estándar la línea de comando del enlazador\n"
+"  @<fichero>                     Lee opciones del <fichero>.\n"
+"  -h --help                      Muestra esta información\n"
+"  -v --version                   Muestra la versión del programa\n"
 
-#: objdump.c:2153
+#: nlmconv.c:1143
 #, c-format
-msgid "architecture: %s, "
-msgstr "arquitectura: %s, "
+msgid "support not compiled in for %s"
+msgstr "soporte no compilado para %s"
+
+#: nlmconv.c:1180
+msgid "make section"
+msgstr "sección make"
+
+#: nlmconv.c:1194
+msgid "set section size"
+msgstr "establecer el tamaño de la sección"
+
+#: nlmconv.c:1200
+msgid "set section alignment"
+msgstr "establecer la alineación de la sección"
+
+#: nlmconv.c:1204
+msgid "set section flags"
+msgstr "establecer las opciones de la sección"
+
+#: nlmconv.c:1215
+msgid "set .nlmsections size"
+msgstr "establecer el tamaño de .nlmsections"
+
+#: nlmconv.c:1296 nlmconv.c:1304 nlmconv.c:1313 nlmconv.c:1318
+msgid "set .nlmsection contents"
+msgstr "establecer el contenido de .nlmsection"
+
+#: nlmconv.c:1797
+msgid "stub section sizes"
+msgstr "tamaños de la sección de cabos"
+
+#: nlmconv.c:1844
+msgid "writing stub"
+msgstr "escribiendo cabo"
 
-#: objdump.c:2156
+#: nlmconv.c:1928
 #, c-format
-msgid "flags 0x%08x:\n"
-msgstr "opciones 0x%08x:\n"
+msgid "unresolved PC relative reloc against %s"
+msgstr "reubicación relativa PC contra %s sin resolver"
 
-#: objdump.c:2170
+#: nlmconv.c:1992
 #, c-format
-msgid ""
-"\n"
-"start address 0x"
-msgstr ""
-"\n"
-"dirección de inicio 0x"
+msgid "overflow when adjusting relocation against %s"
+msgstr "desbordamiento al ajustar la reubicación contra %s"
 
-#: objdump.c:2210
+#: nlmconv.c:2119
 #, c-format
-msgid "Contents of section %s:\n"
-msgstr "Contenido de la sección %s:\n"
+msgid "%s: execution of %s failed: "
+msgstr "%s: falló la ejecución de %s: "
 
-#: objdump.c:2335
+#: nlmconv.c:2134
 #, c-format
-msgid "no symbols\n"
-msgstr "no hay símbolos\n"
+msgid "Execution of %s failed"
+msgstr "Falló la ejecución de %s"
 
-#: objdump.c:2342
+#: nm.c:224 size.c:82 strings.c:708
 #, c-format
-msgid "no information for symbol number %ld\n"
-msgstr "no hay información para el símbolo número %ld\n"
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr "Modo de empleo: %s [opcion(es)] [fichero(s)]\n"
 
-#: objdump.c:2345
+#: nm.c:225
 #, c-format
-msgid "could not determine the type of symbol number %ld\n"
-msgstr "no se puede determinar el tipo del símbolo número %ld\n"
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr "Lista de símbolos en [fichero(s)] (a.out por defecto).\n"
 
-#: objdump.c:2611
+#: nm.c:226
 #, c-format
 msgid ""
-"\n"
-"%s:     file format %s\n"
+" The options are:\n"
+"  -a, --debug-syms       Display debugger-only symbols\n"
+"  -A, --print-file-name  Print name of the input file before every symbol\n"
+"  -B                     Same as --format=bsd\n"
+"  -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
+"                          The STYLE, if specified, can be `auto' (the default),\n"
+"                          `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+"                          or `gnat'\n"
+"      --no-demangle      Do not demangle low-level symbol names\n"
+"  -D, --dynamic          Display dynamic symbols instead of normal symbols\n"
+"      --defined-only     Display only defined symbols\n"
+"  -e                     (ignored)\n"
+"  -f, --format=FORMAT    Use the output format FORMAT.  FORMAT can be `bsd',\n"
+"                           `sysv' or `posix'.  The default is `bsd'\n"
+"  -g, --extern-only      Display only external symbols\n"
+"  -l, --line-numbers     Use debugging information to find a filename and\n"
+"                           line number for each symbol\n"
+"  -n, --numeric-sort     Sort symbols numerically by address\n"
+"  -o                     Same as -A\n"
+"  -p, --no-sort          Do not sort the symbols\n"
+"  -P, --portability      Same as --format=posix\n"
+"  -r, --reverse-sort     Reverse the sense of the sort\n"
+"  -S, --print-size       Print size of defined symbols\n"
+"  -s, --print-armap      Include index for symbols from archive members\n"
+"      --size-sort        Sort symbols by size\n"
+"      --special-syms     Include special symbols in the output\n"
+"      --synthetic        Display synthetic symbols as well\n"
+"  -t, --radix=RADIX      Use RADIX for printing symbol values\n"
+"      --target=BFDNAME   Specify the target object format as BFDNAME\n"
+"  -u, --undefined-only   Display only undefined symbols\n"
+"  -X 32_64               (ignored)\n"
+"  @FILE                  Read options from FILE\n"
+"  -h, --help             Display this information\n"
+"  -V, --version          Display this program's version number\n"
+"\n"
 msgstr ""
+"Las opciones son:\n"
+"  -a, --debug-syms        Muestra símbolos sólo para el depurador\n"
+"  -A, --print-file-name   Muestra el nombre del fichero de entrada antes de\n"
+"                           cada símbolo\n"
+"  -B                      Igual que --format=bsd\n"
+"  -C, --demangle[=ESTILO] Decodifica los nombres de símbolo de bajo nivel en\n"
+"                           nombres de nivel de usuario\n"
+"                           El ESTILO, si se especifica, puede ser `auto'\n"
+"                           (por defecto), `gnu', `lucid', `arm', `hp', `edg',\n"
+"                           `gnu-v3', `java' o `gnat'\n"
+"      --no-demangle       No decodifica los nombres de símbolo de bajo nivel\n"
+"  -D, --dynamic           Muestra los símbolos dinámicos en lugar de los\n"
+"                           símbolos normales\n"
+"      --defined-only      Muestra solamente los símbolos definidos\n"
+"  -e                      (ignorado)\n"
+"  -f, --format=FORMATO    Usa el formato de salida FORMATO.  FORMATO puede ser\n"
+"                            `bsd', `sysv' o `posix'.  Por defecto es `bsd'\n"
+"  -g, --extern-only       Muestra solamente los símbolos externos\n"
+"  -l, --line-numbers      Utiliza la información de depuración para encontrar\n"
+"                           un nombre de fichero y un número de línea para cada\n"
+"                           símbolo\n"
+"  -n, --numeric-sort      Ordena los símbolos numéricamente por dirección\n"
+"  -o                      Igual que -A\n"
+"  -p, --no-sort           No ordena los símbolos\n"
+"  -P, --portability       Igual que --format=posix\n"
+"  -r, --reverse-sort      Cambia el sentido de la ordenación\n"
+"  -S, --print-size        Muestra el tamaño de los símbolos definidos\n"
+"  -s, --print-armap       Incluye el índice de los símbolos de miembros\n"
+"                           del archivo\n"
+"      --size-sort         Ordena los símbolos por tamaño\n"
+"      --special-syms      Incluye los símbolos especiales en la salida\n"
+"      --synthetic         Muestra también símbolos sintéticos\n"
+"  -t, --radix=RADICAL     Utiliza el RADICAL para mostrar los valores de\n"
+"                           los símbolos\n"
+"      --target=NOMBREBFD  Especifica el formato de objeto objetivo como\n"
+"                           NOMBREBFD\n"
+"  -u, --undefined-only    Muestra sólo los símbolos indefinidos\n"
+"  -X 32_64                (ignorado)\n"
+"  @FICHERO                Lee opciones del FICHERO\n"
+"  -h, --help              Muestra esta información\n"
+"  -V, --version           Muestra el número de versión de este programa\n"
 "\n"
-"%s:     formato del fichero %s\n"
-
-#: objdump.c:2662
-#, c-format
-msgid "%s: printing debugging information failed"
-msgstr "%s: falló al mostrar la información de depuración"
-
-#: objdump.c:2753
-#, c-format
-msgid "In archive %s:\n"
-msgstr "En el fichero %s:\n"
-
-#: objdump.c:2873
-msgid "unrecognized -E option"
-msgstr "opción -E no reconocida"
-
-#: objdump.c:2884
-#, c-format
-msgid "unrecognized --endian type `%s'"
-msgstr "tipo --endian `%s' no reconocido"
 
-#: rdcoff.c:196
+#: nm.c:263 objdump.c:236
 #, c-format
-msgid "parse_coff_type: Bad type code 0x%x"
-msgstr "parse_coff_type: Código de tipo 0x%x erróneo"
+msgid "Report bugs to %s.\n"
+msgstr "Reportar bichos a %s.\n"
 
-#: rdcoff.c:404 rdcoff.c:509 rdcoff.c:697
+#: nm.c:295
 #, c-format
-msgid "bfd_coff_get_syment failed: %s"
-msgstr "bfd_coff_get_syment falló: %s"
+msgid "%s: invalid radix"
+msgstr "%s: radical inválido"
 
-#: rdcoff.c:420 rdcoff.c:717
+#: nm.c:319
 #, c-format
-msgid "bfd_coff_get_auxent failed: %s"
-msgstr "bfd_coff_get_auxent falló: %s"
+msgid "%s: invalid output format"
+msgstr "%s: formato de salida inválido"
 
-#: rdcoff.c:784
+#: nm.c:340 readelf.c:6623 readelf.c:6659
 #, c-format
-msgid "%ld: .bf without preceding function"
-msgstr "%ld: .bf sin una función precedente"
+msgid "<processor specific>: %d"
+msgstr "<específico del procesador> %d:"
 
-#: rdcoff.c:834
+#: nm.c:342 readelf.c:6626 readelf.c:6671
 #, c-format
-msgid "%ld: unexpected .ef\n"
-msgstr "%ld: .ef inesperado\n"
+msgid "<OS specific>: %d"
+msgstr "<específico del SO>: %d"
 
-#: rddbg.c:85
+#: nm.c:344 readelf.c:6628 readelf.c:6674
 #, c-format
-msgid "%s: no recognized debugging information"
-msgstr "%s: no se reconoce la información de depuración"
+msgid "<unknown>: %d"
+msgstr "<desconocido>: %d"
 
-#: rddbg.c:394
+#: nm.c:381
 #, c-format
-msgid "Last stabs entries before error:\n"
-msgstr "Últimas entradas stabs antes del error:\n"
+msgid ""
+"\n"
+"Archive index:\n"
+msgstr ""
+"\n"
+"Índice del archivo:\n"
 
-#: readelf.c:272
+#: nm.c:1227
 #, c-format
-msgid "%s: Error: "
-msgstr "%s: Error: "
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Símbolos indefinidos de %s:\n"
+"\n"
 
-#: readelf.c:283
+#: nm.c:1229
 #, c-format
-msgid "%s: Warning: "
-msgstr "%s: Aviso: "
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Símbolos de %s:\n"
+"\n"
 
-#: readelf.c:298
+#: nm.c:1231 nm.c:1282
 #, c-format
-msgid "Unable to seek to 0x%x for %s\n"
-msgstr "No se puede buscar a 0x%x para %s\n"
+msgid ""
+"Name                  Value   Class        Type         Size     Line  Section\n"
+"\n"
+msgstr ""
+"Nombre                Valor   Clase        Tipo         Tamaño   Línea Sección\n"
+"\n"
 
-#: readelf.c:310
+#: nm.c:1234 nm.c:1285
 #, c-format
-msgid "Out of memory allocating 0x%x bytes for %s\n"
-msgstr "Memoria agotada al asignar 0x%x bytes para %s\n"
+msgid ""
+"Name                  Value           Class        Type         Size             Line  Section\n"
+"\n"
+msgstr ""
+"Nombre                Valor           Clase        Tipo         Tamaño           Línea Sección\n"
+"\n"
 
-#: readelf.c:318
+#: nm.c:1278
 #, c-format
-msgid "Unable to read in 0x%x bytes of %s\n"
-msgstr "No se pueden leer 0x%x bytes de %s\n"
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Símbolos indefinidos de %s[%s]:\n"
+"\n"
 
-#: readelf.c:364 readelf.c:412 readelf.c:615 readelf.c:647
+#: nm.c:1280
 #, c-format
-msgid "Unhandled data length: %d\n"
-msgstr "Longitud de datos sin manejar: %d\n"
-
-#: readelf.c:752
-msgid "Don't know about relocations on this machine architecture\n"
-msgstr "No se conocen las reubicaciones en esta arquitectura de máquina\n"
-
-#: readelf.c:772 readelf.c:799 readelf.c:842 readelf.c:869
-msgid "relocs"
-msgstr "reubicaciones"
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Símbolos de %s[%s]:\n"
+"\n"
 
-#: readelf.c:782 readelf.c:809 readelf.c:852 readelf.c:879
-msgid "out of memory parsing relocs"
-msgstr "memoria agotada al decodificar reubicaciones"
+#: nm.c:1584
+msgid "Only -X 32_64 is supported"
+msgstr "Solamente -X 32_64 tiene soporte"
 
-#: readelf.c:933
-#, c-format
-msgid " Offset     Info    Type                Sym. Value  Symbol's Name + Addend\n"
-msgstr " Desplaz    Info    Tipo                Val. Símbolo Nombre Símbolo + Adend\n"
+#: nm.c:1604
+msgid "Using the --size-sort and --undefined-only options together"
+msgstr "Al usar juntas las opciones --size-sort y --undefined-only"
 
-#: readelf.c:935
-#, c-format
-msgid " Offset     Info    Type            Sym.Value  Sym. Name + Addend\n"
-msgstr " Desplaz    Info    Tipo            Val.Símbolo Nom.Símbolo + Adend\n"
+#: nm.c:1605
+msgid "will produce no output, since undefined symbols have no size."
+msgstr "no se producirá salida, porque los símbolos indefinidos no tienen tamaño."
 
-#: readelf.c:940
+#: nm.c:1633
 #, c-format
-msgid " Offset     Info    Type                Sym. Value  Symbol's Name\n"
-msgstr " Desplaz    Info    Tipo                Val. Símbolo Nombre Símbolo\n"
+msgid "data size %ld"
+msgstr "tamaño de datos %ld"
 
-#: readelf.c:942
+#: objcopy.c:401 srconv.c:1721
 #, c-format
-msgid " Offset     Info    Type            Sym.Value  Sym. Name\n"
-msgstr " Desplaz    Info    Tipo            Val.Símbolo Nom. Símbolo\n"
+msgid "Usage: %s [option(s)] in-file [out-file]\n"
+msgstr "Modo de empleo: %s [opcion(es)] fichero-entrada [fichero-salida]\n"
 
-#: readelf.c:950
+#: objcopy.c:402
 #, c-format
-msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name + Addend\n"
-msgstr "    Desplaz            Info             Tipo               Valor Símbolo  Nombre Símbolo + Adend\n"
+msgid " Copies a binary file, possibly transforming it in the process\n"
+msgstr " Copia un fichero binario, posiblemente transformándolo en el proceso\n"
 
-#: readelf.c:952
+#: objcopy.c:403 objcopy.c:495
 #, c-format
-msgid "  Offset          Info           Type           Sym. Value    Sym. Name + Addend\n"
-msgstr "  Desplaz         Info           Tipo           Val. Símbolo  Nom. Símbolo + Adend\n"
+msgid " The options are:\n"
+msgstr "  Las opciones son:\n"
 
-#: readelf.c:957
+#: objcopy.c:404
 #, c-format
-msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name\n"
-msgstr "    Desplaz            Info             Tipo               Valor Símbolo  Nombre Símbolo\n"
+msgid ""
+"  -I --input-target <bfdname>      Assume input file is in format <bfdname>\n"
+"  -O --output-target <bfdname>     Create an output file in format <bfdname>\n"
+"  -B --binary-architecture <arch>  Set arch of output file, when input is binary\n"
+"  -F --target <bfdname>            Set both input and output format to <bfdname>\n"
+"     --debugging                   Convert debugging information, if possible\n"
+"  -p --preserve-dates              Copy modified/access timestamps to the output\n"
+"  -j --only-section <name>         Only copy section <name> into the output\n"
+"     --add-gnu-debuglink=<file>    Add section .gnu_debuglink linking to <file>\n"
+"  -R --remove-section <name>       Remove section <name> from the output\n"
+"  -S --strip-all                   Remove all symbol and relocation information\n"
+"  -g --strip-debug                 Remove all debugging symbols & sections\n"
+"     --strip-unneeded              Remove all symbols not needed by relocations\n"
+"  -N --strip-symbol <name>         Do not copy symbol <name>\n"
+"     --strip-unneeded-symbol <name>\n"
+"                                   Do not copy symbol <name> unless needed by\n"
+"                                     relocations\n"
+"     --only-keep-debug             Strip everything but the debug information\n"
+"  -K --keep-symbol <name>          Do not strip symbol <name>\n"
+"  -L --localize-symbol <name>      Force symbol <name> to be marked as a local\n"
+"     --globalize-symbol <name>     Force symbol <name> to be marked as a global\n"
+"  -G --keep-global-symbol <name>   Localize all symbols except <name>\n"
+"  -W --weaken-symbol <name>        Force symbol <name> to be marked as a weak\n"
+"     --weaken                      Force all global symbols to be marked as weak\n"
+"  -w --wildcard                    Permit wildcard in symbol comparison\n"
+"  -x --discard-all                 Remove all non-global symbols\n"
+"  -X --discard-locals              Remove any compiler-generated symbols\n"
+"  -i --interleave <number>         Only copy one out of every <number> bytes\n"
+"  -b --byte <num>                  Select byte <num> in every interleaved block\n"
+"     --gap-fill <val>              Fill gaps between sections with <val>\n"
+"     --pad-to <addr>               Pad the last section up to address <addr>\n"
+"     --set-start <addr>            Set the start address to <addr>\n"
+"    {--change-start|--adjust-start} <incr>\n"
+"                                   Add <incr> to the start address\n"
+"    {--change-addresses|--adjust-vma} <incr>\n"
+"                                   Add <incr> to LMA, VMA and start addresses\n"
+"    {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+"                                   Change LMA and VMA of section <name> by <val>\n"
+"     --change-section-lma <name>{=|+|-}<val>\n"
+"                                   Change the LMA of section <name> by <val>\n"
+"     --change-section-vma <name>{=|+|-}<val>\n"
+"                                   Change the VMA of section <name> by <val>\n"
+"    {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+"                                   Warn if a named section does not exist\n"
+"     --set-section-flags <name>=<flags>\n"
+"                                   Set section <name>'s properties to <flags>\n"
+"     --add-section <name>=<file>   Add section <name> found in <file> to output\n"
+"     --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+"     --change-leading-char         Force output format's leading character style\n"
+"     --remove-leading-char         Remove leading character from global symbols\n"
+"     --redefine-sym <old>=<new>    Redefine symbol name <old> to <new>\n"
+"     --redefine-syms <file>        --redefine-sym for all symbol pairs \n"
+"                                     listed in <file>\n"
+"     --srec-len <number>           Restrict the length of generated Srecords\n"
+"     --srec-forceS3                Restrict the type of generated Srecords to S3\n"
+"     --strip-symbols <file>        -N for all symbols listed in <file>\n"
+"     --strip-unneeded-symbols <file>\n"
+"                                   --strip-unneeded-symbol for all symbols listed\n"
+"                                     in <file>\n"
+"     --keep-symbols <file>         -K for all symbols listed in <file>\n"
+"     --localize-symbols <file>     -L for all symbols listed in <file>\n"
+"     --globalize-symbols <file>    --globalize-symbol for all in <file>\n"
+"     --keep-global-symbols <file>  -G for all symbols listed in <file>\n"
+"     --weaken-symbols <file>       -W for all symbols listed in <file>\n"
+"     --alt-machine-code <index>    Use alternate machine code for output\n"
+"     --writable-text               Mark the output text as writable\n"
+"     --readonly-text               Make the output text write protected\n"
+"     --pure                        Mark the output file as demand paged\n"
+"     --impure                      Mark the output file as impure\n"
+"     --prefix-symbols <prefix>     Add <prefix> to start of every symbol name\n"
+"     --prefix-sections <prefix>    Add <prefix> to start of every section name\n"
+"     --prefix-alloc-sections <prefix>\n"
+"                                   Add <prefix> to start of every allocatable\n"
+"                                     section name\n"
+"  -v --verbose                     List all object files modified\n"
+"  @<file>                          Read options from <file>\n"
+"  -V --version                     Display this program's version number\n"
+"  -h --help                        Display this output\n"
+"     --info                        List object formats & architectures supported\n"
+msgstr ""
+"  -I --input-target <nombrebfd>    Asume que el fichero de entrada está en\n"
+"                                   el formato <nombrebfd>\n"
+"  -O --output-target <nombrebfd>   Crea un fichero de salida en el formato\n"
+"                                   <nombrebfd>\n"
+"  -B --binary-architecture <arch>  Establece la arquitectura del fichero de\n"
+"                                   salida, cuando la entrada es binaria\n"
+"  -F --target <nombrebfd>          Establece tanto el formato de salida como\n"
+"                                   el de entrada a <nombrebfd>\n"
+"     --debugging                   Convierte la información de depuración, si\n"
+"                                   es posible\n"
+"  -p --preserve-dates              Copia las marcas de tiempo de modificación y\n"
+"                                   acceso a la salida\n"
+"  -j --only-section <nombre>       Sólo copiar la sección <nombre> en la salida\n"
+"     --add-gnu-debuglink=<fich>    Agrega la sección de enlazado .gnu_debuglink\n"
+"                                   al <fich>ero\n"
+"  -R --remove-section <nombre>     Borra la sección <nombre> de la salida\n"
+"  -S --strip-all                   Borra todos los símbolos y la información de\n"
+"                                   reubicación\n"
+"  -g --strip-debug                 Borra todos los símbolos y secciones de\n"
+"                                   depuración\n"
+"     --strip-unneeded              Borra todos los símbolos innecesarios para\n"
+"                                   las reubicaciones\n"
+"  -N --strip-symbol <nombre>       No copia el símbolo <nombre>\n"
+"     --strip-unneeded-symbol <nombre>\n"
+"                                   No copia el símbolo <nombre> a menos que sea\n"
+"                                   necesario para las reubicaciones\n"
+"     --only-keep-debug             Borra todo excepto la información de\n"
+"                                   depuración\n"
+"  -K --keep-symbol <nombre>        Sólo copia el símbolo <nombre>\n"
+"  -L --localize-symbol <nom>       Fuerza que el símbolo <nom> se marque como\n"
+"                                   local\n"
+"     --globalize-symbol <nom>      Fuerza que el símbolo <nom> se marque como\n"
+"                                   global\n"
+"  -G --keep-global-symbol <nom>    Vuelve locales todos los símbolos excepto\n"
+"                                   <nom>\n"
+"  -W --weaken-symbol <nom>         Fuerza que el símbolo <nom> se marque como\n"
+"                                   débil\n"
+"     --weaken                      Fuerza que todos los símbolos se marquen como\n"
+"                                   débiles\n"
+"  -w --wildcard                    Permite comodines en la comparación de\n"
+"                                   símbolos\n"
+"  -x --discard-all                 Borra todos los símbolos que no son globales\n"
+"  -X --discard-locals              Borra cualquier símbolo generado por el\n"
+"                                   compilador\n"
+"  -i --interleave <num>            Sólo copia uno de cada <num> bytes\n"
+"  -b --byte <num>                  Selecciona el byte <num> en cada bloque\n"
+"                                   espaciado\n"
+"     --gap-fill <val>              Rellena los huecos entre secciones con <val>\n"
+"     --pad-to <dirección>          Rellena la última sección hasta la dirección <dirección>\n"
+"     --set-start <dirección>       Establece la dirección de inicio en\n"
+"                                   <dirección>\n"
+"    {--change-start|--adjust-start} <incr>\n"
+"                                   Agrega <incr> a la dirección de inicio\n"
+"    {--change-addresses|--adjust-vma} <incr>\n"
+"                                   Agrega <incr> a las direcciones LMA, VMA y\n"
+"                                   la de inicio\n"
+"    {--change-section-address|--adjust-section-vma} <nombre>{=|+|-}<val>\n"
+"                                   Cambia el LMA y el VMA de la sección\n"
+"                                   <nombre> por <val>\n"
+"     --change-section-lma <name>{=|+|-}<val>\n"
+"                                   Cambia LMA de la sección <nombre> por <val>\n"
+"     --change-section-vma <name>{=|+|-}<val>\n"
+"                                   Cambia VMA de la sección <nombre> por <val>\n"
+"    {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+"                                   Avisar si no existe una sección nombrada\n"
+"     --set-section-flags <nombre>=<opciones>\n"
+"                                   Establece las propiedades de la sección\n"
+"                                   <nombre> a <opciones>\n"
+"     --add-section <nombre>=<fichero>\n"
+"                                   Agrega la sección <nombre> que se encuentra\n"
+"                                   en el <fichero> a la salida\n"
+"     --rename-section <ant>=<nvo>[,<opts>] Renombra la sección <ant> a <nvo>\n"
+"     --change-leading-char         Fuerza el carácter de estilo inicial en\n"
+"                                   el formato de salida\n"
+"     --remove-leading-char         Borra el carácter inicial de los símbolos\n"
+"                                   globales\n"
+"     --redefine-sym <ant>=<nvo>    Redefine el nombre de símbolo <ant> a <nvo>\n"
+"     --redefine-syms <fichero>     --redefine-sym para todos los pares de\n"
+"                                   símbolos enlistados en el <fichero>\n"
+"     --srec-len <número>           Restringe la longitud de los Srecords\n"
+"                                   generados\n"
+"     --srec-forceS3                Restringe el tipo de los Srecords generados\n"
+"                                   a S3\n"
+"     --strip-symbols <fichero>     -N para todos los símbolos enlistados en el\n"
+"                                   <fichero>\n"
+"     --strip-unneeded-symbols <fichero>\n"
+"                                   --strip-unneeded-symbol para todos los\n"
+"                                   símbolos enlistados en el <fichero>\n"
+"     --keep-symbols <fichero>      -K para todos los símbolos enlistados en el\n"
+"                                   <fichero>\n"
+"     --localize-symbols <fichero>  -L para todos los símbolos enlistados en el\n"
+"                                   <fichero>\n"
+"     --globalize-symbols <fichero> --globalize-symbol para todos los símbolos\n"
+"                                   en el <fichero>\n"
+"     --keep-global-symbols <fichero>\n"
+"                                   -G para todos los símbolos enlistados en el\n"
+"                                   <fichero>\n"
+"     --weaken-symbols <fichero>    -W para todos los símbolos enlistados en el\n"
+"                                   <fichero>\n"
+"     --alt-machine-code <índice>   Utiliza código máquina alternativo para la\n"
+"                                   salida\n"
+"     --writable-text               Marca el texto de salida como modificable\n"
+"     --readonly-text               Marca el texto de salida como protegido\n"
+"                                   contra escritura\n"
+"     --pure                        Marca el fichero de salida como paginado en\n"
+"                                   demanda\n"
+"     --impure                      Marca el fichero de salida como impuro\n"
+"     --prefix-symbols <prefijo>    Agrega <prefijo> al inicio de cada nombre de\n"
+"                                   símbolo\n"
+"     --prefix-sections <prefijo>   Agrega <prefijo> al inicio de cada nombre de\n"
+"                                   sección\n"
+"     --prefix-alloc-sections <prefijo>\n"
+"                                   Agrega <prefijo> al inicio de cada nombre de\n"
+"                                   sección alojable\n"
+"  -v --verbose                     Enlista todos los ficheros objeto modificados\n"
+"  @<fichero>                       Lee opciones del <fichero>\n"
+"  -V --version                     Muestra el número de versión de este programa\n"
+"  -h --help                        Muestra esta salida\n"
+"     --info                        Enlista los formatos objeto y arquitecturas\n"
+"                                   que se soportan\n"
 
-#: readelf.c:959
+#: objcopy.c:493
 #, c-format
-msgid "  Offset          Info           Type           Sym. Value    Sym. Name\n"
-msgstr "  Desplaz         Info           Tipo           Val. Símbolo  Nom. Símbolo\n"
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr "Modo de empleo: %s <opcion(es)> fichero(s)-entrada\n"
 
-#: readelf.c:1239 readelf.c:1241 readelf.c:1324 readelf.c:1326 readelf.c:1335
-#: readelf.c:1337
+#: objcopy.c:494
 #, c-format
-msgid "unrecognized: %-7lx"
-msgstr "no reconocido: %-7lx"
+msgid " Removes symbols and sections from files\n"
+msgstr " Remueve símbolos y secciones de los ficheros\n"
 
-#: readelf.c:1295
+#: objcopy.c:496
 #, c-format
-msgid "<string table index: %3ld>"
-msgstr "<índice de la tabla de cadenas: %3ld>"
+msgid ""
+"  -I --input-target=<bfdname>      Assume input file is in format <bfdname>\n"
+"  -O --output-target=<bfdname>     Create an output file in format <bfdname>\n"
+"  -F --target=<bfdname>            Set both input and output format to <bfdname>\n"
+"  -p --preserve-dates              Copy modified/access timestamps to the output\n"
+"  -R --remove-section=<name>       Remove section <name> from the output\n"
+"  -s --strip-all                   Remove all symbol and relocation information\n"
+"  -g -S -d --strip-debug           Remove all debugging symbols & sections\n"
+"     --strip-unneeded              Remove all symbols not needed by relocations\n"
+"     --only-keep-debug             Strip everything but the debug information\n"
+"  -N --strip-symbol=<name>         Do not copy symbol <name>\n"
+"  -K --keep-symbol=<name>          Do not strip symbol <name>\n"
+"  -w --wildcard                    Permit wildcard in symbol comparison\n"
+"  -x --discard-all                 Remove all non-global symbols\n"
+"  -X --discard-locals              Remove any compiler-generated symbols\n"
+"  -v --verbose                     List all object files modified\n"
+"  -V --version                     Display this program's version number\n"
+"  -h --help                        Display this output\n"
+"     --info                        List object formats & architectures supported\n"
+"  -o <file>                        Place stripped output into <file>\n"
+msgstr ""
+"  -I --input-target=<nombrebfd>    Asume que el fichero de entrada está en\n"
+"                                   el formato <nombrebfd>\n"
+"  -O --output-target=<nombrebfd>   Crea un fichero de salida en el formato\n"
+"                                   <nombrebfd>\n"
+"  -F --target <nombrebfd>          Establece tanto el formato de salida como\n"
+"                                   el de entrada a <nombrebfd>\n"
+"  -p --preserve-dates              Copia las marcas de tiempo de modificación\n"
+"                                   y acceso a la salida\n"
+"  -R --remove-section=<nombre>     Borra la sección <nombre> de la salida\n"
+"  -s --strip-all                   Borra todos los símbolos y la información\n"
+"                                   de reubicación\n"
+"  -g -S -d --strip-debug           Borra todos los símbolos y secciones de\n"
+"                                   depuración\n"
+"     --strip-unneeded              Borra todos los símbolos innecesarios para\n"
+"                                   las reubicaciones\n"
+"     --only-keep-debug             Borra todo excepto la información de\n"
+"                                   depuración\n"
+"  -N --strip-symbol=<nombre>       No copia el símbolo <nombre>\n"
+"  -K --keep-symbol=<nombre>        Sólo copia el símbolo <nombre>\n"
+"  -w --wildcard                    Permite comodines en la comparación de\n"
+"                                   símbolos\n"
+"  -x --discard-all                 Borra todos los símbolos que no son globales\n"
+"  -X --discard-locals              Borra cualquier símbolo generado por\n"
+"                                   el compilador\n"
+"  -v --verbose                     Enlista todos los ficheros objeto modificados\n"
+"  -V --version                     Muestra el número de versión de este programa\n"
+"  -h --help                        Muestra esta salida\n"
+"     --info                        Muestra los formatos objeto y arquitecturas\n"
+"                                   soportados\n"
+"  -o <fichero>                     Coloca la salida limpia en el <fichero>\n"
 
-#: readelf.c:1297
+#: objcopy.c:568
 #, c-format
-msgid "<corrupt string table index: %3ld>"
-msgstr "<índice de la tabla de cadenas corrupto: %3ld>"
+msgid "unrecognized section flag `%s'"
+msgstr "opción de sección `%s' desconocida"
 
-#: readelf.c:1569
+#: objcopy.c:569
 #, c-format
-msgid "Processor Specific: %lx"
-msgstr "Específico del Procesador: %lx"
+msgid "supported flags: %s"
+msgstr "opciones con soporte: %s"
 
-#: readelf.c:1588
+#: objcopy.c:646
 #, c-format
-msgid "Operating System specific: %lx"
-msgstr "específico del Sistema Operativo: %lx"
+msgid "cannot open '%s': %s"
+msgstr "no se puede abrir '%s': %s"
 
-#: readelf.c:1592 readelf.c:2370
+#: objcopy.c:649 objcopy.c:2722
 #, c-format
-msgid "<unknown>: %lx"
-msgstr "<desconocido>: %lx"
-
-#: readelf.c:1605
-msgid "NONE (None)"
-msgstr "NONE (Ninguno)"
-
-#: readelf.c:1606
-msgid "REL (Relocatable file)"
-msgstr "REL (Fichero reubicable)"
-
-#: readelf.c:1607
-msgid "EXEC (Executable file)"
-msgstr "EXEC (Fichero ejecutable)"
-
-#: readelf.c:1608
-msgid "DYN (Shared object file)"
-msgstr "DYN (Fichero objeto compartido)"
-
-#: readelf.c:1609
-msgid "CORE (Core file)"
-msgstr "CORE (Fichero núcleo)"
+msgid "%s: fread failed"
+msgstr "%s: fread falló"
 
-#: readelf.c:1613
+#: objcopy.c:722
 #, c-format
-msgid "Processor Specific: (%x)"
-msgstr "Específico del Procesado: (%x)"
+msgid "%s:%d: Ignoring rubbish found on this line"
+msgstr "%s:%d: Se ignora la basura encontrada en esta línea"
 
-#: readelf.c:1615
+#: objcopy.c:996
 #, c-format
-msgid "OS Specific: (%x)"
-msgstr "Específico del SO: (%x)"
+msgid "%s: Multiple redefinition of symbol \"%s\""
+msgstr "%s: Redefiniciones múltiples del símbolo \"%s\""
 
-#: readelf.c:1617 readelf.c:1724 readelf.c:2554
+#: objcopy.c:1000
 #, c-format
-msgid "<unknown>: %x"
-msgstr "<desconocido>: %x"
-
-#: readelf.c:1629
-msgid "None"
-msgstr "Ninguno"
-
-#: readelf.c:2229
-msgid "Standalone App"
-msgstr "Aplicación por Sí Sola"
+msgid "%s: Symbol \"%s\" is target of more than one redefinition"
+msgstr "%s: El símbolo \"%s\" es objetivo de más de una redefinición"
 
-#: readelf.c:2232 readelf.c:2952 readelf.c:2968
+#: objcopy.c:1028
 #, c-format
-msgid "<unknown: %x>"
-msgstr "<desconocido: %x>"
+msgid "couldn't open symbol redefinition file %s (error: %s)"
+msgstr "no se puede abrir el fichero de redefinición de símbolos %s (error: %s)"
 
-#: readelf.c:2597
+#: objcopy.c:1106
 #, c-format
-msgid "Usage: readelf <option(s)> elf-file(s)\n"
-msgstr "Modo de empleo: readelf <opcion(es)> fichero(s)-elf\n"
+msgid "%s:%d: garbage found at end of line"
+msgstr "%s:%d: se encontró basura al final de la línea"
 
-#: readelf.c:2598
+#: objcopy.c:1109
 #, c-format
-msgid " Display information about the contents of ELF format files\n"
-msgstr " Muestra información sobre el contenido de los ficheros de formato ELF\n"
+msgid "%s:%d: missing new symbol name"
+msgstr "%s:%d: falta el nombre del símbolo nuevo"
 
-#: readelf.c:2599
+#: objcopy.c:1119
 #, c-format
-msgid ""
-" Options are:\n"
-"  -a --all               Equivalent to: -h -l -S -s -r -d -V -A -I\n"
-"  -h --file-header       Display the ELF file header\n"
-"  -l --program-headers   Display the program headers\n"
-"     --segments          An alias for --program-headers\n"
-"  -S --section-headers   Display the sections' header\n"
-"     --sections          An alias for --section-headers\n"
-"  -g --section-groups    Display the section groups\n"
-"  -e --headers           Equivalent to: -h -l -S\n"
-"  -s --syms              Display the symbol table\n"
-"      --symbols          An alias for --syms\n"
-"  -n --notes             Display the core notes (if present)\n"
-"  -r --relocs            Display the relocations (if present)\n"
-"  -u --unwind            Display the unwind info (if present)\n"
-"  -d --dynamic           Display the dynamic section (if present)\n"
-"  -V --version-info      Display the version sections (if present)\n"
-"  -A --arch-specific     Display architecture specific information (if any).\n"
-"  -D --use-dynamic       Use the dynamic section info when displaying symbols\n"
-"  -x --hex-dump=<number> Dump the contents of section <number>\n"
-"  -w[liaprmfFsoR] or\n"
-"  --debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n"
-"                         Display the contents of DWARF2 debug sections\n"
-msgstr ""
-" Las opciones son:\n"
-"  -a --all               Equivalente a: -h -l -S -s -r -d -V -A -I\n"
-"  -h --file-header       Muestra el encabezado del fichero ELF\n"
-"  -l --program-headers   Muestra los encabezados del programa\n"
-"     --segments          Un alias para --program-headers\n"
-"  -S --section-headers   Muestra el encabezado de las secciones\n"
-"     --sections          Un alias para --section-headers\n"
-"  -g --section-groups    Muestra los grupos de sección\n"
-"  -e --headers           Equivalente a: -h -l -S\n"
-"  -s --syms              Muestra la tabla de símbolos\n"
-"      --symbols          Un alias para --syms\n"
-"  -n --notes             Muestra las notas de núcleo (si están presentes)\n"
-"  -r --relocs            Muestra las reubicaciones (si están presentes)\n"
-"  -u --unwind            Muestra la información de desenredo (si está presente)\n"
-"  -d --dynamic           Muestra el segmento dinámico (si está presente)\n"
-"  -V --version-info      Muestra las secciones de versión (si están presentes)\n"
-"  -A --arch-specific     Muestra la información específica de la arquitectura\n"
-"                         (si hay alguna).\n"
-"  -D --use-dynamic       Usa la información de la sección dinámica cuando\n"
-"                         muestra símbolos\n"
-"  -x --hex-dump=<número> Vuelca el contenido de la sección <número>\n"
-"  -w[liaprmfFsoR] ó\n"
-"  --debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n"
-"                         Muestra el contenido de las secciones de depuración\n"
-"                         DWARF2\n"
+msgid "%s:%d: premature end of file"
+msgstr "%s:%d: fin de fichero prematuro"
 
-#: readelf.c:2622
+#: objcopy.c:1145
 #, c-format
-msgid ""
-"  -i --instruction-dump=<number>\n"
-"                         Disassemble the contents of section <number>\n"
-msgstr ""
-"  -i --instruction-dump=<número>\n"
-"                         Desensambla el contenido de la sección <número>\n"
+msgid "stat returns negative size for `%s'"
+msgstr "stat devuelve un valor negativo para `%s'"
 
-#: readelf.c:2626
+#: objcopy.c:1157
 #, c-format
-msgid ""
-"  -I --histogram         Display histogram of bucket list lengths\n"
-"  -W --wide              Allow output width to exceed 80 characters\n"
-"  -H --help              Display this information\n"
-"  -v --version           Display the version number of readelf\n"
-msgstr ""
-"  -I --histogram         Muestra un histograma de longitudes de la lista de\n"
-"                         cubetas\n"
-"  -W --wide              Permite que el ancho de la salida exceda 80 caracteres\n"
-"  -H --help              Muestra esta información\n"
-"  -v --version           Muestra el número de versión de readelf\n"
+msgid "copy from `%s' [unknown] to `%s' [unknown]\n"
+msgstr "copia de `%s' [desconocido] a `%s' [desconocido]\n"
 
-#: readelf.c:2651 readelf.c:12118
-msgid "Out of memory allocating dump request table."
-msgstr "Memoria agotada al asignar la tabla de petición de volcado."
+#: objcopy.c:1212
+msgid "Unable to change endianness of input file(s)"
+msgstr "No se puede cambiar la endianez del (los) fichero(s) de entrada"
 
-#: readelf.c:2820 readelf.c:2888
+#: objcopy.c:1221
 #, c-format
-msgid "Unrecognized debug option '%s'\n"
-msgstr "Opción de depuración '%s' no reconocida\n"
+msgid "copy from `%s' [%s] to `%s' [%s]\n"
+msgstr "copia de `%s' [%s] a `%s' [%s]\n"
 
-#: readelf.c:2922
+#: objcopy.c:1258 objcopy.c:1715
 #, c-format
-msgid "Invalid option '-%c'\n"
-msgstr "Opción '-%c' inválida\n"
-
-#: readelf.c:2936
-msgid "Nothing to do.\n"
-msgstr "Nada por hacer.\n"
-
-#: readelf.c:2948 readelf.c:2964 readelf.c:5906
-msgid "none"
-msgstr "ninguno"
+msgid "Unable to recognise the format of the input file `%s'"
+msgstr "No se puede reconocer el formato del fichero de entrada `%s'"
 
-#: readelf.c:2965
-msgid "2's complement, little endian"
-msgstr "complemento a 2, little endian"
+#: objcopy.c:1261
+#, c-format
+msgid "Warning: Output file cannot represent architecture `%s'"
+msgstr "Aviso: El fichero de salida no puede representar a la arquitectura `%s'"
 
-#: readelf.c:2966
-msgid "2's complement, big endian"
-msgstr "complemento a 2, big endian"
+#: objcopy.c:1305
+#, c-format
+msgid "can't create section `%s': %s"
+msgstr "no se puede crear la sección `%s' %s"
 
-#: readelf.c:2984
-msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
-msgstr "No es un fichero ELF - tiene los bytes mágicos erróneos en el inicio\n"
+#: objcopy.c:1356
+msgid "there are no sections to be copied!"
+msgstr "¡no hay secciones para copiar!"
 
-#: readelf.c:2992
+#: objcopy.c:1402
 #, c-format
-msgid "ELF Header:\n"
-msgstr "Encabezado ELF:\n"
+msgid "Can't fill gap after %s: %s"
+msgstr "No se puede llenar el espacio después de %s: %s"
 
-#: readelf.c:2993
+#: objcopy.c:1427
 #, c-format
-msgid "  Magic:   "
-msgstr "  Mágico:  "
+msgid "Can't add padding to %s: %s"
+msgstr "No se puede agregar relleno a %s: %s"
 
-#: readelf.c:2997
+#: objcopy.c:1594
 #, c-format
-msgid "  Class:                             %s\n"
-msgstr "  Clase:                             %s\n"
+msgid "%s: error copying private BFD data: %s"
+msgstr "%s: error al copiar los datos privados BFD: %s"
 
-#: readelf.c:2999
-#, c-format
-msgid "  Data:                              %s\n"
-msgstr "  Datos:                             %s\n"
+#: objcopy.c:1605
+msgid "unknown alternate machine code, ignored"
+msgstr "código máquina alternativo desconocido, ignorado"
 
-#: readelf.c:3001
+#: objcopy.c:1635 objcopy.c:1665
 #, c-format
-msgid "  Version:                           %d %s\n"
-msgstr "  Versión:                           %d %s\n"
+msgid "cannot mkdir %s for archive copying (error: %s)"
+msgstr "no se puede crear el directorio %s para copiar el archivo (error: %s)"
 
-#: readelf.c:3008
+#: objcopy.c:1787
 #, c-format
-msgid "  OS/ABI:                            %s\n"
-msgstr "  OS/ABI:                            %s\n"
+msgid "error: the input file '%s' is empty"
+msgstr "error: el fichero de entrada '%s' está vacío"
 
-#: readelf.c:3010
+#: objcopy.c:1889
 #, c-format
-msgid "  ABI Version:                       %d\n"
-msgstr "  Versión ABI:                       %d\n"
+msgid "Multiple renames of section %s"
+msgstr "Renombrado múltiple de la sección %s"
 
-#: readelf.c:3012
-#, c-format
-msgid "  Type:                              %s\n"
-msgstr "  Tipo:                              %s\n"
+#: objcopy.c:1940
+msgid "private header data"
+msgstr "datos de encabezado privado"
 
-#: readelf.c:3014
+#: objcopy.c:1948
 #, c-format
-msgid "  Machine:                           %s\n"
-msgstr "  Máquina:                           %s\n"
+msgid "%s: error in %s: %s"
+msgstr "%s: error en %s: %s"
 
-#: readelf.c:3016
-#, c-format
-msgid "  Version:                           0x%lx\n"
-msgstr "  Versión:                           0x%lx\n"
+#: objcopy.c:2007
+msgid "making"
+msgstr "haciendo"
 
-#: readelf.c:3019
-#, c-format
-msgid "  Entry point address:               "
-msgstr "  Dirección del punto de entrada:    "
+#: objcopy.c:2022
+msgid "size"
+msgstr "tamaño"
 
-#: readelf.c:3021
-#, c-format
-msgid ""
-"\n"
-"  Start of program headers:          "
-msgstr ""
-"\n"
-"  Inicio de encabezados de programa: "
+#: objcopy.c:2036
+msgid "vma"
+msgstr "vma"
 
-#: readelf.c:3023
-#, c-format
-msgid ""
-" (bytes into file)\n"
-"  Start of section headers:          "
-msgstr ""
-"  (bytes en el fichero)\n"
-"  Inicio de encabezados de sección:  "
+#: objcopy.c:2061
+msgid "alignment"
+msgstr "alineación"
+
+#: objcopy.c:2083
+msgid "private data"
+msgstr "datos privados"
 
-#: readelf.c:3025
+#: objcopy.c:2091
 #, c-format
-msgid " (bytes into file)\n"
-msgstr " (bytes en el fichero)\n"
+msgid "%s: section `%s': error in %s: %s"
+msgstr "%s: sección `%s': error en %s: %s"
 
-#: readelf.c:3027
+#: objcopy.c:2363
 #, c-format
-msgid "  Flags:                             0x%lx%s\n"
-msgstr "  Opciones:                          0x%lx%s\n"
+msgid "%s: can't create debugging section: %s"
+msgstr "%s: no se puede crear la sección de depuración: %s"
 
-#: readelf.c:3030
+#: objcopy.c:2377
 #, c-format
-msgid "  Size of this header:               %ld (bytes)\n"
-msgstr "  Tamaño de este encabezado:         %ld (bytes)\n"
+msgid "%s: can't set debugging section contents: %s"
+msgstr "%s: no se puede establecer el contenido de la sección de depuración: %s"
 
-#: readelf.c:3032
+#: objcopy.c:2386
 #, c-format
-msgid "  Size of program headers:           %ld (bytes)\n"
-msgstr "  Tamaño de encabezados de programa: %ld (bytes)\n"
+msgid "%s: don't know how to write debugging information for %s"
+msgstr "%s: se ignora cómo escribir la información de depuración para %s"
+
+#: objcopy.c:2561
+msgid "byte number must be non-negative"
+msgstr "el número de bytes no debe ser negativo"
+
+#: objcopy.c:2571
+msgid "interleave must be positive"
+msgstr "el espacio debe ser positivo"
 
-#: readelf.c:3034
+#: objcopy.c:2591 objcopy.c:2599
 #, c-format
-msgid "  Number of program headers:         %ld\n"
-msgstr "  Número de encabezados de programa: %ld\n"
+msgid "%s both copied and removed"
+msgstr "%s copiado y borrado"
 
-#: readelf.c:3036
+#: objcopy.c:2696 objcopy.c:2767 objcopy.c:2867 objcopy.c:2898 objcopy.c:2922
+#: objcopy.c:2926 objcopy.c:2946
 #, c-format
-msgid "  Size of section headers:           %ld (bytes)\n"
-msgstr "  Tamaño de encabezados de sección:  %ld (bytes)\n"
+msgid "bad format for %s"
+msgstr "formato erróneo para %s"
 
-#: readelf.c:3038
+#: objcopy.c:2717
 #, c-format
-msgid "  Number of section headers:         %ld"
-msgstr "  Número de encabezados de sección:  %ld"
+msgid "cannot open: %s: %s"
+msgstr "no se puede abrir: %s: %s"
 
-#: readelf.c:3043
+#: objcopy.c:2836
 #, c-format
-msgid "  Section header string table index: %ld"
-msgstr "  Índice de tabla de cadenas de sección de encabezado: %ld"
+msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
+msgstr "Aviso: truncando el relleno de espacio de 0x%s a 0x%x"
 
-#: readelf.c:3074 readelf.c:3107
-msgid "program headers"
-msgstr "encabezados de programa"
+#: objcopy.c:3000
+msgid "alternate machine code index must be positive"
+msgstr "el índice de código máquina alternativo debe ser positivo"
 
-#: readelf.c:3145 readelf.c:3446 readelf.c:3487 readelf.c:3546 readelf.c:3609
-#: readelf.c:3993 readelf.c:4017 readelf.c:5247 readelf.c:5291 readelf.c:5489
-#: readelf.c:6450 readelf.c:6464 readelf.c:11493 readelf.c:11912
-#: readelf.c:11979
-msgid "Out of memory\n"
-msgstr "Memoria agotada\n"
+#: objcopy.c:3058
+msgid "byte number must be less than interleave"
+msgstr "el número de bytes debe ser menor al espacio"
 
-#: readelf.c:3172
+#: objcopy.c:3088
 #, c-format
-msgid ""
-"\n"
-"There are no program headers in this file.\n"
-msgstr ""
-"\n"
-"No hay encabezados de programa en este fichero.\n"
+msgid "architecture %s unknown"
+msgstr "arquitectura %s desconocida"
 
-#: readelf.c:3178
-#, c-format
-msgid ""
-"\n"
-"Elf file type is %s\n"
-msgstr ""
-"\n"
-"El tipo del fichero elf es %s\n"
+#: objcopy.c:3092
+msgid "Warning: input target 'binary' required for binary architecture parameter."
+msgstr "Aviso: se requiere el objetivo de entrada 'binary' para el parámeto binario de arquitectura."
 
-#: readelf.c:3179
+#: objcopy.c:3093
 #, c-format
-msgid "Entry point "
-msgstr "Punto de entrada "
+msgid " Argument %s ignored"
+msgstr " Se ignora el argumento %s"
 
-#: readelf.c:3181
+#: objcopy.c:3099
 #, c-format
-msgid ""
-"\n"
-"There are %d program headers, starting at offset "
-msgstr ""
-"\n"
-"Hay %d encabezados de programa, empezando en el desplazamiento "
+msgid "warning: could not locate '%s'.  System error message: %s"
+msgstr "aviso: no se puede encontrar '%s'.  Mensaje de error del sistema: %s"
 
-#: readelf.c:3193 readelf.c:3195
+#: objcopy.c:3141 objcopy.c:3155
 #, c-format
-msgid ""
-"\n"
-"Program Headers:\n"
-msgstr ""
-"\n"
-"Encabezados de Programa:\n"
+msgid "%s %s%c0x%s never used"
+msgstr "%s nunca se usa %s%c0x%s"
 
-#: readelf.c:3199
+#: objdump.c:178
 #, c-format
-msgid "  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align\n"
-msgstr "  Tipo           Desplaz  DirVirt    DirFísica  TamFich TamMem  Opt Alin\n"
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr "Modo de empleo: %s <opcion(es)> <fichero(s)>\n"
 
-#: readelf.c:3202
+#: objdump.c:179
 #, c-format
-msgid "  Type           Offset   VirtAddr           PhysAddr           FileSiz  MemSiz   Flg Align\n"
-msgstr "  Tipo           Desplaz  DirVirt            DirFísica          TamFich  TamMem   Opt Alin\n"
+msgid " Display information from object <file(s)>.\n"
+msgstr "Muestra la información de <fichero(s)> objeto.\n"
 
-#: readelf.c:3206
+#: objdump.c:180
 #, c-format
-msgid "  Type           Offset             VirtAddr           PhysAddr\n"
-msgstr "  Tipo           Desplazamiento     DirVirtual         DirFísica\n"
+msgid " At least one of the following switches must be given:\n"
+msgstr "Por lo menos se requiere una de los siguientes opciones:\n"
 
-#: readelf.c:3208
+#: objdump.c:181
 #, c-format
-msgid "                 FileSiz            MemSiz              Flags  Align\n"
-msgstr "                 TamFichero         TamMemoria          Opts   Alineación\n"
-
-#: readelf.c:3301
-msgid "more than one dynamic segment\n"
-msgstr "más de un segmento dinámico\n"
-
-#: readelf.c:3312
-msgid "no .dynamic section in the dynamic segment"
-msgstr "no hay una sección .dynamic en el segmento dinámico"
-
-#: readelf.c:3321
-msgid "the .dynamic section is not contained within the dynamic segment"
-msgstr "la sección .dynamic no está contenida en el segmento dinámico"
-
-#: readelf.c:3323
-msgid "the .dynamic section is not the first section in the dynamic segment."
-msgstr "la sección .dynamic no es la primera sección en el segmento dinámico."
-
-#: readelf.c:3337
-msgid "Unable to find program interpreter name\n"
-msgstr "No se puede encontrar el nombre del programa intérprete\n"
+msgid ""
+"  -a, --archive-headers    Display archive header information\n"
+"  -f, --file-headers       Display the contents of the overall file header\n"
+"  -p, --private-headers    Display object format specific file header contents\n"
+"  -h, --[section-]headers  Display the contents of the section headers\n"
+"  -x, --all-headers        Display the contents of all headers\n"
+"  -d, --disassemble        Display assembler contents of executable sections\n"
+"  -D, --disassemble-all    Display assembler contents of all sections\n"
+"  -S, --source             Intermix source code with disassembly\n"
+"  -s, --full-contents      Display the full contents of all sections requested\n"
+"  -g, --debugging          Display debug information in object file\n"
+"  -e, --debugging-tags     Display debug information using ctags style\n"
+"  -G, --stabs              Display (in raw form) any STABS info in the file\n"
+"  -W, --dwarf              Display DWARF info in the file\n"
+"  -t, --syms               Display the contents of the symbol table(s)\n"
+"  -T, --dynamic-syms       Display the contents of the dynamic symbol table\n"
+"  -r, --reloc              Display the relocation entries in the file\n"
+"  -R, --dynamic-reloc      Display the dynamic relocation entries in the file\n"
+"  @<file>                  Read options from <file>\n"
+"  -v, --version            Display this program's version number\n"
+"  -i, --info               List object formats and architectures supported\n"
+"  -H, --help               Display this information\n"
+msgstr ""
+"  -a, --archive-headers    Muestra información de los encabezados del archivo\n"
+"  -f, --file-headers       Muestra el contenido de todos los encabezados del\n"
+"                           fichero\n"
+"  -p, --private-headers    Muestra el contenido de los encabezados del fichero\n"
+"                           específicos del formato objeto\n"
+"  -h, --[section-]headers  Muestra el contenido de los encabezados de sección\n"
+"  -x, --all-headers        Muestra el contenido de todos los encabezados\n"
+"  -d, --disassemble        Muestra el contenido de ensamblador de las secciones\n"
+"                           ejecutables\n"
+"  -D, --disassemble-all    Muestra el contenido de ensamblador de todas las\n"
+"                           secciones\n"
+"  -S, --source             Intermezclar código fuente con el desensamblado\n"
+"  -s, --full-contents      Muestra el contenido completo de todas las secciones\n"
+"                           requeridas\n"
+"  -g, --debugging          Muestra la información de depuración en el fichero\n"
+"                           objeto\n"
+"  -e, --debugging-tags     Muestra la información de depuración en estilo ctags\n"
+"  -G, --stabs              Muestra (sin formato) cualquier información de STABS\n"
+"                           en el fichero\n"
+"  -W, --dwarf              Muestra la información DWARF en el fichero\n"
+"  -t, --syms               Muestra el contenido de la(s) tabla(s) de símbolos\n"
+"  -T, --dynamic-syms       Muestra el contenido de la tabla de símbolos\n"
+"                           dinámicos\n"
+"  -r, --reloc              Muestra las entradas de reubicación en el fichero\n"
+"  -R, --dynamic-reloc      Muestra las entradas de reubicación dinámica en el\n"
+"                           fichero\n"
+"  @<fichero>               Lee opciones del <fichero>\n"
+"  -v, --version            Muestra el número de versión de este programa\n"
+"  -i, --info               Enlista los formatos objeto y las arquitecturas\n"
+"                           con soporte\n"
+"  -H, --help               Muestra esta información\n"
 
-#: readelf.c:3344
+#: objdump.c:206
 #, c-format
 msgid ""
 "\n"
-"      [Requesting program interpreter: %s]"
+" The following switches are optional:\n"
 msgstr ""
 "\n"
-"      [Solicitando el programa intérprete: %s]"
+" Los siguientes interruptores son opcionales:\n"
 
-#: readelf.c:3356
+#: objdump.c:207
 #, c-format
 msgid ""
+"  -b, --target=BFDNAME           Specify the target object format as BFDNAME\n"
+"  -m, --architecture=MACHINE     Specify the target architecture as MACHINE\n"
+"  -j, --section=NAME             Only display information for section NAME\n"
+"  -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+"  -EB --endian=big               Assume big endian format when disassembling\n"
+"  -EL --endian=little            Assume little endian format when disassembling\n"
+"      --file-start-context       Include context from start of file (with -S)\n"
+"  -I, --include=DIR              Add DIR to search list for source files\n"
+"  -l, --line-numbers             Include line numbers and filenames in output\n"
+"  -C, --demangle[=STYLE]         Decode mangled/processed symbol names\n"
+"                                  The STYLE, if specified, can be `auto', `gnu',\n"
+"                                  `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+"                                  or `gnat'\n"
+"  -w, --wide                     Format output for more than 80 columns\n"
+"  -z, --disassemble-zeroes       Do not skip blocks of zeroes when disassembling\n"
+"      --start-address=ADDR       Only process data whose address is >= ADDR\n"
+"      --stop-address=ADDR        Only process data whose address is <= ADDR\n"
+"      --prefix-addresses         Print complete address alongside disassembly\n"
+"      --[no-]show-raw-insn       Display hex alongside symbolic disassembly\n"
+"      --adjust-vma=OFFSET        Add OFFSET to all displayed section addresses\n"
+"      --special-syms             Include special symbols in symbol dumps\n"
 "\n"
-" Section to Segment mapping:\n"
 msgstr ""
-"\n"
-" mapeo de Sección a Segmento:\n"
+"  -b, --target=NOMBREBFD         Especifica el formato objeto objetivo\n"
+"                                  como NOMBREBFD\n"
+"  -m, --architecture=MÁQUINA     Especifica la arquitectura objetivo\n"
+"                                  como MÁQUINA\n"
+"  -j, --section=NOMBRE           Sólo muestra la información de\n"
+"                                  la sección NOMBRE\n"
+"  -M, --disassembler-options=OPT Pasa el texto OPT al desensamblador\n"
+"  -EB --endian=big               Asume el formato big endian al desensamblar\n"
+"  -EL --endian=little            Asume el formato little endian al desensamblar\n"
+"      --file-start-context       Incluye el contexto del inicio del fichero\n"
+"                                  (con -S)\n"
+"  -I, --include=DIR              Agrega el DIRectorio a la lista de búsqueda de\n"
+"                                  ficheros fuente\n"
+"  -l, --line-numbers             Incluye los números de línea y los nombres de fichero\n"
+"                                  en la salida\n"
+"  -C, --demangle[=ESTILO]        Decodifica los nombres de símbolo obtenidos/procesados\n"
+"                                  El ESTILO, si se especifica, puede ser `auto', 'gnu',\n"
+"                                  `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+"                                  o `gnat'\n"
+"  -w, --wide                     Da formato a la salida para más de 80 columnas\n"
+"  -z, --disassemble-zeroes       No salta los bloques de ceros al desensamblar\n"
+"      --start-address=DIR        Sólo procesa los datos cuya dirección es\n"
+"                                  >= DIR\n"
+"      --stop-address=DIR         Sólo procesa los datos cuya dirección es\n"
+"                                  <= DIR\n"
+"      --prefix-addresses         Muestra las direcciones completas a lo largo\n"
+"                                  del desensamblado\n"
+"      --[no-]show-raw-insn       Muestra en hexadecimal a lo largo\n"
+"                                  del desensamblado simbólico\n"
+"      --adjust-vma=DESPL         Agrega el DESPLazamiento a todas las direcciones\n"
+"                                  mostradas de sección\n"
+"      --special-syms             Incluye símbolos especiales en los volcados de\n"
+"                                  símbolos\n"
 
-#: readelf.c:3357
+#: objdump.c:389
 #, c-format
-msgid "  Segment Sections...\n"
-msgstr "  Segmento Secciones...\n"
-
-#: readelf.c:3408
-msgid "Cannot interpret virtual addresses without program headers.\n"
-msgstr "No se pueden interpretar direcciones virtuales sin encabezados de programa.\n"
+msgid "Sections:\n"
+msgstr "Secciones:\n"
 
-#: readelf.c:3424
+#: objdump.c:392 objdump.c:396
 #, c-format
-msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
-msgstr "La dirección virtual 0x%lx no está ubicada en ningún segmento PT_LOAD.\n"
-
-#: readelf.c:3438 readelf.c:3479
-msgid "section headers"
-msgstr "encabezados de sección"
-
-#: readelf.c:3523 readelf.c:3586
-msgid "symbols"
-msgstr "símbolos"
-
-# ¿Cómo se traduce esto? cfuga
-#: readelf.c:3533 readelf.c:3596
-msgid "symtab shndx"
-msgstr "symtab shndx"
+msgid "Idx Name          Size      VMA       LMA       File off  Algn"
+msgstr "Ind Nombre        Tamaño    VMA       LMA       Desp fich Alin"
 
-#: readelf.c:3697 readelf.c:3977
+#: objdump.c:398
 #, c-format
-msgid ""
-"\n"
-"There are no sections in this file.\n"
-msgstr ""
-"\n"
-"No hay secciones en este fichero.\n"
+msgid "Idx Name          Size      VMA               LMA               File off  Algn"
+msgstr "Ind Nombre        Tamaño    VMA               LMA               Desp fich Alin"
 
-#: readelf.c:3703
+#: objdump.c:402
 #, c-format
-msgid "There are %d section headers, starting at offset 0x%lx:\n"
-msgstr "Hay %d encabezados de sección, comenzando en el desplazamiento: 0x%lx:\n"
+msgid "  Flags"
+msgstr "  Opciones"
 
-#: readelf.c:3720 readelf.c:4079 readelf.c:4290 readelf.c:4591 readelf.c:5011
-#: readelf.c:6618
-msgid "string table"
-msgstr "tabla de cadenas"
+#: objdump.c:404
+#, c-format
+msgid "  Pg"
+msgstr "  Pg"
 
-#: readelf.c:3765
-msgid "File contains multiple dynamic symbol tables\n"
-msgstr "El fichero contiene múltiples tablas dinámicas de símbolos\n"
+#: objdump.c:447
+#, c-format
+msgid "%s: not a dynamic object"
+msgstr "%s: no es un objeto dinámico"
 
-#: readelf.c:3777
-msgid "File contains multiple dynamic string tables\n"
-msgstr "El fichero contiene múltiples tablas dinámicas de cadenas\n"
+#: objdump.c:1735
+#, c-format
+msgid "Disassembly of section %s:\n"
+msgstr "Desensamblado de la sección %s:\n"
 
-#: readelf.c:3782
-msgid "dynamic strings"
-msgstr "cadenas dinámicas"
+#: objdump.c:1897
+#, c-format
+msgid "Can't use supplied machine %s"
+msgstr "No se puede utilizar la máquina %s proporcionada"
 
-#: readelf.c:3789
-msgid "File contains multiple symtab shndx tables\n"
-msgstr "El fichero contiene múltiples tablas symtab shndx\n"
+#: objdump.c:1916
+#, c-format
+msgid "Can't disassemble for architecture %s\n"
+msgstr "No se puede desensamblar para la arquitectura %s\n"
 
-#: readelf.c:3828
+#: objdump.c:2006
 #, c-format
 msgid ""
 "\n"
-"Section Headers:\n"
+"Can't get contents for section '%s'.\n"
 msgstr ""
 "\n"
-"Encabezados de Sección:\n"
+"No se puede obtener el ontenido de la sección '%s'.\n"
 
-#: readelf.c:3830
+#: objdump.c:2143
 #, c-format
 msgid ""
+"No %s section present\n"
 "\n"
-"Section Header:\n"
 msgstr ""
+"No está presente la sección %s\n"
 "\n"
-"Encabezados de Sección:\n"
 
-#: readelf.c:3834
+#: objdump.c:2152
 #, c-format
-msgid "  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al\n"
-msgstr "  [Nr] Nombre            Tipo            Direc    Desp   Tam    ES Opt En Inf Al\n"
+msgid "Reading %s section of %s failed: %s"
+msgstr "Falló al leer la sección %s de %s: %s"
 
-#: readelf.c:3837
+#: objdump.c:2196
 #, c-format
-msgid "  [Nr] Name              Type            Address          Off    Size   ES Flg Lk Inf Al\n"
-msgstr "  [Nr] Nombre            Tipo            Direc            Desp   Tam    ES Opt En Inf Al\n"
+msgid ""
+"Contents of %s section:\n"
+"\n"
+msgstr ""
+"Contenido de la sección %s:\n"
+"\n"
 
-#: readelf.c:3840
+#: objdump.c:2323
 #, c-format
-msgid "  [Nr] Name              Type             Address           Offset\n"
-msgstr "  [Nr] Nombre            Tipo             Dirección         Despl\n"
+msgid "architecture: %s, "
+msgstr "arquitectura: %s, "
 
-#: readelf.c:3841
+#: objdump.c:2326
 #, c-format
-msgid "       Size              EntSize          Flags  Link  Info  Align\n"
-msgstr "       Tamaño            TamEnt           Opts   Enl   Info  Alin\n"
+msgid "flags 0x%08x:\n"
+msgstr "opciones 0x%08x:\n"
 
-#: readelf.c:3936
+#: objdump.c:2340
 #, c-format
 msgid ""
-"Key to Flags:\n"
-"  W (write), A (alloc), X (execute), M (merge), S (strings)\n"
-"  I (info), L (link order), G (group), x (unknown)\n"
-"  O (extra OS processing required) o (OS specific), p (processor specific)\n"
+"\n"
+"start address 0x"
 msgstr ""
-"Clave para Opciones:\n"
-"  W (escribir), A (asignar), X (ejecutar), M (mezclar), S (cadenas)\n"
-"  I (info), L (orden enlazado), G (grupo), x (desconocido)\n"
-"  O (se requiere procesamiento extra del SO) o (específico del SO)\n"
-"  p (específico del procesador)\n"
+"\n"
+"dirección de inicio 0x"
 
-#: readelf.c:3954
+#: objdump.c:2380
 #, c-format
-msgid "[<unknown>: 0x%x]"
-msgstr "[<desconocido>: 0x%x]"
+msgid "Contents of section %s:\n"
+msgstr "Contenido de la sección %s:\n"
 
-#: readelf.c:3984
-msgid "Section headers are not available!\n"
-msgstr "¡Los encabezados de sección no están disponibles!\n"
+#: objdump.c:2505
+#, c-format
+msgid "no symbols\n"
+msgstr "no hay símbolos\n"
+
+#: objdump.c:2512
+#, c-format
+msgid "no information for symbol number %ld\n"
+msgstr "no hay información para el símbolo número %ld\n"
+
+#: objdump.c:2515
+#, c-format
+msgid "could not determine the type of symbol number %ld\n"
+msgstr "no se puede determinar el tipo del símbolo número %ld\n"
 
-#: readelf.c:4008
+#: objdump.c:2788
 #, c-format
 msgid ""
 "\n"
-"There are no section groups in this file.\n"
+"%s:     file format %s\n"
 msgstr ""
 "\n"
-"No hay grupos de sección en este fichero.\n"
+"%s:     formato del fichero %s\n"
 
-#: readelf.c:4042
+#: objdump.c:2845
 #, c-format
-msgid "Bad sh_link in group section `%s'\n"
-msgstr "sh_link erróneo en la sección de grupo `%s'\n"
+msgid "%s: printing debugging information failed"
+msgstr "%s: falló al mostrar la información de depuración"
 
-#: readelf.c:4061
+#: objdump.c:2936
 #, c-format
-msgid "Bad sh_info in group section `%s'\n"
-msgstr "sh_info erróneo en la sección de grupo `%s'\n"
+msgid "In archive %s:\n"
+msgstr "En el fichero %s:\n"
 
-#: readelf.c:4085 readelf.c:6947
-msgid "section data"
-msgstr "datos de sección"
+#: objdump.c:3058
+msgid "unrecognized -E option"
+msgstr "opción -E no reconocida"
 
-#: readelf.c:4097
+#: objdump.c:3069
 #, c-format
-msgid "   [Index]    Name\n"
-msgstr "   [Índice]   Nombre\n"
+msgid "unrecognized --endian type `%s'"
+msgstr "tipo --endian `%s' no reconocido"
 
-#: readelf.c:4114
+#: rdcoff.c:196
 #, c-format
-msgid "section [%5u] already in group section [%5u]\n"
-msgstr "la sección [%5u] ya está en la sección de grupo [%5u]\n"
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr "parse_coff_type: Código de tipo 0x%x erróneo"
 
-#: readelf.c:4127
+#: rdcoff.c:404 rdcoff.c:509 rdcoff.c:697
 #, c-format
-msgid "section 0 in group section [%5u]\n"
-msgstr "sección 0 en la sección de grupo [%5u]\n"
+msgid "bfd_coff_get_syment failed: %s"
+msgstr "bfd_coff_get_syment falló: %s"
 
-#: readelf.c:4224
+#: rdcoff.c:420 rdcoff.c:717
 #, c-format
-msgid ""
-"\n"
-"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
-msgstr ""
-"\n"
-"'%s' la sección de reubicación en el desplazamiento 0x%lx contiene %ld bytes:\n"
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr "bfd_coff_get_auxent falló: %s"
 
-#: readelf.c:4236
+#: rdcoff.c:784
 #, c-format
-msgid ""
-"\n"
-"There are no dynamic relocations in this file.\n"
-msgstr ""
-"\n"
-"No hay reubicaciones dinámicas en este fichero.\n"
+msgid "%ld: .bf without preceding function"
+msgstr "%ld: .bf sin una función precedente"
 
-#: readelf.c:4260
+#: rdcoff.c:834
 #, c-format
-msgid ""
-"\n"
-"Relocation section "
-msgstr ""
-"\n"
-"La sección de reubicación "
+msgid "%ld: unexpected .ef\n"
+msgstr "%ld: .ef inesperado\n"
 
-#: readelf.c:4265 readelf.c:4666 readelf.c:4680 readelf.c:5025
+#: rddbg.c:85
 #, c-format
-msgid "'%s'"
-msgstr "'%s'"
+msgid "%s: no recognized debugging information"
+msgstr "%s: no se reconoce la información de depuración"
 
-#: readelf.c:4267 readelf.c:4682 readelf.c:5027
+#: rddbg.c:394
 #, c-format
-msgid " at offset 0x%lx contains %lu entries:\n"
-msgstr " en el desplazamiento 0x%lx contiene %lu entradas:\n"
+msgid "Last stabs entries before error:\n"
+msgstr "Últimas entradas stabs antes del error:\n"
 
-#: readelf.c:4308
+#: readelf.c:264
 #, c-format
-msgid ""
-"\n"
-"There are no relocations in this file.\n"
-msgstr ""
-"\n"
-"No hay reubicaciones en este fichero.\n"
-
-#: readelf.c:4482 readelf.c:4862
-msgid "unwind table"
-msgstr "tabla desenredada"
+msgid "Unable to seek to 0x%lx for %s\n"
+msgstr "No se puede buscar a 0x%lx para %s\n"
 
-#: readelf.c:4540 readelf.c:4959
+#: readelf.c:279
 #, c-format
-msgid "Skipping unexpected relocation type %s\n"
-msgstr "Saltando el tipo de reubicación %s inesperado\n"
+msgid "Out of memory allocating 0x%lx bytes for %s\n"
+msgstr "Memoria agotada al asignar 0x%lx bytes para %s\n"
 
-#: readelf.c:4598 readelf.c:5018 readelf.c:5069
+#: readelf.c:289
 #, c-format
-msgid ""
-"\n"
-"There are no unwind sections in this file.\n"
-msgstr ""
-"\n"
-"No hay secciones de desenredo en este fichero.\n"
+msgid "Unable to read in 0x%lx bytes of %s\n"
+msgstr "No se pueden leer 0x%lx bytes de %s\n"
 
-#: readelf.c:4661
-#, c-format
-msgid ""
-"\n"
-"Could not find unwind info section for "
-msgstr ""
-"\n"
-"No se puede encontrar la sección de información de desenredo para "
+#: readelf.c:623
+msgid "Don't know about relocations on this machine architecture\n"
+msgstr "No se conocen las reubicaciones en esta arquitectura de máquina\n"
 
-#: readelf.c:4673
-msgid "unwind info"
-msgstr "información de desenredo"
+#: readelf.c:643 readelf.c:671 readelf.c:715 readelf.c:743
+msgid "relocs"
+msgstr "reubicaciones"
 
-#: readelf.c:4675 readelf.c:5024
-#, c-format
-msgid ""
-"\n"
-"Unwind section "
-msgstr ""
-"\n"
-"Sección de desenredo "
+#: readelf.c:654 readelf.c:682 readelf.c:726 readelf.c:754
+msgid "out of memory parsing relocs"
+msgstr "memoria agotada al decodificar reubicaciones"
 
-#: readelf.c:5228 readelf.c:5272
-msgid "dynamic section"
-msgstr "sección dinámica"
+#: readelf.c:808
+#, c-format
+msgid " Offset     Info    Type                Sym. Value  Symbol's Name + Addend\n"
+msgstr " Desplaz    Info    Tipo                Val. Símbolo Nombre Símbolo + Adend\n"
 
-#: readelf.c:5349
+#: readelf.c:810
 #, c-format
-msgid ""
-"\n"
-"There is no dynamic section in this file.\n"
-msgstr ""
-"\n"
-"No hay sección dinámica en este fichero.\n"
+msgid " Offset     Info    Type            Sym.Value  Sym. Name + Addend\n"
+msgstr " Desplaz    Info    Tipo            Val.Símbolo Nom.Símbolo + Adend\n"
 
-#: readelf.c:5387
-msgid "Unable to seek to end of file!"
-msgstr "¡No se puede alcanzar el final del fichero!"
+#: readelf.c:815
+#, c-format
+msgid " Offset     Info    Type                Sym. Value  Symbol's Name\n"
+msgstr " Desplaz    Info    Tipo                Val. Símbolo Nombre Símbolo\n"
 
-#: readelf.c:5400
-msgid "Unable to determine the number of symbols to load\n"
-msgstr "No se puede determinar el número de símbolos a cargar\n"
+#: readelf.c:817
+#, c-format
+msgid " Offset     Info    Type            Sym.Value  Sym. Name\n"
+msgstr " Desplaz    Info    Tipo            Val.Símbolo Nom. Símbolo\n"
 
-#: readelf.c:5435
-msgid "Unable to seek to end of file\n"
-msgstr "No se puede alcanzar el final del fichero\n"
+#: readelf.c:825
+#, c-format
+msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name + Addend\n"
+msgstr "    Desplaz            Info             Tipo               Valor Símbolo  Nombre Símbolo + Adend\n"
 
-#: readelf.c:5442
-msgid "Unable to determine the length of the dynamic string table\n"
-msgstr "No se puede determinar la longitud de la tabla dinámica de cadenas\n"
+#: readelf.c:827
+#, c-format
+msgid "  Offset          Info           Type           Sym. Value    Sym. Name + Addend\n"
+msgstr "  Desplaz         Info           Tipo           Val. Símbolo  Nom. Símbolo + Adend\n"
 
-#: readelf.c:5447
-msgid "dynamic string table"
-msgstr "tabla de cadena dinámicas"
+#: readelf.c:832
+#, c-format
+msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name\n"
+msgstr "    Desplaz            Info             Tipo               Valor Símbolo  Nombre Símbolo\n"
 
-#: readelf.c:5482
-msgid "symbol information"
-msgstr "información del símbolo"
+#: readelf.c:834
+#, c-format
+msgid "  Offset          Info           Type           Sym. Value    Sym. Name\n"
+msgstr "  Desplaz         Info           Tipo           Val. Símbolo  Nom. Símbolo\n"
 
-#: readelf.c:5507
+#: readelf.c:1127 readelf.c:1129 readelf.c:1238 readelf.c:1240 readelf.c:1249
+#: readelf.c:1251
 #, c-format
-msgid ""
-"\n"
-"Dynamic section at offset 0x%lx contains %u entries:\n"
-msgstr ""
-"\n"
-"La sección dinámica en el desplazamiento 0x%lx contiene %u entradas:\n"
+msgid "unrecognized: %-7lx"
+msgstr "no reconocido: %-7lx"
 
-#: readelf.c:5510
+#: readelf.c:1154
 #, c-format
-msgid "  Tag        Type                         Name/Value\n"
-msgstr "  Marca      Tipo                         Nombre/Valor\n"
+msgid "<unknown addend: %lx>"
+msgstr "<agregado desconocido: %lx>"
 
-#: readelf.c:5546
+#: readelf.c:1210
 #, c-format
-msgid "Auxiliary library"
-msgstr "Biblioteca auxiliar"
+msgid "<string table index: %3ld>"
+msgstr "<índice de la tabla de cadenas: %3ld>"
 
-#: readelf.c:5550
+#: readelf.c:1212
 #, c-format
-msgid "Filter library"
-msgstr "Biblioteca de filtro"
+msgid "<corrupt string table index: %3ld>"
+msgstr "<índice de la tabla de cadenas corrupto: %3ld>"
 
-#: readelf.c:5554
+#: readelf.c:1522
 #, c-format
-msgid "Configuration file"
-msgstr "Fichero de configuración"
+msgid "Processor Specific: %lx"
+msgstr "Específico del Procesador: %lx"
 
-#: readelf.c:5558
+#: readelf.c:1543
 #, c-format
-msgid "Dependency audit library"
-msgstr "Biblioteca de auditoría de dependencias"
+msgid "Operating System specific: %lx"
+msgstr "específico del Sistema Operativo: %lx"
 
-#: readelf.c:5562
+#: readelf.c:1547 readelf.c:2349
 #, c-format
-msgid "Audit library"
-msgstr "Biblioteca de auditoría"
+msgid "<unknown>: %lx"
+msgstr "<desconocido>: %lx"
+
+#: readelf.c:1560
+msgid "NONE (None)"
+msgstr "NONE (Ninguno)"
+
+#: readelf.c:1561
+msgid "REL (Relocatable file)"
+msgstr "REL (Fichero reubicable)"
+
+#: readelf.c:1562
+msgid "EXEC (Executable file)"
+msgstr "EXEC (Fichero ejecutable)"
+
+#: readelf.c:1563
+msgid "DYN (Shared object file)"
+msgstr "DYN (Fichero objeto compartido)"
+
+#: readelf.c:1564
+msgid "CORE (Core file)"
+msgstr "CORE (Fichero núcleo)"
 
-#: readelf.c:5580 readelf.c:5608 readelf.c:5636
+#: readelf.c:1568
 #, c-format
-msgid "Flags:"
-msgstr "Opciones:"
+msgid "Processor Specific: (%x)"
+msgstr "Específico del Procesado: (%x)"
 
-#: readelf.c:5583 readelf.c:5611 readelf.c:5638
+#: readelf.c:1570
 #, c-format
-msgid " None\n"
-msgstr " Ninguna\n"
+msgid "OS Specific: (%x)"
+msgstr "Específico del SO: (%x)"
 
-#: readelf.c:5759
+#: readelf.c:1572 readelf.c:1681 readelf.c:2541
 #, c-format
-msgid "Shared library: [%s]"
-msgstr "Biblioteca compartida: [%s]"
+msgid "<unknown>: %x"
+msgstr "<desconocido>: %x"
 
-#: readelf.c:5762
-#, c-format
-msgid " program interpreter"
-msgstr " programa intérprete"
+#: readelf.c:1584
+msgid "None"
+msgstr "Ninguno"
 
-#: readelf.c:5766
-#, c-format
-msgid "Library soname: [%s]"
-msgstr "Nombre-so de la biblioteca: [%s]"
+#: readelf.c:2186
+msgid "Standalone App"
+msgstr "Aplicación por Sí Sola"
 
-#: readelf.c:5770
+#: readelf.c:2189 readelf.c:2948 readelf.c:2964
 #, c-format
-msgid "Library rpath: [%s]"
-msgstr "Rpath de la biblioteca: [%s]"
+msgid "<unknown: %x>"
+msgstr "<desconocido: %x>"
 
-#: readelf.c:5774
+#: readelf.c:2586
 #, c-format
-msgid "Library runpath: [%s]"
-msgstr "Ruta de ejecución de la biblioteca: [%s]"
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr "Modo de empleo: readelf <opcion(es)> fichero(s)-elf\n"
 
-#: readelf.c:5837
+#: readelf.c:2587
 #, c-format
-msgid "Not needed object: [%s]\n"
-msgstr "Objeto innecesario: [%s]\n"
+msgid " Display information about the contents of ELF format files\n"
+msgstr " Muestra información sobre el contenido de los ficheros de formato ELF\n"
 
-#: readelf.c:5951
+#: readelf.c:2588
 #, c-format
 msgid ""
-"\n"
-"Version definition section '%s' contains %ld entries:\n"
+" Options are:\n"
+"  -a --all               Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+"  -h --file-header       Display the ELF file header\n"
+"  -l --program-headers   Display the program headers\n"
+"     --segments          An alias for --program-headers\n"
+"  -S --section-headers   Display the sections' header\n"
+"     --sections          An alias for --section-headers\n"
+"  -g --section-groups    Display the section groups\n"
+"  -t --section-details   Display the section details\n"
+"  -e --headers           Equivalent to: -h -l -S\n"
+"  -s --syms              Display the symbol table\n"
+"      --symbols          An alias for --syms\n"
+"  -n --notes             Display the core notes (if present)\n"
+"  -r --relocs            Display the relocations (if present)\n"
+"  -u --unwind            Display the unwind info (if present)\n"
+"  -d --dynamic           Display the dynamic section (if present)\n"
+"  -V --version-info      Display the version sections (if present)\n"
+"  -A --arch-specific     Display architecture specific information (if any).\n"
+"  -D --use-dynamic       Use the dynamic section info when displaying symbols\n"
+"  -x --hex-dump=<number> Dump the contents of section <number>\n"
+"  -w[liaprmfFsoR] or\n"
+"  --debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n"
+"                         Display the contents of DWARF2 debug sections\n"
 msgstr ""
-"\n"
-"La sección de definición de la versión '%s' contiene %ld entradas:\n"
+" Las opciones son:\n"
+"  -a --all               Equivalente a: -h -l -S -s -r -d -V -A -I\n"
+"  -h --file-header       Muestra el encabezado del fichero ELF\n"
+"  -l --program-headers   Muestra los encabezados del programa\n"
+"     --segments          Un alias para --program-headers\n"
+"  -S --section-headers   Muestra el encabezado de las secciones\n"
+"     --sections          Un alias para --section-headers\n"
+"  -g --section-groups    Muestra los grupos de sección\n"
+"  -t --section-details   Muestra los detalles de sección\n"
+"  -e --headers           Equivalente a: -h -l -S\n"
+"  -s --syms              Muestra la tabla de símbolos\n"
+"      --symbols          Un alias para --syms\n"
+"  -n --notes             Muestra las notas de núcleo (si están presentes)\n"
+"  -r --relocs            Muestra las reubicaciones (si están presentes)\n"
+"  -u --unwind            Muestra la información de desenredo (si está presente)\n"
+"  -d --dynamic           Muestra el segmento dinámico (si está presente)\n"
+"  -V --version-info      Muestra las secciones de versión (si están presentes)\n"
+"  -A --arch-specific     Muestra la información específica de la arquitectura\n"
+"                         (si hay alguna).\n"
+"  -D --use-dynamic       Usa la información de la sección dinámica cuando\n"
+"                         muestra símbolos\n"
+"  -x --hex-dump=<número> Vuelca el contenido de la sección <número>\n"
+"  -w[liaprmfFsoR] ó\n"
+"  --debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n"
+"                         Muestra el contenido de las secciones de depuración\n"
+"                         DWARF2\n"
 
-#: readelf.c:5954
+#: readelf.c:2612
 #, c-format
-msgid "  Addr: 0x"
-msgstr "  Dir: 0x"
+msgid ""
+"  -i --instruction-dump=<number>\n"
+"                         Disassemble the contents of section <number>\n"
+msgstr ""
+"  -i --instruction-dump=<número>\n"
+"                         Desensambla el contenido de la sección <número>\n"
 
-#: readelf.c:5956 readelf.c:6148
+#: readelf.c:2616
 #, c-format
-msgid "  Offset: %#08lx  Link: %lx (%s)\n"
-msgstr "  Despl: %#08lx  Enl: %lx (%s)\n"
+msgid ""
+"  -I --histogram         Display histogram of bucket list lengths\n"
+"  -W --wide              Allow output width to exceed 80 characters\n"
+"  @<file>                Read options from <file>\n"
+"  -H --help              Display this information\n"
+"  -v --version           Display the version number of readelf\n"
+msgstr ""
+"  -I --histogram         Muestra un histograma de longitudes de la lista de\n"
+"                         cubetas\n"
+"  -W --wide              Permite que el ancho de la salida exceda 80 caracteres\n"
+"  @<fichero>             Lee opciones del <fichero>\n"
+"  -H --help              Muestra esta información\n"
+"  -v --version           Muestra el número de versión de readelf\n"
 
-#: readelf.c:5961
-msgid "version definition section"
-msgstr "sección de definición de versión"
+#: readelf.c:2642 readelf.c:9180
+msgid "Out of memory allocating dump request table."
+msgstr "Memoria agotada al asignar la tabla de petición de volcado."
 
-#: readelf.c:5987
+#: readelf.c:2816 readelf.c:2884
 #, c-format
-msgid "  %#06x: Rev: %d  Flags: %s"
-msgstr "  %#06x: Rev: %d  Opts: %s"
+msgid "Unrecognized debug option '%s'\n"
+msgstr "Opción de depuración '%s' no reconocida\n"
 
-#: readelf.c:5990
+#: readelf.c:2918
 #, c-format
-msgid "  Index: %d  Cnt: %d  "
-msgstr "  Ind: %d  Cnt: %d  "
+msgid "Invalid option '-%c'\n"
+msgstr "Opción '-%c' inválida\n"
 
-#: readelf.c:6001
-#, c-format
-msgid "Name: %s\n"
-msgstr "Nombre: %s\n"
+#: readelf.c:2932
+msgid "Nothing to do.\n"
+msgstr "Nada por hacer.\n"
 
-#: readelf.c:6003
-#, c-format
-msgid "Name index: %ld\n"
-msgstr "Índice de nombres: %ld\n"
+#: readelf.c:2944 readelf.c:2960 readelf.c:6169
+msgid "none"
+msgstr "ninguno"
 
-#: readelf.c:6018
-#, c-format
-msgid "  %#06x: Parent %d: %s\n"
-msgstr "  %#06x: Padre %d: %s\n"
+#: readelf.c:2961
+msgid "2's complement, little endian"
+msgstr "complemento a 2, little endian"
 
-#: readelf.c:6021
-#, c-format
-msgid "  %#06x: Parent %d, name index: %ld\n"
-msgstr "  %#06x: Padre %d, índice de nombres: %ld\n"
+#: readelf.c:2962
+msgid "2's complement, big endian"
+msgstr "complemento a 2, big endian"
 
-#: readelf.c:6040
-#, c-format
-msgid ""
-"\n"
-"Version needs section '%s' contains %ld entries:\n"
-msgstr ""
-"\n"
-"La sección de requerimientos de versión '%s' contiene %ld entradas:\n"
+#: readelf.c:2980
+msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
+msgstr "No es un fichero ELF - tiene los bytes mágicos erróneos en el inicio\n"
 
-#: readelf.c:6043
+#: readelf.c:2988
 #, c-format
-msgid " Addr: 0x"
-msgstr " Dir: 0x"
+msgid "ELF Header:\n"
+msgstr "Encabezado ELF:\n"
 
-#: readelf.c:6045
+#: readelf.c:2989
 #, c-format
-msgid "  Offset: %#08lx  Link to section: %ld (%s)\n"
-msgstr "  Despl: %#08lx  Enlace a sección: %ld (%s)\n"
+msgid "  Magic:   "
+msgstr "  Mágico:  "
 
-#: readelf.c:6050
-msgid "version need section"
-msgstr "sección de versiones necesarias"
+#: readelf.c:2993
+#, c-format
+msgid "  Class:                             %s\n"
+msgstr "  Clase:                             %s\n"
 
-#: readelf.c:6072
+#: readelf.c:2995
 #, c-format
-msgid "  %#06x: Version: %d"
-msgstr "  %#06x: Versión: %d"
+msgid "  Data:                              %s\n"
+msgstr "  Datos:                             %s\n"
 
-#: readelf.c:6075
+#: readelf.c:2997
 #, c-format
-msgid "  File: %s"
-msgstr "  Fichero: %s"
+msgid "  Version:                           %d %s\n"
+msgstr "  Versión:                           %d %s\n"
 
-#: readelf.c:6077
+#: readelf.c:3004
 #, c-format
-msgid "  File: %lx"
-msgstr "  Fichero: %lx"
+msgid "  OS/ABI:                            %s\n"
+msgstr "  OS/ABI:                            %s\n"
 
-#: readelf.c:6079
+#: readelf.c:3006
 #, c-format
-msgid "  Cnt: %d\n"
-msgstr "  Cnt: %d\n"
+msgid "  ABI Version:                       %d\n"
+msgstr "  Versión ABI:                       %d\n"
 
-#: readelf.c:6097
+#: readelf.c:3008
 #, c-format
-msgid "  %#06x:   Name: %s"
-msgstr "  %#06x:   Nombre: %s"
+msgid "  Type:                              %s\n"
+msgstr "  Tipo:                              %s\n"
 
-#: readelf.c:6100
+#: readelf.c:3010
 #, c-format
-msgid "  %#06x:   Name index: %lx"
-msgstr "  %#06x:   Índice de nombres: %lx"
+msgid "  Machine:                           %s\n"
+msgstr "  Máquina:                           %s\n"
 
-#: readelf.c:6103
+#: readelf.c:3012
 #, c-format
-msgid "  Flags: %s  Version: %d\n"
-msgstr "  Opts: %s  Versión: %d\n"
+msgid "  Version:                           0x%lx\n"
+msgstr "  Versión:                           0x%lx\n"
 
-#: readelf.c:6139
-msgid "version string table"
-msgstr "versión de tabla de cadenas"
+#: readelf.c:3015
+#, c-format
+msgid "  Entry point address:               "
+msgstr "  Dirección del punto de entrada:    "
 
-#: readelf.c:6143
+#: readelf.c:3017
 #, c-format
 msgid ""
 "\n"
-"Version symbols section '%s' contains %d entries:\n"
+"  Start of program headers:          "
 msgstr ""
 "\n"
-"La sección de símbolos de versión '%s' contiene %d entradas:\n"
-
-#: readelf.c:6146
-#, c-format
-msgid " Addr: "
-msgstr " Dir: "
-
-#: readelf.c:6156
-msgid "version symbol data"
-msgstr "datos de símbolos de versión"
-
-#: readelf.c:6183
-msgid "   0 (*local*)    "
-msgstr "   0 (*local*)    "
-
-#: readelf.c:6187
-msgid "   1 (*global*)   "
-msgstr "   1 (*global*)   "
-
-#: readelf.c:6223 readelf.c:6677
-msgid "version need"
-msgstr "la versión necesita"
-
-#: readelf.c:6233
-msgid "version need aux (2)"
-msgstr "la versión necesita aux (2)"
-
-#: readelf.c:6275 readelf.c:6740
-msgid "version def"
-msgstr "versión definida"
-
-#: readelf.c:6294 readelf.c:6755
-msgid "version def aux"
-msgstr "versión definida auxiliar"
+"  Inicio de encabezados de programa: "
 
-#: readelf.c:6325
+#: readelf.c:3019
 #, c-format
 msgid ""
-"\n"
-"No version information found in this file.\n"
+" (bytes into file)\n"
+"  Start of section headers:          "
 msgstr ""
-"\n"
-"No se encontró información de versión en este fichero.\n"
-
-#: readelf.c:6456
-msgid "Unable to read in dynamic data\n"
-msgstr "No se pueden leer los datos dinámicos\n"
-
-#: readelf.c:6509
-msgid "Unable to seek to start of dynamic information"
-msgstr "No se puede encontrar el inicio de la información dinámica"
+"  (bytes en el fichero)\n"
+"  Inicio de encabezados de sección:  "
 
-#: readelf.c:6515
-msgid "Failed to read in number of buckets\n"
-msgstr "Falló la lectura en el número de cubos\n"
+#: readelf.c:3021
+#, c-format
+msgid " (bytes into file)\n"
+msgstr " (bytes en el fichero)\n"
 
-#: readelf.c:6521
-msgid "Failed to read in number of chains\n"
-msgstr "Falló la lectura en el número de cadenas\n"
+#: readelf.c:3023
+#, c-format
+msgid "  Flags:                             0x%lx%s\n"
+msgstr "  Opciones:                          0x%lx%s\n"
 
-#: readelf.c:6541
+#: readelf.c:3026
 #, c-format
-msgid ""
-"\n"
-"Symbol table for image:\n"
-msgstr ""
-"\n"
-"Tabla de símbolos por imagen:\n"
+msgid "  Size of this header:               %ld (bytes)\n"
+msgstr "  Tamaño de este encabezado:         %ld (bytes)\n"
 
-#: readelf.c:6543
+#: readelf.c:3028
 #, c-format
-msgid "  Num Buc:    Value  Size   Type   Bind Vis      Ndx Name\n"
-msgstr "  Num Cub:    Valor  Tamaño Tipo   Uni  Vis      Nombre Ind\n"
+msgid "  Size of program headers:           %ld (bytes)\n"
+msgstr "  Tamaño de encabezados de programa: %ld (bytes)\n"
 
-#: readelf.c:6545
+#: readelf.c:3030
 #, c-format
-msgid "  Num Buc:    Value          Size   Type   Bind Vis      Ndx Name\n"
-msgstr "  Num Cub:    Valor          Tamaño Typo   Uni  Vis      Nombre Ind\n"
+msgid "  Number of program headers:         %ld\n"
+msgstr "  Número de encabezados de programa: %ld\n"
 
-#: readelf.c:6597
+#: readelf.c:3032
 #, c-format
-msgid ""
-"\n"
-"Symbol table '%s' contains %lu entries:\n"
-msgstr ""
-"\n"
-"La tabla de símbolos '%s' contiene %lu entradas:\n"
+msgid "  Size of section headers:           %ld (bytes)\n"
+msgstr "  Tamaño de encabezados de sección:  %ld (bytes)\n"
 
-#: readelf.c:6601
+#: readelf.c:3034
 #, c-format
-msgid "   Num:    Value  Size Type    Bind   Vis      Ndx Name\n"
-msgstr "   Num:    Valor  Tam  Tipo    Unión  Vis      Nombre Ind\n"
+msgid "  Number of section headers:         %ld"
+msgstr "  Número de encabezados de sección:  %ld"
 
-#: readelf.c:6603
+#: readelf.c:3039
 #, c-format
-msgid "   Num:    Value          Size Type    Bind   Vis      Ndx Name\n"
-msgstr "   Num:    Valor          Tam  Tipo    Unión  Vis      Nombre Ind\n"
-
-#: readelf.c:6649
-msgid "version data"
-msgstr "datos de versión"
+msgid "  Section header string table index: %ld"
+msgstr "  Índice de tabla de cadenas de sección de encabezado: %ld"
 
-#: readelf.c:6690
-msgid "version need aux (3)"
-msgstr "la versión necesita aux (3)"
+#: readelf.c:3070 readelf.c:3103
+msgid "program headers"
+msgstr "encabezados de programa"
 
-#: readelf.c:6715
-msgid "bad dynamic symbol"
-msgstr "símbolo dinámico erróneo"
+#: readelf.c:3141 readelf.c:3440 readelf.c:3481 readelf.c:3540 readelf.c:3603
+#: readelf.c:4208 readelf.c:4232 readelf.c:5510 readelf.c:5554 readelf.c:5752
+#: readelf.c:6734 readelf.c:6748 readelf.c:8564 readelf.c:8972 readelf.c:9039
+msgid "Out of memory\n"
+msgstr "Memoria agotada\n"
 
-#: readelf.c:6778
+#: readelf.c:3168
 #, c-format
 msgid ""
 "\n"
-"Dynamic symbol information is not available for displaying symbols.\n"
+"There are no program headers in this file.\n"
 msgstr ""
 "\n"
-"La información de símbolos dinámicos no está disponible para mostrar los símbolos.\n"
+"No hay encabezados de programa en este fichero.\n"
 
-#: readelf.c:6790
+#: readelf.c:3174
 #, c-format
 msgid ""
 "\n"
-"Histogram for bucket list length (total of %lu buckets):\n"
+"Elf file type is %s\n"
 msgstr ""
 "\n"
-"Histograma para la longitud de lista de cubos (total de %lu cubos):\n"
+"El tipo del fichero elf es %s\n"
 
-#: readelf.c:6792
+#: readelf.c:3175
 #, c-format
-msgid " Length  Number     %% of total  Coverage\n"
-msgstr " Long    Número     %% del total Cobertura\n"
-
-#: readelf.c:6797 readelf.c:6813 readelf.c:10967 readelf.c:11159
-msgid "Out of memory"
-msgstr "Memoria agotada"
+msgid "Entry point "
+msgstr "Punto de entrada "
 
-#: readelf.c:6862
+#: readelf.c:3177
 #, c-format
 msgid ""
 "\n"
-"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+"There are %d program headers, starting at offset "
 msgstr ""
 "\n"
-"El segmento de información dinámica en el desplazamiento 0x%lx contiene %d entradas:\n"
-
-#: readelf.c:6865
-#, c-format
-msgid " Num: Name                           BoundTo     Flags\n"
-msgstr " Num: Nombre                         EnlaceA     Opts\n"
+"Hay %d encabezados de programa, empezando en el desplazamiento "
 
-#: readelf.c:6917
+#: readelf.c:3189 readelf.c:3191
 #, c-format
 msgid ""
 "\n"
-"Assembly dump of section %s\n"
+"Program Headers:\n"
 msgstr ""
 "\n"
-"Volcado ensamblador de la sección %s\n"
+"Encabezados de Programa:\n"
 
-#: readelf.c:6938
+#: readelf.c:3195
 #, c-format
-msgid ""
-"\n"
-"Section '%s' has no data to dump.\n"
-msgstr ""
-"\n"
-"La sección '%s' no tiene datos para volcar.\n"
+msgid "  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align\n"
+msgstr "  Tipo           Desplaz  DirVirt    DirFísica  TamFich TamMem  Opt Alin\n"
 
-#: readelf.c:6943
+#: readelf.c:3198
 #, c-format
-msgid ""
-"\n"
-"Hex dump of section '%s':\n"
-msgstr ""
-"\n"
-"Volcado hexadecimal de la sección '%s':\n"
-
-#: readelf.c:7090
-msgid "badly formed extended line op encountered!\n"
-msgstr "¡se encontró un operador extendido de línea mal formado!\n"
+msgid "  Type           Offset   VirtAddr           PhysAddr           FileSiz  MemSiz   Flg Align\n"
+msgstr "  Tipo           Desplaz  DirVirt            DirFísica          TamFich  TamMem   Opt Alin\n"
 
-#: readelf.c:7097
+#: readelf.c:3202
 #, c-format
-msgid "  Extended opcode %d: "
-msgstr "  Código de operación extendido %d: "
+msgid "  Type           Offset             VirtAddr           PhysAddr\n"
+msgstr "  Tipo           Desplazamiento     DirVirtual         DirFísica\n"
 
-#: readelf.c:7102
+#: readelf.c:3204
 #, c-format
-msgid ""
-"End of Sequence\n"
-"\n"
-msgstr ""
-"Fin de la Secuencia\n"
-"\n"
+msgid "                 FileSiz            MemSiz              Flags  Align\n"
+msgstr "                 TamFichero         TamMemoria          Opts   Alineación\n"
 
-#: readelf.c:7108
-#, c-format
-msgid "set Address to 0x%lx\n"
-msgstr "establecer la Dirección a 0x%lx\n"
+#: readelf.c:3297
+msgid "more than one dynamic segment\n"
+msgstr "más de un segmento dinámico\n"
 
-#: readelf.c:7113
-#, c-format
-msgid "  define new File Table entry\n"
-msgstr "  definir la nueva entrada en la Tabla de Ficheros\n"
+#: readelf.c:3308
+msgid "no .dynamic section in the dynamic segment"
+msgstr "no hay una sección .dynamic en el segmento dinámico"
 
-#: readelf.c:7114 readelf.c:9032
-#, c-format
-msgid "  Entry\tDir\tTime\tSize\tName\n"
-msgstr "  Entr\tDir\tHora\tTam\tNombre\n"
+#: readelf.c:3317
+msgid "the .dynamic section is not contained within the dynamic segment"
+msgstr "la sección .dynamic no está contenida en el segmento dinámico"
 
-#: readelf.c:7116
-#, c-format
-msgid "   %d\t"
-msgstr "   %d\t"
+#: readelf.c:3319
+msgid "the .dynamic section is not the first section in the dynamic segment."
+msgstr "la sección .dynamic no es la primera sección en el segmento dinámico."
 
-#: readelf.c:7119 readelf.c:7121 readelf.c:7123 readelf.c:9044 readelf.c:9046
-#: readelf.c:9048
-#, c-format
-msgid "%lu\t"
-msgstr "%lu\t"
+#: readelf.c:3333
+msgid "Unable to find program interpreter name\n"
+msgstr "No se puede encontrar el nombre del programa intérprete\n"
 
-#: readelf.c:7124
+#: readelf.c:3340
 #, c-format
 msgid ""
-"%s\n"
 "\n"
+"      [Requesting program interpreter: %s]"
 msgstr ""
-"%s\n"
 "\n"
+"      [Solicitando el programa intérprete: %s]"
 
-#: readelf.c:7128
-#, c-format
-msgid "UNKNOWN: length %d\n"
-msgstr "UNKNOWN: longitud %d\n"
-
-#: readelf.c:7155
-msgid "debug_str section data"
-msgstr "sección de datos debug_str"
-
-#: readelf.c:7173
-msgid "<no .debug_str section>"
-msgstr "<no hay sección .debug_str>"
-
-#: readelf.c:7176
-msgid "<offset is too big>"
-msgstr "<desplazamiento demasiado grande>"
-
-#: readelf.c:7201
-msgid "debug_loc section data"
-msgstr "sección de datos debug_loc"
-
-#: readelf.c:7235
-msgid "debug_range section data"
-msgstr "sección de datos debug_range"
-
-#: readelf.c:7307
-#, c-format
-msgid "%s: skipping unexpected symbol type %s in relocation in section .rela%s\n"
-msgstr "%s: saltando el tipo de símbolo %s inesperado en la reubicación en la sección .rela%s\n"
-
-#: readelf.c:7321
-#, c-format
-msgid "skipping unexpected symbol type %s in relocation in section .rela.%s\n"
-msgstr "Saltando el tipo de símbolo %s inesperado en la reubicación en la sección .rela.%s\n"
-
-#: readelf.c:7565
-#, c-format
-msgid "Unknown TAG value: %lx"
-msgstr "Valor TAG desconocido: %lx"
-
-#: readelf.c:7601
-#, c-format
-msgid "Unknown FORM value: %lx"
-msgstr "Valor FORM desconocido: %lx"
-
-#: readelf.c:7610
-#, c-format
-msgid " %lu byte block: "
-msgstr " bloque de bytes %lu: "
-
-#: readelf.c:7944
+#: readelf.c:3352
 #, c-format
-msgid "(User defined location op)"
-msgstr "(Operador de ubicación definido por el usuario)"
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr ""
+"\n"
+" mapeo de Sección a Segmento:\n"
 
-#: readelf.c:7946
+#: readelf.c:3353
 #, c-format
-msgid "(Unknown location op)"
-msgstr "(Operador de ubicación desconocido)"
-
-#: readelf.c:8015
-msgid "Internal error: DWARF version is not 2 or 3.\n"
-msgstr "Error interno: la versión DWARF no es 2 ó 3.\n"
+msgid "  Segment Sections...\n"
+msgstr "  Segmento Secciones...\n"
 
-#: readelf.c:8113
-msgid "DW_FORM_data8 is unsupported when sizeof (unsigned long) != 8\n"
-msgstr "DW_FORM_data8 no tiene soporte cuando sizeof (unsigned long) != 8\n"
+#: readelf.c:3402
+msgid "Cannot interpret virtual addresses without program headers.\n"
+msgstr "No se pueden interpretar direcciones virtuales sin encabezados de programa.\n"
 
-#: readelf.c:8162
+#: readelf.c:3418
 #, c-format
-msgid " (indirect string, offset: 0x%lx): %s"
-msgstr " (cadena indirecta, desplazamiento 0x%lx): %s"
+msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
+msgstr "La dirección virtual 0x%lx no está ubicada en ningún segmento PT_LOAD.\n"
 
-#: readelf.c:8171
-#, c-format
-msgid "Unrecognized form: %d\n"
-msgstr "Form no reconocido: %d\n"
+#: readelf.c:3432 readelf.c:3473
+msgid "section headers"
+msgstr "encabezados de sección"
 
-#: readelf.c:8256
-#, c-format
-msgid "(not inlined)"
-msgstr "(no es inlined)"
+#: readelf.c:3517 readelf.c:3580
+msgid "symbols"
+msgstr "símbolos"
 
-#: readelf.c:8259
-#, c-format
-msgid "(inlined)"
-msgstr "(inlined)"
+# ¿Cómo se traduce esto? cfuga
+#: readelf.c:3527 readelf.c:3590
+msgid "symtab shndx"
+msgstr "symtab shndx"
 
-#: readelf.c:8262
+#: readelf.c:3817 readelf.c:4192
 #, c-format
-msgid "(declared as inline but ignored)"
-msgstr "(declarado como inline pero ignorado)"
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr ""
+"\n"
+"No hay secciones en este fichero.\n"
 
-#: readelf.c:8265
+#: readelf.c:3823
 #, c-format
-msgid "(declared as inline and inlined)"
-msgstr "(declarado como inline y es inline)"
+msgid "There are %d section headers, starting at offset 0x%lx:\n"
+msgstr "Hay %d encabezados de sección, comenzando en el desplazamiento: 0x%lx:\n"
 
-#: readelf.c:8268
-#, c-format
-msgid "  (Unknown inline attribute value: %lx)"
-msgstr "  (Valor desconocido de atributo inline: %lx)"
+#: readelf.c:3842 readelf.c:4309 readelf.c:4544 readelf.c:4852 readelf.c:5267
+#: readelf.c:6906
+msgid "string table"
+msgstr "tabla de cadenas"
 
-#: readelf.c:8413 readelf.c:9537
+#: readelf.c:3881
 #, c-format
-msgid " [without DW_AT_frame_base]"
-msgstr " [sin DW_AT_frame_base]"
+msgid "Section %d has invalid sh_entsize %lx (expected %lx)\n"
+msgstr "La sección %d tiene un sh_entsize %lx inválido (se esperaba %lx)\n"
 
-#: readelf.c:8416
-#, c-format
-msgid "(location list)"
-msgstr "(lista de ubicación)"
+#: readelf.c:3901
+msgid "File contains multiple dynamic symbol tables\n"
+msgstr "El fichero contiene múltiples tablas dinámicas de símbolos\n"
 
-#: readelf.c:8534
-#, c-format
-msgid "Unknown AT value: %lx"
-msgstr "Valor AT desconocido: %lx"
+#: readelf.c:3914
+msgid "File contains multiple dynamic string tables\n"
+msgstr "El fichero contiene múltiples tablas dinámicas de cadenas\n"
 
-#: readelf.c:8602
-msgid "No comp units in .debug_info section ?"
-msgstr "¿ No hay unidades de compilación en la sección .debug_info ?"
+#: readelf.c:3919
+msgid "dynamic strings"
+msgstr "cadenas dinámicas"
 
-#: readelf.c:8611
-#, c-format
-msgid "Not enough memory for a debug info array of %u entries"
-msgstr "No hay suficiente memoria para una matriz de información de depuración de %u entradas"
+#: readelf.c:3926
+msgid "File contains multiple symtab shndx tables\n"
+msgstr "El fichero contiene múltiples tablas symtab shndx\n"
 
-#: readelf.c:8619 readelf.c:9630
+#: readelf.c:3973
 #, c-format
 msgid ""
-"The section %s contains:\n"
 "\n"
+"Section Headers:\n"
 msgstr ""
-"La sección %s contiene:\n"
 "\n"
+"Encabezados de Sección:\n"
 
-#: readelf.c:8693
-#, c-format
-msgid "  Compilation Unit @ %lx:\n"
-msgstr "  Unidad de Compilación @ %lx:\n"
-
-#: readelf.c:8694
+#: readelf.c:3975
 #, c-format
-msgid "   Length:        %ld\n"
-msgstr "   Longitud:      %ld\n"
+msgid ""
+"\n"
+"Section Header:\n"
+msgstr ""
+"\n"
+"Encabezados de Sección:\n"
 
-#: readelf.c:8695
+#: readelf.c:3981 readelf.c:3992 readelf.c:4003
 #, c-format
-msgid "   Version:       %d\n"
-msgstr "   Versión:       %d\n"
+msgid "  [Nr] Name\n"
+msgstr "  [Nr] Nombre\n"
 
-#: readelf.c:8696
+#: readelf.c:3982
 #, c-format
-msgid "   Abbrev Offset: %ld\n"
-msgstr "   Desplaz Abrev: %ld\n"
+msgid "       Type            Addr     Off    Size   ES   Lk Inf Al\n"
+msgstr "       Tipo            Direc    Desp   Tam    ES   En Inf Al\n"
 
-#: readelf.c:8697
+#: readelf.c:3986
 #, c-format
-msgid "   Pointer Size:  %d\n"
-msgstr "   Tamaño de Puntero: %d\n"
+msgid "  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al\n"
+msgstr "  [Nr] Nombre            Tipo            Direc    Desp   Tam    ES Opt En Inf Al\n"
 
-#: readelf.c:8702
-msgid "Only version 2 and 3 DWARF debug information is currently supported.\n"
-msgstr "Sólo la información de depuración DWARF versión 2 y 3 tiene soporte actualmente.\n"
+#: readelf.c:3993
+#, c-format
+msgid "       Type            Address          Off    Size   ES   Lk Inf Al\n"
+msgstr "       Tipo            Direc            Desp   Tam    ES   En Inf Al\n"
 
-#: readelf.c:8717
-msgid "Unable to locate .debug_abbrev section!\n"
-msgstr "¡No se puede localizar la sección .debug_abbrev!\n"
+#: readelf.c:3997
+#, c-format
+msgid "  [Nr] Name              Type            Address          Off    Size   ES Flg Lk Inf Al\n"
+msgstr "  [Nr] Nombre            Tipo            Direc            Desp   Tam    ES Opt En Inf Al\n"
 
-#: readelf.c:8722
-msgid "debug_abbrev section data"
-msgstr "sección de datos debug_abbrev"
+#: readelf.c:4004
+#, c-format
+msgid "       Type              Address          Offset            Link\n"
+msgstr "       Tipo             Dirección         Despl             Enl\n"
 
-#: readelf.c:8759
+#: readelf.c:4005
 #, c-format
-msgid "Unable to locate entry %lu in the abbreviation table\n"
-msgstr "No se puede localizar la entrada %lu en la tabla de abreviaciones\n"
+msgid "       Size              EntSize          Info              Align\n"
+msgstr "       Tamaño            TamEnt           Info              Alin\n"
 
-#: readelf.c:8765
+#: readelf.c:4009
 #, c-format
-msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n"
-msgstr " <%d><%lx>: Número de Abrev: %lu (%s)\n"
+msgid "  [Nr] Name              Type             Address           Offset\n"
+msgstr "  [Nr] Nombre            Tipo             Dirección         Despl\n"
 
-#: readelf.c:8838
+#: readelf.c:4010
 #, c-format
-msgid "%s section needs a populated .debug_info section\n"
-msgstr "la sección %s necesita una sección .debug_info llena\n"
+msgid "       Size              EntSize          Flags  Link  Info  Align\n"
+msgstr "       Tamaño            TamEnt           Opts   Enl   Info  Alin\n"
 
-#: readelf.c:8845
+#: readelf.c:4015
 #, c-format
-msgid "%s section has more comp units than .debug_info section\n"
-msgstr "la sección %s tiene más unidades de compilación que la sección .debug_info\n"
+msgid "       Flags\n"
+msgstr "       Opciones\n"
 
-#: readelf.c:8847
+#: readelf.c:4150
 #, c-format
 msgid ""
-"assuming that the pointer size is %d, from the last comp unit in .debug_info\n"
-"\n"
-msgstr "asumiendo que el tamaño del puntero es %d, de la última unidad de compilación en .debug_info\n"
+"Key to Flags:\n"
+"  W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+"  I (info), L (link order), G (group), x (unknown)\n"
+"  O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"Clave para Opciones:\n"
+"  W (escribir), A (asignar), X (ejecutar), M (mezclar), S (cadenas)\n"
+"  I (info), L (orden enlazado), G (grupo), x (desconocido)\n"
+"  O (se requiere procesamiento extra del SO) o (específico del SO)\n"
+"  p (específico del procesador)\n"
+
+#: readelf.c:4168
+#, c-format
+msgid "[<unknown>: 0x%x]"
+msgstr "[<desconocido>: 0x%x]"
 
-#: readelf.c:8891
-msgid "extracting information from .debug_info section"
-msgstr "extrayendo la información de la sección .debug_info"
+#: readelf.c:4199
+msgid "Section headers are not available!\n"
+msgstr "¡Los encabezados de sección no están disponibles!\n"
 
-#: readelf.c:8909
+#: readelf.c:4223
 #, c-format
 msgid ""
 "\n"
-"Dump of debug contents of section %s:\n"
-"\n"
+"There are no section groups in this file.\n"
 msgstr ""
 "\n"
-"Volcado del contenido de depuración de la sección %s:\n"
-"\n"
+"No hay grupos de sección en este fichero.\n"
 
-#: readelf.c:8948
-msgid "The line info appears to be corrupt - the section is too small\n"
-msgstr "La información de línea parece estar corrupta - esta sección es demasiado pequeña\n"
+#: readelf.c:4259
+#, c-format
+msgid "Bad sh_link in group section `%s'\n"
+msgstr "sh_link erróneo en la sección de grupo `%s'\n"
 
-#: readelf.c:8957
-msgid "Only DWARF version 2 and 3 line info is currently supported.\n"
-msgstr "Solamente la información de línea de DWARF versión 2 y 3 tiene soporte actualmente.\n"
+#: readelf.c:4278
+#, c-format
+msgid "Bad sh_info in group section `%s'\n"
+msgstr "sh_info erróneo en la sección de grupo `%s'\n"
+
+#: readelf.c:4317 readelf.c:7243
+msgid "section data"
+msgstr "datos de sección"
 
-#: readelf.c:8984
+#: readelf.c:4329
 #, c-format
-msgid "  Length:                      %ld\n"
-msgstr "  Longitud:                    %ld\n"
+msgid "   [Index]    Name\n"
+msgstr "   [Índice]   Nombre\n"
 
-#: readelf.c:8985
+#: readelf.c:4343
 #, c-format
-msgid "  DWARF Version:               %d\n"
-msgstr "  Versión DWARF:               %d\n"
+msgid "section [%5u] in group section [%5u] > maximum section [%5u]\n"
+msgstr "la sección [%5u] en la sección de grupo [%5u] > máximo de sección [%5u]\n"
 
-#: readelf.c:8986
+#: readelf.c:4349
 #, c-format
-msgid "  Prologue Length:             %d\n"
-msgstr "  Longitud del Prólogo:        %d\n"
+msgid "invalid section [%5u] in group section [%5u]\n"
+msgstr "sección inválida [%5u] en la sección de grupo [%5u]\n"
 
-#: readelf.c:8987
+#: readelf.c:4359
 #, c-format
-msgid "  Minimum Instruction Length:  %d\n"
-msgstr "  Longitud Mínima Instrucción: %d\n"
+msgid "section [%5u] in group section [%5u] already in group section [%5u]\n"
+msgstr "la sección [%5u] en la sección de grupo [%5u] ya está en la sección de grupo [%5u]\n"
 
-#: readelf.c:8988
+#: readelf.c:4372
 #, c-format
-msgid "  Initial value of 'is_stmt':  %d\n"
-msgstr "  Valor inicial de 'is_stmt':  %d\n"
+msgid "section 0 in group section [%5u]\n"
+msgstr "sección 0 en la sección de grupo [%5u]\n"
 
-#: readelf.c:8989
+#: readelf.c:4468
 #, c-format
-msgid "  Line Base:                   %d\n"
-msgstr "  Base Línea:                  %d\n"
+msgid ""
+"\n"
+"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr ""
+"\n"
+"'%s' la sección de reubicación en el desplazamiento 0x%lx contiene %ld bytes:\n"
 
-#: readelf.c:8990
+#: readelf.c:4480
 #, c-format
-msgid "  Line Range:                  %d\n"
-msgstr "  Rango Lìnea:                 %d\n"
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr ""
+"\n"
+"No hay reubicaciones dinámicas en este fichero.\n"
 
-#: readelf.c:8991
+#: readelf.c:4504
 #, c-format
-msgid "  Opcode Base:                 %d\n"
-msgstr "  Base de Código de Operación: %d\n"
+msgid ""
+"\n"
+"Relocation section "
+msgstr ""
+"\n"
+"La sección de reubicación "
+
+#: readelf.c:4509 readelf.c:4928 readelf.c:4942 readelf.c:5282
+#, c-format
+msgid "'%s'"
+msgstr "'%s'"
 
-#: readelf.c:8992
+#: readelf.c:4511 readelf.c:4944 readelf.c:5284
 #, c-format
-msgid "  (Pointer size:               %u)\n"
-msgstr "  (Tamaño del puntero:         %u\n"
+msgid " at offset 0x%lx contains %lu entries:\n"
+msgstr " en el desplazamiento 0x%lx contiene %lu entradas:\n"
 
-#: readelf.c:9001
+#: readelf.c:4563
 #, c-format
 msgid ""
 "\n"
-" Opcodes:\n"
+"There are no relocations in this file.\n"
 msgstr ""
 "\n"
-" Códigos de operación:\n"
+"No hay reubicaciones en este fichero.\n"
+
+#: readelf.c:4742 readelf.c:5124
+msgid "unwind table"
+msgstr "tabla desenredada"
 
-#: readelf.c:9004
+#: readelf.c:4801 readelf.c:5214
 #, c-format
-msgid "  Opcode %d has %d args\n"
-msgstr "  El código de operación %d tiene %d argumentos\n"
+msgid "Skipping unexpected relocation type %s\n"
+msgstr "Saltando el tipo de reubicación %s inesperado\n"
 
-#: readelf.c:9010
+#: readelf.c:4860 readelf.c:5275 readelf.c:5326
 #, c-format
 msgid ""
 "\n"
-" The Directory Table is empty.\n"
+"There are no unwind sections in this file.\n"
 msgstr ""
 "\n"
-" La Tabla de Directorios está vacía.\n"
+"No hay secciones de desenredo en este fichero.\n"
 
-#: readelf.c:9013
+#: readelf.c:4923
 #, c-format
 msgid ""
 "\n"
-" The Directory Table:\n"
+"Could not find unwind info section for "
 msgstr ""
 "\n"
-" La Tabla de Directorios:\n"
+"No se puede encontrar la sección de información de desenredo para "
 
-#: readelf.c:9017
-#, c-format
-msgid "  %s\n"
-msgstr "  %s\n"
+#: readelf.c:4935
+msgid "unwind info"
+msgstr "información de desenredo"
 
-#: readelf.c:9028
+#: readelf.c:4937 readelf.c:5281
 #, c-format
 msgid ""
 "\n"
-" The File Name Table is empty.\n"
+"Unwind section "
 msgstr ""
 "\n"
-" La Tabla de Nombres de Fichero está vacía.\n"
+"Sección de desenredo "
 
-#: readelf.c:9031
+#: readelf.c:5491 readelf.c:5535
+msgid "dynamic section"
+msgstr "sección dinámica"
+
+#: readelf.c:5612
 #, c-format
 msgid ""
 "\n"
-" The File Name Table:\n"
+"There is no dynamic section in this file.\n"
 msgstr ""
 "\n"
-" La Tabla de Nombres de Fichero:\n"
+"No hay sección dinámica en este fichero.\n"
 
-#: readelf.c:9039
-#, c-format
-msgid "  %d\t"
-msgstr "  %d\t"
+#: readelf.c:5650
+msgid "Unable to seek to end of file!"
+msgstr "¡No se puede alcanzar el final del fichero!"
 
-#: readelf.c:9050
-#, c-format
-msgid "%s\n"
-msgstr "%s\n"
+#: readelf.c:5663
+msgid "Unable to determine the number of symbols to load\n"
+msgstr "No se puede determinar el número de símbolos a cargar\n"
 
-#. Now display the statements.
-#: readelf.c:9058
+#: readelf.c:5698
+msgid "Unable to seek to end of file\n"
+msgstr "No se puede alcanzar el final del fichero\n"
+
+#: readelf.c:5705
+msgid "Unable to determine the length of the dynamic string table\n"
+msgstr "No se puede determinar la longitud de la tabla dinámica de cadenas\n"
+
+#: readelf.c:5710
+msgid "dynamic string table"
+msgstr "tabla de cadena dinámicas"
+
+#: readelf.c:5745
+msgid "symbol information"
+msgstr "información del símbolo"
+
+#: readelf.c:5770
 #, c-format
 msgid ""
 "\n"
-" Line Number Statements:\n"
+"Dynamic section at offset 0x%lx contains %u entries:\n"
 msgstr ""
 "\n"
-" Declaraciones de Número de Línea:\n"
+"La sección dinámica en el desplazamiento 0x%lx contiene %u entradas:\n"
 
-#: readelf.c:9073
+#: readelf.c:5773
 #, c-format
-msgid "  Special opcode %d: advance Address by %d to 0x%lx"
-msgstr "  código de Operación especial %d: Dirección de avance por %d a 0x%lx"
+msgid "  Tag        Type                         Name/Value\n"
+msgstr "  Marca      Tipo                         Nombre/Valor\n"
 
-#: readelf.c:9077
+#: readelf.c:5809
 #, c-format
-msgid " and Line by %d to %d\n"
-msgstr " y Línea por %d a %d\n"
+msgid "Auxiliary library"
+msgstr "Biblioteca auxiliar"
 
-#: readelf.c:9088
+#: readelf.c:5813
 #, c-format
-msgid "  Copy\n"
-msgstr "  Copiar\n"
+msgid "Filter library"
+msgstr "Biblioteca de filtro"
 
-#: readelf.c:9095
+#: readelf.c:5817
 #, c-format
-msgid "  Advance PC by %d to %lx\n"
-msgstr "  Avanzar el PC por %d para %lx\n"
+msgid "Configuration file"
+msgstr "Fichero de configuración"
 
-#: readelf.c:9103
+#: readelf.c:5821
 #, c-format
-msgid "  Advance Line by %d to %d\n"
-msgstr "  Línea de Avance por %d para %d\n"
+msgid "Dependency audit library"
+msgstr "Biblioteca de auditoría de dependencias"
 
-#: readelf.c:9110
+#: readelf.c:5825
 #, c-format
-msgid "  Set File Name to entry %d in the File Name Table\n"
-msgstr "  Establecer el Nombre de Fichero para la entrada %d en la Tabla de Nombres de Fichero\n"
+msgid "Audit library"
+msgstr "Biblioteca de auditoría"
 
-#: readelf.c:9118
+#: readelf.c:5843 readelf.c:5871 readelf.c:5899
 #, c-format
-msgid "  Set column to %d\n"
-msgstr "  Establecer la columna a %d\n"
+msgid "Flags:"
+msgstr "Opciones:"
 
-#: readelf.c:9125
+#: readelf.c:5846 readelf.c:5874 readelf.c:5901
 #, c-format
-msgid "  Set is_stmt to %d\n"
-msgstr "  Establecer is_stmt a %d\n"
+msgid " None\n"
+msgstr " Ninguna\n"
 
-#: readelf.c:9130
+#: readelf.c:6022
 #, c-format
-msgid "  Set basic block\n"
-msgstr "  Establecer el bloque básico\n"
+msgid "Shared library: [%s]"
+msgstr "Biblioteca compartida: [%s]"
 
-#: readelf.c:9138
+#: readelf.c:6025
 #, c-format
-msgid "  Advance PC by constant %d to 0x%lx\n"
-msgstr "  Avanzar el PC por la constante %d a 0x%lx\n"
+msgid " program interpreter"
+msgstr " programa intérprete"
 
-#: readelf.c:9146
+#: readelf.c:6029
 #, c-format
-msgid "  Advance PC by fixed size amount %d to 0x%lx\n"
-msgstr "  Avanzar el PC por la cantidad de tamaño fijo %d a 0x%lx\n"
+msgid "Library soname: [%s]"
+msgstr "Nombre-so de la biblioteca: [%s]"
 
-#: readelf.c:9151
+#: readelf.c:6033
 #, c-format
-msgid "  Set prologue_end to true\n"
-msgstr "  Establecer prologue_end a true\n"
+msgid "Library rpath: [%s]"
+msgstr "Rpath de la biblioteca: [%s]"
 
-#: readelf.c:9155
+#: readelf.c:6037
 #, c-format
-msgid "  Set epilogue_begin to true\n"
-msgstr "  Establecer epilogue_begin a true\n"
+msgid "Library runpath: [%s]"
+msgstr "Ruta de ejecución de la biblioteca: [%s]"
 
-#: readelf.c:9161
+#: readelf.c:6100
 #, c-format
-msgid "  Set ISA to %d\n"
-msgstr "  Establecer ISA a %d\n"
+msgid "Not needed object: [%s]\n"
+msgstr "Objeto innecesario: [%s]\n"
 
-#: readelf.c:9165
+#: readelf.c:6214
 #, c-format
-msgid "  Unknown opcode %d with operands: "
-msgstr "  Código de operación desconocido %d con los operandos: "
+msgid ""
+"\n"
+"Version definition section '%s' contains %ld entries:\n"
+msgstr ""
+"\n"
+"La sección de definición de la versión '%s' contiene %ld entradas:\n"
+
+#: readelf.c:6217
+#, c-format
+msgid "  Addr: 0x"
+msgstr "  Dir: 0x"
+
+#: readelf.c:6219 readelf.c:6426
+#, c-format
+msgid "  Offset: %#08lx  Link: %lx (%s)\n"
+msgstr "  Despl: %#08lx  Enl: %lx (%s)\n"
+
+#: readelf.c:6228
+msgid "version definition section"
+msgstr "sección de definición de versión"
+
+#: readelf.c:6254
+#, c-format
+msgid "  %#06x: Rev: %d  Flags: %s"
+msgstr "  %#06x: Rev: %d  Opts: %s"
+
+#: readelf.c:6257
+#, c-format
+msgid "  Index: %d  Cnt: %d  "
+msgstr "  Ind: %d  Cnt: %d  "
+
+#: readelf.c:6268
+#, c-format
+msgid "Name: %s\n"
+msgstr "Nombre: %s\n"
+
+#: readelf.c:6270
+#, c-format
+msgid "Name index: %ld\n"
+msgstr "Índice de nombres: %ld\n"
+
+#: readelf.c:6285
+#, c-format
+msgid "  %#06x: Parent %d: %s\n"
+msgstr "  %#06x: Padre %d: %s\n"
+
+#: readelf.c:6288
+#, c-format
+msgid "  %#06x: Parent %d, name index: %ld\n"
+msgstr "  %#06x: Padre %d, índice de nombres: %ld\n"
 
-#: readelf.c:9193 readelf.c:9279 readelf.c:9354
+#: readelf.c:6307
 #, c-format
 msgid ""
-"Contents of the %s section:\n"
 "\n"
+"Version needs section '%s' contains %ld entries:\n"
 msgstr ""
-"Contenido de la sección %s:\n"
 "\n"
+"La sección de requerimientos de versión '%s' contiene %ld entradas:\n"
 
-#: readelf.c:9233
-msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
-msgstr "Actualmente sólo tienen soporte los nombres públicos DWARF 2 y 3\n"
-
-#: readelf.c:9240
+#: readelf.c:6310
 #, c-format
-msgid "  Length:                              %ld\n"
-msgstr "  Longitud:                            %ld\n"
+msgid " Addr: 0x"
+msgstr " Dir: 0x"
 
-#: readelf.c:9242
+#: readelf.c:6312
 #, c-format
-msgid "  Version:                             %d\n"
-msgstr "  Versión:                             %d\n"
+msgid "  Offset: %#08lx  Link to section: %ld (%s)\n"
+msgstr "  Despl: %#08lx  Enlace a sección: %ld (%s)\n"
 
-#: readelf.c:9244
-#, c-format
-msgid "  Offset into .debug_info section:     %ld\n"
-msgstr "  Desplazamiento en sección .debug_info: %ld\n"
+#: readelf.c:6321
+msgid "version need section"
+msgstr "sección de versiones necesarias"
 
-#: readelf.c:9246
+#: readelf.c:6343
 #, c-format
-msgid "  Size of area in .debug_info section: %ld\n"
-msgstr "  Tamaño de área en sección .debug_info: %ld\n"
+msgid "  %#06x: Version: %d"
+msgstr "  %#06x: Versión: %d"
 
-#: readelf.c:9249
+#: readelf.c:6346
 #, c-format
-msgid ""
-"\n"
-"    Offset\tName\n"
-msgstr ""
-"\n"
-"    Desplazamiento\tNombre\n"
+msgid "  File: %s"
+msgstr "  Fichero: %s"
 
-#: readelf.c:9300
+#: readelf.c:6348
 #, c-format
-msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
-msgstr " DW_MACINFO_start_file - numlinea: %d numfichero: %d\n"
+msgid "  File: %lx"
+msgstr "  Fichero: %lx"
 
-#: readelf.c:9306
+#: readelf.c:6350
 #, c-format
-msgid " DW_MACINFO_end_file\n"
-msgstr " DW_MACINFO_end_file\n"
+msgid "  Cnt: %d\n"
+msgstr "  Cnt: %d\n"
 
-#: readelf.c:9314
+#: readelf.c:6368
 #, c-format
-msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
-msgstr " DW_MACINFO_define - numlinea : %d macro : %s\n"
+msgid "  %#06x:   Name: %s"
+msgstr "  %#06x:   Nombre: %s"
 
-#: readelf.c:9323
+#: readelf.c:6371
 #, c-format
-msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
-msgstr " DW_MACINFO_undef - numlinea : %d macro : %s\n"
+msgid "  %#06x:   Name index: %lx"
+msgstr "  %#06x:   Índice de nombres: %lx"
 
-#: readelf.c:9335
+#: readelf.c:6374
 #, c-format
-msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
-msgstr " DW_MACINFO_vendor_ext - constante : %d cadena : %s\n"
+msgid "  Flags: %s  Version: %d\n"
+msgstr "  Opts: %s  Versión: %d\n"
+
+#: readelf.c:6417
+msgid "version string table"
+msgstr "versión de tabla de cadenas"
 
-#: readelf.c:9363
+#: readelf.c:6421
 #, c-format
-msgid "  Number TAG\n"
-msgstr "  Número TAG\n"
+msgid ""
+"\n"
+"Version symbols section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"La sección de símbolos de versión '%s' contiene %d entradas:\n"
 
-#: readelf.c:9369
+#: readelf.c:6424
 #, c-format
-msgid "   %ld      %s    [%s]\n"
-msgstr "   %ld      %s    [%s]\n"
+msgid " Addr: "
+msgstr " Dir: "
 
-#: readelf.c:9372
-msgid "has children"
-msgstr "tiene hijos"
+#: readelf.c:6434
+msgid "version symbol data"
+msgstr "datos de símbolos de versión"
 
-#: readelf.c:9372
-msgid "no children"
-msgstr "sin hijos"
+#: readelf.c:6461
+msgid "   0 (*local*)    "
+msgstr "   0 (*local*)    "
 
-#: readelf.c:9375
-#, c-format
-msgid "    %-18s %s\n"
-msgstr "    %-18s %s\n"
+#: readelf.c:6465
+msgid "   1 (*global*)   "
+msgstr "   1 (*global*)   "
+
+#: readelf.c:6503 readelf.c:6969
+msgid "version need"
+msgstr "la versión necesita"
+
+#: readelf.c:6513
+msgid "version need aux (2)"
+msgstr "la versión necesita aux (2)"
+
+#: readelf.c:6555 readelf.c:7034
+msgid "version def"
+msgstr "versión definida"
+
+#: readelf.c:6575 readelf.c:7049
+msgid "version def aux"
+msgstr "versión definida auxiliar"
 
-#: readelf.c:9410
+#: readelf.c:6606
 #, c-format
 msgid ""
 "\n"
-"The .debug_loc section is empty.\n"
+"No version information found in this file.\n"
 msgstr ""
 "\n"
-"La sección .debug_loc está vacía.\n"
+"No se encontró información de versión en este fichero.\n"
 
-#. FIXME: Should we handle this case?
-#: readelf.c:9455
-msgid "Location lists in .debug_info section aren't in ascending order!\n"
-msgstr "¡Las listas de ubicación en la sección .debug_info no están en orden ascendente!\n"
+#: readelf.c:6740
+msgid "Unable to read in dynamic data\n"
+msgstr "No se pueden leer los datos dinámicos\n"
 
-#: readelf.c:9458
-msgid "No location lists in .debug_info section!\n"
-msgstr "¡No hay listas de ubicación en la sección .debug_info!\n"
+#: readelf.c:6793
+msgid "Unable to seek to start of dynamic information"
+msgstr "No se puede encontrar el inicio de la información dinámica"
 
-#: readelf.c:9461
-#, c-format
-msgid "Location lists in .debug_loc section start at 0x%lx\n"
-msgstr "Las listas de ubicación en la sección .debug_loc empiezan en 0x%lx\n"
+#: readelf.c:6799
+msgid "Failed to read in number of buckets\n"
+msgstr "Falló la lectura en el número de cubos\n"
+
+#: readelf.c:6805
+msgid "Failed to read in number of chains\n"
+msgstr "Falló la lectura en el número de cadenas\n"
 
-#: readelf.c:9464
+#: readelf.c:6825
 #, c-format
 msgid ""
-"Contents of the .debug_loc section:\n"
 "\n"
+"Symbol table for image:\n"
 msgstr ""
-"Contenido de la sección .debug_loc:\n"
 "\n"
+"Tabla de símbolos por imagen:\n"
 
-#: readelf.c:9465
+#: readelf.c:6827
 #, c-format
-msgid "    Offset   Begin    End      Expression\n"
-msgstr "    Desplaz  Inicio   Fin      Expresión\n"
+msgid "  Num Buc:    Value  Size   Type   Bind Vis      Ndx Name\n"
+msgstr "  Num Cub:    Valor  Tamaño Tipo   Uni  Vis      Nombre Ind\n"
 
-#: readelf.c:9495
+#: readelf.c:6829
 #, c-format
-msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
-msgstr "Hay un agujero [0x%lx - 0x%lx] en la sección .debug_loc.\n"
+msgid "  Num Buc:    Value          Size   Type   Bind Vis      Ndx Name\n"
+msgstr "  Num Cub:    Valor          Tamaño Typo   Uni  Vis      Nombre Ind\n"
 
-#: readelf.c:9498
+#: readelf.c:6882
 #, c-format
-msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
-msgstr "Hay un traslape [0x%lx - 0x%lx] en la sección .debug_loc.\n"
+msgid ""
+"\n"
+"Symbol table '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"La tabla de símbolos '%s' contiene %lu entradas:\n"
 
-#: readelf.c:9512 readelf.c:9837
+#: readelf.c:6886
 #, c-format
-msgid "    %8.8lx <End of list>\n"
-msgstr "    %8.8lx <Fin de la lista>\n"
+msgid "   Num:    Value  Size Type    Bind   Vis      Ndx Name\n"
+msgstr "   Num:    Valor  Tam  Tipo    Unión  Vis      Nombre Ind\n"
 
-#: readelf.c:9540 readelf.c:9854
-msgid " (start == end)"
-msgstr " (inicio == final)"
+#: readelf.c:6888
+#, c-format
+msgid "   Num:    Value          Size Type    Bind   Vis      Ndx Name\n"
+msgstr "   Num:    Valor          Tam  Tipo    Unión  Vis      Nombre Ind\n"
 
-#: readelf.c:9542 readelf.c:9856
-msgid " (start > end)"
-msgstr " (inicio > final)"
+#: readelf.c:6939
+msgid "version data"
+msgstr "datos de versión"
+
+#: readelf.c:6982
+msgid "version need aux (3)"
+msgstr "la versión necesita aux (3)"
 
-#: readelf.c:9566
+#: readelf.c:7009
+msgid "bad dynamic symbol"
+msgstr "símbolo dinámico erróneo"
+
+#: readelf.c:7073
 #, c-format
 msgid ""
 "\n"
-"The .debug_str section is empty.\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
 msgstr ""
 "\n"
-"La sección .debug_str está vacía.\n"
+"La información de símbolos dinámicos no está disponible para mostrar los símbolos.\n"
 
-#: readelf.c:9570
+#: readelf.c:7085
 #, c-format
 msgid ""
-"Contents of the .debug_str section:\n"
 "\n"
+"Histogram for bucket list length (total of %lu buckets):\n"
 msgstr ""
-"Contenido de la sección .debug_str:\n"
 "\n"
+"Histograma para la longitud de lista de cubos (total de %lu cubos):\n"
 
-#: readelf.c:9675
-msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
-msgstr "Sólo los rangos-a de DWARF 2 y 3 tienen soporte actualmente.\n"
-
-#: readelf.c:9679
-#, c-format
-msgid "  Length:                   %ld\n"
-msgstr "  Longitud:                 %ld\n"
-
-#: readelf.c:9680
+#: readelf.c:7087
 #, c-format
-msgid "  Version:                  %d\n"
-msgstr "  Versión:                  %d\n"
+msgid " Length  Number     %% of total  Coverage\n"
+msgstr " Long    Número     %% del total Cobertura\n"
 
-#: readelf.c:9681
-#, c-format
-msgid "  Offset into .debug_info:  %lx\n"
-msgstr "  Desplaz. en .debug_info:  %lx\n"
+#: readelf.c:7092 readelf.c:7108 readelf.c:8031 readelf.c:8223
+msgid "Out of memory"
+msgstr "Memoria agotada"
 
-#: readelf.c:9682
+#: readelf.c:7157
 #, c-format
-msgid "  Pointer Size:             %d\n"
-msgstr "  Tamaño del Puntero:       %d\n"
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr ""
+"\n"
+"El segmento de información dinámica en el desplazamiento 0x%lx contiene %d entradas:\n"
 
-#: readelf.c:9683
+#: readelf.c:7160
 #, c-format
-msgid "  Segment Size:             %d\n"
-msgstr "  Tamaño del Segmento:      %d\n"
+msgid " Num: Name                           BoundTo     Flags\n"
+msgstr " Num: Nombre                         EnlaceA     Opts\n"
 
-#: readelf.c:9685
+#: readelf.c:7212
 #, c-format
 msgid ""
 "\n"
-"    Address  Length\n"
+"Assembly dump of section %s\n"
 msgstr ""
 "\n"
-"    Longitud de la Dirección\n"
+"Volcado ensamblador de la sección %s\n"
 
-#: readelf.c:9741
+#: readelf.c:7233
 #, c-format
 msgid ""
 "\n"
-"The .debug_ranges section is empty.\n"
+"Section '%s' has no data to dump.\n"
 msgstr ""
 "\n"
-"La sección .debug_ranges está vacía.\n"
-
-#. FIXME: Should we handle this case?
-#: readelf.c:9786
-msgid "Range lists in .debug_info section aren't in ascending order!\n"
-msgstr "¡Las listas de rango en la sección .debug_info no están en orden ascendente!\n"
-
-#: readelf.c:9789
-msgid "No range lists in .debug_info section!\n"
-msgstr "¡No hay listas de rango en la sección .debug_info!\n"
-
-#: readelf.c:9792
-#, c-format
-msgid "Range lists in .debug_ranges section start at 0x%lx\n"
-msgstr "Las listas de rango en la sección .debug_info inician en 0x%lx\n"
+"La sección '%s' no tiene datos para volcar.\n"
 
-#: readelf.c:9795
+#: readelf.c:7238
 #, c-format
 msgid ""
-"Contents of the .debug_ranges section:\n"
 "\n"
+"Hex dump of section '%s':\n"
 msgstr ""
-"Contenido de la sección .debug_ranges:\n"
 "\n"
+"Volcado hexadecimal de la sección '%s':\n"
 
-#: readelf.c:9796
-#, c-format
-msgid "    Offset   Begin    End\n"
-msgstr "    Desplaz  Inicio   Fin\n"
-
-#: readelf.c:9820
-#, c-format
-msgid "There is a hole [0x%lx - 0x%lx] in .debug_ranges section.\n"
-msgstr "Hay un agujero [0x%lx - 0x%lx] en la sección .debug_ranges.\n"
-
-#: readelf.c:9823
+#: readelf.c:7359
 #, c-format
-msgid "There is an overlap [0x%lx - 0x%lx] in .debug_ranges section.\n"
-msgstr "Hay un traslape [0x%lx - 0x%lx] en la sección .debug_ranges.\n"
+msgid "skipping invalid relocation offset 0x%lx in section %s\n"
+msgstr "saltando el desplazamiento de reubicación inválido 0x%lx en la sección%s\n"
 
-#: readelf.c:10017
+#: readelf.c:7376
 #, c-format
-msgid "The section %s contains:\n"
-msgstr "La sección %s contiene:\n"
+msgid "skipping unexpected symbol type %s in relocation in section .rela%s\n"
+msgstr "saltando el tipo de símbolo %s inesperado en la reubicación en la sección .rela.%s\n"
 
-#: readelf.c:10663
+#: readelf.c:7402
 #, c-format
-msgid "unsupported or unknown DW_CFA_%d\n"
-msgstr "DW_CFA_%d desconocido o sin soporte\n"
+msgid "skipping unexpected symbol type %s in relocation in section .rela.%s\n"
+msgstr "saltando el tipo de símbolo %s inesperado en la reubicación en la sección .rela.%s\n"
 
-#: readelf.c:10688
+#: readelf.c:7435
 #, c-format
-msgid "Displaying the debug contents of section %s is not yet supported.\n"
-msgstr "Aún no tiene soporte el mostrar el contenido de depuración de la sección %s.\n"
+msgid "%s section data"
+msgstr "datos de sección %s"
 
-#: readelf.c:10732
+#: readelf.c:7472
 #, c-format
 msgid ""
 "\n"
@@ -4522,29 +4607,44 @@ msgstr ""
 "\n"
 "La sección '%s' no tiene datos de depuración.\n"
 
-#: readelf.c:10746
-msgid "debug section data"
-msgstr "sección de datos de depuración"
-
-#: readelf.c:10765
+#: readelf.c:7498
 #, c-format
 msgid "Unrecognized debug section: %s\n"
 msgstr "Sección de depuración no reconocida: %s\n"
 
-#: readelf.c:10800
+#: readelf.c:7533
 #, c-format
 msgid "Section %d was not dumped because it does not exist!\n"
 msgstr "¡La sección %d no se volcó porque no existe!\n"
 
-#: readelf.c:10872 readelf.c:11236
+#: readelf.c:7791
+msgid "attributes"
+msgstr "atributos"
+
+#: readelf.c:7809
+#, c-format
+msgid "ERROR: Bad section length (%d > %d)\n"
+msgstr "ERROR: Longitud de sección errónea (%d > %d)\n"
+
+#: readelf.c:7830
+#, c-format
+msgid "ERROR: Bad subsection length (%d > %d)\n"
+msgstr "ERROR: Longitud de subsección errónea (%d > %d)\n"
+
+#: readelf.c:7880
+#, c-format
+msgid "Unknown format '%c'\n"
+msgstr "Formato '%c' desconocido\n"
+
+#: readelf.c:7936 readelf.c:8304
 msgid "liblist"
 msgstr "lista de bibliotecas"
 
-#: readelf.c:10961
+#: readelf.c:8025
 msgid "options"
 msgstr "opciones"
 
-#: readelf.c:10991
+#: readelf.c:8055
 #, c-format
 msgid ""
 "\n"
@@ -4553,15 +4653,15 @@ msgstr ""
 "\n"
 "La sección '%s' contiene %d entradas:\n"
 
-#: readelf.c:11152
+#: readelf.c:8216
 msgid "conflict list found without a dynamic symbol table"
 msgstr "se encontró una lista de conflictos sin una tabla de símbolos dinámicos"
 
-#: readelf.c:11168 readelf.c:11182
+#: readelf.c:8232 readelf.c:8246
 msgid "conflict"
 msgstr "tiene conflictos con"
 
-#: readelf.c:11192
+#: readelf.c:8256
 #, c-format
 msgid ""
 "\n"
@@ -4570,15 +4670,15 @@ msgstr ""
 "\n"
 "La sección '.conflict' contiene %lu entradas:\n"
 
-#: readelf.c:11194
+#: readelf.c:8258
 msgid "  Num:    Index       Value  Name"
 msgstr "  Num:    Índice      Valor  Nombre"
 
-#: readelf.c:11243
+#: readelf.c:8311
 msgid "liblist string table"
 msgstr "tabla de cadenas liblist"
 
-#: readelf.c:11252
+#: readelf.c:8321
 #, c-format
 msgid ""
 "\n"
@@ -4587,90 +4687,90 @@ msgstr ""
 "\n"
 "La sección de lista de bibliotecas '%s' contiene %lu entradas:\n"
 
-#: readelf.c:11303
+#: readelf.c:8374
 msgid "NT_AUXV (auxiliary vector)"
 msgstr "NT_AUXV (vector auxiliar)"
 
-#: readelf.c:11305
+#: readelf.c:8376
 msgid "NT_PRSTATUS (prstatus structure)"
 msgstr "NT_PRSTATUS (estructura prstatus)"
 
-#: readelf.c:11307
+#: readelf.c:8378
 msgid "NT_FPREGSET (floating point registers)"
 msgstr "NT_FPREGSET (registros de coma flotante)"
 
-#: readelf.c:11309
+#: readelf.c:8380
 msgid "NT_PRPSINFO (prpsinfo structure)"
 msgstr "NT_PRPSINFO (estructura prpsinfo)"
 
-#: readelf.c:11311
+#: readelf.c:8382
 msgid "NT_TASKSTRUCT (task structure)"
 msgstr "NT_TASKSTRUCT (estructura task)"
 
-#: readelf.c:11313
+#: readelf.c:8384
 msgid "NT_PRXFPREG (user_xfpregs structure)"
 msgstr "NT_PRXFPREG (estructura user_xfpregs)"
 
-#: readelf.c:11315
+#: readelf.c:8386
 msgid "NT_PSTATUS (pstatus structure)"
 msgstr "NT_PSTATUS (estructura pstatus)"
 
-#: readelf.c:11317
+#: readelf.c:8388
 msgid "NT_FPREGS (floating point registers)"
 msgstr "NT_FPREGS (registros de coma flotante)"
 
-#: readelf.c:11319
+#: readelf.c:8390
 msgid "NT_PSINFO (psinfo structure)"
 msgstr "NT_PSINFO (estructura psinfo)"
 
-#: readelf.c:11321
+#: readelf.c:8392
 msgid "NT_LWPSTATUS (lwpstatus_t structure)"
 msgstr "NT_LWPSTATUS (estructura lwpstatus_t)"
 
-#: readelf.c:11323
+#: readelf.c:8394
 msgid "NT_LWPSINFO (lwpsinfo_t structure)"
 msgstr "NT_LWPSINFO (estructura lwpsinfo_t)"
 
-#: readelf.c:11325
+#: readelf.c:8396
 msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
 msgstr "NT_WIN32PSTATUS (estructura win32_pstatus)"
 
-#: readelf.c:11333
+#: readelf.c:8404
 msgid "NT_VERSION (version)"
 msgstr "NT_VERSION (versión)"
 
-#: readelf.c:11335
+#: readelf.c:8406
 msgid "NT_ARCH (architecture)"
 msgstr "NT_ARCH (arquitectura)"
 
-#: readelf.c:11340 readelf.c:11362
+#: readelf.c:8411 readelf.c:8433
 #, c-format
 msgid "Unknown note type: (0x%08x)"
 msgstr "Tipo de nota desconocido: (0x%08x)"
 
 #. NetBSD core "procinfo" structure.
-#: readelf.c:11352
+#: readelf.c:8423
 msgid "NetBSD procinfo structure"
 msgstr "estructura procinfo de NetBSD"
 
-#: readelf.c:11379 readelf.c:11393
+#: readelf.c:8450 readelf.c:8464
 msgid "PT_GETREGS (reg structure)"
 msgstr "PT_GETREGS (estructura reg)"
 
-#: readelf.c:11381 readelf.c:11395
+#: readelf.c:8452 readelf.c:8466
 msgid "PT_GETFPREGS (fpreg structure)"
 msgstr "PT_GETFPREGS (estructura fpreg)"
 
-#: readelf.c:11401
+#: readelf.c:8472
 #, c-format
 msgid "PT_FIRSTMACH+%d"
 msgstr "PT_FIRSTMACH+%d"
 
-#: readelf.c:11447
+#: readelf.c:8518
 msgid "notes"
 msgstr "notas"
 
-#: readelf.c:11453
+#: readelf.c:8524
 #, c-format
 msgid ""
 "\n"
@@ -4679,27 +4779,27 @@ msgstr ""
 "\n"
 "Notas en el desplazamiento 0x%08lx con longitud 0x%08lx:\n"
 
-#: readelf.c:11455
+#: readelf.c:8526
 #, c-format
 msgid "  Owner\t\tData size\tDescription\n"
 msgstr "  Prop\t\tTamaño datos\tDescripción\n"
 
-#: readelf.c:11474
+#: readelf.c:8545
 #, c-format
-msgid "corrupt note found at offset %x into core notes\n"
-msgstr "se encontró una nota corrupta en el desplazamiento %x en las notas de núcleo\n"
+msgid "corrupt note found at offset %lx into core notes\n"
+msgstr "se encontró una nota corrupta en el desplazamiento %lx en las notas de núcleo\n"
 
-#: readelf.c:11476
+#: readelf.c:8547
 #, c-format
-msgid " type: %x, namesize: %08lx, descsize: %08lx\n"
-msgstr " tipo: %x, tamañonombre: %08lx, tamañodesc: %08lx\n"
+msgid " type: %lx, namesize: %08lx, descsize: %08lx\n"
+msgstr " tipo: %lx, tamañonombre: %08lx, tamañodesc: %08lx\n"
 
-#: readelf.c:11574
+#: readelf.c:8645
 #, c-format
 msgid "No note segments present in the core file.\n"
 msgstr "No hay segmentos de notas presentes el el fichero core.\n"
 
-#: readelf.c:11653
+#: readelf.c:8726
 msgid ""
 "This instance of readelf has been built without support for a\n"
 "64 bit data type and so it cannot read 64 bit ELF files.\n"
@@ -4707,12 +4807,12 @@ msgstr ""
 "Esta instancia de readelf ha sido construida sin soporte para un\n"
 "tipo de datos de 64 bit y por eso no puede leer ficheros ELF de 64 bit.\n"
 
-#: readelf.c:11700 readelf.c:12059
+#: readelf.c:8775 readelf.c:9119
 #, c-format
 msgid "%s: Failed to read file header\n"
 msgstr "%s: Falló al leer el encabezado del fichero\n"
 
-#: readelf.c:11713
+#: readelf.c:8788
 #, c-format
 msgid ""
 "\n"
@@ -4721,68 +4821,68 @@ msgstr ""
 "\n"
 "Fichero: %s\n"
 
-#: readelf.c:11876 readelf.c:11897 readelf.c:11934 readelf.c:12014
+#: readelf.c:8936 readelf.c:8957 readelf.c:8994 readelf.c:9074
 #, c-format
 msgid "%s: failed to read archive header\n"
 msgstr "%s: falló al leer el encabezado del archivo\n"
 
-#: readelf.c:11887
+#: readelf.c:8947
 #, c-format
 msgid "%s: failed to skip archive symbol table\n"
 msgstr "%s: falló al saltar la tabla de símbolos del archivo\n"
 
-#: readelf.c:11919
+#: readelf.c:8979
 #, c-format
 msgid "%s: failed to read string table\n"
 msgstr "%s: falló al leer la tabla de cadenas\n"
 
-#: readelf.c:11955
+#: readelf.c:9015
 #, c-format
 msgid "%s: invalid archive string table offset %lu\n"
 msgstr "%s: desplazamiento de tabla de cadenas de archivo %lu inválido\n"
 
-#: readelf.c:11971
+#: readelf.c:9031
 #, c-format
 msgid "%s: bad archive file name\n"
 msgstr "%s: nombre de fichero de archivo erróneo\n"
 
-#: readelf.c:12003
+#: readelf.c:9063
 #, c-format
 msgid "%s: failed to seek to next archive header\n"
 msgstr "%s: falló al buscar el siguiente encabezado de archivo\n"
 
-#: readelf.c:12037
+#: readelf.c:9097
 #, c-format
 msgid "'%s': No such file\n"
 msgstr "'%s': No hay tal fichero\n"
 
-#: readelf.c:12039
+#: readelf.c:9099
 #, c-format
 msgid "Could not locate '%s'.  System error message: %s\n"
 msgstr "No se puede encontrar '%s'.  Mensaje de error del sistema: %s\n"
 
-#: readelf.c:12046
+#: readelf.c:9106
 #, c-format
 msgid "'%s' is not an ordinary file\n"
 msgstr "'%s' no es un fichero ordinario\n"
 
-#: readelf.c:12053
+#: readelf.c:9113
 #, c-format
 msgid "Input file '%s' is not readable.\n"
 msgstr "El fichero de entrada '%s' no es legible.\n"
 
-#: rename.c:127
+#: rename.c:129
 #, c-format
 msgid "%s: cannot set time: %s"
 msgstr "%s: no se puede establecer la hora: %s"
 
 #. We have to clean up here.
-#: rename.c:162 rename.c:200
+#: rename.c:164 rename.c:202
 #, c-format
 msgid "unable to rename '%s' reason: %s"
 msgstr "no se puede renombrar '%s' razón: %s"
 
-#: rename.c:208
+#: rename.c:210
 #, c-format
 msgid "unable to copy file '%s' reason: %s"
 msgstr "no se puede copiar el fichero '%s' razón: %s"
@@ -5164,17 +5264,17 @@ msgstr "stat fall
 msgid "can't open `%s' for output: %s"
 msgstr "no se puede abrir `%s' para salida: %s"
 
-#: size.c:81
+#: size.c:83
 #, c-format
 msgid " Displays the sizes of sections inside binary files\n"
 msgstr " Muestra los tamaños de las secciones dentro de los ficheros binarios\n"
 
-#: size.c:82
+#: size.c:84
 #, c-format
 msgid " If no input file(s) are specified, a.out is assumed\n"
 msgstr "Si no se especifica(n) fichero(s) de salida, se asume a.out\n"
 
-#: size.c:83
+#: size.c:85
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5182,6 +5282,7 @@ msgid ""
 "  -o|-d|-x  --radix={8|10|16}         Display numbers in octal, decimal or hex\n"
 "  -t        --totals                  Display the total sizes (Berkeley only)\n"
 "            --target=<bfdname>        Set the binary file format\n"
+"            @<file>                   Read options from <file>\n"
 "  -h        --help                    Display this information\n"
 "  -v        --version                 Display the program's version\n"
 "\n"
@@ -5194,16 +5295,17 @@ msgstr ""
 "  -t        --totals                  Muestra los tamaños totales\n"
 "                                      (sólo Berkeley)\n"
 "            --target=<nombrebfd>      Establece el formato del fichero binario\n"
+"            @<fichero>                Lee opciones del <fichero>\n"
 "  -h        --help                    Muestra esta información\n"
 "  -v        --version                 Muestra la versión del programa\n"
 "\n"
 
-#: size.c:153
+#: size.c:158
 #, c-format
 msgid "invalid argument to --format: %s"
 msgstr "argumento inválido para --format: %s"
 
-#: size.c:180
+#: size.c:185
 #, c-format
 msgid "Invalid radix: %s\n"
 msgstr "Radical inválido: %s\n"
@@ -5220,6 +5322,7 @@ msgid ""
 "  -q --quick       (Obsolete - ignored)\n"
 "  -n --noprescan   Do not perform a scan to convert commons into defs\n"
 "  -d --debug       Display information about what is being done\n"
+"  @<file>          Read options from <file>\n"
 "  -h --help        Display this information\n"
 "  -v --version     Print the program's version number\n"
 msgstr ""
@@ -5227,10 +5330,11 @@ msgstr ""
 "  -q --quick       (Obsoleto - ignorado)\n"
 "  -n --noprescan   No realizar una revisión para convertir comunes en definiciones\n"
 "  -d --debug       Muestra información acerca de lo que se está haciendo\n"
+"  @<fichero>       Lee opciones del <fichero>\n"
 "  -h --help        Muestra esta información\n"
 "  -v --version     Muestra el número de versión del programa\n"
 
-#: srconv.c:1866
+#: srconv.c:1869
 #, c-format
 msgid "unable to open output file %s"
 msgstr "no se puede abrir el fichero de salida %s"
@@ -5368,22 +5472,22 @@ msgstr "varargs desenredados inesperados\n"
 msgid "Unrecognized demangled builtin type\n"
 msgstr "Tipo interno desenredado no reconocido\n"
 
-#: strings.c:206
+#: strings.c:218
 #, c-format
 msgid "invalid number %s"
 msgstr "número %s inválido"
 
-#: strings.c:643
+#: strings.c:700
 #, c-format
 msgid "invalid integer argument %s"
 msgstr "argumento entero %s inválido"
 
-#: strings.c:652
+#: strings.c:709
 #, c-format
 msgid " Display printable strings in [file(s)] (stdin by default)\n"
 msgstr " Muestra las cadenas imprimibles en [fichero(s)] (por defecto entrada estándar)\n"
 
-#: strings.c:653
+#: strings.c:710
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5396,6 +5500,7 @@ msgid ""
 "  -T --target=<BFDNAME>     Specify the binary file format\n"
 "  -e --encoding={s,S,b,l,B,L} Select character size and endianness:\n"
 "                            s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit\n"
+"  @<file>                   Read options from <file>\n"
 "  -h --help                 Display this information\n"
 "  -v --version              Print the program's version number\n"
 msgstr ""
@@ -5410,15 +5515,16 @@ msgstr ""
 "  -T --target=<NOMBREBFD>   Especifica el formato de fichero binario\n"
 "  -e --encoding={s,S,b,l,B,L} Selecciona el tamaño del carácter y la \"endianez\":\n"
 "                            s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit\n"
+"  @<fichero>                Lee opciones del fichero\n"
 "  -h --help                 Muestra esta información\n"
 "  -v --version              Muestra el número de versión del programa\n"
 
-#: sysdump.c:649
+#: sysdump.c:642
 #, c-format
 msgid "Print a human readable interpretation of a SYSROFF object file\n"
 msgstr "Muestra una interpretación legible por humanos de un fichero objeto SYSROFF\n"
 
-#: sysdump.c:650
+#: sysdump.c:643
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5429,7 +5535,7 @@ msgstr ""
 "  -h --help        Muestra esta información\n"
 "  -v --version     Muestra el número de versión del programa\n"
 
-#: sysdump.c:715
+#: sysdump.c:710
 #, c-format
 msgid "cannot open input file %s"
 msgstr "no se puede abrir el fichero de entrada %s"
@@ -5538,15 +5644,17 @@ msgstr "     --yydebug                 Activa el decodificador de depuraci
 #, c-format
 msgid ""
 "  -r                           Ignored for compatibility with rc\n"
+"  @<file>                      Read options from <file>\n"
 "  -h --help                    Print this help message\n"
 "  -V --version                 Print version information\n"
 msgstr ""
 " Las opciones son:\n"
 "  -r                           Se ignora por compatibilidad con rc\n"
+"  @<fichero>                   Lee opciones del <fichero>\n"
 "  -h --help                    Muestra este mensaje de ayuda\n"
 "  -V --version                 Muestra la información de versión\n"
 
-#: windres.c:664
+#: windres.c:665
 #, c-format
 msgid ""
 "FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
@@ -5558,20 +5666,20 @@ msgstr ""
 "entrada.  Sin fichero de entrada es la entrada estándar, por defecto rc.\n"
 "Sin fichero de salida es la salida estándar, por defecto rc.\n"
 
-#: windres.c:800
+#: windres.c:803
 msgid "invalid option -f\n"
 msgstr "opción -f inválida\n"
 
-#: windres.c:805
+#: windres.c:808
 msgid "No filename following the -fo option.\n"
 msgstr "No hay un nombre de fichero a continuación de la opción -fo.\n"
 
-#: windres.c:863
+#: windres.c:866
 #, c-format
 msgid "Option -I is deprecated for setting the input format, please use -J instead.\n"
 msgstr "La opción -I es obsoleta para establecer el formato de salida, por favor use -J en su lugar.\n"
 
-#: windres.c:981
+#: windres.c:984
 msgid "no resources"
 msgstr "no hay recursos"
 
@@ -5590,6 +5698,71 @@ msgstr "stab_int_type: tipo %u err
 msgid "%s: warning: unknown size for field `%s' in struct"
 msgstr "%s: aviso: tamaño desconocido para el campo `%s' en la estructura"
 
+#~ msgid "flags"
+#~ msgstr "opciones"
+
+#~ msgid "debug_str section data"
+#~ msgstr "sección de datos debug_str"
+
+#~ msgid "debug_loc section data"
+#~ msgstr "sección de datos debug_loc"
+
+#~ msgid "debug_range section data"
+#~ msgstr "sección de datos debug_range"
+
+#~ msgid "%s: skipping unexpected symbol type %s in relocation in section .rela%s\n"
+#~ msgstr "%s: saltando el tipo de símbolo %s inesperado en la reubicación en la sección .rela%s\n"
+
+#~ msgid "debug_abbrev section data"
+#~ msgstr "sección de datos debug_abbrev"
+
+#~ msgid "extracting information from .debug_info section"
+#~ msgstr "extrayendo la información de la sección .debug_info"
+
+#~ msgid ""
+#~ "\n"
+#~ "The .debug_loc section is empty.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "La sección .debug_loc está vacía.\n"
+
+#~ msgid ""
+#~ "Contents of the .debug_loc section:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Contenido de la sección .debug_loc:\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Contents of the .debug_str section:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Contenido de la sección .debug_str:\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "The .debug_ranges section is empty.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "La sección .debug_ranges está vacía.\n"
+
+#~ msgid ""
+#~ "Contents of the .debug_ranges section:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Contenido de la sección .debug_ranges:\n"
+#~ "\n"
+
+#~ msgid "There is a hole [0x%lx - 0x%lx] in .debug_ranges section.\n"
+#~ msgstr "Hay un agujero [0x%lx - 0x%lx] en la sección .debug_ranges.\n"
+
+#~ msgid "There is an overlap [0x%lx - 0x%lx] in .debug_ranges section.\n"
+#~ msgstr "Hay un traslape [0x%lx - 0x%lx] en la sección .debug_ranges.\n"
+
+#~ msgid "debug section data"
+#~ msgstr "sección de datos de depuración"
+
 #~ msgid ""
 #~ "\n"
 #~ "<member %s>\n"
index 888dca2..c86fd89 100644 (file)
@@ -4,10 +4,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU binutils 2.15.96\n"
+"Project-Id-Version: GNU binutils 2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-03 21:03+1030\n"
-"PO-Revision-Date: 2005-03-22 08:00-0500\n"
+"POT-Creation-Date: 2005-10-25 09:14+0930\n"
+"PO-Revision-Date: 2006-05-20 08:00-0500\n"
 "Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n"
 "Language-Team: French <traduc@traduc.org>\n"
 "MIME-Version: 1.0\n"
@@ -15,27 +15,29 @@ msgstr ""
 "Content-Transfer-Encoding: 8-bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: addr2line.c:73
+#: addr2line.c:76
 #, c-format
 msgid "Usage: %s [option(s)] [addr(s)]\n"
 msgstr "Usage: %s [options] [adresses]\n"
 
-#: addr2line.c:74
+#: addr2line.c:77
 #, c-format
 msgid " Convert addresses into line number/file name pairs.\n"
 msgstr "Convertir les adresses en paires numéro de ligne/fichier.\n"
 
-#: addr2line.c:75
+#: addr2line.c:78
 #, c-format
 msgid " If no addresses are specified on the command line, they will be read from stdin\n"
 msgstr "Si aucune adresse n'est spécifiée sur la ligne de commande, elles seront lues de stdin\n"
 
-#: addr2line.c:76
+#: addr2line.c:79
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                Read options from <file>\n"
 "  -b --target=<bfdname>  Set the binary file format\n"
 "  -e --exe=<executable>  Set the input file name (default is a.out)\n"
+"  -i --inlines\t\t Unwind inlined functions\n"
 "  -s --basenames         Strip directory names\n"
 "  -f --functions         Show function names\n"
 "  -C --demangle[=style]  Demangle function names\n"
@@ -46,6 +48,7 @@ msgstr ""
 "Les options sont:\n"
 "  -b --target=<nombfd>   sélectionner le format du fichier binaire\n"
 "  -e --exe=<executable>  sélectionner le nom du fichier d'entrée (par défaut est a.out)\n"
+"  -i --inlines           dérouler les fonctions enlignes\n"
 "  -s --basenames         élaguer les noms de répertoires\n"
 "  -f --functions         afficher les noms de fonctions\n"
 "  -C --demangle[=style]  décoder les noms de fonction\n"
@@ -53,210 +56,217 @@ msgstr ""
 "  -V --version           afficher le nom et la version du logiciel\n"
 "\n"
 
-#: addr2line.c:88 ar.c:263 coffdump.c:467 nlmconv.c:1110 objcopy.c:478
-#: objcopy.c:512 readelf.c:2631 size.c:99 srconv.c:1731 strings.c:667
-#: sysdump.c:655 windres.c:672
+#: addr2line.c:93 ar.c:263 coffdump.c:466 nlmconv.c:1113 objcopy.c:486
+#: objcopy.c:520 readelf.c:2622 size.c:102 srconv.c:1732 strings.c:725
+#: sysdump.c:648 windres.c:673
 #, c-format
 msgid "Report bugs to %s\n"
 msgstr "Rapporter toutes anomalies à %s\n"
 
-#: addr2line.c:241
+#: addr2line.c:253
 #, c-format
 msgid "%s: can not get addresses from archive"
 msgstr "%s: ne peut obtenir l'adresse à partir de l'archive"
 
-#: addr2line.c:311 nm.c:1519 objdump.c:2848
+#: addr2line.c:325 nm.c:1523 objdump.c:3033
 #, c-format
 msgid "unknown demangling style `%s'"
 msgstr "style de d'encodage par mutilation inconnu « %s »"
 
-#: ar.c:205
+#: ar.c:203
 #, c-format
 msgid "no entry %s in archive\n"
 msgstr "pas d'entrée %s dans l'archive\n"
 
-#: ar.c:221
+#: ar.c:219
 #, c-format
 msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
 msgstr "Usage: %s [options d'émulation] [-]{dmpqrstx}[abcfilNoPsSuvV] [nom-du-membre] [compteur] fichier-archive fichier...\n"
 
-#: ar.c:224
+#: ar.c:222
 #, c-format
 msgid "       %s -M [<mri-script]\n"
 msgstr "       %s -M [<script-mri]\n"
 
-#: ar.c:225
+#: ar.c:223
 #, c-format
 msgid " commands:\n"
 msgstr " commandes:\n"
 
-#: ar.c:226
+#: ar.c:224
 #, c-format
 msgid "  d            - delete file(s) from the archive\n"
 msgstr "  d            - détruire le(s) fichier(s) de l'archive\n"
 
-#: ar.c:227
+#: ar.c:225
 #, c-format
 msgid "  m[ab]        - move file(s) in the archive\n"
 msgstr "  m[ab]        - déplacer le(s) fichier(s) dans l'archive\n"
 
-#: ar.c:228
+#: ar.c:226
 #, c-format
 msgid "  p            - print file(s) found in the archive\n"
 msgstr "  p            - afficher le nom des fichiers trouvés dans l'archive\n"
 
-#: ar.c:229
+#: ar.c:227
 #, c-format
 msgid "  q[f]         - quick append file(s) to the archive\n"
 msgstr "  q[f]         - ajout rapide des fichiers à l'archive\n"
 
-#: ar.c:230
+#: ar.c:228
 #, c-format
 msgid "  r[ab][f][u]  - replace existing or insert new file(s) into the archive\n"
 msgstr "  r[ab][f][u]  - remplacer les fichiers exitants ou inserer les nouveaux dans l'archive\n"
 
-#: ar.c:231
+#: ar.c:229
 #, c-format
 msgid "  t            - display contents of archive\n"
 msgstr "  t            - afficher le contenu de l'archive\n"
 
-#: ar.c:232
+#: ar.c:230
 #, c-format
 msgid "  x[o]         - extract file(s) from the archive\n"
 msgstr "  x[o]         - extraire les fichiers de l'archive\n"
 
-#: ar.c:233
+#: ar.c:231
 #, c-format
 msgid " command specific modifiers:\n"
 msgstr " modificateurs spécifiques de commandes:\n"
 
-#: ar.c:234
+#: ar.c:232
 #, c-format
 msgid "  [a]          - put file(s) after [member-name]\n"
 msgstr "  [a]          - placer le(s) fichier(s) après le [nom-de-membre]\n"
 
-#: ar.c:235
+#: ar.c:233
 #, c-format
 msgid "  [b]          - put file(s) before [member-name] (same as [i])\n"
 msgstr "  [b]          - placer le(s) fichier(s) avant le [nom-de-membre] (identique à [i])\n"
 
-#: ar.c:236
+#: ar.c:234
 #, c-format
 msgid "  [N]          - use instance [count] of name\n"
 msgstr "  [N]          - utiliser le [compteur] du nom\n"
 
-#: ar.c:237
+#: ar.c:235
 #, c-format
 msgid "  [f]          - truncate inserted file names\n"
 msgstr "  [f]          - tronquer les noms des fichiers insérés\n"
 
-#: ar.c:238
+#: ar.c:236
 #, c-format
 msgid "  [P]          - use full path names when matching\n"
 msgstr "  [P]          - utliser des chemins complets lors d'un appariement\n"
 
-#: ar.c:239
+#: ar.c:237
 #, c-format
 msgid "  [o]          - preserve original dates\n"
 msgstr "  [o]          - préserver les dates d'origine\n"
 
-#: ar.c:240
+#: ar.c:238
 #, c-format
 msgid "  [u]          - only replace files that are newer than current archive contents\n"
 msgstr "  [u]          - remplacer seulement les fichiers de l'archive par les plus récents\n"
 
-#: ar.c:241
+#: ar.c:239
 #, c-format
 msgid " generic modifiers:\n"
 msgstr " modificateurs génériques:\n"
 
-#: ar.c:242
+#: ar.c:240
 #, c-format
 msgid "  [c]          - do not warn if the library had to be created\n"
 msgstr "  [c]          - ne pas avertir si la librarie doit être créée\n"
 
-#: ar.c:243
+#: ar.c:241
 #, c-format
 msgid "  [s]          - create an archive index (cf. ranlib)\n"
 msgstr "  [s]          - créer un index d'archive (voir ranlib)\n"
 
-#: ar.c:244
+#: ar.c:242
 #, c-format
 msgid "  [S]          - do not build a symbol table\n"
 msgstr "  [S]          - ne pas construire une table de symboles\n"
 
-#: ar.c:245
+#: ar.c:243
 #, c-format
 msgid "  [v]          - be verbose\n"
 msgstr "  [v]          - utiliser le mode verbeux\n"
 
-#: ar.c:246
+#: ar.c:244
 #, c-format
 msgid "  [V]          - display the version number\n"
 msgstr "  [V]          - afficher le numéro de version\n"
 
-#: ar.c:253
+#: ar.c:245
+#, c-format
+msgid "  @<file>      - read options from <file>\n"
+msgstr "  @<fichier_def>        lire les options à partir du <fichier>\n"
+
+#: ar.c:252
 #, c-format
 msgid "Usage: %s [options] archive\n"
 msgstr "Usage: %s [options] archive\n"
 
-#: ar.c:254
+#: ar.c:253
 #, c-format
 msgid " Generate an index to speed access to archives\n"
 msgstr " Générer un index pour accélérer les accès aux archives\n"
 
-#: ar.c:255
+#: ar.c:254
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                      Read options from <file>\n"
 "  -h --help                    Print this help message\n"
 "  -V --version                 Print version information\n"
 msgstr ""
 "Les options sont:\n"
+"  @<fichier>                 lire les options à partir du <fichier>\n"
 "   -h --help                 afficher l'aide-mémoire\n"
 "   -V --version              afficher le nom et la version du logiciel\n"
 
-#: ar.c:483
+#: ar.c:485
 msgid "two different operation options specified"
 msgstr "deux operations différentes spécifiées"
 
-#: ar.c:558
+#: ar.c:560
 #, c-format
 msgid "illegal option -- %c"
 msgstr "option illégale -- %c"
 
-#: ar.c:604
+#: ar.c:606
 msgid "no operation specified"
 msgstr "aucune opération spécifiée"
 
-#: ar.c:607
+#: ar.c:609
 msgid "`u' is only meaningful with the `r' option."
 msgstr "« u » n'a de sens qu'avec l'option « r »."
 
-#: ar.c:615
+#: ar.c:617
 msgid "`N' is only meaningful with the `x' and `d' options."
 msgstr "« N » n'a de  sens qu'avec les options « x » et « d »."
 
-#: ar.c:618
+#: ar.c:620
 msgid "Value for `N' must be positive."
 msgstr "La valeur de « N » doit être positive."
 
-#: ar.c:668
+#: ar.c:670
 #, c-format
 msgid "internal error -- this option not implemented"
 msgstr "erreur interne -- cette option n'est pas implantée"
 
-#: ar.c:737
+#: ar.c:739
 #, c-format
 msgid "creating %s"
 msgstr "création de %s"
 
-#: ar.c:786 ar.c:836 ar.c:1154 objcopy.c:1603
+#: ar.c:788 ar.c:838 ar.c:1156 objcopy.c:1683
 #, c-format
 msgid "internal stat error on %s"
 msgstr "erreur interne d'évaluation de %s par stat()"
 
-#: ar.c:790
+#: ar.c:792
 #, c-format
 msgid ""
 "\n"
@@ -267,37 +277,37 @@ msgstr ""
 "<%s>\n"
 "\n"
 
-#: ar.c:806 ar.c:873
+#: ar.c:808 ar.c:875
 #, c-format
 msgid "%s is not a valid archive"
 msgstr "%s n'est pas une archive valide"
 
-#: ar.c:841
+#: ar.c:843
 #, c-format
 msgid "stat returns negative size for %s"
 msgstr "stat() a retourné une taille négative for %s"
 
-#: ar.c:1059
+#: ar.c:1061
 #, c-format
 msgid "No member named `%s'\n"
 msgstr "Aucun membre ayant le nom « %s »\n"
 
-#: ar.c:1109
+#: ar.c:1111
 #, c-format
 msgid "no entry %s in archive %s!"
 msgstr "aucune entrée %s dans l'archive %s!"
 
-#: ar.c:1246
+#: ar.c:1248
 #, c-format
 msgid "%s: no archive map to update"
 msgstr "%s: aucune table d'archive à mettre à jour"
 
-#: arsup.c:83
+#: arsup.c:87
 #, c-format
 msgid "No entry %s in archive.\n"
 msgstr "Aucune entrée %s dans l'archive.\n"
 
-#: arsup.c:109
+#: arsup.c:112
 #, c-format
 msgid "Can't open file %s\n"
 msgstr "Ne peut ouvrir le fichier %s\n"
@@ -353,95 +363,97 @@ msgid "  No emulation specific options\n"
 msgstr "  Pas d'options d'émulation spécifiques\n"
 
 #. Macros for common output.
-#: binemul.h:42
+#: binemul.h:40
 #, c-format
 msgid " emulation options: \n"
 msgstr "  Options d'émulation: \n"
 
-#: bucomm.c:109
+#: bucomm.c:110
 #, c-format
 msgid "can't set BFD default target to `%s': %s"
 msgstr "ne peut initialiser les paramètres par défaut BDF cible vers « %s »: %s"
 
-#: bucomm.c:120
+#: bucomm.c:121
 #, c-format
 msgid "%s: Matching formats:"
 msgstr "%s: formats concordant:"
 
-#: bucomm.c:135
+#: bucomm.c:136
 #, c-format
 msgid "Supported targets:"
 msgstr "Cibles supportés:"
 
-#: bucomm.c:137
+#: bucomm.c:138
 #, c-format
 msgid "%s: supported targets:"
 msgstr "%s: cibles supportés:"
 
-#: bucomm.c:153
+#: bucomm.c:154
 #, c-format
 msgid "Supported architectures:"
 msgstr "Architectures supportées:"
 
-#: bucomm.c:155
+#: bucomm.c:156
 #, c-format
 msgid "%s: supported architectures:"
 msgstr "%s: architectures supportées:"
 
-#: bucomm.c:348
+#: bucomm.c:349
 #, c-format
 msgid "BFD header file version %s\n"
 msgstr "Version de l'en-tête du fichier BFD %s\n"
 
-#: bucomm.c:449
+#: bucomm.c:450
 #, c-format
 msgid "%s: bad number: %s"
 msgstr "%s: mauvais numéro: %s"
 
-#: bucomm.c:466 strings.c:386
+#: bucomm.c:467 strings.c:438
 #, c-format
 msgid "'%s': No such file"
 msgstr "'%s': pas de fichier comme tel"
 
-#: bucomm.c:468 strings.c:388
+#: bucomm.c:469 strings.c:440
 #, c-format
 msgid "Warning: could not locate '%s'.  reason: %s"
 msgstr "AVERTISSEMENT: ne peut localiser '%s'. Raison: %s"
 
-#: bucomm.c:472
+#: bucomm.c:473
 #, c-format
 msgid "Warning: '%s' is not an ordinary file"
 msgstr "AVERTISSEMENT: '%s' n'est pas un fichier ordinaire"
 
-#: coffdump.c:105
+#: coffdump.c:103
 #, c-format
 msgid "#lines %d "
 msgstr "# de lignes %d "
 
-#: coffdump.c:459 sysdump.c:648
+#: coffdump.c:457 sysdump.c:641
 #, c-format
 msgid "Usage: %s [option(s)] in-file\n"
 msgstr "Usage: %s [options] fichier\n"
 
-#: coffdump.c:460
+#: coffdump.c:458
 #, c-format
 msgid " Print a human readable interpretation of a SYSROFF object file\n"
 msgstr "Aficher dans un format humainement lisible une interprétation du fichier objet SYSROFF\n"
 
-#: coffdump.c:461
+#: coffdump.c:459
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                Read options from <file>\n"
 "  -h --help              Display this information\n"
 "  -v --version           Display the program's version\n"
 "\n"
 msgstr ""
 "Les options sont:\n"
+"  @<fichier>                 lire les options à partir du <fichier>\n"
 "   -h --help                 afficher l'aide-mémoire\n"
 "   -V --version              afficher le nom et la version du logiciel\n"
 "\n"
 
-#: coffdump.c:527 srconv.c:1819 sysdump.c:710
+#: coffdump.c:528 srconv.c:1822 sysdump.c:705
 msgid "no input file specified"
 msgstr "Aucune fichier spécifié à l'entrée"
 
@@ -538,576 +550,586 @@ msgstr "debug_get_real_type: information circulaire de d
 msgid "debug_write_type: illegal type encountered"
 msgstr "debug_write_type: type illégal rencontré"
 
-#: dlltool.c:773 dlltool.c:797 dlltool.c:826
+#: dlltool.c:765 dlltool.c:789 dlltool.c:818
 #, c-format
 msgid "Internal error: Unknown machine type: %d"
 msgstr "erreur interne: type de machine inconnue: %d"
 
-#: dlltool.c:862
+#: dlltool.c:854
 #, c-format
 msgid "Can't open def file: %s"
 msgstr "Ne peut ouvrir le fichier de définition: %s"
 
-#: dlltool.c:867
+#: dlltool.c:859
 #, c-format
 msgid "Processing def file: %s"
 msgstr "Traitement du fichier de définition: %s"
 
-#: dlltool.c:871
+#: dlltool.c:863
 msgid "Processed def file"
 msgstr "Traitement complété du fichier de définition"
 
-#: dlltool.c:895
+#: dlltool.c:887
 #, c-format
 msgid "Syntax error in def file %s:%d"
 msgstr "Erreur de syntaxe dans le fichier de définition %s:%d"
 
-#: dlltool.c:930
+#: dlltool.c:922
 #, c-format
 msgid "%s: Path components stripped from image name, '%s'."
 msgstr "%s: composants du chemin ont été éliminé du nom de l'imiage '%s'."
 
-#: dlltool.c:939
+#: dlltool.c:931
 #, c-format
 msgid "NAME: %s base: %x"
 msgstr "NOM: %s base: %x"
 
-#: dlltool.c:942 dlltool.c:958
+#: dlltool.c:934 dlltool.c:950
 msgid "Can't have LIBRARY and NAME"
 msgstr "Ne peut trouver la LIBRAIRIE et le NOM"
 
-#: dlltool.c:955
+#: dlltool.c:947
 #, c-format
 msgid "LIBRARY: %s base: %x"
 msgstr "LIBRAIRIE: %s base %x"
 
-#: dlltool.c:1191 resrc.c:269
+#: dlltool.c:1183 resrc.c:269
 #, c-format
 msgid "wait: %s"
 msgstr "en attente: %s"
 
-#: dlltool.c:1196 dllwrap.c:418 resrc.c:274
+#: dlltool.c:1188 dllwrap.c:413 resrc.c:274
 #, c-format
 msgid "subprocess got fatal signal %d"
 msgstr "sous-processus a reçu le signal fatal %d"
 
-#: dlltool.c:1202 dllwrap.c:425 resrc.c:281
+#: dlltool.c:1194 dllwrap.c:420 resrc.c:281
 #, c-format
 msgid "%s exited with status %d"
 msgstr "%s a terminé avec le statut %d"
 
-#: dlltool.c:1233
+#: dlltool.c:1225
 #, c-format
 msgid "Sucking in info from %s section in %s"
 msgstr "Aspirer les informations de la section %s dans %s"
 
-#: dlltool.c:1358
+#: dlltool.c:1350
 #, c-format
 msgid "Excluding symbol: %s"
 msgstr "Exclusion de symbole: %s"
 
-#: dlltool.c:1447 dlltool.c:1458 nm.c:998 nm.c:1009
+#: dlltool.c:1439 dlltool.c:1450 nm.c:1000 nm.c:1011
 #, c-format
 msgid "%s: no symbols"
 msgstr "%s: aucun symbole"
 
 #. FIXME: we ought to read in and block out the base relocations.
-#: dlltool.c:1484
+#: dlltool.c:1476
 #, c-format
 msgid "Done reading %s"
 msgstr "Lecture complétée %s"
 
-#: dlltool.c:1494
+#: dlltool.c:1486
 #, c-format
 msgid "Unable to open object file: %s"
 msgstr "Incapable d'ouvrir le fichier objet: %s"
 
-#: dlltool.c:1497
+#: dlltool.c:1489
 #, c-format
 msgid "Scanning object file %s"
 msgstr "Scrutation du fichier objet %s"
 
-#: dlltool.c:1512
+#: dlltool.c:1504
 #, c-format
 msgid "Cannot produce mcore-elf dll from archive file: %s"
 msgstr "Ne peutproduire mcore-elf dll à partir du fichier d'archive: %s"
 
-#: dlltool.c:1598
+#: dlltool.c:1590
 msgid "Adding exports to output file"
 msgstr "Ajout des exports au fichier de sortie"
 
-#: dlltool.c:1646
+#: dlltool.c:1638
 msgid "Added exports to output file"
 msgstr "Exports ajoutés au fichier de sortie"
 
-#: dlltool.c:1767
+#: dlltool.c:1759
 #, c-format
 msgid "Generating export file: %s"
 msgstr "Génération du fichier d'exports: %s"
 
-#: dlltool.c:1772
+#: dlltool.c:1764
 #, c-format
 msgid "Unable to open temporary assembler file: %s"
 msgstr "Incapable d'ouvrir le fichier assembleur temporaire: %s"
 
-#: dlltool.c:1775
+#: dlltool.c:1767
 #, c-format
 msgid "Opened temporary file: %s"
 msgstr "Fichier temporaire ouvert: %s"
 
-#: dlltool.c:1997
+#: dlltool.c:1989
 msgid "Generated exports file"
 msgstr "Fichier d'exports généré"
 
-#: dlltool.c:2203
+#: dlltool.c:2195
 #, c-format
 msgid "bfd_open failed open stub file: %s"
 msgstr "échec de bfd_open lors de l'ouverture du fichier stub: %s"
 
-#: dlltool.c:2206
+#: dlltool.c:2198
 #, c-format
 msgid "Creating stub file: %s"
 msgstr "Création du fichier stub: %s"
 
-#: dlltool.c:2588
+#: dlltool.c:2580
 #, c-format
 msgid "failed to open temporary head file: %s"
 msgstr "échec d'ouverture du fichier de tête temporaire: %s"
 
-#: dlltool.c:2647
+#: dlltool.c:2639
 #, c-format
 msgid "failed to open temporary tail file: %s"
 msgstr "échec d'ouverture du fichier de queue temporaire: %s"
 
-#: dlltool.c:2714
+#: dlltool.c:2706
 #, c-format
 msgid "Can't open .lib file: %s"
 msgstr "Ne peut ouvrir le fichier .lib: %s"
 
-#: dlltool.c:2717
+#: dlltool.c:2709
 #, c-format
 msgid "Creating library file: %s"
 msgstr "Création du fichier de librairie: %s"
 
-#: dlltool.c:2800 dlltool.c:2806
+#: dlltool.c:2792 dlltool.c:2798
 #, c-format
 msgid "cannot delete %s: %s"
 msgstr "ne peut détruire %s: %s"
 
-#: dlltool.c:2811
+#: dlltool.c:2803
 msgid "Created lib file"
 msgstr "Fichier de libraire créé"
 
-#: dlltool.c:2904
+#: dlltool.c:2882
 #, c-format
 msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
 msgstr "AVERTISSEMENT: EXPORT en duplication ignoré %s %d,%d"
 
-#: dlltool.c:2910
+#: dlltool.c:2888
 #, c-format
 msgid "Error, duplicate EXPORT with oridinals: %s"
 msgstr "ERREUR, EXPORT en duplication avec ordinals: %s"
 
-#: dlltool.c:3026
+#: dlltool.c:2993
 msgid "Processing definitions"
 msgstr "Traitement des définitions"
 
-#: dlltool.c:3058
+#: dlltool.c:3025
 msgid "Processed definitions"
 msgstr "Définitions traitées"
 
 #. xgetext:c-format
-#: dlltool.c:3065 dllwrap.c:479
+#: dlltool.c:3032 dllwrap.c:474
 #, c-format
 msgid "Usage %s <option(s)> <object-file(s)>\n"
 msgstr "Usage %s <options> <fichiers-objet>\n"
 
 #. xgetext:c-format
-#: dlltool.c:3067
+#: dlltool.c:3034
 #, c-format
 msgid "   -m --machine <machine>    Create as DLL for <machine>.  [default: %s]\n"
 msgstr "   -m --machine <machine>    créer comme DLL pour la <machine>.  [défaut: %s]\n"
 
-#: dlltool.c:3068
+#: dlltool.c:3035
 #, c-format
 msgid "        possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
 msgstr "        possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
 
-#: dlltool.c:3069
+#: dlltool.c:3036
 #, c-format
 msgid "   -e --output-exp <outname> Generate an export file.\n"
 msgstr "   -e --output-exp <nom_de_sortie> générer un fichier d'export.\n"
 
-#: dlltool.c:3070
+#: dlltool.c:3037
 #, c-format
 msgid "   -l --output-lib <outname> Generate an interface library.\n"
 msgstr "   -l --output-lib <nom_de_sortie> générer une librairie d'interface.\n"
 
-#: dlltool.c:3071
+#: dlltool.c:3038
 #, c-format
 msgid "   -a --add-indirect         Add dll indirects to export file.\n"
 msgstr "   -a --add-indirect         ajouter les dll indirectes au fichier d'exports.\n"
 
-#: dlltool.c:3072
+#: dlltool.c:3039
 #, c-format
 msgid "   -D --dllname <name>       Name of input dll to put into interface lib.\n"
 msgstr "   -D --dllname <nom>        nom du dll à placer dans la libraire d'interface.\n"
 
-#: dlltool.c:3073
+#: dlltool.c:3040
 #, c-format
 msgid "   -d --input-def <deffile>  Name of .def file to be read in.\n"
 msgstr "   -d --input-def <fichier_def>  nom du fichier .def à lire\n"
 
-#: dlltool.c:3074
+#: dlltool.c:3041
 #, c-format
 msgid "   -z --output-def <deffile> Name of .def file to be created.\n"
 msgstr "   -z --output-def <fichier_def> nom du fichier .def à créer.\n"
 
-#: dlltool.c:3075
+#: dlltool.c:3042
 #, c-format
 msgid "      --export-all-symbols   Export all symbols to .def\n"
 msgstr "      --export-all-symbols   exporter tous les symboles vers le fichier .def\n"
 
-#: dlltool.c:3076
+#: dlltool.c:3043
 #, c-format
 msgid "      --no-export-all-symbols  Only export listed symbols\n"
 msgstr "      --no-export-all-symbols  exporter seulement la liste des symboles\n"
 
-#: dlltool.c:3077
+#: dlltool.c:3044
 #, c-format
 msgid "      --exclude-symbols <list> Don't export <list>\n"
 msgstr "      --exclude-symbols <liste> ne pas exporter la <liste>\n"
 
-#: dlltool.c:3078
+#: dlltool.c:3045
 #, c-format
 msgid "      --no-default-excludes  Clear default exclude symbols\n"
 msgstr "      --no-default-excludes  ne pas tenir compte des symboles d'exclusion par défaut\n"
 
-#: dlltool.c:3079
+#: dlltool.c:3046
 #, c-format
 msgid "   -b --base-file <basefile> Read linker generated base file.\n"
 msgstr "   -b --base-file <fichier_base> lire le fichier de base généré par l'éditeur de liens\n"
 
-#: dlltool.c:3080
+#: dlltool.c:3047
 #, c-format
 msgid "   -x --no-idata4            Don't generate idata$4 section.\n"
 msgstr "   -x --no-idata4            ne pas générer la section idata$4\n"
 
-#: dlltool.c:3081
+#: dlltool.c:3048
 #, c-format
 msgid "   -c --no-idata5            Don't generate idata$5 section.\n"
 msgstr "   -c --no-idata5            ne pas générer la section idata$5\n"
 
-#: dlltool.c:3082
+#: dlltool.c:3049
 #, c-format
 msgid "   -U --add-underscore       Add underscores to symbols in interface library.\n"
 msgstr "   -U --add-underscore       ajouter des soulignés aux symboles dans la librairie d'interface\n"
 
-#: dlltool.c:3083
+#: dlltool.c:3050
 #, c-format
 msgid "   -k --kill-at              Kill @<n> from exported names.\n"
 msgstr "   -k --kill-at              stopper @<n> à partir des noms exportés\n"
 
-#: dlltool.c:3084
+#: dlltool.c:3051
 #, c-format
 msgid "   -A --add-stdcall-alias    Add aliases without @<n>.\n"
 msgstr "   -A --add-stdcall-alias    ajouter des aliases sans @<n>\n"
 
-#: dlltool.c:3085
+#: dlltool.c:3052
 #, c-format
 msgid "   -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
 msgstr "   -p --axd-prefix-alias <préfixe>  ajouter des aliases avec <préfixe>.\n"
 
-#: dlltool.c:3086
+#: dlltool.c:3053
 #, c-format
 msgid "   -S --as <name>            Use <name> for assembler.\n"
 msgstr "   -S --as <nom>             utiliser le <nom> pour l'assembleur\n"
 
-#: dlltool.c:3087
+#: dlltool.c:3054
 #, c-format
 msgid "   -f --as-flags <flags>     Pass <flags> to the assembler.\n"
 msgstr "   -f --as-flags <fanions>   relayer les <fanions> à l'assembleur\n"
 
-#: dlltool.c:3088
+#: dlltool.c:3055
 #, c-format
 msgid "   -C --compat-implib        Create backward compatible import library.\n"
 msgstr "   -C --compat-implib        créer une compatibilité arrière à la librairie d'importation\n"
 
-#: dlltool.c:3089
+#: dlltool.c:3056
 #, c-format
 msgid "   -n --no-delete            Keep temp files (repeat for extra preservation).\n"
 msgstr "   -n --no-delete            conserver les fichier temporaires\n"
 
-#: dlltool.c:3090
+#: dlltool.c:3057
 #, c-format
 msgid "   -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"
 msgstr "   -t --temp-prefix <préfixe> utiliser le <préfixe> pour construire les noms de fichiers temporaires.\n"
 
-#: dlltool.c:3091
+#: dlltool.c:3058
 #, c-format
 msgid "   -v --verbose              Be verbose.\n"
 msgstr "   -v --verbose              passer en mode bavard\n"
 
-#: dlltool.c:3092
+#: dlltool.c:3059
 #, c-format
 msgid "   -V --version              Display the program version.\n"
 msgstr "   -V --version              afficher le nom et la version du logiciel\n"
 
-#: dlltool.c:3093
+#: dlltool.c:3060
 #, c-format
 msgid "   -h --help                 Display this information.\n"
 msgstr "   -h --help                 afficher l'aide-mémoire\n"
 
-#: dlltool.c:3095
+#: dlltool.c:3061
+#, c-format
+msgid "   @<file>                   Read options from <file>.\n"
+msgstr "   @<fichier>                lire les options à partir du <fichier>\n"
+
+#: dlltool.c:3063
 #, c-format
 msgid "   -M --mcore-elf <outname>  Process mcore-elf object files into <outname>.\n"
 msgstr "   -M --mcore-elf <nom_sortie>  traiter le fichier objet mcore-elf selon le <nom_de_sortie>\n"
 
-#: dlltool.c:3096
+#: dlltool.c:3064
 #, c-format
 msgid "   -L --linker <name>        Use <name> as the linker.\n"
 msgstr "   -L --linker <nom>         utiliser <nom> comme éditeur de liens\n"
 
-#: dlltool.c:3097
+#: dlltool.c:3065
 #, c-format
 msgid "   -F --linker-flags <flags> Pass <flags> to the linker.\n"
 msgstr "   -F --linker-flags <fanions> relayer les <fanions> à l'éditeur de liens\n"
 
-#: dlltool.c:3211
+#: dlltool.c:3181
 #, c-format
 msgid "Path components stripped from dllname, '%s'."
 msgstr "Composants du chemin ont été éliminés du nom dll '%s'."
 
-#: dlltool.c:3256
+#: dlltool.c:3226
 #, c-format
 msgid "Unable to open base-file: %s"
 msgstr "Incapable d'ouvrir le fichier de base: %s"
 
-#: dlltool.c:3288
+#: dlltool.c:3258
 #, c-format
 msgid "Machine '%s' not supported"
 msgstr "Machine « %s » n'est pas supportée"
 
-#: dlltool.c:3392 dllwrap.c:209
+#: dlltool.c:3362 dllwrap.c:204
 #, c-format
 msgid "Tried file: %s"
 msgstr "Essai avec le fichier: %s"
 
-#: dlltool.c:3399 dllwrap.c:216
+#: dlltool.c:3369 dllwrap.c:211
 #, c-format
 msgid "Using file: %s"
 msgstr "Utilisation du fichier: %s"
 
-#: dllwrap.c:299
+#: dllwrap.c:294
 #, c-format
 msgid "Keeping temporary base file %s"
 msgstr "Conservation temportaire du fichier de base %s"
 
-#: dllwrap.c:301
+#: dllwrap.c:296
 #, c-format
 msgid "Deleting temporary base file %s"
 msgstr "Destruction du fichier de base temporaire %s"
 
-#: dllwrap.c:315
+#: dllwrap.c:310
 #, c-format
 msgid "Keeping temporary exp file %s"
 msgstr "Conservation du fichier temporaire exp %s"
 
-#: dllwrap.c:317
+#: dllwrap.c:312
 #, c-format
 msgid "Deleting temporary exp file %s"
 msgstr "Destruction du fichier exp temporaire %s"
 
-#: dllwrap.c:330
+#: dllwrap.c:325
 #, c-format
 msgid "Keeping temporary def file %s"
 msgstr "Conservation du fichier temporaire def %s"
 
-#: dllwrap.c:332
+#: dllwrap.c:327
 #, c-format
 msgid "Deleting temporary def file %s"
 msgstr "Destruction du fichier temporaire def %s"
 
-#: dllwrap.c:480
+#: dllwrap.c:475
 #, c-format
 msgid "  Generic options:\n"
 msgstr "  Option génériques:\n"
 
-#: dllwrap.c:481
+#: dllwrap.c:476
+#, c-format
+msgid "   @<file>                Read options from <file>\n"
+msgstr "   @<fichier>             lire les options à partir du <fichier>\n"
+
+#: dllwrap.c:477
 #, c-format
 msgid "   --quiet, -q            Work quietly\n"
-msgstr "   --quiet, -q            travailler en silence\n"
+msgstr "   --quiet, -q            travailler silencieusement\n"
 
-#: dllwrap.c:482
+#: dllwrap.c:478
 #, c-format
 msgid "   --verbose, -v          Verbose\n"
 msgstr "   --verbose, -v          travailler en mode bavard\n"
 
-#: dllwrap.c:483
+#: dllwrap.c:479
 #, c-format
 msgid "   --version              Print dllwrap version\n"
 msgstr "   --version              afficher la version du dllwrap\n"
 
-#: dllwrap.c:484
+#: dllwrap.c:480
 #, c-format
 msgid "   --implib <outname>     Synonym for --output-lib\n"
 msgstr "   --implib <outname>     identique à --output-lib\n"
 
-#: dllwrap.c:485
+#: dllwrap.c:481
 #, c-format
 msgid "  Options for %s:\n"
 msgstr "  Options pour %s:\n"
 
-#: dllwrap.c:486
+#: dllwrap.c:482
 #, c-format
 msgid "   --driver-name <driver> Defaults to \"gcc\"\n"
 msgstr "   --driver-name <pilote> par défaut « gcc »\n"
 
-#: dllwrap.c:487
+#: dllwrap.c:483
 #, c-format
 msgid "   --driver-flags <flags> Override default ld flags\n"
 msgstr "   --driver-flags <fanion> écrasesr les fanions par défaut de ld\n"
 
-#: dllwrap.c:488
+#: dllwrap.c:484
 #, c-format
 msgid "   --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
 msgstr "   --dlltool-name <outil-dll> par défaut « dlltool »\n"
 
-#: dllwrap.c:489
+#: dllwrap.c:485
 #, c-format
 msgid "   --entry <entry>        Specify alternate DLL entry point\n"
 msgstr "   --entry <entrée>       spécifier une entrée alternative au point d'entrée du DLL\n"
 
-#: dllwrap.c:490
+#: dllwrap.c:486
 #, c-format
 msgid "   --image-base <base>    Specify image base address\n"
 msgstr "   --image-base <base>    spécifier une adresse de l'image de base\n"
 
-#: dllwrap.c:491
+#: dllwrap.c:487
 #, c-format
 msgid "   --target <machine>     i386-cygwin32 or i386-mingw32\n"
 msgstr "   --target <machine>     i386-cygwin32 ou i386-mingw32\n"
 
-#: dllwrap.c:492
+#: dllwrap.c:488
 #, c-format
 msgid "   --dry-run              Show what needs to be run\n"
 msgstr "   --dry-run              afficher ce qui est nécessaire pour l'exécution\n"
 
-#: dllwrap.c:493
+#: dllwrap.c:489
 #, c-format
 msgid "   --mno-cygwin           Create Mingw DLL\n"
 msgstr "   --mno-cygwin           créer une DLL de type Mingw\n"
 
-#: dllwrap.c:494
+#: dllwrap.c:490
 #, c-format
 msgid "  Options passed to DLLTOOL:\n"
 msgstr "  Options relayées à DLLTOOL:\n"
 
-#: dllwrap.c:495
+#: dllwrap.c:491
 #, c-format
 msgid "   --machine <machine>\n"
 msgstr "   --machine <machine>\n"
 
-#: dllwrap.c:496
+#: dllwrap.c:492
 #, c-format
 msgid "   --output-exp <outname> Generate export file.\n"
 msgstr "   --output-exp <nom-de-sortie> générer un fichier d'exports.\n"
 
-#: dllwrap.c:497
+#: dllwrap.c:493
 #, c-format
 msgid "   --output-lib <outname> Generate input library.\n"
 msgstr "   --output-lib <nom-de-sortie> générer une librairie d'entrée.\n"
 
-#: dllwrap.c:498
+#: dllwrap.c:494
 #, c-format
 msgid "   --add-indirect         Add dll indirects to export file.\n"
 msgstr "   --add-indirect         ajouter les dll indirectes au fichier d'exports.\n"
 
-#: dllwrap.c:499
+#: dllwrap.c:495
 #, c-format
 msgid "   --dllname <name>       Name of input dll to put into output lib.\n"
 msgstr "   --dllname <nom>        nom du dll d'entrée à ajouter dans le fichier lib de sortie.\n"
 
-#: dllwrap.c:500
+#: dllwrap.c:496
 #, c-format
 msgid "   --def <deffile>        Name input .def file\n"
 msgstr "   --def <fichier_def>        nom du fichier d'entrée .def\n"
 
-#: dllwrap.c:501
+#: dllwrap.c:497
 #, c-format
 msgid "   --output-def <deffile> Name output .def file\n"
 msgstr "   --output-def <fichier_def> nom du fichier de sortie .def\n"
 
-#: dllwrap.c:502
+#: dllwrap.c:498
 #, c-format
 msgid "   --export-all-symbols     Export all symbols to .def\n"
 msgstr "   --export-all-symbols     exporter tous les symboles au fichier .def\n"
 
-#: dllwrap.c:503
+#: dllwrap.c:499
 #, c-format
 msgid "   --no-export-all-symbols  Only export .drectve symbols\n"
 msgstr "   --no-export-all-symbols  exporter seulement les symboles .drectve\n"
 
-#: dllwrap.c:504
+#: dllwrap.c:500
 #, c-format
 msgid "   --exclude-symbols <list> Exclude <list> from .def\n"
 msgstr "   --exclude-symbols <liste> exclure la <liste> de .def\n"
 
-#: dllwrap.c:505
+#: dllwrap.c:501
 #, c-format
 msgid "   --no-default-excludes    Zap default exclude symbols\n"
 msgstr "   --no-default-excludes    ignorer les symboles par défaut d'exclusion\n"
 
-#: dllwrap.c:506
+#: dllwrap.c:502
 #, c-format
 msgid "   --base-file <basefile> Read linker generated base file\n"
 msgstr "   --base-file <fichier_base> lire le fichier de base généré par l'éditeur de liens\n"
 
-#: dllwrap.c:507
+#: dllwrap.c:503
 #, c-format
 msgid "   --no-idata4           Don't generate idata$4 section\n"
 msgstr "   --no-idata4           ne pas générer la section idata$4\n"
 
-#: dllwrap.c:508
+#: dllwrap.c:504
 #, c-format
 msgid "   --no-idata5           Don't generate idata$5 section\n"
 msgstr "   --no-idata5           ne pas générer la section idata$5\n"
 
-#: dllwrap.c:509
+#: dllwrap.c:505
 #, c-format
 msgid "   -U                     Add underscores to .lib\n"
 msgstr "   -U                     ajouter des soulignés au fichier .lib\n"
 
-#: dllwrap.c:510
+#: dllwrap.c:506
 #, c-format
 msgid "   -k                     Kill @<n> from exported names\n"
 msgstr "   -k                     stopper @<n> à partir des noms exportés\n"
 
-#: dllwrap.c:511
+#: dllwrap.c:507
 #, c-format
 msgid "   --add-stdcall-alias    Add aliases without @<n>\n"
 msgstr "   --add-stdcall-alias    ajouter les aliases sans @<n>\n"
 
-#: dllwrap.c:512
+#: dllwrap.c:508
 #, c-format
 msgid "   --as <name>            Use <name> for assembler\n"
 msgstr "   --as <nom>             utiliser <nom> comme assembleur\n"
 
-#: dllwrap.c:513
+#: dllwrap.c:509
 #, c-format
 msgid "   --nodelete             Keep temp files.\n"
 msgstr "   --nodelete             conserver les fichiers temporaires.\n"
 
-#: dllwrap.c:514
+#: dllwrap.c:510
 #, c-format
 msgid "  Rest are passed unmodified to the language driver\n"
 msgstr "  le reste est passé sans modification au pilote du langage\n"
 
-#: dllwrap.c:784
+#: dllwrap.c:782
 msgid "Must provide at least one of -o or --dllname options"
 msgstr "Obligation de fournir au moins une des options -o or --dllname"
 
-#: dllwrap.c:813
+#: dllwrap.c:811
 msgid ""
 "no export definition file provided.\n"
 "Creating one, but that may not be what you want"
@@ -1115,3309 +1137,3365 @@ msgstr ""
 "aucun fichier d'exportation de définitions fourni.\n"
 "Création du fichier, mais il ne correspondra pas nécessairement à ce que vous désirez."
 
-#: dllwrap.c:972
+#: dllwrap.c:970
 #, c-format
 msgid "DLLTOOL name    : %s\n"
 msgstr "OUTILDLL nom     : %s\n"
 
-#: dllwrap.c:973
+#: dllwrap.c:971
 #, c-format
 msgid "DLLTOOL options : %s\n"
 msgstr "OUTILDLL options : %s\n"
 
-#: dllwrap.c:974
+#: dllwrap.c:972
 #, c-format
 msgid "DRIVER name     : %s\n"
 msgstr "PILOTE name     : %s\n"
 
-#: dllwrap.c:975
+#: dllwrap.c:973
 #, c-format
 msgid "DRIVER options  : %s\n"
 msgstr "PILOTE options  : %s\n"
 
-#: emul_aix.c:51
+#: dwarf.c:93 dwarf.c:137 readelf.c:322 readelf.c:515
 #, c-format
-msgid "  [-g]         - 32 bit small archive\n"
-msgstr "  [-g]         - petite archive de 32 bits\n"
+msgid "Unhandled data length: %d\n"
+msgstr "Taille de données non traitées: %d\n"
 
-#: emul_aix.c:52
+#: dwarf.c:237
+msgid "badly formed extended line op encountered!\n"
+msgstr "ligne rencontrée de l'extension de l'opérateur est mal composée!\n"
+
+#: dwarf.c:244
 #, c-format
-msgid "  [-X32]       - ignores 64 bit objects\n"
-msgstr "  [-X32]       - ignore les objets de 64 bits\n"
+msgid "  Extended opcode %d: "
+msgstr "  Code op étendu  %d: "
 
-#: emul_aix.c:53
+#: dwarf.c:249
 #, c-format
-msgid "  [-X64]       - ignores 32 bit objects\n"
-msgstr "  [-X64]       - ignore les objets de 32 bits\n"
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"Fin de séquence\n"
+"\n"
 
-#: emul_aix.c:54
+#: dwarf.c:255
 #, c-format
-msgid "  [-X32_64]    - accepts 32 and 64 bit objects\n"
-msgstr "  [-X32_64]    - accepter les objets de 32 et 64 bits\n"
+msgid "set Address to 0x%lx\n"
+msgstr "initialisé l'adresse à 0x%lx\n"
 
-#: ieee.c:311
-msgid "unexpected end of debugging information"
-msgstr "fin inattendue des informations de débug"
+#: dwarf.c:260
+#, c-format
+msgid "  define new File Table entry\n"
+msgstr "  définir une entrée pour un nouveau fichier de table\n"
 
-#: ieee.c:398
-msgid "invalid number"
-msgstr "numéro invalide"
+#: dwarf.c:261 dwarf.c:1944
+#, c-format
+msgid "  Entry\tDir\tTime\tSize\tName\n"
+msgstr "  Entrée\tRép.\tDate\tTaille\tNom\n"
 
-#: ieee.c:451
-msgid "invalid string length"
-msgstr "longueur de chaîne invalide"
+#: dwarf.c:263
+#, c-format
+msgid "   %d\t"
+msgstr "   %d\t"
 
-#: ieee.c:506 ieee.c:547
-msgid "expression stack overflow"
-msgstr "débordement de pile de l'expression"
+#: dwarf.c:266 dwarf.c:268 dwarf.c:270 dwarf.c:1956 dwarf.c:1958 dwarf.c:1960
+#, c-format
+msgid "%lu\t"
+msgstr "%lu\t"
 
-#: ieee.c:526
-msgid "unsupported IEEE expression operator"
-msgstr "opérateur d'espression IEEE non supporté"
+#: dwarf.c:271
+#, c-format
+msgid ""
+"%s\n"
+"\n"
+msgstr ""
+"%s\n"
+"\n"
 
-#: ieee.c:541
-msgid "unknown section"
-msgstr "section inconnue"
+#: dwarf.c:275
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr "UNKNOWN: longueur %d\n"
 
-#: ieee.c:562
-msgid "expression stack underflow"
-msgstr "sous dépilage de l'expression"
+#: dwarf.c:288
+msgid "<no .debug_str section>"
+msgstr "<aucune section .debug_str>"
 
-#: ieee.c:576
-msgid "expression stack mismatch"
-msgstr "non concordance de l'expression dans la pile"
+#: dwarf.c:294
+#, c-format
+msgid "DW_FORM_strp offset too big: %lx\n"
+msgstr "décalage DW_FORM_strp est trop grand: %lx\n"
 
-#: ieee.c:613
-msgid "unknown builtin type"
-msgstr "type de construit interne inconnu"
+#: dwarf.c:295
+msgid "<offset is too big>"
+msgstr "<décalage trop grand>"
 
-#: ieee.c:758
-msgid "BCD float type not supported"
-msgstr "type de numérotaion flottante BCD inconnue"
+#: dwarf.c:528
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "Valeur d'étiquette (« TAG ») inconnue: %lx"
 
-#: ieee.c:895
-msgid "unexpected number"
-msgstr "numéro inattendu"
+#: dwarf.c:564
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr "Valeur FORM inconnue: %lx"
 
-#: ieee.c:902
-msgid "unexpected record type"
-msgstr "type d'enregistrement inattendu"
+#: dwarf.c:573
+#, c-format
+msgid " %lu byte block: "
+msgstr " %lu bloc d'octets: "
 
-#: ieee.c:935
-msgid "blocks left on stack at end"
-msgstr "des blocs sont demeurés sur la pile à la fin"
+#: dwarf.c:907
+#, c-format
+msgid "(User defined location op)"
+msgstr "(Op de localisation défini par l'usager)"
 
-#: ieee.c:1198
-msgid "unknown BB type"
-msgstr "type BB inconnu"
+#: dwarf.c:909
+#, c-format
+msgid "(Unknown location op)"
+msgstr "(Op de localisation inconnu)"
 
-#: ieee.c:1207
-msgid "stack overflow"
-msgstr "débordement de la pile"
+#: dwarf.c:955
+msgid "Internal error: DWARF version is not 2 or 3.\n"
+msgstr "Erreur interne: DWARF version n'est ni 2 ou 3.\n"
 
-#: ieee.c:1230
-msgid "stack underflow"
-msgstr "sous dépilage de la pile"
+#: dwarf.c:1053
+msgid "DW_FORM_data8 is unsupported when sizeof (unsigned long) != 8\n"
+msgstr "DW_FORM_data8 n'est pas supporté lorsque  sizeof (unsigned long) != 8\n"
 
-#: ieee.c:1342 ieee.c:1412 ieee.c:2109
-msgid "illegal variable index"
-msgstr "variable d'index illégale"
+#: dwarf.c:1102
+#, c-format
+msgid " (indirect string, offset: 0x%lx): %s"
+msgstr " (chaîne indirecte, décalage: 0x%lx): %s"
 
-#: ieee.c:1390
-msgid "illegal type index"
-msgstr "type d'index illégal"
-
-#: ieee.c:1400 ieee.c:1437
-msgid "unknown TY code"
-msgstr "code TY inconnu"
+#: dwarf.c:1111
+#, c-format
+msgid "Unrecognized form: %lu\n"
+msgstr "Forme non reconnue: %lu\n"
 
-#: ieee.c:1419
-msgid "undefined variable in TY"
-msgstr "variable non définie dans TY"
+#: dwarf.c:1196
+#, c-format
+msgid "(not inlined)"
+msgstr "(pas en ligne)"
 
-#. Pascal file name.  FIXME.
-#: ieee.c:1830
-msgid "Pascal file name not supported"
-msgstr "Nom de fichier Pascal non supporté"
+#: dwarf.c:1199
+#, c-format
+msgid "(inlined)"
+msgstr "(en ligne)"
 
-#: ieee.c:1878
-msgid "unsupported qualifier"
-msgstr "qualificateur non supporté"
+#: dwarf.c:1202
+#, c-format
+msgid "(declared as inline but ignored)"
+msgstr "(déclaré comme en ligne mais ignoré)"
 
-#: ieee.c:2147
-msgid "undefined variable in ATN"
-msgstr "variable non définie dans ATN"
+#: dwarf.c:1205
+#, c-format
+msgid "(declared as inline and inlined)"
+msgstr "(déclaré comme en-ligne et en-ligné"
 
-#: ieee.c:2190
-msgid "unknown ATN type"
-msgstr "type ATN inconnu"
+#: dwarf.c:1208
+#, c-format
+msgid "  (Unknown inline attribute value: %lx)"
+msgstr "  (valeur d'attribut en ligne inconnu: %lx)"
 
-#. Reserved for FORTRAN common.
-#: ieee.c:2312
-msgid "unsupported ATN11"
-msgstr "ATN11 non supporté"
+#: dwarf.c:1354 dwarf.c:2484
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr " [sans DW_AT_frame_base]"
 
-#. We have no way to record this information.  FIXME.
-#: ieee.c:2339
-msgid "unsupported ATN12"
-msgstr "ATN2 non supporté"
+#: dwarf.c:1357
+#, c-format
+msgid "(location list)"
+msgstr "(liste de localisation)"
 
-#: ieee.c:2399
-msgid "unexpected string in C++ misc"
-msgstr "chaîne inattendue dans misc en C++"
+#: dwarf.c:1475
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "Valeur AT inconnue: %lx"
 
-#: ieee.c:2412
-msgid "bad misc record"
-msgstr "mauvais enregistrement misc"
+#: dwarf.c:1544
+#, c-format
+msgid "No comp units in %s section ?"
+msgstr "Pas d'unités de comptabilisation dans la section %s ?"
 
-#: ieee.c:2453
-msgid "unrecognized C++ misc record"
-msgstr "enregistrement misc non reconnu en C++"
+#: dwarf.c:1553
+#, c-format
+msgid "Not enough memory for a debug info array of %u entries"
+msgstr "Pas asses de mémoire pour les infos dans un tableau de mise au point de %u entrées"
 
-#: ieee.c:2568
-msgid "undefined C++ object"
-msgstr "objet indéfini en C++"
+#: dwarf.c:1561 dwarf.c:2573
+#, c-format
+msgid ""
+"The section %s contains:\n"
+"\n"
+msgstr ""
+"La section %s contient:\n"
+"\n"
 
-#: ieee.c:2602
-msgid "unrecognized C++ object spec"
-msgstr "spécification d'objet non reconnu en C++"
+#: dwarf.c:1569
+#, c-format
+msgid "Unable to locate %s section!\n"
+msgstr "Incapable de localiser la section %s!\n"
 
-#: ieee.c:2638
-msgid "unsupported C++ object type"
-msgstr "type d'objet non supporté en C++"
+#: dwarf.c:1635
+#, c-format
+msgid "  Compilation Unit @ offset 0x%lx:\n"
+msgstr "  Unité de compilation @ décalée de 0x%lx:\n"
 
-#: ieee.c:2648
-msgid "C++ base class not defined"
-msgstr "classe de base non définie en C++"
+#: dwarf.c:1636
+#, c-format
+msgid "   Length:        %ld\n"
+msgstr "   Longueur:      %ld\n"
 
-#: ieee.c:2660 ieee.c:2765
-msgid "C++ object has no fields"
-msgstr "objet n'ayant pas de champ en C++"
+#: dwarf.c:1637
+#, c-format
+msgid "   Version:       %d\n"
+msgstr "   Version:       %d\n"
 
-#: ieee.c:2679
-msgid "C++ base class not found in container"
-msgstr "classe de base non repéré dans le conteneur en C++"
+#: dwarf.c:1638
+#, c-format
+msgid "   Abbrev Offset: %ld\n"
+msgstr "   Décalage agrégé: %ld\n"
 
-#: ieee.c:2786
-msgid "C++ data member not found in container"
-msgstr "membre des données non repéré dans le conteneur en C++"
+#: dwarf.c:1639
+#, c-format
+msgid "   Pointer Size:  %d\n"
+msgstr "   Taille des pointeurs:  %d\n"
 
-#: ieee.c:2827 ieee.c:2977
-msgid "unknown C++ visibility"
-msgstr "visibilité C++ inconnue"
+#: dwarf.c:1644
+msgid "Only version 2 and 3 DWARF debug information is currently supported.\n"
+msgstr "Seuls les informations de débug de la version DWARF 2 et 3 sont couramment supportés.\n"
 
-#: ieee.c:2861
-msgid "bad C++ field bit pos or size"
-msgstr "mauvais champ de bit pos ou de taille en C++"
+#: dwarf.c:1685
+#, c-format
+msgid "Unable to locate entry %lu in the abbreviation table\n"
+msgstr "Incapable de localiser l'entrée %lu dans la table d'abréviation\n"
 
-#: ieee.c:2953
-msgid "bad type for C++ method function"
-msgstr "mauvais type pour le méthode d'une fonction en C++"
+#: dwarf.c:1691
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n"
+msgstr " <%d><%lx>: Numéro d'abréviation: %lu (%s)\n"
 
-#: ieee.c:2963
-msgid "no type information for C++ method function"
-msgstr "aucune information sur le type pour la méthode de la fonction en C++"
+#: dwarf.c:1785
+#, c-format
+msgid "%s section needs a populated .debug_info section\n"
+msgstr "%s la section a besoin d'une section .debug_info_section\n"
 
-#: ieee.c:3002
-msgid "C++ static virtual method"
-msgstr "méthode statique virtuelle en C++"
+#: dwarf.c:1792
+#, c-format
+msgid "%s section has more comp units than .debug_info section\n"
+msgstr "%s la section a plus d'unités de comptabilisation que la section .debug_info_section\n"
 
-#: ieee.c:3097
-msgid "unrecognized C++ object overhead spec"
-msgstr "spécification de l'en-tête de l'objet en C++ n'est pas reconnue"
+#: dwarf.c:1794
+#, c-format
+msgid ""
+"assuming that the pointer size is %d, from the last comp unit in .debug_info\n"
+"\n"
+msgstr ""
+"on assume que la taille du pointeur est %d à partir de la dernière unité de comptabilisation dans .debug_info\n"
+"\n"
 
-#: ieee.c:3136
-msgid "undefined C++ vtable"
-msgstr "vtable non définie en C++"
+#: dwarf.c:1819
+#, c-format
+msgid ""
+"\n"
+"Dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"\n"
+"Vidange du contenu de débug de la section %s:\n"
+"\n"
 
-#: ieee.c:3205
-msgid "C++ default values not in a function"
-msgstr "valeurs par défaut ne sont pas dans une fonction en C++"
+#: dwarf.c:1858
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr "La ligne d'information semble corrompue - la section est trop petite\n"
 
-#: ieee.c:3245
-msgid "unrecognized C++ default type"
-msgstr "type par défaut en C++ n'est pas reconnu"
+#: dwarf.c:1867
+msgid "Only DWARF version 2 and 3 line info is currently supported.\n"
+msgstr "Seule la ligne d'info DWARF de version 2 et 3 est couramment supportée.\n"
 
-#: ieee.c:3276
-msgid "reference parameter is not a pointer"
-msgstr "paramètre de la référence n'est pas un pointeur"
+#: dwarf.c:1894
+#, c-format
+msgid "  Length:                      %ld\n"
+msgstr "  Longueur:                    %ld\n"
 
-#: ieee.c:3359
-msgid "unrecognized C++ reference type"
-msgstr "référence du type en C++ n'est pas reconnue"
+#: dwarf.c:1895
+#, c-format
+msgid "  DWARF Version:               %d\n"
+msgstr "  Version DWARF:               %d\n"
 
-#: ieee.c:3441
-msgid "C++ reference not found"
-msgstr "la référence n'a pas été retrouvée en C++"
+#: dwarf.c:1896
+#, c-format
+msgid "  Prologue Length:             %d\n"
+msgstr "  Longueur du prologue:        %d\n"
 
-#: ieee.c:3449
-msgid "C++ reference is not pointer"
-msgstr "la référence n'est pas un pointeur en C++"
+#: dwarf.c:1897
+#, c-format
+msgid "  Minimum Instruction Length:  %d\n"
+msgstr "  Longueur minimale des instructions:  %d\n"
 
-#: ieee.c:3475 ieee.c:3483
-msgid "missing required ASN"
-msgstr "ASN requis est absent"
+#: dwarf.c:1898
+#, c-format
+msgid "  Initial value of 'is_stmt':  %d\n"
+msgstr "  Valeur initiale de « is_stmt »:  %d\n"
 
-#: ieee.c:3510 ieee.c:3518
-msgid "missing required ATN65"
-msgstr "ATN65 requis est absent"
+#: dwarf.c:1899
+#, c-format
+msgid "  Line Base:                   %d\n"
+msgstr "  Ligne de base:               %d\n"
 
-#: ieee.c:3532
-msgid "bad ATN65 record"
-msgstr "mauvais enregistrement ATN65"
+#: dwarf.c:1900
+#, c-format
+msgid "  Line Range:                  %d\n"
+msgstr "  Ligne d'étendue:             %d\n"
 
-#: ieee.c:4160
+#: dwarf.c:1901
 #, c-format
-msgid "IEEE numeric overflow: 0x"
-msgstr "débordement numériquie IEEE: Ox"
+msgid "  Opcode Base:                 %d\n"
+msgstr "  Code op Base:                %d\n"
 
-#: ieee.c:4204
+#: dwarf.c:1902
 #, c-format
-msgid "IEEE string length overflow: %u\n"
-msgstr "débordement de la longueur de la chaîne IEEE: %u\n"
+msgid "  (Pointer size:               %u)%s\n"
+msgstr "  (Taille des pointeurs:       %u)%s\n"
 
-#: ieee.c:5203
+#: dwarf.c:1913
 #, c-format
-msgid "IEEE unsupported integer type size %u\n"
-msgstr "taille de type d'entier IEEE non supporté %u\n"
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+"\n"
+" Codes op:\n"
 
-#: ieee.c:5237
+#: dwarf.c:1916
 #, c-format
-msgid "IEEE unsupported float type size %u\n"
-msgstr "taille de type de nombre IEEE en notation flottante non supporté %u\n"
+msgid "  Opcode %d has %d args\n"
+msgstr "  Code op %d a %d arguments\n"
 
-#: ieee.c:5271
+#: dwarf.c:1922
 #, c-format
-msgid "IEEE unsupported complex type size %u\n"
-msgstr "taille de nombre complexe IEEE non supportée %u\n"
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+"\n"
+" La table des répertoires est vide.\n"
 
-#: nlmconv.c:267 srconv.c:1810
-msgid "input and output files must be different"
-msgstr "fichiers d'entrée et de sortie doivent être différents"
+#: dwarf.c:1925
+#, c-format
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+"\n"
+" La table des répertoire:\n"
 
-#: nlmconv.c:314
-msgid "input file named both on command line and with INPUT"
-msgstr "fichier d'entrée nommé à la fois sur la ligne de commande et dans la champ INPUT"
+#: dwarf.c:1929
+#, c-format
+msgid "  %s\n"
+msgstr "  %s\n"
 
-#: nlmconv.c:323
-msgid "no input file"
-msgstr "aucun fichier d'entrée"
+#: dwarf.c:1940
+#, c-format
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr ""
+"\n"
+" La talbe des noms de fichiers est vide.\n"
 
-#: nlmconv.c:353
-msgid "no name for output file"
-msgstr "aucun nom pour le fichier de sortie"
+#: dwarf.c:1943
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+"\n"
+" La table des noms de fichiers:\n"
 
-#: nlmconv.c:367
-msgid "warning: input and output formats are not compatible"
-msgstr "AVERTISSEMENT: les formats d'entrée et de sortie sont incompatibles"
+#: dwarf.c:1951
+#, c-format
+msgid "  %d\t"
+msgstr "  %d\t"
 
-#: nlmconv.c:396
-msgid "make .bss section"
-msgstr "générer la section .bss"
+#: dwarf.c:1962
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
 
-#: nlmconv.c:405
-msgid "make .nlmsections section"
-msgstr "générer la section .nlmsections"
+#. Now display the statements.
+#: dwarf.c:1970
+#, c-format
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+"\n"
+" Numéro de ligne des déclarations:\n"
 
-#: nlmconv.c:407
-msgid "set .nlmsections flags"
-msgstr "initialiser les fanions .nlmsections"
+#: dwarf.c:1986
+#, c-format
+msgid "  Special opcode %d: advance Address by %lu to 0x%lx"
+msgstr "  Op code spécial %d: devance l'adresse par %lu à 0x%lx"
 
-#: nlmconv.c:435
-msgid "set .bss vma"
-msgstr "initialiser le vma de la section .bss"
+#: dwarf.c:1990
+#, c-format
+msgid " and Line by %d to %d\n"
+msgstr " et Ligne par %d à %d\n"
 
-#: nlmconv.c:442
-msgid "set .data size"
-msgstr "initialiser la taille de la section .data"
+#: dwarf.c:1998
+msgid "Extend line ops need a valid pointer size, guessing at 4\n"
+msgstr "opérateur de ligne étendue a besoin d'une taille valide pour le pointeur, on essaye à 4\n"
 
-#: nlmconv.c:622
+#: dwarf.c:2007
 #, c-format
-msgid "warning: symbol %s imported but not in import list"
-msgstr "AVERTISSEMENT: symbole %s importé mais n'est pas dans la liste d'importation"
+msgid "  Copy\n"
+msgstr "  Copie\n"
 
-#: nlmconv.c:642
-msgid "set start address"
-msgstr "initialiser l'adresse de départ"
+#: dwarf.c:2015
+#, c-format
+msgid "  Advance PC by %lu to 0x%lx\n"
+msgstr "  Avancer le compteur PC de %lu à 0x%lx\n"
 
-#: nlmconv.c:691
+#: dwarf.c:2023
 #, c-format
-msgid "warning: START procedure %s not defined"
-msgstr "AVERTISSEMENT: procédure START %s n'est pas définie"
+msgid "  Advance Line by %d to %d\n"
+msgstr "  Avancer la ligne de %d à %d\n"
 
-#: nlmconv.c:693
+#: dwarf.c:2030
 #, c-format
-msgid "warning: EXIT procedure %s not defined"
-msgstr "AVERTISSEMENT: procédure EXIT %s n'est pas définie"
+msgid "  Set File Name to entry %d in the File Name Table\n"
+msgstr "  Initialisé le nom du fichier à l'entrée %d dans la table des noms de fichiers\n"
 
-#: nlmconv.c:695
+#: dwarf.c:2038
 #, c-format
-msgid "warning: CHECK procedure %s not defined"
-msgstr "AVERTISSEMENT: procédure CHECK %s n'est pas définie"
+msgid "  Set column to %lu\n"
+msgstr "  Initialiser la colonne à %lu\n"
 
-#: nlmconv.c:716 nlmconv.c:905
-msgid "custom section"
-msgstr "section « custom »"
+#: dwarf.c:2045
+#, c-format
+msgid "  Set is_stmt to %d\n"
+msgstr "  Initialisé is_stmt avec %d\n"
 
-#: nlmconv.c:737 nlmconv.c:934
-msgid "help section"
-msgstr "section d'aide"
+#: dwarf.c:2050
+#, c-format
+msgid "  Set basic block\n"
+msgstr "  Initialisé le bloc de base\n"
 
-#: nlmconv.c:759 nlmconv.c:952
-msgid "message section"
-msgstr "section message"
+#: dwarf.c:2058
+#, c-format
+msgid "  Advance PC by constant %lu to 0x%lx\n"
+msgstr "  Avancer le compteur PC par une constante de %lu à 0x%lx\n"
 
-#: nlmconv.c:775 nlmconv.c:985
-msgid "module section"
-msgstr "section module"
+#: dwarf.c:2066
+#, c-format
+msgid "  Advance PC by fixed size amount %lu to 0x%lx\n"
+msgstr "  Avancer le compteur PC par une taille fixe de %lu à 0x%lx\n"
 
-#: nlmconv.c:795 nlmconv.c:1001
-msgid "rpc section"
-msgstr "section rpc"
+#: dwarf.c:2071
+#, c-format
+msgid "  Set prologue_end to true\n"
+msgstr "  Initialiser prologue_end à VRAI\n"
 
-#. There is no place to record this information.
-#: nlmconv.c:831
+#: dwarf.c:2075
 #, c-format
-msgid "%s: warning: shared libraries can not have uninitialized data"
-msgstr "%s: AVERTISSEMENT: les librairies partagées ne peuvent avoir des données non initialisées"
+msgid "  Set epilogue_begin to true\n"
+msgstr "  Initialiser epilogue_begin à VRAI\n"
 
-#: nlmconv.c:852 nlmconv.c:1020
-msgid "shared section"
-msgstr "section partagée"
+#: dwarf.c:2081
+#, c-format
+msgid "  Set ISA to %lu\n"
+msgstr "  Initialiser ISA à %lu\n"
 
-#: nlmconv.c:860
-msgid "warning: No version number given"
-msgstr "AVERTISSEMENT: aucun numéro de version fourni"
+#: dwarf.c:2085
+#, c-format
+msgid "  Unknown opcode %d with operands: "
+msgstr "  opcode inconnu %d avec les opérandes:"
 
-#: nlmconv.c:900 nlmconv.c:929 nlmconv.c:947 nlmconv.c:996 nlmconv.c:1015
+#: dwarf.c:2111 dwarf.c:2197 dwarf.c:2271 dwarf.c:2382 dwarf.c:2514
+#: dwarf.c:2739
 #, c-format
-msgid "%s: read: %s"
-msgstr "%s: lu: %s"
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+"Contenue de la section %s:\n"
+"\n"
 
-#: nlmconv.c:922
-msgid "warning: FULLMAP is not supported; try ld -M"
-msgstr "AVERTISSEMENT: FULLMAP n'est pas supporté; essayer ld -M"
+#: dwarf.c:2151
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr "Seuls les noms publics DWARF 2 et 3 sont couramment supportés\n"
 
-#: nlmconv.c:1098
+#: dwarf.c:2158
 #, c-format
-msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
-msgstr "Usage: %s [options] fichier_entrée [fichier_sortie]\n"
+msgid "  Length:                              %ld\n"
+msgstr "  Longueur:                            %ld\n"
 
-#: nlmconv.c:1099
+#: dwarf.c:2160
 #, c-format
-msgid " Convert an object file into a NetWare Loadable Module\n"
-msgstr "Convertir un fichier objet en un module NetWare Loadable\n"
+msgid "  Version:                             %d\n"
+msgstr "  Version:                             %d\n"
 
-#: nlmconv.c:1100
+#: dwarf.c:2162
+#, c-format
+msgid "  Offset into .debug_info section:     %ld\n"
+msgstr "  Décalage dans la section .debug_info:%ld\n"
+
+#: dwarf.c:2164
+#, c-format
+msgid "  Size of area in .debug_info section: %ld\n"
+msgstr "  Taille de la zone dans la section .debug_info: %ld\n"
+
+#: dwarf.c:2167
 #, c-format
 msgid ""
-" The options are:\n"
-"  -I --input-target=<bfdname>   Set the input binary file format\n"
-"  -O --output-target=<bfdname>  Set the output binary file format\n"
-"  -T --header-file=<file>       Read <file> for NLM header information\n"
-"  -l --linker=<linker>          Use <linker> for any linking\n"
-"  -d --debug                    Display on stderr the linker command line\n"
-"  -h --help                     Display this information\n"
-"  -v --version                  Display the program's version\n"
+"\n"
+"    Offset\tName\n"
 msgstr ""
-"Les options sont:\n"
-"  -I --input-target=<nombfd>    sélectionner le format binaire du fichier d'entrée\n"
-"  -O --output-target=<nombfd>   sélectionner le format binaire du fichier de sortie\n"
-"  -T --header-file=<fichier>    lire les informations NLM du  <fichier>\n"
-"  -l --linker=<lien>            utiliser l'éditeur de <liens> pour toutes éditions\n"
-"  -d --debug                    afficher la ligne de commande sur stderr\n"
-"   -h --help                    afficher l'aide-mémoire\n"
-"   -V --version                 afficher le nom et la version du logiciel\n"
+"\n"
+"    Décalage\tNom\n"
 
-#: nlmconv.c:1140
+#: dwarf.c:2218
 #, c-format
-msgid "support not compiled in for %s"
-msgstr "soutien non compilé pour %s"
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACINFO_start_file - no de ligne: %d no de fichier: %d\n"
 
-#: nlmconv.c:1177
-msgid "make section"
-msgstr "section make"
+#: dwarf.c:2224
+#, c-format
+msgid " DW_MACINFO_end_file\n"
+msgstr " DW_MACINFO_end_file\n"
 
-#: nlmconv.c:1191
-msgid "set section size"
-msgstr "initialisation de la taille de la section"
+#: dwarf.c:2232
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_define - no de ligne : %d macro : %s\n"
 
-#: nlmconv.c:1197
-msgid "set section alignment"
-msgstr "initialisation de l'alignement de la section"
+#: dwarf.c:2241
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_undef - no de ligne : %d macro : %s\n"
 
-#: nlmconv.c:1201
-msgid "set section flags"
-msgstr "initialisation des fanions de la section"
+#: dwarf.c:2253
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr " DW_MACINFO_vendor_ext - constante : %d chaîne : %s\n"
 
-#: nlmconv.c:1212
-msgid "set .nlmsections size"
-msgstr "initialisation de la taille de .nlmsections"
+#: dwarf.c:2282
+#, c-format
+msgid "  Number TAG\n"
+msgstr "  Numéro d'étiquette\n"
 
-#: nlmconv.c:1293 nlmconv.c:1301 nlmconv.c:1310 nlmconv.c:1315
-msgid "set .nlmsection contents"
-msgstr "initialisation du contenu de .nlmsection"
+#: dwarf.c:2288
+#, c-format
+msgid "   %ld      %s    [%s]\n"
+msgstr "   %ld      %s    [%s]\n"
 
-#: nlmconv.c:1794
-msgid "stub section sizes"
-msgstr "taille de la section stub"
+#: dwarf.c:2291
+msgid "has children"
+msgstr "a des rejetons"
 
-#: nlmconv.c:1841
-msgid "writing stub"
-msgstr "écriture du stub"
+#: dwarf.c:2291
+msgid "no children"
+msgstr "aucun rejeton"
 
-#: nlmconv.c:1925
+#: dwarf.c:2294
 #, c-format
-msgid "unresolved PC relative reloc against %s"
-msgstr "relocalisation relative sur PC non résolue de %s"
+msgid "    %-18s %s\n"
+msgstr "    %-18s %s\n"
 
-#: nlmconv.c:1989
+#: dwarf.c:2327 dwarf.c:2510 dwarf.c:2684
 #, c-format
-msgid "overflow when adjusting relocation against %s"
-msgstr "débordement lors de la relocalisation de %s"
+msgid ""
+"\n"
+"The %s section is empty.\n"
+msgstr ""
+"\n"
+"La section %s est vide.\n"
+
+#. FIXME: Should we handle this case?
+#: dwarf.c:2372
+msgid "Location lists in .debug_info section aren't in ascending order!\n"
+msgstr "Liste de localisation dans la ssection .debug_info ne sont pas en ordre ascendant!\n"
+
+#: dwarf.c:2375
+msgid "No location lists in .debug_info section!\n"
+msgstr "Pas de liste de localisation dans la section .debug_info!\n"
 
-#: nlmconv.c:2116
+#: dwarf.c:2379
 #, c-format
-msgid "%s: execution of %s failed: "
-msgstr "%s: échec d'exécution de %s :"
+msgid "Location lists in %s section start at 0x%lx\n"
+msgstr "Listes de localisation dans la section %s qui débute à 0x%lx\n"
 
-#: nlmconv.c:2131
+#: dwarf.c:2383
 #, c-format
-msgid "Execution of %s failed"
-msgstr "Échec d'exécution de %s"
+msgid "    Offset   Begin    End      Expression\n"
+msgstr "    Décalage Début    Fin      Expression\n"
 
-#: nm.c:224 size.c:80 strings.c:651
+#: dwarf.c:2414
 #, c-format
-msgid "Usage: %s [option(s)] [file(s)]\n"
-msgstr "Usage: %s [options] fichiers\n"
+msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "Il y a un trou [0x%lx - 0x%lx] dans la section .debug_loc.\n"
 
-#: nm.c:225
+#: dwarf.c:2417
 #, c-format
-msgid " List symbols in [file(s)] (a.out by default).\n"
-msgstr "Afficher les symboles des [fichiers] (a.out par défaut).\n"
+msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "Il y a un chevauchement [0x%lx - 0x%lx] dans la section .debug_loc.\n"
 
-#: nm.c:226
+#: dwarf.c:2424
 #, c-format
-msgid ""
-" The options are:\n"
-"  -a, --debug-syms       Display debugger-only symbols\n"
-"  -A, --print-file-name  Print name of the input file before every symbol\n"
-"  -B                     Same as --format=bsd\n"
-"  -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
-"                          The STYLE, if specified, can be `auto' (the default),\n"
-"                          `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
-"                          or `gnat'\n"
-"      --no-demangle      Do not demangle low-level symbol names\n"
-"  -D, --dynamic          Display dynamic symbols instead of normal symbols\n"
-"      --defined-only     Display only defined symbols\n"
-"  -e                     (ignored)\n"
-"  -f, --format=FORMAT    Use the output format FORMAT.  FORMAT can be `bsd',\n"
-"                           `sysv' or `posix'.  The default is `bsd'\n"
-"  -g, --extern-only      Display only external symbols\n"
-"  -l, --line-numbers     Use debugging information to find a filename and\n"
-"                           line number for each symbol\n"
-"  -n, --numeric-sort     Sort symbols numerically by address\n"
-"  -o                     Same as -A\n"
-"  -p, --no-sort          Do not sort the symbols\n"
-"  -P, --portability      Same as --format=posix\n"
-"  -r, --reverse-sort     Reverse the sense of the sort\n"
-"  -S, --print-size       Print size of defined symbols\n"
-"  -s, --print-armap      Include index for symbols from archive members\n"
-"      --size-sort        Sort symbols by size\n"
-"      --special-syms     Include special symbols in the output\n"
-"      --synthetic        Display synthetic symbols as well\n"
-"  -t, --radix=RADIX      Use RADIX for printing symbol values\n"
-"      --target=BFDNAME   Specify the target object format as BFDNAME\n"
-"  -u, --undefined-only   Display only undefined symbols\n"
-"  -X 32_64               (ignored)\n"
-"  -h, --help             Display this information\n"
-"  -V, --version          Display this program's version number\n"
-"\n"
-msgstr ""
-"Les options sont:\n"
-"  -a, --debug-syms       afficher seulement les symboles de débug\n"
-"  -A, --print-file-name  afficher le nom du fichier d'entrée avant chaque symbole\n"
-"  -B                     identique à --format=bsd\n"
-"  -C, --demangle[=STYLE] décoder les noms des symboles de bas niveau en noms de ceux\n"
-"                         du niveau  usager. Le STYLE, si spécifié, peut être « auto »\n"
-"                         (par défaut), « gnu », « lucid », « arm », « hp », « edg » ou « gnu-new-abi »,\n"
-"      --no-demangle      ne pas encoder par mutilation les noms des symboles de bas niveau\n"
-"  -D, --dynamic          afficher les symboles dynamiques au lieu des symboles normaux\n"
-"      --defined-only     afficher seulement les symboles définis\n"
-"  -e                     (ignoré)\n"
-"  -f, --format=FORMAT    utiliser le FORMAT de sortie qui peut être « bsd » (par défaut),\n"
-"                         « sysv » ou « posix ».\n"
-"  -g, --extern-only      afficher seulement les symboles externes\n"
-"  -l, --line-numbers     utiliser les informations de débug pour repérer le nom de fichier\n"
-"                         et un numéro de ligne pour chaque symbole\n"
-"  -n, --numeric-sort     trier les symboles numériquement par adresse\n"
-"  -o                     identique à  -A\n"
-"  -p, --no-sort          ne pas trier les symboles\n"
-"  -P, --portability      identique à  --format=posix\n"
-"  -r, --reverse-sort     trier en ordre inverse\n"
-"  -S, --print-size       afficher la taille des symboles définis\n"
-"  -s, --print-armap      inclure un index pour les symboles à partir des membres de l'archive\n"
-"      --size-sort        trier les symboles par leur taille\n"
-"      --special-syms     inclure les symboles spéciaux sur la sortie\n"
-"      --synthetic        afficher les symboles synthétiques\n"
-"  -t, --radix=BASE       utiliser la BASE numérique pour afficher la valeur des symboles\n"
-"      --target=NOM_BFD   spécifier la cible du format de l'objet par le NOM_BFD\n"
-"  -u, --undefined-only   afficher seulement les symboles indéfinis\n"
-"  -V, --version          afficher le nom et la version du logiciel\n"
-"  -X 32_64               (ignoré)\n"
-"  -h --help              afficher l'aide-mémoire\n"
-"  -V --version           afficher le nom et la version du logiciel\n"
-"\n"
+msgid "Offset 0x%lx is bigger than .debug_loc section size.\n"
+msgstr "Le décalage 0x%lx est plus grand que la taille de la section .debug_loc.\n"
 
-#: nm.c:262 objdump.c:232
+#: dwarf.c:2433 dwarf.c:2460 dwarf.c:2470
 #, c-format
-msgid "Report bugs to %s.\n"
-msgstr "Rapporter toutes anomalies à %s\n"
+msgid "Location list starting at offset 0x%lx is not terminated.\n"
+msgstr "La liste de localisation débutan à l'adresse 0x%lx n'est pas terminée.\n"
 
-#: nm.c:294
+#: dwarf.c:2445 dwarf.c:2784
 #, c-format
-msgid "%s: invalid radix"
-msgstr "%s: base numérique invalide"
+msgid "    %8.8lx <End of list>\n"
+msgstr "    %8.8lx <Fin de liste>\n"
 
-#: nm.c:318
+#: dwarf.c:2453
 #, c-format
-msgid "%s: invalid output format"
-msgstr "%s: format de sortie invalide"
+msgid "    %8.8lx %8.8lx %8.8lx (base address)\n"
+msgstr "    %8.8lx %8.8lx %8.8lx (adresse de base)\n"
 
-#: nm.c:339 readelf.c:6342 readelf.c:6378
+#: dwarf.c:2487 dwarf.c:2801
+msgid " (start == end)"
+msgstr " (début == fin)"
+
+#: dwarf.c:2489 dwarf.c:2803
+msgid " (start > end)"
+msgstr " (début > fin)"
+
+#: dwarf.c:2618
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr "Seuls les aranges DWARF de version 2 et 3 sont couramment supportés.\n"
+
+#: dwarf.c:2622
 #, c-format
-msgid "<processor specific>: %d"
-msgstr "<spécificités du processor>: %d"
+msgid "  Length:                   %ld\n"
+msgstr "  Longueur                  %ld\n"
 
-#: nm.c:341 readelf.c:6345 readelf.c:6390
+#: dwarf.c:2623
 #, c-format
-msgid "<OS specific>: %d"
-msgstr "<spécificités du système d'exploitation>: %d"
+msgid "  Version:                  %d\n"
+msgstr "  Version:                  %d\n"
 
-#: nm.c:343 readelf.c:6347 readelf.c:6393
+#: dwarf.c:2624
 #, c-format
-msgid "<unknown>: %d"
-msgstr "<inconnu>: %d"
+msgid "  Offset into .debug_info:  %lx\n"
+msgstr "  Décalage dans .debug_info: %lx\n"
 
-#: nm.c:380
+#: dwarf.c:2625
 #, c-format
-msgid ""
-"\n"
-"Archive index:\n"
-msgstr ""
-"\n"
-"Indexe de l'archive:\n"
+msgid "  Pointer Size:             %d\n"
+msgstr "  Taille des pointeurs:     %d\n"
 
-#: nm.c:1225
+#: dwarf.c:2626
 #, c-format
-msgid ""
-"\n"
-"\n"
-"Undefined symbols from %s:\n"
-"\n"
-msgstr ""
-"\n"
-"\n"
-"Symboles indéfinis dans %s:\n"
-"\n"
+msgid "  Segment Size:             %d\n"
+msgstr "  Taille des segments:      %d\n"
 
-#: nm.c:1227
+#: dwarf.c:2628
 #, c-format
 msgid ""
 "\n"
-"\n"
-"Symbols from %s:\n"
-"\n"
+"    Address  Length\n"
 msgstr ""
 "\n"
-"\n"
-"Symboles de %s:\n"
-"\n"
+"    Longueur d'adresse\n"
+
+#. FIXME: Should we handle this case?
+#: dwarf.c:2729
+msgid "Range lists in .debug_info section aren't in ascending order!\n"
+msgstr "Liste des étendues dans la section .debug_info n'est pas en ordre ascendant!\n"
+
+#: dwarf.c:2732
+msgid "No range lists in .debug_info section!\n"
+msgstr "Aucune liste d'étendues dans la section .debug_info!\n"
 
-#: nm.c:1229 nm.c:1280
+#: dwarf.c:2736
 #, c-format
-msgid ""
-"Name                  Value   Class        Type         Size     Line  Section\n"
-"\n"
-msgstr ""
-"Nom                   Valeur  Classe       Type         Taille   Ligne Section\n"
-"\n"
+msgid "Range lists in %s section start at 0x%lx\n"
+msgstr "Listes d'étendues dans la section %s débutent à 0x%lx\n"
 
-#: nm.c:1232 nm.c:1283
+#: dwarf.c:2740
 #, c-format
-msgid ""
-"Name                  Value           Class        Type         Size             Line  Section\n"
-"\n"
-msgstr ""
-"Nom                   Valeur          Classe       Type         Taille           Ligne Section\n"
-"\n"
+msgid "    Offset   Begin    End\n"
+msgstr "    Décalage Début    Fin\n"
 
-#: nm.c:1276
+#: dwarf.c:2765
 #, c-format
-msgid ""
-"\n"
-"\n"
-"Undefined symbols from %s[%s]:\n"
-"\n"
-msgstr ""
-"\n"
-"\n"
-"Symboles indéfinis dans %s[%s]:\n"
-"\n"
+msgid "There is a hole [0x%lx - 0x%lx] in %s section.\n"
+msgstr "Il y a un trou [0x%lx - 0x%lx] dans la section %s.\n"
 
-#: nm.c:1278
+#: dwarf.c:2769
 #, c-format
-msgid ""
-"\n"
-"\n"
-"Symbols from %s[%s]:\n"
-"\n"
-msgstr ""
-"\n"
-"\n"
-"Symboles de %s[%s]:\n"
-"\n"
+msgid "There is an overlap [0x%lx - 0x%lx] in %s section.\n"
+msgstr "Il y a un chevauchement [0x%lx - 0x%lx] dans la section %s.\n"
 
-#: nm.c:1580
-msgid "Only -X 32_64 is supported"
-msgstr "Seul -X 32_64 est supporté"
+#: dwarf.c:2964
+#, c-format
+msgid "The section %s contains:\n"
+msgstr "La section %s contient:\n"
 
-#: nm.c:1600
-msgid "Using the --size-sort and --undefined-only options together"
-msgstr "Utiliser ensemble les options --size-sort et --undefined-only"
+#: dwarf.c:3608
+#, c-format
+msgid "unsupported or unknown DW_CFA_%d\n"
+msgstr "DW_CFA_%d non supporté ou inconnu\n"
 
-#: nm.c:1601
-msgid "will produce no output, since undefined symbols have no size."
-msgstr "ne produira aucune sortie étant donnée que les symboles n'ont aucune taille."
+#: dwarf.c:3632
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr "L'affichage du contenu de la section de débug %s n'est pas encore supporté.\n"
 
-#: nm.c:1629
+#: dwarf.c:3674
 #, c-format
-msgid "data size %ld"
-msgstr "taille des donnée %ld"
+msgid "%s: Error: "
+msgstr "%s: ERREUR: "
 
-#: objcopy.c:396 srconv.c:1721
+#: dwarf.c:3685
 #, c-format
-msgid "Usage: %s [option(s)] in-file [out-file]\n"
-msgstr "Usage: %s [options] fichier_d_entrée [fichier_de_sortie]\n"
+msgid "%s: Warning: "
+msgstr "%s: AVERTISSEMENT: "
 
-#: objcopy.c:397
+#: emul_aix.c:51
 #, c-format
-msgid " Copies a binary file, possibly transforming it in the process\n"
-msgstr "Copier un fichier binaire, possiblement le transformer durant le traitement\n"
+msgid "  [-g]         - 32 bit small archive\n"
+msgstr "  [-g]         - petite archive de 32 bits\n"
 
-#: objcopy.c:398 objcopy.c:487
+#: emul_aix.c:52
 #, c-format
-msgid " The options are:\n"
-msgstr " Les options sont:\n"
+msgid "  [-X32]       - ignores 64 bit objects\n"
+msgstr "  [-X32]       - ignore les objets de 64 bits\n"
 
-#: objcopy.c:399
+#: emul_aix.c:53
 #, c-format
-msgid ""
-"  -I --input-target <bfdname>      Assume input file is in format <bfdname>\n"
-"  -O --output-target <bfdname>     Create an output file in format <bfdname>\n"
-"  -B --binary-architecture <arch>  Set arch of output file, when input is binary\n"
-"  -F --target <bfdname>            Set both input and output format to <bfdname>\n"
-"     --debugging                   Convert debugging information, if possible\n"
-"  -p --preserve-dates              Copy modified/access timestamps to the output\n"
-"  -j --only-section <name>         Only copy section <name> into the output\n"
-"     --add-gnu-debuglink=<file>    Add section .gnu_debuglink linking to <file>\n"
-"  -R --remove-section <name>       Remove section <name> from the output\n"
-"  -S --strip-all                   Remove all symbol and relocation information\n"
-"  -g --strip-debug                 Remove all debugging symbols & sections\n"
-"     --strip-unneeded              Remove all symbols not needed by relocations\n"
-"  -N --strip-symbol <name>         Do not copy symbol <name>\n"
-"     --strip-unneeded-symbol <name>\n"
-"                                   Do not copy symbol <name> unless needed by\n"
-"                                     relocations\n"
-"     --only-keep-debug             Strip everything but the debug information\n"
-"  -K --keep-symbol <name>          Only copy symbol <name>\n"
-"  -L --localize-symbol <name>      Force symbol <name> to be marked as a local\n"
-"  -G --keep-global-symbol <name>   Localize all symbols except <name>\n"
-"  -W --weaken-symbol <name>        Force symbol <name> to be marked as a weak\n"
-"     --weaken                      Force all global symbols to be marked as weak\n"
-"  -w --wildcard                    Permit wildcard in symbol comparison\n"
-"  -x --discard-all                 Remove all non-global symbols\n"
-"  -X --discard-locals              Remove any compiler-generated symbols\n"
-"  -i --interleave <number>         Only copy one out of every <number> bytes\n"
-"  -b --byte <num>                  Select byte <num> in every interleaved block\n"
-"     --gap-fill <val>              Fill gaps between sections with <val>\n"
-"     --pad-to <addr>               Pad the last section up to address <addr>\n"
-"     --set-start <addr>            Set the start address to <addr>\n"
-"    {--change-start|--adjust-start} <incr>\n"
-"                                   Add <incr> to the start address\n"
-"    {--change-addresses|--adjust-vma} <incr>\n"
-"                                   Add <incr> to LMA, VMA and start addresses\n"
-"    {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
-"                                   Change LMA and VMA of section <name> by <val>\n"
-"     --change-section-lma <name>{=|+|-}<val>\n"
-"                                   Change the LMA of section <name> by <val>\n"
-"     --change-section-vma <name>{=|+|-}<val>\n"
-"                                   Change the VMA of section <name> by <val>\n"
-"    {--[no-]change-warnings|--[no-]adjust-warnings}\n"
-"                                   Warn if a named section does not exist\n"
-"     --set-section-flags <name>=<flags>\n"
-"                                   Set section <name>'s properties to <flags>\n"
-"     --add-section <name>=<file>   Add section <name> found in <file> to output\n"
-"     --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
-"     --change-leading-char         Force output format's leading character style\n"
-"     --remove-leading-char         Remove leading character from global symbols\n"
-"     --redefine-sym <old>=<new>    Redefine symbol name <old> to <new>\n"
-"     --redefine-syms <file>        --redefine-sym for all symbol pairs \n"
-"                                     listed in <file>\n"
-"     --srec-len <number>           Restrict the length of generated Srecords\n"
-"     --srec-forceS3                Restrict the type of generated Srecords to S3\n"
-"     --strip-symbols <file>        -N for all symbols listed in <file>\n"
-"     --strip-unneeded-symbols <file>\n"
-"                                   --strip-unneeded-symbol for all symbols listed\n"
-"                                     in <file>\n"
-"     --keep-symbols <file>         -K for all symbols listed in <file>\n"
-"     --localize-symbols <file>     -L for all symbols listed in <file>\n"
-"     --keep-global-symbols <file>  -G for all symbols listed in <file>\n"
-"     --weaken-symbols <file>       -W for all symbols listed in <file>\n"
-"     --alt-machine-code <index>    Use alternate machine code for output\n"
-"     --writable-text               Mark the output text as writable\n"
-"     --readonly-text               Make the output text write protected\n"
-"     --pure                        Mark the output file as demand paged\n"
-"     --impure                      Mark the output file as impure\n"
-"     --prefix-symbols <prefix>     Add <prefix> to start of every symbol name\n"
-"     --prefix-sections <prefix>    Add <prefix> to start of every section name\n"
-"     --prefix-alloc-sections <prefix>\n"
-"                                   Add <prefix> to start of every allocatable\n"
-"                                     section name\n"
-"  -v --verbose                     List all object files modified\n"
-"  -V --version                     Display this program's version number\n"
-"  -h --help                        Display this output\n"
-"     --info                        List object formats & architectures supported\n"
-msgstr ""
-"  -I --input-target <nombfd>       assumer que le fichier d'entrée est de format <nombfd>\n"
-"  -O --output-target <nombfd>      créer un fichier de sortie de format <nombfd>\n"
-"  -B --binary-architecture <arch>  sélectionner l'architecture du fichier de sortie lorsque binaire\n"
-"  -F --target <nombfd>             initialiser les formats d'entrée et de sortie à <nombfd>\n"
-"     --debugging                   convertir les informations de débug, si possible\n"
-"  -p --preserve-dates              conserver les dates d'accès et de modification de fichiers\n"
-"  -j --only-section <nom>          copier seulement la section <nom> dans le fichier de sortie\n"
-"     --add-gnu-debuglink=<fichier> ajouter la section .gnu_debuglink d'édition de liens au <fichier>\n"
-"  -R --remove-section <nom>        retirer la section <nom> du fichier de sortie\n"
-"  -S --strip-all                   retirer tous les symboles et les informations de relocalisation\n"
-"  -g --strip-debug                 retirer tous les symboles de débug\n"
-"     --strip-unneeded              retirer tous les symboles qui ne sont pas nécessaires pour la relocalisation\n"
-"  -N --strip-symbol <nom>          ne pas copier le symbole <nom>\n"
-"     --strip-unneeded-symbol <name>\n"
-"                                   ne pas copier le symbole <nom> à moins qu'il soit\n"
-"                                     nécessaire à la relocalisation\n"
-"     --only-keep-debug             élaguer tout sauf les informations de mise au point\n"
-"  -K --keep-symbol <nom>           copier seulement le symbole <nom>\n"
-"  -L --localize-symbol <nom>       marquer le symbole <nom> comme symbole local\n"
-"  -G --keep-global-symbol <nom>    localiser tous les symboles sauf celui ayant pour <nom>\n"
-"  -W --weaken-symbol <nom>         marquer le symbole <nom> comme symbole faible\n"
-"     --weaken                      marquer tous les symboles globaux comme symboles faibles\n"
-"  -x --discard-all                 retirer tous les symboles qui ne sont pas globaux\n"
-"  -X --discard-locals              retirer tous les symboles générés par le compilateur\n"
-"  -i --interleave <nombre>         copier seulement 1 octet à chaque <nombre> d'octets\n"
-"  -b --byte <numéro>               sélectionner l'octet <numéro> dans chaque bloc intercalé\n"
-"     --gap-fill <valeur>           remplir les trous entre les sections avec la <valeur>\n"
-"     --pad-to <adresse>            remplir la dernière section jusqu'à l'<adresse>\n"
-"     --set-start <adresse>         utiliser l'<adresse> de départ\n"
-"    {--change-start|--adjust-start} <incrément>\n"
-"                                   ajouter l'<incrément> à l'adresse de départ\n"
-"    {--change-addresses|--adjust-vma} <incrément>\n"
-"                                   ajouter l'<incrément> aux adresses LMA, VMA et de départ\n"
-"    {--change-section-address|--adjust-section-vma} <nom>{=|+|-}<valeur>\n"
-"                                   modifier LMA et VMA de la section <nom> par la <valeur>\n"
-"     --change-section-lma <nom>{=|+|-}<valeur>\n"
-"                                   modifier LMA de la section <nom> par la <valeur>\n"
-"     --change-section-vma <nom>{=|+|-}<valeur>\n"
-"                                   modifier VMA de la section <nom> par la <valeur>\n"
-"    {--[no-]change-warnings|--[no-]adjust-warnings}\n"
-"                                   avertir si le nom de la section n'existe pas\n"
-"     --set-section-flags <nom>=<fanions>\n"
-"                                   initialiser les propriétés de la section <nom> avec les <fanions>\n"
-"     --add-section <nom>=<fichier> ajouter la section <nom> repérée dans le <fichier> vers la sortie\n"
-"     --rename-section <anc>=<nou>[,<fanions>] renommer l'<ancienne> section à la <nouvelle>\n"
-"     --change-leading-char         forcer le format de sortie du style des caractères de préfixe\n"
-"     --remove-leading-char         retirer les caractères de préfixe des symboles globaux\n"
-"     --redefine-sym <ancien>=<nouveau>\n"
-"                                   redéfinir le nom du symbole <ancien> à <nouveau>\n"
-"     --srec-len <nombre>           restreindre la longueur des Srecords générés\n"
-"     --srec-forceS3                restreindre le type de Srecords générés à S3\n"
-"     --strip-symbols <fichier>     -N pour tous les symboles listés dans le <fichier>\n"
-"     --keep-symbols <fichier>      -K pour tous les symboles listés dans le <fichier>\n"
-"     --localize-symbols <fichier>  -L pour tous les symboles listés dans le <fichier>\n"
-"     --keep-global-symbols <fichier>\n"
-"                                   -G pour tous les symboles listés dans le <fichier>\n"
-"     --weaken-symbols <fichier>    -W pour tous les symboles listés dans le <fichier>\n"
-"     --alt-machine-code <index>    Use alternate machine code for output\n"
-"  -v --verbose                     afficher la liste de tous les objets modifiés\n"
-"  -V --version                     afficher le nom et la version du logiciel\n"
-"  -h --help                        afficher l'aide-mémoire\n"
+msgid "  [-X64]       - ignores 32 bit objects\n"
+msgstr "  [-X64]       - ignore les objets de 32 bits\n"
 
-#: objcopy.c:485
+#: emul_aix.c:54
 #, c-format
-msgid "Usage: %s <option(s)> in-file(s)\n"
-msgstr "Usage: %s <options> fichiers\n"
+msgid "  [-X32_64]    - accepts 32 and 64 bit objects\n"
+msgstr "  [-X32_64]    - accepter les objets de 32 et 64 bits\n"
 
-#: objcopy.c:486
-#, c-format
-msgid " Removes symbols and sections from files\n"
-msgstr "Enlever les symboles et les sections des fichiers\n"
+#: ieee.c:311
+msgid "unexpected end of debugging information"
+msgstr "fin inattendue des informations de débug"
 
-#: objcopy.c:488
-#, c-format
-msgid ""
-"  -I --input-target=<bfdname>      Assume input file is in format <bfdname>\n"
-"  -O --output-target=<bfdname>     Create an output file in format <bfdname>\n"
-"  -F --target=<bfdname>            Set both input and output format to <bfdname>\n"
-"  -p --preserve-dates              Copy modified/access timestamps to the output\n"
-"  -R --remove-section=<name>       Remove section <name> from the output\n"
-"  -s --strip-all                   Remove all symbol and relocation information\n"
-"  -g -S -d --strip-debug           Remove all debugging symbols & sections\n"
-"     --strip-unneeded              Remove all symbols not needed by relocations\n"
-"     --only-keep-debug             Strip everything but the debug information\n"
-"  -N --strip-symbol=<name>         Do not copy symbol <name>\n"
-"  -K --keep-symbol=<name>          Only copy symbol <name>\n"
-"  -w --wildcard                    Permit wildcard in symbol comparison\n"
-"  -x --discard-all                 Remove all non-global symbols\n"
-"  -X --discard-locals              Remove any compiler-generated symbols\n"
-"  -v --verbose                     List all object files modified\n"
-"  -V --version                     Display this program's version number\n"
-"  -h --help                        Display this output\n"
-"     --info                        List object formats & architectures supported\n"
-"  -o <file>                        Place stripped output into <file>\n"
-msgstr ""
-"  -I --input-target <nombfd>       assumer que le format du fichier d'entrée est <nombdf>\n"
-"  -O --output-target <nombfd>      créer un fichier de sortie ayant le format <nombfd>\n"
-"  -F --target <nombfd>             utiliser à l'entrée et à la sortie le format <nombfd>\n"
-"  -p --preserve-dates              préserver les dates d'accès et de modification lors de la copie\n"
-"  -R --remove-section=<nom>        retirer la section <nom> du fichier de sortie\n"
-"  -s --strip-all                   retirer tous les symboles et les informations de relocalisation\n"
-"  -g -S -d --strip-debug           retirer tous les symboles de débug\n"
-"     --strip-unneeded              retirer tous les symboles qui ne sont pas nécessaire à la relocalisation\n"
-"     --only-keep-debug             retirer tous les symboles sauf les informations de mise au point\n"
-"  -N --strip-symbol <nom>          ne pas copier le symbole <nom>\n"
-"  -K --keep-symbol <nom>           copier seulement le symbole <nom>\n"
-"  -x --discard-all                 retirer tous les symboles qui ne sont pas globaux\n"
-"  -X --discard-locals              retirer tous les symboles qui sont générés par le compilateur\n"
-"  -v --verbose                     afficher tous les fichiers objets modifiés\n"
-"  -V --version                     afficher le nom et la version du logiciel\n"
-"  -h --help                        afficher l'aide-mémoire\n"
-"     --info                        lister le format des objets et les architectures supportés\n"
-"  -o <fichier>                     placer la sortie élaguée dans le <fichier>\n"
+#: ieee.c:398
+msgid "invalid number"
+msgstr "numéro invalide"
 
-#: objcopy.c:560
-#, c-format
-msgid "unrecognized section flag `%s'"
-msgstr "fanion de section non reconnnu « %s »"
+#: ieee.c:451
+msgid "invalid string length"
+msgstr "longueur de chaîne invalide"
 
-#: objcopy.c:561
-#, c-format
-msgid "supported flags: %s"
-msgstr "fanions supportés: %s"
+#: ieee.c:506 ieee.c:547
+msgid "expression stack overflow"
+msgstr "débordement de pile de l'expression"
 
-#: objcopy.c:638
-#, c-format
-msgid "cannot open '%s': %s"
-msgstr "ne peut ouvrir: « %s »: %s"
+#: ieee.c:526
+msgid "unsupported IEEE expression operator"
+msgstr "opérateur d'espression IEEE non supporté"
 
-#: objcopy.c:641 objcopy.c:2629
-#, c-format
-msgid "%s: fread failed"
-msgstr "%s: fread en échec"
+#: ieee.c:541
+msgid "unknown section"
+msgstr "section inconnue"
 
-#: objcopy.c:714
-#, c-format
-msgid "%s:%d: Ignoring rubbish found on this line"
-msgstr "%s:%d: rebus ignoré trouvé sur la ligne"
+#: ieee.c:562
+msgid "expression stack underflow"
+msgstr "sous dépilage de l'expression"
 
-#: objcopy.c:976
-#, c-format
-msgid "%s: Multiple redefinition of symbol \"%s\""
-msgstr "%s: re-définition multiples du symbole « %s »"
+#: ieee.c:576
+msgid "expression stack mismatch"
+msgstr "non concordance de l'expression dans la pile"
 
-#: objcopy.c:980
-#, c-format
-msgid "%s: Symbol \"%s\" is target of more than one redefinition"
-msgstr "%s: symbole « %s » cible plus d'une re-définition"
+#: ieee.c:613
+msgid "unknown builtin type"
+msgstr "type de construit interne inconnu"
 
-#: objcopy.c:1008
-#, c-format
-msgid "couldn't open symbol redefinition file %s (error: %s)"
-msgstr "ne peut ouvrir le fichier de redéfinition de symboles %s (erreur: %s)"
+#: ieee.c:758
+msgid "BCD float type not supported"
+msgstr "type de numérotaion flottante BCD inconnue"
 
-#: objcopy.c:1086
-#, c-format
-msgid "%s:%d: garbage found at end of line"
-msgstr "%s:%d: rebus à la fin de la ligne"
+#: ieee.c:895
+msgid "unexpected number"
+msgstr "numéro inattendu"
 
-#: objcopy.c:1089
-#, c-format
-msgid "%s:%d: missing new symbol name"
-msgstr "%s:%d: nom du nouveau symbole manquant"
+#: ieee.c:902
+msgid "unexpected record type"
+msgstr "type d'enregistrement inattendu"
 
-#: objcopy.c:1099
-#, c-format
-msgid "%s:%d: premature end of file"
-msgstr "%s:%d: fin de fichier prématuré"
+#: ieee.c:935
+msgid "blocks left on stack at end"
+msgstr "des blocs sont demeurés sur la pile à la fin"
 
-#: objcopy.c:1124
-msgid "Unable to change endianness of input file(s)"
-msgstr "Incapable de changer de systèmes d'encodage (poids fort- faible) des fichiers d'entrée"
+#: ieee.c:1198
+msgid "unknown BB type"
+msgstr "type BB inconnu"
 
-#: objcopy.c:1133
-#, c-format
-msgid "copy from %s(%s) to %s(%s)\n"
-msgstr "copie de %s(%s) vers %s(%s)\n"
+#: ieee.c:1207
+msgid "stack overflow"
+msgstr "débordement de la pile"
 
-#: objcopy.c:1170
-#, c-format
-msgid "Unable to recognise the format of the input file %s"
-msgstr "Incapable de reconnaître le format du fichier d'entrée %s"
+#: ieee.c:1230
+msgid "stack underflow"
+msgstr "sous dépilage de la pile"
 
-#: objcopy.c:1174
-#, c-format
-msgid "Warning: Output file cannot represent architecture %s"
-msgstr "AVERTISSEMENT: fichier de sortie ne peut représenter l'architecture %s"
+#: ieee.c:1342 ieee.c:1412 ieee.c:2109
+msgid "illegal variable index"
+msgstr "variable d'index illégale"
 
-#: objcopy.c:1211
-#, c-format
-msgid "can't create section `%s': %s"
-msgstr "Ne peut créer la section « %s »: %s"
+#: ieee.c:1390
+msgid "illegal type index"
+msgstr "type d'index illégal"
 
-#: objcopy.c:1277
-msgid "there are no sections to be copied!"
-msgstr "Il n'y a pas de section à copier!"
+#: ieee.c:1400 ieee.c:1437
+msgid "unknown TY code"
+msgstr "code TY inconnu"
 
-#: objcopy.c:1323
-#, c-format
-msgid "Can't fill gap after %s: %s"
-msgstr "Ne peut remplir le vide après %s: %s"
+#: ieee.c:1419
+msgid "undefined variable in TY"
+msgstr "variable non définie dans TY"
 
-#: objcopy.c:1348
-#, c-format
-msgid "Can't add padding to %s: %s"
-msgstr "Ne peut ajouter de remplissage pour %s: %s"
+#. Pascal file name.  FIXME.
+#: ieee.c:1830
+msgid "Pascal file name not supported"
+msgstr "Nom de fichier Pascal non supporté"
 
-#: objcopy.c:1514
-#, c-format
-msgid "%s: error copying private BFD data: %s"
-msgstr "%s: erreur de copie des données privées BFD: %s"
+#: ieee.c:1878
+msgid "unsupported qualifier"
+msgstr "qualificateur non supporté"
 
-#: objcopy.c:1525
-msgid "unknown alternate machine code, ignored"
-msgstr "code machine alternatif inconnu, ignoré"
+#: ieee.c:2147
+msgid "undefined variable in ATN"
+msgstr "variable non définie dans ATN"
 
-#: objcopy.c:1555 objcopy.c:1585
-#, c-format
-msgid "cannot mkdir %s for archive copying (error: %s)"
-msgstr "ne peut créer le répertoire mkdir %s pour copie d'archivage (erreur: %s)"
+#: ieee.c:2190
+msgid "unknown ATN type"
+msgstr "type ATN inconnu"
 
-#: objcopy.c:1790
-#, c-format
-msgid "Multiple renames of section %s"
-msgstr "Changement multiples de noms de la section %s"
+#. Reserved for FORTRAN common.
+#: ieee.c:2312
+msgid "unsupported ATN11"
+msgstr "ATN11 non supporté"
 
-#: objcopy.c:1841
-msgid "private header data"
-msgstr "données d'en-tête privée"
+#. We have no way to record this information.  FIXME.
+#: ieee.c:2339
+msgid "unsupported ATN12"
+msgstr "ATN2 non supporté"
+
+#: ieee.c:2399
+msgid "unexpected string in C++ misc"
+msgstr "chaîne inattendue dans misc en C++"
+
+#: ieee.c:2412
+msgid "bad misc record"
+msgstr "mauvais enregistrement misc"
+
+#: ieee.c:2453
+msgid "unrecognized C++ misc record"
+msgstr "enregistrement misc non reconnu en C++"
+
+#: ieee.c:2568
+msgid "undefined C++ object"
+msgstr "objet indéfini en C++"
+
+#: ieee.c:2602
+msgid "unrecognized C++ object spec"
+msgstr "spécification d'objet non reconnu en C++"
+
+#: ieee.c:2638
+msgid "unsupported C++ object type"
+msgstr "type d'objet non supporté en C++"
+
+#: ieee.c:2648
+msgid "C++ base class not defined"
+msgstr "classe de base non définie en C++"
 
-#: objcopy.c:1849
-#, c-format
-msgid "%s: error in %s: %s"
-msgstr "%s: erreur dans %s: %s"
+#: ieee.c:2660 ieee.c:2765
+msgid "C++ object has no fields"
+msgstr "objet n'ayant pas de champ en C++"
 
-#: objcopy.c:1903
-msgid "making"
-msgstr "génération"
+#: ieee.c:2679
+msgid "C++ base class not found in container"
+msgstr "classe de base non repéré dans le conteneur en C++"
 
-#: objcopy.c:1912
-msgid "size"
-msgstr "taille"
+#: ieee.c:2786
+msgid "C++ data member not found in container"
+msgstr "membre des données non repéré dans le conteneur en C++"
 
-#: objcopy.c:1926
-msgid "vma"
-msgstr "vma"
+#: ieee.c:2827 ieee.c:2977
+msgid "unknown C++ visibility"
+msgstr "visibilité C++ inconnue"
 
-#: objcopy.c:1951
-msgid "alignment"
-msgstr "alignement"
+#: ieee.c:2861
+msgid "bad C++ field bit pos or size"
+msgstr "mauvais champ de bit pos ou de taille en C++"
 
-#: objcopy.c:1966
-msgid "flags"
-msgstr "fanions"
+#: ieee.c:2953
+msgid "bad type for C++ method function"
+msgstr "mauvais type pour le méthode d'une fonction en C++"
 
-#: objcopy.c:1988
-msgid "private data"
-msgstr "données privées"
+#: ieee.c:2963
+msgid "no type information for C++ method function"
+msgstr "aucune information sur le type pour la méthode de la fonction en C++"
 
-#: objcopy.c:1996
-#, c-format
-msgid "%s: section `%s': error in %s: %s"
-msgstr "%s: section « %s »: erreur dans %s: %s"
+#: ieee.c:3002
+msgid "C++ static virtual method"
+msgstr "méthode statique virtuelle en C++"
 
-#: objcopy.c:2274
-#, c-format
-msgid "%s: can't create debugging section: %s"
-msgstr "%s: ne peut créer la section de débug: %s"
+#: ieee.c:3097
+msgid "unrecognized C++ object overhead spec"
+msgstr "spécification de l'en-tête de l'objet en C++ n'est pas reconnue"
 
-#: objcopy.c:2288
-#, c-format
-msgid "%s: can't set debugging section contents: %s"
-msgstr "%s: ne peut initialiser le contenu de la section de débug: %s"
+#: ieee.c:3136
+msgid "undefined C++ vtable"
+msgstr "vtable non définie en C++"
 
-#: objcopy.c:2297
-#, c-format
-msgid "%s: don't know how to write debugging information for %s"
-msgstr "%s: ne sait comment écrire les informations de débug de %s"
+#: ieee.c:3205
+msgid "C++ default values not in a function"
+msgstr "valeurs par défaut ne sont pas dans une fonction en C++"
 
-#: objcopy.c:2472
-msgid "byte number must be non-negative"
-msgstr "le nombre d'octet ne peut être négatif"
+#: ieee.c:3245
+msgid "unrecognized C++ default type"
+msgstr "type par défaut en C++ n'est pas reconnu"
 
-#: objcopy.c:2482
-msgid "interleave must be positive"
-msgstr "l'intercalage doit être positif"
+#: ieee.c:3276
+msgid "reference parameter is not a pointer"
+msgstr "paramètre de la référence n'est pas un pointeur"
 
-#: objcopy.c:2502 objcopy.c:2510
-#, c-format
-msgid "%s both copied and removed"
-msgstr "%s les deux doivent être copiés et enlevés"
+#: ieee.c:3359
+msgid "unrecognized C++ reference type"
+msgstr "référence du type en C++ n'est pas reconnue"
 
-#: objcopy.c:2603 objcopy.c:2674 objcopy.c:2774 objcopy.c:2805 objcopy.c:2829
-#: objcopy.c:2833 objcopy.c:2853
-#, c-format
-msgid "bad format for %s"
-msgstr "mauvais format pour %s"
+#: ieee.c:3441
+msgid "C++ reference not found"
+msgstr "la référence n'a pas été retrouvée en C++"
 
-#: objcopy.c:2624
-#, c-format
-msgid "cannot open: %s: %s"
-msgstr "ne peut ouvrir: %s: %s"
+#: ieee.c:3449
+msgid "C++ reference is not pointer"
+msgstr "la référence n'est pas un pointeur en C++"
 
-#: objcopy.c:2743
-#, c-format
-msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
-msgstr "AVERTISSEMENT: réduction du remplissage de 0x%s à 0x%x"
+#: ieee.c:3475 ieee.c:3483
+msgid "missing required ASN"
+msgstr "ASN requis est absent"
 
-#: objcopy.c:2903
-msgid "alternate machine code index must be positive"
-msgstr "le code alternatif d'index du code machine doit être positif"
+#: ieee.c:3510 ieee.c:3518
+msgid "missing required ATN65"
+msgstr "ATN65 requis est absent"
 
-#: objcopy.c:2961
-msgid "byte number must be less than interleave"
-msgstr "le nombre d'octets ne peut être plus petit que celui de l'intercalage"
+#: ieee.c:3532
+msgid "bad ATN65 record"
+msgstr "mauvais enregistrement ATN65"
 
-#: objcopy.c:2991
+#: ieee.c:4160
 #, c-format
-msgid "architecture %s unknown"
-msgstr "architecture %s inconnue"
-
-#: objcopy.c:2995
-msgid "Warning: input target 'binary' required for binary architecture parameter."
-msgstr "AVERTISSEMENT: la cible d'entrée « binary » requiert un paramètre pour une architecture binaire."
+msgid "IEEE numeric overflow: 0x"
+msgstr "débordement numériquie IEEE: Ox"
 
-#: objcopy.c:2996
+#: ieee.c:4204
 #, c-format
-msgid " Argument %s ignored"
-msgstr " Argument %s ignoré"
+msgid "IEEE string length overflow: %u\n"
+msgstr "débordement de la longueur de la chaîne IEEE: %u\n"
 
-#: objcopy.c:3002
+#: ieee.c:5203
 #, c-format
-msgid "warning: could not locate '%s'.  System error message: %s"
-msgstr "AVERTISSEMENT: ne peut localiser '%s'. Message d'erreur système: %s"
+msgid "IEEE unsupported integer type size %u\n"
+msgstr "taille de type d'entier IEEE non supporté %u\n"
 
-#: objcopy.c:3042 objcopy.c:3056
+#: ieee.c:5237
 #, c-format
-msgid "%s %s%c0x%s never used"
-msgstr "%s %s%c0x%s jamais utilisé"
+msgid "IEEE unsupported float type size %u\n"
+msgstr "taille de type de nombre IEEE en notation flottante non supporté %u\n"
 
-#: objdump.c:176
+#: ieee.c:5271
 #, c-format
-msgid "Usage: %s <option(s)> <file(s)>\n"
-msgstr "Usage: %s <options> <fichiers>\n"
+msgid "IEEE unsupported complex type size %u\n"
+msgstr "taille de nombre complexe IEEE non supportée %u\n"
 
-#: objdump.c:177
-#, c-format
-msgid " Display information from object <file(s)>.\n"
-msgstr "Afficher les informations depuis les <fichiers> objet.\n"
+#: nlmconv.c:269 srconv.c:1813
+msgid "input and output files must be different"
+msgstr "fichiers d'entrée et de sortie doivent être différents"
 
-#: objdump.c:178
-#, c-format
-msgid " At least one of the following switches must be given:\n"
-msgstr "Au moins un des commutateurs suivants doit être fourni:\n"
+#: nlmconv.c:316
+msgid "input file named both on command line and with INPUT"
+msgstr "fichier d'entrée nommé à la fois sur la ligne de commande et dans la champ INPUT"
 
-#: objdump.c:179
-#, c-format
-msgid ""
-"  -a, --archive-headers    Display archive header information\n"
-"  -f, --file-headers       Display the contents of the overall file header\n"
-"  -p, --private-headers    Display object format specific file header contents\n"
-"  -h, --[section-]headers  Display the contents of the section headers\n"
-"  -x, --all-headers        Display the contents of all headers\n"
-"  -d, --disassemble        Display assembler contents of executable sections\n"
-"  -D, --disassemble-all    Display assembler contents of all sections\n"
-"  -S, --source             Intermix source code with disassembly\n"
-"  -s, --full-contents      Display the full contents of all sections requested\n"
-"  -g, --debugging          Display debug information in object file\n"
-"  -e, --debugging-tags     Display debug information using ctags style\n"
-"  -G, --stabs              Display (in raw form) any STABS info in the file\n"
-"  -t, --syms               Display the contents of the symbol table(s)\n"
-"  -T, --dynamic-syms       Display the contents of the dynamic symbol table\n"
-"  -r, --reloc              Display the relocation entries in the file\n"
-"  -R, --dynamic-reloc      Display the dynamic relocation entries in the file\n"
-"  -v, --version            Display this program's version number\n"
-"  -i, --info               List object formats and architectures supported\n"
-"  -H, --help               Display this information\n"
-msgstr ""
-"  -a, --archive-headers    afficher l'information de l'en-tête de l'archive\n"
-"  -f, --file-headers       afficher le contenu global du fichier d'en-tête\n"
-"  -p, --private-headers    afficher le format spécifique du contenu de l'en-tête de l'objet\n"
-"  -h, --[section-]headers  afficher le contenu des en-têtes de section\n"
-"  -x, --all-headers        afficher le contenu de toutes les en-têtes\n"
-"  -d, --disassemble        afficher le contenu en assembleur des sections exécutables\n"
-"  -D, --disassemble-all    afficher le contenu en assembleur de toutes les sections\n"
-"  -S, --source             inter-mêler le code source avec le déassemblage\n"
-"  -s, --full-contents      afficher le contenu complet de toutes les sections voulus\n"
-"  -g, --debugging          afficher les informations de mise au point du fichier objet\n"
-"  -e, --debugging-tags     afficher les informations de mise au point en utilisant le style ctags\n"
-"  -G, --stabs              afficher (en format brut) toutes les infos à inclure du fichier\n"
-"  -t, --syms               afficher le contenu de(s) table(s) de symboles\n"
-"  -T, --dynamic-syms       afficher le contenu de la table dynamique de symboles\n"
-"  -r, --reloc              afficher les entrées de relocalisation du fichier\n"
-"  -R, --dynamic-reloc      afficher les entrées dynamiques de relocalisation du fichier\n"
-"  -V, --version            afficher le nom et la version du logiciel\n"
-"  -i, --info               afficher les formats objets et les architectures supportées\n"
-"  -H, --help               afficher cette information\n"
+#: nlmconv.c:325
+msgid "no input file"
+msgstr "aucun fichier d'entrée"
 
-#: objdump.c:202
-#, c-format
-msgid ""
-"\n"
-" The following switches are optional:\n"
-msgstr ""
-"\n"
-" Les commutateurs suivants sont optionnels:\n"
+#: nlmconv.c:355
+msgid "no name for output file"
+msgstr "aucun nom pour le fichier de sortie"
 
-#: objdump.c:203
-#, c-format
-msgid ""
-"  -b, --target=BFDNAME           Specify the target object format as BFDNAME\n"
-"  -m, --architecture=MACHINE     Specify the target architecture as MACHINE\n"
-"  -j, --section=NAME             Only display information for section NAME\n"
-"  -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
-"  -EB --endian=big               Assume big endian format when disassembling\n"
-"  -EL --endian=little            Assume little endian format when disassembling\n"
-"      --file-start-context       Include context from start of file (with -S)\n"
-"  -I, --include=DIR              Add DIR to search list for source files\n"
-"  -l, --line-numbers             Include line numbers and filenames in output\n"
-"  -C, --demangle[=STYLE]         Decode mangled/processed symbol names\n"
-"                                  The STYLE, if specified, can be `auto', `gnu',\n"
-"                                  `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
-"                                  or `gnat'\n"
-"  -w, --wide                     Format output for more than 80 columns\n"
-"  -z, --disassemble-zeroes       Do not skip blocks of zeroes when disassembling\n"
-"      --start-address=ADDR       Only process data whose address is >= ADDR\n"
-"      --stop-address=ADDR        Only process data whose address is <= ADDR\n"
-"      --prefix-addresses         Print complete address alongside disassembly\n"
-"      --[no-]show-raw-insn       Display hex alongside symbolic disassembly\n"
-"      --adjust-vma=OFFSET        Add OFFSET to all displayed section addresses\n"
-"      --special-syms             Include special symbols in symbol dumps\n"
-"\n"
-msgstr ""
-"  -b, --target=NOMBFD            spécifier le format de l'objet cible comme NOMBFD\n"
-"  -m, --architecture=MACHINE     spécifier l'architecture cible de la MACHINE\n"
-"  -j, --section=NOM              afficher seulement les informations de la section du NOM\n"
-"  -M, --disassembler-options=OPT relayer l'OPTion au dé-assembleur\n"
-"  -EB --endian=big               assumer le format « big endian » lors du dé-assemblage\n"
-"  -EL --endian=little            assumer le format « little endian » lors du dé-assemblage\n"
-"      --file-start-context       inclure le contexte à partir du début du fichier (avec -S)\n"
-"  -I, --include=RÉPERTOIRE       ajouter le répertoire à la liste de recherche des fichiers sources\n"
-"  -l, --line-numbers             inclure les numéros de ligne et les noms de fichier dans la sortie\n"
-"  -C, --demangle[=STYLE]         décoder les mutilations/traitements des noms de symboles\n"
-"                                 Le STYLE, si spécifé, peut être « auto », « gnu »,\n"
-"                                 « lucid », « arm », « hp », « edg », ou « gnu-v3 »,\n"
-"                                 « gnu-new-abi » ou « gnat »\n"
-"  -w, --wide                     formatter la sortie pour plus de 80 colonnes\n"
-"  -z, --disassemble-zeroes       ne pas escamoter les blocs de zéros lors du dé-assemblage\n"
-"      --start-address=ADR        traiter seulement les données dont les adresses sont >= ADR\n"
-"      --stop-address=ADR         traiter seulement les données dont les adresses sont <= ADR\n"
-"      --prefix-addresses         afficher les adresses complètes dans le dé-assemblage\n"
-"      --[no-]show-raw-insn       afficher en hexadécimale le dé-assemblage symbolique\n"
-"      --adjust-vma=DÉCALAGE      ajouter un DÉCALAGE à toutes les adresses affichés des sections\n"
-"      --special-syms             inclure les symboles spéciaux dans la vidange de symboles\n"
-"\n"
+#: nlmconv.c:369
+msgid "warning: input and output formats are not compatible"
+msgstr "AVERTISSEMENT: les formats d'entrée et de sortie sont incompatibles"
 
-#: objdump.c:378
-#, c-format
-msgid "Sections:\n"
-msgstr "Sections:\n"
+#: nlmconv.c:398
+msgid "make .bss section"
+msgstr "générer la section .bss"
+
+#: nlmconv.c:407
+msgid "make .nlmsections section"
+msgstr "générer la section .nlmsections"
+
+#: nlmconv.c:409
+msgid "set .nlmsections flags"
+msgstr "initialiser les fanions .nlmsections"
+
+#: nlmconv.c:437
+msgid "set .bss vma"
+msgstr "initialiser le vma de la section .bss"
 
-#: objdump.c:381 objdump.c:385
-#, c-format
-msgid "Idx Name          Size      VMA       LMA       File off  Algn"
-msgstr "Idx Nom           Taille    VMA       LMA       Fich off  Algn"
+#: nlmconv.c:444
+msgid "set .data size"
+msgstr "initialiser la taille de la section .data"
 
-#: objdump.c:387
+#: nlmconv.c:624
 #, c-format
-msgid "Idx Name          Size      VMA               LMA               File off  Algn"
-msgstr "Idx Nom           Taille    VMA               LMA               Fich off  Algn"
+msgid "warning: symbol %s imported but not in import list"
+msgstr "AVERTISSEMENT: symbole %s importé mais n'est pas dans la liste d'importation"
 
-#: objdump.c:391
-#, c-format
-msgid "  Flags"
-msgstr "  Fanions"
+#: nlmconv.c:644
+msgid "set start address"
+msgstr "initialiser l'adresse de départ"
 
-#: objdump.c:393
+#: nlmconv.c:693
 #, c-format
-msgid "  Pg"
-msgstr "  Pg"
+msgid "warning: START procedure %s not defined"
+msgstr "AVERTISSEMENT: procédure START %s n'est pas définie"
 
-#: objdump.c:436
+#: nlmconv.c:695
 #, c-format
-msgid "%s: not a dynamic object"
-msgstr "%s: n'est pas un objet dynamique"
+msgid "warning: EXIT procedure %s not defined"
+msgstr "AVERTISSEMENT: procédure EXIT %s n'est pas définie"
 
-#: objdump.c:1722
+#: nlmconv.c:697
 #, c-format
-msgid "Disassembly of section %s:\n"
-msgstr "Déassemblage de la section %s:\n"
+msgid "warning: CHECK procedure %s not defined"
+msgstr "AVERTISSEMENT: procédure CHECK %s n'est pas définie"
 
-#: objdump.c:1884
-#, c-format
-msgid "Can't use supplied machine %s"
-msgstr "Ne peut utiliser la machine %s"
+#: nlmconv.c:718 nlmconv.c:907
+msgid "custom section"
+msgstr "section « custom »"
 
-#: objdump.c:1903
-#, c-format
-msgid "Can't disassemble for architecture %s\n"
-msgstr "Ne peut déassembler pour l'architecture %s\n"
+#: nlmconv.c:739 nlmconv.c:936
+msgid "help section"
+msgstr "section d'aide"
 
-#: objdump.c:1973
-#, c-format
-msgid ""
-"No %s section present\n"
-"\n"
-msgstr ""
-"Aucune section %s présente\n"
-"\n"
+#: nlmconv.c:761 nlmconv.c:954
+msgid "message section"
+msgstr "section message"
 
-#: objdump.c:1982
-#, c-format
-msgid "Reading %s section of %s failed: %s"
-msgstr "Lecture de la section %s de %s a échouée: %s"
+#: nlmconv.c:777 nlmconv.c:987
+msgid "module section"
+msgstr "section module"
 
-#: objdump.c:2026
-#, c-format
-msgid ""
-"Contents of %s section:\n"
-"\n"
-msgstr ""
-"Contenu de la section %s:\n"
-"\n"
+#: nlmconv.c:797 nlmconv.c:1003
+msgid "rpc section"
+msgstr "section rpc"
 
-#: objdump.c:2153
+#. There is no place to record this information.
+#: nlmconv.c:833
 #, c-format
-msgid "architecture: %s, "
-msgstr "architecture: %s, "
+msgid "%s: warning: shared libraries can not have uninitialized data"
+msgstr "%s: AVERTISSEMENT: les librairies partagées ne peuvent avoir des données non initialisées"
 
-#: objdump.c:2156
-#, c-format
-msgid "flags 0x%08x:\n"
-msgstr "fanions 0x%08x:\n"
+#: nlmconv.c:854 nlmconv.c:1022
+msgid "shared section"
+msgstr "section partagée"
 
-#: objdump.c:2170
-#, c-format
-msgid ""
-"\n"
-"start address 0x"
-msgstr ""
-"\n"
-"adresse de départ 0x"
+#: nlmconv.c:862
+msgid "warning: No version number given"
+msgstr "AVERTISSEMENT: aucun numéro de version fourni"
 
-#: objdump.c:2210
+#: nlmconv.c:902 nlmconv.c:931 nlmconv.c:949 nlmconv.c:998 nlmconv.c:1017
 #, c-format
-msgid "Contents of section %s:\n"
-msgstr "Contenu de la section %s:\n"
+msgid "%s: read: %s"
+msgstr "%s: lu: %s"
 
-#: objdump.c:2335
-#, c-format
-msgid "no symbols\n"
-msgstr "aucun symbole\n"
+#: nlmconv.c:924
+msgid "warning: FULLMAP is not supported; try ld -M"
+msgstr "AVERTISSEMENT: FULLMAP n'est pas supporté; essayer ld -M"
 
-#: objdump.c:2342
+#: nlmconv.c:1100
 #, c-format
-msgid "no information for symbol number %ld\n"
-msgstr "pas d'information pour le symbol numéro %ld\n"
+msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
+msgstr "Usage: %s [options] fichier_entrée [fichier_sortie]\n"
 
-#: objdump.c:2345
+#: nlmconv.c:1101
 #, c-format
-msgid "could not determine the type of symbol number %ld\n"
-msgstr "incapable de déterminer le type du symbole numéro %ld\n"
+msgid " Convert an object file into a NetWare Loadable Module\n"
+msgstr "Convertir un fichier objet en un module NetWare Loadable\n"
 
-#: objdump.c:2611
+#: nlmconv.c:1102
 #, c-format
 msgid ""
-"\n"
-"%s:     file format %s\n"
+" The options are:\n"
+"  -I --input-target=<bfdname>   Set the input binary file format\n"
+"  -O --output-target=<bfdname>  Set the output binary file format\n"
+"  -T --header-file=<file>       Read <file> for NLM header information\n"
+"  -l --linker=<linker>          Use <linker> for any linking\n"
+"  -d --debug                    Display on stderr the linker command line\n"
+"  @<file>                       Read options from <file>.\n"
+"  -h --help                     Display this information\n"
+"  -v --version                  Display the program's version\n"
 msgstr ""
-"\n"
-"%s:     format de fichier %s\n"
-
-#: objdump.c:2662
-#, c-format
-msgid "%s: printing debugging information failed"
-msgstr "%s: échec d'affichage des information de débug"
+"Les options sont:\n"
+"  -I --input-target=<nombfd>    sélectionner le format binaire du fichier d'entrée\n"
+"  -O --output-target=<nombfd>   sélectionner le format binaire du fichier de sortie\n"
+"  -T --header-file=<fichier>    lire les informations NLM du  <fichier>\n"
+"  -l --linker=<lien>            utiliser l'éditeur de <liens> pour toutes éditions\n"
+"  -d --debug                    afficher la ligne de commande sur stderr\n"
+"  @<fichier>                    lire les options à partir du <fichier>\n"
+"   -h --help                    afficher l'aide-mémoire\n"
+"   -V --version                 afficher le nom et la version du logiciel\n"
 
-#: objdump.c:2753
+#: nlmconv.c:1143
 #, c-format
-msgid "In archive %s:\n"
-msgstr "Dans l'archive %s:\n"
-
-#: objdump.c:2873
-msgid "unrecognized -E option"
-msgstr "option -E non reconnue"
+msgid "support not compiled in for %s"
+msgstr "soutien non compilé pour %s"
 
-#: objdump.c:2884
-#, c-format
-msgid "unrecognized --endian type `%s'"
-msgstr "type non reconnu --endian « %s »"
+#: nlmconv.c:1180
+msgid "make section"
+msgstr "section make"
 
-#: rdcoff.c:196
-#, c-format
-msgid "parse_coff_type: Bad type code 0x%x"
-msgstr "parse_coff_type: mauvais type de code 0x%x"
+#: nlmconv.c:1194
+msgid "set section size"
+msgstr "initialisation de la taille de la section"
 
-#: rdcoff.c:404 rdcoff.c:509 rdcoff.c:697
-#, c-format
-msgid "bfd_coff_get_syment failed: %s"
-msgstr "bfd_coff_get_syment en échec: %s"
+#: nlmconv.c:1200
+msgid "set section alignment"
+msgstr "initialisation de l'alignement de la section"
 
-#: rdcoff.c:420 rdcoff.c:717
-#, c-format
-msgid "bfd_coff_get_auxent failed: %s"
-msgstr "bfd_coff_get_auxent en échec: %s"
+#: nlmconv.c:1204
+msgid "set section flags"
+msgstr "initialisation des fanions de la section"
 
-#: rdcoff.c:784
-#, c-format
-msgid "%ld: .bf without preceding function"
-msgstr "%ld: .bf aucune fonction qui précède"
+#: nlmconv.c:1215
+msgid "set .nlmsections size"
+msgstr "initialisation de la taille de .nlmsections"
 
-#: rdcoff.c:834
-#, c-format
-msgid "%ld: unexpected .ef\n"
-msgstr "%ld: .ef inattendu\n"
+#: nlmconv.c:1296 nlmconv.c:1304 nlmconv.c:1313 nlmconv.c:1318
+msgid "set .nlmsection contents"
+msgstr "initialisation du contenu de .nlmsection"
 
-#: rddbg.c:85
-#, c-format
-msgid "%s: no recognized debugging information"
-msgstr "%s: aucune information de débug reconnue"
+#: nlmconv.c:1797
+msgid "stub section sizes"
+msgstr "taille de la section stub"
 
-#: rddbg.c:394
-#, c-format
-msgid "Last stabs entries before error:\n"
-msgstr "Dernière entrées à inclure avant erreur:\n"
+#: nlmconv.c:1844
+msgid "writing stub"
+msgstr "écriture du stub"
 
-#: readelf.c:272
+#: nlmconv.c:1928
 #, c-format
-msgid "%s: Error: "
-msgstr "%s: ERREUR: "
+msgid "unresolved PC relative reloc against %s"
+msgstr "relocalisation relative sur PC non résolue de %s"
 
-#: readelf.c:283
+#: nlmconv.c:1992
 #, c-format
-msgid "%s: Warning: "
-msgstr "%s: AVERTISSEMENT: "
+msgid "overflow when adjusting relocation against %s"
+msgstr "débordement lors de la relocalisation de %s"
 
-#: readelf.c:298
+#: nlmconv.c:2119
 #, c-format
-msgid "Unable to seek to 0x%x for %s\n"
-msgstr "Incapable de repérer 0x%x pour %s\n"
+msgid "%s: execution of %s failed: "
+msgstr "%s: échec d'exécution de %s :"
 
-#: readelf.c:310
+#: nlmconv.c:2134
 #, c-format
-msgid "Out of memory allocating 0x%x bytes for %s\n"
-msgstr "Mémoire épuisée lors de l'allocation de 0x%x octets pour %s\n"
+msgid "Execution of %s failed"
+msgstr "Échec d'exécution de %s"
 
-#: readelf.c:318
+#: nm.c:224 size.c:82 strings.c:708
 #, c-format
-msgid "Unable to read in 0x%x bytes of %s\n"
-msgstr "Incapable de lire 0x%x octets de %s\n"
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr "Usage: %s [options] fichiers\n"
 
-#: readelf.c:364 readelf.c:412 readelf.c:615 readelf.c:647
+#: nm.c:225
 #, c-format
-msgid "Unhandled data length: %d\n"
-msgstr "Taille de données non traitées: %d\n"
-
-#: readelf.c:752
-msgid "Don't know about relocations on this machine architecture\n"
-msgstr "Ne connaît pas de méthode pour la relocalisation sur l'architecture de cette machine\n"
-
-#: readelf.c:772 readelf.c:799 readelf.c:842 readelf.c:869
-msgid "relocs"
-msgstr "relocalisations"
-
-#: readelf.c:782 readelf.c:809 readelf.c:852 readelf.c:879
-msgid "out of memory parsing relocs"
-msgstr "Mémoire épuisée lors de l'analyse syntaxique des relocalisations"
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr "Afficher les symboles des [fichiers] (a.out par défaut).\n"
 
-#: readelf.c:933
+#: nm.c:226
 #, c-format
-msgid " Offset     Info    Type                Sym. Value  Symbol's Name + Addend\n"
-msgstr " Décalage   Info    Type                Val.-sym.   Noms-symb.    + Addenda\n"
+msgid ""
+" The options are:\n"
+"  -a, --debug-syms       Display debugger-only symbols\n"
+"  -A, --print-file-name  Print name of the input file before every symbol\n"
+"  -B                     Same as --format=bsd\n"
+"  -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
+"                          The STYLE, if specified, can be `auto' (the default),\n"
+"                          `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+"                          or `gnat'\n"
+"      --no-demangle      Do not demangle low-level symbol names\n"
+"  -D, --dynamic          Display dynamic symbols instead of normal symbols\n"
+"      --defined-only     Display only defined symbols\n"
+"  -e                     (ignored)\n"
+"  -f, --format=FORMAT    Use the output format FORMAT.  FORMAT can be `bsd',\n"
+"                           `sysv' or `posix'.  The default is `bsd'\n"
+"  -g, --extern-only      Display only external symbols\n"
+"  -l, --line-numbers     Use debugging information to find a filename and\n"
+"                           line number for each symbol\n"
+"  -n, --numeric-sort     Sort symbols numerically by address\n"
+"  -o                     Same as -A\n"
+"  -p, --no-sort          Do not sort the symbols\n"
+"  -P, --portability      Same as --format=posix\n"
+"  -r, --reverse-sort     Reverse the sense of the sort\n"
+"  -S, --print-size       Print size of defined symbols\n"
+"  -s, --print-armap      Include index for symbols from archive members\n"
+"      --size-sort        Sort symbols by size\n"
+"      --special-syms     Include special symbols in the output\n"
+"      --synthetic        Display synthetic symbols as well\n"
+"  -t, --radix=RADIX      Use RADIX for printing symbol values\n"
+"      --target=BFDNAME   Specify the target object format as BFDNAME\n"
+"  -u, --undefined-only   Display only undefined symbols\n"
+"  -X 32_64               (ignored)\n"
+"  @FILE                  Read options from FILE\n"
+"  -h, --help             Display this information\n"
+"  -V, --version          Display this program's version number\n"
+"\n"
+msgstr ""
+"Les options sont:\n"
+"  -a, --debug-syms       afficher seulement les symboles de débug\n"
+"  -A, --print-file-name  afficher le nom du fichier d'entrée avant chaque symbole\n"
+"  -B                     identique à --format=bsd\n"
+"  -C, --demangle[=STYLE] décoder les noms des symboles de bas niveau en noms de ceux\n"
+"                         du niveau  usager. Le STYLE, si spécifié, peut être « auto »\n"
+"                         (par défaut), « gnu », « lucid », « arm », « hp », « edg » ou « gnu-new-abi »,\n"
+"      --no-demangle      ne pas encoder par mutilation les noms des symboles de bas niveau\n"
+"  -D, --dynamic          afficher les symboles dynamiques au lieu des symboles normaux\n"
+"      --defined-only     afficher seulement les symboles définis\n"
+"  -e                     (ignoré)\n"
+"  -f, --format=FORMAT    utiliser le FORMAT de sortie qui peut être « bsd » (par défaut),\n"
+"                         « sysv » ou « posix ».\n"
+"  -g, --extern-only      afficher seulement les symboles externes\n"
+"  -l, --line-numbers     utiliser les informations de débug pour repérer le nom de fichier\n"
+"                         et un numéro de ligne pour chaque symbole\n"
+"  -n, --numeric-sort     trier les symboles numériquement par adresse\n"
+"  -o                     identique à  -A\n"
+"  -p, --no-sort          ne pas trier les symboles\n"
+"  -P, --portability      identique à  --format=posix\n"
+"  -r, --reverse-sort     trier en ordre inverse\n"
+"  -S, --print-size       afficher la taille des symboles définis\n"
+"  -s, --print-armap      inclure un index pour les symboles à partir des membres de l'archive\n"
+"      --size-sort        trier les symboles par leur taille\n"
+"      --special-syms     inclure les symboles spéciaux sur la sortie\n"
+"      --synthetic        afficher les symboles synthétiques\n"
+"  -t, --radix=BASE       utiliser la BASE numérique pour afficher la valeur des symboles\n"
+"      --target=NOM_BFD   spécifier la cible du format de l'objet par le NOM_BFD\n"
+"  -u, --undefined-only   afficher seulement les symboles indéfinis\n"
+"  -V, --version          afficher le nom et la version du logiciel\n"
+"  -X 32_64               (ignoré)\n"
+"  @<fichier>             lire les options à partir du <fichier>\n"
+"  -h --help              afficher l'aide-mémoire\n"
+"  -V --version           afficher le nom et la version du logiciel\n"
+"\n"
 
-#: readelf.c:935
+#: nm.c:263 objdump.c:236
 #, c-format
-msgid " Offset     Info    Type            Sym.Value  Sym. Name + Addend\n"
-msgstr " Décalage   Info    Type            Val.-sym   Noms-symb + Addenda\n"
+msgid "Report bugs to %s.\n"
+msgstr "Rapporter toutes anomalies à %s\n"
 
-#: readelf.c:940
+#: nm.c:295
 #, c-format
-msgid " Offset     Info    Type                Sym. Value  Symbol's Name\n"
-msgstr " Décalage   Info    Type                Val.-sym.   Noms-symboles\n"
+msgid "%s: invalid radix"
+msgstr "%s: base numérique invalide"
 
-#: readelf.c:942
+#: nm.c:319
 #, c-format
-msgid " Offset     Info    Type            Sym.Value  Sym. Name\n"
-msgstr " Décalage   Info    Type            Val.-sym   Noms-symboles\n"
+msgid "%s: invalid output format"
+msgstr "%s: format de sortie invalide"
 
-#: readelf.c:950
+#: nm.c:340 readelf.c:6623 readelf.c:6659
 #, c-format
-msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name + Addend\n"
-msgstr "    Décalage           Info             Type               Valeurs symbols Noms symboles + Addenda\n"
+msgid "<processor specific>: %d"
+msgstr "<spécificités du processor>: %d"
 
-#: readelf.c:952
+#: nm.c:342 readelf.c:6626 readelf.c:6671
 #, c-format
-msgid "  Offset          Info           Type           Sym. Value    Sym. Name + Addend\n"
-msgstr "  Décalage        Info           Type           Val.-symboles Noms-symb.+ Addenda\n"
+msgid "<OS specific>: %d"
+msgstr "<spécificités du système d'exploitation>: %d"
 
-#: readelf.c:957
+#: nm.c:344 readelf.c:6628 readelf.c:6674
 #, c-format
-msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name\n"
-msgstr "    Décalage           Info             Type               Valeurs symbols Noms symbols\n"
+msgid "<unknown>: %d"
+msgstr "<inconnu>: %d"
 
-#: readelf.c:959
+#: nm.c:381
 #, c-format
-msgid "  Offset          Info           Type           Sym. Value    Sym. Name\n"
-msgstr "  Décalage        Info           Type           Val.-symboles Noms-symboles\n"
+msgid ""
+"\n"
+"Archive index:\n"
+msgstr ""
+"\n"
+"Indexe de l'archive:\n"
 
-#: readelf.c:1239 readelf.c:1241 readelf.c:1324 readelf.c:1326 readelf.c:1335
-#: readelf.c:1337
+#: nm.c:1227
 #, c-format
-msgid "unrecognized: %-7lx"
-msgstr "non reconnue: %-7lx"
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Symboles indéfinis dans %s:\n"
+"\n"
 
-#: readelf.c:1295
+#: nm.c:1229
 #, c-format
-msgid "<string table index: %3ld>"
-msgstr "<chaîne de la table index: %3ld>"
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Symboles de %s:\n"
+"\n"
 
-#: readelf.c:1297
+#: nm.c:1231 nm.c:1282
 #, c-format
-msgid "<corrupt string table index: %3ld>"
-msgstr "<chaîne corrompu de la table index: %3ld>"
+msgid ""
+"Name                  Value   Class        Type         Size     Line  Section\n"
+"\n"
+msgstr ""
+"Nom                   Valeur  Classe       Type         Taille   Ligne Section\n"
+"\n"
 
-#: readelf.c:1569
+#: nm.c:1234 nm.c:1285
 #, c-format
-msgid "Processor Specific: %lx"
-msgstr "Spécificités du processeur: %lx"
+msgid ""
+"Name                  Value           Class        Type         Size             Line  Section\n"
+"\n"
+msgstr ""
+"Nom                   Valeur          Classe       Type         Taille           Ligne Section\n"
+"\n"
 
-#: readelf.c:1588
+#: nm.c:1278
 #, c-format
-msgid "Operating System specific: %lx"
-msgstr "Spécificités du systèmes d'exploitation: %lx"
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Symboles indéfinis dans %s[%s]:\n"
+"\n"
 
-#: readelf.c:1592 readelf.c:2370
+#: nm.c:1280
 #, c-format
-msgid "<unknown>: %lx"
-msgstr "<inconnu>: %lx"
-
-#: readelf.c:1605
-msgid "NONE (None)"
-msgstr "NONE (Aucun)"
-
-#: readelf.c:1606
-msgid "REL (Relocatable file)"
-msgstr "REL (Fichier de relocalisation)"
-
-#: readelf.c:1607
-msgid "EXEC (Executable file)"
-msgstr "EXEC (fichier exécutable)"
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Symboles de %s[%s]:\n"
+"\n"
 
-#: readelf.c:1608
-msgid "DYN (Shared object file)"
-msgstr "DYN (fichier objet partagé)"
+#: nm.c:1584
+msgid "Only -X 32_64 is supported"
+msgstr "Seul -X 32_64 est supporté"
 
-#: readelf.c:1609
-msgid "CORE (Core file)"
-msgstr "CORE (fichier core)"
+#: nm.c:1604
+msgid "Using the --size-sort and --undefined-only options together"
+msgstr "Utiliser ensemble les options --size-sort et --undefined-only"
 
-#: readelf.c:1613
-#, c-format
-msgid "Processor Specific: (%x)"
-msgstr "Spécificités du processor: (%x)"
+#: nm.c:1605
+msgid "will produce no output, since undefined symbols have no size."
+msgstr "ne produira aucune sortie étant donnée que les symboles n'ont aucune taille."
 
-#: readelf.c:1615
+#: nm.c:1633
 #, c-format
-msgid "OS Specific: (%x)"
-msgstr "Spécificités du système d'exploitation: (%x)"
+msgid "data size %ld"
+msgstr "taille des donnée %ld"
 
-#: readelf.c:1617 readelf.c:1724 readelf.c:2554
+#: objcopy.c:401 srconv.c:1721
 #, c-format
-msgid "<unknown>: %x"
-msgstr "<inconnu>: %x"
-
-#: readelf.c:1629
-msgid "None"
-msgstr "Aucun"
-
-#: readelf.c:2229
-msgid "Standalone App"
-msgstr "Tache autonome"
+msgid "Usage: %s [option(s)] in-file [out-file]\n"
+msgstr "Usage: %s [options] fichier_d_entrée [fichier_de_sortie]\n"
 
-#: readelf.c:2232 readelf.c:2952 readelf.c:2968
+#: objcopy.c:402
 #, c-format
-msgid "<unknown: %x>"
-msgstr "<inconnu: %x>"
+msgid " Copies a binary file, possibly transforming it in the process\n"
+msgstr "Copier un fichier binaire, possiblement le transformer durant le traitement\n"
 
-#: readelf.c:2597
+#: objcopy.c:403 objcopy.c:495
 #, c-format
-msgid "Usage: readelf <option(s)> elf-file(s)\n"
-msgstr "Usage: readelf <options> fichiers-elf\n"
+msgid " The options are:\n"
+msgstr " Les options sont:\n"
 
-#: readelf.c:2598
+#: objcopy.c:404
 #, c-format
-msgid " Display information about the contents of ELF format files\n"
-msgstr "Afficher les informations à propos du contenu du format des fichiers ELF\n"
+msgid ""
+"  -I --input-target <bfdname>      Assume input file is in format <bfdname>\n"
+"  -O --output-target <bfdname>     Create an output file in format <bfdname>\n"
+"  -B --binary-architecture <arch>  Set arch of output file, when input is binary\n"
+"  -F --target <bfdname>            Set both input and output format to <bfdname>\n"
+"     --debugging                   Convert debugging information, if possible\n"
+"  -p --preserve-dates              Copy modified/access timestamps to the output\n"
+"  -j --only-section <name>         Only copy section <name> into the output\n"
+"     --add-gnu-debuglink=<file>    Add section .gnu_debuglink linking to <file>\n"
+"  -R --remove-section <name>       Remove section <name> from the output\n"
+"  -S --strip-all                   Remove all symbol and relocation information\n"
+"  -g --strip-debug                 Remove all debugging symbols & sections\n"
+"     --strip-unneeded              Remove all symbols not needed by relocations\n"
+"  -N --strip-symbol <name>         Do not copy symbol <name>\n"
+"     --strip-unneeded-symbol <name>\n"
+"                                   Do not copy symbol <name> unless needed by\n"
+"                                     relocations\n"
+"     --only-keep-debug             Strip everything but the debug information\n"
+"  -K --keep-symbol <name>          Do not strip symbol <name>\n"
+"  -L --localize-symbol <name>      Force symbol <name> to be marked as a local\n"
+"     --globalize-symbol <name>     Force symbol <name> to be marked as a global\n"
+"  -G --keep-global-symbol <name>   Localize all symbols except <name>\n"
+"  -W --weaken-symbol <name>        Force symbol <name> to be marked as a weak\n"
+"     --weaken                      Force all global symbols to be marked as weak\n"
+"  -w --wildcard                    Permit wildcard in symbol comparison\n"
+"  -x --discard-all                 Remove all non-global symbols\n"
+"  -X --discard-locals              Remove any compiler-generated symbols\n"
+"  -i --interleave <number>         Only copy one out of every <number> bytes\n"
+"  -b --byte <num>                  Select byte <num> in every interleaved block\n"
+"     --gap-fill <val>              Fill gaps between sections with <val>\n"
+"     --pad-to <addr>               Pad the last section up to address <addr>\n"
+"     --set-start <addr>            Set the start address to <addr>\n"
+"    {--change-start|--adjust-start} <incr>\n"
+"                                   Add <incr> to the start address\n"
+"    {--change-addresses|--adjust-vma} <incr>\n"
+"                                   Add <incr> to LMA, VMA and start addresses\n"
+"    {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+"                                   Change LMA and VMA of section <name> by <val>\n"
+"     --change-section-lma <name>{=|+|-}<val>\n"
+"                                   Change the LMA of section <name> by <val>\n"
+"     --change-section-vma <name>{=|+|-}<val>\n"
+"                                   Change the VMA of section <name> by <val>\n"
+"    {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+"                                   Warn if a named section does not exist\n"
+"     --set-section-flags <name>=<flags>\n"
+"                                   Set section <name>'s properties to <flags>\n"
+"     --add-section <name>=<file>   Add section <name> found in <file> to output\n"
+"     --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+"     --change-leading-char         Force output format's leading character style\n"
+"     --remove-leading-char         Remove leading character from global symbols\n"
+"     --redefine-sym <old>=<new>    Redefine symbol name <old> to <new>\n"
+"     --redefine-syms <file>        --redefine-sym for all symbol pairs \n"
+"                                     listed in <file>\n"
+"     --srec-len <number>           Restrict the length of generated Srecords\n"
+"     --srec-forceS3                Restrict the type of generated Srecords to S3\n"
+"     --strip-symbols <file>        -N for all symbols listed in <file>\n"
+"     --strip-unneeded-symbols <file>\n"
+"                                   --strip-unneeded-symbol for all symbols listed\n"
+"                                     in <file>\n"
+"     --keep-symbols <file>         -K for all symbols listed in <file>\n"
+"     --localize-symbols <file>     -L for all symbols listed in <file>\n"
+"     --globalize-symbols <file>    --globalize-symbol for all in <file>\n"
+"     --keep-global-symbols <file>  -G for all symbols listed in <file>\n"
+"     --weaken-symbols <file>       -W for all symbols listed in <file>\n"
+"     --alt-machine-code <index>    Use alternate machine code for output\n"
+"     --writable-text               Mark the output text as writable\n"
+"     --readonly-text               Make the output text write protected\n"
+"     --pure                        Mark the output file as demand paged\n"
+"     --impure                      Mark the output file as impure\n"
+"     --prefix-symbols <prefix>     Add <prefix> to start of every symbol name\n"
+"     --prefix-sections <prefix>    Add <prefix> to start of every section name\n"
+"     --prefix-alloc-sections <prefix>\n"
+"                                   Add <prefix> to start of every allocatable\n"
+"                                     section name\n"
+"  -v --verbose                     List all object files modified\n"
+"  @<file>                          Read options from <file>\n"
+"  -V --version                     Display this program's version number\n"
+"  -h --help                        Display this output\n"
+"     --info                        List object formats & architectures supported\n"
+msgstr ""
+"  -I --input-target <nombfd>       assumer que le fichier d'entrée est de format <nombfd>\n"
+"  -O --output-target <nombfd>      créer un fichier de sortie de format <nombfd>\n"
+"  -B --binary-architecture <arch>  sélectionner l'architecture du fichier de sortie lorsque binaire\n"
+"  -F --target <nombfd>             initialiser les formats d'entrée et de sortie à <nombfd>\n"
+"     --debugging                   convertir les informations de débug, si possible\n"
+"  -p --preserve-dates              conserver les dates d'accès et de modification de fichiers\n"
+"  -j --only-section <nom>          copier seulement la section <nom> dans le fichier de sortie\n"
+"     --add-gnu-debuglink=<fichier> ajouter la section .gnu_debuglink d'édition de liens au <fichier>\n"
+"  -R --remove-section <nom>        retirer la section <nom> du fichier de sortie\n"
+"  -S --strip-all                   retirer tous les symboles et les informations de relocalisation\n"
+"  -g --strip-debug                 retirer tous les symboles de débug\n"
+"     --strip-unneeded              retirer tous les symboles qui ne sont pas nécessaires pour la relocalisation\n"
+"  -N --strip-symbol <nom>          ne pas copier le symbole <nom>\n"
+"     --strip-unneeded-symbol <name>\n"
+"                                   ne pas copier le symbole <nom> à moins qu'il soit\n"
+"                                     nécessaire à la relocalisation\n"
+"     --only-keep-debug             élaguer tout sauf les informations de mise au point\n"
+"  -K --keep-symbol <nom>           copier seulement le symbole <nom>\n"
+"  -L --localize-symbol <nom>       marquer le symbole <nom> comme symbole local\n"
+"  -G --keep-global-symbol <nom>    localiser tous les symboles sauf celui ayant pour <nom>\n"
+"  -W --weaken-symbol <nom>         marquer le symbole <nom> comme symbole faible\n"
+"     --weaken                      marquer tous les symboles globaux comme symboles faibles\n"
+"  -x --discard-all                 retirer tous les symboles qui ne sont pas globaux\n"
+"  -X --discard-locals              retirer tous les symboles générés par le compilateur\n"
+"  -i --interleave <nombre>         copier seulement 1 octet à chaque <nombre> d'octets\n"
+"  -b --byte <numéro>               sélectionner l'octet <numéro> dans chaque bloc intercalé\n"
+"     --gap-fill <valeur>           remplir les trous entre les sections avec la <valeur>\n"
+"     --pad-to <adresse>            remplir la dernière section jusqu'à l'<adresse>\n"
+"     --set-start <adresse>         utiliser l'<adresse> de départ\n"
+"    {--change-start|--adjust-start} <incrément>\n"
+"                                   ajouter l'<incrément> à l'adresse de départ\n"
+"    {--change-addresses|--adjust-vma} <incrément>\n"
+"                                   ajouter l'<incrément> aux adresses LMA, VMA et de départ\n"
+"    {--change-section-address|--adjust-section-vma} <nom>{=|+|-}<valeur>\n"
+"                                   modifier LMA et VMA de la section <nom> par la <valeur>\n"
+"     --change-section-lma <nom>{=|+|-}<valeur>\n"
+"                                   modifier LMA de la section <nom> par la <valeur>\n"
+"     --change-section-vma <nom>{=|+|-}<valeur>\n"
+"                                   modifier VMA de la section <nom> par la <valeur>\n"
+"    {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+"                                   avertir si le nom de la section n'existe pas\n"
+"     --set-section-flags <nom>=<fanions>\n"
+"                                   initialiser les propriétés de la section <nom> avec les <fanions>\n"
+"     --add-section <nom>=<fichier> ajouter la section <nom> repérée dans le <fichier> vers la sortie\n"
+"     --rename-section <anc>=<nou>[,<fanions>] renommer l'<ancienne> section à la <nouvelle>\n"
+"     --change-leading-char         forcer le format de sortie du style des caractères de préfixe\n"
+"     --remove-leading-char         retirer les caractères de préfixe des symboles globaux\n"
+"     --redefine-sym <ancien>=<nouveau>\n"
+"                                   redéfinir le nom du symbole <ancien> à <nouveau>\n"
+"     --srec-len <nombre>           restreindre la longueur des Srecords générés\n"
+"     --srec-forceS3                restreindre le type de Srecords générés à S3\n"
+"     --strip-symbols <fichier>     -N pour tous les symboles listés dans le <fichier>\n"
+"     --keep-symbols <fichier>      -K pour tous les symboles listés dans le <fichier>\n"
+"     --localize-symbols <fichier>  -L pour tous les symboles listés dans le <fichier>\n"
+"     --keep-global-symbols <fichier>\n"
+"                                   -G pour tous les symboles listés dans le <fichier>\n"
+"     --weaken-symbols <fichier>    -W pour tous les symboles listés dans le <fichier>\n"
+"     --alt-machine-code <index>    Use alternate machine code for output\n"
+"  -v --verbose                     afficher la liste de tous les objets modifiés\n"
+"  @<fichier>                       lire les options à partir du <fichier>\n"
+"  -V --version                     afficher le nom et la version du logiciel\n"
+"  -h --help                        afficher l'aide-mémoire\n"
 
-#: readelf.c:2599
+#: objcopy.c:493
 #, c-format
-msgid ""
-" Options are:\n"
-"  -a --all               Equivalent to: -h -l -S -s -r -d -V -A -I\n"
-"  -h --file-header       Display the ELF file header\n"
-"  -l --program-headers   Display the program headers\n"
-"     --segments          An alias for --program-headers\n"
-"  -S --section-headers   Display the sections' header\n"
-"     --sections          An alias for --section-headers\n"
-"  -g --section-groups    Display the section groups\n"
-"  -e --headers           Equivalent to: -h -l -S\n"
-"  -s --syms              Display the symbol table\n"
-"      --symbols          An alias for --syms\n"
-"  -n --notes             Display the core notes (if present)\n"
-"  -r --relocs            Display the relocations (if present)\n"
-"  -u --unwind            Display the unwind info (if present)\n"
-"  -d --dynamic           Display the dynamic section (if present)\n"
-"  -V --version-info      Display the version sections (if present)\n"
-"  -A --arch-specific     Display architecture specific information (if any).\n"
-"  -D --use-dynamic       Use the dynamic section info when displaying symbols\n"
-"  -x --hex-dump=<number> Dump the contents of section <number>\n"
-"  -w[liaprmfFsoR] or\n"
-"  --debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n"
-"                         Display the contents of DWARF2 debug sections\n"
-msgstr ""
-"Les options sont:\n"
-"  -a --all               équivalent à: -h -l -S -s -r -d -V -A -I\n"
-"  -h --file-header       afficher l'en-tête du fichier ELF\n"
-"  -l --program-headers   afficher les en-têtes du programme\n"
-"     --segments          un alias pour --program-headers\n"
-"  -S --section-headers   afficher les en-têtes des sections\n"
-"     --sections          un alias pour --section-headers\n"
-"  -g --section-groups    afficher les groupes de section\n"
-"  -e --headers           équivalent à: -h -l -S\n"
-"  -s --syms              afficher la table des symboles\n"
-"      --symbols          un alias pour --syms\n"
-"  -n --notes             afficher les notes du core (si présentes)\n"
-"  -r --relocs            afficher les relocalisation (si présentes)\n"
-"  -u --unwind            afficher les informations de type unwind (si présentes)\n"
-"  -d --dynamic           afficher le segment dynamique (si présent)\n"
-"  -V --version-info      afficher la version des sections (si présentes)\n"
-"  -A --arch-specific     afficher les informations spécifiques d'architecture (si présentes)\n"
-"  -D --use-dynamic       utiliser les informations de la section\n"
-"                         dynamique lors de l'affichage des symboles\n"
-"  -x --hex-dump=<numéro> vidanger le contenu de la section <numéro>\n"
-"  -w[liaprmfFso]         ou\n"
-"     --debug-dump[=liGne,=info,=abrév.,=nom-public,=étendue,=macro,=trames,=chaîne,=localisation]\n"
-"                         afficher le contenu des sections débug DWARF2\n"
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr "Usage: %s <options> fichiers\n"
 
-#: readelf.c:2622
+#: objcopy.c:494
 #, c-format
-msgid ""
-"  -i --instruction-dump=<number>\n"
-"                         Disassemble the contents of section <number>\n"
-msgstr ""
-"  -i --instruction-dump=<numéro>\n"
-"                         déassembler le contenu de la section <numéro>\n"
+msgid " Removes symbols and sections from files\n"
+msgstr "Enlever les symboles et les sections des fichiers\n"
 
-#: readelf.c:2626
+#: objcopy.c:496
 #, c-format
 msgid ""
-"  -I --histogram         Display histogram of bucket list lengths\n"
-"  -W --wide              Allow output width to exceed 80 characters\n"
-"  -H --help              Display this information\n"
-"  -v --version           Display the version number of readelf\n"
+"  -I --input-target=<bfdname>      Assume input file is in format <bfdname>\n"
+"  -O --output-target=<bfdname>     Create an output file in format <bfdname>\n"
+"  -F --target=<bfdname>            Set both input and output format to <bfdname>\n"
+"  -p --preserve-dates              Copy modified/access timestamps to the output\n"
+"  -R --remove-section=<name>       Remove section <name> from the output\n"
+"  -s --strip-all                   Remove all symbol and relocation information\n"
+"  -g -S -d --strip-debug           Remove all debugging symbols & sections\n"
+"     --strip-unneeded              Remove all symbols not needed by relocations\n"
+"     --only-keep-debug             Strip everything but the debug information\n"
+"  -N --strip-symbol=<name>         Do not copy symbol <name>\n"
+"  -K --keep-symbol=<name>          Do not strip symbol <name>\n"
+"  -w --wildcard                    Permit wildcard in symbol comparison\n"
+"  -x --discard-all                 Remove all non-global symbols\n"
+"  -X --discard-locals              Remove any compiler-generated symbols\n"
+"  -v --verbose                     List all object files modified\n"
+"  -V --version                     Display this program's version number\n"
+"  -h --help                        Display this output\n"
+"     --info                        List object formats & architectures supported\n"
+"  -o <file>                        Place stripped output into <file>\n"
 msgstr ""
-"  -I --histogram         afficher l'histogramme des bacs selon la longueur de la liste\n"
-"  -W --wide              permettre d'afficher plus de 80 caractères\n"
-"  -H --help              afficher l'aide-mémoire\n"
-"  -V --version           afficher le nom et la version du logiciel\n"
-
-#: readelf.c:2651 readelf.c:12118
-msgid "Out of memory allocating dump request table."
-msgstr "Mémoire épuisée allocation d'une table pour requêtes de vidange"
-
-#: readelf.c:2820 readelf.c:2888
-#, c-format
-msgid "Unrecognized debug option '%s'\n"
-msgstr "Option de débug non reconnue « %s »\n"
-
-#: readelf.c:2922
-#, c-format
-msgid "Invalid option '-%c'\n"
-msgstr "Option invalide '-%c»\n"
-
-#: readelf.c:2936
-msgid "Nothing to do.\n"
-msgstr "Rien à faire.\n"
-
-#: readelf.c:2948 readelf.c:2964 readelf.c:5906
-msgid "none"
-msgstr "aucun"
-
-#: readelf.c:2965
-msgid "2's complement, little endian"
-msgstr "complément à 2, système à octets de poids faible d'abord (little endian)"
-
-#: readelf.c:2966
-msgid "2's complement, big endian"
-msgstr "complément à 2, système à octets de poids fort d'abord (big endian)"
-
-#: readelf.c:2984
-msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
-msgstr "N'est pas un fichier ELF - a les mauvais octets magiques au départ\n"
-
-#: readelf.c:2992
-#, c-format
-msgid "ELF Header:\n"
-msgstr "En-tête ELF:\n"
-
-#: readelf.c:2993
-#, c-format
-msgid "  Magic:   "
-msgstr "  Magique:   "
-
-#: readelf.c:2997
-#, c-format
-msgid "  Class:                             %s\n"
-msgstr "  Classe:                            %s\n"
+"  -I --input-target <nombfd>       assumer que le format du fichier d'entrée est <nombdf>\n"
+"  -O --output-target <nombfd>      créer un fichier de sortie ayant le format <nombfd>\n"
+"  -F --target <nombfd>             utiliser à l'entrée et à la sortie le format <nombfd>\n"
+"  -p --preserve-dates              préserver les dates d'accès et de modification lors de la copie\n"
+"  -R --remove-section=<nom>        retirer la section <nom> du fichier de sortie\n"
+"  -s --strip-all                   retirer tous les symboles et les informations de relocalisation\n"
+"  -g -S -d --strip-debug           retirer tous les symboles de débug\n"
+"     --strip-unneeded              retirer tous les symboles qui ne sont pas nécessaire à la relocalisation\n"
+"     --only-keep-debug             retirer tous les symboles sauf les informations de mise au point\n"
+"  -N --strip-symbol <nom>          ne pas copier le symbole <nom>\n"
+"  -K --keep-symbol <nom>           copier seulement le symbole <nom>\n"
+"  -w --wildcard                    permettre tous les symboles dans la comparaison\n"
+"  -x --discard-all                 retirer tous les symboles qui ne sont pas globaux\n"
+"  -X --discard-locals              retirer tous les symboles qui sont générés par le compilateur\n"
+"  -v --verbose                     afficher tous les fichiers objets modifiés\n"
+"  -V --version                     afficher le nom et la version du logiciel\n"
+"  -h --help                        afficher l'aide-mémoire\n"
+"     --info                        lister le format des objets et les architectures supportés\n"
+"  -o <fichier>                     placer la sortie élaguée dans le <fichier>\n"
 
-#: readelf.c:2999
+#: objcopy.c:568
 #, c-format
-msgid "  Data:                              %s\n"
-msgstr "  Données:                          %s\n"
+msgid "unrecognized section flag `%s'"
+msgstr "fanion de section non reconnnu « %s »"
 
-#: readelf.c:3001
+#: objcopy.c:569
 #, c-format
-msgid "  Version:                           %d %s\n"
-msgstr "  Version:                           %d %s\n"
+msgid "supported flags: %s"
+msgstr "fanions supportés: %s"
 
-#: readelf.c:3008
+#: objcopy.c:646
 #, c-format
-msgid "  OS/ABI:                            %s\n"
-msgstr "  OS/ABI:                            %s\n"
+msgid "cannot open '%s': %s"
+msgstr "ne peut ouvrir: « %s »: %s"
 
-#: readelf.c:3010
+#: objcopy.c:649 objcopy.c:2722
 #, c-format
-msgid "  ABI Version:                       %d\n"
-msgstr "  Version ABI:                       %d\n"
+msgid "%s: fread failed"
+msgstr "%s: fread en échec"
 
-#: readelf.c:3012
+#: objcopy.c:722
 #, c-format
-msgid "  Type:                              %s\n"
-msgstr "  Type:                              %s\n"
+msgid "%s:%d: Ignoring rubbish found on this line"
+msgstr "%s:%d: rebus ignoré trouvé sur la ligne"
 
-#: readelf.c:3014
+#: objcopy.c:996
 #, c-format
-msgid "  Machine:                           %s\n"
-msgstr "  Machine:                           %s\n"
+msgid "%s: Multiple redefinition of symbol \"%s\""
+msgstr "%s: re-définition multiples du symbole « %s »"
 
-#: readelf.c:3016
+#: objcopy.c:1000
 #, c-format
-msgid "  Version:                           0x%lx\n"
-msgstr "  Version:                           0x%lx\n"
+msgid "%s: Symbol \"%s\" is target of more than one redefinition"
+msgstr "%s: symbole « %s » cible plus d'une re-définition"
 
-#: readelf.c:3019
+#: objcopy.c:1028
 #, c-format
-msgid "  Entry point address:               "
-msgstr "  Adresse du point d'entrée:         "
+msgid "couldn't open symbol redefinition file %s (error: %s)"
+msgstr "ne peut ouvrir le fichier de redéfinition de symboles %s (erreur: %s)"
 
-#: readelf.c:3021
+#: objcopy.c:1106
 #, c-format
-msgid ""
-"\n"
-"  Start of program headers:          "
-msgstr ""
-"\n"
-"  Début des en-têtes de programme:   "
+msgid "%s:%d: garbage found at end of line"
+msgstr "%s:%d: rebus à la fin de la ligne"
 
-#: readelf.c:3023
+#: objcopy.c:1109
 #, c-format
-msgid ""
-" (bytes into file)\n"
-"  Start of section headers:          "
-msgstr ""
-" (octets dans le fichier)\n"
-"  Début des en-têtes de section:          "
+msgid "%s:%d: missing new symbol name"
+msgstr "%s:%d: nom du nouveau symbole manquant"
 
-#: readelf.c:3025
+#: objcopy.c:1119
 #, c-format
-msgid " (bytes into file)\n"
-msgstr " (octets dans le fichier)\n"
+msgid "%s:%d: premature end of file"
+msgstr "%s:%d: fin de fichier prématuré"
 
-#: readelf.c:3027
+#: objcopy.c:1145
 #, c-format
-msgid "  Flags:                             0x%lx%s\n"
-msgstr "  Fanions:                           0x%lx%s\n"
+msgid "stat returns negative size for `%s'"
+msgstr "stat() a retourné une taille négative for « %s »"
 
-#: readelf.c:3030
+#: objcopy.c:1157
 #, c-format
-msgid "  Size of this header:               %ld (bytes)\n"
-msgstr "  Taille de cet en-tête:             %ld (bytes)\n"
+msgid "copy from `%s' [unknown] to `%s' [unknown]\n"
+msgstr "copier à partir de « %s » [inconnu] vers « %s » [inconnu]\n"
 
-#: readelf.c:3032
-#, c-format
-msgid "  Size of program headers:           %ld (bytes)\n"
-msgstr "  Taille de l'en-tête du programme:  %ld (bytes)\n"
+#: objcopy.c:1212
+msgid "Unable to change endianness of input file(s)"
+msgstr "Incapable de changer de systèmes d'encodage (poids fort- faible) des fichiers d'entrée"
 
-#: readelf.c:3034
+#: objcopy.c:1221
 #, c-format
-msgid "  Number of program headers:         %ld\n"
-msgstr "  Nombre d'en-tête du programme:     %ld\n"
+msgid "copy from `%s' [%s] to `%s' [%s]\n"
+msgstr "copier de « %s » [%s] vers « %s » [%s]\n"
 
-#: readelf.c:3036
+#: objcopy.c:1258 objcopy.c:1715
 #, c-format
-msgid "  Size of section headers:           %ld (bytes)\n"
-msgstr "  Taille des en-têtes de section:    %ld (bytes)\n"
+msgid "Unable to recognise the format of the input file `%s'"
+msgstr "Incapable de reconnaître le format du fichier d'entrée « %s »"
 
-#: readelf.c:3038
+#: objcopy.c:1261
 #, c-format
-msgid "  Number of section headers:         %ld"
-msgstr "  Nombre d'en-têtes de section:      %ld"
+msgid "Warning: Output file cannot represent architecture `%s'"
+msgstr "AVERTISSEMENT: fichier de sortie ne peut représenter l'architecture « %s »"
 
-#: readelf.c:3043
+#: objcopy.c:1305
 #, c-format
-msgid "  Section header string table index: %ld"
-msgstr "  Table d'indexes des chaînes d'en-tête de section: %ld"
-
-#: readelf.c:3074 readelf.c:3107
-msgid "program headers"
-msgstr "En-tête de programme"
+msgid "can't create section `%s': %s"
+msgstr "Ne peut créer la section « %s »: %s"
 
-#: readelf.c:3145 readelf.c:3446 readelf.c:3487 readelf.c:3546 readelf.c:3609
-#: readelf.c:3993 readelf.c:4017 readelf.c:5247 readelf.c:5291 readelf.c:5489
-#: readelf.c:6450 readelf.c:6464 readelf.c:11493 readelf.c:11912
-#: readelf.c:11979
-msgid "Out of memory\n"
-msgstr "Mémoire épuisée\n"
+#: objcopy.c:1356
+msgid "there are no sections to be copied!"
+msgstr "Il n'y a pas de section à copier!"
 
-#: readelf.c:3172
+#: objcopy.c:1402
 #, c-format
-msgid ""
-"\n"
-"There are no program headers in this file.\n"
-msgstr ""
-"\n"
-"Il n'y a pas d'en-têtes de programme dans ce fichier.\n"
+msgid "Can't fill gap after %s: %s"
+msgstr "Ne peut remplir le vide après %s: %s"
 
-#: readelf.c:3178
+#: objcopy.c:1427
 #, c-format
-msgid ""
-"\n"
-"Elf file type is %s\n"
-msgstr ""
-"\n"
-"Type de fichier ELF est %s\n"
+msgid "Can't add padding to %s: %s"
+msgstr "Ne peut ajouter de remplissage pour %s: %s"
 
-#: readelf.c:3179
+#: objcopy.c:1594
 #, c-format
-msgid "Entry point "
-msgstr "Point d'entrée "
+msgid "%s: error copying private BFD data: %s"
+msgstr "%s: erreur de copie des données privées BFD: %s"
 
-#: readelf.c:3181
-#, c-format
-msgid ""
-"\n"
-"There are %d program headers, starting at offset "
-msgstr ""
-"\n"
-"Il y a %d en-têtes de programme, débutant à l'adresse de décalage"
+#: objcopy.c:1605
+msgid "unknown alternate machine code, ignored"
+msgstr "code machine alternatif inconnu, ignoré"
 
-#: readelf.c:3193 readelf.c:3195
+#: objcopy.c:1635 objcopy.c:1665
 #, c-format
-msgid ""
-"\n"
-"Program Headers:\n"
-msgstr ""
-"\n"
-"En-têtes de programme:\n"
+msgid "cannot mkdir %s for archive copying (error: %s)"
+msgstr "ne peut créer le répertoire mkdir %s pour copie d'archivage (erreur: %s)"
 
-#: readelf.c:3199
+#: objcopy.c:1787
 #, c-format
-msgid "  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align\n"
-msgstr "  Type           Décalage Adr. vir.  Adr.phys.  T.Fich. T.Mém.  Fan Alignement\n"
+msgid "error: the input file '%s' is empty"
+msgstr "ERREUR: le fichier d'entrée « %s » est vide"
 
-#: readelf.c:3202
+#: objcopy.c:1889
 #, c-format
-msgid "  Type           Offset   VirtAddr           PhysAddr           FileSiz  MemSiz   Flg Align\n"
-msgstr "  Type           Décalage Adr. vir.          Adr.phys.          T.Fich.  T.Mém.   Fan Alignement\n"
+msgid "Multiple renames of section %s"
+msgstr "Changement multiples de noms de la section %s"
 
-#: readelf.c:3206
-#, c-format
-msgid "  Type           Offset             VirtAddr           PhysAddr\n"
-msgstr "  Type           Décalage           Adr.virt           Adr.phys.\n"
+#: objcopy.c:1940
+msgid "private header data"
+msgstr "données d'en-tête privée"
 
-#: readelf.c:3208
+#: objcopy.c:1948
 #, c-format
-msgid "                 FileSiz            MemSiz              Flags  Align\n"
-msgstr "                 Taille fichier     Taille mémoire      Fanion Alignement\n"
+msgid "%s: error in %s: %s"
+msgstr "%s: ERREUR dans %s: %s"
 
-#: readelf.c:3301
-msgid "more than one dynamic segment\n"
-msgstr "plus d'un segment dynamique\n"
+#: objcopy.c:2007
+msgid "making"
+msgstr "génération"
 
-#: readelf.c:3312
-msgid "no .dynamic section in the dynamic segment"
-msgstr "pas de section .dynamic dans le segment dynamique"
+#: objcopy.c:2022
+msgid "size"
+msgstr "taille"
 
-#: readelf.c:3321
-msgid "the .dynamic section is not contained within the dynamic segment"
-msgstr "la section .dynamic n'est pas contenu à l'intérieur du segment dynamique"
+#: objcopy.c:2036
+msgid "vma"
+msgstr "vma"
 
-#: readelf.c:3323
-msgid "the .dynamic section is not the first section in the dynamic segment."
-msgstr "la section .dynamic n'est pas la première section dans le segment dynamique."
+#: objcopy.c:2061
+msgid "alignment"
+msgstr "alignement"
 
-#: readelf.c:3337
-msgid "Unable to find program interpreter name\n"
-msgstr "Incapable de repérer le nom de l'interpréteur du programme\n"
+#: objcopy.c:2083
+msgid "private data"
+msgstr "données privées"
 
-#: readelf.c:3344
+#: objcopy.c:2091
 #, c-format
-msgid ""
-"\n"
-"      [Requesting program interpreter: %s]"
-msgstr ""
-"\n"
-"      [Réquisition de l'interpréteur de programme: %s]"
+msgid "%s: section `%s': error in %s: %s"
+msgstr "%s: section « %s »: ERREUR dans %s: %s"
 
-#: readelf.c:3356
+#: objcopy.c:2363
 #, c-format
-msgid ""
-"\n"
-" Section to Segment mapping:\n"
-msgstr ""
-"\n"
-" Section à la projection de segement:\n"
+msgid "%s: can't create debugging section: %s"
+msgstr "%s: ne peut créer la section de débug: %s"
 
-#: readelf.c:3357
+#: objcopy.c:2377
 #, c-format
-msgid "  Segment Sections...\n"
-msgstr "  Sections de segment...\n"
+msgid "%s: can't set debugging section contents: %s"
+msgstr "%s: ne peut initialiser le contenu de la section de débug: %s"
 
-#: readelf.c:3408
-msgid "Cannot interpret virtual addresses without program headers.\n"
-msgstr "Ne peut interpréter les adresses virtuelles sans l'en-tête du programme.\n"
+#: objcopy.c:2386
+#, c-format
+msgid "%s: don't know how to write debugging information for %s"
+msgstr "%s: ne sait comment écrire les informations de débug de %s"
+
+#: objcopy.c:2561
+msgid "byte number must be non-negative"
+msgstr "le nombre d'octet ne peut être négatif"
+
+#: objcopy.c:2571
+msgid "interleave must be positive"
+msgstr "l'intercalage doit être positif"
 
-#: readelf.c:3424
+#: objcopy.c:2591 objcopy.c:2599
 #, c-format
-msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
-msgstr "L'adresse virtuelle 0x%lx ne peut être localisé dans chaque segment PT_LOAD.\n"
+msgid "%s both copied and removed"
+msgstr "%s les deux doivent être copiés et enlevés"
 
-#: readelf.c:3438 readelf.c:3479
-msgid "section headers"
-msgstr "En-têtes de section"
+#: objcopy.c:2696 objcopy.c:2767 objcopy.c:2867 objcopy.c:2898 objcopy.c:2922
+#: objcopy.c:2926 objcopy.c:2946
+#, c-format
+msgid "bad format for %s"
+msgstr "mauvais format pour %s"
 
-#: readelf.c:3523 readelf.c:3586
-msgid "symbols"
-msgstr "symboles"
+#: objcopy.c:2717
+#, c-format
+msgid "cannot open: %s: %s"
+msgstr "ne peut ouvrir: %s: %s"
 
-#: readelf.c:3533 readelf.c:3596
-msgid "symtab shndx"
-msgstr "symtab shndx"
+#: objcopy.c:2836
+#, c-format
+msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
+msgstr "AVERTISSEMENT: réduction du remplissage de 0x%s à 0x%x"
+
+#: objcopy.c:3000
+msgid "alternate machine code index must be positive"
+msgstr "le code alternatif d'index du code machine doit être positif"
+
+#: objcopy.c:3058
+msgid "byte number must be less than interleave"
+msgstr "le nombre d'octets ne peut être plus petit que celui de l'intercalage"
 
-#: readelf.c:3697 readelf.c:3977
+#: objcopy.c:3088
 #, c-format
-msgid ""
-"\n"
-"There are no sections in this file.\n"
-msgstr ""
-"\n"
-"Il n'y a pas de section dans ce fichier.\n"
+msgid "architecture %s unknown"
+msgstr "architecture %s inconnue"
+
+#: objcopy.c:3092
+msgid "Warning: input target 'binary' required for binary architecture parameter."
+msgstr "AVERTISSEMENT: la cible d'entrée « binary » requiert un paramètre pour une architecture binaire."
 
-#: readelf.c:3703
+#: objcopy.c:3093
 #, c-format
-msgid "There are %d section headers, starting at offset 0x%lx:\n"
-msgstr "Il y a %d en-têtes de section, débutant à l'adresse de décalage 0x%lx:\n"
+msgid " Argument %s ignored"
+msgstr " Argument %s ignoré"
 
-#: readelf.c:3720 readelf.c:4079 readelf.c:4290 readelf.c:4591 readelf.c:5011
-#: readelf.c:6618
-msgid "string table"
-msgstr "table de chaînes"
+#: objcopy.c:3099
+#, c-format
+msgid "warning: could not locate '%s'.  System error message: %s"
+msgstr "AVERTISSEMENT: ne peut localiser '%s'. Message d'erreur système: %s"
 
-#: readelf.c:3765
-msgid "File contains multiple dynamic symbol tables\n"
-msgstr "Le fichier contient plusieurs tables dynamiques de symboles\n"
+#: objcopy.c:3141 objcopy.c:3155
+#, c-format
+msgid "%s %s%c0x%s never used"
+msgstr "%s %s%c0x%s jamais utilisé"
 
-#: readelf.c:3777
-msgid "File contains multiple dynamic string tables\n"
-msgstr "Le fichier contient plusieurs tables de chaînes dynamiques\n"
+#: objdump.c:178
+#, c-format
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr "Usage: %s <options> <fichiers>\n"
 
-#: readelf.c:3782
-msgid "dynamic strings"
-msgstr "chaînes dynamiques"
+#: objdump.c:179
+#, c-format
+msgid " Display information from object <file(s)>.\n"
+msgstr "Afficher les informations depuis les <fichiers> objet.\n"
 
-#: readelf.c:3789
-msgid "File contains multiple symtab shndx tables\n"
-msgstr "Le fichier contient de multiples tables symboliques shndx\n"
+#: objdump.c:180
+#, c-format
+msgid " At least one of the following switches must be given:\n"
+msgstr "Au moins un des commutateurs suivants doit être fourni:\n"
+
+#: objdump.c:181
+#, c-format
+msgid ""
+"  -a, --archive-headers    Display archive header information\n"
+"  -f, --file-headers       Display the contents of the overall file header\n"
+"  -p, --private-headers    Display object format specific file header contents\n"
+"  -h, --[section-]headers  Display the contents of the section headers\n"
+"  -x, --all-headers        Display the contents of all headers\n"
+"  -d, --disassemble        Display assembler contents of executable sections\n"
+"  -D, --disassemble-all    Display assembler contents of all sections\n"
+"  -S, --source             Intermix source code with disassembly\n"
+"  -s, --full-contents      Display the full contents of all sections requested\n"
+"  -g, --debugging          Display debug information in object file\n"
+"  -e, --debugging-tags     Display debug information using ctags style\n"
+"  -G, --stabs              Display (in raw form) any STABS info in the file\n"
+"  -W, --dwarf              Display DWARF info in the file\n"
+"  -t, --syms               Display the contents of the symbol table(s)\n"
+"  -T, --dynamic-syms       Display the contents of the dynamic symbol table\n"
+"  -r, --reloc              Display the relocation entries in the file\n"
+"  -R, --dynamic-reloc      Display the dynamic relocation entries in the file\n"
+"  @<file>                  Read options from <file>\n"
+"  -v, --version            Display this program's version number\n"
+"  -i, --info               List object formats and architectures supported\n"
+"  -H, --help               Display this information\n"
+msgstr ""
+"  -a, --archive-headers    afficher l'information de l'en-tête de l'archive\n"
+"  -f, --file-headers       afficher le contenu global du fichier d'en-tête\n"
+"  -p, --private-headers    afficher le format spécifique du contenu de l'en-tête de l'objet\n"
+"  -h, --[section-]headers  afficher le contenu des en-têtes de section\n"
+"  -x, --all-headers        afficher le contenu de toutes les en-têtes\n"
+"  -d, --disassemble        afficher le contenu en assembleur des sections exécutables\n"
+"  -D, --disassemble-all    afficher le contenu en assembleur de toutes les sections\n"
+"  -S, --source             inter-mêler le code source avec le déassemblage\n"
+"  -s, --full-contents      afficher le contenu complet de toutes les sections voulus\n"
+"  -g, --debugging          afficher les informations de mise au point du fichier objet\n"
+"  -e, --debugging-tags     afficher les informations de mise au point en utilisant le style ctags\n"
+"  -G, --stabs              afficher (en format brut) toutes les infos à inclure du fichier\n"
+"  -t, --syms               afficher le contenu de(s) table(s) de symboles\n"
+"  -T, --dynamic-syms       afficher le contenu de la table dynamique de symboles\n"
+"  -r, --reloc              afficher les entrées de relocalisation du fichier\n"
+"  -R, --dynamic-reloc      afficher les entrées dynamiques de relocalisation du fichier\n"
+"  @<fichier>               lire les options à partir du <fichier>\n"
+"  -V, --version            afficher le nom et la version du logiciel\n"
+"  -i, --info               afficher les formats objets et les architectures supportées\n"
+"  -H, --help               afficher cette information\n"
 
-#: readelf.c:3828
+#: objdump.c:206
 #, c-format
 msgid ""
 "\n"
-"Section Headers:\n"
+" The following switches are optional:\n"
 msgstr ""
 "\n"
-"En-têtes de section:\n"
+" Les commutateurs suivants sont optionnels:\n"
 
-#: readelf.c:3830
+#: objdump.c:207
 #, c-format
 msgid ""
+"  -b, --target=BFDNAME           Specify the target object format as BFDNAME\n"
+"  -m, --architecture=MACHINE     Specify the target architecture as MACHINE\n"
+"  -j, --section=NAME             Only display information for section NAME\n"
+"  -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+"  -EB --endian=big               Assume big endian format when disassembling\n"
+"  -EL --endian=little            Assume little endian format when disassembling\n"
+"      --file-start-context       Include context from start of file (with -S)\n"
+"  -I, --include=DIR              Add DIR to search list for source files\n"
+"  -l, --line-numbers             Include line numbers and filenames in output\n"
+"  -C, --demangle[=STYLE]         Decode mangled/processed symbol names\n"
+"                                  The STYLE, if specified, can be `auto', `gnu',\n"
+"                                  `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+"                                  or `gnat'\n"
+"  -w, --wide                     Format output for more than 80 columns\n"
+"  -z, --disassemble-zeroes       Do not skip blocks of zeroes when disassembling\n"
+"      --start-address=ADDR       Only process data whose address is >= ADDR\n"
+"      --stop-address=ADDR        Only process data whose address is <= ADDR\n"
+"      --prefix-addresses         Print complete address alongside disassembly\n"
+"      --[no-]show-raw-insn       Display hex alongside symbolic disassembly\n"
+"      --adjust-vma=OFFSET        Add OFFSET to all displayed section addresses\n"
+"      --special-syms             Include special symbols in symbol dumps\n"
 "\n"
-"Section Header:\n"
 msgstr ""
+"  -b, --target=NOMBFD            spécifier le format de l'objet cible comme NOMBFD\n"
+"  -m, --architecture=MACHINE     spécifier l'architecture cible de la MACHINE\n"
+"  -j, --section=NOM              afficher seulement les informations de la section du NOM\n"
+"  -M, --disassembler-options=OPT relayer l'OPTion au dé-assembleur\n"
+"  -EB --endian=big               assumer le format « big endian » lors du dé-assemblage\n"
+"  -EL --endian=little            assumer le format « little endian » lors du dé-assemblage\n"
+"      --file-start-context       inclure le contexte à partir du début du fichier (avec -S)\n"
+"  -I, --include=RÉPERTOIRE       ajouter le répertoire à la liste de recherche des fichiers sources\n"
+"  -l, --line-numbers             inclure les numéros de ligne et les noms de fichier dans la sortie\n"
+"  -C, --demangle[=STYLE]         décoder les mutilations/traitements des noms de symboles\n"
+"                                 Le STYLE, si spécifé, peut être « auto », « gnu »,\n"
+"                                 « lucid », « arm », « hp », « edg », ou « gnu-v3 »,\n"
+"                                 « gnu-new-abi » ou « gnat »\n"
+"  -w, --wide                     formatter la sortie pour plus de 80 colonnes\n"
+"  -z, --disassemble-zeroes       ne pas escamoter les blocs de zéros lors du dé-assemblage\n"
+"      --start-address=ADR        traiter seulement les données dont les adresses sont >= ADR\n"
+"      --stop-address=ADR         traiter seulement les données dont les adresses sont <= ADR\n"
+"      --prefix-addresses         afficher les adresses complètes dans le dé-assemblage\n"
+"      --[no-]show-raw-insn       afficher en hexadécimale le dé-assemblage symbolique\n"
+"      --adjust-vma=DÉCALAGE      ajouter un DÉCALAGE à toutes les adresses affichés des sections\n"
+"      --special-syms             inclure les symboles spéciaux dans la vidange de symboles\n"
 "\n"
-"En-têtes de section:\n"
-
-#: readelf.c:3834
-#, c-format
-msgid "  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al\n"
-msgstr "  [Nr] Nom               Type            Adr      Décala.Taille ES Fan LN Inf Al\n"
-
-#: readelf.c:3837
-#, c-format
-msgid "  [Nr] Name              Type            Address          Off    Size   ES Flg Lk Inf Al\n"
-msgstr "  [Nr] Nom               Type            Adr              Décala.Taille ES Fan LN Inf Al\n"
-
-#: readelf.c:3840
-#, c-format
-msgid "  [Nr] Name              Type             Address           Offset\n"
-msgstr "  [Nr] Nom               Type             Adresse           Décalage\n"
 
-#: readelf.c:3841
+#: objdump.c:389
 #, c-format
-msgid "       Size              EntSize          Flags  Link  Info  Align\n"
-msgstr "       Taille            TaillEntré       Fanion Lien  Info  Alignement\n"
+msgid "Sections:\n"
+msgstr "Sections:\n"
 
-#: readelf.c:3936
+#: objdump.c:392 objdump.c:396
 #, c-format
-msgid ""
-"Key to Flags:\n"
-"  W (write), A (alloc), X (execute), M (merge), S (strings)\n"
-"  I (info), L (link order), G (group), x (unknown)\n"
-"  O (extra OS processing required) o (OS specific), p (processor specific)\n"
-msgstr ""
-"Clé des fanions:\n"
-"  W (écriture), A (allocation), X (exécution), M (fusion), S (chaînes)\n"
-"  I (info), L (ordre des liens), G (groupe), x (inconnu)\n"
-"  O (traiterment additionnel requis pour l'OS) o (spécifique à l'OS), p (spécifique au processeur)\n"
+msgid "Idx Name          Size      VMA       LMA       File off  Algn"
+msgstr "Idx Nom           Taille    VMA       LMA       Fich off  Algn"
 
-#: readelf.c:3954
+#: objdump.c:398
 #, c-format
-msgid "[<unknown>: 0x%x]"
-msgstr "<inconnu>: 0x%x]"
-
-#: readelf.c:3984
-msgid "Section headers are not available!\n"
-msgstr "En-têtes de section ne sont pas disponibles!\n"
+msgid "Idx Name          Size      VMA               LMA               File off  Algn"
+msgstr "Idx Nom           Taille    VMA               LMA               Fich off  Algn"
 
-#: readelf.c:4008
+#: objdump.c:402
 #, c-format
-msgid ""
-"\n"
-"There are no section groups in this file.\n"
-msgstr ""
-"\n"
-"Il n'y a pas de groupe de section dans ce fichier.\n"
+msgid "  Flags"
+msgstr "  Fanions"
 
-#: readelf.c:4042
+#: objdump.c:404
 #, c-format
-msgid "Bad sh_link in group section `%s'\n"
-msgstr "sh_link erroné dans la section de groupe `%s'\n"
+msgid "  Pg"
+msgstr "  Pg"
 
-#: readelf.c:4061
+#: objdump.c:447
 #, c-format
-msgid "Bad sh_info in group section `%s'\n"
-msgstr "sh_info erroné dans la section de groupe`%s'\n"
-
-#: readelf.c:4085 readelf.c:6947
-msgid "section data"
-msgstr "données de section"
+msgid "%s: not a dynamic object"
+msgstr "%s: n'est pas un objet dynamique"
 
-#: readelf.c:4097
+#: objdump.c:1735
 #, c-format
-msgid "   [Index]    Name\n"
-msgstr "   [Index]    Nom\n"
+msgid "Disassembly of section %s:\n"
+msgstr "Déassemblage de la section %s:\n"
 
-#: readelf.c:4114
+#: objdump.c:1897
 #, c-format
-msgid "section [%5u] already in group section [%5u]\n"
-msgstr "section [%5u] est déjà dans le groupe section [%5u]\n"
+msgid "Can't use supplied machine %s"
+msgstr "Ne peut utiliser la machine %s"
 
-#: readelf.c:4127
+#: objdump.c:1916
 #, c-format
-msgid "section 0 in group section [%5u]\n"
-msgstr "section 0 dans le groupe section [%5u]\n"
+msgid "Can't disassemble for architecture %s\n"
+msgstr "Ne peut déassembler pour l'architecture %s\n"
 
-#: readelf.c:4224
+#: objdump.c:2006
 #, c-format
 msgid ""
 "\n"
-"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+"Can't get contents for section '%s'.\n"
 msgstr ""
 "\n"
-"'%s' section de relocalisation à l'adresse de décalage 0x%lx contient %ld octets:\n"
+"Ne peut obtenir le contenu de la section « %s ».\n"
 
-#: readelf.c:4236
+#: objdump.c:2143
 #, c-format
 msgid ""
+"No %s section present\n"
 "\n"
-"There are no dynamic relocations in this file.\n"
 msgstr ""
+"Aucune section %s présente\n"
 "\n"
-"Il n'y a pas d'informations de relocalisation dynamique dans ce fichier.\n"
 
-#: readelf.c:4260
+#: objdump.c:2152
+#, c-format
+msgid "Reading %s section of %s failed: %s"
+msgstr "Lecture de la section %s de %s a échouée: %s"
+
+#: objdump.c:2196
 #, c-format
 msgid ""
+"Contents of %s section:\n"
 "\n"
-"Relocation section "
 msgstr ""
+"Contenu de la section %s:\n"
 "\n"
-"Section de relocalisation "
 
-#: readelf.c:4265 readelf.c:4666 readelf.c:4680 readelf.c:5025
+#: objdump.c:2323
 #, c-format
-msgid "'%s'"
-msgstr "« %s »"
+msgid "architecture: %s, "
+msgstr "architecture: %s, "
 
-#: readelf.c:4267 readelf.c:4682 readelf.c:5027
+#: objdump.c:2326
 #, c-format
-msgid " at offset 0x%lx contains %lu entries:\n"
-msgstr " à l'adresse de décalage 0x%lx contient %lu entrées:\n"
+msgid "flags 0x%08x:\n"
+msgstr "fanions 0x%08x:\n"
 
-#: readelf.c:4308
+#: objdump.c:2340
 #, c-format
 msgid ""
 "\n"
-"There are no relocations in this file.\n"
+"start address 0x"
 msgstr ""
 "\n"
-"Il n'y a pas de relocalisation dans ce fichier.\n"
-
-#: readelf.c:4482 readelf.c:4862
-msgid "unwind table"
-msgstr "table unwind"
+"adresse de départ 0x"
 
-#: readelf.c:4540 readelf.c:4959
+#: objdump.c:2380
 #, c-format
-msgid "Skipping unexpected relocation type %s\n"
-msgstr "Escamotage du type de relocalisation inattendue %s\n"
+msgid "Contents of section %s:\n"
+msgstr "Contenu de la section %s:\n"
 
-#: readelf.c:4598 readelf.c:5018 readelf.c:5069
+#: objdump.c:2505
 #, c-format
-msgid ""
-"\n"
-"There are no unwind sections in this file.\n"
-msgstr ""
-"\n"
-"Il n'y a pas de section unwind dans ce fichier.\n"
+msgid "no symbols\n"
+msgstr "aucun symbole\n"
 
-#: readelf.c:4661
+#: objdump.c:2512
 #, c-format
-msgid ""
-"\n"
-"Could not find unwind info section for "
-msgstr ""
-"\n"
-"N'a pu repérer les infos d'une section unwind pour "
-
-#: readelf.c:4673
-msgid "unwind info"
-msgstr "info unwind"
+msgid "no information for symbol number %ld\n"
+msgstr "pas d'information pour le symbol numéro %ld\n"
 
-#: readelf.c:4675 readelf.c:5024
+#: objdump.c:2515
 #, c-format
-msgid ""
-"\n"
-"Unwind section "
-msgstr ""
-"\n"
-"Section unwind"
-
-#: readelf.c:5228 readelf.c:5272
-msgid "dynamic section"
-msgstr "section dynamique"
+msgid "could not determine the type of symbol number %ld\n"
+msgstr "incapable de déterminer le type du symbole numéro %ld\n"
 
-#: readelf.c:5349
+#: objdump.c:2788
 #, c-format
 msgid ""
 "\n"
-"There is no dynamic section in this file.\n"
+"%s:     file format %s\n"
 msgstr ""
 "\n"
-"Il n'y a pas de section dynamique dans ce fichier.\n"
-
-#: readelf.c:5387
-msgid "Unable to seek to end of file!"
-msgstr "Incapable de repérer la fin du fichier!"
-
-#: readelf.c:5400
-msgid "Unable to determine the number of symbols to load\n"
-msgstr "Incapable de déterminer le nombre de symboles à charger\n"
-
-#: readelf.c:5435
-msgid "Unable to seek to end of file\n"
-msgstr "Incapable de repérer la fin du fichier\n"
+"%s:     format de fichier %s\n"
 
-#: readelf.c:5442
-msgid "Unable to determine the length of the dynamic string table\n"
-msgstr "Incapable de déterminer la longueur de la table de chaînes dynamiques\n"
+#: objdump.c:2845
+#, c-format
+msgid "%s: printing debugging information failed"
+msgstr "%s: échec d'affichage des information de débug"
 
-#: readelf.c:5447
-msgid "dynamic string table"
-msgstr "table dynamique de chaînes"
+#: objdump.c:2936
+#, c-format
+msgid "In archive %s:\n"
+msgstr "Dans l'archive %s:\n"
 
-#: readelf.c:5482
-msgid "symbol information"
-msgstr "information de symbole"
+#: objdump.c:3058
+msgid "unrecognized -E option"
+msgstr "option -E non reconnue"
 
-#: readelf.c:5507
+#: objdump.c:3069
 #, c-format
-msgid ""
-"\n"
-"Dynamic section at offset 0x%lx contains %u entries:\n"
-msgstr ""
-"\n"
-"Section dynamique à l'adresse de décalage 0x%lx contient %u entrées:\n"
+msgid "unrecognized --endian type `%s'"
+msgstr "type non reconnu --endian « %s »"
 
-#: readelf.c:5510
+#: rdcoff.c:196
 #, c-format
-msgid "  Tag        Type                         Name/Value\n"
-msgstr "  Étiquettes Type                         Nom/Valeur\n"
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr "parse_coff_type: mauvais type de code 0x%x"
 
-#: readelf.c:5546
+#: rdcoff.c:404 rdcoff.c:509 rdcoff.c:697
 #, c-format
-msgid "Auxiliary library"
-msgstr "Librairie auxiliaire"
+msgid "bfd_coff_get_syment failed: %s"
+msgstr "bfd_coff_get_syment en échec: %s"
 
-#: readelf.c:5550
+#: rdcoff.c:420 rdcoff.c:717
 #, c-format
-msgid "Filter library"
-msgstr "Librairie de filtre"
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr "bfd_coff_get_auxent en échec: %s"
 
-#: readelf.c:5554
+#: rdcoff.c:784
 #, c-format
-msgid "Configuration file"
-msgstr "Fichier de configuration"
+msgid "%ld: .bf without preceding function"
+msgstr "%ld: .bf aucune fonction qui précède"
 
-#: readelf.c:5558
+#: rdcoff.c:834
 #, c-format
-msgid "Dependency audit library"
-msgstr "Librairie d'audit des dépendances"
+msgid "%ld: unexpected .ef\n"
+msgstr "%ld: .ef inattendu\n"
 
-#: readelf.c:5562
+#: rddbg.c:85
 #, c-format
-msgid "Audit library"
-msgstr "Librairie des audits"
+msgid "%s: no recognized debugging information"
+msgstr "%s: aucune information de débug reconnue"
 
-#: readelf.c:5580 readelf.c:5608 readelf.c:5636
+#: rddbg.c:394
 #, c-format
-msgid "Flags:"
-msgstr "Fanions:"
+msgid "Last stabs entries before error:\n"
+msgstr "Dernière entrées à inclure avant erreur:\n"
 
-#: readelf.c:5583 readelf.c:5611 readelf.c:5638
+#: readelf.c:264
 #, c-format
-msgid " None\n"
-msgstr "Aucun\n"
+msgid "Unable to seek to 0x%lx for %s\n"
+msgstr "Incapable de repérer 0x%lx pour %s\n"
 
-#: readelf.c:5759
+#: readelf.c:279
 #, c-format
-msgid "Shared library: [%s]"
-msgstr "Librairie partagées: [%s]"
+msgid "Out of memory allocating 0x%lx bytes for %s\n"
+msgstr "Mémoire épuisée lors de l'allocation de 0x%lx octets pour %s\n"
 
-#: readelf.c:5762
+#: readelf.c:289
 #, c-format
-msgid " program interpreter"
-msgstr " programme interpréteur"
+msgid "Unable to read in 0x%lx bytes of %s\n"
+msgstr "Incapable de lire 0x%lx octets de %s\n"
 
-#: readelf.c:5766
-#, c-format
-msgid "Library soname: [%s]"
-msgstr "Librairie soname: [%s]"
+#: readelf.c:623
+msgid "Don't know about relocations on this machine architecture\n"
+msgstr "Ne connaît pas de méthode pour la relocalisation sur l'architecture de cette machine\n"
 
-#: readelf.c:5770
+#: readelf.c:643 readelf.c:671 readelf.c:715 readelf.c:743
+msgid "relocs"
+msgstr "relocalisations"
+
+#: readelf.c:654 readelf.c:682 readelf.c:726 readelf.c:754
+msgid "out of memory parsing relocs"
+msgstr "Mémoire épuisée lors de l'analyse syntaxique des relocalisations"
+
+#: readelf.c:808
 #, c-format
-msgid "Library rpath: [%s]"
-msgstr "Librairie rpath: [%s]"
+msgid " Offset     Info    Type                Sym. Value  Symbol's Name + Addend\n"
+msgstr " Décalage   Info    Type                Val.-sym.   Noms-symb.    + Addenda\n"
 
-#: readelf.c:5774
+#: readelf.c:810
 #, c-format
-msgid "Library runpath: [%s]"
-msgstr "Librairie runpath:[%s]"
+msgid " Offset     Info    Type            Sym.Value  Sym. Name + Addend\n"
+msgstr " Décalage   Info    Type            Val.-sym   Noms-symb + Addenda\n"
 
-#: readelf.c:5837
+#: readelf.c:815
 #, c-format
-msgid "Not needed object: [%s]\n"
-msgstr "Objet non nécessaire: [%s]\n"
+msgid " Offset     Info    Type                Sym. Value  Symbol's Name\n"
+msgstr " Décalage   Info    Type                Val.-sym.   Noms-symboles\n"
 
-#: readelf.c:5951
+#: readelf.c:817
 #, c-format
-msgid ""
-"\n"
-"Version definition section '%s' contains %ld entries:\n"
-msgstr ""
-"\n"
-"Section des définitions de version « %s » contient %ld entrées:\n"
+msgid " Offset     Info    Type            Sym.Value  Sym. Name\n"
+msgstr " Décalage   Info    Type            Val.-sym   Noms-symboles\n"
 
-#: readelf.c:5954
+#: readelf.c:825
 #, c-format
-msgid "  Addr: 0x"
-msgstr "  Adr: 0x"
+msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name + Addend\n"
+msgstr "    Décalage           Info             Type               Valeurs symbols Noms symboles + Addenda\n"
 
-#: readelf.c:5956 readelf.c:6148
+#: readelf.c:827
 #, c-format
-msgid "  Offset: %#08lx  Link: %lx (%s)\n"
-msgstr "  Décalage: %#08lx  Lien: %lx (%s)\n"
-
-#: readelf.c:5961
-msgid "version definition section"
-msgstr "section de définition de version"
+msgid "  Offset          Info           Type           Sym. Value    Sym. Name + Addend\n"
+msgstr "  Décalage        Info           Type           Val.-symboles Noms-symb.+ Addenda\n"
 
-#: readelf.c:5987
+#: readelf.c:832
 #, c-format
-msgid "  %#06x: Rev: %d  Flags: %s"
-msgstr "  %#06x: Rev: %d  Fanions: %s"
+msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name\n"
+msgstr "    Décalage           Info             Type               Valeurs symbols Noms symbols\n"
 
-#: readelf.c:5990
+#: readelf.c:834
 #, c-format
-msgid "  Index: %d  Cnt: %d  "
-msgstr "  Index: %d  Compteur: %d  "
+msgid "  Offset          Info           Type           Sym. Value    Sym. Name\n"
+msgstr "  Décalage        Info           Type           Val.-symboles Noms-symboles\n"
 
-#: readelf.c:6001
+#: readelf.c:1127 readelf.c:1129 readelf.c:1238 readelf.c:1240 readelf.c:1249
+#: readelf.c:1251
 #, c-format
-msgid "Name: %s\n"
-msgstr "Nom: %s\n"
+msgid "unrecognized: %-7lx"
+msgstr "non reconnue: %-7lx"
 
-#: readelf.c:6003
+#: readelf.c:1154
 #, c-format
-msgid "Name index: %ld\n"
-msgstr "Nom de l'index: %ld\n"
+msgid "<unknown addend: %lx>"
+msgstr "<ajout inconnu: %lx>"
 
-#: readelf.c:6018
+#: readelf.c:1210
 #, c-format
-msgid "  %#06x: Parent %d: %s\n"
-msgstr "  %#06x: Parent %d: %s\n"
+msgid "<string table index: %3ld>"
+msgstr "<chaîne de la table index: %3ld>"
 
-#: readelf.c:6021
+#: readelf.c:1212
 #, c-format
-msgid "  %#06x: Parent %d, name index: %ld\n"
-msgstr "  %#06x: Parent %d, name index: %ld\n"
+msgid "<corrupt string table index: %3ld>"
+msgstr "<chaîne corrompu de la table index: %3ld>"
 
-#: readelf.c:6040
+#: readelf.c:1522
 #, c-format
-msgid ""
-"\n"
-"Version needs section '%s' contains %ld entries:\n"
-msgstr ""
-"\n"
-"Version nécessitant la section « %s » contenant %ld entrées:\n"
+msgid "Processor Specific: %lx"
+msgstr "Spécificités du processeur: %lx"
 
-#: readelf.c:6043
+#: readelf.c:1543
 #, c-format
-msgid " Addr: 0x"
-msgstr " Adr: 0x"
+msgid "Operating System specific: %lx"
+msgstr "Spécificités du systèmes d'exploitation: %lx"
 
-#: readelf.c:6045
+#: readelf.c:1547 readelf.c:2349
 #, c-format
-msgid "  Offset: %#08lx  Link to section: %ld (%s)\n"
-msgstr "  Décalage: %#08lx  Lien vers la section: %ld (%s)\n"
+msgid "<unknown>: %lx"
+msgstr "<inconnu>: %lx"
 
-#: readelf.c:6050
-msgid "version need section"
-msgstr "version nécessite une section"
+#: readelf.c:1560
+msgid "NONE (None)"
+msgstr "NONE (Aucun)"
+
+#: readelf.c:1561
+msgid "REL (Relocatable file)"
+msgstr "REL (Fichier de relocalisation)"
+
+#: readelf.c:1562
+msgid "EXEC (Executable file)"
+msgstr "EXEC (fichier exécutable)"
+
+#: readelf.c:1563
+msgid "DYN (Shared object file)"
+msgstr "DYN (fichier objet partagé)"
+
+#: readelf.c:1564
+msgid "CORE (Core file)"
+msgstr "CORE (fichier core)"
 
-#: readelf.c:6072
+#: readelf.c:1568
 #, c-format
-msgid "  %#06x: Version: %d"
-msgstr "  %#06x: Version: %d"
+msgid "Processor Specific: (%x)"
+msgstr "Spécificités du processor: (%x)"
 
-#: readelf.c:6075
+#: readelf.c:1570
 #, c-format
-msgid "  File: %s"
-msgstr "  Fichier: %s"
+msgid "OS Specific: (%x)"
+msgstr "Spécificités du système d'exploitation: (%x)"
 
-#: readelf.c:6077
+#: readelf.c:1572 readelf.c:1681 readelf.c:2541
 #, c-format
-msgid "  File: %lx"
-msgstr "  Fichier: %lx"
+msgid "<unknown>: %x"
+msgstr "<inconnu>: %x"
+
+#: readelf.c:1584
+msgid "None"
+msgstr "Aucun"
 
-#: readelf.c:6079
+#: readelf.c:2186
+msgid "Standalone App"
+msgstr "Tache autonome"
+
+#: readelf.c:2189 readelf.c:2948 readelf.c:2964
 #, c-format
-msgid "  Cnt: %d\n"
-msgstr "  Compteur: %d\n"
+msgid "<unknown: %x>"
+msgstr "<inconnu: %x>"
 
-#: readelf.c:6097
+#: readelf.c:2586
 #, c-format
-msgid "  %#06x:   Name: %s"
-msgstr "  %#06x:   Nom: %s"
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr "Usage: readelf <options> fichiers-elf\n"
 
-#: readelf.c:6100
+#: readelf.c:2587
 #, c-format
-msgid "  %#06x:   Name index: %lx"
-msgstr "  %#06x:   Nom de l'index: %lx"
+msgid " Display information about the contents of ELF format files\n"
+msgstr "Afficher les informations à propos du contenu du format des fichiers ELF\n"
 
-#: readelf.c:6103
+#: readelf.c:2588
 #, c-format
-msgid "  Flags: %s  Version: %d\n"
-msgstr "  Fanions: %s  Version: %d\n"
+msgid ""
+" Options are:\n"
+"  -a --all               Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+"  -h --file-header       Display the ELF file header\n"
+"  -l --program-headers   Display the program headers\n"
+"     --segments          An alias for --program-headers\n"
+"  -S --section-headers   Display the sections' header\n"
+"     --sections          An alias for --section-headers\n"
+"  -g --section-groups    Display the section groups\n"
+"  -t --section-details   Display the section details\n"
+"  -e --headers           Equivalent to: -h -l -S\n"
+"  -s --syms              Display the symbol table\n"
+"      --symbols          An alias for --syms\n"
+"  -n --notes             Display the core notes (if present)\n"
+"  -r --relocs            Display the relocations (if present)\n"
+"  -u --unwind            Display the unwind info (if present)\n"
+"  -d --dynamic           Display the dynamic section (if present)\n"
+"  -V --version-info      Display the version sections (if present)\n"
+"  -A --arch-specific     Display architecture specific information (if any).\n"
+"  -D --use-dynamic       Use the dynamic section info when displaying symbols\n"
+"  -x --hex-dump=<number> Dump the contents of section <number>\n"
+"  -w[liaprmfFsoR] or\n"
+"  --debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n"
+"                         Display the contents of DWARF2 debug sections\n"
+msgstr ""
+"Les options sont:\n"
+"  -a --all               équivalent à: -h -l -S -s -r -d -V -A -I\n"
+"  -h --file-header       afficher l'en-tête du fichier ELF\n"
+"  -l --program-headers   afficher les en-têtes du programme\n"
+"     --segments          un alias pour --program-headers\n"
+"  -S --section-headers   afficher les en-têtes des sections\n"
+"     --sections          un alias pour --section-headers\n"
+"  -g --section-groups    afficher les groupes de section\n"
+"  -t --section-details   afficher les détails de la section\n"
+"  -e --headers           équivalent à: -h -l -S\n"
+"  -s --syms              afficher la table des symboles\n"
+"      --symbols          un alias pour --syms\n"
+"  -n --notes             afficher les notes du core (si présentes)\n"
+"  -r --relocs            afficher les relocalisation (si présentes)\n"
+"  -u --unwind            afficher les informations de type unwind (si présentes)\n"
+"  -d --dynamic           afficher le segment dynamique (si présent)\n"
+"  -V --version-info      afficher la version des sections (si présentes)\n"
+"  -A --arch-specific     afficher les informations spécifiques d'architecture (si présentes)\n"
+"  -D --use-dynamic       utiliser les informations de la section\n"
+"                         dynamique lors de l'affichage des symboles\n"
+"  -x --hex-dump=<numéro> vidanger le contenu de la section <numéro>\n"
+"  -w[liaprmfFso]         ou\n"
+"     --debug-dump[=liGne,=info,=abrév.,=nom-public,=étendue,=macro,=trames,=chaîne,=localisation]\n"
+"                         afficher le contenu des sections débug DWARF2\n"
 
-#: readelf.c:6139
-msgid "version string table"
-msgstr "table chaîne de version"
+#: readelf.c:2612
+#, c-format
+msgid ""
+"  -i --instruction-dump=<number>\n"
+"                         Disassemble the contents of section <number>\n"
+msgstr ""
+"  -i --instruction-dump=<numéro>\n"
+"                         déassembler le contenu de la section <numéro>\n"
 
-#: readelf.c:6143
+#: readelf.c:2616
 #, c-format
 msgid ""
-"\n"
-"Version symbols section '%s' contains %d entries:\n"
+"  -I --histogram         Display histogram of bucket list lengths\n"
+"  -W --wide              Allow output width to exceed 80 characters\n"
+"  @<file>                Read options from <file>\n"
+"  -H --help              Display this information\n"
+"  -v --version           Display the version number of readelf\n"
 msgstr ""
-"\n"
-"La version de section « %s » des symboles contient %d entrée:\n"
+"  -I --histogram         afficher l'histogramme des bacs selon la longueur de la liste\n"
+"  -W --wide              permettre d'afficher plus de 80 caractères\n"
+"  @<fichier>             lire les options à partir du <fichier>\n"
+"  -H --help              afficher l'aide-mémoire\n"
+"  -V --version           afficher le nom et la version du logiciel\n"
+
+#: readelf.c:2642 readelf.c:9180
+msgid "Out of memory allocating dump request table."
+msgstr "Mémoire épuisée allocation d'une table pour requêtes de vidange"
 
-#: readelf.c:6146
+#: readelf.c:2816 readelf.c:2884
 #, c-format
-msgid " Addr: "
-msgstr " Adr: "
+msgid "Unrecognized debug option '%s'\n"
+msgstr "Option de débug non reconnue « %s »\n"
 
-#: readelf.c:6156
-msgid "version symbol data"
-msgstr "données de symbole de version"
+#: readelf.c:2918
+#, c-format
+msgid "Invalid option '-%c'\n"
+msgstr "Option invalide '-%c»\n"
 
-#: readelf.c:6183
-msgid "   0 (*local*)    "
-msgstr "   0 (*local*)    "
+#: readelf.c:2932
+msgid "Nothing to do.\n"
+msgstr "Rien à faire.\n"
 
-#: readelf.c:6187
-msgid "   1 (*global*)   "
-msgstr "   1 (*global*)   "
+#: readelf.c:2944 readelf.c:2960 readelf.c:6169
+msgid "none"
+msgstr "aucun"
 
-#: readelf.c:6223 readelf.c:6677
-msgid "version need"
-msgstr "version nécessaire"
+#: readelf.c:2961
+msgid "2's complement, little endian"
+msgstr "complément à 2, système à octets de poids faible d'abord (little endian)"
 
-#: readelf.c:6233
-msgid "version need aux (2)"
-msgstr "version nécessite aux (2)"
+#: readelf.c:2962
+msgid "2's complement, big endian"
+msgstr "complément à 2, système à octets de poids fort d'abord (big endian)"
 
-#: readelf.c:6275 readelf.c:6740
-msgid "version def"
-msgstr "définition de version"
+#: readelf.c:2980
+msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
+msgstr "N'est pas un fichier ELF - a les mauvais octets magiques au départ\n"
 
-#: readelf.c:6294 readelf.c:6755
-msgid "version def aux"
-msgstr "définition de version aux"
+#: readelf.c:2988
+#, c-format
+msgid "ELF Header:\n"
+msgstr "En-tête ELF:\n"
 
-#: readelf.c:6325
+#: readelf.c:2989
 #, c-format
-msgid ""
-"\n"
-"No version information found in this file.\n"
-msgstr ""
-"\n"
-"Aucune information de version repérée dans ce fichier.\n"
+msgid "  Magic:   "
+msgstr "  Magique:   "
 
-#: readelf.c:6456
-msgid "Unable to read in dynamic data\n"
-msgstr "Incapable de lire les données dynamiques\n"
+#: readelf.c:2993
+#, c-format
+msgid "  Class:                             %s\n"
+msgstr "  Classe:                            %s\n"
 
-#: readelf.c:6509
-msgid "Unable to seek to start of dynamic information"
-msgstr "Incapable de repérer le début des informations dynamiques"
+#: readelf.c:2995
+#, c-format
+msgid "  Data:                              %s\n"
+msgstr "  Données:                          %s\n"
 
-#: readelf.c:6515
-msgid "Failed to read in number of buckets\n"
-msgstr "Échec de lecture parmi tous les baquets\n"
+#: readelf.c:2997
+#, c-format
+msgid "  Version:                           %d %s\n"
+msgstr "  Version:                           %d %s\n"
 
-#: readelf.c:6521
-msgid "Failed to read in number of chains\n"
-msgstr "Échec de lecture du nombre de chaînes\n"
+#: readelf.c:3004
+#, c-format
+msgid "  OS/ABI:                            %s\n"
+msgstr "  OS/ABI:                            %s\n"
+
+#: readelf.c:3006
+#, c-format
+msgid "  ABI Version:                       %d\n"
+msgstr "  Version ABI:                       %d\n"
+
+#: readelf.c:3008
+#, c-format
+msgid "  Type:                              %s\n"
+msgstr "  Type:                              %s\n"
+
+#: readelf.c:3010
+#, c-format
+msgid "  Machine:                           %s\n"
+msgstr "  Machine:                           %s\n"
+
+#: readelf.c:3012
+#, c-format
+msgid "  Version:                           0x%lx\n"
+msgstr "  Version:                           0x%lx\n"
+
+#: readelf.c:3015
+#, c-format
+msgid "  Entry point address:               "
+msgstr "  Adresse du point d'entrée:         "
 
-#: readelf.c:6541
+#: readelf.c:3017
 #, c-format
 msgid ""
 "\n"
-"Symbol table for image:\n"
+"  Start of program headers:          "
 msgstr ""
 "\n"
-"Table de symbole de l'image:\n"
-
-#: readelf.c:6543
-#, c-format
-msgid "  Num Buc:    Value  Size   Type   Bind Vis      Ndx Name\n"
-msgstr "  Nb  Buc:    Valeur Taille Type   Lien Vis      Ndx Nom\n"
-
-#: readelf.c:6545
-#, c-format
-msgid "  Num Buc:    Value          Size   Type   Bind Vis      Ndx Name\n"
-msgstr "  Nb  Buc:    Valeur         Taille Type   Lien Vis      Ndx Nom\n"
+"  Début des en-têtes de programme:   "
 
-#: readelf.c:6597
+#: readelf.c:3019
 #, c-format
 msgid ""
-"\n"
-"Symbol table '%s' contains %lu entries:\n"
+" (bytes into file)\n"
+"  Start of section headers:          "
 msgstr ""
-"\n"
-"Table de symboles « %s » contient %lu entrées:\n"
+" (octets dans le fichier)\n"
+"  Début des en-têtes de section:          "
 
-#: readelf.c:6601
+#: readelf.c:3021
 #, c-format
-msgid "   Num:    Value  Size Type    Bind   Vis      Ndx Name\n"
-msgstr "   Num:    Valeur Tail Type    Lien   Vis      Ndx Nom\n"
+msgid " (bytes into file)\n"
+msgstr " (octets dans le fichier)\n"
 
-#: readelf.c:6603
+#: readelf.c:3023
 #, c-format
-msgid "   Num:    Value          Size Type    Bind   Vis      Ndx Name\n"
-msgstr "   Num:    Valeur         Tail Type    Lien   Vis      Ndx Nom\n"
+msgid "  Flags:                             0x%lx%s\n"
+msgstr "  Fanions:                           0x%lx%s\n"
 
-#: readelf.c:6649
-msgid "version data"
-msgstr "données de version"
+#: readelf.c:3026
+#, c-format
+msgid "  Size of this header:               %ld (bytes)\n"
+msgstr "  Taille de cet en-tête:             %ld (bytes)\n"
 
-#: readelf.c:6690
-msgid "version need aux (3)"
-msgstr "version nécessite aux (3)"
+#: readelf.c:3028
+#, c-format
+msgid "  Size of program headers:           %ld (bytes)\n"
+msgstr "  Taille de l'en-tête du programme:  %ld (bytes)\n"
 
-#: readelf.c:6715
-msgid "bad dynamic symbol"
-msgstr "mauvais symbole dynamique"
+#: readelf.c:3030
+#, c-format
+msgid "  Number of program headers:         %ld\n"
+msgstr "  Nombre d'en-tête du programme:     %ld\n"
 
-#: readelf.c:6778
+#: readelf.c:3032
 #, c-format
-msgid ""
-"\n"
-"Dynamic symbol information is not available for displaying symbols.\n"
-msgstr ""
-"\n"
-"L'information dynamique des symboles n'est pas disponible pour l'affichage des symboles.\n"
+msgid "  Size of section headers:           %ld (bytes)\n"
+msgstr "  Taille des en-têtes de section:    %ld (bytes)\n"
 
-#: readelf.c:6790
+#: readelf.c:3034
 #, c-format
-msgid ""
-"\n"
-"Histogram for bucket list length (total of %lu buckets):\n"
-msgstr ""
-"\n"
-"Histogramme de la longueur de la liste des baquets (total de %lu baquets):\n"
+msgid "  Number of section headers:         %ld"
+msgstr "  Nombre d'en-têtes de section:      %ld"
 
-#: readelf.c:6792
+#: readelf.c:3039
 #, c-format
-msgid " Length  Number     %% of total  Coverage\n"
-msgstr " Long.   Nombre     %% de couverture totale\n"
+msgid "  Section header string table index: %ld"
+msgstr "  Table d'indexes des chaînes d'en-tête de section: %ld"
 
-#: readelf.c:6797 readelf.c:6813 readelf.c:10967 readelf.c:11159
-msgid "Out of memory"
-msgstr "Mémoire épuisée"
+#: readelf.c:3070 readelf.c:3103
+msgid "program headers"
+msgstr "En-tête de programme"
+
+#: readelf.c:3141 readelf.c:3440 readelf.c:3481 readelf.c:3540 readelf.c:3603
+#: readelf.c:4208 readelf.c:4232 readelf.c:5510 readelf.c:5554 readelf.c:5752
+#: readelf.c:6734 readelf.c:6748 readelf.c:8564 readelf.c:8972 readelf.c:9039
+msgid "Out of memory\n"
+msgstr "Mémoire épuisée\n"
 
-#: readelf.c:6862
+#: readelf.c:3168
 #, c-format
 msgid ""
 "\n"
-"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+"There are no program headers in this file.\n"
 msgstr ""
 "\n"
-"Segment d'informations dynamiques à l'adresse de décalage 0x%lx contient %d entrées:\n"
-
-#: readelf.c:6865
-#, c-format
-msgid " Num: Name                           BoundTo     Flags\n"
-msgstr " Num: Nom                            Lier à      Fanions\n"
+"Il n'y a pas d'en-têtes de programme dans ce fichier.\n"
 
-#: readelf.c:6917
+#: readelf.c:3174
 #, c-format
 msgid ""
 "\n"
-"Assembly dump of section %s\n"
+"Elf file type is %s\n"
 msgstr ""
 "\n"
-"Vidange de la section assembleur %s\n"
+"Type de fichier ELF est %s\n"
 
-#: readelf.c:6938
+#: readelf.c:3175
 #, c-format
-msgid ""
-"\n"
-"Section '%s' has no data to dump.\n"
-msgstr ""
-"\n"
-"La section « %s » n'a pas de données à être videngé.\n"
+msgid "Entry point "
+msgstr "Point d'entrée "
 
-#: readelf.c:6943
+#: readelf.c:3177
 #, c-format
 msgid ""
 "\n"
-"Hex dump of section '%s':\n"
+"There are %d program headers, starting at offset "
 msgstr ""
 "\n"
-"Vidange hexadécimale de la section « %s »:\n"
-
-#: readelf.c:7090
-msgid "badly formed extended line op encountered!\n"
-msgstr "ligne rencontrée de l'extension de l'opérateur est mal composée!\n"
-
-#: readelf.c:7097
-#, c-format
-msgid "  Extended opcode %d: "
-msgstr "  Code op étendu  %d: "
+"Il y a %d en-têtes de programme, débutant à l'adresse de décalage"
 
-#: readelf.c:7102
+#: readelf.c:3189 readelf.c:3191
 #, c-format
 msgid ""
-"End of Sequence\n"
 "\n"
+"Program Headers:\n"
 msgstr ""
-"Fin de séquence\n"
 "\n"
+"En-têtes de programme:\n"
 
-#: readelf.c:7108
-#, c-format
-msgid "set Address to 0x%lx\n"
-msgstr "initialisé l'adresse à 0x%lx\n"
-
-#: readelf.c:7113
-#, c-format
-msgid "  define new File Table entry\n"
-msgstr "  définir une entrée pour un nouveau fichier de table\n"
-
-#: readelf.c:7114 readelf.c:9032
-#, c-format
-msgid "  Entry\tDir\tTime\tSize\tName\n"
-msgstr "  Entrée\tRép.\tDate\tTaille\tNom\n"
-
-#: readelf.c:7116
+#: readelf.c:3195
 #, c-format
-msgid "   %d\t"
-msgstr "   %d\t"
+msgid "  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align\n"
+msgstr "  Type           Décalage Adr. vir.  Adr.phys.  T.Fich. T.Mém.  Fan Alignement\n"
 
-#: readelf.c:7119 readelf.c:7121 readelf.c:7123 readelf.c:9044 readelf.c:9046
-#: readelf.c:9048
+#: readelf.c:3198
 #, c-format
-msgid "%lu\t"
-msgstr "%lu\t"
+msgid "  Type           Offset   VirtAddr           PhysAddr           FileSiz  MemSiz   Flg Align\n"
+msgstr "  Type           Décalage Adr. vir.          Adr.phys.          T.Fich.  T.Mém.   Fan Alignement\n"
 
-#: readelf.c:7124
+#: readelf.c:3202
 #, c-format
-msgid ""
-"%s\n"
-"\n"
-msgstr ""
-"%s\n"
-"\n"
+msgid "  Type           Offset             VirtAddr           PhysAddr\n"
+msgstr "  Type           Décalage           Adr.virt           Adr.phys.\n"
 
-#: readelf.c:7128
+#: readelf.c:3204
 #, c-format
-msgid "UNKNOWN: length %d\n"
-msgstr "UNKNOWN: longueur %d\n"
-
-#: readelf.c:7155
-msgid "debug_str section data"
-msgstr "données de la section debug_str"
-
-#: readelf.c:7173
-msgid "<no .debug_str section>"
-msgstr "<aucune section .debug_str>"
+msgid "                 FileSiz            MemSiz              Flags  Align\n"
+msgstr "                 Taille fichier     Taille mémoire      Fanion Alignement\n"
 
-#: readelf.c:7176
-msgid "<offset is too big>"
-msgstr "<décalage trop grand>"
+#: readelf.c:3297
+msgid "more than one dynamic segment\n"
+msgstr "plus d'un segment dynamique\n"
 
-#: readelf.c:7201
-msgid "debug_loc section data"
-msgstr "données de la section debug_loc"
+#: readelf.c:3308
+msgid "no .dynamic section in the dynamic segment"
+msgstr "pas de section .dynamic dans le segment dynamique"
 
-#: readelf.c:7235
-msgid "debug_range section data"
-msgstr "données de la section debug_range de mise au point"
+#: readelf.c:3317
+msgid "the .dynamic section is not contained within the dynamic segment"
+msgstr "la section .dynamic n'est pas contenu à l'intérieur du segment dynamique"
 
-#: readelf.c:7307
-#, c-format
-msgid "%s: skipping unexpected symbol type %s in relocation in section .rela%s\n"
-msgstr "%s: escamotage inattendu du type de symbole %s dans la section relocalisation .rela%s\n"
+#: readelf.c:3319
+msgid "the .dynamic section is not the first section in the dynamic segment."
+msgstr "la section .dynamic n'est pas la première section dans le segment dynamique."
 
-#: readelf.c:7321
-#, c-format
-msgid "skipping unexpected symbol type %s in relocation in section .rela.%s\n"
-msgstr "escamotage inattendu du type de symbole %s dans la section de relocalisation .rela%s\n"
+#: readelf.c:3333
+msgid "Unable to find program interpreter name\n"
+msgstr "Incapable de repérer le nom de l'interpréteur du programme\n"
 
-#: readelf.c:7565
+#: readelf.c:3340
 #, c-format
-msgid "Unknown TAG value: %lx"
-msgstr "Valeur d'étiquette (« TAG ») inconnue: %lx"
+msgid ""
+"\n"
+"      [Requesting program interpreter: %s]"
+msgstr ""
+"\n"
+"      [Réquisition de l'interpréteur de programme: %s]"
 
-#: readelf.c:7601
+#: readelf.c:3352
 #, c-format
-msgid "Unknown FORM value: %lx"
-msgstr "Valeur FORM inconnue: %lx"
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr ""
+"\n"
+" Section à la projection de segement:\n"
 
-#: readelf.c:7610
+#: readelf.c:3353
 #, c-format
-msgid " %lu byte block: "
-msgstr " %lu bloc d'octets: "
+msgid "  Segment Sections...\n"
+msgstr "  Sections de segment...\n"
 
-#: readelf.c:7944
-#, c-format
-msgid "(User defined location op)"
-msgstr "(Op de localisation défini par l'usager)"
+#: readelf.c:3402
+msgid "Cannot interpret virtual addresses without program headers.\n"
+msgstr "Ne peut interpréter les adresses virtuelles sans l'en-tête du programme.\n"
 
-#: readelf.c:7946
+#: readelf.c:3418
 #, c-format
-msgid "(Unknown location op)"
-msgstr "(Op de localisation inconnu)"
-
-#: readelf.c:8015
-msgid "Internal error: DWARF version is not 2 or 3.\n"
-msgstr "Erreur interne: DWARF version n'est ni 2 ou 3.\n"
-
-#: readelf.c:8113
-msgid "DW_FORM_data8 is unsupported when sizeof (unsigned long) != 8\n"
-msgstr "DW_FORM_data8 n'est pas supporté lorsque  sizeof (unsigned long) != 8\n"
+msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
+msgstr "L'adresse virtuelle 0x%lx ne peut être localisé dans chaque segment PT_LOAD.\n"
 
-#: readelf.c:8162
-#, c-format
-msgid " (indirect string, offset: 0x%lx): %s"
-msgstr " (chaîne indirecte, décalage: 0x%lx): %s"
+#: readelf.c:3432 readelf.c:3473
+msgid "section headers"
+msgstr "En-têtes de section"
 
-#: readelf.c:8171
-#, c-format
-msgid "Unrecognized form: %d\n"
-msgstr "Forme non reconnue: %d\n"
+#: readelf.c:3517 readelf.c:3580
+msgid "symbols"
+msgstr "symboles"
 
-#: readelf.c:8256
-#, c-format
-msgid "(not inlined)"
-msgstr "(pas en ligne)"
+#: readelf.c:3527 readelf.c:3590
+msgid "symtab shndx"
+msgstr "symtab shndx"
 
-#: readelf.c:8259
+#: readelf.c:3817 readelf.c:4192
 #, c-format
-msgid "(inlined)"
-msgstr "(en ligne)"
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr ""
+"\n"
+"Il n'y a pas de section dans ce fichier.\n"
 
-#: readelf.c:8262
+#: readelf.c:3823
 #, c-format
-msgid "(declared as inline but ignored)"
-msgstr "(déclaré comme en ligne mais ignoré)"
+msgid "There are %d section headers, starting at offset 0x%lx:\n"
+msgstr "Il y a %d en-têtes de section, débutant à l'adresse de décalage 0x%lx:\n"
 
-#: readelf.c:8265
-#, c-format
-msgid "(declared as inline and inlined)"
-msgstr "(déclaré comme en-ligne et en-ligné"
+#: readelf.c:3842 readelf.c:4309 readelf.c:4544 readelf.c:4852 readelf.c:5267
+#: readelf.c:6906
+msgid "string table"
+msgstr "table de chaînes"
 
-#: readelf.c:8268
+#: readelf.c:3881
 #, c-format
-msgid "  (Unknown inline attribute value: %lx)"
-msgstr "  (valeur d'attribut en ligne inconnu: %lx)"
+msgid "Section %d has invalid sh_entsize %lx (expected %lx)\n"
+msgstr "La section %d a une sh_entsize %lx invalide (attendait %lx)\n"
 
-#: readelf.c:8413 readelf.c:9537
-#, c-format
-msgid " [without DW_AT_frame_base]"
-msgstr " [sans DW_AT_frame_base]"
+#: readelf.c:3901
+msgid "File contains multiple dynamic symbol tables\n"
+msgstr "Le fichier contient plusieurs tables dynamiques de symboles\n"
 
-#: readelf.c:8416
-#, c-format
-msgid "(location list)"
-msgstr "(liste de localisation)"
+#: readelf.c:3914
+msgid "File contains multiple dynamic string tables\n"
+msgstr "Le fichier contient plusieurs tables de chaînes dynamiques\n"
 
-#: readelf.c:8534
-#, c-format
-msgid "Unknown AT value: %lx"
-msgstr "Valeur AT inconnue: %lx"
+#: readelf.c:3919
+msgid "dynamic strings"
+msgstr "chaînes dynamiques"
 
-#: readelf.c:8602
-msgid "No comp units in .debug_info section ?"
-msgstr "Pas d'unités de comptabilisation dans la section .debug_info ?"
+#: readelf.c:3926
+msgid "File contains multiple symtab shndx tables\n"
+msgstr "Le fichier contient de multiples tables symboliques shndx\n"
 
-#: readelf.c:8611
+#: readelf.c:3973
 #, c-format
-msgid "Not enough memory for a debug info array of %u entries"
-msgstr "Pas asses de mémoire pour les infos dans un tableau de mise au point de %u entrées"
+msgid ""
+"\n"
+"Section Headers:\n"
+msgstr ""
+"\n"
+"En-têtes de section:\n"
 
-#: readelf.c:8619 readelf.c:9630
+#: readelf.c:3975
 #, c-format
 msgid ""
-"The section %s contains:\n"
 "\n"
+"Section Header:\n"
 msgstr ""
-"La section %s contient:\n"
 "\n"
+"En-têtes de section:\n"
 
-#: readelf.c:8693
+#: readelf.c:3981 readelf.c:3992 readelf.c:4003
 #, c-format
-msgid "  Compilation Unit @ %lx:\n"
-msgstr "  Unité de compilation @ %lx:\n"
+msgid "  [Nr] Name\n"
+msgstr "  [Nr] Nom\n"
 
-#: readelf.c:8694
+#: readelf.c:3982
 #, c-format
-msgid "   Length:        %ld\n"
-msgstr "   Longueur:      %ld\n"
+msgid "       Type            Addr     Off    Size   ES   Lk Inf Al\n"
+msgstr "       Type            Adr      Décala.Taille ES   LN Inf Al\n"
 
-#: readelf.c:8695
+#: readelf.c:3986
 #, c-format
-msgid "   Version:       %d\n"
-msgstr "   Version:       %d\n"
+msgid "  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al\n"
+msgstr "  [Nr] Nom               Type            Adr      Décala.Taille ES Fan LN Inf Al\n"
 
-#: readelf.c:8696
+#: readelf.c:3993
 #, c-format
-msgid "   Abbrev Offset: %ld\n"
-msgstr "   Décalage agrégé: %ld\n"
+msgid "       Type            Address          Off    Size   ES   Lk Inf Al\n"
+msgstr "       Type            Adresse          Décala.Taille ES   LN Inf Al\n"
 
-#: readelf.c:8697
+#: readelf.c:3997
 #, c-format
-msgid "   Pointer Size:  %d\n"
-msgstr "   Taille des pointeurs:  %d\n"
-
-#: readelf.c:8702
-msgid "Only version 2 and 3 DWARF debug information is currently supported.\n"
-msgstr "Seuls les informations de débug de la version DWARF 2 et 3 sont couramment supportés.\n"
-
-#: readelf.c:8717
-msgid "Unable to locate .debug_abbrev section!\n"
-msgstr "Incapable de localiser la section .debug_abbrev!\n"
+msgid "  [Nr] Name              Type            Address          Off    Size   ES Flg Lk Inf Al\n"
+msgstr "  [Nr] Nom               Type            Adr              Décala.Taille ES Fan LN Inf Al\n"
 
-#: readelf.c:8722
-msgid "debug_abbrev section data"
-msgstr "données de la section debug_abbrev"
+#: readelf.c:4004
+#, c-format
+msgid "       Type              Address          Offset            Link\n"
+msgstr "       Type              Adresse          Décalage          Lien\n"
 
-#: readelf.c:8759
+#: readelf.c:4005
 #, c-format
-msgid "Unable to locate entry %lu in the abbreviation table\n"
-msgstr "Incapable de localiser l'entrée %lu dans la table d'abréviation\n"
+msgid "       Size              EntSize          Info              Align\n"
+msgstr "       Taille            TaillEntré       Info              Alignement\n"
 
-#: readelf.c:8765
+#: readelf.c:4009
 #, c-format
-msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n"
-msgstr " <%d><%lx>: Numéro d'abréviation: %lu (%s)\n"
+msgid "  [Nr] Name              Type             Address           Offset\n"
+msgstr "  [Nr] Nom               Type             Adresse           Décalage\n"
 
-#: readelf.c:8838
+#: readelf.c:4010
 #, c-format
-msgid "%s section needs a populated .debug_info section\n"
-msgstr "%s la section a besoin d'une section .debug_info_section\n"
+msgid "       Size              EntSize          Flags  Link  Info  Align\n"
+msgstr "       Taille            TaillEntré       Fanion Lien  Info  Alignement\n"
 
-#: readelf.c:8845
+#: readelf.c:4015
 #, c-format
-msgid "%s section has more comp units than .debug_info section\n"
-msgstr "%s la section a plus d'unités de comptabilisation que la section .debug_info_section\n"
+msgid "       Flags\n"
+msgstr "       Fanions\n"
 
-#: readelf.c:8847
+#: readelf.c:4150
 #, c-format
 msgid ""
-"assuming that the pointer size is %d, from the last comp unit in .debug_info\n"
-"\n"
+"Key to Flags:\n"
+"  W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+"  I (info), L (link order), G (group), x (unknown)\n"
+"  O (extra OS processing required) o (OS specific), p (processor specific)\n"
 msgstr ""
-"on assume que la taille du pointeur est %d à partir de la dernière unité de comptabilisation dans .debug_info\n"
-"\n"
+"Clé des fanions:\n"
+"  W (écriture), A (allocation), X (exécution), M (fusion), S (chaînes)\n"
+"  I (info), L (ordre des liens), G (groupe), x (inconnu)\n"
+"  O (traiterment additionnel requis pour l'OS) o (spécifique à l'OS), p (spécifique au processeur)\n"
+
+#: readelf.c:4168
+#, c-format
+msgid "[<unknown>: 0x%x]"
+msgstr "<inconnu>: 0x%x]"
 
-#: readelf.c:8891
-msgid "extracting information from .debug_info section"
-msgstr "extraction d'information à partir de la section .debug_info"
+#: readelf.c:4199
+msgid "Section headers are not available!\n"
+msgstr "En-têtes de section ne sont pas disponibles!\n"
 
-#: readelf.c:8909
+#: readelf.c:4223
 #, c-format
 msgid ""
 "\n"
-"Dump of debug contents of section %s:\n"
-"\n"
+"There are no section groups in this file.\n"
 msgstr ""
 "\n"
-"Vidange du contenu de débug de la section %s:\n"
-"\n"
+"Il n'y a pas de groupe de section dans ce fichier.\n"
 
-#: readelf.c:8948
-msgid "The line info appears to be corrupt - the section is too small\n"
-msgstr "La ligne d'information semble corrompue - la section est trop petite\n"
+#: readelf.c:4259
+#, c-format
+msgid "Bad sh_link in group section `%s'\n"
+msgstr "sh_link erroné dans la section de groupe `%s'\n"
 
-#: readelf.c:8957
-msgid "Only DWARF version 2 and 3 line info is currently supported.\n"
-msgstr "Seule la ligne d'info DWARF de version 2 et 3 est couramment supportée.\n"
+#: readelf.c:4278
+#, c-format
+msgid "Bad sh_info in group section `%s'\n"
+msgstr "sh_info erroné dans la section de groupe`%s'\n"
 
-#: readelf.c:8984
+#: readelf.c:4317 readelf.c:7243
+msgid "section data"
+msgstr "données de section"
+
+#: readelf.c:4329
 #, c-format
-msgid "  Length:                      %ld\n"
-msgstr "  Longueur:                    %ld\n"
+msgid "   [Index]    Name\n"
+msgstr "   [Index]    Nom\n"
 
-#: readelf.c:8985
+#: readelf.c:4343
 #, c-format
-msgid "  DWARF Version:               %d\n"
-msgstr "  Version DWARF:               %d\n"
+msgid "section [%5u] in group section [%5u] > maximum section [%5u]\n"
+msgstr "section [%5u] est dans le groupe section [%5u] > que le maximum de la section [%5u]\n"
 
-#: readelf.c:8986
+#: readelf.c:4349
 #, c-format
-msgid "  Prologue Length:             %d\n"
-msgstr "  Longueur du prologue:        %d\n"
+msgid "invalid section [%5u] in group section [%5u]\n"
+msgstr "section invalide [%5u] est dans le groupe section [%5u]\n"
 
-#: readelf.c:8987
+#: readelf.c:4359
 #, c-format
-msgid "  Minimum Instruction Length:  %d\n"
-msgstr "  Longueur minimale des instructions:  %d\n"
+msgid "section [%5u] in group section [%5u] already in group section [%5u]\n"
+msgstr "section [%5u] est dans le groupe section [%5u] qui est déjà dans le groupe section [%5u]\n"
 
-#: readelf.c:8988
+#: readelf.c:4372
 #, c-format
-msgid "  Initial value of 'is_stmt':  %d\n"
-msgstr "  Valeur initiale de « is_stmt »:  %d\n"
+msgid "section 0 in group section [%5u]\n"
+msgstr "section 0 dans le groupe section [%5u]\n"
 
-#: readelf.c:8989
+#: readelf.c:4468
 #, c-format
-msgid "  Line Base:                   %d\n"
-msgstr "  Ligne de base:               %d\n"
+msgid ""
+"\n"
+"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr ""
+"\n"
+"'%s' section de relocalisation à l'adresse de décalage 0x%lx contient %ld octets:\n"
 
-#: readelf.c:8990
+#: readelf.c:4480
 #, c-format
-msgid "  Line Range:                  %d\n"
-msgstr "  Ligne d'étendue:             %d\n"
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr ""
+"\n"
+"Il n'y a pas d'informations de relocalisation dynamique dans ce fichier.\n"
 
-#: readelf.c:8991
+#: readelf.c:4504
 #, c-format
-msgid "  Opcode Base:                 %d\n"
-msgstr "  Code op Base:                %d\n"
+msgid ""
+"\n"
+"Relocation section "
+msgstr ""
+"\n"
+"Section de relocalisation "
+
+#: readelf.c:4509 readelf.c:4928 readelf.c:4942 readelf.c:5282
+#, c-format
+msgid "'%s'"
+msgstr "« %s »"
 
-#: readelf.c:8992
+#: readelf.c:4511 readelf.c:4944 readelf.c:5284
 #, c-format
-msgid "  (Pointer size:               %u)\n"
-msgstr "  Taille des pointeurs:        %u)\n"
+msgid " at offset 0x%lx contains %lu entries:\n"
+msgstr " à l'adresse de décalage 0x%lx contient %lu entrées:\n"
 
-#: readelf.c:9001
+#: readelf.c:4563
 #, c-format
 msgid ""
 "\n"
-" Opcodes:\n"
+"There are no relocations in this file.\n"
 msgstr ""
 "\n"
-" Codes op:\n"
+"Il n'y a pas de relocalisation dans ce fichier.\n"
+
+#: readelf.c:4742 readelf.c:5124
+msgid "unwind table"
+msgstr "table unwind"
 
-#: readelf.c:9004
+#: readelf.c:4801 readelf.c:5214
 #, c-format
-msgid "  Opcode %d has %d args\n"
-msgstr "  Code op %d a %d arguments\n"
+msgid "Skipping unexpected relocation type %s\n"
+msgstr "Escamotage du type de relocalisation inattendue %s\n"
 
-#: readelf.c:9010
+#: readelf.c:4860 readelf.c:5275 readelf.c:5326
 #, c-format
 msgid ""
 "\n"
-" The Directory Table is empty.\n"
+"There are no unwind sections in this file.\n"
 msgstr ""
 "\n"
-" La table des répertoires est vide.\n"
+"Il n'y a pas de section unwind dans ce fichier.\n"
 
-#: readelf.c:9013
+#: readelf.c:4923
 #, c-format
 msgid ""
 "\n"
-" The Directory Table:\n"
+"Could not find unwind info section for "
 msgstr ""
 "\n"
-" La table des répertoire:\n"
+"N'a pu repérer les infos d'une section unwind pour "
 
-#: readelf.c:9017
-#, c-format
-msgid "  %s\n"
-msgstr "  %s\n"
+#: readelf.c:4935
+msgid "unwind info"
+msgstr "info unwind"
 
-#: readelf.c:9028
+#: readelf.c:4937 readelf.c:5281
 #, c-format
 msgid ""
 "\n"
-" The File Name Table is empty.\n"
+"Unwind section "
 msgstr ""
 "\n"
-" La talbe des noms de fichiers est vide.\n"
+"Section unwind"
 
-#: readelf.c:9031
+#: readelf.c:5491 readelf.c:5535
+msgid "dynamic section"
+msgstr "section dynamique"
+
+#: readelf.c:5612
 #, c-format
 msgid ""
 "\n"
-" The File Name Table:\n"
+"There is no dynamic section in this file.\n"
 msgstr ""
 "\n"
-" La table des noms de fichiers:\n"
+"Il n'y a pas de section dynamique dans ce fichier.\n"
 
-#: readelf.c:9039
-#, c-format
-msgid "  %d\t"
-msgstr "  %d\t"
+#: readelf.c:5650
+msgid "Unable to seek to end of file!"
+msgstr "Incapable de repérer la fin du fichier!"
 
-#: readelf.c:9050
-#, c-format
-msgid "%s\n"
-msgstr "%s\n"
+#: readelf.c:5663
+msgid "Unable to determine the number of symbols to load\n"
+msgstr "Incapable de déterminer le nombre de symboles à charger\n"
 
-#. Now display the statements.
-#: readelf.c:9058
+#: readelf.c:5698
+msgid "Unable to seek to end of file\n"
+msgstr "Incapable de repérer la fin du fichier\n"
+
+#: readelf.c:5705
+msgid "Unable to determine the length of the dynamic string table\n"
+msgstr "Incapable de déterminer la longueur de la table de chaînes dynamiques\n"
+
+#: readelf.c:5710
+msgid "dynamic string table"
+msgstr "table dynamique de chaînes"
+
+#: readelf.c:5745
+msgid "symbol information"
+msgstr "information de symbole"
+
+#: readelf.c:5770
 #, c-format
 msgid ""
 "\n"
-" Line Number Statements:\n"
+"Dynamic section at offset 0x%lx contains %u entries:\n"
 msgstr ""
 "\n"
-" Numéro de ligne des déclarations:\n"
-
-#: readelf.c:9073
-#, c-format
-msgid "  Special opcode %d: advance Address by %d to 0x%lx"
-msgstr "  Code op spécial %d: avancé l'Adresse par %d à 0x%lx"
+"Section dynamique à l'adresse de décalage 0x%lx contient %u entrées:\n"
 
-#: readelf.c:9077
+#: readelf.c:5773
 #, c-format
-msgid " and Line by %d to %d\n"
-msgstr " et Ligne par %d à %d\n"
+msgid "  Tag        Type                         Name/Value\n"
+msgstr "  Étiquettes Type                         Nom/Valeur\n"
 
-#: readelf.c:9088
+#: readelf.c:5809
 #, c-format
-msgid "  Copy\n"
-msgstr "  Copie\n"
+msgid "Auxiliary library"
+msgstr "Librairie auxiliaire"
 
-#: readelf.c:9095
+#: readelf.c:5813
 #, c-format
-msgid "  Advance PC by %d to %lx\n"
-msgstr "  Avancer le compteur PC de %d à %lx\n"
+msgid "Filter library"
+msgstr "Librairie de filtre"
 
-#: readelf.c:9103
+#: readelf.c:5817
 #, c-format
-msgid "  Advance Line by %d to %d\n"
-msgstr "  Avancer la ligne de %d à %d\n"
+msgid "Configuration file"
+msgstr "Fichier de configuration"
 
-#: readelf.c:9110
+#: readelf.c:5821
 #, c-format
-msgid "  Set File Name to entry %d in the File Name Table\n"
-msgstr "  Initialisé le nom du fichier à l'entrée %d dans la table des noms de fichiers\n"
+msgid "Dependency audit library"
+msgstr "Librairie d'audit des dépendances"
 
-#: readelf.c:9118
+#: readelf.c:5825
 #, c-format
-msgid "  Set column to %d\n"
-msgstr "  Initialisé la colonne à %d\n"
+msgid "Audit library"
+msgstr "Librairie des audits"
 
-#: readelf.c:9125
+#: readelf.c:5843 readelf.c:5871 readelf.c:5899
 #, c-format
-msgid "  Set is_stmt to %d\n"
-msgstr "  Initialisé is_stmt avec %d\n"
+msgid "Flags:"
+msgstr "Fanions:"
 
-#: readelf.c:9130
+#: readelf.c:5846 readelf.c:5874 readelf.c:5901
 #, c-format
-msgid "  Set basic block\n"
-msgstr "  Initialisé le bloc de base\n"
+msgid " None\n"
+msgstr "Aucun\n"
 
-#: readelf.c:9138
+#: readelf.c:6022
 #, c-format
-msgid "  Advance PC by constant %d to 0x%lx\n"
-msgstr "  Avancer le compteur PC par constante de %d à 0x%lx\n"
+msgid "Shared library: [%s]"
+msgstr "Librairie partagées: [%s]"
 
-#: readelf.c:9146
+#: readelf.c:6025
 #, c-format
-msgid "  Advance PC by fixed size amount %d to 0x%lx\n"
-msgstr "  Avancer le compteur PC par une taille fixe de %d à 0x%lx\n"
+msgid " program interpreter"
+msgstr " programme interpréteur"
 
-#: readelf.c:9151
+#: readelf.c:6029
 #, c-format
-msgid "  Set prologue_end to true\n"
-msgstr "  Initialiser prologue_end à VRAI\n"
+msgid "Library soname: [%s]"
+msgstr "Librairie soname: [%s]"
 
-#: readelf.c:9155
+#: readelf.c:6033
 #, c-format
-msgid "  Set epilogue_begin to true\n"
-msgstr "  Initialiser epilogue_begin à VRAI\n"
+msgid "Library rpath: [%s]"
+msgstr "Librairie rpath: [%s]"
 
-#: readelf.c:9161
+#: readelf.c:6037
 #, c-format
-msgid "  Set ISA to %d\n"
-msgstr "  Initialiser ISA à %d\n"
+msgid "Library runpath: [%s]"
+msgstr "Librairie runpath:[%s]"
 
-#: readelf.c:9165
+#: readelf.c:6100
 #, c-format
-msgid "  Unknown opcode %d with operands: "
-msgstr "  opcode inconnu %d avec les opérandes:"
+msgid "Not needed object: [%s]\n"
+msgstr "Objet non nécessaire: [%s]\n"
 
-#: readelf.c:9193 readelf.c:9279 readelf.c:9354
+#: readelf.c:6214
 #, c-format
 msgid ""
-"Contents of the %s section:\n"
 "\n"
+"Version definition section '%s' contains %ld entries:\n"
 msgstr ""
-"Contenue de la section %s:\n"
 "\n"
+"Section des définitions de version « %s » contient %ld entrées:\n"
 
-#: readelf.c:9233
-msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
-msgstr "Seuls les noms publics DWARF 2 et 3 sont couramment supportés\n"
+#: readelf.c:6217
+#, c-format
+msgid "  Addr: 0x"
+msgstr "  Adr: 0x"
 
-#: readelf.c:9240
+#: readelf.c:6219 readelf.c:6426
 #, c-format
-msgid "  Length:                              %ld\n"
-msgstr "  Longueur:                            %ld\n"
+msgid "  Offset: %#08lx  Link: %lx (%s)\n"
+msgstr "  Décalage: %#08lx  Lien: %lx (%s)\n"
+
+#: readelf.c:6228
+msgid "version definition section"
+msgstr "section de définition de version"
+
+#: readelf.c:6254
+#, c-format
+msgid "  %#06x: Rev: %d  Flags: %s"
+msgstr "  %#06x: Rev: %d  Fanions: %s"
+
+#: readelf.c:6257
+#, c-format
+msgid "  Index: %d  Cnt: %d  "
+msgstr "  Index: %d  Compteur: %d  "
+
+#: readelf.c:6268
+#, c-format
+msgid "Name: %s\n"
+msgstr "Nom: %s\n"
 
-#: readelf.c:9242
+#: readelf.c:6270
 #, c-format
-msgid "  Version:                             %d\n"
-msgstr "  Version:                             %d\n"
+msgid "Name index: %ld\n"
+msgstr "Nom de l'index: %ld\n"
 
-#: readelf.c:9244
+#: readelf.c:6285
 #, c-format
-msgid "  Offset into .debug_info section:     %ld\n"
-msgstr "  Décalage dans la section .debug_info:%ld\n"
+msgid "  %#06x: Parent %d: %s\n"
+msgstr "  %#06x: Parent %d: %s\n"
 
-#: readelf.c:9246
+#: readelf.c:6288
 #, c-format
-msgid "  Size of area in .debug_info section: %ld\n"
-msgstr "  Taille de la zone dans la section .debug_info: %ld\n"
+msgid "  %#06x: Parent %d, name index: %ld\n"
+msgstr "  %#06x: Parent %d, name index: %ld\n"
 
-#: readelf.c:9249
+#: readelf.c:6307
 #, c-format
 msgid ""
 "\n"
-"    Offset\tName\n"
+"Version needs section '%s' contains %ld entries:\n"
 msgstr ""
 "\n"
-"    Décalage\tNom\n"
+"Version nécessitant la section « %s » contenant %ld entrées:\n"
 
-#: readelf.c:9300
+#: readelf.c:6310
 #, c-format
-msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
-msgstr " DW_MACINFO_start_file - no de ligne: %d no de fichier: %d\n"
+msgid " Addr: 0x"
+msgstr " Adr: 0x"
 
-#: readelf.c:9306
+#: readelf.c:6312
 #, c-format
-msgid " DW_MACINFO_end_file\n"
-msgstr " DW_MACINFO_end_file\n"
+msgid "  Offset: %#08lx  Link to section: %ld (%s)\n"
+msgstr "  Décalage: %#08lx  Lien vers la section: %ld (%s)\n"
 
-#: readelf.c:9314
-#, c-format
-msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
-msgstr " DW_MACINFO_define - no de ligne : %d macro : %s\n"
+#: readelf.c:6321
+msgid "version need section"
+msgstr "version nécessite une section"
 
-#: readelf.c:9323
+#: readelf.c:6343
 #, c-format
-msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
-msgstr " DW_MACINFO_undef - no de ligne : %d macro : %s\n"
+msgid "  %#06x: Version: %d"
+msgstr "  %#06x: Version: %d"
 
-#: readelf.c:9335
+#: readelf.c:6346
 #, c-format
-msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
-msgstr " DW_MACINFO_vendor_ext - constante : %d chaîne : %s\n"
+msgid "  File: %s"
+msgstr "  Fichier: %s"
 
-#: readelf.c:9363
+#: readelf.c:6348
 #, c-format
-msgid "  Number TAG\n"
-msgstr "  Numéro d'étiquette\n"
+msgid "  File: %lx"
+msgstr "  Fichier: %lx"
 
-#: readelf.c:9369
+#: readelf.c:6350
 #, c-format
-msgid "   %ld      %s    [%s]\n"
-msgstr "   %ld      %s    [%s]\n"
+msgid "  Cnt: %d\n"
+msgstr "  Compteur: %d\n"
 
-#: readelf.c:9372
-msgid "has children"
-msgstr "a des rejetons"
+#: readelf.c:6368
+#, c-format
+msgid "  %#06x:   Name: %s"
+msgstr "  %#06x:   Nom: %s"
 
-#: readelf.c:9372
-msgid "no children"
-msgstr "aucun rejeton"
+#: readelf.c:6371
+#, c-format
+msgid "  %#06x:   Name index: %lx"
+msgstr "  %#06x:   Nom de l'index: %lx"
 
-#: readelf.c:9375
+#: readelf.c:6374
 #, c-format
-msgid "    %-18s %s\n"
-msgstr "    %-18s %s\n"
+msgid "  Flags: %s  Version: %d\n"
+msgstr "  Fanions: %s  Version: %d\n"
+
+#: readelf.c:6417
+msgid "version string table"
+msgstr "table chaîne de version"
 
-#: readelf.c:9410
+#: readelf.c:6421
 #, c-format
 msgid ""
 "\n"
-"The .debug_loc section is empty.\n"
+"Version symbols section '%s' contains %d entries:\n"
 msgstr ""
 "\n"
-"La section .debug_loc est vide.\n"
+"La version de section « %s » des symboles contient %d entrée:\n"
 
-#. FIXME: Should we handle this case?
-#: readelf.c:9455
-msgid "Location lists in .debug_info section aren't in ascending order!\n"
-msgstr "Liste de localisation dans la ssection .debug_info ne sont pas en ordre ascendant!\n"
+#: readelf.c:6424
+#, c-format
+msgid " Addr: "
+msgstr " Adr: "
 
-#: readelf.c:9458
-msgid "No location lists in .debug_info section!\n"
-msgstr "Pas de liste de localisation dans la section .debug_info!\n"
+#: readelf.c:6434
+msgid "version symbol data"
+msgstr "données de symbole de version"
 
-#: readelf.c:9461
-#, c-format
-msgid "Location lists in .debug_loc section start at 0x%lx\n"
-msgstr "Liste de localisation dans la section .debug_loc qui débute à 0x%lx\n"
+#: readelf.c:6461
+msgid "   0 (*local*)    "
+msgstr "   0 (*local*)    "
+
+#: readelf.c:6465
+msgid "   1 (*global*)   "
+msgstr "   1 (*global*)   "
 
-#: readelf.c:9464
+#: readelf.c:6503 readelf.c:6969
+msgid "version need"
+msgstr "version nécessaire"
+
+#: readelf.c:6513
+msgid "version need aux (2)"
+msgstr "version nécessite aux (2)"
+
+#: readelf.c:6555 readelf.c:7034
+msgid "version def"
+msgstr "définition de version"
+
+#: readelf.c:6575 readelf.c:7049
+msgid "version def aux"
+msgstr "définition de version aux"
+
+#: readelf.c:6606
 #, c-format
 msgid ""
-"Contents of the .debug_loc section:\n"
 "\n"
+"No version information found in this file.\n"
 msgstr ""
-"Contenu de la section .debug_loc:\n"
 "\n"
+"Aucune information de version repérée dans ce fichier.\n"
 
-#: readelf.c:9465
-#, c-format
-msgid "    Offset   Begin    End      Expression\n"
-msgstr "    Décalage Début    Fin      Expression\n"
-
-#: readelf.c:9495
-#, c-format
-msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
-msgstr "Il y a un trou [0x%lx - 0x%lx] dans la section .debug_loc.\n"
-
-#: readelf.c:9498
-#, c-format
-msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
-msgstr "Il y a un chevauchement [0x%lx - 0x%lx] dans la section .debug_loc.\n"
+#: readelf.c:6740
+msgid "Unable to read in dynamic data\n"
+msgstr "Incapable de lire les données dynamiques\n"
 
-#: readelf.c:9512 readelf.c:9837
-#, c-format
-msgid "    %8.8lx <End of list>\n"
-msgstr "    %8.8lx <Fin de liste>\n"
+#: readelf.c:6793
+msgid "Unable to seek to start of dynamic information"
+msgstr "Incapable de repérer le début des informations dynamiques"
 
-#: readelf.c:9540 readelf.c:9854
-msgid " (start == end)"
-msgstr " (début == fin)"
+#: readelf.c:6799
+msgid "Failed to read in number of buckets\n"
+msgstr "Échec de lecture parmi tous les baquets\n"
 
-#: readelf.c:9542 readelf.c:9856
-msgid " (start > end)"
-msgstr " (début > fin)"
+#: readelf.c:6805
+msgid "Failed to read in number of chains\n"
+msgstr "Échec de lecture du nombre de chaînes\n"
 
-#: readelf.c:9566
+#: readelf.c:6825
 #, c-format
 msgid ""
 "\n"
-"The .debug_str section is empty.\n"
+"Symbol table for image:\n"
 msgstr ""
 "\n"
-"La section .debug_str est vide.\n"
+"Table de symbole de l'image:\n"
+
+#: readelf.c:6827
+#, c-format
+msgid "  Num Buc:    Value  Size   Type   Bind Vis      Ndx Name\n"
+msgstr "  Nb  Buc:    Valeur Taille Type   Lien Vis      Ndx Nom\n"
+
+#: readelf.c:6829
+#, c-format
+msgid "  Num Buc:    Value          Size   Type   Bind Vis      Ndx Name\n"
+msgstr "  Nb  Buc:    Valeur         Taille Type   Lien Vis      Ndx Nom\n"
 
-#: readelf.c:9570
+#: readelf.c:6882
 #, c-format
 msgid ""
-"Contents of the .debug_str section:\n"
 "\n"
+"Symbol table '%s' contains %lu entries:\n"
 msgstr ""
-"Contenu de la section .debug_str:\n"
 "\n"
+"Table de symboles « %s » contient %lu entrées:\n"
 
-#: readelf.c:9675
-msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
-msgstr "Seuls les aranges DWARF de version 2 et 3 sont couramment supportés.\n"
-
-#: readelf.c:9679
+#: readelf.c:6886
 #, c-format
-msgid "  Length:                   %ld\n"
-msgstr "  Longueur                  %ld\n"
+msgid "   Num:    Value  Size Type    Bind   Vis      Ndx Name\n"
+msgstr "   Num:    Valeur Tail Type    Lien   Vis      Ndx Nom\n"
 
-#: readelf.c:9680
+#: readelf.c:6888
 #, c-format
-msgid "  Version:                  %d\n"
-msgstr "  Version:                  %d\n"
+msgid "   Num:    Value          Size Type    Bind   Vis      Ndx Name\n"
+msgstr "   Num:    Valeur         Tail Type    Lien   Vis      Ndx Nom\n"
 
-#: readelf.c:9681
-#, c-format
-msgid "  Offset into .debug_info:  %lx\n"
-msgstr "  Décalage dans .debug_info: %lx\n"
+#: readelf.c:6939
+msgid "version data"
+msgstr "données de version"
 
-#: readelf.c:9682
-#, c-format
-msgid "  Pointer Size:             %d\n"
-msgstr "  Taille des pointeurs:     %d\n"
+#: readelf.c:6982
+msgid "version need aux (3)"
+msgstr "version nécessite aux (3)"
 
-#: readelf.c:9683
-#, c-format
-msgid "  Segment Size:             %d\n"
-msgstr "  Taille des segments:      %d\n"
+#: readelf.c:7009
+msgid "bad dynamic symbol"
+msgstr "mauvais symbole dynamique"
 
-#: readelf.c:9685
+#: readelf.c:7073
 #, c-format
 msgid ""
 "\n"
-"    Address  Length\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
 msgstr ""
 "\n"
-"    Longueur d'adresse\n"
+"L'information dynamique des symboles n'est pas disponible pour l'affichage des symboles.\n"
 
-#: readelf.c:9741
+#: readelf.c:7085
 #, c-format
 msgid ""
 "\n"
-"The .debug_ranges section is empty.\n"
+"Histogram for bucket list length (total of %lu buckets):\n"
 msgstr ""
 "\n"
-"La section .debug_ranges est vide.\n"
+"Histogramme de la longueur de la liste des baquets (total de %lu baquets):\n"
 
-#. FIXME: Should we handle this case?
-#: readelf.c:9786
-msgid "Range lists in .debug_info section aren't in ascending order!\n"
-msgstr "Liste des étendues dans la section .debug_info n'est pas en ordre ascendant!\n"
+#: readelf.c:7087
+#, c-format
+msgid " Length  Number     %% of total  Coverage\n"
+msgstr " Long.   Nombre     %% de couverture totale\n"
 
-#: readelf.c:9789
-msgid "No range lists in .debug_info section!\n"
-msgstr "Aucune liste d'étendues dans la section .debug_info!\n"
+#: readelf.c:7092 readelf.c:7108 readelf.c:8031 readelf.c:8223
+msgid "Out of memory"
+msgstr "Mémoire épuisée"
+
+#: readelf.c:7157
+#, c-format
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr ""
+"\n"
+"Segment d'informations dynamiques à l'adresse de décalage 0x%lx contient %d entrées:\n"
 
-#: readelf.c:9792
+#: readelf.c:7160
 #, c-format
-msgid "Range lists in .debug_ranges section start at 0x%lx\n"
-msgstr "Listes d'étendues dans la section .debug_ranges débutent à 0x%lx\n"
+msgid " Num: Name                           BoundTo     Flags\n"
+msgstr " Num: Nom                            Lier à      Fanions\n"
 
-#: readelf.c:9795
+#: readelf.c:7212
 #, c-format
 msgid ""
-"Contents of the .debug_ranges section:\n"
 "\n"
+"Assembly dump of section %s\n"
 msgstr ""
-"Contenu de la section .debug_ranges:\n"
 "\n"
+"Vidange de la section assembleur %s\n"
 
-#: readelf.c:9796
+#: readelf.c:7233
 #, c-format
-msgid "    Offset   Begin    End\n"
-msgstr "    Décalage Début    Fin\n"
+msgid ""
+"\n"
+"Section '%s' has no data to dump.\n"
+msgstr ""
+"\n"
+"La section « %s » n'a pas de données à être videngé.\n"
 
-#: readelf.c:9820
+#: readelf.c:7238
 #, c-format
-msgid "There is a hole [0x%lx - 0x%lx] in .debug_ranges section.\n"
-msgstr "Il y a un trou [0x%lx - 0x%lx] dans la section .debug_ranges.\n"
+msgid ""
+"\n"
+"Hex dump of section '%s':\n"
+msgstr ""
+"\n"
+"Vidange hexadécimale de la section « %s »:\n"
 
-#: readelf.c:9823
+#: readelf.c:7359
 #, c-format
-msgid "There is an overlap [0x%lx - 0x%lx] in .debug_ranges section.\n"
-msgstr "Il y a un trou [0x%lx - 0x%lx] dans la section .debug_ranges.\n"
+msgid "skipping invalid relocation offset 0x%lx in section %s\n"
+msgstr "escamotage invalide de relocalisation du décalage 0x%lx dans la section %s\n"
 
-#: readelf.c:10017
+#: readelf.c:7376
 #, c-format
-msgid "The section %s contains:\n"
-msgstr "La section %s contient:\n"
+msgid "skipping unexpected symbol type %s in relocation in section .rela%s\n"
+msgstr "escamotage inattendu du type de symbole %s dans la section de relocalisation .rela%s\n"
 
-#: readelf.c:10663
+#: readelf.c:7402
 #, c-format
-msgid "unsupported or unknown DW_CFA_%d\n"
-msgstr "DW_CFA_%d non supporté ou inconnu\n"
+msgid "skipping unexpected symbol type %s in relocation in section .rela.%s\n"
+msgstr "escamotage inattendu du type de symbole %s dans la section de relocalisation .rela%s\n"
 
-#: readelf.c:10688
+#: readelf.c:7435
 #, c-format
-msgid "Displaying the debug contents of section %s is not yet supported.\n"
-msgstr "L'affichage du contenu de la section de débug %s n'est pas encore supporté.\n"
+msgid "%s section data"
+msgstr "données de section %s"
 
-#: readelf.c:10732
+#: readelf.c:7472
 #, c-format
 msgid ""
 "\n"
@@ -4426,29 +4504,44 @@ msgstr ""
 "\n"
 "La section « %s » n'a aucune donnée de débug.\n"
 
-#: readelf.c:10746
-msgid "debug section data"
-msgstr "données de la section debug"
-
-#: readelf.c:10765
+#: readelf.c:7498
 #, c-format
 msgid "Unrecognized debug section: %s\n"
 msgstr "Section de débug non reconnue: %s\n"
 
-#: readelf.c:10800
+#: readelf.c:7533
 #, c-format
 msgid "Section %d was not dumped because it does not exist!\n"
 msgstr "La section %d n'a pas été vidangée parce qu'inexistante!\n"
 
-#: readelf.c:10872 readelf.c:11236
+#: readelf.c:7791
+msgid "attributes"
+msgstr "attributs"
+
+#: readelf.c:7809
+#, c-format
+msgid "ERROR: Bad section length (%d > %d)\n"
+msgstr "ERREUR: longueur erronée de section (%d > %d)\n"
+
+#: readelf.c:7830
+#, c-format
+msgid "ERROR: Bad subsection length (%d > %d)\n"
+msgstr "EREUR: longueur erronée de la sous-section (%d > %d)\n"
+
+#: readelf.c:7880
+#, c-format
+msgid "Unknown format '%c'\n"
+msgstr "Format inconnu « %c »\n"
+
+#: readelf.c:7936 readelf.c:8304
 msgid "liblist"
 msgstr "liblist"
 
-#: readelf.c:10961
+#: readelf.c:8025
 msgid "options"
 msgstr "options"
 
-#: readelf.c:10991
+#: readelf.c:8055
 #, c-format
 msgid ""
 "\n"
@@ -4457,15 +4550,15 @@ msgstr ""
 "\n"
 "Section « %s » contient %d entrées:\n"
 
-#: readelf.c:11152
+#: readelf.c:8216
 msgid "conflict list found without a dynamic symbol table"
 msgstr "conflit de liste repéré sans symbole de table dynamique"
 
-#: readelf.c:11168 readelf.c:11182
+#: readelf.c:8232 readelf.c:8246
 msgid "conflict"
 msgstr "conflit"
 
-#: readelf.c:11192
+#: readelf.c:8256
 #, c-format
 msgid ""
 "\n"
@@ -4474,15 +4567,15 @@ msgstr ""
 "\n"
 "La section « .conflict » contient %lu entrées:\n"
 
-#: readelf.c:11194
+#: readelf.c:8258
 msgid "  Num:    Index       Value  Name"
 msgstr "  Nombre: Index       Valeur Nom"
 
-#: readelf.c:11243
+#: readelf.c:8311
 msgid "liblist string table"
 msgstr "table de chaînes liblist"
 
-#: readelf.c:11252
+#: readelf.c:8321
 #, c-format
 msgid ""
 "\n"
@@ -4491,90 +4584,90 @@ msgstr ""
 "\n"
 "Liste de libraire de la section « %s » contenant %lu entrées:\n"
 
-#: readelf.c:11303
+#: readelf.c:8374
 msgid "NT_AUXV (auxiliary vector)"
 msgstr "NT_AUXV (vecteur auxiliaire)"
 
-#: readelf.c:11305
+#: readelf.c:8376
 msgid "NT_PRSTATUS (prstatus structure)"
 msgstr "NT_PRSTATUS (structure prstatus)"
 
-#: readelf.c:11307
+#: readelf.c:8378
 msgid "NT_FPREGSET (floating point registers)"
 msgstr "NT_FPREGSET (régistres en virgule flottante)"
 
-#: readelf.c:11309
+#: readelf.c:8380
 msgid "NT_PRPSINFO (prpsinfo structure)"
 msgstr "NT_PRPSINFO (structure prpsinfo)"
 
-#: readelf.c:11311
+#: readelf.c:8382
 msgid "NT_TASKSTRUCT (task structure)"
 msgstr "NT_TASKSTRUCT (structure de taches)"
 
-#: readelf.c:11313
+#: readelf.c:8384
 msgid "NT_PRXFPREG (user_xfpregs structure)"
 msgstr "NT_PRXFPREG (structure user_xfpregs)"
 
-#: readelf.c:11315
+#: readelf.c:8386
 msgid "NT_PSTATUS (pstatus structure)"
 msgstr "NT_PSTATUS (structure pstatus)"
 
-#: readelf.c:11317
+#: readelf.c:8388
 msgid "NT_FPREGS (floating point registers)"
 msgstr "NT_FPREGS (registres en virgule flottante)"
 
-#: readelf.c:11319
+#: readelf.c:8390
 msgid "NT_PSINFO (psinfo structure)"
 msgstr "NT_PSINFO (structure psinfo)"
 
-#: readelf.c:11321
+#: readelf.c:8392
 msgid "NT_LWPSTATUS (lwpstatus_t structure)"
 msgstr "NT_LWPSTATUS (structure lwpstatus_t)"
 
-#: readelf.c:11323
+#: readelf.c:8394
 msgid "NT_LWPSINFO (lwpsinfo_t structure)"
 msgstr "NT_LWPSINFO (structure lwpsinfo_t)"
 
-#: readelf.c:11325
+#: readelf.c:8396
 msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
 msgstr "NT_WIN32PSTATUS (structure win32_pstatus)"
 
-#: readelf.c:11333
+#: readelf.c:8404
 msgid "NT_VERSION (version)"
 msgstr "NT_VERSION (version)"
 
-#: readelf.c:11335
+#: readelf.c:8406
 msgid "NT_ARCH (architecture)"
 msgstr "NT_ARCH (architecture)"
 
-#: readelf.c:11340 readelf.c:11362
+#: readelf.c:8411 readelf.c:8433
 #, c-format
 msgid "Unknown note type: (0x%08x)"
 msgstr "Type de note inconnu: (0x%08x)"
 
 #. NetBSD core "procinfo" structure.
-#: readelf.c:11352
+#: readelf.c:8423
 msgid "NetBSD procinfo structure"
 msgstr "structure proinfo NetBSD"
 
-#: readelf.c:11379 readelf.c:11393
+#: readelf.c:8450 readelf.c:8464
 msgid "PT_GETREGS (reg structure)"
 msgstr "PT_GETREGS (structure reg)"
 
-#: readelf.c:11381 readelf.c:11395
+#: readelf.c:8452 readelf.c:8466
 msgid "PT_GETFPREGS (fpreg structure)"
 msgstr "PT_GETFPPREGS (structure fpreg)"
 
-#: readelf.c:11401
+#: readelf.c:8472
 #, c-format
 msgid "PT_FIRSTMACH+%d"
 msgstr "PT_FIRSTMACH+%d"
 
-#: readelf.c:11447
+#: readelf.c:8518
 msgid "notes"
 msgstr "notes"
 
-#: readelf.c:11453
+#: readelf.c:8524
 #, c-format
 msgid ""
 "\n"
@@ -4583,27 +4676,27 @@ msgstr ""
 "\n"
 "Notes au décalage 0x%08lx de longueur 0x%08lx:\n"
 
-#: readelf.c:11455
+#: readelf.c:8526
 #, c-format
 msgid "  Owner\t\tData size\tDescription\n"
 msgstr "  Propriétaire\t\tTaille de données\tDescription\n"
 
-#: readelf.c:11474
+#: readelf.c:8545
 #, c-format
-msgid "corrupt note found at offset %x into core notes\n"
-msgstr "note corrompue repérée au décalage %x dans les notes du core\n"
+msgid "corrupt note found at offset %lx into core notes\n"
+msgstr "note corrompue repérée au décalage %lx dans les notes du core\n"
 
-#: readelf.c:11476
+#: readelf.c:8547
 #, c-format
-msgid " type: %x, namesize: %08lx, descsize: %08lx\n"
-msgstr " type: %x, taille de noms: %08lx, taille de descriptions: %08lx\n"
+msgid " type: %lx, namesize: %08lx, descsize: %08lx\n"
+msgstr " type: %lx, taille des noms: %08lx, taille de descriptions: %08lx\n"
 
-#: readelf.c:11574
+#: readelf.c:8645
 #, c-format
 msgid "No note segments present in the core file.\n"
 msgstr "Aucun note de segment présent dans le fichier core.\n"
 
-#: readelf.c:11653
+#: readelf.c:8726
 msgid ""
 "This instance of readelf has been built without support for a\n"
 "64 bit data type and so it cannot read 64 bit ELF files.\n"
@@ -4611,12 +4704,12 @@ msgstr ""
 "Cette instance de readelf a été contstruite sans soutien pour des\n"
 "types de données de 64 bits et ne peut donc lire des fichiers de 64 bits ELF.\n"
 
-#: readelf.c:11700 readelf.c:12059
+#: readelf.c:8775 readelf.c:9119
 #, c-format
 msgid "%s: Failed to read file header\n"
 msgstr "%s: échec de lecture de l'en-tête du fichier\n"
 
-#: readelf.c:11713
+#: readelf.c:8788
 #, c-format
 msgid ""
 "\n"
@@ -4625,68 +4718,68 @@ msgstr ""
 "\n"
 "Fichier: %s\n"
 
-#: readelf.c:11876 readelf.c:11897 readelf.c:11934 readelf.c:12014
+#: readelf.c:8936 readelf.c:8957 readelf.c:8994 readelf.c:9074
 #, c-format
 msgid "%s: failed to read archive header\n"
 msgstr "%s: échec de lecture de l'en-tête de l'archive\n"
 
-#: readelf.c:11887
+#: readelf.c:8947
 #, c-format
 msgid "%s: failed to skip archive symbol table\n"
 msgstr "%s: échec d'escamotage de la table de symboles dans l'archive\n"
 
-#: readelf.c:11919
+#: readelf.c:8979
 #, c-format
 msgid "%s: failed to read string table\n"
 msgstr "%s: échec de lecture de la table de chaînes\n"
 
-#: readelf.c:11955
+#: readelf.c:9015
 #, c-format
 msgid "%s: invalid archive string table offset %lu\n"
 msgstr "%s: chaîne de décalage %lu dans la table est invalide dans l'archive\n"
 
-#: readelf.c:11971
+#: readelf.c:9031
 #, c-format
 msgid "%s: bad archive file name\n"
 msgstr "%s: nom erroné du fichier d'archive\n"
 
-#: readelf.c:12003
+#: readelf.c:9063
 #, c-format
 msgid "%s: failed to seek to next archive header\n"
 msgstr "%s: échec de repérage de la prochaine en-tête d'archive\n"
 
-#: readelf.c:12037
+#: readelf.c:9097
 #, c-format
 msgid "'%s': No such file\n"
 msgstr "'%s': pas de fichier comme tel\n"
 
-#: readelf.c:12039
+#: readelf.c:9099
 #, c-format
 msgid "Could not locate '%s'.  System error message: %s\n"
 msgstr "Ne peut retrouver '%s'. Message d'erreur système: %s\n"
 
-#: readelf.c:12046
+#: readelf.c:9106
 #, c-format
 msgid "'%s' is not an ordinary file\n"
 msgstr "'%s' n'est pas un fichier ordinaire\n"
 
-#: readelf.c:12053
+#: readelf.c:9113
 #, c-format
 msgid "Input file '%s' is not readable.\n"
 msgstr "Fichier d'entrée %s n'est pas lisible.\n"
 
-#: rename.c:127
+#: rename.c:129
 #, c-format
 msgid "%s: cannot set time: %s"
 msgstr "%s: ne peut initialisé l'heure: %s"
 
 #. We have to clean up here.
-#: rename.c:162 rename.c:200
+#: rename.c:164 rename.c:202
 #, c-format
 msgid "unable to rename '%s' reason: %s"
 msgstr "incapable de renommer '%s' pour la raison suivante: %s"
 
-#: rename.c:208
+#: rename.c:210
 #, c-format
 msgid "unable to copy file '%s' reason: %s"
 msgstr "incapable de copier le fichier '%s' pour la raisoin suivante: %s"
@@ -5068,17 +5161,17 @@ msgstr "
 msgid "can't open `%s' for output: %s"
 msgstr "ne peut ouvrir « %s » pour la sortie: %s"
 
-#: size.c:81
+#: size.c:83
 #, c-format
 msgid " Displays the sizes of sections inside binary files\n"
 msgstr "Afficher les tailles des sections à l'intérieur des fichiers binaires\n"
 
-#: size.c:82
+#: size.c:84
 #, c-format
 msgid " If no input file(s) are specified, a.out is assumed\n"
 msgstr "Aucune fichier spécifié à l'entrée a.out est assumé\n"
 
-#: size.c:83
+#: size.c:85
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5086,6 +5179,7 @@ msgid ""
 "  -o|-d|-x  --radix={8|10|16}         Display numbers in octal, decimal or hex\n"
 "  -t        --totals                  Display the total sizes (Berkeley only)\n"
 "            --target=<bfdname>        Set the binary file format\n"
+"            @<file>                   Read options from <file>\n"
 "  -h        --help                    Display this information\n"
 "  -v        --version                 Display the program's version\n"
 "\n"
@@ -5095,16 +5189,17 @@ msgstr ""
 "  -o|-d|-h  --radix={8|10|16}         afficher les nombres en octal, décimal ou hexadécimal\n"
 "  -t        --totals                  afficher les tailles totales (Berkeley seulement)\n"
 "            --target=<nombfd>         sélectionner le format de fichier binaire\n"
+"           @<fichier>                 lire les options à partir du <fichier>\n"
 "  -h        --help                    afficher l'aide-mémoire\n"
 "  -V        --version                 afficher le nom et la version du logiciel\n"
 "\n"
 
-#: size.c:153
+#: size.c:158
 #, c-format
 msgid "invalid argument to --format: %s"
 msgstr "argument invalide pour --format: %s"
 
-#: size.c:180
+#: size.c:185
 #, c-format
 msgid "Invalid radix: %s\n"
 msgstr "Base numérique invalide: %s\n"
@@ -5121,6 +5216,7 @@ msgid ""
 "  -q --quick       (Obsolete - ignored)\n"
 "  -n --noprescan   Do not perform a scan to convert commons into defs\n"
 "  -d --debug       Display information about what is being done\n"
+"  @<file>          Read options from <file>\n"
 "  -h --help        Display this information\n"
 "  -v --version     Print the program's version number\n"
 msgstr ""
@@ -5128,10 +5224,11 @@ msgstr ""
 "  -q --quick       (obsolète - ignoré)\n"
 "  -n --noprescan   ne pas faire de scrutation pour convertir les commun en defs\n"
 "  -d --debug       afficher de l'information à propos de ce qui a été fait\n"
+"  @<fichier>       lire les options à partir du <fichier>\n"
 "  -h --help        afficher l'aide-mémoire\n"
 "  -V --version     afficher le nom et la version du logiciel\n"
 
-#: srconv.c:1866
+#: srconv.c:1869
 #, c-format
 msgid "unable to open output file %s"
 msgstr "incapable d'ouvrir le fichier de sortie %s"
@@ -5269,22 +5366,22 @@ msgstr "Varargs inattendu de d
 msgid "Unrecognized demangled builtin type\n"
 msgstr "type de construit de démutilation non reconnu\n"
 
-#: strings.c:206
+#: strings.c:218
 #, c-format
 msgid "invalid number %s"
 msgstr "nombre invalide %s"
 
-#: strings.c:643
+#: strings.c:700
 #, c-format
 msgid "invalid integer argument %s"
 msgstr "argument en valeur entière invalide %s"
 
-#: strings.c:652
+#: strings.c:709
 #, c-format
 msgid " Display printable strings in [file(s)] (stdin by default)\n"
 msgstr "Afficher les chaîne imprimables des [fichier] (stdin par défaut)\n"
 
-#: strings.c:653
+#: strings.c:710
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5297,6 +5394,7 @@ msgid ""
 "  -T --target=<BFDNAME>     Specify the binary file format\n"
 "  -e --encoding={s,S,b,l,B,L} Select character size and endianness:\n"
 "                            s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit\n"
+"  @<file>                   Read options from <file>\n"
 "  -h --help                 Display this information\n"
 "  -v --version              Print the program's version number\n"
 msgstr ""
@@ -5311,15 +5409,16 @@ msgstr ""
 "  -e --encoding={s,S,b,l,B,L} sélectionner la taille des caractères et le\n"
 "                              système de poids fort ou faible:\n"
 "                              s = 8-bits, {b,l} = 16-bits, {B,L} = 32-bits\n"
+"  @<fichier>                  lire les options à partir du <fichier>\n"
 "  -h --help                   afficher l'aide-mémoire\n"
 "  -v --version                afficher le nom et la version du logiciel\n"
 
-#: sysdump.c:649
+#: sysdump.c:642
 #, c-format
 msgid "Print a human readable interpretation of a SYSROFF object file\n"
 msgstr "Afficher dans un format humainement lisible l'interprétation du fichier objet SYSROFF\n"
 
-#: sysdump.c:650
+#: sysdump.c:643
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5330,7 +5429,7 @@ msgstr ""
 "  -h --help        afficher l'aide-mémoire\n"
 "  -v --version     afficher le nom et la version du logiciel\n"
 
-#: sysdump.c:715
+#: sysdump.c:710
 #, c-format
 msgid "cannot open input file %s"
 msgstr "ne peut ouvrir le fichier d'entrée %s"
@@ -5442,15 +5541,17 @@ msgstr "     --yydebug                 activer le mode de d
 #, c-format
 msgid ""
 "  -r                           Ignored for compatibility with rc\n"
+"  @<file>                      Read options from <file>\n"
 "  -h --help                    Print this help message\n"
 "  -V --version                 Print version information\n"
 msgstr ""
 "Les options sont:\n"
 "   -r                        ignoré pour la compatibilité avec rc\n"
+"  @<fichier>                 lire les options à partir du <fichier>\n"
 "   -h --help                 afficher l'aide-mémoire\n"
 "   -V --version              afficher le nom et la version du logiciel\n"
 
-#: windres.c:664
+#: windres.c:665
 #, c-format
 msgid ""
 "FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
@@ -5462,20 +5563,20 @@ msgstr ""
 "L'entrée par défaut se fait à partir de stdin, par défaut pour rc.\n"
 "La sortie par défaut est stdout, par défaut pour rc.\n"
 
-#: windres.c:800
+#: windres.c:803
 msgid "invalid option -f\n"
 msgstr "option invalide -f\n"
 
-#: windres.c:805
+#: windres.c:808
 msgid "No filename following the -fo option.\n"
 msgstr "Pas de nom de fichier après l'option -fo.\n"
 
-#: windres.c:863
+#: windres.c:866
 #, c-format
 msgid "Option -I is deprecated for setting the input format, please use -J instead.\n"
 msgstr "L'option -I est dépréciée pour fixer le format d'entrée, svp utiliser -J à la place.\n"
 
-#: windres.c:981
+#: windres.c:984
 msgid "no resources"
 msgstr "aucune ressource"
 
@@ -5494,6 +5595,71 @@ msgstr "stab_int_type: mauvaise taille %u"
 msgid "%s: warning: unknown size for field `%s' in struct"
 msgstr "%s: AVERTISSEMENT: taille inconnue pour le champ « %s » dans le struct"
 
+#~ msgid "flags"
+#~ msgstr "fanions"
+
+#~ msgid "debug_str section data"
+#~ msgstr "données de la section debug_str"
+
+#~ msgid "debug_loc section data"
+#~ msgstr "données de la section debug_loc"
+
+#~ msgid "debug_range section data"
+#~ msgstr "données de la section debug_range de mise au point"
+
+#~ msgid "%s: skipping unexpected symbol type %s in relocation in section .rela%s\n"
+#~ msgstr "%s: escamotage inattendu du type de symbole %s dans la section relocalisation .rela%s\n"
+
+#~ msgid "debug_abbrev section data"
+#~ msgstr "données de la section debug_abbrev"
+
+#~ msgid "extracting information from .debug_info section"
+#~ msgstr "extraction d'information à partir de la section .debug_info"
+
+#~ msgid ""
+#~ "\n"
+#~ "The .debug_loc section is empty.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "La section .debug_loc est vide.\n"
+
+#~ msgid ""
+#~ "Contents of the .debug_loc section:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Contenu de la section .debug_loc:\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Contents of the .debug_str section:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Contenu de la section .debug_str:\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "The .debug_ranges section is empty.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "La section .debug_ranges est vide.\n"
+
+#~ msgid ""
+#~ "Contents of the .debug_ranges section:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Contenu de la section .debug_ranges:\n"
+#~ "\n"
+
+#~ msgid "There is a hole [0x%lx - 0x%lx] in .debug_ranges section.\n"
+#~ msgstr "Il y a un trou [0x%lx - 0x%lx] dans la section .debug_ranges.\n"
+
+#~ msgid "There is an overlap [0x%lx - 0x%lx] in .debug_ranges section.\n"
+#~ msgstr "Il y a un trou [0x%lx - 0x%lx] dans la section .debug_ranges.\n"
+
+#~ msgid "debug section data"
+#~ msgstr "données de la section debug"
+
 #~ msgid ""
 #~ "\n"
 #~ "<member %s>\n"
index 708fdc3..9f654e3 100644 (file)
@@ -1,43 +1,45 @@
-# Translation of binutils-2.15.96.po to Russian
-# Translation of binutils-2.14rel030712.ru.po to Russian
-# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+# Translation of binutils-2.16.93.po to Russian
+# Copyright (C) 2003, 2005, 2006 Free Software Foundation, Inc.
 # This file is distributed under the same license as the binutils package.
-# Pavel Maryanov <acid_jack@ukr.net>, 2003, 2005.
 #
+# Pavel Maryanov <acid_jack@ukr.net>, 2003, 2005, 2006.
 msgid ""
 msgstr ""
-"Project-Id-Version: binutils-2.15.96\n"
+"Project-Id-Version: binutils-2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-03 21:03+1030\n"
-"PO-Revision-Date: 2005-03-10 13:34+0200\n"
+"POT-Creation-Date: 2005-10-25 09:14+0930\n"
+"PO-Revision-Date: 2006-05-22 14:32+0300\n"
 "Last-Translator: Pavel Maryanov <acid_jack@ukr.net>\n"
 "Language-Team: Russian <ru@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=KOI8-R\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.9\n"
+"X-Generator: KBabel 1.11.2\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: addr2line.c:73
+#: addr2line.c:76
 #, c-format
 msgid "Usage: %s [option(s)] [addr(s)]\n"
 msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] [ÁÄÒÅÓ(Á)]\n"
 
-#: addr2line.c:74
+#: addr2line.c:77
 #, c-format
 msgid " Convert addresses into line number/file name pairs.\n"
 msgstr "ëÏÎ×ÅÒÔÉÒÕÅÔ ÁÄÒÅÓÁ × ÐÁÒÙ ÎÏÍÅÒ_ÓÔÒÏËÉ/ÉÍÑ_ÆÁÊÌÁ.\n"
 
-#: addr2line.c:75
+#: addr2line.c:78
 #, c-format
 msgid " If no addresses are specified on the command line, they will be read from stdin\n"
 msgstr " åÓÌÉ ÁÄÒÅÓÁ ÎÅ ÕËÁÚÁÎÙ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ, ÏÎÉ ÂÕÄÕÔ ÐÒÏÞÉÔÁÎÙ ÉÚ stdin\n"
 
-#: addr2line.c:76
+#: addr2line.c:79
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                Read options from <file>\n"
 "  -b --target=<bfdname>  Set the binary file format\n"
 "  -e --exe=<executable>  Set the input file name (default is a.out)\n"
+"  -i --inlines\t\t Unwind inlined functions\n"
 "  -s --basenames         Strip directory names\n"
 "  -f --functions         Show function names\n"
 "  -C --demangle[=style]  Demangle function names\n"
@@ -46,6 +48,7 @@ msgid ""
 "\n"
 msgstr ""
 " ïÐÃÉÉ:\n"
+"  @<ÆÁÊÌ>                þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
 "  -b --target=<bfd-ÉÍÑ>  õÓÔÁÎÏ×ÉÔØ ÆÏÒÍÁÔ Ä×ÏÉÞÎÏÇÏ ÆÁÊÌÁ\n"
 "  -e --exe=<exe'ÛÎÉË>    õÓÔÁÎÏ×ÉÔØ ÉÍÑ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ (ÐÏ ÕÍÏÌÞÁÎÉÀ ÉÓÐÏÌØÚÕÅÔÓÑ a.out)\n"
 "  -s --basenames         ÷ÙÄÅÌÉÔØ ÉÍÅÎÁ ËÁÔÁÌÏÇÏ×\n"
@@ -55,212 +58,219 @@ msgstr ""
 "  -v --version           ðÏËÁÚÁÔØ ×ÅÒÓÉÀ ÐÒÏÇÒÁÍÍÙ\n"
 "\n"
 
-#: addr2line.c:88 ar.c:263 coffdump.c:467 nlmconv.c:1110 objcopy.c:478
-#: objcopy.c:512 readelf.c:2631 size.c:99 srconv.c:1731 strings.c:667
-#: sysdump.c:655 windres.c:672
+#: addr2line.c:93 ar.c:263 coffdump.c:466 nlmconv.c:1113 objcopy.c:486
+#: objcopy.c:520 readelf.c:2622 size.c:102 srconv.c:1732 strings.c:725
+#: sysdump.c:648 windres.c:673
 #, c-format
 msgid "Report bugs to %s\n"
-msgstr "ïÔÞÅÔÙ Ï ÏÛÉÂËÁÈ ÏÔÐÒÁ×ÌÑÊÔÅ × %s\n"
+msgstr "ïÔÞ£ÔÙ Ï ÏÛÉÂËÁÈ ÏÔÐÒÁ×ÌÑÊÔÅ × %s\n"
 
-#: addr2line.c:241
+#: addr2line.c:253
 #, c-format
 msgid "%s: can not get addresses from archive"
 msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÁÄÒÅÓÁ ÉÚ ÁÒÈÉ×Á"
 
-#: addr2line.c:311 nm.c:1519 objdump.c:2848
+#: addr2line.c:325 nm.c:1523 objdump.c:3033
 #, c-format
 msgid "unknown demangling style `%s'"
 msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÔÉÌØ ÄÅËÏÄÉÒÏ×ÁÎÉÑ `%s'"
 
-#: ar.c:205
+#: ar.c:203
 #, c-format
 msgid "no entry %s in archive\n"
 msgstr "× ÁÒÈÉ×Å ÎÅÔ ÐÕÎËÔÁ %s\n"
 
-#: ar.c:221
+#: ar.c:219
 #, c-format
 msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
 msgstr ""
 "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ ÜÍÕÌÑÃÉÉ] [-]{dmpqrstx}[abcfilNoPsSuvV] [ÉÍÑ_ÞÌÅÎÁ]\n"
 "                  [ÓÞÅÔ] ÆÁÊÌ_ÁÒÈÉ×Á ÆÁÊÌ...\n"
 
-#: ar.c:224
+#: ar.c:222
 #, c-format
 msgid "       %s -M [<mri-script]\n"
 msgstr "               %s -M [<mri-ÓËÒÉÐÔ]\n"
 
-#: ar.c:225
+#: ar.c:223
 #, c-format
 msgid " commands:\n"
 msgstr " ËÏÍÁÎÄÙ:\n"
 
-#: ar.c:226
+#: ar.c:224
 #, c-format
 msgid "  d            - delete file(s) from the archive\n"
 msgstr "  d            - ÕÄÁÌÅÎÉÅ ÆÁÊÌÏ× ÉÚ ÁÒÈÉ×Á\n"
 
-#: ar.c:227
+#: ar.c:225
 #, c-format
 msgid "  m[ab]        - move file(s) in the archive\n"
 msgstr "  m[ab]        - ÐÅÒÅÍÅÝÅÎÉÅ ÆÁÊÌÏ× × ÁÒÈÉ×\n"
 
-#: ar.c:228
+#: ar.c:226
 #, c-format
 msgid "  p            - print file(s) found in the archive\n"
 msgstr "  p            - ×Ù×ÏÄ ÆÁÊÌÏ×, ÎÁÊÄÅÎÎÙÈ × ÁÒÈÉ×Å\n"
 
-#: ar.c:229
+#: ar.c:227
 #, c-format
 msgid "  q[f]         - quick append file(s) to the archive\n"
 msgstr "  q[f]         - ÂÙÓÔÒÏÅ ÄÏÂÁ×ÌÅÎÉÅ ÆÁÊÌÏ× × ÁÒÈÉ×\n"
 
-#: ar.c:230
+#: ar.c:228
 #, c-format
 msgid "  r[ab][f][u]  - replace existing or insert new file(s) into the archive\n"
 msgstr "  r[ab][f][u]  - ÚÁÍÅÎÁ ÓÕÝÅÓÔ×ÕÀÝÉÈ ÉÌÉ ×ÓÔÁ×ËÁ ÎÏ×ÙÈ ÆÁÊÌÏ× × ÁÒÈÉ×\n"
 
-#: ar.c:231
+#: ar.c:229
 #, c-format
 msgid "  t            - display contents of archive\n"
 msgstr "  t            - ÏÔÏÂÒÁÖÅÎÉÅ ÓÏÄÅÒÖÉÍÏÇÏ ÁÒÈÉ×Á\n"
 
-#: ar.c:232
+#: ar.c:230
 #, c-format
 msgid "  x[o]         - extract file(s) from the archive\n"
 msgstr "  x[o]         - ÉÚ×ÌÅÞÅÎÉÅ ÆÁÊÌÏ× ÉÚ ÁÒÈÉ×Á\n"
 
-#: ar.c:233
+#: ar.c:231
 #, c-format
 msgid " command specific modifiers:\n"
 msgstr " ÏÓÏÂÙÅ ÍÏÄÉÆÉËÁÔÏÒÙ ÄÌÑ ËÏÍÁÎÄ:\n"
 
-#: ar.c:234
+#: ar.c:232
 #, c-format
 msgid "  [a]          - put file(s) after [member-name]\n"
 msgstr "  [a]          - ÒÁÚÍÅÝÅÎÉÅ ÆÁÊÌÏ× ÐÏÓÌÅ [ÉÍÅÎÉ_ÞÌÅÎÁ]\n"
 
-#: ar.c:235
+#: ar.c:233
 #, c-format
 msgid "  [b]          - put file(s) before [member-name] (same as [i])\n"
 msgstr "  [b]          - ÒÁÚÍÅÝÅÎÉÅ ÆÁÊÌÏ× ÄÏ [ÉÍÅÎÉ_ÞÌÅÎÁ] (ÔÏ ÖÅ, ÞÔÏ É [i])\n"
 
-#: ar.c:236
+#: ar.c:234
 #, c-format
 msgid "  [N]          - use instance [count] of name\n"
 msgstr "  [N]          - ÉÓÐÏÌØÚÏ×ÁÎÉÅ [ÓÞÅÔÁ], ËÁË ×ÁÒÉÁÎÔÁ ÉÍÅÎÉ\n"
 
-#: ar.c:237
+#: ar.c:235
 #, c-format
 msgid "  [f]          - truncate inserted file names\n"
 msgstr "  [f]          - ÏÂÒÅÚÁÎÉÅ ÉÍÅΠ×ÓÔÁ×ÌÅÎÎÙÈ ÆÁÊÌÏ×\n"
 
-#: ar.c:238
+#: ar.c:236
 #, c-format
 msgid "  [P]          - use full path names when matching\n"
 msgstr "  [P]          - ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÐÏÌÎÙÈ ÐÕÔÅ×ÙÈ ÉÍÅΠÐÒÉ ÓÏÐÏÓÔÁ×ÌÅÎÉÉ\n"
 
-#: ar.c:239
+#: ar.c:237
 #, c-format
 msgid "  [o]          - preserve original dates\n"
 msgstr "  [o]          - ÓÏÈÒÁÎÅÎÉÅ ÉÓÈÏÄÎÙÈ ÄÁÔ\n"
 
-#: ar.c:240
+#: ar.c:238
 #, c-format
 msgid "  [u]          - only replace files that are newer than current archive contents\n"
 msgstr "  [u]          - ÚÁÍÅÎÁ ÔÏÌØËÏ ÆÁÊÌÏ× ÂÏÌÅÅ ÎÏ×ÙÈ, ÞÅÍ ÔÅËÕÝÅÅ ÓÏÄÅÒÖÉÍÏÅ ÁÒÈÉ×Á\n"
 
-#: ar.c:241
+#: ar.c:239
 #, c-format
 msgid " generic modifiers:\n"
 msgstr " ÏÂÙÞÎÙÅ ÍÏÄÉÆÉËÁÔÏÒÙ:\n"
 
-#: ar.c:242
+#: ar.c:240
 #, c-format
 msgid "  [c]          - do not warn if the library had to be created\n"
 msgstr "  [c]          - ÎÅ ÐÒÅÄÕÐÒÅÖÄÁÔØ, ÅÓÌÉ ÄÏÌÖÎÁ ÂÙÔØ ÓÏÚÄÁÎÁ ÂÉÂÌÉÏÔÅËÁ\n"
 
-#: ar.c:243
+#: ar.c:241
 #, c-format
 msgid "  [s]          - create an archive index (cf. ranlib)\n"
 msgstr "  [s]          - ÓÏÚÄÁÎÉÅ ÉÎÄÅËÓÁ ÁÒÈÉ×Á (cf. ranlib)\n"
 
-#: ar.c:244
+#: ar.c:242
 #, c-format
 msgid "  [S]          - do not build a symbol table\n"
 msgstr "  [S]          - ÎÅ ÓÏÚÄÁ×ÁÔØ ÔÁÂÌÉÃÕ ÓÉÍ×ÏÌÏ×\n"
 
-#: ar.c:245
+#: ar.c:243
 #, c-format
 msgid "  [v]          - be verbose\n"
 msgstr "  [v]          - ÐÏÄÒÏÂÎÙÊ ÒÅÖÉÍ\n"
 
-#: ar.c:246
+#: ar.c:244
 #, c-format
 msgid "  [V]          - display the version number\n"
 msgstr "  [V]          - ×Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ\n"
 
-#: ar.c:253
+#: ar.c:245
+#, c-format
+msgid "  @<file>      - read options from <file>\n"
+msgstr "  @<file>      - ÞÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
+
+#: ar.c:252
 #, c-format
 msgid "Usage: %s [options] archive\n"
 msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] ÁÒÈÉ×\n"
 
-#: ar.c:254
+#: ar.c:253
 #, c-format
 msgid " Generate an index to speed access to archives\n"
 msgstr " óÏÚÄÁÅÔ ÉÎÄÅËÓ ÄÌÑ Õ×ÅÌÉÞÅÎÉÑ ÓËÏÒÏÓÔÉ ÄÏÓÔÕÐÁ Ë ÁÒÈÉ×ÁÍ\n"
 
-#: ar.c:255
+#: ar.c:254
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                      Read options from <file>\n"
 "  -h --help                    Print this help message\n"
 "  -V --version                 Print version information\n"
 msgstr ""
 " ïÐÃÉÉ:\n"
+"  @<ÆÁÊÌ>                      þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
 "  -h --help                    ÷Ù×ÏÄ ÓÐÒÁ×ÏÞÎÏÇÏ ÓÏÏÂÝÅÎÉÑ\n"
 "  -V --version                 ÷Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ Ï ×ÅÒÓÉÉ\n"
 
-#: ar.c:483
+#: ar.c:485
 msgid "two different operation options specified"
 msgstr "ÕËÁÚÁÎÙ ÏÐÃÉÉ ÄÌÑ Ä×ÕÈ ÒÁÚÌÉÞÎÙÈ ÏÐÅÒÁÃÉÊ"
 
-#: ar.c:558
+#: ar.c:560
 #, c-format
 msgid "illegal option -- %c"
 msgstr "ÎÅ×ÅÒÎÁÑ ÏÐÃÉÑ -- %c"
 
-#: ar.c:604
+#: ar.c:606
 msgid "no operation specified"
 msgstr "ÏÐÅÒÁÃÉÑ ÎÅ ÕËÁÚÁÎÁ"
 
-#: ar.c:607
+#: ar.c:609
 msgid "`u' is only meaningful with the `r' option."
 msgstr "`u' ÉÍÅÅÔ ÚÎÁÞÅÎÉÅ ÔÏÌØËÏ Ó ÏÐÃÉÅÊ `r'."
 
-#: ar.c:615
+#: ar.c:617
 msgid "`N' is only meaningful with the `x' and `d' options."
 msgstr "`u' ÉÍÅÅÔ ÚÎÁÞÅÎÉÅ ÔÏÌØËÏ Ó ÏÐÃÉÑÍÉ `x' É `d'."
 
-#: ar.c:618
+#: ar.c:620
 msgid "Value for `N' must be positive."
 msgstr "úÎÁÞÅÎÉÅ ÄÌÑ `N' ÄÏÌÖÎÏ ÂÙÔØ ÐÏÌÏÖÉÔÅÌØÎÙÍ."
 
-#: ar.c:668
+#: ar.c:670
 #, c-format
 msgid "internal error -- this option not implemented"
 msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ -- ÜÔÁ ÏÐÃÉÑ ÎÅ ×ÙÐÏÌÎÅÎÁ"
 
-#: ar.c:737
+#: ar.c:739
 #, c-format
 msgid "creating %s"
 msgstr "ÓÏÚÄÁÅÔÓÑ %s"
 
-#: ar.c:786 ar.c:836 ar.c:1154 objcopy.c:1603
+#: ar.c:788 ar.c:838 ar.c:1156 objcopy.c:1683
 #, c-format
 msgid "internal stat error on %s"
 msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ stat ÎÁ %s"
 
-#: ar.c:790
+#: ar.c:792
 #, c-format
 msgid ""
 "\n"
@@ -271,37 +281,37 @@ msgstr ""
 "<%s>\n"
 "\n"
 
-#: ar.c:806 ar.c:873
+#: ar.c:808 ar.c:875
 #, c-format
 msgid "%s is not a valid archive"
 msgstr "%s ÎÅ Ñ×ÌÑÅÔÓÑ ×ÅÒÎÙÍ ÁÒÈÉ×ÏÍ"
 
-#: ar.c:841
+#: ar.c:843
 #, c-format
 msgid "stat returns negative size for %s"
 msgstr "stat ×ÏÚ×ÒÁÔÉÌ ÏÔÒÉÃÁÔÅÌØÎÙÊ ÒÁÚÍÅÒ ÄÌÑ %s"
 
-#: ar.c:1059
+#: ar.c:1061
 #, c-format
 msgid "No member named `%s'\n"
 msgstr "îÅÔ ÞÌÅÎÁ Ó ÉÍÅÎÅÍ `%s'\n"
 
-#: ar.c:1109
+#: ar.c:1111
 #, c-format
 msgid "no entry %s in archive %s!"
 msgstr "ÐÕÎËÔÁ %s ÎÅÔ × ÁÒÈÉ×Å %s!"
 
-#: ar.c:1246
+#: ar.c:1248
 #, c-format
 msgid "%s: no archive map to update"
 msgstr "%s: ÎÅÔ ËÁÒÔÙ ÁÒÈÉ×Á ÄÌÑ ÏÂÎÏ×ÌÅÎÉÑ"
 
-#: arsup.c:83
+#: arsup.c:87
 #, c-format
 msgid "No entry %s in archive.\n"
 msgstr "ÐÕÎËÔÁ %s ÎÅÔ × ÁÒÈÉ×Å.\n"
 
-#: arsup.c:109
+#: arsup.c:112
 #, c-format
 msgid "Can't open file %s\n"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ %s\n"
@@ -357,95 +367,97 @@ msgid "  No emulation specific options\n"
 msgstr "  îÅÔ ÏÐÃÉÊ, ÓÐÅÃÉÆÉÞÎÙÈ ÄÌÑ ÜÍÕÌÑÃÉÉ\n"
 
 #. Macros for common output.
-#: binemul.h:42
+#: binemul.h:40
 #, c-format
 msgid " emulation options: \n"
 msgstr " ÏÐÃÉÉ ÜÍÕÌÑÃÉÉ: \n"
 
-#: bucomm.c:109
+#: bucomm.c:110
 #, c-format
 msgid "can't set BFD default target to `%s': %s"
 msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÃÅÌØ BFD ÐÏ ÕÍÏÌÞÁÎÉÀ ÎÁ `%s': %s"
 
-#: bucomm.c:120
+#: bucomm.c:121
 #, c-format
 msgid "%s: Matching formats:"
 msgstr "%s: æÏÒÍÁÔÙ ÓÏ×ÐÁÄÅÎÉÑ:"
 
-#: bucomm.c:135
+#: bucomm.c:136
 #, c-format
 msgid "Supported targets:"
 msgstr "ðÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÃÅÌÉ:"
 
-#: bucomm.c:137
+#: bucomm.c:138
 #, c-format
 msgid "%s: supported targets:"
 msgstr "%s: ÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÃÅÌÉ:"
 
-#: bucomm.c:153
+#: bucomm.c:154
 #, c-format
 msgid "Supported architectures:"
 msgstr "ðÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÁÒÈÉÔÅËÔÕÒÙ:"
 
-#: bucomm.c:155
+#: bucomm.c:156
 #, c-format
 msgid "%s: supported architectures:"
 msgstr "%s: ÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÁÒÈÉÔÅËÔÕÒÙ:"
 
-#: bucomm.c:348
+#: bucomm.c:349
 #, c-format
 msgid "BFD header file version %s\n"
 msgstr "æÁÊÌ ÚÁÇÏÌÏ×ËÁ BFD ×ÅÒÓÉÑ %s\n"
 
-#: bucomm.c:449
+#: bucomm.c:450
 #, c-format
 msgid "%s: bad number: %s"
 msgstr "%s: ÐÌÏÈÏÅ ÞÉÓÌÏ: %s"
 
-#: bucomm.c:466 strings.c:386
+#: bucomm.c:467 strings.c:438
 #, c-format
 msgid "'%s': No such file"
 msgstr "'%s': îÅÔ ÔÁËÏÇÏ ÆÁÊÌÁ"
 
-#: bucomm.c:468 strings.c:388
+#: bucomm.c:469 strings.c:440
 #, c-format
 msgid "Warning: could not locate '%s'.  reason: %s"
 msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÎÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ '%s'. ðÒÉÞÉÎÁ: %s"
 
-#: bucomm.c:472
+#: bucomm.c:473
 #, c-format
 msgid "Warning: '%s' is not an ordinary file"
 msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: '%s' ÎÅ Ñ×ÌÑÅÔÓÑ ÏÂÙÞÎÙÍ ÆÁÊÌÏÍ"
 
-#: coffdump.c:105
+#: coffdump.c:103
 #, c-format
 msgid "#lines %d "
 msgstr "#ÓÔÒÏËÉ %d "
 
-#: coffdump.c:459 sysdump.c:648
+#: coffdump.c:457 sysdump.c:641
 #, c-format
 msgid "Usage: %s [option(s)] in-file\n"
 msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] in-ÆÁÊÌ\n"
 
-#: coffdump.c:460
+#: coffdump.c:458
 #, c-format
 msgid " Print a human readable interpretation of a SYSROFF object file\n"
 msgstr " ÷Ù×ÏÄÉÔ ÕÄÏÂÏÞÉÔÁÅÍÕÀ ÄÌÑ ÞÅÌÏ×ÅËÁ ÉÎÔÅÒÐÒÅÔÁÃÉÀ ÏÂßÅËÔÎÏÇÏ ÆÁÊÌÁ SYSROFF\n"
 
-#: coffdump.c:461
+#: coffdump.c:459
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                Read options from <file>\n"
 "  -h --help              Display this information\n"
 "  -v --version           Display the program's version\n"
 "\n"
 msgstr ""
 " ïÐÃÉÉ:\n"
+"  @<ÆÁÊÌ>                þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
 "  -h --help              ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n"
 "  -v --version           ÷Ù×ÏÄ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ\n"
 "\n"
 
-#: coffdump.c:527 srconv.c:1819 sysdump.c:710
+#: coffdump.c:528 srconv.c:1822 sysdump.c:705
 msgid "no input file specified"
 msgstr "ÎÅ ÕËÁÚÁΠ×ÈÏÄÎÏÊ ÆÁÊÌ"
 
@@ -542,576 +554,586 @@ msgstr "debug_get_real_type: 
 msgid "debug_write_type: illegal type encountered"
 msgstr "debug_write_type: ×ÓÔÒÅÞÅΠÎÅ×ÅÒÎÙÊ ÔÉÐ"
 
-#: dlltool.c:773 dlltool.c:797 dlltool.c:826
+#: dlltool.c:765 dlltool.c:789 dlltool.c:818
 #, c-format
 msgid "Internal error: Unknown machine type: %d"
 msgstr "÷ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: îÅÉÚ×ÅÓÔÎÙÊ ÔÉРÍÁÛÉÎÙ: %d"
 
-#: dlltool.c:862
+#: dlltool.c:854
 #, c-format
 msgid "Can't open def file: %s"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ def: %s"
 
-#: dlltool.c:867
+#: dlltool.c:859
 #, c-format
 msgid "Processing def file: %s"
 msgstr "ïÂÒÁÂÁÔÙ×ÁÅÔÓÑ ÆÁÊÌ def: %s"
 
-#: dlltool.c:871
+#: dlltool.c:863
 msgid "Processed def file"
 msgstr "ïÂÒÁÂÏÔÁΠÆÁÊÌ def"
 
-#: dlltool.c:895
+#: dlltool.c:887
 #, c-format
 msgid "Syntax error in def file %s:%d"
 msgstr "ïÛÉÂËÁ ÓÉÎÔÁËÓÉÓÁ × ÆÁÊÌÅ def %s:%d"
 
-#: dlltool.c:930
+#: dlltool.c:922
 #, c-format
 msgid "%s: Path components stripped from image name, '%s'."
 msgstr "%s: ëÏÍÐÏÎÅÎÔÙ ÐÕÔÉ, ÉÚ×ÌÅÞÅÎÎÙÅ ÉÚ ÉÍÅÎÉ ÉÚÏÂÒÁÖÅÎÉÑ, '%s'."
 
-#: dlltool.c:939
+#: dlltool.c:931
 #, c-format
 msgid "NAME: %s base: %x"
 msgstr "NAME: %s base: %x"
 
-#: dlltool.c:942 dlltool.c:958
+#: dlltool.c:934 dlltool.c:950
 msgid "Can't have LIBRARY and NAME"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÍÅÔØ LIBRARY É NAME"
 
-#: dlltool.c:955
+#: dlltool.c:947
 #, c-format
 msgid "LIBRARY: %s base: %x"
 msgstr "LIBRARY: %s base: %x"
 
-#: dlltool.c:1191 resrc.c:269
+#: dlltool.c:1183 resrc.c:269
 #, c-format
 msgid "wait: %s"
 msgstr "ÏÖÉÄÁÎÉÅ: %s"
 
-#: dlltool.c:1196 dllwrap.c:418 resrc.c:274
+#: dlltool.c:1188 dllwrap.c:413 resrc.c:274
 #, c-format
 msgid "subprocess got fatal signal %d"
 msgstr "ÐÏÄÐÒÏÃÅÓÓ ÐÏÌÕÞÉÌ ÆÁÔÁÌØÎÙÊ ÓÉÇÎÁÌ %d"
 
-#: dlltool.c:1202 dllwrap.c:425 resrc.c:281
+#: dlltool.c:1194 dllwrap.c:420 resrc.c:281
 #, c-format
 msgid "%s exited with status %d"
 msgstr "%s ÚÁ×ÅÒÛÅΠÓÏ ÓÔÁÔÕÓÏÍ %d"
 
-#: dlltool.c:1233
+#: dlltool.c:1225
 #, c-format
 msgid "Sucking in info from %s section in %s"
 msgstr "÷ÓÁÓÙ×ÁÅÔÓÑ ÉÎÆÏÒÍÁÃÉÑ ÉÚ ÒÁÚÄÅÌÁ %s × %s"
 
-#: dlltool.c:1358
+#: dlltool.c:1350
 #, c-format
 msgid "Excluding symbol: %s"
 msgstr "óÉÍ×ÏÌ ÉÓËÌÀÞÅÎÉÑ: %s"
 
-#: dlltool.c:1447 dlltool.c:1458 nm.c:998 nm.c:1009
+#: dlltool.c:1439 dlltool.c:1450 nm.c:1000 nm.c:1011
 #, c-format
 msgid "%s: no symbols"
 msgstr "%s: ÎÅÔ ÓÉÍ×ÏÌÏ×"
 
 #. FIXME: we ought to read in and block out the base relocations.
-#: dlltool.c:1484
+#: dlltool.c:1476
 #, c-format
 msgid "Done reading %s"
 msgstr "þÔÅÎÉÅ ×ÙÐÏÌÎÅÎÏ %s"
 
-#: dlltool.c:1494
+#: dlltool.c:1486
 #, c-format
 msgid "Unable to open object file: %s"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÏÂßÅËÔÎÙÊ ÆÁÊÌ: %s"
 
-#: dlltool.c:1497
+#: dlltool.c:1489
 #, c-format
 msgid "Scanning object file %s"
 msgstr "óËÁÎÉÒÕÅÔÓÑ ÏÂßÅËÔÎÙÊ ÆÁÊÌ %s"
 
-#: dlltool.c:1512
+#: dlltool.c:1504
 #, c-format
 msgid "Cannot produce mcore-elf dll from archive file: %s"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÆÏÒÍÉÒÏ×ÁÔØ mcore-elf dll ÉÚ ÆÁÊÌÁ ÁÒÈÉ×Á: %s"
 
-#: dlltool.c:1598
+#: dlltool.c:1590
 msgid "Adding exports to output file"
 msgstr "üËÓÐÏÒÔÎÙÅ ÄÁÎÎÙÅ ÄÏÂÁ×ÌÑÀÔÓÑ × ×ÙÈÏÄÎÏÊ ÆÁÊÌ"
 
-#: dlltool.c:1646
+#: dlltool.c:1638
 msgid "Added exports to output file"
 msgstr "üËÓÐÏÒÔÎÙÅ ÄÁÎÎÙÅ ÄÏÂÁ×ÌÅÎÙ × ×ÙÈÏÄÎÏÊ ÆÁÊÌ"
 
-#: dlltool.c:1767
+#: dlltool.c:1759
 #, c-format
 msgid "Generating export file: %s"
 msgstr "çÅÎÅÒÉÒÕÅÔÓÑ ÆÁÊÌ ÜËÓÐÏÒÔÁ: %s"
 
-#: dlltool.c:1772
+#: dlltool.c:1764
 #, c-format
 msgid "Unable to open temporary assembler file: %s"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÒÅÍÅÎÎÙÊ ÆÁÊÌ ÁÓÓÅÍÂÌÅÒÁ: %s"
 
-#: dlltool.c:1775
+#: dlltool.c:1767
 #, c-format
 msgid "Opened temporary file: %s"
 msgstr "ïÔËÒÙÔÙÊ ×ÒÅÍÅÎÎÙÊ ÆÁÊÌ: %s"
 
-#: dlltool.c:1997
+#: dlltool.c:1989
 msgid "Generated exports file"
 msgstr "óÇÅÎÅÒÉÒÏ×ÁΠÆÁÊÌ ÜËÓÐÏÒÔÁ"
 
-#: dlltool.c:2203
+#: dlltool.c:2195
 #, c-format
 msgid "bfd_open failed open stub file: %s"
 msgstr "bfd_open ÎÅ ÓÍÏÇ ÏÔËÒÙÔØ ÆÁÊÌ stub: %s"
 
-#: dlltool.c:2206
+#: dlltool.c:2198
 #, c-format
 msgid "Creating stub file: %s"
 msgstr "óÏÚÄÁÅÔÓÑ ÆÁÊÌ stub: %s"
 
-#: dlltool.c:2588
+#: dlltool.c:2580
 #, c-format
 msgid "failed to open temporary head file: %s"
 msgstr "ÓÂÏÊ ÐÒÉ ÏÔËÒÙÔÉÉ ×ÒÅÍÅÎÎÏÇÏ ÇÏÌÏ×ÎÏÇÏ ÆÁÊÌÁ: %s"
 
-#: dlltool.c:2647
+#: dlltool.c:2639
 #, c-format
 msgid "failed to open temporary tail file: %s"
 msgstr "ÓÂÏÊ ÐÒÉ ÏÔËÒÙÔÉÉ ×ÒÅÍÅÎÎÏÇÏ ËÏÎÅÞÎÏÇÏ ÆÁÊÌÁ: %s"
 
-#: dlltool.c:2714
+#: dlltool.c:2706
 #, c-format
 msgid "Can't open .lib file: %s"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ .lib: %s"
 
-#: dlltool.c:2717
+#: dlltool.c:2709
 #, c-format
 msgid "Creating library file: %s"
 msgstr "óÏÚÄÁÅÔÓÑ ÆÁÊÌ ÂÉÂÌÉÏÔÅËÉ: %s"
 
-#: dlltool.c:2800 dlltool.c:2806
+#: dlltool.c:2792 dlltool.c:2798
 #, c-format
 msgid "cannot delete %s: %s"
 msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ %s: %s"
 
-#: dlltool.c:2811
+#: dlltool.c:2803
 msgid "Created lib file"
 msgstr "óÏÚÄÁΠlib-ÆÁÊÌ"
 
-#: dlltool.c:2904
+#: dlltool.c:2882
 #, c-format
 msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
 msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ, ÐÒÏÐÕÓËÁÅÔÓÑ ÐÏ×ÔÏÒÑÀÝÉÊÓÑ EXPORT %s %d,%d"
 
-#: dlltool.c:2910
+#: dlltool.c:2888
 #, c-format
 msgid "Error, duplicate EXPORT with oridinals: %s"
 msgstr "ïÛÉÂËÁ, EXPORT ÐÏ×ÔÏÒÑÅÔÓÑ Ó ÐÏÒÑÄËÏ×ÙÍÉ ÞÉÓÌÉÔÅÌØÎÙÍÉ: %s"
 
-#: dlltool.c:3026
+#: dlltool.c:2993
 msgid "Processing definitions"
 msgstr "ïÂÒÁÂÁÔÙ×ÁÀÔÓÑ ÏÐÉÓÁÎÉÑ"
 
-#: dlltool.c:3058
+#: dlltool.c:3025
 msgid "Processed definitions"
 msgstr "ïÐÉÓÁÎÉÑ ÏÂÒÁÂÏÔÁÎÙ"
 
 #. xgetext:c-format
-#: dlltool.c:3065 dllwrap.c:479
+#: dlltool.c:3032 dllwrap.c:474
 #, c-format
 msgid "Usage %s <option(s)> <object-file(s)>\n"
 msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ %s <ÏÐÃÉÉ> <ÏÂßÅËÔÎÙÅ_ÆÁÊÌÙ>\n"
 
 #. xgetext:c-format
-#: dlltool.c:3067
+#: dlltool.c:3034
 #, c-format
 msgid "   -m --machine <machine>    Create as DLL for <machine>.  [default: %s]\n"
 msgstr "   -m --machine <ÍÁÛÉÎÁ>     óÏÚÄÁÎÉÅ ËÁË DLL ÄÌÑ <ÍÁÛÉÎÙ>.  [ÐÏ ÕÍÏÌÞÁÎÉÀ: %s]\n"
 
-#: dlltool.c:3068
+#: dlltool.c:3035
 #, c-format
 msgid "        possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
 msgstr "        ×ÏÚÍÏÖÎÏ <ÍÁÛÉÎÁ>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
 
-#: dlltool.c:3069
+#: dlltool.c:3036
 #, c-format
 msgid "   -e --output-exp <outname> Generate an export file.\n"
 msgstr "   -e --output-exp <×ÙÈ_ÉÍÑ> óÏÚÄÁÎÉÅ ÆÁÊÌÁ ÜËÓÐÏÒÔÁ.\n"
 
-#: dlltool.c:3070
+#: dlltool.c:3037
 #, c-format
 msgid "   -l --output-lib <outname> Generate an interface library.\n"
 msgstr "   -l --output-lib <×ÙÈ_ÉÍÑ> óÏÚÄÁÎÉÅ ÂÉÂÌÉÏÔÅËÉ ÉÎÔÅÒÆÅÊÓÁ.\n"
 
-#: dlltool.c:3071
+#: dlltool.c:3038
 #, c-format
 msgid "   -a --add-indirect         Add dll indirects to export file.\n"
 msgstr "   -a --add-indirect         äÏÂÁ×ÌÅÎÉÅ ÎÅÐÒÑÍÙÈ dll × ÆÁÊÌ ÜËÓÐÏÒÔÁ.\n"
 
-#: dlltool.c:3072
+#: dlltool.c:3039
 #, c-format
 msgid "   -D --dllname <name>       Name of input dll to put into interface lib.\n"
 msgstr "   -D --dllname <ÉÍÑ>        éÍÑ ×ÈÏÄÎÏÊ dll ÄÌÑ ÐÏÍÅÝÅÎÉÑ × ÂÉÂÌÉÏÔÅËÕ ÉÎÔÅÒÆÅÊÓÁ.\n"
 
-#: dlltool.c:3073
+#: dlltool.c:3040
 #, c-format
 msgid "   -d --input-def <deffile>  Name of .def file to be read in.\n"
 msgstr "   -d --input-def <def-ÆÁÊÌ> éÍÑ ÆÁÊÌÁ .def ÄÌÑ ÓÞÉÔÙ×ÁÎÉÑ.\n"
 
-#: dlltool.c:3074
+#: dlltool.c:3041
 #, c-format
 msgid "   -z --output-def <deffile> Name of .def file to be created.\n"
 msgstr "   -z --output-def <def-ÆÁÊÌ> éÍÑ ÓÏÚÄÁ×ÁÅÍÏÇÏ ÆÁÊÌÁ .def.\n"
 
-#: dlltool.c:3075
+#: dlltool.c:3042
 #, c-format
 msgid "      --export-all-symbols   Export all symbols to .def\n"
 msgstr "      --export-all-symbols   üËÓÐÏÒÔ ×ÓÅÈ ÓÉÍ×ÏÌÏ× × .def\n"
 
-#: dlltool.c:3076
+#: dlltool.c:3043
 #, c-format
 msgid "      --no-export-all-symbols  Only export listed symbols\n"
 msgstr "      --no-export-all-symbols  üËÓÐÏÒÔ ÔÏÌØËÏ ÐÅÒÅÞÉÓÌÅÎÎÙÈ ÓÉÍ×ÏÌÏ×\n"
 
-#: dlltool.c:3077
+#: dlltool.c:3044
 #, c-format
 msgid "      --exclude-symbols <list> Don't export <list>\n"
 msgstr "      --exclude-symbols <ÓÐÉÓÏË> îÅ ÜËÓÐÏÒÔÉÒÏ×ÁÔØ <ÓÐÉÓÏË>\n"
 
-#: dlltool.c:3078
+#: dlltool.c:3045
 #, c-format
 msgid "      --no-default-excludes  Clear default exclude symbols\n"
 msgstr "      --no-default-excludes  ïÞÉÓÔËÁ ÓÉÍ×ÏÌÏ× ÉÓËÌÀÞÅÎÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ\n"
 
-#: dlltool.c:3079
+#: dlltool.c:3046
 #, c-format
 msgid "   -b --base-file <basefile> Read linker generated base file.\n"
 msgstr "   -b --base-file <base-ÆÁÊÌ> þÔÅÎÉÅ ÓÏÚÄÁÎÎÏÇÏ ËÏÍÐÏÎÏ×ÝÉËÏÍ base-ÆÁÊÌÁ.\n"
 
-#: dlltool.c:3080
+#: dlltool.c:3047
 #, c-format
 msgid "   -x --no-idata4            Don't generate idata$4 section.\n"
 msgstr "   -x --no-idata4            îÅ ÓÏÚÄÁ×ÁÔØ ÒÁÚÄÅÌ idata$4.\n"
 
-#: dlltool.c:3081
+#: dlltool.c:3048
 #, c-format
 msgid "   -c --no-idata5            Don't generate idata$5 section.\n"
 msgstr "   -c --no-idata5            îÅ ÓÏÚÄÁ×ÁÔØ ÒÁÚÄÅÌ idata$5.\n"
 
-#: dlltool.c:3082
+#: dlltool.c:3049
 #, c-format
 msgid "   -U --add-underscore       Add underscores to symbols in interface library.\n"
 msgstr "   -U --add-underscore       äÏÂÁ×ÌÅÎÉÅ ÓÉÍ×ÏÌÏ× ÐÏÄÞÅÒËÉ×ÁÎÉÑ Ë ÓÉÍ×ÏÌÁÍ × ÂÉÂÌÉÏÔÅËÅ ÉÎÔÅÒÆÅÊÓÁ.\n"
 
-#: dlltool.c:3083
+#: dlltool.c:3050
 #, c-format
 msgid "   -k --kill-at              Kill @<n> from exported names.\n"
 msgstr "   -k --kill-at              õÄÁÌÅÎÉÅ @<n> ÉÚ ÜËÓÐÏÒÔÉÒÏ×ÁÎÎÙÈ ÉÍÅÎ.\n"
 
-#: dlltool.c:3084
+#: dlltool.c:3051
 #, c-format
 msgid "   -A --add-stdcall-alias    Add aliases without @<n>.\n"
 msgstr "   -A --add-stdcall-alias    äÏÂÁ×ÌÅÎÉÅ ÁÌÉÁÓÏ× ÂÅÚ @<n>.\n"
 
-#: dlltool.c:3085
+#: dlltool.c:3052
 #, c-format
 msgid "   -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
 msgstr "   -p --ext-prefix-alias <ÐÒÅÆÉËÓ> äÏÂÁ×ÌÅÎÉÅ ÁÌÉÁÓÏ× Ó <ÐÒÅÆÉËÓÏÍ>.\n"
 
-#: dlltool.c:3086
+#: dlltool.c:3053
 #, c-format
 msgid "   -S --as <name>            Use <name> for assembler.\n"
 msgstr "   -S --as <ÉÍÑ>             éÓÐÏÌØÚÏ×ÁÎÉÅ <ÉÍÅÎÉ> ÄÌÑ ÁÓÓÅÍÂÌÅÒÁ.\n"
 
-#: dlltool.c:3087
+#: dlltool.c:3054
 #, c-format
 msgid "   -f --as-flags <flags>     Pass <flags> to the assembler.\n"
 msgstr "   -f --as-flags <ÆÌÁÇÉ>     ðÅÒÅÄÁÞÁ <ÆÌÁÇÏ×> × ÁÓÓÅÍÂÌÅÒ.\n"
 
-#: dlltool.c:3088
+#: dlltool.c:3055
 #, c-format
 msgid "   -C --compat-implib        Create backward compatible import library.\n"
 msgstr "   -C --compat-implib        óÏÚÄÁÎÉÅ ÂÉÂÌÉÏÔÅËÉ ÉÍÐÏÒÔÁ Ó ÏÂÒÁÔÎÏÊ ÓÏ×ÍÅÓÔÉÍÏÓÔØÀ.\n"
 
-#: dlltool.c:3089
+#: dlltool.c:3056
 #, c-format
 msgid "   -n --no-delete            Keep temp files (repeat for extra preservation).\n"
 msgstr "   -n --no-delete            ïÓÔÁ×ÌÑÔØ ×ÒÅÍÅÎÎÙÅ ÆÁÊÌÙ (ÐÏ×ÔÏÒ ÄÌÑ ÄÏÐ. ÚÁÝÉÔÙ).\n"
 
-#: dlltool.c:3090
+#: dlltool.c:3057
 #, c-format
 msgid "   -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"
 msgstr "   -t --temp-prefix <ÐÒÅÆÉËÓ> éÓÐÏÌØÚÏ×ÁÎÉÅ <ÐÒÅÆÉËÓÁ> ÄÌÑ ÓÏÚÄÁÎÉÑ ÉÍÅΠ×ÒÅÍÅÎÎÙÈ ÆÁÊÌÏ×.\n"
 
-#: dlltool.c:3091
+#: dlltool.c:3058
 #, c-format
 msgid "   -v --verbose              Be verbose.\n"
 msgstr "   -v --verbose              ðÏÄÒÏÂÎÙÊ ÒÅÖÉÍ.\n"
 
-#: dlltool.c:3092
+#: dlltool.c:3059
 #, c-format
 msgid "   -V --version              Display the program version.\n"
 msgstr "   -V --version              ÷Ù×ÏÄ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ.\n"
 
-#: dlltool.c:3093
+#: dlltool.c:3060
 #, c-format
 msgid "   -h --help                 Display this information.\n"
 msgstr "   -h --help                 ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ.\n"
 
-#: dlltool.c:3095
+#: dlltool.c:3061
+#, c-format
+msgid "   @<file>                   Read options from <file>.\n"
+msgstr "   @<ÆÁÊÌ>                   þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>.\n"
+
+#: dlltool.c:3063
 #, c-format
 msgid "   -M --mcore-elf <outname>  Process mcore-elf object files into <outname>.\n"
 msgstr "   -M --mcore-elf <×ÙÈ_ÉÍÑ>  ïÂÒÁÂÏÔËÁ ÏÂßÅËÔÎÏÇÏ ÆÁÊÌÁ mcore-elf × <×ÙÈ_ÉÍÑ>.\n"
 
-#: dlltool.c:3096
+#: dlltool.c:3064
 #, c-format
 msgid "   -L --linker <name>        Use <name> as the linker.\n"
 msgstr "   -L --linker <ÉÍÑ>         éÓÐÏÌØÚÏ×ÁÎÉÅ <ÉÍÅÎÉ> × ËÁÞÅÓÔ×Å ËÏÍÐÏÎÏ×ÝÉËÁ.\n"
 
-#: dlltool.c:3097
+#: dlltool.c:3065
 #, c-format
 msgid "   -F --linker-flags <flags> Pass <flags> to the linker.\n"
 msgstr "   -F --linker-flags <ÆÌÁÇÉ> ðÅÒÅÄÁÞÁ <ÆÌÁÇÏ×> ËÏÍÐÏÎÏ×ÝÉËÕ.\n"
 
-#: dlltool.c:3211
+#: dlltool.c:3181
 #, c-format
 msgid "Path components stripped from dllname, '%s'."
 msgstr "ëÏÍÐÏÎÅÎÔÙ ÐÕÔÉ, ÉÚ×ÌÅÞÅÎÎÙÅ ÉÚ ÉÍÅÎÉ dll, '%s'."
 
-#: dlltool.c:3256
+#: dlltool.c:3226
 #, c-format
 msgid "Unable to open base-file: %s"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ base-ÆÁÊÌ: %s"
 
-#: dlltool.c:3288
+#: dlltool.c:3258
 #, c-format
 msgid "Machine '%s' not supported"
 msgstr "íÁÛÉÎÁ '%s' ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
 
-#: dlltool.c:3392 dllwrap.c:209
+#: dlltool.c:3362 dllwrap.c:204
 #, c-format
 msgid "Tried file: %s"
 msgstr "ïÐÒÏÂÏ×ÁÎÎÙÊ ÆÁÊÌ: %s"
 
-#: dlltool.c:3399 dllwrap.c:216
+#: dlltool.c:3369 dllwrap.c:211
 #, c-format
 msgid "Using file: %s"
 msgstr "éÓÐÏÌØÚÕÅÔÓÑ ÆÁÊÌ: %s"
 
-#: dllwrap.c:299
+#: dllwrap.c:294
 #, c-format
 msgid "Keeping temporary base file %s"
 msgstr "ïÓÔÁ×ÌÑÅÔÓÑ ×ÒÅÍÅÎÎÙÊ base-ÆÁÊÌ %s"
 
-#: dllwrap.c:301
+#: dllwrap.c:296
 #, c-format
 msgid "Deleting temporary base file %s"
 msgstr "õÄÁÌÑÅÔÓÑ ×ÒÅÍÅÎÎÙÊ base-ÆÁÊÌ %s"
 
-#: dllwrap.c:315
+#: dllwrap.c:310
 #, c-format
 msgid "Keeping temporary exp file %s"
 msgstr "ïÓÔÁ×ÌÑÅÔÓÑ ×ÒÅÍÅÎÎÙÊ exp-ÆÁÊÌ %s"
 
-#: dllwrap.c:317
+#: dllwrap.c:312
 #, c-format
 msgid "Deleting temporary exp file %s"
 msgstr "õÄÁÌÑÅÔÓÑ ×ÒÅÍÅÎÎÙÊ exp-ÆÁÊÌ %s"
 
-#: dllwrap.c:330
+#: dllwrap.c:325
 #, c-format
 msgid "Keeping temporary def file %s"
 msgstr "ïÓÔÁ×ÌÑÅÔÓÑ ×ÒÅÍÅÎÎÙÊ def-ÆÁÊÌ %s"
 
-#: dllwrap.c:332
+#: dllwrap.c:327
 #, c-format
 msgid "Deleting temporary def file %s"
 msgstr "õÄÁÌÑÅÔÓÑ ×ÒÅÍÅÎÎÙÊ def-ÆÁÊÌ %s"
 
-#: dllwrap.c:480
+#: dllwrap.c:475
 #, c-format
 msgid "  Generic options:\n"
 msgstr "  ïÂÝÉÅ ÏÐÃÉÉ:\n"
 
-#: dllwrap.c:481
+#: dllwrap.c:476
+#, c-format
+msgid "   @<file>                Read options from <file>\n"
+msgstr "   @<ÆÁÊÌ>                þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
+
+#: dllwrap.c:477
 #, c-format
 msgid "   --quiet, -q            Work quietly\n"
 msgstr "   --quiet, -q            íÏÌÞÁÌÉ×ÙÊ ÒÅÖÉÍ\n"
 
-#: dllwrap.c:482
+#: dllwrap.c:478
 #, c-format
 msgid "   --verbose, -v          Verbose\n"
 msgstr "   --verbose, -v          ðÏÄÒÏÂÎÙÊ ÒÅÖÉÍ\n"
 
-#: dllwrap.c:483
+#: dllwrap.c:479
 #, c-format
 msgid "   --version              Print dllwrap version\n"
 msgstr "   --version              ÷Ù×ÏÄ ×ÅÒÓÉÉ dllwrap\n"
 
-#: dllwrap.c:484
+#: dllwrap.c:480
 #, c-format
 msgid "   --implib <outname>     Synonym for --output-lib\n"
 msgstr "   --implib <×ÙÈ_ÉÍÑ>     óÉÎÏÎÉÍ ÄÌÑ --output-lib\n"
 
-#: dllwrap.c:485
+#: dllwrap.c:481
 #, c-format
 msgid "  Options for %s:\n"
 msgstr "  ïÐÃÉÉ ÄÌÑ %s:\n"
 
-#: dllwrap.c:486
+#: dllwrap.c:482
 #, c-format
 msgid "   --driver-name <driver> Defaults to \"gcc\"\n"
 msgstr "   --driver-name <ÄÒÁÊ×ÅÒ> úÎÁÞÅÎÉÑ ÄÌÑ \"gcc\" ÐÏ ÕÍÏÌÞÁÎÉÀ\n"
 
-#: dllwrap.c:487
+#: dllwrap.c:483
 #, c-format
 msgid "   --driver-flags <flags> Override default ld flags\n"
 msgstr "   --driver-flags <ÆÌÁÇÉ> ðÅÒÅÏÐÒÅÄÅÌÅÎÉÅ ÆÌÁÇÏ× ld ÐÏ ÕÍÏÌÞÁÎÉÀ\n"
 
-#: dllwrap.c:488
+#: dllwrap.c:484
 #, c-format
 msgid "   --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
 msgstr "   --dlltool-name <dlltool> úÎÁÞÅÎÉÑ ÄÌÑ \"dlltool\" ÐÏ ÕÍÏÌÞÁÎÉÀ\n"
 
-#: dllwrap.c:489
+#: dllwrap.c:485
 #, c-format
 msgid "   --entry <entry>        Specify alternate DLL entry point\n"
 msgstr "   --entry <ÐÕÎËÔ>        õËÁÚÁÎÉÅ ÁÌØÔÅÒÎÁÔÉ×ÎÏÊ ÔÏÞËÉ ×ÈÏÄÁ DLL\n"
 
-#: dllwrap.c:490
+#: dllwrap.c:486
 #, c-format
 msgid "   --image-base <base>    Specify image base address\n"
 msgstr "   --image-base <base>    õËÁÚÁÎÉÅ ÂÁÚÏ×ÏÇÏ ÁÄÒÅÓÁ ÏÂÒÁÚÁ\n"
 
-#: dllwrap.c:491
+#: dllwrap.c:487
 #, c-format
 msgid "   --target <machine>     i386-cygwin32 or i386-mingw32\n"
 msgstr "   --target <ÍÁÛÉÎÁ>      i386-cygwin32 ÉÌÉ i386-mingw32\n"
 
-#: dllwrap.c:492
+#: dllwrap.c:488
 #, c-format
 msgid "   --dry-run              Show what needs to be run\n"
 msgstr "   --dry-run              ðÏËÁÚÁÔØ, ÞÔÏ ÄÏÌÖÎÏ ÂÙÔØ ÚÁÐÕÝÅÎÏ\n"
 
-#: dllwrap.c:493
+#: dllwrap.c:489
 #, c-format
 msgid "   --mno-cygwin           Create Mingw DLL\n"
 msgstr "   --mno-cygwin           óÏÚÄÁÎÉÅ Mingw DLL\n"
 
-#: dllwrap.c:494
+#: dllwrap.c:490
 #, c-format
 msgid "  Options passed to DLLTOOL:\n"
 msgstr "  ïÐÃÉÉ, ÐÅÒÅÄÁ×ÁÅÍÙÅ × DLLTOOL:\n"
 
-#: dllwrap.c:495
+#: dllwrap.c:491
 #, c-format
 msgid "   --machine <machine>\n"
 msgstr "   --machine <ÍÁÛÉÎÁ>\n"
 
-#: dllwrap.c:496
+#: dllwrap.c:492
 #, c-format
 msgid "   --output-exp <outname> Generate export file.\n"
 msgstr "   --output-exp <×ÙÈ_ÉÍÑ> óÏÚÄÁÎÉÅ ÆÁÊÌÁ ÜËÓÐÏÒÔÁ.\n"
 
-#: dllwrap.c:497
+#: dllwrap.c:493
 #, c-format
 msgid "   --output-lib <outname> Generate input library.\n"
 msgstr "   --output-lib <×ÙÈ_ÉÍÑ> óÏÚÄÁÎÉÅ ×ÈÏÄÎÏÊ ÂÉÂÌÉÏÔÅËÉ.\n"
 
-#: dllwrap.c:498
+#: dllwrap.c:494
 #, c-format
 msgid "   --add-indirect         Add dll indirects to export file.\n"
 msgstr "   --add-indirect         äÏÂÁ×ÌÅÎÉÅ ÎÅÐÒÑÍÙÈ dll × ÆÁÊÌ ÜËÓÐÏÒÔÁ.\n"
 
-#: dllwrap.c:499
+#: dllwrap.c:495
 #, c-format
 msgid "   --dllname <name>       Name of input dll to put into output lib.\n"
 msgstr "   --dllname <ÉÍÑ>        éÍÑ ×ÈÏÄÎÏÊ dll ÄÌÑ ÐÏÍÅÝÅÎÉÑ × ×ÙÈÏÄÎÕÀ ÂÉÂÌÉÏÔÅËÕ.\n"
 
-#: dllwrap.c:500
+#: dllwrap.c:496
 #, c-format
 msgid "   --def <deffile>        Name input .def file\n"
 msgstr "   --def <def-ÆÁÊÌ>       éÍÑ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ .def\n"
 
-#: dllwrap.c:501
+#: dllwrap.c:497
 #, c-format
 msgid "   --output-def <deffile> Name output .def file\n"
 msgstr "   --output-def <def-ÆÁÊÌ> éÍÑ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ .def\n"
 
-#: dllwrap.c:502
+#: dllwrap.c:498
 #, c-format
 msgid "   --export-all-symbols     Export all symbols to .def\n"
 msgstr "   --export-all-symbols     üËÓÐÏÒÔ ×ÓÅÈ ÓÉÍ×ÏÌÏ× × .def\n"
 
-#: dllwrap.c:503
+#: dllwrap.c:499
 #, c-format
 msgid "   --no-export-all-symbols  Only export .drectve symbols\n"
 msgstr "   --no-export-all-symbols  üËÓÐÏÒÔ ÔÏÌØËÏ ÓÉÍ×ÏÌÏ× .drectve\n"
 
-#: dllwrap.c:504
+#: dllwrap.c:500
 #, c-format
 msgid "   --exclude-symbols <list> Exclude <list> from .def\n"
 msgstr "   --exclude-symbols <ÓÐÉÓÏË> éÓËÌÀÞÉÔØ <ÓÐÉÓÏË> ÉÚ .def\n"
 
-#: dllwrap.c:505
+#: dllwrap.c:501
 #, c-format
 msgid "   --no-default-excludes    Zap default exclude symbols\n"
 msgstr "   --no-default-excludes    õÄÁÌÅÎÉÅ ÓÉÍ×ÏÌÏ× ÉÓËÌÀÞÅÎÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ\n"
 
-#: dllwrap.c:506
+#: dllwrap.c:502
 #, c-format
 msgid "   --base-file <basefile> Read linker generated base file\n"
 msgstr "   --base-file <base-ÆÁÊÌ> þÔÅÎÉÅ ÓÏÚÄÁÎÎÏÇÏ ËÏÍÐÏÎÏ×ÝÉËÏÍ base-ÆÁÊÌÁ.\n"
 
-#: dllwrap.c:507
+#: dllwrap.c:503
 #, c-format
 msgid "   --no-idata4           Don't generate idata$4 section\n"
 msgstr "   --no-idata4           îÅ ÓÏÚÄÁ×ÁÔØ ÒÁÚÄÅÌ idata$4.\n"
 
-#: dllwrap.c:508
+#: dllwrap.c:504
 #, c-format
 msgid "   --no-idata5           Don't generate idata$5 section\n"
 msgstr "   --no-idata5           îÅ ÓÏÚÄÁ×ÁÔØ ÒÁÚÄÅÌ idata$5.\n"
 
-#: dllwrap.c:509
+#: dllwrap.c:505
 #, c-format
 msgid "   -U                     Add underscores to .lib\n"
 msgstr "   -U                     äÏÂÁ×ÌÅÎÉÅ ÓÉÍ×ÏÌÏ× ÐÏÄÞÅÒËÉ×ÁÎÉÑ × .lib\n"
 
-#: dllwrap.c:510
+#: dllwrap.c:506
 #, c-format
 msgid "   -k                     Kill @<n> from exported names\n"
 msgstr "   -k                     õÄÁÌÅÎÉÅ @<n> ÉÚ ÜËÓÐÏÒÔÉÒÏ×ÁÎÎÙÈ ÉÍÅÎ.\n"
 
-#: dllwrap.c:511
+#: dllwrap.c:507
 #, c-format
 msgid "   --add-stdcall-alias    Add aliases without @<n>\n"
 msgstr "   --add-stdcall-alias    äÏÂÁ×ÌÅÎÉÅ ÁÌÉÁÓÏ× ÂÅÚ @<n>\n"
 
-#: dllwrap.c:512
+#: dllwrap.c:508
 #, c-format
 msgid "   --as <name>            Use <name> for assembler\n"
 msgstr "   --as <ÉÍÑ>             éÓÐÏÌØÚÏ×ÁÎÉÅ <ÉÍÅÎÉ> ÄÌÑ ÁÓÓÅÍÂÌÅÒÁ\n"
 
-#: dllwrap.c:513
+#: dllwrap.c:509
 #, c-format
 msgid "   --nodelete             Keep temp files.\n"
 msgstr "   --nodelete             ïÓÔÁ×ÌÑÔØ ×ÒÅÍÅÎÎÙÅ ÆÁÊÌÙ.\n"
 
-#: dllwrap.c:514
+#: dllwrap.c:510
 #, c-format
 msgid "  Rest are passed unmodified to the language driver\n"
 msgstr "  ïÓÔÁÌØÎÏÅ ÂÅÚ ÉÚÍÅÎÅÎÉÊ ÐÅÒÅÄÁÎÏ ÑÚÙËÏ×ÏÍÕ ÄÒÁÊ×ÅÒÕ\n"
 
-#: dllwrap.c:784
+#: dllwrap.c:782
 msgid "Must provide at least one of -o or --dllname options"
 msgstr "îÅÏÂÈÏÄÉÍÏ ÐÒÅÄÏÓÔÁ×ÉÔØ ÐÏ ËÒÁÊÎÅÊ ÍÅÒÅ ÏÄÎÕ ÉÚ ÏÐÃÉÊ -o ÉÌÉ --dllname"
 
-#: dllwrap.c:813
+#: dllwrap.c:811
 msgid ""
 "no export definition file provided.\n"
 "Creating one, but that may not be what you want"
@@ -1119,3321 +1141,3380 @@ msgstr ""
 "ÎÅ ÐÒÅÄÏÓÔÁ×ÌÅΠÆÁÊÌ ÏÐÉÓÁÎÉÑ ÜËÓÐÏÒÔÁ.\n"
 "ïΠÓÏÚÄÁÅÔÓÑ, ÎÏ ÜÔÏ ÍÏÖÅÔ ÂÙÔØ ÎÅ ÔÏ, ÞÔÏ ×ÁÍ ÎÕÖÎÏ"
 
-#: dllwrap.c:972
+#: dllwrap.c:970
 #, c-format
 msgid "DLLTOOL name    : %s\n"
 msgstr "DLLTOOL ÉÍÑ     : %s\n"
 
-#: dllwrap.c:973
+#: dllwrap.c:971
 #, c-format
 msgid "DLLTOOL options : %s\n"
 msgstr "DLLTOOL ÏÐÃÉÉ   : %s\n"
 
-#: dllwrap.c:974
+#: dllwrap.c:972
 #, c-format
 msgid "DRIVER name     : %s\n"
 msgstr "DRIVER ÉÍÑ      : %s\n"
 
-#: dllwrap.c:975
+#: dllwrap.c:973
 #, c-format
 msgid "DRIVER options  : %s\n"
 msgstr "DRIVER ÏÐÃÉÉ    : %s\n"
 
-#: emul_aix.c:51
+#: dwarf.c:93 dwarf.c:137 readelf.c:322 readelf.c:515
 #, c-format
-msgid "  [-g]         - 32 bit small archive\n"
-msgstr "  [-g]         - 32-ÂÉÔÎÙÊ ÍÁÌÅÎØËÉÊ ÁÒÈÉ×\n"
+msgid "Unhandled data length: %d\n"
+msgstr "äÌÉÎÁ ÎÅÏÂÒÁÂÁÔÙ×ÁÅÍÙÈ ÄÁÎÎÙÈ: %d\n"
 
-#: emul_aix.c:52
+#: dwarf.c:237
+msgid "badly formed extended line op encountered!\n"
+msgstr "×ÓÔÒÅÞÅΠÎÅ×ÅÒÎÏ ÓÆÏÒÍÉÒÏ×ÁÎÎÙÊ ÒÁÓÛÉÒÅÎÎÙÊ line-up!\n"
+
+#: dwarf.c:244
 #, c-format
-msgid "  [-X32]       - ignores 64 bit objects\n"
-msgstr "  [-X32]       - ÐÒÏÐÕÓËÁÅÔ 64-ÂÉÔÎÙÅ ÏÂßÅËÔÙ\n"
+msgid "  Extended opcode %d: "
+msgstr "  òÁÓÛÉÒÅÎÎÙÊ ËÏÄ ÏÐÅÒÁÃÉÉ %d: "
 
-#: emul_aix.c:53
+#: dwarf.c:249
 #, c-format
-msgid "  [-X64]       - ignores 32 bit objects\n"
-msgstr "  [-X64]       - ÐÒÏÐÕÓËÁÅÔ 32-ÂÉÔÎÙÅ ÏÂßÅËÔÙ\n"
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"ëÏÎÅàÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ\n"
+"\n"
 
-#: emul_aix.c:54
+#: dwarf.c:255
 #, c-format
-msgid "  [-X32_64]    - accepts 32 and 64 bit objects\n"
-msgstr "  [-X32_64]    - ÄÏÐÕÓËÁÅÔ 32- É 64-ÂÉÔÎÙÅ ÏÂßÅËÔÙ\n"
+msgid "set Address to 0x%lx\n"
+msgstr "ÕÓÔÁÎÏ×ËÁ ÁÄÒÅÓÁ × 0x%lx\n"
 
-#: ieee.c:311
-msgid "unexpected end of debugging information"
-msgstr "ÎÅÏÖÉÄÁÎÎÏÅ ÏËÏÎÞÁÎÉÅ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ"
+#: dwarf.c:260
+#, c-format
+msgid "  define new File Table entry\n"
+msgstr "  ÏÐÒÅÄÅÌÅÎÉÅ ÎÏ×ÏÇÏ ÐÕÎËÔÁ ôÁÂÌÉÃÙ ÆÁÊÌÏ×\n"
 
-#: ieee.c:398
-msgid "invalid number"
-msgstr "ÎÅ×ÅÒÎÙÊ ÎÏÍÅÒ"
+#: dwarf.c:261 dwarf.c:1944
+#, c-format
+msgid "  Entry\tDir\tTime\tSize\tName\n"
+msgstr "  ðÕÎËÔ\tëÁÔÁÌÏÇ\t÷ÒÅÍÑ\tòÁÚÍÅÒ\téÍÑ\n"
 
-#: ieee.c:451
-msgid "invalid string length"
-msgstr "ÎÅ×ÅÒÎÁÑ ÄÌÉÎÁ ÓÔÒÏËÉ"
+#: dwarf.c:263
+#, c-format
+msgid "   %d\t"
+msgstr "   %d\t"
 
-#: ieee.c:506 ieee.c:547
-msgid "expression stack overflow"
-msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ÓÔÅËÁ ×ÙÒÁÖÅÎÉÑ"
+#: dwarf.c:266 dwarf.c:268 dwarf.c:270 dwarf.c:1956 dwarf.c:1958 dwarf.c:1960
+#, c-format
+msgid "%lu\t"
+msgstr "%lu\t"
 
-#: ieee.c:526
-msgid "unsupported IEEE expression operator"
-msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÏÐÅÒÁÔÏÒ ×ÙÒÁÖÅÎÉÑ IEEE"
+#: dwarf.c:271
+#, c-format
+msgid ""
+"%s\n"
+"\n"
+msgstr ""
+"%s\n"
+"\n"
 
-#: ieee.c:541
-msgid "unknown section"
-msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÒÁÚÄÅÌ"
+#: dwarf.c:275
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr "îåéú÷åóôîùê: ÄÌÉÎÁ %d\n"
 
-#: ieee.c:562
-msgid "expression stack underflow"
-msgstr "ÏÐÕÓÔÏÛÅÎÉÅ ÓÔÅËÁ ×ÙÒÁÖÅÎÉÑ"
+#: dwarf.c:288
+msgid "<no .debug_str section>"
+msgstr "<ÎÅÔ ÒÁÚÄÅÌÁ .debug_str>"
 
-#: ieee.c:576
-msgid "expression stack mismatch"
-msgstr "ÎÅÓÏ×ÐÁÄÅÎÉÅ ÓÔÅËÁ ×ÙÒÁÖÅÎÉÑ"
+#: dwarf.c:294
+#, c-format
+msgid "DW_FORM_strp offset too big: %lx\n"
+msgstr "óÍÅÝÅÎÉÅ DW_FORM_strp ÓÌÉÛËÏÍ ÂÏÌØÛÏÅ: %lx\n"
 
-#: ieee.c:613
-msgid "unknown builtin type"
-msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ×ÓÔÒÏÅÎÎÙÊ ÔÉÐ"
+#: dwarf.c:295
+msgid "<offset is too big>"
+msgstr "<ÓÍÅÝÅÎÉÅ ÓÌÉÛËÏÍ ×ÅÌÉËÏ>"
 
-#: ieee.c:758
-msgid "BCD float type not supported"
-msgstr "ä×ÏÉÞÎÏ-ËÏÄÉÒÏ×ÁÎÎÙÊ ÄÅÓÑÔÉÞÎÙÊ ÔÉРӠÐÌÁ×ÁÀÝÅÊ ÚÁÐÑÔÏÊ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
+#: dwarf.c:528
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ TAG: %lx"
 
-#: ieee.c:895
-msgid "unexpected number"
-msgstr "ÎÅÏÖÉÄÁÎÎÏÅ ÞÉÓÌÏ"
+#: dwarf.c:564
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ FORM: %lx"
 
-#: ieee.c:902
-msgid "unexpected record type"
-msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ËÏÍÂÉÎÉÒÏ×ÁÎÎÙÊ ÔÉÐ"
+#: dwarf.c:573
+#, c-format
+msgid " %lu byte block: "
+msgstr " %lu-ÂÁÊÔÏ×ÙÊ ÂÌÏË: "
 
-#: ieee.c:935
-msgid "blocks left on stack at end"
-msgstr "× ËÏÎÃÅ ÓÔÅËÁ ÏÓÔÁÌÉÓØ ÂÌÏËÉ"
+#: dwarf.c:907
+#, c-format
+msgid "(User defined location op)"
+msgstr "(ïÐÒÅÄÅÌÅÎÎÏÅ ÐÏÌØÚÏ×ÁÔÅÌÅÍ ÒÁÚÍÅÝÅÎÉÅ ÏÐÅÒÁÃÉÉ)"
 
-#: ieee.c:1198
-msgid "unknown BB type"
-msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÔÉРBB"
+#: dwarf.c:909
+#, c-format
+msgid "(Unknown location op)"
+msgstr "(îÅÉÚ×ÅÓÔÎÏÅ ÒÁÚÍÅÝÅÎÉÅ ÏÐÅÒÁÃÉÉ)"
 
-#: ieee.c:1207
-msgid "stack overflow"
-msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ÓÔÅËÁ"
+#: dwarf.c:955
+msgid "Internal error: DWARF version is not 2 or 3.\n"
+msgstr "÷ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: ÎÏÍÅÒ ×ÅÒÓÉÉ DWARF ÎÅ 2 ÉÌÉ 3.\n"
 
-#: ieee.c:1230
-msgid "stack underflow"
-msgstr "ÏÐÕÓÔÏÛÅÎÉÅ ÓÔÅËÁ"
+#: dwarf.c:1053
+msgid "DW_FORM_data8 is unsupported when sizeof (unsigned long) != 8\n"
+msgstr "DW_FORM_data8 ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ, ËÏÇÄÁ sizeof (ÄÌÉÎÎÏÅ ÃÅÌÏÅ ÞÉÓÌÏ ÂÅÚ ÚÎÁËÁ) != 8\n"
 
-#: ieee.c:1342 ieee.c:1412 ieee.c:2109
-msgid "illegal variable index"
-msgstr "ÎÅ×ÅÒÎÙÊ ÉÎÄÅËÓ ÐÅÒÅÍÅÎÎÏÊ"
+#: dwarf.c:1102
+#, c-format
+msgid " (indirect string, offset: 0x%lx): %s"
+msgstr " (ËÏÓ×ÅÎÎÁÑ ÓÔÒÏËÁ, ÓÍÅÝÅÎÉÅ: 0x%lx): %s"
 
-#: ieee.c:1390
-msgid "illegal type index"
-msgstr "ÎÅ×ÅÒÎÙÊ ÉÎÄÅËÓ ÔÉÐÁ"
-
-#: ieee.c:1400 ieee.c:1437
-msgid "unknown TY code"
-msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ËÏÄ TY"
+#: dwarf.c:1111
+#, c-format
+msgid "Unrecognized form: %lu\n"
+msgstr "îÅÒÁÓÐÏÚÎÁÎÎÁÑ ÆÏÒÍÁ: %lu\n"
 
-#: ieee.c:1419
-msgid "undefined variable in TY"
-msgstr "ÎÅÏÐÒÅÄÅÌÅÎÎÁÑ ÐÅÒÅÍÅÎÎÁÑ × TY"
+#: dwarf.c:1196
+#, c-format
+msgid "(not inlined)"
+msgstr "(ÎÅ ×ÎÕÔÒÉÓÔÒÏÞÎÙÊ)"
 
-#. Pascal file name.  FIXME.
-#: ieee.c:1830
-msgid "Pascal file name not supported"
-msgstr "éÍÑ ÆÁÊÌÁ Pascal ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
+#: dwarf.c:1199
+#, c-format
+msgid "(inlined)"
+msgstr "(×ÎÕÔÒÉÓÔÒÏÞÎÙÊ)"
 
-#: ieee.c:1878
-msgid "unsupported qualifier"
-msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ËÌÁÓÓÉÆÉËÁÔÏÒ"
+#: dwarf.c:1202
+#, c-format
+msgid "(declared as inline but ignored)"
+msgstr "(ÏÂßÑ×ÌÅΠËÁË ×ÎÕÔÒÉÓÔÒÏÞÎÙÊ, ÎÏ ÐÒÏÐÕÝÅÎ)"
 
-#: ieee.c:2147
-msgid "undefined variable in ATN"
-msgstr "ÎÅÏÐÒÅÄÅÌÅÎÎÁÑ ÐÅÒÅÍÅÎÎÁÑ × ATN"
+#: dwarf.c:1205
+#, c-format
+msgid "(declared as inline and inlined)"
+msgstr "(ÏÂßÑ×ÌÅΠËÁË ×ÎÕÔÒÉÓÔÒÏÞÎÙÊ, ÔÁË É ÅÓÔØ)"
 
-#: ieee.c:2190
-msgid "unknown ATN type"
-msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÔÉРATN"
+#: dwarf.c:1208
+#, c-format
+msgid "  (Unknown inline attribute value: %lx)"
+msgstr "  (îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ ×ÎÕÔÒÉÓÔÒÏÞÎÏÇÏ ÁÔÒÉÂÕÔÁ: %lx)"
 
-#. Reserved for FORTRAN common.
-#: ieee.c:2312
-msgid "unsupported ATN11"
-msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ATN11"
+#: dwarf.c:1354 dwarf.c:2484
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr " [ÂÅÚ DW_AT_frame_base]"
 
-#. We have no way to record this information.  FIXME.
-#: ieee.c:2339
-msgid "unsupported ATN12"
-msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ATN12"
+#: dwarf.c:1357
+#, c-format
+msgid "(location list)"
+msgstr "(ÓÐÉÓÏË ÍÅÓÔÏÐÏÌÏÖÅÎÉÑ)"
 
-#: ieee.c:2399
-msgid "unexpected string in C++ misc"
-msgstr "ÎÅÏÖÉÄÁÎÎÁÑ ÓÔÒÏËÁ × C++ misc"
+#: dwarf.c:1475
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ AT: %lx "
 
-#: ieee.c:2412
-msgid "bad misc record"
-msgstr "ÐÌÏÈÁÑ ÚÁÐÉÓØ misc"
+#: dwarf.c:1544
+#, c-format
+msgid "No comp units in %s section ?"
+msgstr "÷ ÒÁÚÄÅÌÅ %s ÎÅÔ ÜÌÅÍÅÎÔÏ× comp?"
 
-#: ieee.c:2453
-msgid "unrecognized C++ misc record"
-msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ C++ ÚÁÐÉÓØ misc"
+#: dwarf.c:1553
+#, c-format
+msgid "Not enough memory for a debug info array of %u entries"
+msgstr "îÅÄÏÓÔÁÔÏÞÎÏ ÐÁÍÑÔÉ ÄÌÑ ÍÁÓÓÉ×Á Ó ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÅÊ ÉÚ %u ÜÌÅÍÅÎÔÏ×"
 
-#: ieee.c:2568
-msgid "undefined C++ object"
-msgstr "ÎÅÏÐÒÅÄÅÌÅÎÎÙÊ ÏÂßÅËÔ C++"
+#: dwarf.c:1561 dwarf.c:2573
+#, c-format
+msgid ""
+"The section %s contains:\n"
+"\n"
+msgstr ""
+"òÁÚÄÅÌ %s ÓÏÄÅÒÖÉÔ:\n"
+"\n"
 
-#: ieee.c:2602
-msgid "unrecognized C++ object spec"
-msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ÏÂßÅËÔÁ C++"
+#: dwarf.c:1569
+#, c-format
+msgid "Unable to locate %s section!\n"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÒÁÚÍÅÝÅÎÉÅ ÒÁÚÄÅÌÁ %s!\n"
 
-#: ieee.c:2638
-msgid "unsupported C++ object type"
-msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÔÉРÏÂßÅËÔÁ C++"
+#: dwarf.c:1635
+#, c-format
+msgid "  Compilation Unit @ offset 0x%lx:\n"
+msgstr "  åÄÉÎÉÃÁ ËÏÍÐÉÌÑÃÉÉ @ ÓÍÅÝÅÎÉÅ 0x%lx:\n"
 
-#: ieee.c:2648
-msgid "C++ base class not defined"
-msgstr "ÂÁÚÏ×ÙÊ ËÌÁÓÓ C++ ÎÅ ÏÐÒÅÄÅÌÅÎ"
+#: dwarf.c:1636
+#, c-format
+msgid "   Length:        %ld\n"
+msgstr "   äÌÉÎÁ:         %ld\n"
 
-#: ieee.c:2660 ieee.c:2765
-msgid "C++ object has no fields"
-msgstr "ÏÂßÅËÔ C++ ÎÅ ÉÍÅÅÔ ÐÏÌÅÊ"
+#: dwarf.c:1637
+#, c-format
+msgid "   Version:       %d\n"
+msgstr "   ÷ÅÒÓÉÑ:        %d\n"
 
-#: ieee.c:2679
-msgid "C++ base class not found in container"
-msgstr "ÂÁÚÏ×ÙÊ ËÌÁÓÓ C++ ÎÅ ÎÁÊÄÅΠנËÏÎÅÊÎÅÒÅ"
+#: dwarf.c:1638
+#, c-format
+msgid "   Abbrev Offset: %ld\n"
+msgstr "   óÍÅÝ. ÁÂÂÒÅ×:  %ld\n"
 
-#: ieee.c:2786
-msgid "C++ data member not found in container"
-msgstr "ÜÌÅÍÅÎÔ ËÌÁÓÓÁ C++ ÎÅ ÎÁÊÄÅΠנËÏÎÔÅÊÎÅÒÅ"
+#: dwarf.c:1639
+#, c-format
+msgid "   Pointer Size:  %d\n"
+msgstr "   òÁÚÍ. ÕËÁÚÁÔ:  %d\n"
 
-#: ieee.c:2827 ieee.c:2977
-msgid "unknown C++ visibility"
-msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ ×ÉÄÉÍÏÓÔØ C++"
+#: dwarf.c:1644
+msgid "Only version 2 and 3 DWARF debug information is currently supported.\n"
+msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÏÔÌÁÄÏÞÎÁÑ ÉÎÆÏÒÍÁÃÉÑ ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3.\n"
 
-#: ieee.c:2861
-msgid "bad C++ field bit pos or size"
-msgstr "ÎÅ×ÅÒÎÙÊ Ä×ÏÉÞÎÙÊ ÒÁÚÒÑÄ ÉÌÉ ÒÁÚÍÅÒ ÐÏÌÑ C++"
+#: dwarf.c:1685
+#, c-format
+msgid "Unable to locate entry %lu in the abbreviation table\n"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÒÁÚÍÅÝÅÎÉÅ ÐÕÎËÔÁ %lu × ÔÁÂÌÉÃÅ ÁÂÂÒÅ×ÉÁÃÉÉ\n"
 
-#: ieee.c:2953
-msgid "bad type for C++ method function"
-msgstr "ÎÅ×ÅÒÎÙÊ ÔÉРÆÕÎËÃÉÉ ÍÅÔÏÄÁ C++"
+#: dwarf.c:1691
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n"
+msgstr " <%d><%lx>: îÏÍÅÒ ÁÂÂÒÅ×: %lu (%s)\n"
 
-#: ieee.c:2963
-msgid "no type information for C++ method function"
-msgstr "ÎÅÔ ÉÎÆÏÒÍÁÃÉÉ Ï ÔÉÐÅ ÄÌÑ ÆÕÎËÃÉÉ ÍÅÔÏÄÁ C++"
+#: dwarf.c:1785
+#, c-format
+msgid "%s section needs a populated .debug_info section\n"
+msgstr "òÁÚÄÅÌÕ %s ÎÅÏÂÈÏÄÉÍ ÚÁÐÏÌÎÅÎÎÙÊ ÒÁÚÄÅÌ .debug_info\n"
 
-#: ieee.c:3002
-msgid "C++ static virtual method"
-msgstr "ÓÔÁÔÉÞÅÓËÉÊ ×ÉÒÔÕÁÌØÎÙÊ ÍÅÔÏÄ C++"
+#: dwarf.c:1792
+#, c-format
+msgid "%s section has more comp units than .debug_info section\n"
+msgstr "òÁÚÄÅÌ %s ÓÏÄÅÒÖÉÔ ÂÏÌØÛÅ ÜÌÅÍÅÎÔÏ× comp, ÞÅÍ ÒÁÚÄÅÌ .debug_info\n"
 
-#: ieee.c:3097
-msgid "unrecognized C++ object overhead spec"
-msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ ÓÌÕÖÅÂÎÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ÏÂßÅËÔÁ C++"
+#: dwarf.c:1794
+#, c-format
+msgid ""
+"assuming that the pointer size is %d, from the last comp unit in .debug_info\n"
+"\n"
+msgstr ""
+"ÐÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ, ÞÔÏ ÒÁÚÍÅÒ ÕËÁÚÁÔÅÌÑ - %d, ÏÔ ÐÏÓÌÅÄÎÅÇÏ ÜÌÅÍÅÎÔÁ comp × .debug_info\n"
+"\n"
 
-#: ieee.c:3136
-msgid "undefined C++ vtable"
-msgstr "ÎÅÏÐÒÅÄÅÌÅÎÎÁÑ ×ÉÒÔÕÁÌØÎÁÑ ÔÁÂÌÉÃÁ C++"
+#: dwarf.c:1819
+#, c-format
+msgid ""
+"\n"
+"Dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"\n"
+"äÁÍРÄÌÑ ÏÔÌÁÄËÉ ÓÏÄÅÒÖÉÍÏÇÏ ÒÁÚÄÅÌÁ %s:\n"
+"\n"
 
-#: ieee.c:3205
-msgid "C++ default values not in a function"
-msgstr "ÚÎÁÞÅÎÉÑ C++ ÐÏ ÕÍÏÌÞÁÎÉÀ ÎÅ × ÆÕÎËÃÉÉ"
+#: dwarf.c:1858
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr "ðÏÈÏÖÅ, ÞÔÏ ÓÔÒÏËÁ ÉÎÆÏ ÐÏ×ÒÅÖÄÅÎÁ - ÒÁÚÄÅÌ ÓÌÉÛËÏÍ ÍÁÌ\n"
 
-#: ieee.c:3245
-msgid "unrecognized C++ default type"
-msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÔÉРC++ ÐÏ ÕÍÏÌÞÁÎÉÀ"
+#: dwarf.c:1867
+msgid "Only DWARF version 2 and 3 line info is currently supported.\n"
+msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ ÓÔÒÏËÉ ÉÎÆÏ ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3.\n"
 
-#: ieee.c:3276
-msgid "reference parameter is not a pointer"
-msgstr "ÓÓÙÌÏÞÎÙÊ ÐÁÒÁÍÅÔÒ ÎÅ Ñ×ÌÑÅÔÓÑ ÕËÁÚÁÔÅÌÅÍ"
+#: dwarf.c:1894
+#, c-format
+msgid "  Length:                      %ld\n"
+msgstr "  äÌÉÎÁ:                       %ld\n"
 
-#: ieee.c:3359
-msgid "unrecognized C++ reference type"
-msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÓÓÙÌÏÞÎÙÊ ÔÉРC++"
+#: dwarf.c:1895
+#, c-format
+msgid "  DWARF Version:               %d\n"
+msgstr "  DWARF ×ÅÒÓÉÑ:                %d\n"
 
-#: ieee.c:3441
-msgid "C++ reference not found"
-msgstr "ÓÓÙÌËÁ C++ ÎÅ ÎÁÊÄÅÎÁ"
+#: dwarf.c:1896
+#, c-format
+msgid "  Prologue Length:             %d\n"
+msgstr "  äÌÉÎÁ ÐÒÏÌÏÇÁ:               %d\n"
 
-#: ieee.c:3449
-msgid "C++ reference is not pointer"
-msgstr "ÓÓÙÌËÁ C++ ÎÅ Ñ×ÌÑÅÔÓÑ ÕËÁÚÁÔÅÌÅÍ"
+#: dwarf.c:1897
+#, c-format
+msgid "  Minimum Instruction Length:  %d\n"
+msgstr "  íÉÎÉÍ. ÄÌÉÎÁ ÉÎÓÔÒÕËÃÉÉ:     %d\n"
 
-#: ieee.c:3475 ieee.c:3483
-msgid "missing required ASN"
-msgstr "ÏÔÓÕÔÓÔ×ÕÅÔ ÔÒÅÂÕÅÍÙÊ ASN"
+#: dwarf.c:1898
+#, c-format
+msgid "  Initial value of 'is_stmt':  %d\n"
+msgstr "  îÁÞ. ÚÎÁÞÅÎÉÅ 'is_stmt':     %d\n"
 
-#: ieee.c:3510 ieee.c:3518
-msgid "missing required ATN65"
-msgstr "ÏÔÓÕÔÓÔ×ÕÅÔ ÔÒÅÂÕÅÍÙÊ ATN65"
+#: dwarf.c:1899
+#, c-format
+msgid "  Line Base:                   %d\n"
+msgstr "  ïÓÎÏ×ÁÎÉÅ ÓÔÒÏËÉ:            %d\n"
 
-#: ieee.c:3532
-msgid "bad ATN65 record"
-msgstr "ÐÌÏÈÁÑ ÚÁÐÉÓØ ATN65"
+#: dwarf.c:1900
+#, c-format
+msgid "  Line Range:                  %d\n"
+msgstr "  äÉÁÐÁÚÏΠÓÔÒÏËÉ:             %d\n"
 
-#: ieee.c:4160
+#: dwarf.c:1901
 #, c-format
-msgid "IEEE numeric overflow: 0x"
-msgstr "ÞÉÓÌÏ×ÏÅ ÐÅÒÅÐÏÌÎÅÎÉÅ IEEE: 0x"
+msgid "  Opcode Base:                 %d\n"
+msgstr "  ïÓÎÏ×ÁÎÉÅ ËÏÄÁ ÏÐÅÒÁÃÉÉ:     %d\n"
 
-#: ieee.c:4204
+#: dwarf.c:1902
 #, c-format
-msgid "IEEE string length overflow: %u\n"
-msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ÄÌÉÎÙ ÓÔÒÏËÉ IEEE: %u\n"
+msgid "  (Pointer size:               %u)%s\n"
+msgstr "  (òÁÚÍÅÒ ÕËÁÚÁÔÅÌÑ:           %u)%s\n"
 
-#: ieee.c:5203
+#: dwarf.c:1913
 #, c-format
-msgid "IEEE unsupported integer type size %u\n"
-msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÒÁÚÍÅÒ ÃÅÌÏÇÏ ÔÉÐÁ IEEE %u\n"
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+"\n"
+" ëÏÄÙ ÏÐÅÒÁÃÉÊ:\n"
 
-#: ieee.c:5237
+#: dwarf.c:1916
 #, c-format
-msgid "IEEE unsupported float type size %u\n"
-msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÒÁÚÍÅÒ ÔÉÐÁ Ó ÐÌÁ×ÁÀÝÅÊ ÚÁÐÑÔÏÊ IEEE %u\n"
+msgid "  Opcode %d has %d args\n"
+msgstr "  ëÏÄ ÏÐÅÒÁÃÉÉ %d ÓÏÄÅÒÖÉÔ %d ÁÒÇÕÍÅÎÔÏ×\n"
 
-#: ieee.c:5271
+#: dwarf.c:1922
 #, c-format
-msgid "IEEE unsupported complex type size %u\n"
-msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÒÁÚÍÅÒ ËÏÍÐÌÅËÓÎÏÇÏ ÔÉÐÁ IEEE%u\n"
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+"\n"
+" ôÁÂÌÉÃÁ ËÁÔÁÌÏÇÏ× ÐÕÓÔÁ.\n"
 
-#: nlmconv.c:267 srconv.c:1810
-msgid "input and output files must be different"
-msgstr "×ÈÏÄÎÏÊ É ×ÙÈÏÄÎÏÊ ÆÁÊÌÙ ÄÏÌÖÎÙ ÂÙÔØ ÒÁÚÌÉÞÎÙÍÉ"
+#: dwarf.c:1925
+#, c-format
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+"\n"
+" ôÁÂÌÉÃÁ ËÁÔÁÌÏÇÏ×:\n"
 
-#: nlmconv.c:314
-msgid "input file named both on command line and with INPUT"
-msgstr "×ÈÏÄÎÏÊ ÆÁÊÌ ÎÁÚ×ÁΠנËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ É × INPUT"
+#: dwarf.c:1929
+#, c-format
+msgid "  %s\n"
+msgstr "  %s\n"
 
-#: nlmconv.c:323
-msgid "no input file"
-msgstr "ÎÅÔ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ"
+#: dwarf.c:1940
+#, c-format
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr ""
+"\n"
+" ôÁÂÌÉÃÁ ÉÍÅΠÆÁÊÌÏ× ÐÕÓÔÁ.\n"
 
-#: nlmconv.c:353
-msgid "no name for output file"
-msgstr "ÎÅÔ ÉÍÅÎÉ ÄÌÑ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ"
+#: dwarf.c:1943
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+"\n"
+" ôÁÂÌÉÃÁ ÉÍÅΠÆÁÊÌÏ×:\n"
 
-#: nlmconv.c:367
-msgid "warning: input and output formats are not compatible"
-msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ×ÈÏÄÎÏÊ É ×ÙÈÏÄÎÏÊ ÆÏÒÍÁÔÙ ÎÅ ÓÏ×ÍÅÓÔÉÍÙ"
+#: dwarf.c:1951
+#, c-format
+msgid "  %d\t"
+msgstr "  %d\t"
 
-#: nlmconv.c:396
-msgid "make .bss section"
-msgstr "ÓÏÚÄÁÎÉÅ ÒÁÚÄÅÌÁ .bss"
+#: dwarf.c:1962
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
 
-#: nlmconv.c:405
-msgid "make .nlmsections section"
-msgstr "ÓÏÚÄÁÎÉÅ ÒÁÚÄÅÌÁ .nlmsections"
+#. Now display the statements.
+#: dwarf.c:1970
+#, c-format
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+"\n"
+" ïÐÅÒÁÔÏÒÙ ÎÏÍÅÒÁ ÓÔÒÏËÉ:\n"
 
-#: nlmconv.c:407
-msgid "set .nlmsections flags"
-msgstr "ÕÓÔÁÎÏ×ËÁ ÆÌÁÇÏ× .nlmsections"
+#: dwarf.c:1986
+#, c-format
+msgid "  Special opcode %d: advance Address by %lu to 0x%lx"
+msgstr "  óÐÅÃÉÁÌØÎÙÊ ËÏÄ ÏÐÅÒÁÃÉÉ %d: ÐÒÏÄ×ÉÖÅÎÉÅ ÁÄÒÅÓÁ ÎÁ %lu × 0x%lx"
 
-#: nlmconv.c:435
-msgid "set .bss vma"
-msgstr "ÕÓÔÁÎÏ×ËÁ .bss vma"
+#: dwarf.c:1990
+#, c-format
+msgid " and Line by %d to %d\n"
+msgstr " É ÓÔÒÏËÉ ÎÁ %d × %d\n"
 
-#: nlmconv.c:442
-msgid "set .data size"
-msgstr "ÕÓÔÁÎÏ×ËÁ ÒÁÚÍÅÒÁ .data"
+#: dwarf.c:1998
+msgid "Extend line ops need a valid pointer size, guessing at 4\n"
+msgstr "äÌÑ ÒÁÓÛÉÒÅÎÎÙÈ ËÏÄÏ× ÏÐÅÒÁÃÉÊ ÎÕÖÅΠ×ÅÒÎÙÊ ÒÁÚÍÅÒ ÕËÁÚÁÔÅÌÑ; ÐÒÅÄÐÏÌÁÇÁÅÔÓÑ 4\n"
 
-#: nlmconv.c:622
+#: dwarf.c:2007
 #, c-format
-msgid "warning: symbol %s imported but not in import list"
-msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÓÉÍ×ÏÌ %s ÉÍÐÏÒÔÉÒÏ×ÁÎ, ÎÏ ÅÇÏ ÎÅÔ × ÓÐÉÓËÅ ÉÍÐÏÒÔÁ"
+msgid "  Copy\n"
+msgstr "  ëÏÐÉÑ\n"
 
-#: nlmconv.c:642
-msgid "set start address"
-msgstr "ÕÓÔÁÎÏ×ËÁ ÎÁÞÁÌØÎÏÇÏ ÁÄÒÅÓÁ"
+#: dwarf.c:2015
+#, c-format
+msgid "  Advance PC by %lu to 0x%lx\n"
+msgstr "  ðÒÏÄ×ÉÖÅÎÉÅ ÓÞ£ÔÞÉËÁ ËÏÍÁÎÄ ÎÁ %lu × 0x%lx\n"
 
-#: nlmconv.c:691
+#: dwarf.c:2023
 #, c-format
-msgid "warning: START procedure %s not defined"
-msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: START-ÐÒÏÃÅÄÕÒÁ %s ÎÅ ÏÐÒÅÄÅÌÅÎÁ"
+msgid "  Advance Line by %d to %d\n"
+msgstr "  ðÒÏÄ×ÉÖÅÎÉÅ ÓÔÒÏËÉ ÎÁ %d × %d\n"
 
-#: nlmconv.c:693
+#: dwarf.c:2030
 #, c-format
-msgid "warning: EXIT procedure %s not defined"
-msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: EXIT-ÐÒÏÃÅÄÕÒÁ %s ÎÅ ÏÐÒÅÄÅÌÅÎÁ"
+msgid "  Set File Name to entry %d in the File Name Table\n"
+msgstr "  õÓÔÁÎÏ×ËÁ ÉÍÅÎÉ ÆÁÊÌÁ × ÐÕÎËÔ %d × ÔÁÂÌÉÃÅ ÉÍÅΠÆÁÊÌÏ×\n"
 
-#: nlmconv.c:695
+#: dwarf.c:2038
 #, c-format
-msgid "warning: CHECK procedure %s not defined"
-msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: CHECK-ÐÒÏÃÅÄÕÒÁ %s ÎÅ ÏÐÒÅÄÅÌÅÎÁ"
+msgid "  Set column to %lu\n"
+msgstr "  õÓÔÁÎÏ×ËÁ ÓÔÏÌÂÃÁ × %lu\n"
 
-#: nlmconv.c:716 nlmconv.c:905
-msgid "custom section"
-msgstr "ÒÁÚÄÅÌ custom"
+#: dwarf.c:2045
+#, c-format
+msgid "  Set is_stmt to %d\n"
+msgstr "  õÓÔÁÎÏ×ËÁ is_stmt × %d\n"
 
-#: nlmconv.c:737 nlmconv.c:934
-msgid "help section"
-msgstr "ÒÁÚÄÅÌ help"
+#: dwarf.c:2050
+#, c-format
+msgid "  Set basic block\n"
+msgstr "  õÓÔÁÎÏ×ËÁ ÂÁÚÏ×ÏÇÏ ÂÌÏËÁ\n"
 
-#: nlmconv.c:759 nlmconv.c:952
-msgid "message section"
-msgstr "ÒÁÚÄÅÌ message"
+#: dwarf.c:2058
+#, c-format
+msgid "  Advance PC by constant %lu to 0x%lx\n"
+msgstr "  ðÒÏÄ×ÉÖÅÎÉÅ ÓÞ£ÔÞÉËÁ ËÏÍÁÎÄ ÎÁ ÐÏÓÔÏÑÎÎÕÀ %lu × 0x%lx\n"
 
-#: nlmconv.c:775 nlmconv.c:985
-msgid "module section"
-msgstr "ÒÁÚÄÅÌ module"
+#: dwarf.c:2066
+#, c-format
+msgid "  Advance PC by fixed size amount %lu to 0x%lx\n"
+msgstr "  ðÒÏÄ×ÉÖÅÎÉÅ ÓÞ£ÔÞÉËÁ ËÏÍÁÎÄ ÎÁ ×ÅÌÉÞÉÎÕ ÆÉËÓÉÒÏ×ÁÎÎÏÇÏ ÒÁÚÍÅÒÁ %lu × 0x%lx\n"
 
-#: nlmconv.c:795 nlmconv.c:1001
-msgid "rpc section"
-msgstr "ÒÁÚÄÅÌ rpc"
+#: dwarf.c:2071
+#, c-format
+msgid "  Set prologue_end to true\n"
+msgstr "  õÓÔÁÎÏ×ËÁ prologue_end × `ÉÓÔÉÎÁ'\n"
 
-#. There is no place to record this information.
-#: nlmconv.c:831
+#: dwarf.c:2075
 #, c-format
-msgid "%s: warning: shared libraries can not have uninitialized data"
-msgstr "%s: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÓÏ×ÍÅÓÔÎÏ ÉÓÐÏÌØÚÕÅÍÙÅ ÂÉÂÌÉÏÔÅËÉ ÎÅ ÍÏÇÕÔ ÉÍÅÔØ ÎÅÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÎÎÙÅ ÄÁÎÎÙÅ"
+msgid "  Set epilogue_begin to true\n"
+msgstr "  õÓÔÁÎÏ×ËÁ epilogue_begin × `ÉÓÔÉÎÁ'\n"
 
-#: nlmconv.c:852 nlmconv.c:1020
-msgid "shared section"
-msgstr "ÒÁÚÄÅÌ shared"
+#: dwarf.c:2081
+#, c-format
+msgid "  Set ISA to %lu\n"
+msgstr "  õÓÔÁÎÏ×ËÁ ISA × %lu\n"
 
-#: nlmconv.c:860
-msgid "warning: No version number given"
-msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: îÅ ÕËÁÚÁΠÎÏÍÅÒ ×ÅÒÓÉÉ"
+#: dwarf.c:2085
+#, c-format
+msgid "  Unknown opcode %d with operands: "
+msgstr "  îÅÉÚ×ÅÓÔÎÙÊ ËÏÄ ÏÐÅÒÁÃÉÉ %d Ó ÏÐÅÒÁÎÄÁÍÉ: "
 
-#: nlmconv.c:900 nlmconv.c:929 nlmconv.c:947 nlmconv.c:996 nlmconv.c:1015
+#: dwarf.c:2111 dwarf.c:2197 dwarf.c:2271 dwarf.c:2382 dwarf.c:2514
+#: dwarf.c:2739
 #, c-format
-msgid "%s: read: %s"
-msgstr "%s: ÞÔÅÎÉÅ: %s"
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+"óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ %s:\n"
+"\n"
 
-#: nlmconv.c:922
-msgid "warning: FULLMAP is not supported; try ld -M"
-msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: FULLMAP ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ; ÐÏÐÒÏÂÕÊÔÅ ld -M"
+#: dwarf.c:2151
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ pubname ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3\n"
 
-#: nlmconv.c:1098
+#: dwarf.c:2158
 #, c-format
-msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
-msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] [in-ÆÁÊÌ [out-ÆÁÊÌ]]\n"
+msgid "  Length:                              %ld\n"
+msgstr "  äÌÉÎÁ:                               %ld\n"
 
-#: nlmconv.c:1099
+#: dwarf.c:2160
 #, c-format
-msgid " Convert an object file into a NetWare Loadable Module\n"
-msgstr " ëÏÎ×ÅÒÔÉÒÕÅÔ ÏÂßÅËÔÎÙÊ ÆÁÊÌ × ÚÁÇÒÕÖÁÅÍÙÊ ÍÏÄÕÌØ ÓÉÓÔÅÍÙ NetWare\n"
+msgid "  Version:                             %d\n"
+msgstr "  ÷ÅÒÓÉÑ:                              %d\n"
 
-#: nlmconv.c:1100
+#: dwarf.c:2162
+#, c-format
+msgid "  Offset into .debug_info section:     %ld\n"
+msgstr "  óÍÅÝÅÎÉÅ × ÒÁÚÄÅÌ .debug_info:       %ld\n"
+
+#: dwarf.c:2164
+#, c-format
+msgid "  Size of area in .debug_info section: %ld\n"
+msgstr "  òÁÚÍ. ÏÂÌÁÓÔÉ × ÒÁÚÄÅÌÅ .debug_info: %ld\n"
+
+#: dwarf.c:2167
 #, c-format
 msgid ""
-" The options are:\n"
-"  -I --input-target=<bfdname>   Set the input binary file format\n"
-"  -O --output-target=<bfdname>  Set the output binary file format\n"
-"  -T --header-file=<file>       Read <file> for NLM header information\n"
-"  -l --linker=<linker>          Use <linker> for any linking\n"
-"  -d --debug                    Display on stderr the linker command line\n"
-"  -h --help                     Display this information\n"
-"  -v --version                  Display the program's version\n"
+"\n"
+"    Offset\tName\n"
 msgstr ""
-" ïÐÃÉÉ:\n"
-"  -I --input-target=<bfd-ÉÍÑ>   õÓÔÁÎÏ×ËÁ ÆÏÒÍÁÔÁ ×ÈÏÄÎÏÇÏ Ä×ÏÉÞÎÏÇÏ ÆÁÊÌÁ\n"
-"  -O --output-target=<bfd-ÉÍÑ>  õÓÔÁÎÏ×ËÁ ÆÏÒÍÁÔÁ ×ÙÈÏÄÎÏÇÏ Ä×ÏÉÞÎÏÇÏ ÆÁÊÌÁ\n"
-"  -T --header-file=<ÆÁÊÌ>       þÔÅÎÉÅ <ÆÁÊÌÁ> Ó ÉÎÆÏÒÍÁÃÉÅÊ ÚÁÇÏÌÏ×ËÁ NLM\n"
-"  -l --linker=<ËÏÍÐÏÎÏ×ÝÉË>     éÓÐÏÌØÚÏ×ÁÎÉÅ <ËÏÍÐÏÎÏ×ÝÉËÁ> ÄÌÑ ÌÀÂÏÇÏ Ó×ÑÚÙ×ÁÎÉÑ\n"
-"  -d --debug                    ÷Ù×ÏÄ ÎÁ stderr ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ ËÏÍÐÏÎÏ×ÝÉËÁ\n"
-"  -h --help                     ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n"
-"  -v --version                  ÷Ù×ÏÄ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ\n"
+"\n"
+"    óÍÅÝÅÎÉÅ\téÍÑ\n"
 
-#: nlmconv.c:1140
+#: dwarf.c:2218
 #, c-format
-msgid "support not compiled in for %s"
-msgstr "ÏÔËÏÍÐÉÌÉÒÏ×ÁΠÂÅÚ ÐÏÄÄÅÒÖËÉ %s"
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACINFO_start_file - ÎÏÍÅÒ_ÓÔÒÏËÉ: %d ÎÏÍÅÒ_ÆÁÊÌÁ: %d\n"
 
-#: nlmconv.c:1177
-msgid "make section"
-msgstr "ÒÁÚÄÅÌ make"
+#: dwarf.c:2224
+#, c-format
+msgid " DW_MACINFO_end_file\n"
+msgstr " DW_MACINFO_end_file\n"
 
-#: nlmconv.c:1191
-msgid "set section size"
-msgstr "ÕÓÔÁÎÏ×ËÁ ÒÁÚÍÅÒÁ ÒÁÚÄÅÌÁ"
+#: dwarf.c:2232
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_define - ÎÏÍÅÒ_ÓÔÒÏËÉ : %d ÍÁËÒÏ : %s\n"
 
-#: nlmconv.c:1197
-msgid "set section alignment"
-msgstr "ÕÓÔÁÎÏ×ËÁ ÏÒÉÅÎÔÁÃÉÉ ÒÁÚÄÅÌÁ"
+#: dwarf.c:2241
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_undef - ÎÏÍÅÒ_ÓÔÒÏËÉ : %d ÍÁËÒÏ : %s\n"
 
-#: nlmconv.c:1201
-msgid "set section flags"
-msgstr "ÕÓÔÁÎÏ×ËÁ ÆÌÁÇÏ× ÒÁÚÄÅÌÁ"
+#: dwarf.c:2253
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr " DW_MACINFO_vendor_ext - ËÏÎÓÔÁÎÔÁ : %d ÓÔÒÏËÁ : %s\n"
 
-#: nlmconv.c:1212
-msgid "set .nlmsections size"
-msgstr "ÕÓÔÁÎÏ×ËÁ ÒÁÚÍÅÒÁ .nlmsections"
+#: dwarf.c:2282
+#, c-format
+msgid "  Number TAG\n"
+msgstr "  þÉÓÌÏ TAG\n"
 
-#: nlmconv.c:1293 nlmconv.c:1301 nlmconv.c:1310 nlmconv.c:1315
-msgid "set .nlmsection contents"
-msgstr "ÕÓÔÁÎÏ×ËÁ ÓÏÄÅÒÖÉÍÏÇÏ .nlmsections"
+#: dwarf.c:2288
+#, c-format
+msgid "   %ld      %s    [%s]\n"
+msgstr "   %ld      %s    [%s]\n"
 
-#: nlmconv.c:1794
-msgid "stub section sizes"
-msgstr "ÒÁÚÍÅÒÙ ÒÁÚÄÅÌÁ ÚÁÇÌÕÛËÉ"
+#: dwarf.c:2291
+msgid "has children"
+msgstr "ÉÍÅÅÔ ÐÏÔÏÍËÏ×"
 
-#: nlmconv.c:1841
-msgid "writing stub"
-msgstr "ÚÁÐÉÓÙ×ÁÅÔÓÑ ÚÁÇÌÕÛËÁ"
+#: dwarf.c:2291
+msgid "no children"
+msgstr "ÎÅÔ ÐÏÔÏÍËÏ×"
 
-#: nlmconv.c:1925
+#: dwarf.c:2294
 #, c-format
-msgid "unresolved PC relative reloc against %s"
-msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÏÅ ÏÔÎÏÓÉÔÅÌØÎÏÅ ÐÅÒÅÍÅÝÅÎÉÅ ÐÏ ÓÞÅÔÞÉËÕ ËÏÍÁÎÄ × %s"
+msgid "    %-18s %s\n"
+msgstr "    %-18s %s\n"
 
-#: nlmconv.c:1989
+#: dwarf.c:2327 dwarf.c:2510 dwarf.c:2684
 #, c-format
-msgid "overflow when adjusting relocation against %s"
-msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ÐÒÉ ÒÅÇÕÌÉÒÏ×ËÅ ÐÅÒÅÍÅÝÅÎÉÑ × %s"
+msgid ""
+"\n"
+"The %s section is empty.\n"
+msgstr ""
+"\n"
+"òÁÚÄÅÌ %s ÐÕÓÔ.\n"
+
+#. FIXME: Should we handle this case?
+#: dwarf.c:2372
+msgid "Location lists in .debug_info section aren't in ascending order!\n"
+msgstr "óÐÉÓËÉ ÍÅÓÔÏÐÏÌÏÖÅÎÉÊ × ÒÁÚÄÅÌÅ .debug_info ÎÅ ÕÐÏÒÑÄÏÞÅÎÙ ÐÏ ×ÏÚÒÁÓÔÁÎÉÀ!\n"
+
+#: dwarf.c:2375
+msgid "No location lists in .debug_info section!\n"
+msgstr "÷ ÒÁÚÄÅÌÅ .debug_info ÎÅÔ ÓÐÉÓËÏ× ÍÅÓÔÏÐÏÌÏÖÅÎÉÊ!\n"
 
-#: nlmconv.c:2116
+#: dwarf.c:2379
 #, c-format
-msgid "%s: execution of %s failed: "
-msgstr "%s: ×ÙÐÏÌÎÅÎÉÅ %s ÚÁ×ÅÒÛÉÌÏÓØ ÎÅÕÄÁÞÅÊ: "
+msgid "Location lists in %s section start at 0x%lx\n"
+msgstr "óÐÉÓËÉ ÍÅÓÔÏÐÏÌÏÖÅÎÉÊ × ÒÁÚÄÅÌÅ %s ÎÁÞÉÎÁÀÔÓÑ Ó 0x%lx\n"
 
-#: nlmconv.c:2131
+#: dwarf.c:2383
 #, c-format
-msgid "Execution of %s failed"
-msgstr "÷ÙÐÏÌÎÅÎÉÅ %s ÚÁ×ÅÒÛÉÌÏÓØ ÎÅÕÄÁÞÅÊ"
+msgid "    Offset   Begin    End      Expression\n"
+msgstr "    óÍÅÝ.    îÁÞÁÌÏ   ëÏÎÅà   òÁÓÛÉÒÅÎÉÅ\n"
 
-#: nm.c:224 size.c:80 strings.c:651
+#: dwarf.c:2414
 #, c-format
-msgid "Usage: %s [option(s)] [file(s)]\n"
-msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] [ÆÁÊÌ(Ù)]\n"
+msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "÷ ÒÁÚÄÅÌÅ .debug_loc ÐÒÉÓÕÔÓÔ×ÕÅÔ ÄÙÒÁ [0x%lx - 0x%lx].\n"
 
-#: nm.c:225
+#: dwarf.c:2417
 #, c-format
-msgid " List symbols in [file(s)] (a.out by default).\n"
-msgstr " ÷Ù×ÏÄÉÔ ÓÐÉÓÏË ÓÉÍ×ÏÌÏ× × [ÆÁÊÌ(Ù)] (ÐÏ ÕÍÏÌÞÁÎÉÀ × a.out).\n"
+msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "÷ ÒÁÚÄÅÌÅ .debug_loc ÐÒÉÓÕÔÓÔ×ÕÅÔ ÐÅÒÅËÒÙÔÉÅ [0x%lx - 0x%lx].\n"
 
-#: nm.c:226
+#: dwarf.c:2424
 #, c-format
-msgid ""
-" The options are:\n"
-"  -a, --debug-syms       Display debugger-only symbols\n"
-"  -A, --print-file-name  Print name of the input file before every symbol\n"
-"  -B                     Same as --format=bsd\n"
-"  -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
-"                          The STYLE, if specified, can be `auto' (the default),\n"
-"                          `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
-"                          or `gnat'\n"
-"      --no-demangle      Do not demangle low-level symbol names\n"
-"  -D, --dynamic          Display dynamic symbols instead of normal symbols\n"
-"      --defined-only     Display only defined symbols\n"
-"  -e                     (ignored)\n"
-"  -f, --format=FORMAT    Use the output format FORMAT.  FORMAT can be `bsd',\n"
-"                           `sysv' or `posix'.  The default is `bsd'\n"
-"  -g, --extern-only      Display only external symbols\n"
-"  -l, --line-numbers     Use debugging information to find a filename and\n"
-"                           line number for each symbol\n"
-"  -n, --numeric-sort     Sort symbols numerically by address\n"
-"  -o                     Same as -A\n"
-"  -p, --no-sort          Do not sort the symbols\n"
-"  -P, --portability      Same as --format=posix\n"
-"  -r, --reverse-sort     Reverse the sense of the sort\n"
-"  -S, --print-size       Print size of defined symbols\n"
-"  -s, --print-armap      Include index for symbols from archive members\n"
-"      --size-sort        Sort symbols by size\n"
-"      --special-syms     Include special symbols in the output\n"
-"      --synthetic        Display synthetic symbols as well\n"
-"  -t, --radix=RADIX      Use RADIX for printing symbol values\n"
-"      --target=BFDNAME   Specify the target object format as BFDNAME\n"
-"  -u, --undefined-only   Display only undefined symbols\n"
-"  -X 32_64               (ignored)\n"
-"  -h, --help             Display this information\n"
-"  -V, --version          Display this program's version number\n"
-"\n"
-msgstr ""
-" ïÐÃÉÉ:\n"
-"  -a, --debug-syms       ÷Ù×ÏÄ ÔÏÌØËÏ ÏÔÌÁÄÏÞÎÙÈ ÓÉÍ×ÏÌÏ×\n"
-"  -A, --print-file-name  ÷Ù×ÏÄ ÉÍÅÎÉ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ ÐÅÒÅÄ ËÁÖÄÙÍ ÓÉÍ×ÏÌÏÍ\n"
-"  -B                     ôÏ ÖÅ, ÞÔÏ É  --format=bsd\n"
-"  -C, --demangle[=óôéìø] äÅËÏÄÉÒÏ×ÁÎÉÅ ÎÉÚËÏÕÒÏ×ÎÅ×ÙÈ ÉÍÅΠÓÉÍ×ÏÌÏ× × ÉÍÅÎÁ\n"
-"                         ÕÒÏ×ÎÑ ÐÏÌØÚÏ×ÁÔÅÌÑ\n"
-"                          óôéìø, ÅÓÌÉ ÕËÁÚÁÎ, ÍÏÖÅÔ ÂÙÔØ `auto' (ÐÏ ÕÍÏÌÞÁÎÉÀ),\n"
-"                          `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
-"                          ÉÌÉ `gnat'\n"
-"      --no-demangle      îÅ ÄÅËÏÄÉÒÏ×ÁÔØ ÎÉÚËÏÕÒÏ×ÎÅ×ÙÅ ÉÍÅÎÁ ÓÉÍ×ÏÌÏ×\n"
-"  -D, --dynamic          ÷Ù×ÏÄ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÉÍ×ÏÌÏ× ×ÍÅÓÔÏ ÎÏÒÍÁÌØÎÙÈ ÓÉÍ×ÏÌÏ×\n"
-"      --defined-only     ÷Ù×ÏÄ ÔÏÌØËÏ ÏÐÒÅÄÅÌÅÎÎÙÈ ÓÉÍ×ÏÌÏ×\n"
-"  -e                     (ÐÒÏÐÕÝÅÎÁ)\n"
-"  -f, --format=æïòíáô    éÓÐÏÌØÚÏ×ÁÎÉÅ æïòíáô × ËÁÞÅÓÔ×Å ×ÙÈÏÄÎÏÇÏ ÆÏÒÍÁÔÁ.\n"
-"                         æïòíáô ÍÏÖÅÔ ÂÙÔØ `bsd', `sysv' ÉÌÉ `posix'.                            -g, --extern-only      ÷Ù×ÏÄ ÔÏÌØËÏ ×ÎÅÛÎÉÈ ÓÉÍ×ÏÌÏ×\n"
-"  -l, --line-numbers     éÓÐÏÌØÚÏ×ÁÎÉÅ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ ÄÌÑ ÎÁÈÏÖÄÅÎÉÑ\n"
-"                         ÉÍÅÎÉ ÆÁÊÌÁ É ÎÏÍÅÒÁ ÓÔÒÏËÉ ÄÌÑ ËÁÖÄÏÇÏ ÓÉÍ×ÏÌÁ\n"
-"  -n, --numeric-sort     óÏÒÔÉÒÏ×ËÁ ÓÉÍ×ÏÌÏ× ÐÏ ÁÄÒÅÓÕ\n"
-"  -o                     ôÏ ÖÅ, ÞÔÏ É -A\n"
-"  -p, --no-sort          âÅÚ ÓÏÒÔÉÒÏ×ËÉ ÓÉÍ×ÏÌÏ×\n"
-"  -P, --portability      ôÏ ÖÅ, ÞÔÏ É --format=posix\n"
-"  -r, --reverse-sort     óÏÒÔÉÒÏ×ËÁ × ÏÂÒÁÔÎÏÍ ÐÏÒÑÄËÅ\n"
-"  -S, --print-size       ÷Ù×ÏÄ ÒÁÚÍÅÒÁ ÏÐÒÅÄÅÌÅÎÎÙÈ ÓÉÍ×ÏÌÏ×\n"
-"  -s, --print-armap      ÷ËÌÀÞÅÎÉÅ ÉÎÄÅËÓÁ ÄÌÑ ÓÉÍ×ÏÌÏ× ÉÚ ÞÌÅÎÏ× ÁÒÈÉ×Á\n"
-"      --size-sort        óÏÒÔÉÒÏ×ËÁ ÓÉÍ×ÏÌÏ× ÐÏ ÒÁÚÍÅÒÕ\n"
-"      --special-syms     ÷ËÌÀÞÅÎÉÅ ÓÐÅÃÉÁÌØÎÙÈ ÓÉÍ×ÏÌÏ× × ×ÙÈÏÄÎÙÅ ÄÁÎÎÙÅ\n"
-"      --synthetic        ÷Ù×ÏÄ ÔÁËÖÅ ÓÉÎÔÅÔÉÞÅÓËÉÈ ÓÉÍ×ÏÌÏ×\n"
-"  -t, --radix=RADIX      éÓÐÏÌØÚÏ×ÁÎÉÅ RADIX ÄÌÑ ×Ù×ÏÄÁ ÚÎÁÞÅÎÉÊ ÓÉÍ×ÏÌÏ×\n"
-"      --target=BFD-éíñ   õËÁÚÁÎÉÅ ÃÅÌÅ×ÏÇÏ ÆÏÒÍÁÔÁ ÏÂßÅËÔÁ ËÁË BFD-éíñ\n"
-"  -u, --undefined-only   ÷Ù×ÏÄ ÔÏÌØËÏ ÎÅ ÏÐÒÅÄÅÌÅÎÎÙÈ ÓÉÍ×ÏÌÏ×\n"
-"  -X 32_64               (ÐÒÏÐÕÝÅÎÁ)\n"
-"  -h, --help             ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n"
-"  -V, --version          ÷Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ\n"
-"\n"
+msgid "Offset 0x%lx is bigger than .debug_loc section size.\n"
+msgstr "óÍÅÝÅÎÉÅ 0x%lx ÂÏÌØÛÅ, ÞÅÍ ÒÁÚÍÅÒ ÒÁÚÄÅÌÁ .debug_loc.\n"
 
-#: nm.c:262 objdump.c:232
+#: dwarf.c:2433 dwarf.c:2460 dwarf.c:2470
 #, c-format
-msgid "Report bugs to %s.\n"
-msgstr "ïÔÞÅÔÙ Ï ÏÛÉÂËÁÈ ÏÔÐÒÁ×ÌÑÊÔÅ × %s\n"
+msgid "Location list starting at offset 0x%lx is not terminated.\n"
+msgstr "óÐÉÓÏË ÍÅÓÔÏÐÏÌÏÖÅÎÉÊ, ÎÁÞÉÎÁÑ ÓÏ ÓÍÅÝÅÎÉÑ 0x%lx, ÎÅ ÚÁ×ÅÒÛ£Î.\n"
 
-#: nm.c:294
+#: dwarf.c:2445 dwarf.c:2784
 #, c-format
-msgid "%s: invalid radix"
-msgstr "%s: ÎÅ×ÅÒÎÙÊ radix"
+msgid "    %8.8lx <End of list>\n"
+msgstr "    %8.8lx <ëÏÎÅàÓÐÉÓËÁ>\n"
 
-#: nm.c:318
+#: dwarf.c:2453
 #, c-format
-msgid "%s: invalid output format"
-msgstr "%s: ÎÅ×ÅÒÎÙÊ ×ÙÈÏÄÎÏÊ ÆÏÒÍÁÔ"
+msgid "    %8.8lx %8.8lx %8.8lx (base address)\n"
+msgstr "    %8.8lx %8.8lx %8.8lx (ÂÁÚÏ×ÙÊ ÁÄÒÅÓ)\n"
+
+#: dwarf.c:2487 dwarf.c:2801
+msgid " (start == end)"
+msgstr " (ÎÁÞÁÌÏ == ËÏÎÅÃ)"
+
+#: dwarf.c:2489 dwarf.c:2803
+msgid " (start > end)"
+msgstr " (ÎÁÞÁÌÏ > ËÏÎÅÃ)"
 
-#: nm.c:339 readelf.c:6342 readelf.c:6378
+#: dwarf.c:2618
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ aganges ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3.\n"
+
+#: dwarf.c:2622
 #, c-format
-msgid "<processor specific>: %d"
-msgstr "<ÓÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÐÒÏÃÅÓÓÏÒÁ>: %d"
+msgid "  Length:                   %ld\n"
+msgstr "  äÌÉÎÁ:                    %ld\n"
 
-#: nm.c:341 readelf.c:6345 readelf.c:6390
+#: dwarf.c:2623
 #, c-format
-msgid "<OS specific>: %d"
-msgstr "<ÓÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ïó>: %d"
+msgid "  Version:                  %d\n"
+msgstr "  ÷ÅÒÓÉÑ:                   %d\n"
 
-#: nm.c:343 readelf.c:6347 readelf.c:6393
+#: dwarf.c:2624
 #, c-format
-msgid "<unknown>: %d"
-msgstr "<ÎÅÉÚ×ÅÓÔÎÙÊ>: %d"
+msgid "  Offset into .debug_info:  %lx\n"
+msgstr "  óÍÅÝÅÎÉÅ × .debug_info:   %lx\n"
 
-#: nm.c:380
+#: dwarf.c:2625
 #, c-format
-msgid ""
-"\n"
-"Archive index:\n"
-msgstr ""
-"\n"
-"éÎÄÅËÓ ÁÒÈÉ×Á:\n"
+msgid "  Pointer Size:             %d\n"
+msgstr "  òÁÚÍ. ÕËÁÚÁÔ:             %d\n"
 
-#: nm.c:1225
+#: dwarf.c:2626
 #, c-format
-msgid ""
-"\n"
-"\n"
-"Undefined symbols from %s:\n"
-"\n"
-msgstr ""
-"\n"
-"\n"
-"îÅÏÐÒÅÄÅÌÅÎÎÙÅ ÓÉÍ×ÏÌÙ ÉÚ %s:\n"
-"\n"
+msgid "  Segment Size:             %d\n"
+msgstr "  òÁÚÍ. ÓÅÇÍ.:              %d\n"
 
-#: nm.c:1227
+#: dwarf.c:2628
 #, c-format
 msgid ""
 "\n"
-"\n"
-"Symbols from %s:\n"
-"\n"
+"    Address  Length\n"
 msgstr ""
 "\n"
-"\n"
-"óÉÍ×ÏÌÙ ÉÚ %s:\n"
-"\n"
+"    áÄÒÅÓ    äÌÉÎÁ\n"
 
-#: nm.c:1229 nm.c:1280
+#. FIXME: Should we handle this case?
+#: dwarf.c:2729
+msgid "Range lists in .debug_info section aren't in ascending order!\n"
+msgstr "óÐÉÓËÉ ÄÉÁÐÁÚÏÎÏ× × ÒÁÚÄÅÌÅ .debug_info ÎÅ ÕÐÏÒÑÄÏÞÅÎÙ ÐÏ ×ÏÚÒÁÓÔÁÎÉÀ!\n"
+
+#: dwarf.c:2732
+msgid "No range lists in .debug_info section!\n"
+msgstr "÷ ÒÁÚÄÅÌÅ .debug_info ÎÅÔ ÓÐÉÓËÏ× ÄÉÁÐÁÚÏÎÏ×!\n"
+
+#: dwarf.c:2736
 #, c-format
-msgid ""
-"Name                  Value   Class        Type         Size     Line  Section\n"
-"\n"
-msgstr ""
-"éÍÑ                   úÎÁÞ.   ëÌÁÓÓ        ôÉР       òÁÚÍÅÒ   óÔÒÏËÁ  òÁÚÄÅÌ\n"
-"\n"
+msgid "Range lists in %s section start at 0x%lx\n"
+msgstr "óÐÉÓËÉ ÄÉÁÐÁÚÏÎÏ× × ÒÁÚÄÅÌÅ %s ÎÁÞÉÎÁÀÔÓÑ Ó 0x%lx\n"
 
-#: nm.c:1232 nm.c:1283
+#: dwarf.c:2740
 #, c-format
-msgid ""
-"Name                  Value           Class        Type         Size             Line  Section\n"
-"\n"
-msgstr ""
-"éÍÑ                   úÎÁÞ.           ëÌÁÓÓ        ôÉР       òÁÚÍÅÒ           óÔÒÏËÁ  òÁÚÄÅÌ\n"
-"\n"
+msgid "    Offset   Begin    End\n"
+msgstr "    óÍÅÝ.    îÁÞÁÌÏ   ëÏÎÅÃ\n"
 
-#: nm.c:1276
+#: dwarf.c:2765
 #, c-format
-msgid ""
-"\n"
-"\n"
-"Undefined symbols from %s[%s]:\n"
-"\n"
-msgstr ""
-"\n"
-"\n"
-"îÅÏÐÒÅÄÅÌÅÎÎÙÅ ÓÉÍ×ÏÌÙ ÉÚ %s[%s]:\n"
-"\n"
+msgid "There is a hole [0x%lx - 0x%lx] in %s section.\n"
+msgstr "äÙÒÁ [0x%lx - 0x%lx] × ÒÁÚÄÅÌÅ %s.\n"
 
-#: nm.c:1278
+#: dwarf.c:2769
 #, c-format
-msgid ""
-"\n"
-"\n"
-"Symbols from %s[%s]:\n"
-"\n"
-msgstr ""
-"\n"
-"\n"
-"óÉÍ×ÏÌÙ ÉÚ %s[%s]:\n"
-"\n"
+msgid "There is an overlap [0x%lx - 0x%lx] in %s section.\n"
+msgstr "ðÅÒÅËÒÙÔÉÅ [0x%lx - 0x%lx] × ÒÁÚÄÅÌÅ %s.\n"
 
-#: nm.c:1580
-msgid "Only -X 32_64 is supported"
-msgstr "ðÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÔÏÌØËÏ -X 32_64"
+#: dwarf.c:2964
+#, c-format
+msgid "The section %s contains:\n"
+msgstr "òÁÚÄÅÌ %s ÓÏÄÅÒÖÉÔ:\n"
 
-#: nm.c:1600
-msgid "Using the --size-sort and --undefined-only options together"
-msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ ×ÍÅÓÔÅ ÏÐÃÉÊ --size-sort É --undefined-only"
+#: dwarf.c:3608
+#, c-format
+msgid "unsupported or unknown DW_CFA_%d\n"
+msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÉÌÉ ÎÅÉÚ×ÅÓÔÎÙÊ DW_CFA_%d\n"
 
-#: nm.c:1601
-msgid "will produce no output, since undefined symbols have no size."
-msgstr "ÎÅ ÄÁÓÔ ×ÙÈÏÄÎÙÈ ÄÁÎÎÙÈ, Ô.Ë. ÎÅÏÐÒÅÄÅÌÅÎÎÙÅ ÓÉÍ×ÏÌÙ ÎÅ ÉÍÅÀÔ ÒÁÚÍÅÒÁ."
+#: dwarf.c:3632
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr "ïÔÏÂÒÁÖÅÎÉÅ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ ÒÁÚÄÅÌÁ %s ÅÝÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ.\n"
 
-#: nm.c:1629
+#: dwarf.c:3674
 #, c-format
-msgid "data size %ld"
-msgstr "ÒÁÚÍÅÒ ÄÁÎÎÙÈ %ld"
+msgid "%s: Error: "
+msgstr "%s: ïÛÉÂËÁ: "
 
-#: objcopy.c:396 srconv.c:1721
+#: dwarf.c:3685
 #, c-format
-msgid "Usage: %s [option(s)] in-file [out-file]\n"
-msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] in-ÆÁÊÌ [out-ÆÁÊÌ]\n"
+msgid "%s: Warning: "
+msgstr "%s: ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: "
 
-#: objcopy.c:397
+#: emul_aix.c:51
 #, c-format
-msgid " Copies a binary file, possibly transforming it in the process\n"
-msgstr " ëÏÐÉÒÕÅÔ Ä×ÏÉÞÎÙÊ ÆÁÊÌ, ×ÏÚÍÏÖÎÏ, ÐÒÅÏÂÒÁÚÏ×Ù×ÁÑ ÅÇÏ × ÐÒÏÃÅÓÓÅ\n"
+msgid "  [-g]         - 32 bit small archive\n"
+msgstr "  [-g]         - 32-ÂÉÔÎÙÊ ÍÁÌÅÎØËÉÊ ÁÒÈÉ×\n"
 
-#: objcopy.c:398 objcopy.c:487
+#: emul_aix.c:52
 #, c-format
-msgid " The options are:\n"
-msgstr " ïÐÃÉÉ:\n"
+msgid "  [-X32]       - ignores 64 bit objects\n"
+msgstr "  [-X32]       - ÐÒÏÐÕÓËÁÅÔ 64-ÂÉÔÎÙÅ ÏÂßÅËÔÙ\n"
 
-#: objcopy.c:399
+#: emul_aix.c:53
 #, c-format
-msgid ""
-"  -I --input-target <bfdname>      Assume input file is in format <bfdname>\n"
-"  -O --output-target <bfdname>     Create an output file in format <bfdname>\n"
-"  -B --binary-architecture <arch>  Set arch of output file, when input is binary\n"
-"  -F --target <bfdname>            Set both input and output format to <bfdname>\n"
-"     --debugging                   Convert debugging information, if possible\n"
-"  -p --preserve-dates              Copy modified/access timestamps to the output\n"
-"  -j --only-section <name>         Only copy section <name> into the output\n"
-"     --add-gnu-debuglink=<file>    Add section .gnu_debuglink linking to <file>\n"
-"  -R --remove-section <name>       Remove section <name> from the output\n"
-"  -S --strip-all                   Remove all symbol and relocation information\n"
-"  -g --strip-debug                 Remove all debugging symbols & sections\n"
-"     --strip-unneeded              Remove all symbols not needed by relocations\n"
-"  -N --strip-symbol <name>         Do not copy symbol <name>\n"
-"     --strip-unneeded-symbol <name>\n"
-"                                   Do not copy symbol <name> unless needed by\n"
-"                                     relocations\n"
-"     --only-keep-debug             Strip everything but the debug information\n"
-"  -K --keep-symbol <name>          Only copy symbol <name>\n"
-"  -L --localize-symbol <name>      Force symbol <name> to be marked as a local\n"
-"  -G --keep-global-symbol <name>   Localize all symbols except <name>\n"
-"  -W --weaken-symbol <name>        Force symbol <name> to be marked as a weak\n"
-"     --weaken                      Force all global symbols to be marked as weak\n"
-"  -w --wildcard                    Permit wildcard in symbol comparison\n"
-"  -x --discard-all                 Remove all non-global symbols\n"
-"  -X --discard-locals              Remove any compiler-generated symbols\n"
-"  -i --interleave <number>         Only copy one out of every <number> bytes\n"
-"  -b --byte <num>                  Select byte <num> in every interleaved block\n"
-"     --gap-fill <val>              Fill gaps between sections with <val>\n"
-"     --pad-to <addr>               Pad the last section up to address <addr>\n"
-"     --set-start <addr>            Set the start address to <addr>\n"
-"    {--change-start|--adjust-start} <incr>\n"
-"                                   Add <incr> to the start address\n"
-"    {--change-addresses|--adjust-vma} <incr>\n"
-"                                   Add <incr> to LMA, VMA and start addresses\n"
-"    {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
-"                                   Change LMA and VMA of section <name> by <val>\n"
-"     --change-section-lma <name>{=|+|-}<val>\n"
-"                                   Change the LMA of section <name> by <val>\n"
-"     --change-section-vma <name>{=|+|-}<val>\n"
-"                                   Change the VMA of section <name> by <val>\n"
-"    {--[no-]change-warnings|--[no-]adjust-warnings}\n"
-"                                   Warn if a named section does not exist\n"
-"     --set-section-flags <name>=<flags>\n"
-"                                   Set section <name>'s properties to <flags>\n"
-"     --add-section <name>=<file>   Add section <name> found in <file> to output\n"
-"     --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
-"     --change-leading-char         Force output format's leading character style\n"
-"     --remove-leading-char         Remove leading character from global symbols\n"
-"     --redefine-sym <old>=<new>    Redefine symbol name <old> to <new>\n"
-"     --redefine-syms <file>        --redefine-sym for all symbol pairs \n"
-"                                     listed in <file>\n"
-"     --srec-len <number>           Restrict the length of generated Srecords\n"
-"     --srec-forceS3                Restrict the type of generated Srecords to S3\n"
-"     --strip-symbols <file>        -N for all symbols listed in <file>\n"
-"     --strip-unneeded-symbols <file>\n"
-"                                   --strip-unneeded-symbol for all symbols listed\n"
-"                                     in <file>\n"
-"     --keep-symbols <file>         -K for all symbols listed in <file>\n"
-"     --localize-symbols <file>     -L for all symbols listed in <file>\n"
-"     --keep-global-symbols <file>  -G for all symbols listed in <file>\n"
-"     --weaken-symbols <file>       -W for all symbols listed in <file>\n"
-"     --alt-machine-code <index>    Use alternate machine code for output\n"
-"     --writable-text               Mark the output text as writable\n"
-"     --readonly-text               Make the output text write protected\n"
-"     --pure                        Mark the output file as demand paged\n"
-"     --impure                      Mark the output file as impure\n"
-"     --prefix-symbols <prefix>     Add <prefix> to start of every symbol name\n"
-"     --prefix-sections <prefix>    Add <prefix> to start of every section name\n"
-"     --prefix-alloc-sections <prefix>\n"
-"                                   Add <prefix> to start of every allocatable\n"
-"                                     section name\n"
-"  -v --verbose                     List all object files modified\n"
-"  -V --version                     Display this program's version number\n"
-"  -h --help                        Display this output\n"
-"     --info                        List object formats & architectures supported\n"
-msgstr ""
-"  -I --input-target <bfd-ÉÍÑ>      ðÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ ×ÈÏÄÎÏÊ ÆÁÊÌ × ÆÏÒÍÁÔÅ <bfd-ÉÍÑ>\n"
-"  -O --output-target <bfd-ÉÍÑ>     óÏÚÄÁÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ × ÆÏÒÍÁÔÅ <bfd-ÉÍÑ>\n"
-"  -B --binary-architecture <ÁÒÈ>   õÓÔÁÎÏ×ÉÔØ ÁÒÈÉÔÅËÔÕÒÕ ÄÌÑ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ, ËÏÇÄÁ ×ÈÏÄÎÏÊ ÆÁÊÌ Ä×ÏÉÞÎÙÊ\n"
-"  -F --target <bfd-ÉÍÑ>            õÓÔÁÎÏ×ÉÔØ ×ÈÏÄÎÏÊ É ×ÙÈÏÄÎÏÊ ÆÏÒÍÁÔÙ × <bfd-ÉÍÑ>\n"
-"     --debugging                   ðÒÅÏÂÒÁÚÏ×ÁÔØ ÏÔÌÁÄÏÞÎÕÀ ÉÎÆÏÒÍÁÃÉÀ, ÅÓÌÉ ÜÔÏ ×ÏÚÍÏÖÎÏ\n"
-"  -p --preserve-dates              ëÏÐÉÒÏ×ÁÔØ ×ÒÅÍÑ ÍÏÄÉÆÉËÁÃÉÉ/ÄÏÓÔÕÐÁ ÎÁ ×Ù×ÏÄ\n"
-"  -j --only-section <ÉÍÑ>          ëÏÐÉÒÏ×ÁÔØ ÒÁÚÄÅÌ <ÉÍÑ> ÎÁ ×Ù×ÏÄ\n"
-"     --add-gnu-debuglink=<ÆÁÊÌ>    äÏÂÁ×ÌÅÎÉÅ Ó×ÑÚÙ×ÁÎÉÑ ÒÁÚÄÅÌÁ .gnu_debuglink × <ÆÁÊÌ>\n"
-"  -R --remove-section <ÉÍÑ>        õÄÁÌÉÔØ ÒÁÚÄÅÌ <ÉÍÑ> ÉÚ ×Ù×ÏÄÁ\n"
-"  -S --strip-all                   õÄÁÌÉÔØ ×ÓÅ ÓÉÍ×ÏÌÙ É ÉÎÆÏÒÍÁÃÉÀ Ï ÐÅÒÅÍÅÝÅÎÉÉ\n"
-"  -g --strip-debug                 õÄÁÌÉÔØ ×ÓÅ ÏÔÌÁÄÏÞÎÙÅ ÓÉÍ×ÏÌÙ É ÒÁÚÄÅÌÙ\n"
-"     --strip-unneeded              õÄÁÌÉÔØ ×ÓÅ ÓÉÍ×ÏÌÙ, ÎÅ ÎÕÖÎÙÅ ÄÌÑ ÐÅÒÅÍÅÝÅÎÉÊ\n"
-"  -N --strip-symbol <ÉÍÑ>          îÅ ËÏÐÉÒÏ×ÁÔØ ÓÉÍ×ÏÌ <ÉÍÑ>\n"
-"     --strip-unneeded-symbol <ÉÍÑ>\n"
-"                                   îÅ ËÏÐÉÒÏ×ÁÔØ ÓÉÍ×ÏÌ <ÉÍÑ>, ÅÓÌÉ ÎÅ ÎÕÖÅΠÄÌÑ\n"
-"                                   ÄÌÑ ÐÅÒÅÍÅÝÅÎÉÊ\n"
-"     --only-keep-debug             ïÓÔÁ×ÉÔØ ÔÏÌØËÏ ÏÔÌÁÄÏÞÎÕÀ ÉÎÆÏÒÍÁÃÉÀ\n"
-"  -K --keep-symbol <ÉÍÑ>           ëÏÐÉÒÏ×ÁÔØ ÔÏÌØËÏ ÓÉÍ×ÏÌ <ÉÍÑ>\n"
-"  -L --localize-symbol <ÉÍÑ>       ðÒÉÎÕÄÉÔÅÌØÎÏ ÐÏÍÅÞÁÔØ ÓÉÍ×ÏÌ <ÉÍÑ> ËÁË ÌÏËÁÌØÎÙÊ\n"
-"  -G --keep-global-symbol <ÉÍÑ>    ìÏËÁÌÉÚÏ×ÁÔØ ×ÓÅ ÓÉÍ×ÏÌÙ ËÒÏÍÅ <ÉÍÑ>\n"
-"  -W --weaken-symbol <ÉÍÑ>         ðÒÉÎÕÄÉÔÅÌØÎÏ ÐÏÍÅÔÉÔØ ÓÉÍ×ÏÌ <ÉÍÑ> ËÁË ÓÌÁÂÙÊ\n"
-"     --weaken                      ðÒÉÎÕÄÉÔÅÌØÎÏ ÐÏÍÅÔÉÔØ ÇÌÏÂÁÌØÎÙÅ ÓÉÍ×ÏÌÙ ËÁË ÓÌÁÂÙÅ\n"
-"  -w --wildcard                    òÁÚÒÅÛÉÔØ ÍÁÓËÕ ÐÒÉ ÓÒÁ×ÎÅÎÉÉ ÓÉÍ×ÏÌÏ×\n"
-"  -x --discard-all                 õÄÁÌÉÔØ ×ÓÅ ÎÅÇÌÏÂÁÌØÎÙÅ ÓÉÍ×ÏÌÙ\n"
-"  -X --discard-locals              õÄÁÌÉÔØ ÌÀÂÙÅ ÓÉÍ×ÏÌÙ, ÓÇÅÎÅÒÉÒÏ×ÁÎÎÙÅ ËÏÍÐÉÌÑÔÏÒÏÍ\n"
-"  -i --interleave <ÞÉÓÌÏ>          ëÏÐÉÒÏ×ÁÔØ ÔÏÌØËÏ ÏÄÉΠÂÁÊÔ ÞÅÒÅÚ ËÁÖÄÏÅ <ÞÉÓÌÏ> ÂÁÊÔ\n"
-"  -b --byte <ÎÏÍÅÒ>                ÷ÙÂÒÁÔØ ÂÁÊÔ <ÎÏÍÅÒ> × ËÁÖÄÏÍ ÞÅÒÅÄÕÀÝÅÍÓÑ ÂÌÏËÅ\n"
-"     --gap-fill <ÚÎÁÞÅÎÉÅ>         úÁÐÏÌÎÉÔØ ÐÒÏÍÅÖÕÔËÉ ÍÅÖÄÕ ÒÁÚÄÅÌÁÍÉ <ÚÎÁÞÅÎÉÅÍ>\n"
-"     --pad-to <ÁÄÒÅÓ>              úÁÐÏÌÎÉÔØ ÐÏÓÌÅÄÎÉÊ ÒÁÚÄÅÌ ÄÏ ÁÄÒÅÓÁ <ÁÄÒÅÓ>\n"
-"     --set-start <ÁÄÒÅÓ>           õÓÔÁÎÏ×ÉÔØ ÎÁÞÁÌØÎÙÊ ÁÄÒÅÓ × <ÁÄÒÅÓ>\n"
-"    {--change-start|--adjust-start} <ÐÒÉÒÁÝÅÎÉÅ>\n"
-"                                   äÏÂÁ×ÉÔØ <ÐÒÉÒÁÝÅÎÉÅ> Ë ÎÁÞÁÌØÎÏÍÕ ÁÄÒÅÓÕ\n"
-"    {--change-addresses|--adjust-vma} <ÐÒÉÒÁÝÅÎÉÅ>\n"
-"                                   äÏÂÁ×ÉÔØ <ÐÒÉÒÁÝÅÎÉÅ> Ë LMA, VMA É ÎÁÞÁÌØÎÏÍÕ ÁÄÒÅÓÁÍ\n"
-"    {--change-section-address|--adjust-section-vma} <ÉÍÑ>{=|+|-}<ÚÎÁÞÅÎÉÅ>\n"
-"                                   éÚÍÅÎÉÔØ LMA É VMA ÒÁÚÄÅÌÁ <ÉÍÑ> ÎÁ <ÚÎÁÞÅÎÉÅ>\n"
-"     --change-section-lma <ÉÍÑ>{=|+|-}<ÚÎÁÞÅÎÉÅ>\n"
-"                                   éÚÍÅÎÉÔØ LMA ÒÁÚÄÅÌÁ <ÉÍÑ> ÎÁ <ÚÎÁÞÅÎÉÅ>\n"
-"     --change-section-vma <ÉÍÑ>{=|+|-}<ÚÎÁÞÅÎÉÅ>\n"
-"                                   éÚÍÅÎÉÔØ VMA ÒÁÚÄÅÌÁ <ÉÍÑ> ÎÁ <ÚÎÁÞÅÎÉÅ>\n"
-"    {--[no-]change-warnings|--[no-]adjust-warnings}\n"
-"                                   ðÒÅÄÕÐÒÅÄÉÔØ, ÅÓÌÉ ÎÁÚ×ÁÎÎÙÊ ÒÁÚÄÅÌ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ\n"
-"     --set-section-flags <ÉÍÑ>=<ÆÌÁÇÉ>\n"
-"                                   õÓÔÁÎÏ×ÉÔØ Ó×ÏÊÓÔ×Á ÒÁÚÄÅÌÁ <ÉÍÑ> × <ÆÌÁÇÉ>\n"
-"     --add-section <ÉÍÑ>=<ÆÁÊÌ>    äÏÂÁ×ÉÔØ ÒÁÚÄÅÌ <ÉÍÑ>, ÎÁÊÄÅÎÎÙÊ × <ÆÁÊÌÅ>, ÎÁ ×Ù×ÏÄ\n"
-"     --rename-section <ÓÔÁÒ>=<ÎÏ×>[,<ÆÌÁÇÉ>] ðÅÒÅÉÍÅÎÏ×ÁÔØ ÒÁÚÄÅÌ <ÓÔÁÒ> ÎÁ <ÎÏ×>\n"
-"     --change-leading-char         ðÒÉÎÕÄÉÔÅÌØÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÔÉÌØ ÚÁÇÌÁ×ÎÏÇÏ ÓÉÍ×ÏÌÁ ÄÌÑ ×ÙÈÏÄÎÏÇÏ ÆÏÒÍÁÔÁ\n"
-"     --remove-leading-char         õÄÁÌÉÔØ ÚÁÇÌÁ×ÎÙÊ ÓÉÍ×ÏÌ ÉÚ ÇÌÏÂÁÌØÎÙÈ ÓÉÍ×ÏÌÏ×\n"
-"     --redefine-sym <ÓÔÁÒ>=<ÎÏ×>   ðÅÒÅÏÐÒÅÄÅÌÉÔØ ÉÍÑ ÓÉÍ×ÏÌÁ <ÓÔÁÒ> ÎÁ <ÎÏ×>\n"
-"     --redefine-syms <ÆÁÊÌ>        --redefine-sym ÄÌÑ ×ÓÅÈ ÐÁÒ ÓÉÍ×ÏÌÏ×,\n"
-"                                     ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n"
-"     --srec-len <ÞÉÓÌÏ>            ïÇÒÁÎÉÞÉÔØ ÄÌÉÎÕ ÓÏÚÄÁÎÎÙÈ S-ÚÁÐÉÓÅÊ\n"
-"     --srec-forceS3                ïÇÒÁÎÉÞÉÔØ ÔÉРÓÏÚÄÁÎÎÙÈ S-ÚÁÐÉÓÅÊ ÄÏ S3\n"
-"     --strip-symbols <ÆÁÊÌ>        -N ÄÌÑ ×ÓÅÈ ÓÉÍÏÌÏ×, ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n"
-"     --strip-unneeded-symbols <ÆÁÊÌ>\n"
-"                                   --strip-unneeded-symbol ÄÌÑ ×ÓÅÈ ÓÉÍ×ÏÌÏ×, ÐÅÒÅÞÉÓÌÅÎÎÙÈ\n"
-"                                     × <ÆÁÊÌÅ>\n"
-"     --keep-symbols <ÆÁÊÌ>         -K ÄÌÑ ×ÓÅÈ ÓÉÍÏÌÏ×, ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n"
-"     --localize-symbols <ÆÁÊÌ>     -L ÄÌÑ ×ÓÅÈ ÓÉÍÏÌÏ×, ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n"
-"     --keep-global-symbols <ÆÁÊÌ>  -G ÄÌÑ ×ÓÅÈ ÓÉÍÏÌÏ×, ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n"
-"     --weaken-symbols <ÆÁÊÌ>       -W ÄÌÑ ×ÓÅÈ ÓÉÍÏÌÏ×, ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n"
-"     --alt-machine-code <ÉÎÄÅËÓ>   éÓÐÏÌØÚÏ×ÁÔØ ÁÌØÔÅÒÎÁÔÉ×ÎÙÊ ËÏÄ ÍÁÛÉÎÙ ÄÌÑ ×Ù×ÏÄÁ\n"
-"     --writable-text               ðÏÍÅÔÉÔØ ×ÙÈÏÄÎÏÊ ÔÅËÓÔ ËÁË ÐÅÒÅÚÁÐÉÓÙ×ÁÅÍÙÊ\n"
-"     --readonly-text               ðÏÍÅÔÉÔØ ×ÙÈÏÄÎÏÊ ÔÅËÓÔ ËÁË ÚÁÝÉÝÅÎÎÙÊ ÏÔ ÚÁÐÉÓÉ\n"
-"     --pure                        ðÏÍÅÔÉÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ ËÁË ÌÉÓÔÁÅÍÙÊ ÐÏ ×ÙÚÏ×Õ\n"
-"     --impure                      ðÏÍÅÔÉÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ ËÁË ÚÁÇÒÑÚÎÅÎÎÙÊ\n"
-"     --prefix-symbols <ÐÒÅÆÉËÓ>    äÏÂÁ×ÉÔØ <ÐÒÅÆÉËÓ> × ÎÁÞÁÌÏ ÉÍÅÎÉ ËÁÖÄÏÇÏ ÓÉÍ×ÏÌÁ\n"
-"     --prefix-sections <ÐÒÅÆÉËÓ>   äÏÂÁ×ÉÔØ <ÐÒÅÆÉËÓ> × ÎÁÞÁÌÏ ÉÍÅÎÉ ËÁÖÄÏÇÏ ÒÁÚÄÅÌÁ\n"
-"     --prefix-alloc-sections <ÐÒÅÆÉËÓ>\n"
-"                                   äÏÂÁ×ÉÔØ <ÐÒÅÆÉËÓ> × ÎÁÞÁÌÏ ÉÍÅÎÉ ËÁÖÄÏÇÏ\n"
-"                                     ÎÁÚÎÁÞÁÅÍÏÇÏ ÒÁÚÄÅÌÁ\n"
-"  -v --verbose                     ðÅÒÅÞÉÓÌÉÔØ ×ÓÅ ÍÏÄÉÆÉÃÉÒÏ×ÁÎÎÙÅ ÏÂßÅËÔÎÙÅ ÆÁÊÌÙ\n"
-"  -V --version                     ÷Ù×ÅÓÔÉ ÎÏÍÅÒ ×ÅÒÓÉÉ ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ\n"
-"  -h --help                        ÷Ù×ÅÓÔÉ ÜÔÕ ÓÐÒÁ×ËÕ\n"
-"     --info                        ðÅÒÅÞÉÓÌÉÔØ ÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÆÏÒÍÁÔÙ ÏÂßÅËÔÏ× É ÁÒÈÉÔÅËÔÕÒÙ\n"
-
-#: objcopy.c:485
-#, c-format
-msgid "Usage: %s <option(s)> in-file(s)\n"
-msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s <ÏÐÃÉÉ> in-ÆÁÊÌ(Ù)\n"
+msgid "  [-X64]       - ignores 32 bit objects\n"
+msgstr "  [-X64]       - ÐÒÏÐÕÓËÁÅÔ 32-ÂÉÔÎÙÅ ÏÂßÅËÔÙ\n"
 
-#: objcopy.c:486
+#: emul_aix.c:54
 #, c-format
-msgid " Removes symbols and sections from files\n"
-msgstr " õÄÁÌÑÅÔ ÓÉÍ×ÏÌÙ É ÒÁÚÄÅÌÙ ÉÚ ÆÁÊÌÏ×\n"
+msgid "  [-X32_64]    - accepts 32 and 64 bit objects\n"
+msgstr "  [-X32_64]    - ÄÏÐÕÓËÁÅÔ 32- É 64-ÂÉÔÎÙÅ ÏÂßÅËÔÙ\n"
 
-#: objcopy.c:488
-#, c-format
-msgid ""
-"  -I --input-target=<bfdname>      Assume input file is in format <bfdname>\n"
-"  -O --output-target=<bfdname>     Create an output file in format <bfdname>\n"
-"  -F --target=<bfdname>            Set both input and output format to <bfdname>\n"
-"  -p --preserve-dates              Copy modified/access timestamps to the output\n"
-"  -R --remove-section=<name>       Remove section <name> from the output\n"
-"  -s --strip-all                   Remove all symbol and relocation information\n"
-"  -g -S -d --strip-debug           Remove all debugging symbols & sections\n"
-"     --strip-unneeded              Remove all symbols not needed by relocations\n"
-"     --only-keep-debug             Strip everything but the debug information\n"
-"  -N --strip-symbol=<name>         Do not copy symbol <name>\n"
-"  -K --keep-symbol=<name>          Only copy symbol <name>\n"
-"  -w --wildcard                    Permit wildcard in symbol comparison\n"
-"  -x --discard-all                 Remove all non-global symbols\n"
-"  -X --discard-locals              Remove any compiler-generated symbols\n"
-"  -v --verbose                     List all object files modified\n"
-"  -V --version                     Display this program's version number\n"
-"  -h --help                        Display this output\n"
-"     --info                        List object formats & architectures supported\n"
-"  -o <file>                        Place stripped output into <file>\n"
-msgstr ""
-"  -I --input-target=<bfd-ÉÍÑ>      ðÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ ×ÈÏÄÎÏÊ ÆÁÊÌ × ÆÏÒÍÁÔÅ <bfd-ÉÍÑ>\n"
-"  -O --output-target=<bfd-ÉÍÑ>     óÏÚÄÁÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ × ÆÏÒÍÁÔÅ <bfd-ÉÍÑ>\n"
-"  -F --target=<bfd-ÉÍÑ>            õÓÔÁÎÏ×ÉÔØ ×ÈÏÄÎÏÊ É ×ÙÈÏÄÎÏÊ ÆÏÒÍÁÔÙ × <bfd-ÉÍÑ>\n"
-"  -p --preserve-dates              ëÏÐÉÒÏ×ÁÔØ ×ÒÅÍÑ ÍÏÄÉÆÉËÁÃÉÉ/ÄÏÓÔÕÐÁ ÎÁ ×Ù×ÏÄ\n"
-"  -R --remove-section <ÉÍÑ>        õÄÁÌÉÔØ ÒÁÚÄÅÌ <ÉÍÑ> ÉÚ ×Ù×ÏÄÁ\n"
-"  -s --strip-all                   õÄÁÌÉÔØ ×ÓÅ ÓÉÍ×ÏÌÙ É ÉÎÆÏÒÍÁÃÉÀ Ï ÐÅÒÅÍÅÝÅÎÉÉ\n"
-"  -g -S -d --strip-debug           õÄÁÌÉÔØ ×ÓÅ ÏÔÌÁÄÏÞÎÙÅ ÓÉÍ×ÏÌÙ É ÒÁÚÄÅÌÙ\n"
-"     --strip-unneeded              õÄÁÌÉÔØ ×ÓÅ ÓÉÍ×ÏÌÙ, ÎÅ ÎÕÖÎÙÅ ÄÌÑ ÐÅÒÅÍÅÝÅÎÉÊ\n"
-"  -N --strip-symbol=<ÉÍÑ>          îÅ ËÏÐÉÒÏ×ÁÔØ ÓÉÍ×ÏÌ <ÉÍÑ>\n"
-"  -K --keep-symbol=<ÉÍÑ>           ëÏÐÉÒÏ×ÁÔØ ÔÏÌØËÏ ÓÉÍ×ÏÌ <ÉÍÑ>\n"
-"  -w --wildcard                    òÁÚÒÅÛÉÔØ ÍÁÓËÕ ÐÒÉ ÓÒÁ×ÎÅÎÉÉ ÓÉÍ×ÏÌÏ×\n"
-"  -x --discard-all                 õÄÁÌÉÔØ ×ÓÅ ÎÅÇÌÏÂÁÌØÎÙÅ ÓÉÍ×ÏÌÙ\n"
-"  -X --discard-locals              õÄÁÌÉÔØ ÌÀÂÙÅ ÓÉÍ×ÏÌÙ, ÓÇÅÎÅÒÉÒÏ×ÁÎÎÙÅ ËÏÍÐÉÌÑÔÏÒÏÍ\n"
-"  -v --verbose                     ðÅÒÅÞÉÓÌÉÔØ ×ÓÅ ÍÏÄÉÆÉÃÉÒÏ×ÁÎÎÙÅ ÏÂßÅËÔÎÙÅ ÆÁÊÌÙ\n"
-"  -V --version                     ÷Ù×ÅÓÔÉ ÎÏÍÅÒ ×ÅÒÓÉÉ ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ\n"
-"  -h --help                        ÷Ù×ÅÓÔÉ ÜÔÕ ÓÐÒÁ×ËÕ\n"
-"     --info                        ðÅÒÅÞÉÓÌÉÔØ ÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÆÏÒÍÁÔÙ ÏÂßÅËÔÏ× É ÁÒÈÉÔÅËÔÕÒÙ\n"
-"  -o <ÆÁÊÌ>                        ðÏÍÅÓÔÉÔØ ÏÂÒÁÂÏÔÁÎÎÙÅ ×ÙÈÏÄÎÙÅ ÄÁÎÎÙÅ × <ÆÁÊÌ>\n"
+#: ieee.c:311
+msgid "unexpected end of debugging information"
+msgstr "ÎÅÏÖÉÄÁÎÎÏÅ ÏËÏÎÞÁÎÉÅ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ"
 
-#: objcopy.c:560
-#, c-format
-msgid "unrecognized section flag `%s'"
-msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÆÌÁÇ ÒÁÚÄÅÌÁ `%s'"
+#: ieee.c:398
+msgid "invalid number"
+msgstr "ÎÅ×ÅÒÎÙÊ ÎÏÍÅÒ"
 
-#: objcopy.c:561
-#, c-format
-msgid "supported flags: %s"
-msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÆÌÁÇÉ: %s"
+#: ieee.c:451
+msgid "invalid string length"
+msgstr "ÎÅ×ÅÒÎÁÑ ÄÌÉÎÁ ÓÔÒÏËÉ"
 
-#: objcopy.c:638
-#, c-format
-msgid "cannot open '%s': %s"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ '%s': %s"
+#: ieee.c:506 ieee.c:547
+msgid "expression stack overflow"
+msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ÓÔÅËÁ ×ÙÒÁÖÅÎÉÑ"
 
-#: objcopy.c:641 objcopy.c:2629
-#, c-format
-msgid "%s: fread failed"
-msgstr "%s: fread ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ"
+#: ieee.c:526
+msgid "unsupported IEEE expression operator"
+msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÏÐÅÒÁÔÏÒ ×ÙÒÁÖÅÎÉÑ IEEE"
 
-#: objcopy.c:714
-#, c-format
-msgid "%s:%d: Ignoring rubbish found on this line"
-msgstr "%s:%d: ðÒÏÐÕÓËÁÅÔÓÑ ÍÕÓÏÒ, ÎÁÊÄÅÎÎÙÊ × ÜÔÏÊ ÓÔÒÏËÅ "
+#: ieee.c:541
+msgid "unknown section"
+msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÒÁÚÄÅÌ"
 
-#: objcopy.c:976
-#, c-format
-msgid "%s: Multiple redefinition of symbol \"%s\""
-msgstr "%s: íÎÏÇÏËÒÁÔÎÏÅ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ ÓÉÍ×ÏÌÁ \"%s\""
+#: ieee.c:562
+msgid "expression stack underflow"
+msgstr "ÏÐÕÓÔÏÛÅÎÉÅ ÓÔÅËÁ ×ÙÒÁÖÅÎÉÑ"
 
-#: objcopy.c:980
-#, c-format
-msgid "%s: Symbol \"%s\" is target of more than one redefinition"
-msgstr "%s: óÉÍ×ÏÌ \"%s\" Ñ×ÌÑÅÔÓÑ ÃÅÌØÀ ÂÏÌÅÅ, ÞÅÍ ÏÄÎÏÇÏ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÑ"
+#: ieee.c:576
+msgid "expression stack mismatch"
+msgstr "ÎÅÓÏ×ÐÁÄÅÎÉÅ ÓÔÅËÁ ×ÙÒÁÖÅÎÉÑ"
 
-#: objcopy.c:1008
-#, c-format
-msgid "couldn't open symbol redefinition file %s (error: %s)"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÑ ÓÉÍ×ÏÌÁ %s (ÏÛÉÂËÁ: %s)"
+#: ieee.c:613
+msgid "unknown builtin type"
+msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ×ÓÔÒÏÅÎÎÙÊ ÔÉÐ"
 
-#: objcopy.c:1086
-#, c-format
-msgid "%s:%d: garbage found at end of line"
-msgstr "%s:%d: × ËÏÎÃÅ ÓÔÒÏËÉ ÎÁÊÄÅΠÍÕÓÏÒ"
+#: ieee.c:758
+msgid "BCD float type not supported"
+msgstr "ä×ÏÉÞÎÏ-ËÏÄÉÒÏ×ÁÎÎÙÊ ÄÅÓÑÔÉÞÎÙÊ ÔÉРӠÐÌÁ×ÁÀÝÅÊ ÚÁÐÑÔÏÊ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
 
-#: objcopy.c:1089
-#, c-format
-msgid "%s:%d: missing new symbol name"
-msgstr "%s:%d: ÏÔÓÕÔÓÔ×ÕÅÔ ÉÍÑ ÎÏ×ÏÇÏ ÓÉÍ×ÏÌÁ"
+#: ieee.c:895
+msgid "unexpected number"
+msgstr "ÎÅÏÖÉÄÁÎÎÏÅ ÞÉÓÌÏ"
 
-#: objcopy.c:1099
-#, c-format
-msgid "%s:%d: premature end of file"
-msgstr "%s:%d: ÐÒÅÖÄÅ×ÒÅÍÅÎÎÙÊ ËÏÎÅàÆÁÊÌÁ"
+#: ieee.c:902
+msgid "unexpected record type"
+msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ËÏÍÂÉÎÉÒÏ×ÁÎÎÙÊ ÔÉÐ"
 
-#: objcopy.c:1124
-msgid "Unable to change endianness of input file(s)"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÚÍÅÎÉÔØ endianness ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ"
+#: ieee.c:935
+msgid "blocks left on stack at end"
+msgstr "× ËÏÎÃÅ ÓÔÅËÁ ÏÓÔÁÌÉÓØ ÂÌÏËÉ"
 
-#: objcopy.c:1133
-#, c-format
-msgid "copy from %s(%s) to %s(%s)\n"
-msgstr "ËÏÐÉÒÏ×ÁÎÉÅ ÉÚ %s(%s) × %s(%s)\n"
+#: ieee.c:1198
+msgid "unknown BB type"
+msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÔÉРBB"
 
-#: objcopy.c:1170
-#, c-format
-msgid "Unable to recognise the format of the input file %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÆÏÒÍÁÔ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ %s"
+#: ieee.c:1207
+msgid "stack overflow"
+msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ÓÔÅËÁ"
 
-#: objcopy.c:1174
-#, c-format
-msgid "Warning: Output file cannot represent architecture %s"
-msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÷ÙÈÏÄÎÏÊ ÆÁÊÌ ÎÅ ÍÏÖÅÔ ÐÒÅÄÏÓÔÁ×ÉÔØ ÁÒÈÉÔÅËÔÕÒÕ %s"
+#: ieee.c:1230
+msgid "stack underflow"
+msgstr "ÏÐÕÓÔÏÛÅÎÉÅ ÓÔÅËÁ"
 
-#: objcopy.c:1211
-#, c-format
-msgid "can't create section `%s': %s"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÒÁÚÄÅÌ `%s': %s"
+#: ieee.c:1342 ieee.c:1412 ieee.c:2109
+msgid "illegal variable index"
+msgstr "ÎÅ×ÅÒÎÙÊ ÉÎÄÅËÓ ÐÅÒÅÍÅÎÎÏÊ"
 
-#: objcopy.c:1277
-msgid "there are no sections to be copied!"
-msgstr "ÎÅÔ ÒÁÚÄÅÌÏ× ÄÌÑ ËÏÐÉÒÏ×ÁÎÉÑ!"
+#: ieee.c:1390
+msgid "illegal type index"
+msgstr "ÎÅ×ÅÒÎÙÊ ÉÎÄÅËÓ ÔÉÐÁ"
 
-#: objcopy.c:1323
-#, c-format
-msgid "Can't fill gap after %s: %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÚÁÐÏÌÎÉÔØ ÐÒÏÍÅÖÕÔÏË ÐÏÓÌÅ %s: %s"
+#: ieee.c:1400 ieee.c:1437
+msgid "unknown TY code"
+msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ËÏÄ TY"
 
-#: objcopy.c:1348
-#, c-format
-msgid "Can't add padding to %s: %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÄÏÂÁ×ÉÔØ ÚÁÐÏÌÎÅÎÉÅ × %s: %s"
+#: ieee.c:1419
+msgid "undefined variable in TY"
+msgstr "ÎÅÏÐÒÅÄÅÌÅÎÎÁÑ ÐÅÒÅÍÅÎÎÁÑ × TY"
 
-#: objcopy.c:1514
-#, c-format
-msgid "%s: error copying private BFD data: %s"
-msgstr "%s: ÏÛÉÂËÁ ËÏÐÉÒÏ×ÁÎÉÑ ÞÁÓÔÎÙÈ ÄÁÎÎÙÈ BFD: %s"
+#. Pascal file name.  FIXME.
+#: ieee.c:1830
+msgid "Pascal file name not supported"
+msgstr "éÍÑ ÆÁÊÌÁ Pascal ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
 
-#: objcopy.c:1525
-msgid "unknown alternate machine code, ignored"
-msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÁÌØÔÅÒÎÁÔÉ×ÎÙÊ ËÏÄ ÍÁÛÉÎÙ, ÐÒÏÐÕÝÅÎ"
+#: ieee.c:1878
+msgid "unsupported qualifier"
+msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ËÌÁÓÓÉÆÉËÁÔÏÒ"
 
-#: objcopy.c:1555 objcopy.c:1585
-#, c-format
-msgid "cannot mkdir %s for archive copying (error: %s)"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ mkdir %s ÄÌÑ ËÏÐÉÒÏ×ÁÎÉÑ ÁÒÈÉ×Á (ÏÛÉÂËÁ: %s)"
+#: ieee.c:2147
+msgid "undefined variable in ATN"
+msgstr "ÎÅÏÐÒÅÄÅÌÅÎÎÁÑ ÐÅÒÅÍÅÎÎÁÑ × ATN"
 
-#: objcopy.c:1790
-#, c-format
-msgid "Multiple renames of section %s"
-msgstr "íÎÏÇÏËÒÁÔÎÙÅ ÐÅÒÅÉÍÅÎÏ×ÁÎÉÑ ÒÁÚÄÅÌÁ %s"
+#: ieee.c:2190
+msgid "unknown ATN type"
+msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÔÉРATN"
 
-#: objcopy.c:1841
-msgid "private header data"
-msgstr "ÞÁÓÔÎÙÅ ÄÁÎÎÙÅ ÚÁÇÏÌÏ×ËÁ"
+#. Reserved for FORTRAN common.
+#: ieee.c:2312
+msgid "unsupported ATN11"
+msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ATN11"
 
-#: objcopy.c:1849
-#, c-format
-msgid "%s: error in %s: %s"
-msgstr "%s: ÏÛÉÂËÁ × %s: %s"
+#. We have no way to record this information.  FIXME.
+#: ieee.c:2339
+msgid "unsupported ATN12"
+msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ATN12"
 
-#: objcopy.c:1903
-msgid "making"
-msgstr "ÓÏÚÄÁÅÔÓÑ"
+#: ieee.c:2399
+msgid "unexpected string in C++ misc"
+msgstr "ÎÅÏÖÉÄÁÎÎÁÑ ÓÔÒÏËÁ × C++ misc"
 
-#: objcopy.c:1912
-msgid "size"
-msgstr "ÒÁÚÍÅÒ"
+#: ieee.c:2412
+msgid "bad misc record"
+msgstr "ÐÌÏÈÁÑ ÚÁÐÉÓØ misc"
 
-#: objcopy.c:1926
-msgid "vma"
-msgstr "vma"
+#: ieee.c:2453
+msgid "unrecognized C++ misc record"
+msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ C++ ÚÁÐÉÓØ misc"
 
-#: objcopy.c:1951
-msgid "alignment"
-msgstr "ÏÒÉÅÎÔÁÃÉÑ"
+#: ieee.c:2568
+msgid "undefined C++ object"
+msgstr "ÎÅÏÐÒÅÄÅÌÅÎÎÙÊ ÏÂßÅËÔ C++"
 
-#: objcopy.c:1966
-msgid "flags"
-msgstr "ÆÌÁÇÉ"
+#: ieee.c:2602
+msgid "unrecognized C++ object spec"
+msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ÏÂßÅËÔÁ C++"
 
-#: objcopy.c:1988
-msgid "private data"
-msgstr "ÞÁÓÔÎÙÅ ÄÁÎÎÙÅ"
+#: ieee.c:2638
+msgid "unsupported C++ object type"
+msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÔÉРÏÂßÅËÔÁ C++"
+
+#: ieee.c:2648
+msgid "C++ base class not defined"
+msgstr "ÂÁÚÏ×ÙÊ ËÌÁÓÓ C++ ÎÅ ÏÐÒÅÄÅÌÅÎ"
+
+#: ieee.c:2660 ieee.c:2765
+msgid "C++ object has no fields"
+msgstr "ÏÂßÅËÔ C++ ÎÅ ÉÍÅÅÔ ÐÏÌÅÊ"
+
+#: ieee.c:2679
+msgid "C++ base class not found in container"
+msgstr "ÂÁÚÏ×ÙÊ ËÌÁÓÓ C++ ÎÅ ÎÁÊÄÅΠנËÏÎÅÊÎÅÒÅ"
+
+#: ieee.c:2786
+msgid "C++ data member not found in container"
+msgstr "ÜÌÅÍÅÎÔ ËÌÁÓÓÁ C++ ÎÅ ÎÁÊÄÅΠנËÏÎÔÅÊÎÅÒÅ"
+
+#: ieee.c:2827 ieee.c:2977
+msgid "unknown C++ visibility"
+msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ ×ÉÄÉÍÏÓÔØ C++"
+
+#: ieee.c:2861
+msgid "bad C++ field bit pos or size"
+msgstr "ÎÅ×ÅÒÎÙÊ Ä×ÏÉÞÎÙÊ ÒÁÚÒÑÄ ÉÌÉ ÒÁÚÍÅÒ ÐÏÌÑ C++"
+
+#: ieee.c:2953
+msgid "bad type for C++ method function"
+msgstr "ÎÅ×ÅÒÎÙÊ ÔÉРÆÕÎËÃÉÉ ÍÅÔÏÄÁ C++"
+
+#: ieee.c:2963
+msgid "no type information for C++ method function"
+msgstr "ÎÅÔ ÉÎÆÏÒÍÁÃÉÉ Ï ÔÉÐÅ ÄÌÑ ÆÕÎËÃÉÉ ÍÅÔÏÄÁ C++"
+
+#: ieee.c:3002
+msgid "C++ static virtual method"
+msgstr "ÓÔÁÔÉÞÅÓËÉÊ ×ÉÒÔÕÁÌØÎÙÊ ÍÅÔÏÄ C++"
+
+#: ieee.c:3097
+msgid "unrecognized C++ object overhead spec"
+msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ ÓÌÕÖÅÂÎÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ÏÂßÅËÔÁ C++"
+
+#: ieee.c:3136
+msgid "undefined C++ vtable"
+msgstr "ÎÅÏÐÒÅÄÅÌÅÎÎÁÑ ×ÉÒÔÕÁÌØÎÁÑ ÔÁÂÌÉÃÁ C++"
+
+#: ieee.c:3205
+msgid "C++ default values not in a function"
+msgstr "ÚÎÁÞÅÎÉÑ C++ ÐÏ ÕÍÏÌÞÁÎÉÀ ÎÅ × ÆÕÎËÃÉÉ"
+
+#: ieee.c:3245
+msgid "unrecognized C++ default type"
+msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÔÉРC++ ÐÏ ÕÍÏÌÞÁÎÉÀ"
+
+#: ieee.c:3276
+msgid "reference parameter is not a pointer"
+msgstr "ÓÓÙÌÏÞÎÙÊ ÐÁÒÁÍÅÔÒ ÎÅ Ñ×ÌÑÅÔÓÑ ÕËÁÚÁÔÅÌÅÍ"
+
+#: ieee.c:3359
+msgid "unrecognized C++ reference type"
+msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÓÓÙÌÏÞÎÙÊ ÔÉРC++"
+
+#: ieee.c:3441
+msgid "C++ reference not found"
+msgstr "ÓÓÙÌËÁ C++ ÎÅ ÎÁÊÄÅÎÁ"
+
+#: ieee.c:3449
+msgid "C++ reference is not pointer"
+msgstr "ÓÓÙÌËÁ C++ ÎÅ Ñ×ÌÑÅÔÓÑ ÕËÁÚÁÔÅÌÅÍ"
+
+#: ieee.c:3475 ieee.c:3483
+msgid "missing required ASN"
+msgstr "ÏÔÓÕÔÓÔ×ÕÅÔ ÔÒÅÂÕÅÍÙÊ ASN"
+
+#: ieee.c:3510 ieee.c:3518
+msgid "missing required ATN65"
+msgstr "ÏÔÓÕÔÓÔ×ÕÅÔ ÔÒÅÂÕÅÍÙÊ ATN65"
+
+#: ieee.c:3532
+msgid "bad ATN65 record"
+msgstr "ÐÌÏÈÁÑ ÚÁÐÉÓØ ATN65"
 
-#: objcopy.c:1996
+#: ieee.c:4160
 #, c-format
-msgid "%s: section `%s': error in %s: %s"
-msgstr "%s: ÒÁÚÄÅÌ `%s': ÏÛÉÂËÁ × %s: %s"
+msgid "IEEE numeric overflow: 0x"
+msgstr "ÞÉÓÌÏ×ÏÅ ÐÅÒÅÐÏÌÎÅÎÉÅ IEEE: 0x"
 
-#: objcopy.c:2274
+#: ieee.c:4204
 #, c-format
-msgid "%s: can't create debugging section: %s"
-msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÏÔÌÁÄÏÞÎÙÊ ÒÁÚÄÅÌ: %s"
+msgid "IEEE string length overflow: %u\n"
+msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ÄÌÉÎÙ ÓÔÒÏËÉ IEEE: %u\n"
 
-#: objcopy.c:2288
+#: ieee.c:5203
 #, c-format
-msgid "%s: can't set debugging section contents: %s"
-msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÓÏÄÅÒÖÉÍÏÅ ÏÔÌÁÄÏÞÎÏÇÏ ÒÁÚÄÅÌÁ: %s"
+msgid "IEEE unsupported integer type size %u\n"
+msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÒÁÚÍÅÒ ÃÅÌÏÇÏ ÔÉÐÁ IEEE %u\n"
 
-#: objcopy.c:2297
+#: ieee.c:5237
 #, c-format
-msgid "%s: don't know how to write debugging information for %s"
-msgstr "%s: ÎÅ ÉÚ×ÅÓÔÎÏ, ËÁË ÚÁÐÉÓÁÔØ ÏÔÌÁÄÏÞÎÕÀ ÉÎÆÏÒÍÁÃÉÀ ÄÌÑ %s"
+msgid "IEEE unsupported float type size %u\n"
+msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÒÁÚÍÅÒ ÔÉÐÁ Ó ÐÌÁ×ÁÀÝÅÊ ÚÁÐÑÔÏÊ IEEE %u\n"
 
-#: objcopy.c:2472
-msgid "byte number must be non-negative"
-msgstr "ÎÏÍÅÒ ÂÁÊÔÁ ÄÏÌÖÅΠÂÙÔØ ÎÅÏÔÒÉÃÁÔÅÌØÎÙÍ"
+#: ieee.c:5271
+#, c-format
+msgid "IEEE unsupported complex type size %u\n"
+msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÒÁÚÍÅÒ ËÏÍÐÌÅËÓÎÏÇÏ ÔÉÐÁ IEEE%u\n"
 
-#: objcopy.c:2482
-msgid "interleave must be positive"
-msgstr "ÞÅÒÅÄÏ×ÁÎÉÅ ÄÏÌÖÎÏ ÂÙÔØ ÐÏÌÏÖÉÔÅÌØÎÙÍ"
+#: nlmconv.c:269 srconv.c:1813
+msgid "input and output files must be different"
+msgstr "×ÈÏÄÎÏÊ É ×ÙÈÏÄÎÏÊ ÆÁÊÌÙ ÄÏÌÖÎÙ ÂÙÔØ ÒÁÚÌÉÞÎÙÍÉ"
+
+#: nlmconv.c:316
+msgid "input file named both on command line and with INPUT"
+msgstr "×ÈÏÄÎÏÊ ÆÁÊÌ ÎÁÚ×ÁΠנËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ É × INPUT"
+
+#: nlmconv.c:325
+msgid "no input file"
+msgstr "ÎÅÔ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ"
+
+#: nlmconv.c:355
+msgid "no name for output file"
+msgstr "ÎÅÔ ÉÍÅÎÉ ÄÌÑ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ"
+
+#: nlmconv.c:369
+msgid "warning: input and output formats are not compatible"
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ×ÈÏÄÎÏÊ É ×ÙÈÏÄÎÏÊ ÆÏÒÍÁÔÙ ÎÅ ÓÏ×ÍÅÓÔÉÍÙ"
+
+#: nlmconv.c:398
+msgid "make .bss section"
+msgstr "ÓÏÚÄÁÎÉÅ ÒÁÚÄÅÌÁ .bss"
 
-#: objcopy.c:2502 objcopy.c:2510
+#: nlmconv.c:407
+msgid "make .nlmsections section"
+msgstr "ÓÏÚÄÁÎÉÅ ÒÁÚÄÅÌÁ .nlmsections"
+
+#: nlmconv.c:409
+msgid "set .nlmsections flags"
+msgstr "ÕÓÔÁÎÏ×ËÁ ÆÌÁÇÏ× .nlmsections"
+
+#: nlmconv.c:437
+msgid "set .bss vma"
+msgstr "ÕÓÔÁÎÏ×ËÁ .bss vma"
+
+#: nlmconv.c:444
+msgid "set .data size"
+msgstr "ÕÓÔÁÎÏ×ËÁ ÒÁÚÍÅÒÁ .data"
+
+#: nlmconv.c:624
 #, c-format
-msgid "%s both copied and removed"
-msgstr "ÏÂÁ %s ÓËÏÐÉÒÏ×ÁÎÙ É ÕÄÁÌÅÎÙ"
+msgid "warning: symbol %s imported but not in import list"
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÓÉÍ×ÏÌ %s ÉÍÐÏÒÔÉÒÏ×ÁÎ, ÎÏ ÅÇÏ ÎÅÔ × ÓÐÉÓËÅ ÉÍÐÏÒÔÁ"
+
+#: nlmconv.c:644
+msgid "set start address"
+msgstr "ÕÓÔÁÎÏ×ËÁ ÎÁÞÁÌØÎÏÇÏ ÁÄÒÅÓÁ"
 
-#: objcopy.c:2603 objcopy.c:2674 objcopy.c:2774 objcopy.c:2805 objcopy.c:2829
-#: objcopy.c:2833 objcopy.c:2853
+#: nlmconv.c:693
 #, c-format
-msgid "bad format for %s"
-msgstr "ÐÌÏÈÏÊ ÆÏÒÍÁÔ ÄÌÑ %s"
+msgid "warning: START procedure %s not defined"
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: START-ÐÒÏÃÅÄÕÒÁ %s ÎÅ ÏÐÒÅÄÅÌÅÎÁ"
 
-#: objcopy.c:2624
+#: nlmconv.c:695
 #, c-format
-msgid "cannot open: %s: %s"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ: %s: %s"
+msgid "warning: EXIT procedure %s not defined"
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: EXIT-ÐÒÏÃÅÄÕÒÁ %s ÎÅ ÏÐÒÅÄÅÌÅÎÁ"
 
-#: objcopy.c:2743
+#: nlmconv.c:697
 #, c-format
-msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
-msgstr "ðÒÅÄÕÐÒÅÖÅÄÎÉÅ: ÏÂÒÅÚÁÅÔÓÑ ÚÁÐÏÌÎÅÎÉÅ ÐÒÏÍÅÖÕÔËÁ ÏÔ 0x%s ÄÏ 0x%x"
+msgid "warning: CHECK procedure %s not defined"
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: CHECK-ÐÒÏÃÅÄÕÒÁ %s ÎÅ ÏÐÒÅÄÅÌÅÎÁ"
 
-#: objcopy.c:2903
-msgid "alternate machine code index must be positive"
-msgstr "ÉÎÄÅËÓ ÁÌØÔÅÒÎÁÔÉ×ÎÏÇÏ ËÏÄÁ ÍÁÛÉÎÙ ÄÏÌÖÅΠÂÙÔØ ÐÏÌÏÖÉÔÅÌØÎÙÍ"
+#: nlmconv.c:718 nlmconv.c:907
+msgid "custom section"
+msgstr "ÒÁÚÄÅÌ custom"
 
-#: objcopy.c:2961
-msgid "byte number must be less than interleave"
-msgstr "ÎÏÍÅÒ ÂÁÊÔÁ ÄÏÌÖÅΠÂÙÔØ ÍÅÎØÛÅ ÞÅÒÅÄÏ×ÁÎÉÑ"
+#: nlmconv.c:739 nlmconv.c:936
+msgid "help section"
+msgstr "ÒÁÚÄÅÌ help"
 
-#: objcopy.c:2991
-#, c-format
-msgid "architecture %s unknown"
-msgstr "ÁÒÈÉÔÅËÔÕÒÁ %s ÎÅ ÉÚ×ÅÓÔÎÁ"
+#: nlmconv.c:761 nlmconv.c:954
+msgid "message section"
+msgstr "ÒÁÚÄÅÌ message"
 
-#: objcopy.c:2995
-msgid "Warning: input target 'binary' required for binary architecture parameter."
-msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: 'Ä×ÏÉÞÎÙÊ' ÃÅÌÅ×ÏÊ ×ÈÏÄÎÏÊ ÆÁÊÌ ÔÒÅÂÕÅÔÓÑ ÄÌÑ ÐÁÒÁÍÅÔÒÁ Ä×ÏÉÞÎÏÊ ÁÒÈÉÔÅËÔÕÒÙ."
+#: nlmconv.c:777 nlmconv.c:987
+msgid "module section"
+msgstr "ÒÁÚÄÅÌ module"
 
-#: objcopy.c:2996
-#, c-format
-msgid " Argument %s ignored"
-msgstr " áÒÇÕÍÅÎÔ %s ÐÒÏÐÕÝÅÎ"
+#: nlmconv.c:797 nlmconv.c:1003
+msgid "rpc section"
+msgstr "ÒÁÚÄÅÌ rpc"
 
-#: objcopy.c:3002
+#. There is no place to record this information.
+#: nlmconv.c:833
 #, c-format
-msgid "warning: could not locate '%s'.  System error message: %s"
-msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÎÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ '%s'. óÉÓÔÅÍÎÏÅ ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ: %s"
+msgid "%s: warning: shared libraries can not have uninitialized data"
+msgstr "%s: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÓÏ×ÍÅÓÔÎÏ ÉÓÐÏÌØÚÕÅÍÙÅ ÂÉÂÌÉÏÔÅËÉ ÎÅ ÍÏÇÕÔ ÉÍÅÔØ ÎÅÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÎÎÙÅ ÄÁÎÎÙÅ"
 
-#: objcopy.c:3042 objcopy.c:3056
-#, c-format
-msgid "%s %s%c0x%s never used"
-msgstr "%s %s%c0x%s ÎÉËÏÇÄÁ ÎÅ ÉÓÐÏÌØÚÕÅÔÓÑ"
+#: nlmconv.c:854 nlmconv.c:1022
+msgid "shared section"
+msgstr "ÒÁÚÄÅÌ shared"
+
+#: nlmconv.c:862
+msgid "warning: No version number given"
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: îÅ ÕËÁÚÁΠÎÏÍÅÒ ×ÅÒÓÉÉ"
 
-#: objdump.c:176
+#: nlmconv.c:902 nlmconv.c:931 nlmconv.c:949 nlmconv.c:998 nlmconv.c:1017
 #, c-format
-msgid "Usage: %s <option(s)> <file(s)>\n"
-msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s <ÏÐÃÉÉ> <ÆÁÊÌ(Ù)>\n"
+msgid "%s: read: %s"
+msgstr "%s: ÞÔÅÎÉÅ: %s"
+
+#: nlmconv.c:924
+msgid "warning: FULLMAP is not supported; try ld -M"
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: FULLMAP ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ; ÐÏÐÒÏÂÕÊÔÅ ld -M"
 
-#: objdump.c:177
+#: nlmconv.c:1100
 #, c-format
-msgid " Display information from object <file(s)>.\n"
-msgstr " ïÔÏÂÒÁÖÁÅÔ ÉÎÆÏÒÍÁÃÉÀ ÉÚ ÏÂßÅËÔÁ <ÆÁÊÌ(Ù)>.\n"
+msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] [in-ÆÁÊÌ [out-ÆÁÊÌ]]\n"
 
-#: objdump.c:178
+#: nlmconv.c:1101
 #, c-format
-msgid " At least one of the following switches must be given:\n"
-msgstr " äÏÌÖÅΠÂÙÔØ ÕËÁÚÁΠÐÏ ËÒÁÊÎÅÊ ÍÅÒÅ ÏÄÉΠÉÚ ÓÌÅÄÕÀÝÉÈ ËÌÀÞÅÊ:\n"
+msgid " Convert an object file into a NetWare Loadable Module\n"
+msgstr " ëÏÎ×ÅÒÔÉÒÕÅÔ ÏÂßÅËÔÎÙÊ ÆÁÊÌ × ÚÁÇÒÕÖÁÅÍÙÊ ÍÏÄÕÌØ ÓÉÓÔÅÍÙ NetWare\n"
 
-#: objdump.c:179
+#: nlmconv.c:1102
 #, c-format
 msgid ""
-"  -a, --archive-headers    Display archive header information\n"
-"  -f, --file-headers       Display the contents of the overall file header\n"
-"  -p, --private-headers    Display object format specific file header contents\n"
-"  -h, --[section-]headers  Display the contents of the section headers\n"
-"  -x, --all-headers        Display the contents of all headers\n"
-"  -d, --disassemble        Display assembler contents of executable sections\n"
-"  -D, --disassemble-all    Display assembler contents of all sections\n"
-"  -S, --source             Intermix source code with disassembly\n"
-"  -s, --full-contents      Display the full contents of all sections requested\n"
-"  -g, --debugging          Display debug information in object file\n"
-"  -e, --debugging-tags     Display debug information using ctags style\n"
-"  -G, --stabs              Display (in raw form) any STABS info in the file\n"
-"  -t, --syms               Display the contents of the symbol table(s)\n"
-"  -T, --dynamic-syms       Display the contents of the dynamic symbol table\n"
-"  -r, --reloc              Display the relocation entries in the file\n"
-"  -R, --dynamic-reloc      Display the dynamic relocation entries in the file\n"
-"  -v, --version            Display this program's version number\n"
-"  -i, --info               List object formats and architectures supported\n"
-"  -H, --help               Display this information\n"
+" The options are:\n"
+"  -I --input-target=<bfdname>   Set the input binary file format\n"
+"  -O --output-target=<bfdname>  Set the output binary file format\n"
+"  -T --header-file=<file>       Read <file> for NLM header information\n"
+"  -l --linker=<linker>          Use <linker> for any linking\n"
+"  -d --debug                    Display on stderr the linker command line\n"
+"  @<file>                       Read options from <file>.\n"
+"  -h --help                     Display this information\n"
+"  -v --version                  Display the program's version\n"
 msgstr ""
-"  -a, --archive-headers    ÷Ù×ÅÓÔÉ ÉÎÆÏÒÍÁÃÉÀ ÚÁÇÏÌÏ×ËÁ ÁÒÈÉ×Á\n"
-"  -f, --file-headers       ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ÚÁÇÏÌÏ×ËÁ ×ÓÅÇÏ ÆÁÊÌÁ\n"
-"  -p, --private-headers    ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ÚÁÇÏÌÏ×ËÁ ÆÁÊÌÁ, ÓÐÅÃÉÆÉÞÎÏÇÏ ÄÌÑ ÆÏÒÍÁÔÁ ÏÂßÅËÔÁ\n"
-"  -h, --[section-]headers  ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ÚÁÇÏÌÏ×ËÏ× ÒÁÚÄÅÌÏ×\n"
-"  -x, --all-headers        ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ×ÓÅÈ ÚÁÇÏÌÏ×ËÏ×\n"
-"  -d, --disassemble        ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ÁÓÓÅÍÂÌÅÒÁ ÉÓÐÏÌÎÑÅÍÙÈ ÒÁÚÄÅÌÏ×\n"
-"  -D, --disassemble-all    ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ÁÓÓÅÍÂÌÅÒÁ ×ÓÅÈ ÒÁÚÄÅÌÏ×\n"
-"  -S, --source             ðÅÒÅÍÅÛÁÔØ ÉÓÈÏÄÎÙÊ ËÏÄ Ó ÄÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÅÍ\n"
-"  -s, --full-contents      ÷Ù×ÅÓÔÉ ÐÏÌÎÏÅ ÓÏÄÅÒÖÉÍÏÅ ×ÓÅÈ ÚÁÐÒÏÛÅÎÎÙÈ ÒÁÚÄÅÌÏ×\n"
-"  -g, --debugging          ÷Ù×ÅÓÔÉ ÏÔÌÁÄÏÞÎÕÀ ÉÎÆÏÒÍÁÃÉÀ × ÏÂßÅËÔÎÏÍ ÆÁÊÌÅ\n"
-"  -e, --debugging-tags     ÷Ù×ÅÓÔÉ ÏÔÌÁÄÏÞÎÕÀ ÉÎÆÏÒÍÁÃÉÀ × ÓÔÉÌÅ ctags\n"
-"  -G, --stabs              ÷Ù×ÅÓÔÉ (× ÓÙÒÏÊ ÆÏÒÍÅ) ÌÀÂÕÀ ÉÎÆÏÒÍÁÃÉÀ STABS × ÆÁÊÌÅ\n"
-"  -t, --syms               ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ÔÁÂÌÉÃ(Ù) ÓÉÍ×ÏÌÏ×\n"
-"  -T, --dynamic-syms       ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ÔÁÂÌÉÃÙ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÉÍ×ÏÌÏ×\n"
-"  -r, --reloc              ÷Ù×ÅÓÔÉ ÐÕÎËÔÙ ÐÅÒÅÍÅÝÅÎÉÑ × ÆÁÊÌÅ\n"
-"  -R, --dynamic-reloc      ÷Ù×ÅÓÔÉ ÐÕÎËÔÙ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÐÅÒÅÍÅÝÅÎÉÑ × ÆÁÊÌÅ\n"
-"  -v, --version            ÷Ù×ÅÓÔÉ ÎÏÍÅÒ ×ÅÒÓÉÉ ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ\n"
-"  -i, --info               ÷Ù×ÅÓÔÉ ÓÐÉÓÏË ÐÏÄÄÅÒÖÉ×ÁÅÍÙÈ ÆÏÒÍÁÔÏ× ÏÂßÅËÔÏ× É ÁÒÈÉÔÅËÔÕÒ\n"
-"  -H, --help               ÷Ù×ÅÓÔÉ ÜÔÕ ÉÎÆÏÒÍÁÃÉÀ\n"
+" ïÐÃÉÉ:\n"
+"  -I --input-target=<bfd-ÉÍÑ>   õÓÔÁÎÏ×ËÁ ÆÏÒÍÁÔÁ ×ÈÏÄÎÏÇÏ Ä×ÏÉÞÎÏÇÏ ÆÁÊÌÁ\n"
+"  -O --output-target=<bfd-ÉÍÑ>  õÓÔÁÎÏ×ËÁ ÆÏÒÍÁÔÁ ×ÙÈÏÄÎÏÇÏ Ä×ÏÉÞÎÏÇÏ ÆÁÊÌÁ\n"
+"  -T --header-file=<ÆÁÊÌ>       þÔÅÎÉÅ <ÆÁÊÌÁ> Ó ÉÎÆÏÒÍÁÃÉÅÊ ÚÁÇÏÌÏ×ËÁ NLM\n"
+"  -l --linker=<ËÏÍÐÏÎÏ×ÝÉË>     éÓÐÏÌØÚÏ×ÁÎÉÅ <ËÏÍÐÏÎÏ×ÝÉËÁ> ÄÌÑ ÌÀÂÏÇÏ Ó×ÑÚÙ×ÁÎÉÑ\n"
+"  -d --debug                    ÷Ù×ÏÄ ÎÁ stderr ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ ËÏÍÐÏÎÏ×ÝÉËÁ\n"
+"  @<ÆÁÊÌ>                       þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
+"  -h --help                     ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n"
+"  -v --version                  ÷Ù×ÏÄ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ\n"
 
-#: objdump.c:202
+#: nlmconv.c:1143
 #, c-format
-msgid ""
-"\n"
-" The following switches are optional:\n"
-msgstr ""
-"\n"
-" óÌÅÄÕÀÝÉÅ ËÌÀÞÉ Ñ×ÌÑÀÔÓÑ ÏÐÃÉÏÎÁÌØÎÙÍÉ:\n"
+msgid "support not compiled in for %s"
+msgstr "ÏÔËÏÍÐÉÌÉÒÏ×ÁΠÂÅÚ ÐÏÄÄÅÒÖËÉ %s"
 
-#: objdump.c:203
-#, c-format
-msgid ""
-"  -b, --target=BFDNAME           Specify the target object format as BFDNAME\n"
-"  -m, --architecture=MACHINE     Specify the target architecture as MACHINE\n"
-"  -j, --section=NAME             Only display information for section NAME\n"
-"  -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
-"  -EB --endian=big               Assume big endian format when disassembling\n"
-"  -EL --endian=little            Assume little endian format when disassembling\n"
-"      --file-start-context       Include context from start of file (with -S)\n"
-"  -I, --include=DIR              Add DIR to search list for source files\n"
-"  -l, --line-numbers             Include line numbers and filenames in output\n"
-"  -C, --demangle[=STYLE]         Decode mangled/processed symbol names\n"
-"                                  The STYLE, if specified, can be `auto', `gnu',\n"
-"                                  `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
-"                                  or `gnat'\n"
-"  -w, --wide                     Format output for more than 80 columns\n"
-"  -z, --disassemble-zeroes       Do not skip blocks of zeroes when disassembling\n"
-"      --start-address=ADDR       Only process data whose address is >= ADDR\n"
-"      --stop-address=ADDR        Only process data whose address is <= ADDR\n"
-"      --prefix-addresses         Print complete address alongside disassembly\n"
-"      --[no-]show-raw-insn       Display hex alongside symbolic disassembly\n"
-"      --adjust-vma=OFFSET        Add OFFSET to all displayed section addresses\n"
-"      --special-syms             Include special symbols in symbol dumps\n"
-"\n"
-msgstr ""
-"  -b, --target=BFD-éíñ           õËÁÚÁÔØ ÃÅÌÅ×ÏÊ ÆÏÒÍÁÔ ÏÂßÅËÔÁ ËÁË BFD-éíñ\n"
-"  -m, --architecture=íáûéîá      õËÁÚÁÔØ ÃÅÌÅ×ÕÀ ÁÒÈÉÔÅËÔÕÒÕ ËÁË íáûéîá\n"
-"  -j, --section=éíñ              ÷Ù×ÅÓÔÉ ÉÎÆÏÒÍÁÃÉÀ ÔÏÌØËÏ ÄÌÑ ÒÁÚÄÅÌÁ éíñ\n"
-"  -M, --disassembler-options=OPT ðÅÒÅÄÁÔØ ÔÅËÓÔ OPT × ÄÉÚÁÓÓÅÍÂÌÅÒ\n"
-"  -EB --endian=big               ðÒÅÄÐÏÌÏÖÉÔØ ÆÏÒÍÁÔ big endian ÐÒÉ ÄÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÉ\n"
-"  -EL --endian=little            ðÒÅÄÐÏÌÏÖÉÔØ ÆÏÒÍÁÔ little endian ÐÒÉ ÄÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÉ\n"
-"      --file-start-context       ÷ËÌÀÞÉÔØ ËÏÎÔÅËÓÔ ÉÚ ÎÁÞÁÌÁ ÆÁÊÌÁ (Ó -S)\n"
-"  -I, --include=ëáô              äÏÂÁ×ÉÔØ ëáôÁÌÏÇ × ÓÐÉÓÏË ÐÏÉÓËÁ ÉÓÈÏÄÎÙÈ ÆÁÊÌÏ×\n"
-"  -l, --line-numbers             ÷ËÌÀÞÉÔØ ÎÏÍÅÒÁ ÓÔÒÏË É ÉÍÅÎÁ ÆÁÊÌÏ× ÎÁ ×Ù×ÏÄÅ\n"
-"  -C, --demangle[=óôéìø]         äÅËÏÄÉÒÏ×ÁÔØ ÓËÏÒÒÅËÔÉÒÏ×ÁÎÎÙÅ/ÏÂÒÁÂÏÔÁÎÎÙÅ ÉÍÅÎÁ ÓÉÍ×ÏÌÏ×\n"
-"                                  óôéìø, ÅÓÌÉ ÕËÁÚÁÎ, ÍÏÖÅÔ ÂÙÔØ `auto', `gnu',\n"
-"                                  `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
-"                                  ÉÌÉ `gnat'\n"
-"  -w, --wide                     æÏÒÍÁÔÉÒÏ×ÁÔØ ×Ù×ÏÄ ÄÌÑ ÂÏÌÅÅ,\9aÞÅÍ 80 ËÏÌÏÎÏË\n"
-"  -z, --disassemble-zeroes       îÅ ÐÒÏÐÕÓËÁÔØ ÂÌÏËÉ ÎÕÌÅÊ ÐÒÉ ÄÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÉ\n"
-"      --start-address=áäòåó      ïÂÒÁÂÏÔÁÔØ ÔÏÌØËÏ ÄÁÎÎÙÅ, ÁÄÒÅÓ ËÏÔÏÒÙÈ >= áäòåó\n"
-"      --stop-address=áäòåó       ïÂÒÁÂÏÔÁÔØ ÔÏÌØËÏ ÄÁÎÎÙÅ, ÁÄÒÅÓ ËÏÔÏÒÙÈ <= áäòåó\n"
-"      --prefix-addresses         ÷Ù×ÅÓÔÉ ÐÏÌÎÙÊ ÁÄÒÅÓ ÐÒÉ ÄÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÉ\n"
-"      --[no-]show-raw-insn       ÷Ù×ÅÓÔÉ hex ÐÒÉ ÓÉÍ×ÏÌÉÞÅÓËÏÍ ÄÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÉ\n"
-"      --adjust-vma=óíåýåîéå      äÏÂÁ×ÉÔØ óíåýåîéå ËÏ ×ÓÅÍ ÁÄÒÅÓÁÍ ×Ù×ÏÄÉÍÙÈ ÒÁÚÄÅÌÏ×\n"
-"      --special-syms             ÷ËÌÀÞÉÔØ ÓÐÅÃÉÁÌØÎÙÅ ÓÉÍ×ÏÌÙ × ÄÁÍÐÙ ÓÉÍ×ÏÌÏ×\n"
-"\n"
+#: nlmconv.c:1180
+msgid "make section"
+msgstr "ÒÁÚÄÅÌ make"
 
-#: objdump.c:378
-#, c-format
-msgid "Sections:\n"
-msgstr "òÁÚÄÅÌÙ:\n"
+#: nlmconv.c:1194
+msgid "set section size"
+msgstr "ÕÓÔÁÎÏ×ËÁ ÒÁÚÍÅÒÁ ÒÁÚÄÅÌÁ"
 
-#: objdump.c:381 objdump.c:385
-#, c-format
-msgid "Idx Name          Size      VMA       LMA       File off  Algn"
-msgstr "éÎÄ éÍÑ           òÁÚÍÅÒ    VMA       LMA       æÁÊÌ      ÷ÙÒÁ×"
+#: nlmconv.c:1200
+msgid "set section alignment"
+msgstr "ÕÓÔÁÎÏ×ËÁ ÏÒÉÅÎÔÁÃÉÉ ÒÁÚÄÅÌÁ"
 
-#: objdump.c:387
-#, c-format
-msgid "Idx Name          Size      VMA               LMA               File off  Algn"
-msgstr "éÎÄ éÍÑ           òÁÚÍÅÒ    VMA               LMA               æÁÊÌ      ÷ÙÒÁ×"
+#: nlmconv.c:1204
+msgid "set section flags"
+msgstr "ÕÓÔÁÎÏ×ËÁ ÆÌÁÇÏ× ÒÁÚÄÅÌÁ"
+
+#: nlmconv.c:1215
+msgid "set .nlmsections size"
+msgstr "ÕÓÔÁÎÏ×ËÁ ÒÁÚÍÅÒÁ .nlmsections"
+
+#: nlmconv.c:1296 nlmconv.c:1304 nlmconv.c:1313 nlmconv.c:1318
+msgid "set .nlmsection contents"
+msgstr "ÕÓÔÁÎÏ×ËÁ ÓÏÄÅÒÖÉÍÏÇÏ .nlmsections"
+
+#: nlmconv.c:1797
+msgid "stub section sizes"
+msgstr "ÒÁÚÍÅÒÙ ÒÁÚÄÅÌÁ ÚÁÇÌÕÛËÉ"
+
+#: nlmconv.c:1844
+msgid "writing stub"
+msgstr "ÚÁÐÉÓÙ×ÁÅÔÓÑ ÚÁÇÌÕÛËÁ"
 
-#: objdump.c:391
+#: nlmconv.c:1928
 #, c-format
-msgid "  Flags"
-msgstr "  æÌÁÇÉ"
+msgid "unresolved PC relative reloc against %s"
+msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÏÅ ÏÔÎÏÓÉÔÅÌØÎÏÅ ÐÅÒÅÍÅÝÅÎÉÅ ÐÏ ÓÞÅÔÞÉËÕ ËÏÍÁÎÄ × %s"
 
-#: objdump.c:393
+#: nlmconv.c:1992
 #, c-format
-msgid "  Pg"
-msgstr "  óÔÒ"
+msgid "overflow when adjusting relocation against %s"
+msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ÐÒÉ ÒÅÇÕÌÉÒÏ×ËÅ ÐÅÒÅÍÅÝÅÎÉÑ × %s"
 
-#: objdump.c:436
+#: nlmconv.c:2119
 #, c-format
-msgid "%s: not a dynamic object"
-msgstr "%s: ÎÅ ÄÉÎÁÍÉÞÅÓËÉÊ ÏÂßÅËÔ"
+msgid "%s: execution of %s failed: "
+msgstr "%s: ×ÙÐÏÌÎÅÎÉÅ %s ÚÁ×ÅÒÛÉÌÏÓØ ÎÅÕÄÁÞÅÊ: "
 
-#: objdump.c:1722
+#: nlmconv.c:2134
 #, c-format
-msgid "Disassembly of section %s:\n"
-msgstr "äÉÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÅ ÒÁÚÄÅÌÁ %s:\n"
+msgid "Execution of %s failed"
+msgstr "÷ÙÐÏÌÎÅÎÉÅ %s ÚÁ×ÅÒÛÉÌÏÓØ ÎÅÕÄÁÞÅÊ"
 
-#: objdump.c:1884
+#: nm.c:224 size.c:82 strings.c:708
 #, c-format
-msgid "Can't use supplied machine %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÒÅÄÓÔÁ×ÌÅÎÎÕÀ ÍÁÛÉÎÕ %s"
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] [ÆÁÊÌ(Ù)]\n"
 
-#: objdump.c:1903
+#: nm.c:225
 #, c-format
-msgid "Can't disassemble for architecture %s\n"
-msgstr "äÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÅ ÎÅ×ÏÚÍÏÖÎÏ ÄÌÑ ÁÒÈÉÔÅËÔÕÒÙ %s\n"
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr " ÷Ù×ÏÄÉÔ ÓÐÉÓÏË ÓÉÍ×ÏÌÏ× × [ÆÁÊÌ(Ù)] (ÐÏ ÕÍÏÌÞÁÎÉÀ × a.out).\n"
 
-#: objdump.c:1973
+#: nm.c:226
 #, c-format
 msgid ""
-"No %s section present\n"
+" The options are:\n"
+"  -a, --debug-syms       Display debugger-only symbols\n"
+"  -A, --print-file-name  Print name of the input file before every symbol\n"
+"  -B                     Same as --format=bsd\n"
+"  -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
+"                          The STYLE, if specified, can be `auto' (the default),\n"
+"                          `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+"                          or `gnat'\n"
+"      --no-demangle      Do not demangle low-level symbol names\n"
+"  -D, --dynamic          Display dynamic symbols instead of normal symbols\n"
+"      --defined-only     Display only defined symbols\n"
+"  -e                     (ignored)\n"
+"  -f, --format=FORMAT    Use the output format FORMAT.  FORMAT can be `bsd',\n"
+"                           `sysv' or `posix'.  The default is `bsd'\n"
+"  -g, --extern-only      Display only external symbols\n"
+"  -l, --line-numbers     Use debugging information to find a filename and\n"
+"                           line number for each symbol\n"
+"  -n, --numeric-sort     Sort symbols numerically by address\n"
+"  -o                     Same as -A\n"
+"  -p, --no-sort          Do not sort the symbols\n"
+"  -P, --portability      Same as --format=posix\n"
+"  -r, --reverse-sort     Reverse the sense of the sort\n"
+"  -S, --print-size       Print size of defined symbols\n"
+"  -s, --print-armap      Include index for symbols from archive members\n"
+"      --size-sort        Sort symbols by size\n"
+"      --special-syms     Include special symbols in the output\n"
+"      --synthetic        Display synthetic symbols as well\n"
+"  -t, --radix=RADIX      Use RADIX for printing symbol values\n"
+"      --target=BFDNAME   Specify the target object format as BFDNAME\n"
+"  -u, --undefined-only   Display only undefined symbols\n"
+"  -X 32_64               (ignored)\n"
+"  @FILE                  Read options from FILE\n"
+"  -h, --help             Display this information\n"
+"  -V, --version          Display this program's version number\n"
 "\n"
 msgstr ""
-"òÁÚÄÅÌ %s ÏÔÓÕÔÓÔ×ÕÅÔ\n"
+" ïÐÃÉÉ:\n"
+"  -a, --debug-syms       ÷Ù×ÏÄ ÔÏÌØËÏ ÏÔÌÁÄÏÞÎÙÈ ÓÉÍ×ÏÌÏ×\n"
+"  -A, --print-file-name  ÷Ù×ÏÄ ÉÍÅÎÉ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ ÐÅÒÅÄ ËÁÖÄÙÍ ÓÉÍ×ÏÌÏÍ\n"
+"  -B                     ôÏ ÖÅ, ÞÔÏ É  --format=bsd\n"
+"  -C, --demangle[=óôéìø] äÅËÏÄÉÒÏ×ÁÎÉÅ ÎÉÚËÏÕÒÏ×ÎÅ×ÙÈ ÉÍÅΠÓÉÍ×ÏÌÏ× × ÉÍÅÎÁ\n"
+"                         ÕÒÏ×ÎÑ ÐÏÌØÚÏ×ÁÔÅÌÑ\n"
+"                          óôéìø, ÅÓÌÉ ÕËÁÚÁÎ, ÍÏÖÅÔ ÂÙÔØ `auto' (ÐÏ ÕÍÏÌÞÁÎÉÀ),\n"
+"                          `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+"                          ÉÌÉ `gnat'\n"
+"      --no-demangle      îÅ ÄÅËÏÄÉÒÏ×ÁÔØ ÎÉÚËÏÕÒÏ×ÎÅ×ÙÅ ÉÍÅÎÁ ÓÉÍ×ÏÌÏ×\n"
+"  -D, --dynamic          ÷Ù×ÏÄ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÉÍ×ÏÌÏ× ×ÍÅÓÔÏ ÎÏÒÍÁÌØÎÙÈ ÓÉÍ×ÏÌÏ×\n"
+"      --defined-only     ÷Ù×ÏÄ ÔÏÌØËÏ ÏÐÒÅÄÅÌÅÎÎÙÈ ÓÉÍ×ÏÌÏ×\n"
+"  -e                     (ÐÒÏÐÕÝÅÎÁ)\n"
+"  -f, --format=æïòíáô    éÓÐÏÌØÚÏ×ÁÎÉÅ æïòíáô × ËÁÞÅÓÔ×Å ×ÙÈÏÄÎÏÇÏ ÆÏÒÍÁÔÁ.\n"
+"                         æïòíáô ÍÏÖÅÔ ÂÙÔØ `bsd', `sysv' ÉÌÉ `posix'.\n"
+"                         ðÏ ÕÍÏÌÞÁÎÉÀ ÉÓÐÏÌØÚÕÅÔÓÑ `bsd'.\n"
+"  -g, --extern-only      ÷Ù×ÏÄ ÔÏÌØËÏ ×ÎÅÛÎÉÈ ÓÉÍ×ÏÌÏ×\n"
+"  -l, --line-numbers     éÓÐÏÌØÚÏ×ÁÎÉÅ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ ÄÌÑ ÎÁÈÏÖÄÅÎÉÑ\n"
+"                         ÉÍÅÎÉ ÆÁÊÌÁ É ÎÏÍÅÒÁ ÓÔÒÏËÉ ÄÌÑ ËÁÖÄÏÇÏ ÓÉÍ×ÏÌÁ\n"
+"  -n, --numeric-sort     óÏÒÔÉÒÏ×ËÁ ÓÉÍ×ÏÌÏ× ÐÏ ÁÄÒÅÓÕ\n"
+"  -o                     ôÏ ÖÅ, ÞÔÏ É -A\n"
+"  -p, --no-sort          âÅÚ ÓÏÒÔÉÒÏ×ËÉ ÓÉÍ×ÏÌÏ×\n"
+"  -P, --portability      ôÏ ÖÅ, ÞÔÏ É --format=posix\n"
+"  -r, --reverse-sort     óÏÒÔÉÒÏ×ËÁ × ÏÂÒÁÔÎÏÍ ÐÏÒÑÄËÅ\n"
+"  -S, --print-size       ÷Ù×ÏÄ ÒÁÚÍÅÒÁ ÏÐÒÅÄÅÌÅÎÎÙÈ ÓÉÍ×ÏÌÏ×\n"
+"  -s, --print-armap      ÷ËÌÀÞÅÎÉÅ ÉÎÄÅËÓÁ ÄÌÑ ÓÉÍ×ÏÌÏ× ÉÚ ÞÌÅÎÏ× ÁÒÈÉ×Á\n"
+"      --size-sort        óÏÒÔÉÒÏ×ËÁ ÓÉÍ×ÏÌÏ× ÐÏ ÒÁÚÍÅÒÕ\n"
+"      --special-syms     ÷ËÌÀÞÅÎÉÅ ÓÐÅÃÉÁÌØÎÙÈ ÓÉÍ×ÏÌÏ× × ×ÙÈÏÄÎÙÅ ÄÁÎÎÙÅ\n"
+"      --synthetic        ÷Ù×ÏÄ ÔÁËÖÅ ÓÉÎÔÅÔÉÞÅÓËÉÈ ÓÉÍ×ÏÌÏ×\n"
+"  -t, --radix=RADIX      éÓÐÏÌØÚÏ×ÁÎÉÅ RADIX ÄÌÑ ×Ù×ÏÄÁ ÚÎÁÞÅÎÉÊ ÓÉÍ×ÏÌÏ×\n"
+"      --target=BFD-éíñ   õËÁÚÁÎÉÅ ÃÅÌÅ×ÏÇÏ ÆÏÒÍÁÔÁ ÏÂßÅËÔÁ ËÁË BFD-éíñ\n"
+"  -u, --undefined-only   ÷Ù×ÏÄ ÔÏÌØËÏ ÎÅ ÏÐÒÅÄÅÌÅÎÎÙÈ ÓÉÍ×ÏÌÏ×\n"
+"  -X 32_64               (ÐÒÏÐÕÝÅÎÁ)\n"
+"  @æáêì                  þÉÔÁÔØ ÏÐÃÉÉ ÉÚ æáêìá\n"
+"  -h, --help             ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n"
+"  -V, --version          ÷Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ\n"
 "\n"
 
-#: objdump.c:1982
+#: nm.c:263 objdump.c:236
 #, c-format
-msgid "Reading %s section of %s failed: %s"
-msgstr "þÔÅÎÉÅ %s ÒÁÚÄÅÌÁ %s ÚÁ×ÅÒÛÉÌÏÓØ ÎÅÕÄÁÞÅÊ: %s"
+msgid "Report bugs to %s.\n"
+msgstr "ïÔÞ£ÔÙ Ï ÏÛÉÂËÁÈ ÏÔÐÒÁ×ÌÑÊÔÅ × %s\n"
 
-#: objdump.c:2026
+#: nm.c:295
 #, c-format
-msgid ""
-"Contents of %s section:\n"
-"\n"
-msgstr ""
-"óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ %s:\n"
-"\n"
+msgid "%s: invalid radix"
+msgstr "%s: ÎÅ×ÅÒÎÙÊ radix"
 
-#: objdump.c:2153
+#: nm.c:319
 #, c-format
-msgid "architecture: %s, "
-msgstr "ÁÒÈÉÔÅËÔÕÒÁ: %s, "
+msgid "%s: invalid output format"
+msgstr "%s: ÎÅ×ÅÒÎÙÊ ×ÙÈÏÄÎÏÊ ÆÏÒÍÁÔ"
 
-#: objdump.c:2156
+#: nm.c:340 readelf.c:6623 readelf.c:6659
 #, c-format
-msgid "flags 0x%08x:\n"
-msgstr "ÆÌÁÇÉ 0x%08x:\n"
+msgid "<processor specific>: %d"
+msgstr "<ÓÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÐÒÏÃÅÓÓÏÒÁ>: %d"
+
+#: nm.c:342 readelf.c:6626 readelf.c:6671
+#, c-format
+msgid "<OS specific>: %d"
+msgstr "<ÓÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ïó>: %d"
+
+#: nm.c:344 readelf.c:6628 readelf.c:6674
+#, c-format
+msgid "<unknown>: %d"
+msgstr "<ÎÅÉÚ×ÅÓÔÎÙÊ>: %d"
 
-#: objdump.c:2170
+#: nm.c:381
 #, c-format
 msgid ""
 "\n"
-"start address 0x"
+"Archive index:\n"
 msgstr ""
 "\n"
-"ÎÁÞÁÌØÎÙÊ ÁÄÒÅÓ 0x"
+"éÎÄÅËÓ ÁÒÈÉ×Á:\n"
 
-#: objdump.c:2210
+#: nm.c:1227
 #, c-format
-msgid "Contents of section %s:\n"
-msgstr "óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ %s:\n"
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"îÅÏÐÒÅÄÅÌÅÎÎÙÅ ÓÉÍ×ÏÌÙ ÉÚ %s:\n"
+"\n"
 
-#: objdump.c:2335
+#: nm.c:1229
 #, c-format
-msgid "no symbols\n"
-msgstr "ÎÅÔ ÓÉÍ×ÏÌÏ×\n"
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"óÉÍ×ÏÌÙ ÉÚ %s:\n"
+"\n"
 
-#: objdump.c:2342
+#: nm.c:1231 nm.c:1282
 #, c-format
-msgid "no information for symbol number %ld\n"
-msgstr "ÎÅÔ ÉÎÆÏÒÍÁÃÉÉ Ï ÓÉÍ×ÏÌÅ ÎÏÍÅÒ %ld\n"
+msgid ""
+"Name                  Value   Class        Type         Size     Line  Section\n"
+"\n"
+msgstr ""
+"éÍÑ                   úÎÁÞ.   ëÌÁÓÓ        ôÉР       òÁÚÍÅÒ   óÔÒÏËÁ  òÁÚÄÅÌ\n"
+"\n"
 
-#: objdump.c:2345
+#: nm.c:1234 nm.c:1285
 #, c-format
-msgid "could not determine the type of symbol number %ld\n"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÔÉРÓÉÍ×ÏÌÁ ÎÏÍÅÒ %ld\n"
+msgid ""
+"Name                  Value           Class        Type         Size             Line  Section\n"
+"\n"
+msgstr ""
+"éÍÑ                   úÎÁÞ.           ëÌÁÓÓ        ôÉР       òÁÚÍÅÒ           óÔÒÏËÁ  òÁÚÄÅÌ\n"
+"\n"
 
-#: objdump.c:2611
+#: nm.c:1278
 #, c-format
 msgid ""
 "\n"
-"%s:     file format %s\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
 msgstr ""
 "\n"
-"%s:     ÆÏÒÍÁÔ ÆÁÊÌÁ %s\n"
+"\n"
+"îÅÏÐÒÅÄÅÌÅÎÎÙÅ ÓÉÍ×ÏÌÙ ÉÚ %s[%s]:\n"
+"\n"
 
-#: objdump.c:2662
+#: nm.c:1280
 #, c-format
-msgid "%s: printing debugging information failed"
-msgstr "%s: ×Ù×ÏÄ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ"
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"óÉÍ×ÏÌÙ ÉÚ %s[%s]:\n"
+"\n"
 
-#: objdump.c:2753
-#, c-format
-msgid "In archive %s:\n"
-msgstr "÷ ÁÒÈÉ×Å %s:\n"
+#: nm.c:1584
+msgid "Only -X 32_64 is supported"
+msgstr "ðÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÔÏÌØËÏ -X 32_64"
 
-#: objdump.c:2873
-msgid "unrecognized -E option"
-msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ ÏÐÃÉÑ -E"
+#: nm.c:1604
+msgid "Using the --size-sort and --undefined-only options together"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ ×ÍÅÓÔÅ ÏÐÃÉÊ --size-sort É --undefined-only"
 
-#: objdump.c:2884
+#: nm.c:1605
+msgid "will produce no output, since undefined symbols have no size."
+msgstr "ÎÅ ÄÁÓÔ ×ÙÈÏÄÎÙÈ ÄÁÎÎÙÈ, Ô.Ë. ÎÅÏÐÒÅÄÅÌÅÎÎÙÅ ÓÉÍ×ÏÌÙ ÎÅ ÉÍÅÀÔ ÒÁÚÍÅÒÁ."
+
+#: nm.c:1633
 #, c-format
-msgid "unrecognized --endian type `%s'"
-msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ --endian ÔÉР`%s'"
+msgid "data size %ld"
+msgstr "ÒÁÚÍÅÒ ÄÁÎÎÙÈ %ld"
 
-#: rdcoff.c:196
+#: objcopy.c:401 srconv.c:1721
 #, c-format
-msgid "parse_coff_type: Bad type code 0x%x"
-msgstr "parse_coff_type: ðÌÏÈÏÊ ËÏÄ ÔÉÐÁ 0x%x"
+msgid "Usage: %s [option(s)] in-file [out-file]\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] in-ÆÁÊÌ [out-ÆÁÊÌ]\n"
 
-#: rdcoff.c:404 rdcoff.c:509 rdcoff.c:697
+#: objcopy.c:402
 #, c-format
-msgid "bfd_coff_get_syment failed: %s"
-msgstr "bfd_coff_get_syment ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ: %s"
+msgid " Copies a binary file, possibly transforming it in the process\n"
+msgstr " ëÏÐÉÒÕÅÔ Ä×ÏÉÞÎÙÊ ÆÁÊÌ, ×ÏÚÍÏÖÎÏ, ÐÒÅÏÂÒÁÚÏ×Ù×ÁÑ ÅÇÏ × ÐÒÏÃÅÓÓÅ\n"
 
-#: rdcoff.c:420 rdcoff.c:717
+#: objcopy.c:403 objcopy.c:495
 #, c-format
-msgid "bfd_coff_get_auxent failed: %s"
-msgstr "bfd_coff_get_auxent ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ: %s"
+msgid " The options are:\n"
+msgstr " ïÐÃÉÉ:\n"
 
-#: rdcoff.c:784
+#: objcopy.c:404
 #, c-format
-msgid "%ld: .bf without preceding function"
-msgstr "%ld: .bf ÂÅÚ ÐÒÅÄÛÅÓÔ×ÕÀÝÅÊ ÆÕÎËÃÉÉ"
+msgid ""
+"  -I --input-target <bfdname>      Assume input file is in format <bfdname>\n"
+"  -O --output-target <bfdname>     Create an output file in format <bfdname>\n"
+"  -B --binary-architecture <arch>  Set arch of output file, when input is binary\n"
+"  -F --target <bfdname>            Set both input and output format to <bfdname>\n"
+"     --debugging                   Convert debugging information, if possible\n"
+"  -p --preserve-dates              Copy modified/access timestamps to the output\n"
+"  -j --only-section <name>         Only copy section <name> into the output\n"
+"     --add-gnu-debuglink=<file>    Add section .gnu_debuglink linking to <file>\n"
+"  -R --remove-section <name>       Remove section <name> from the output\n"
+"  -S --strip-all                   Remove all symbol and relocation information\n"
+"  -g --strip-debug                 Remove all debugging symbols & sections\n"
+"     --strip-unneeded              Remove all symbols not needed by relocations\n"
+"  -N --strip-symbol <name>         Do not copy symbol <name>\n"
+"     --strip-unneeded-symbol <name>\n"
+"                                   Do not copy symbol <name> unless needed by\n"
+"                                     relocations\n"
+"     --only-keep-debug             Strip everything but the debug information\n"
+"  -K --keep-symbol <name>          Do not strip symbol <name>\n"
+"  -L --localize-symbol <name>      Force symbol <name> to be marked as a local\n"
+"     --globalize-symbol <name>     Force symbol <name> to be marked as a global\n"
+"  -G --keep-global-symbol <name>   Localize all symbols except <name>\n"
+"  -W --weaken-symbol <name>        Force symbol <name> to be marked as a weak\n"
+"     --weaken                      Force all global symbols to be marked as weak\n"
+"  -w --wildcard                    Permit wildcard in symbol comparison\n"
+"  -x --discard-all                 Remove all non-global symbols\n"
+"  -X --discard-locals              Remove any compiler-generated symbols\n"
+"  -i --interleave <number>         Only copy one out of every <number> bytes\n"
+"  -b --byte <num>                  Select byte <num> in every interleaved block\n"
+"     --gap-fill <val>              Fill gaps between sections with <val>\n"
+"     --pad-to <addr>               Pad the last section up to address <addr>\n"
+"     --set-start <addr>            Set the start address to <addr>\n"
+"    {--change-start|--adjust-start} <incr>\n"
+"                                   Add <incr> to the start address\n"
+"    {--change-addresses|--adjust-vma} <incr>\n"
+"                                   Add <incr> to LMA, VMA and start addresses\n"
+"    {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+"                                   Change LMA and VMA of section <name> by <val>\n"
+"     --change-section-lma <name>{=|+|-}<val>\n"
+"                                   Change the LMA of section <name> by <val>\n"
+"     --change-section-vma <name>{=|+|-}<val>\n"
+"                                   Change the VMA of section <name> by <val>\n"
+"    {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+"                                   Warn if a named section does not exist\n"
+"     --set-section-flags <name>=<flags>\n"
+"                                   Set section <name>'s properties to <flags>\n"
+"     --add-section <name>=<file>   Add section <name> found in <file> to output\n"
+"     --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+"     --change-leading-char         Force output format's leading character style\n"
+"     --remove-leading-char         Remove leading character from global symbols\n"
+"     --redefine-sym <old>=<new>    Redefine symbol name <old> to <new>\n"
+"     --redefine-syms <file>        --redefine-sym for all symbol pairs \n"
+"                                     listed in <file>\n"
+"     --srec-len <number>           Restrict the length of generated Srecords\n"
+"     --srec-forceS3                Restrict the type of generated Srecords to S3\n"
+"     --strip-symbols <file>        -N for all symbols listed in <file>\n"
+"     --strip-unneeded-symbols <file>\n"
+"                                   --strip-unneeded-symbol for all symbols listed\n"
+"                                     in <file>\n"
+"     --keep-symbols <file>         -K for all symbols listed in <file>\n"
+"     --localize-symbols <file>     -L for all symbols listed in <file>\n"
+"     --globalize-symbols <file>    --globalize-symbol for all in <file>\n"
+"     --keep-global-symbols <file>  -G for all symbols listed in <file>\n"
+"     --weaken-symbols <file>       -W for all symbols listed in <file>\n"
+"     --alt-machine-code <index>    Use alternate machine code for output\n"
+"     --writable-text               Mark the output text as writable\n"
+"     --readonly-text               Make the output text write protected\n"
+"     --pure                        Mark the output file as demand paged\n"
+"     --impure                      Mark the output file as impure\n"
+"     --prefix-symbols <prefix>     Add <prefix> to start of every symbol name\n"
+"     --prefix-sections <prefix>    Add <prefix> to start of every section name\n"
+"     --prefix-alloc-sections <prefix>\n"
+"                                   Add <prefix> to start of every allocatable\n"
+"                                     section name\n"
+"  -v --verbose                     List all object files modified\n"
+"  @<file>                          Read options from <file>\n"
+"  -V --version                     Display this program's version number\n"
+"  -h --help                        Display this output\n"
+"     --info                        List object formats & architectures supported\n"
+msgstr ""
+"  -I --input-target <bfd-ÉÍÑ>      ðÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ ×ÈÏÄÎÏÊ ÆÁÊÌ × ÆÏÒÍÁÔÅ <bfd-ÉÍÑ>\n"
+"  -O --output-target <bfd-ÉÍÑ>     óÏÚÄÁÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ × ÆÏÒÍÁÔÅ <bfd-ÉÍÑ>\n"
+"  -B --binary-architecture <ÁÒÈ>   õÓÔÁÎÏ×ÉÔØ ÁÒÈÉÔÅËÔÕÒÕ ÄÌÑ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ, ËÏÇÄÁ ×ÈÏÄÎÏÊ ÆÁÊÌ Ä×ÏÉÞÎÙÊ\n"
+"  -F --target <bfd-ÉÍÑ>            õÓÔÁÎÏ×ÉÔØ ×ÈÏÄÎÏÊ É ×ÙÈÏÄÎÏÊ ÆÏÒÍÁÔÙ × <bfd-ÉÍÑ>\n"
+"     --debugging                   ðÒÅÏÂÒÁÚÏ×ÁÔØ ÏÔÌÁÄÏÞÎÕÀ ÉÎÆÏÒÍÁÃÉÀ, ÅÓÌÉ ÜÔÏ ×ÏÚÍÏÖÎÏ\n"
+"  -p --preserve-dates              ëÏÐÉÒÏ×ÁÔØ ×ÒÅÍÑ ÍÏÄÉÆÉËÁÃÉÉ/ÄÏÓÔÕÐÁ ÎÁ ×Ù×ÏÄ\n"
+"  -j --only-section <ÉÍÑ>          ëÏÐÉÒÏ×ÁÔØ ÒÁÚÄÅÌ <ÉÍÑ> ÎÁ ×Ù×ÏÄ\n"
+"     --add-gnu-debuglink=<ÆÁÊÌ>    äÏÂÁ×ÌÅÎÉÅ Ó×ÑÚÙ×ÁÎÉÑ ÒÁÚÄÅÌÁ .gnu_debuglink × <ÆÁÊÌ>\n"
+"  -R --remove-section <ÉÍÑ>        õÄÁÌÉÔØ ÒÁÚÄÅÌ <ÉÍÑ> ÉÚ ×Ù×ÏÄÁ\n"
+"  -S --strip-all                   õÄÁÌÉÔØ ×ÓÅ ÓÉÍ×ÏÌÙ É ÉÎÆÏÒÍÁÃÉÀ Ï ÐÅÒÅÍÅÝÅÎÉÉ\n"
+"  -g --strip-debug                 õÄÁÌÉÔØ ×ÓÅ ÏÔÌÁÄÏÞÎÙÅ ÓÉÍ×ÏÌÙ É ÒÁÚÄÅÌÙ\n"
+"     --strip-unneeded              õÄÁÌÉÔØ ×ÓÅ ÓÉÍ×ÏÌÙ, ÎÅ ÎÕÖÎÙÅ ÄÌÑ ÐÅÒÅÍÅÝÅÎÉÊ\n"
+"  -N --strip-symbol <ÉÍÑ>          îÅ ËÏÐÉÒÏ×ÁÔØ ÓÉÍ×ÏÌ <ÉÍÑ>\n"
+"     --strip-unneeded-symbol <ÉÍÑ>\n"
+"                                   îÅ ËÏÐÉÒÏ×ÁÔØ ÓÉÍ×ÏÌ <ÉÍÑ>, ÅÓÌÉ ÎÅ ÎÕÖÅΠÄÌÑ\n"
+"                                   ÄÌÑ ÐÅÒÅÍÅÝÅÎÉÊ\n"
+"     --only-keep-debug             ïÓÔÁ×ÉÔØ ÔÏÌØËÏ ÏÔÌÁÄÏÞÎÕÀ ÉÎÆÏÒÍÁÃÉÀ\n"
+"  -K --keep-symbol <ÉÍÑ>           ëÏÐÉÒÏ×ÁÔØ ÔÏÌØËÏ ÓÉÍ×ÏÌ <ÉÍÑ>\n"
+"  -L --localize-symbol <ÉÍÑ>       ðÒÉÎÕÄÉÔÅÌØÎÏ ÐÏÍÅÞÁÔØ ÓÉÍ×ÏÌ <ÉÍÑ> ËÁË ÌÏËÁÌØÎÙÊ\n"
+"  -G --keep-global-symbol <ÉÍÑ>    ìÏËÁÌÉÚÏ×ÁÔØ ×ÓÅ ÓÉÍ×ÏÌÙ ËÒÏÍÅ <ÉÍÑ>\n"
+"  -W --weaken-symbol <ÉÍÑ>         ðÒÉÎÕÄÉÔÅÌØÎÏ ÐÏÍÅÔÉÔØ ÓÉÍ×ÏÌ <ÉÍÑ> ËÁË ÓÌÁÂÙÊ\n"
+"     --weaken                      ðÒÉÎÕÄÉÔÅÌØÎÏ ÐÏÍÅÔÉÔØ ÇÌÏÂÁÌØÎÙÅ ÓÉÍ×ÏÌÙ ËÁË ÓÌÁÂÙÅ\n"
+"  -w --wildcard                    òÁÚÒÅÛÉÔØ ÍÁÓËÕ ÐÒÉ ÓÒÁ×ÎÅÎÉÉ ÓÉÍ×ÏÌÏ×\n"
+"  -x --discard-all                 õÄÁÌÉÔØ ×ÓÅ ÎÅÇÌÏÂÁÌØÎÙÅ ÓÉÍ×ÏÌÙ\n"
+"  -X --discard-locals              õÄÁÌÉÔØ ÌÀÂÙÅ ÓÉÍ×ÏÌÙ, ÓÇÅÎÅÒÉÒÏ×ÁÎÎÙÅ ËÏÍÐÉÌÑÔÏÒÏÍ\n"
+"  -i --interleave <ÞÉÓÌÏ>          ëÏÐÉÒÏ×ÁÔØ ÔÏÌØËÏ ÏÄÉΠÂÁÊÔ ÞÅÒÅÚ ËÁÖÄÏÅ <ÞÉÓÌÏ> ÂÁÊÔ\n"
+"  -b --byte <ÎÏÍÅÒ>                ÷ÙÂÒÁÔØ ÂÁÊÔ <ÎÏÍÅÒ> × ËÁÖÄÏÍ ÞÅÒÅÄÕÀÝÅÍÓÑ ÂÌÏËÅ\n"
+"     --gap-fill <ÚÎÁÞÅÎÉÅ>         úÁÐÏÌÎÉÔØ ÐÒÏÍÅÖÕÔËÉ ÍÅÖÄÕ ÒÁÚÄÅÌÁÍÉ <ÚÎÁÞÅÎÉÅÍ>\n"
+"     --pad-to <ÁÄÒÅÓ>              úÁÐÏÌÎÉÔØ ÐÏÓÌÅÄÎÉÊ ÒÁÚÄÅÌ ÄÏ ÁÄÒÅÓÁ <ÁÄÒÅÓ>\n"
+"     --set-start <ÁÄÒÅÓ>           õÓÔÁÎÏ×ÉÔØ ÎÁÞÁÌØÎÙÊ ÁÄÒÅÓ × <ÁÄÒÅÓ>\n"
+"    {--change-start|--adjust-start} <ÐÒÉÒÁÝÅÎÉÅ>\n"
+"                                   äÏÂÁ×ÉÔØ <ÐÒÉÒÁÝÅÎÉÅ> Ë ÎÁÞÁÌØÎÏÍÕ ÁÄÒÅÓÕ\n"
+"    {--change-addresses|--adjust-vma} <ÐÒÉÒÁÝÅÎÉÅ>\n"
+"                                   äÏÂÁ×ÉÔØ <ÐÒÉÒÁÝÅÎÉÅ> Ë LMA, VMA É ÎÁÞÁÌØÎÏÍÕ ÁÄÒÅÓÁÍ\n"
+"    {--change-section-address|--adjust-section-vma} <ÉÍÑ>{=|+|-}<ÚÎÁÞÅÎÉÅ>\n"
+"                                   éÚÍÅÎÉÔØ LMA É VMA ÒÁÚÄÅÌÁ <ÉÍÑ> ÎÁ <ÚÎÁÞÅÎÉÅ>\n"
+"     --change-section-lma <ÉÍÑ>{=|+|-}<ÚÎÁÞÅÎÉÅ>\n"
+"                                   éÚÍÅÎÉÔØ LMA ÒÁÚÄÅÌÁ <ÉÍÑ> ÎÁ <ÚÎÁÞÅÎÉÅ>\n"
+"     --change-section-vma <ÉÍÑ>{=|+|-}<ÚÎÁÞÅÎÉÅ>\n"
+"                                   éÚÍÅÎÉÔØ VMA ÒÁÚÄÅÌÁ <ÉÍÑ> ÎÁ <ÚÎÁÞÅÎÉÅ>\n"
+"    {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+"                                   ðÒÅÄÕÐÒÅÄÉÔØ, ÅÓÌÉ ÎÁÚ×ÁÎÎÙÊ ÒÁÚÄÅÌ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ\n"
+"     --set-section-flags <ÉÍÑ>=<ÆÌÁÇÉ>\n"
+"                                   õÓÔÁÎÏ×ÉÔØ Ó×ÏÊÓÔ×Á ÒÁÚÄÅÌÁ <ÉÍÑ> × <ÆÌÁÇÉ>\n"
+"     --add-section <ÉÍÑ>=<ÆÁÊÌ>    äÏÂÁ×ÉÔØ ÒÁÚÄÅÌ <ÉÍÑ>, ÎÁÊÄÅÎÎÙÊ × <ÆÁÊÌÅ>, ÎÁ ×Ù×ÏÄ\n"
+"     --rename-section <ÓÔÁÒ>=<ÎÏ×>[,<ÆÌÁÇÉ>] ðÅÒÅÉÍÅÎÏ×ÁÔØ ÒÁÚÄÅÌ <ÓÔÁÒ> ÎÁ <ÎÏ×>\n"
+"     --change-leading-char         ðÒÉÎÕÄÉÔÅÌØÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÔÉÌØ ÚÁÇÌÁ×ÎÏÇÏ ÓÉÍ×ÏÌÁ ÄÌÑ ×ÙÈÏÄÎÏÇÏ ÆÏÒÍÁÔÁ\n"
+"     --remove-leading-char         õÄÁÌÉÔØ ÚÁÇÌÁ×ÎÙÊ ÓÉÍ×ÏÌ ÉÚ ÇÌÏÂÁÌØÎÙÈ ÓÉÍ×ÏÌÏ×\n"
+"     --redefine-sym <ÓÔÁÒ>=<ÎÏ×>   ðÅÒÅÏÐÒÅÄÅÌÉÔØ ÉÍÑ ÓÉÍ×ÏÌÁ <ÓÔÁÒ> ÎÁ <ÎÏ×>\n"
+"     --redefine-syms <ÆÁÊÌ>        --redefine-sym ÄÌÑ ×ÓÅÈ ÐÁÒ ÓÉÍ×ÏÌÏ×,\n"
+"                                     ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n"
+"     --srec-len <ÞÉÓÌÏ>            ïÇÒÁÎÉÞÉÔØ ÄÌÉÎÕ ÓÏÚÄÁÎÎÙÈ S-ÚÁÐÉÓÅÊ\n"
+"     --srec-forceS3                ïÇÒÁÎÉÞÉÔØ ÔÉРÓÏÚÄÁÎÎÙÈ S-ÚÁÐÉÓÅÊ ÄÏ S3\n"
+"     --strip-symbols <ÆÁÊÌ>        -N ÄÌÑ ×ÓÅÈ ÓÉÍÏÌÏ×, ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n"
+"     --strip-unneeded-symbols <ÆÁÊÌ>\n"
+"                                   --strip-unneeded-symbol ÄÌÑ ×ÓÅÈ ÓÉÍ×ÏÌÏ×, ÐÅÒÅÞÉÓÌÅÎÎÙÈ\n"
+"                                     × <ÆÁÊÌÅ>\n"
+"     --keep-symbols <ÆÁÊÌ>         -K ÄÌÑ ×ÓÅÈ ÓÉÍÏÌÏ×, ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n"
+"     --localize-symbols <ÆÁÊÌ>     -L ÄÌÑ ×ÓÅÈ ÓÉÍÏÌÏ×, ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n"
+"     --keep-global-symbols <ÆÁÊÌ>  -G ÄÌÑ ×ÓÅÈ ÓÉÍÏÌÏ×, ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n"
+"     --weaken-symbols <ÆÁÊÌ>       -W ÄÌÑ ×ÓÅÈ ÓÉÍÏÌÏ×, ÐÅÒÅÞÉÓÌÅÎÎÙÈ × <ÆÁÊÌÅ>\n"
+"     --alt-machine-code <ÉÎÄÅËÓ>   éÓÐÏÌØÚÏ×ÁÔØ ÁÌØÔÅÒÎÁÔÉ×ÎÙÊ ËÏÄ ÍÁÛÉÎÙ ÄÌÑ ×Ù×ÏÄÁ\n"
+"     --writable-text               ðÏÍÅÔÉÔØ ×ÙÈÏÄÎÏÊ ÔÅËÓÔ ËÁË ÐÅÒÅÚÁÐÉÓÙ×ÁÅÍÙÊ\n"
+"     --readonly-text               ðÏÍÅÔÉÔØ ×ÙÈÏÄÎÏÊ ÔÅËÓÔ ËÁË ÚÁÝÉÝÅÎÎÙÊ ÏÔ ÚÁÐÉÓÉ\n"
+"     --pure                        ðÏÍÅÔÉÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ ËÁË ÌÉÓÔÁÅÍÙÊ ÐÏ ×ÙÚÏ×Õ\n"
+"     --impure                      ðÏÍÅÔÉÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ ËÁË ÚÁÇÒÑÚÎÅÎÎÙÊ\n"
+"     --prefix-symbols <ÐÒÅÆÉËÓ>    äÏÂÁ×ÉÔØ <ÐÒÅÆÉËÓ> × ÎÁÞÁÌÏ ÉÍÅÎÉ ËÁÖÄÏÇÏ ÓÉÍ×ÏÌÁ\n"
+"     --prefix-sections <ÐÒÅÆÉËÓ>   äÏÂÁ×ÉÔØ <ÐÒÅÆÉËÓ> × ÎÁÞÁÌÏ ÉÍÅÎÉ ËÁÖÄÏÇÏ ÒÁÚÄÅÌÁ\n"
+"     --prefix-alloc-sections <ÐÒÅÆÉËÓ>\n"
+"                                   äÏÂÁ×ÉÔØ <ÐÒÅÆÉËÓ> × ÎÁÞÁÌÏ ÉÍÅÎÉ ËÁÖÄÏÇÏ\n"
+"                                     ÎÁÚÎÁÞÁÅÍÏÇÏ ÒÁÚÄÅÌÁ\n"
+"  -v --verbose                     ðÅÒÅÞÉÓÌÉÔØ ×ÓÅ ÍÏÄÉÆÉÃÉÒÏ×ÁÎÎÙÅ ÏÂßÅËÔÎÙÅ ÆÁÊÌÙ\n"
+"  @<ÆÁÊÌ>                          þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
+"  -V --version                     ÷Ù×ÅÓÔÉ ÎÏÍÅÒ ×ÅÒÓÉÉ ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ\n"
+"  -h --help                        ÷Ù×ÅÓÔÉ ÜÔÕ ÓÐÒÁ×ËÕ\n"
+"     --info                        ðÅÒÅÞÉÓÌÉÔØ ÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÆÏÒÍÁÔÙ ÏÂßÅËÔÏ× É ÁÒÈÉÔÅËÔÕÒÙ\n"
 
-#: rdcoff.c:834
+#: objcopy.c:493
 #, c-format
-msgid "%ld: unexpected .ef\n"
-msgstr "%ld: ÎÅÏÖÉÄÁÎÎÙÊ .ef\n"
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s <ÏÐÃÉÉ> in-ÆÁÊÌ(Ù)\n"
 
-#: rddbg.c:85
+#: objcopy.c:494
 #, c-format
-msgid "%s: no recognized debugging information"
-msgstr "%s: ÎÅÔ ÒÁÓÐÏÚÎÁÎÎÏÊ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ"
+msgid " Removes symbols and sections from files\n"
+msgstr " õÄÁÌÑÅÔ ÓÉÍ×ÏÌÙ É ÒÁÚÄÅÌÙ ÉÚ ÆÁÊÌÏ×\n"
 
-#: rddbg.c:394
-#, c-format
-msgid "Last stabs entries before error:\n"
-msgstr "ðÏÓÌÅÄÎÉÅ ÐÕÎËÔÙ stabs ÐÅÒÅÄ ÏÛÉÂËÏÊ:\n"
-
-#: readelf.c:272
-#, c-format
-msgid "%s: Error: "
-msgstr "%s: ïÛÉÂËÁ: "
-
-#: readelf.c:283
-#, c-format
-msgid "%s: Warning: "
-msgstr "%s: ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: "
-
-#: readelf.c:298
-#, c-format
-msgid "Unable to seek to 0x%x for %s\n"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ 0x%x ÄÌÑ %s\n"
-
-#: readelf.c:310
-#, c-format
-msgid "Out of memory allocating 0x%x bytes for %s\n"
-msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ ÐÒÉ ÒÁÓÐÒÅÄÅÌÅÎÉÉ 0x%x ÂÁÊÔ ÄÌÑ %s\n"
-
-#: readelf.c:318
-#, c-format
-msgid "Unable to read in 0x%x bytes of %s\n"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÚÕÞÉÔØ ÐÏÓÒÅÄÓÔ×ÏÍ ÞÔÅÎÉÑ 0x%x ÂÁÊÔ %s\n"
-
-#: readelf.c:364 readelf.c:412 readelf.c:615 readelf.c:647
-#, c-format
-msgid "Unhandled data length: %d\n"
-msgstr "äÌÉÎÁ ÎÅÏÂÒÁÂÁÔÙ×ÁÅÍÙÈ ÄÁÎÎÙÈ: %d\n"
-
-#: readelf.c:752
-msgid "Don't know about relocations on this machine architecture\n"
-msgstr "îÅÉÚ×ÅÓÔÎÏ Ï ÐÅÒÅÍÅÝÅÎÉÑÈ ÄÌÑ ÜÔÏÊ ÁÒÈÉÔÅËÔÕÒÙ ÍÁÛÉÎÙ\n"
-
-#: readelf.c:772 readelf.c:799 readelf.c:842 readelf.c:869
-msgid "relocs"
-msgstr "ÐÅÒÅÍÅÝÅÎÉÑ"
-
-#: readelf.c:782 readelf.c:809 readelf.c:852 readelf.c:879
-msgid "out of memory parsing relocs"
-msgstr "ÎÅÈ×ÁÔËÁ ÐÁÍÑÔÉ ÐÒÉ ÒÁÚÂÏÒÅ ÐÅÒÅÍÅÝÅÎÉÊ"
-
-#: readelf.c:933
-#, c-format
-msgid " Offset     Info    Type                Sym. Value  Symbol's Name + Addend\n"
-msgstr " óÍÅÝÅÎÉÅ   éÎÆÏ    ôÉР                úÎÁÞ.ÓÉÍ×.  éÍÑ ÓÉÍ×ÏÌÁ + Addend\n"
-
-#: readelf.c:935
-#, c-format
-msgid " Offset     Info    Type            Sym.Value  Sym. Name + Addend\n"
-msgstr " óÍÅÝÅÎÉÅ   éÎÆÏ    ôÉР            úÎÁÞ.ÓÉÍ×  éÍÑ ÓÉÍ×. + Addend\n"
-
-#: readelf.c:940
-#, c-format
-msgid " Offset     Info    Type                Sym. Value  Symbol's Name\n"
-msgstr " óÍÅÝÅÎÉÅ   éÎÆÏ    ôÉР                úÎÁÞ.ÓÉÍ×   éÍÑ ÓÉÍ×ÏÌÁ\n"
-
-#: readelf.c:942
-#, c-format
-msgid " Offset     Info    Type            Sym.Value  Sym. Name\n"
-msgstr " óÍÅÝÅÎÉÅ   éÎÆÏ    ôÉР            úÎÁÞ.ÓÉÍ×  éÍÑ ÓÉÍ×.\n"
-
-#: readelf.c:950
-#, c-format
-msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name + Addend\n"
-msgstr "    óÍÅÝÅÎÉÅ           éÎÆÏ             ôÉР               úÎÁÞÅÎÉÅ ÓÉÍ×.  éÍÑ ÓÉÍ×ÏÌÁ + Addend\n"
-
-#: readelf.c:952
-#, c-format
-msgid "  Offset          Info           Type           Sym. Value    Sym. Name + Addend\n"
-msgstr "  óÍÅÝÅÎÉÅ        éÎÆÏ           ôÉР           úÎÁÞ.ÓÉÍ×.    éÍÑ ÓÉÍ×. + Addend\n"
-
-#: readelf.c:957
-#, c-format
-msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name\n"
-msgstr "    óÍÅÝÅÎÉÅ           éÎÆÏ             ôÉР               úÎÁÞÅÎÉÅ ÓÉÍ×.  éÍÑ ÓÉÍ×ÏÌÁ\n"
-
-#: readelf.c:959
-#, c-format
-msgid "  Offset          Info           Type           Sym. Value    Sym. Name\n"
-msgstr "  óÍÅÝÅÎÉÅ        éÎÆÏ           ôÉР           úÎÁÞ.ÓÉÍ×.    éÍÑ ÓÉÍ×.\n"
-
-#: readelf.c:1239 readelf.c:1241 readelf.c:1324 readelf.c:1326 readelf.c:1335
-#: readelf.c:1337
-#, c-format
-msgid "unrecognized: %-7lx"
-msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ: %-7lx"
-
-#: readelf.c:1295
-#, c-format
-msgid "<string table index: %3ld>"
-msgstr "<ÉÎÄÅËÓ ÔÁÂÌÉÃÙ ÓÔÒÏË: %3ld>"
-
-#: readelf.c:1297
-#, c-format
-msgid "<corrupt string table index: %3ld>"
-msgstr "<ÐÏ×ÒÅÖÄÅΠÉÎÄÅËÓ ÔÁÂÌÉÃÙ ÓÔÒÏË: %3ld>"
-
-#: readelf.c:1569
-#, c-format
-msgid "Processor Specific: %lx"
-msgstr "óÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÐÒÏÃÅÓÓÏÒÁ: %lx"
-
-#: readelf.c:1588
-#, c-format
-msgid "Operating System specific: %lx"
-msgstr "óÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÏÐÅÒÁÃÉÏÎÎÏÊ ÓÉÓÔÅÍÙ: %lx"
-
-#: readelf.c:1592 readelf.c:2370
-#, c-format
-msgid "<unknown>: %lx"
-msgstr "<ÎÅÉÚ×ÅÓÔÎÙÊ>: %lx"
-
-#: readelf.c:1605
-msgid "NONE (None)"
-msgstr "îåô (îÅÔ)"
-
-#: readelf.c:1606
-msgid "REL (Relocatable file)"
-msgstr "REL (ðÅÒÅÍÅÝÁÅÍÙÊ ÆÁÊÌ)"
-
-#: readelf.c:1607
-msgid "EXEC (Executable file)"
-msgstr "EXEC (éÓÐÏÌÎÑÅÍÙÊ ÆÁÊÌ)"
-
-#: readelf.c:1608
-msgid "DYN (Shared object file)"
-msgstr "DYN (óÏ×Í. ÉÓÐ. ÏÂßÅËÔÎÙÊ ÆÁÊÌ)"
-
-#: readelf.c:1609
-msgid "CORE (Core file)"
-msgstr "CORE (ïÓÎÏ×ÎÏÊ ÆÁÊÌ)"
-
-#: readelf.c:1613
-#, c-format
-msgid "Processor Specific: (%x)"
-msgstr "óÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÐÒÏÃÅÓÓÏÒÁ: (%x)"
-
-#: readelf.c:1615
-#, c-format
-msgid "OS Specific: (%x)"
-msgstr "óÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ïó: (%x)"
-
-#: readelf.c:1617 readelf.c:1724 readelf.c:2554
-#, c-format
-msgid "<unknown>: %x"
-msgstr "<ÎÅÉÚ×ÅÓÔÎÙÊ>: %x"
-
-#: readelf.c:1629
-msgid "None"
-msgstr "îÅÔ"
-
-#: readelf.c:2229
-msgid "Standalone App"
-msgstr "éÚÏÌÉÒÏ×ÁÎÎÏÅ ÐÒÉÌÏÖÅÎÉÅ"
-
-#: readelf.c:2232 readelf.c:2952 readelf.c:2968
-#, c-format
-msgid "<unknown: %x>"
-msgstr "<ÎÅÉÚ×ÅÓÔÎÙÊ: %x>"
-
-#: readelf.c:2597
-#, c-format
-msgid "Usage: readelf <option(s)> elf-file(s)\n"
-msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: readelf <ÏÐÃÉÉ> elf-ÆÁÊÌ(Ù)\n"
-
-#: readelf.c:2598
-#, c-format
-msgid " Display information about the contents of ELF format files\n"
-msgstr " ïÔÏÂÒÁÖÁÅÔ ÉÎÆÏÒÍÁÃÉÀ Ï ÓÏÄÅÒÖÉÍÏÍ ÆÁÊÌÏ× × ÆÏÒÍÁÔÅ ELF\n"
-
-#: readelf.c:2599
+#: objcopy.c:496
 #, c-format
 msgid ""
-" Options are:\n"
-"  -a --all               Equivalent to: -h -l -S -s -r -d -V -A -I\n"
-"  -h --file-header       Display the ELF file header\n"
-"  -l --program-headers   Display the program headers\n"
-"     --segments          An alias for --program-headers\n"
-"  -S --section-headers   Display the sections' header\n"
-"     --sections          An alias for --section-headers\n"
-"  -g --section-groups    Display the section groups\n"
-"  -e --headers           Equivalent to: -h -l -S\n"
-"  -s --syms              Display the symbol table\n"
-"      --symbols          An alias for --syms\n"
-"  -n --notes             Display the core notes (if present)\n"
-"  -r --relocs            Display the relocations (if present)\n"
-"  -u --unwind            Display the unwind info (if present)\n"
-"  -d --dynamic           Display the dynamic section (if present)\n"
-"  -V --version-info      Display the version sections (if present)\n"
-"  -A --arch-specific     Display architecture specific information (if any).\n"
-"  -D --use-dynamic       Use the dynamic section info when displaying symbols\n"
-"  -x --hex-dump=<number> Dump the contents of section <number>\n"
-"  -w[liaprmfFsoR] or\n"
-"  --debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n"
-"                         Display the contents of DWARF2 debug sections\n"
-msgstr ""
-" ïÐÃÉÉ:\n"
-"  -a --all               üË×É×ÁÌÅÎÔÎÁ: -h -l -S -s -r -d -V -A -I\n"
-"  -h --file-header       ÷Ù×ÏÄ ÚÁÇÏÌÏ×ËÁ ÆÁÊÌÁ ELF\n"
-"  -l --program-headers   ÷Ù×ÏÄ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ\n"
-"     --segments          áÌÉÁÓ ÄÌÑ --program-headers\n"
-"  -S --section-headers   ÷Ù×ÏÄ ÚÁÇÏÌÏ×ËÁ ÒÁÚÄÅÌÏ×\n"
-"     --sections          áÌÉÁÓ ÄÌÑ --section-headers\n"
-"  -e --headers           üË×É×ÁÌÅÎÔÎÁ: -h -l -S\n"
-"  -s --syms              ÷Ù×ÏÄ ÔÁÂÌÉÃÙ ÓÉÍ×ÏÌÏ×\n"
-"     --symbols           áÌÉÁÓ ÄÌÑ --syms\n"
-"  -n --notes             ÷Ù×ÏÄ ÏÓÎÏ×ÎÙÈ ÚÁÐÉÓÅÊ (ÅÓÌÉ ÉÍÅÀÔÓÑ)\n"
-"  -r --relocs            ÷Ù×ÏÄ ÐÅÒÅÍÅÝÅÎÉÊ (ÅÓÌÉ ÉÍÅÀÔÓÑ)\n"
-"  -u --unwind            ÷Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ Ï ÒÁÓÐÉÓÙ×ÁÎÉÉ (ÅÓÌÉ ÉÍÅÅÔÓÑ)\n"
-"  -d --dynamic           ÷Ù×ÏÄ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÓÅÇÍÅÎÔÁ (ÅÓÌÉ ÉÍÅÅÔÓÑ)\n"
-"  -V --version-info      ÷Ù×ÏÄ ÒÁÚÄÅÌÏ× Ó ×ÅÒÓÉÅÊ (ÅÓÌÉ ÉÍÅÀÔÓÑ)\n"
-"  -A --arch-specific     ÷Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ, ÓÐÅÃÉÆÉÞÎÏÊ ÄÌÑ ÁÒÈÉÔÅËÔÕÒÙ (ÅÓÌÉ ÉÍÅÅÔÓÑ).\n"
-"  -D --use-dynamic       éÓÐÏÌØÚÏ×ÁÎÉÅ ÄÉÎÁÍÉÞÅÓËÏÊ ÉÎÆÏÒÍÁÃÉÉ ÒÁÚÄÅÌÁ ÐÒÉ ×Ù×ÏÄÅ ÓÉÍ×ÏÌÏ×\n"
-"  -x --hex-dump=<ÎÏÍÅÒ>  äÁÍРÓÏÄÅÒÖÉÍÏÇÏ ÒÁÚÄÅÌÁ <ÎÏÍÅÒ>\n"
-"  -w[liaprmfFsoR] ÉÌÉ\n"
-"  --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str,=loc,=Ranges]\n"
-"                         ÷Ù×ÏÄ ÓÏÄÅÒÖÉÍÏÇÏ ÏÔÌÁÄÏÞÎÙÈ ÒÁÚÄÅÌÏ× DWARF2\n"
-
-#: readelf.c:2622
-#, c-format
-msgid ""
-"  -i --instruction-dump=<number>\n"
-"                         Disassemble the contents of section <number>\n"
-msgstr ""
-"  -i --instruction-dump=<ÎÏÍÅÒ>\n"
-"                         äÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÅ ÓÏÄÅÒÖÉÍÏÇÏ ÒÁÚÄÅÌÁ <ÎÏÍÅÒ>\n"
-
-#: readelf.c:2626
-#, c-format
-msgid ""
-"  -I --histogram         Display histogram of bucket list lengths\n"
-"  -W --wide              Allow output width to exceed 80 characters\n"
-"  -H --help              Display this information\n"
-"  -v --version           Display the version number of readelf\n"
+"  -I --input-target=<bfdname>      Assume input file is in format <bfdname>\n"
+"  -O --output-target=<bfdname>     Create an output file in format <bfdname>\n"
+"  -F --target=<bfdname>            Set both input and output format to <bfdname>\n"
+"  -p --preserve-dates              Copy modified/access timestamps to the output\n"
+"  -R --remove-section=<name>       Remove section <name> from the output\n"
+"  -s --strip-all                   Remove all symbol and relocation information\n"
+"  -g -S -d --strip-debug           Remove all debugging symbols & sections\n"
+"     --strip-unneeded              Remove all symbols not needed by relocations\n"
+"     --only-keep-debug             Strip everything but the debug information\n"
+"  -N --strip-symbol=<name>         Do not copy symbol <name>\n"
+"  -K --keep-symbol=<name>          Do not strip symbol <name>\n"
+"  -w --wildcard                    Permit wildcard in symbol comparison\n"
+"  -x --discard-all                 Remove all non-global symbols\n"
+"  -X --discard-locals              Remove any compiler-generated symbols\n"
+"  -v --verbose                     List all object files modified\n"
+"  -V --version                     Display this program's version number\n"
+"  -h --help                        Display this output\n"
+"     --info                        List object formats & architectures supported\n"
+"  -o <file>                        Place stripped output into <file>\n"
 msgstr ""
-"  -I --histogram         ÷Ù×ÏÄ ÇÉÓÔÏÇÒÁÍÍÙ ÄÌÉΠÓÐÉÓËÁ ÕÞÁÓÔËÁ ÐÁÍÑÔÉ\n"
-"  -W --wide              òÁÚÒÅÛÅÎÉÅ ÛÉÒÉÎÙ ×Ù×ÏÄÁ ÂÏÌÅÅ 80 ÓÉÍ×ÏÌÏ×\n"
-"  -H --help              ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n"
-"  -v --version           ÷Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ readelf\n"
-
-#: readelf.c:2651 readelf.c:12118
-msgid "Out of memory allocating dump request table."
-msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ ÐÒÉ ÒÁÚÍÅÝÅÎÉÉ ÄÁÍÐÁ ÔÁÂÌÉÃÙ ÚÁÐÒÏÓÁ."
-
-#: readelf.c:2820 readelf.c:2888
-#, c-format
-msgid "Unrecognized debug option '%s'\n"
-msgstr "îÅÒÁÓÐÏÚÎÁÎÎÁÑ ÏÔÌÁÄÏÞÎÁÑ ÏÐÃÉÑ '%s'\n"
-
-#: readelf.c:2922
-#, c-format
-msgid "Invalid option '-%c'\n"
-msgstr "îÅ×ÅÒÎÁÑ ÏÐÃÉÑ '-%c'\n"
-
-#: readelf.c:2936
-msgid "Nothing to do.\n"
-msgstr "îÅÞÅÇÏ ×ÙÐÏÌÎÑÔØ.\n"
-
-#: readelf.c:2948 readelf.c:2964 readelf.c:5906
-msgid "none"
-msgstr "ÎÅÔ"
-
-#: readelf.c:2965
-msgid "2's complement, little endian"
-msgstr "ÄÏÐÏÌÎÅÎÉÅ ÄÏ 2, little endian"
-
-#: readelf.c:2966
-msgid "2's complement, big endian"
-msgstr "ÄÏÐÏÌÎÅÎÉÅ ÄÏ 2, big endian"
-
-#: readelf.c:2984
-msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
-msgstr "îÅ ELF-ÆÁÊÌ - ÏΠÓÏÄÅÒÖÉÔ ÎÅ×ÅÒÎÙÅ magic-ÂÁÊÔÙ × ÎÁÞÁÌÅ\n"
-
-#: readelf.c:2992
-#, c-format
-msgid "ELF Header:\n"
-msgstr "úÁÇÏÌÏ×ÏË ELF:\n"
-
-#: readelf.c:2993
-#, c-format
-msgid "  Magic:   "
-msgstr "  Magic:   "
-
-#: readelf.c:2997
-#, c-format
-msgid "  Class:                             %s\n"
-msgstr "  ëÌÁÓÓ:                             %s\n"
-
-#: readelf.c:2999
-#, c-format
-msgid "  Data:                              %s\n"
-msgstr "  äÁÎÎÙÅ:                            %s\n"
-
-#: readelf.c:3001
-#, c-format
-msgid "  Version:                           %d %s\n"
-msgstr "  ÷ÅÒÓÉÑ:                            %d %s\n"
-
-#: readelf.c:3008
-#, c-format
-msgid "  OS/ABI:                            %s\n"
-msgstr "  OS/ABI:                            %s\n"
-
-#: readelf.c:3010
-#, c-format
-msgid "  ABI Version:                       %d\n"
-msgstr "  ÷ÅÒÓÉÑ ABI:                        %d\n"
+"  -I --input-target=<bfd-ÉÍÑ>      ðÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ ×ÈÏÄÎÏÊ ÆÁÊÌ × ÆÏÒÍÁÔÅ <bfd-ÉÍÑ>\n"
+"  -O --output-target=<bfd-ÉÍÑ>     óÏÚÄÁÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ × ÆÏÒÍÁÔÅ <bfd-ÉÍÑ>\n"
+"  -F --target=<bfd-ÉÍÑ>            õÓÔÁÎÏ×ÉÔØ ×ÈÏÄÎÏÊ É ×ÙÈÏÄÎÏÊ ÆÏÒÍÁÔÙ × <bfd-ÉÍÑ>\n"
+"  -p --preserve-dates              ëÏÐÉÒÏ×ÁÔØ ×ÒÅÍÑ ÍÏÄÉÆÉËÁÃÉÉ/ÄÏÓÔÕÐÁ ÎÁ ×Ù×ÏÄ\n"
+"  -R --remove-section <ÉÍÑ>        õÄÁÌÉÔØ ÒÁÚÄÅÌ <ÉÍÑ> ÉÚ ×Ù×ÏÄÁ\n"
+"  -s --strip-all                   õÄÁÌÉÔØ ×ÓÅ ÓÉÍ×ÏÌÙ É ÉÎÆÏÒÍÁÃÉÀ Ï ÐÅÒÅÍÅÝÅÎÉÉ\n"
+"  -g -S -d --strip-debug           õÄÁÌÉÔØ ×ÓÅ ÏÔÌÁÄÏÞÎÙÅ ÓÉÍ×ÏÌÙ É ÒÁÚÄÅÌÙ\n"
+"     --strip-unneeded              õÄÁÌÉÔØ ×ÓÅ ÓÉÍ×ÏÌÙ, ÎÅ ÎÕÖÎÙÅ ÄÌÑ ÐÅÒÅÍÅÝÅÎÉÊ\n"
+"     --only-keep-debug             õÄÁÌÉÔØ ×Ó£, ÚÁ ÉÓËÌÀÞÅÎÉÅÍ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ\n"
+"  -N --strip-symbol=<ÉÍÑ>          îÅ ËÏÐÉÒÏ×ÁÔØ ÓÉÍ×ÏÌ <ÉÍÑ>\n"
+"  -K --keep-symbol=<ÉÍÑ>           ëÏÐÉÒÏ×ÁÔØ ÔÏÌØËÏ ÓÉÍ×ÏÌ <ÉÍÑ>\n"
+"  -w --wildcard                    òÁÚÒÅÛÉÔØ ÍÁÓËÕ ÐÒÉ ÓÒÁ×ÎÅÎÉÉ ÓÉÍ×ÏÌÏ×\n"
+"  -x --discard-all                 õÄÁÌÉÔØ ×ÓÅ ÎÅÇÌÏÂÁÌØÎÙÅ ÓÉÍ×ÏÌÙ\n"
+"  -X --discard-locals              õÄÁÌÉÔØ ÌÀÂÙÅ ÓÉÍ×ÏÌÙ, ÓÇÅÎÅÒÉÒÏ×ÁÎÎÙÅ ËÏÍÐÉÌÑÔÏÒÏÍ\n"
+"  -v --verbose                     ðÅÒÅÞÉÓÌÉÔØ ×ÓÅ ÍÏÄÉÆÉÃÉÒÏ×ÁÎÎÙÅ ÏÂßÅËÔÎÙÅ ÆÁÊÌÙ\n"
+"  -V --version                     ÷Ù×ÅÓÔÉ ÎÏÍÅÒ ×ÅÒÓÉÉ ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ\n"
+"  -h --help                        ÷Ù×ÅÓÔÉ ÜÔÕ ÓÐÒÁ×ËÕ\n"
+"     --info                        ðÅÒÅÞÉÓÌÉÔØ ÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÆÏÒÍÁÔÙ ÏÂßÅËÔÏ× É ÁÒÈÉÔÅËÔÕÒÙ\n"
+"  -o <ÆÁÊÌ>                        ðÏÍÅÓÔÉÔØ ÏÂÒÁÂÏÔÁÎÎÙÅ ×ÙÈÏÄÎÙÅ ÄÁÎÎÙÅ × <ÆÁÊÌ>\n"
 
-#: readelf.c:3012
+#: objcopy.c:568
 #, c-format
-msgid "  Type:                              %s\n"
-msgstr "  ôÉÐ:                               %s\n"
+msgid "unrecognized section flag `%s'"
+msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÆÌÁÇ ÒÁÚÄÅÌÁ `%s'"
 
-#: readelf.c:3014
+#: objcopy.c:569
 #, c-format
-msgid "  Machine:                           %s\n"
-msgstr "  íÁÛÉÎÁ:                            %s\n"
+msgid "supported flags: %s"
+msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÆÌÁÇÉ: %s"
 
-#: readelf.c:3016
+#: objcopy.c:646
 #, c-format
-msgid "  Version:                           0x%lx\n"
-msgstr "  ÷ÅÒÓÉÑ:                            0x%lx\n"
+msgid "cannot open '%s': %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ '%s': %s"
 
-#: readelf.c:3019
+#: objcopy.c:649 objcopy.c:2722
 #, c-format
-msgid "  Entry point address:               "
-msgstr "  áÄÒÅÓ ÔÏÞËÉ ×ÈÏÄÁ:                 "
+msgid "%s: fread failed"
+msgstr "%s: fread ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ"
 
-#: readelf.c:3021
+#: objcopy.c:722
 #, c-format
-msgid ""
-"\n"
-"  Start of program headers:          "
-msgstr ""
-"\n"
-"  îÁÞÁÌÏ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ:       "
+msgid "%s:%d: Ignoring rubbish found on this line"
+msgstr "%s:%d: ðÒÏÐÕÓËÁÅÔÓÑ ÍÕÓÏÒ, ÎÁÊÄÅÎÎÙÊ × ÜÔÏÊ ÓÔÒÏËÅ "
 
-#: readelf.c:3023
+#: objcopy.c:996
 #, c-format
-msgid ""
-" (bytes into file)\n"
-"  Start of section headers:          "
-msgstr ""
-" (ÂÁÊÔ × ÆÁÊÌÅ)\n"
-"  îÁÞÁÌÏ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ:       "
+msgid "%s: Multiple redefinition of symbol \"%s\""
+msgstr "%s: íÎÏÇÏËÒÁÔÎÏÅ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ ÓÉÍ×ÏÌÁ \"%s\""
 
-#: readelf.c:3025
+#: objcopy.c:1000
 #, c-format
-msgid " (bytes into file)\n"
-msgstr " (ÂÁÊÔ × ÆÁÊÌÅ)\n"
+msgid "%s: Symbol \"%s\" is target of more than one redefinition"
+msgstr "%s: óÉÍ×ÏÌ \"%s\" Ñ×ÌÑÅÔÓÑ ÃÅÌØÀ ÂÏÌÅÅ, ÞÅÍ ÏÄÎÏÇÏ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÑ"
 
-#: readelf.c:3027
+#: objcopy.c:1028
 #, c-format
-msgid "  Flags:                             0x%lx%s\n"
-msgstr "  æÌÁÇÉ:                             0x%lx%s\n"
+msgid "couldn't open symbol redefinition file %s (error: %s)"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÑ ÓÉÍ×ÏÌÁ %s (ÏÛÉÂËÁ: %s)"
 
-#: readelf.c:3030
+#: objcopy.c:1106
 #, c-format
-msgid "  Size of this header:               %ld (bytes)\n"
-msgstr "  òÁÚÍÅÒ ÜÔÏÇÏ ÚÁÇÏÌÏ×ËÁ:            %ld (ÂÁÊÔ)\n"
+msgid "%s:%d: garbage found at end of line"
+msgstr "%s:%d: × ËÏÎÃÅ ÓÔÒÏËÉ ÎÁÊÄÅΠÍÕÓÏÒ"
 
-#: readelf.c:3032
+#: objcopy.c:1109
 #, c-format
-msgid "  Size of program headers:           %ld (bytes)\n"
-msgstr "  òÁÚÍÅÒ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ:       %ld (ÂÁÊÔ)\n"
+msgid "%s:%d: missing new symbol name"
+msgstr "%s:%d: ÏÔÓÕÔÓÔ×ÕÅÔ ÉÍÑ ÎÏ×ÏÇÏ ÓÉÍ×ÏÌÁ"
 
-#: readelf.c:3034
+#: objcopy.c:1119
 #, c-format
-msgid "  Number of program headers:         %ld\n"
-msgstr "  þÉÓÌÏ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ:        %ld\n"
+msgid "%s:%d: premature end of file"
+msgstr "%s:%d: ÐÒÅÖÄÅ×ÒÅÍÅÎÎÙÊ ËÏÎÅàÆÁÊÌÁ"
 
-#: readelf.c:3036
+#: objcopy.c:1145
 #, c-format
-msgid "  Size of section headers:           %ld (bytes)\n"
-msgstr "  òÁÚÍÅÒ ÚÁÇÏÌÏ×ËÏ× ÒÁÚÄÅÌÁ:         %ld (ÂÁÊÔ)\n"
+msgid "stat returns negative size for `%s'"
+msgstr "stat ×ÏÚ×ÒÁÔÉÌ ÏÔÒÉÃÁÔÅÌØÎÙÊ ÒÁÚÍÅÒ ÄÌÑ `%s'"
 
-#: readelf.c:3038
+#: objcopy.c:1157
 #, c-format
-msgid "  Number of section headers:         %ld"
-msgstr "  þÉÓÌÏ ÚÁÇÏÌÏ×ËÏ× ÒÁÚÄÅÌÁ:          %ld"
+msgid "copy from `%s' [unknown] to `%s' [unknown]\n"
+msgstr "ËÏÐÉÒÏ×ÁÎÉÅ ÉÚ `%s' [ÎÅÉÚ×.] × `%s' [ÎÅÉÚ×.]\n"
 
-#: readelf.c:3043
-#, c-format
-msgid "  Section header string table index: %ld"
-msgstr "  éÎÄÅËÓ ÔÁÂÌ. ÓÔÒÏË ÚÁÇÏÌ. ÒÁÚÄÅÌÁ: %ld"
+#: objcopy.c:1212
+msgid "Unable to change endianness of input file(s)"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÚÍÅÎÉÔØ endianness ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ"
 
-#: readelf.c:3074 readelf.c:3107
-msgid "program headers"
-msgstr "ÚÁÇÏÌÏ×ËÉ ÐÒÏÇÒÁÍÍÙ"
+#: objcopy.c:1221
+#, c-format
+msgid "copy from `%s' [%s] to `%s' [%s]\n"
+msgstr "ËÏÐÉÒÏ×ÁÎÉÅ ÉÚ `%s' [%s] × `%s' [%s]\n"
 
-#: readelf.c:3145 readelf.c:3446 readelf.c:3487 readelf.c:3546 readelf.c:3609
-#: readelf.c:3993 readelf.c:4017 readelf.c:5247 readelf.c:5291 readelf.c:5489
-#: readelf.c:6450 readelf.c:6464 readelf.c:11493 readelf.c:11912
-#: readelf.c:11979
-msgid "Out of memory\n"
-msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ\n"
+#: objcopy.c:1258 objcopy.c:1715
+#, c-format
+msgid "Unable to recognise the format of the input file `%s'"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÆÏÒÍÁÔ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ `%s'"
 
-#: readelf.c:3172
+#: objcopy.c:1261
 #, c-format
-msgid ""
-"\n"
-"There are no program headers in this file.\n"
-msgstr ""
-"\n"
-"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ.\n"
+msgid "Warning: Output file cannot represent architecture `%s'"
+msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÷ÙÈÏÄÎÏÊ ÆÁÊÌ ÎÅ ÍÏÖÅÔ ÐÒÅÄÏÓÔÁ×ÉÔØ ÁÒÈÉÔÅËÔÕÒÕ `%s'"
 
-#: readelf.c:3178
+#: objcopy.c:1305
 #, c-format
-msgid ""
-"\n"
-"Elf file type is %s\n"
-msgstr ""
-"\n"
-"ôÉРelf-ÆÁÊÌÁ - %s\n"
+msgid "can't create section `%s': %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÒÁÚÄÅÌ `%s': %s"
+
+#: objcopy.c:1356
+msgid "there are no sections to be copied!"
+msgstr "ÎÅÔ ÒÁÚÄÅÌÏ× ÄÌÑ ËÏÐÉÒÏ×ÁÎÉÑ!"
 
-#: readelf.c:3179
+#: objcopy.c:1402
 #, c-format
-msgid "Entry point "
-msgstr "ôÏÞËÁ ×ÈÏÄÁ "
+msgid "Can't fill gap after %s: %s"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÚÁÐÏÌÎÉÔØ ÐÒÏÍÅÖÕÔÏË ÐÏÓÌÅ %s: %s"
 
-#: readelf.c:3181
+#: objcopy.c:1427
 #, c-format
-msgid ""
-"\n"
-"There are %d program headers, starting at offset "
-msgstr ""
-"\n"
-"éÍÅÅÔÓÑ %d ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ, ÎÁÞÉÎÁÑ ÓÏ ÓÍÅÝÅÎÉÑ "
+msgid "Can't add padding to %s: %s"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÄÏÂÁ×ÉÔØ ÚÁÐÏÌÎÅÎÉÅ × %s: %s"
 
-#: readelf.c:3193 readelf.c:3195
+#: objcopy.c:1594
 #, c-format
-msgid ""
-"\n"
-"Program Headers:\n"
-msgstr ""
-"\n"
-"úÁÇÏÌÏ×ËÉ ÐÒÏÇÒÁÍÍÙ:\n"
+msgid "%s: error copying private BFD data: %s"
+msgstr "%s: ÏÛÉÂËÁ ËÏÐÉÒÏ×ÁÎÉÑ ÞÁÓÔÎÙÈ ÄÁÎÎÙÈ BFD: %s"
 
-#: readelf.c:3199
+#: objcopy.c:1605
+msgid "unknown alternate machine code, ignored"
+msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÁÌØÔÅÒÎÁÔÉ×ÎÙÊ ËÏÄ ÍÁÛÉÎÙ, ÐÒÏÐÕÝÅÎ"
+
+#: objcopy.c:1635 objcopy.c:1665
 #, c-format
-msgid "  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align\n"
-msgstr "  ôÉР           óÍÅÝ.    ÷ÉÒÔ.ÁÄÒ   æÉÚ.ÁÄÒ    òÚÍ.ÆÊÌ òÚÍ.ÐÍ  æÌÇ ÷ÙÒÁ×Î\n"
+msgid "cannot mkdir %s for archive copying (error: %s)"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ mkdir %s ÄÌÑ ËÏÐÉÒÏ×ÁÎÉÑ ÁÒÈÉ×Á (ÏÛÉÂËÁ: %s)"
 
-#: readelf.c:3202
+#: objcopy.c:1787
 #, c-format
-msgid "  Type           Offset   VirtAddr           PhysAddr           FileSiz  MemSiz   Flg Align\n"
-msgstr "  ôÉР           óÍÅÝ.    ÷ÉÒÔ.ÁÄÒ           æÉÚ.ÁÄÒ            òÚÍ.ÆÊÌ  òÚÍ.ÐÍ   æÌÇ ÷ÙÒÁ×Î\n"
+msgid "error: the input file '%s' is empty"
+msgstr "ÏÛÉÂËÁ: ×ÈÏÄÎÏÊ ÆÁÊÌ '%s' ÐÕÓÔ"
 
-#: readelf.c:3206
+#: objcopy.c:1889
 #, c-format
-msgid "  Type           Offset             VirtAddr           PhysAddr\n"
-msgstr "  ôÉР           óÍÅÝ.              ÷ÉÒÔ.ÁÄÒ           æÉÚ.ÁÄÒ\n"
+msgid "Multiple renames of section %s"
+msgstr "íÎÏÇÏËÒÁÔÎÙÅ ÐÅÒÅÉÍÅÎÏ×ÁÎÉÑ ÒÁÚÄÅÌÁ %s"
+
+#: objcopy.c:1940
+msgid "private header data"
+msgstr "ÞÁÓÔÎÙÅ ÄÁÎÎÙÅ ÚÁÇÏÌÏ×ËÁ"
 
-#: readelf.c:3208
+#: objcopy.c:1948
 #, c-format
-msgid "                 FileSiz            MemSiz              Flags  Align\n"
-msgstr "                 òÚÍ.ÆÊÌ            òÚÍ.ÐÍ              æÌÁÇÉ  ÷ÙÒÁ×Î\n"
+msgid "%s: error in %s: %s"
+msgstr "%s: ÏÛÉÂËÁ × %s: %s"
 
-#: readelf.c:3301
-msgid "more than one dynamic segment\n"
-msgstr "ÂÏÌÅÅ ÏÄÎÏÇÏ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÓÅÇÍÅÎÔÁ\n"
+#: objcopy.c:2007
+msgid "making"
+msgstr "ÓÏÚÄÁÅÔÓÑ"
 
-#: readelf.c:3312
-msgid "no .dynamic section in the dynamic segment"
-msgstr "× ÄÉÎÁÍÉÞÅÓËÏÍ ÓÅÇÍÅÎÔÅ ÎÅÔ ÒÁÚÄÅÌÁ .dynamic"
+#: objcopy.c:2022
+msgid "size"
+msgstr "ÒÁÚÍÅÒ"
 
-#: readelf.c:3321
-msgid "the .dynamic section is not contained within the dynamic segment"
-msgstr "× ÄÉÎÁÍÉÞÅÓËÏÍ ÓÅÇÍÅÎÔÅ ÎÅ ÓÏÄÅÒÖÉÔÓÑ ÒÁÚÄÅÌ .dynamic"
+#: objcopy.c:2036
+msgid "vma"
+msgstr "vma"
 
-#: readelf.c:3323
-msgid "the .dynamic section is not the first section in the dynamic segment."
-msgstr "ÒÁÚÄÅÌ .dynamic ÎÅ Ñ×ÌÑÅÔÓÑ ÐÅÒ×ÙÍ ÒÁÚÄÅÌÏÍ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÓÅÇÍÅÎÔÁ"
+#: objcopy.c:2061
+msgid "alignment"
+msgstr "ÏÒÉÅÎÔÁÃÉÑ"
 
-#: readelf.c:3337
-msgid "Unable to find program interpreter name\n"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ ÉÍÑ ÉÎÔÅÒÐÒÅÔÁÔÏÒÁ ÐÒÏÇÒÁÍÍÙ\n"
+#: objcopy.c:2083
+msgid "private data"
+msgstr "ÞÁÓÔÎÙÅ ÄÁÎÎÙÅ"
 
-#: readelf.c:3344
+#: objcopy.c:2091
 #, c-format
-msgid ""
-"\n"
-"      [Requesting program interpreter: %s]"
-msgstr ""
-"\n"
-"      [úÁÐÒÁÛÉ×ÁÅÍÙÊ ÉÎÔÅÒÐÒÅÔÁÔÏÒ ÐÒÏÇÒÁÍÍÙ: %s]"
+msgid "%s: section `%s': error in %s: %s"
+msgstr "%s: ÒÁÚÄÅÌ `%s': ÏÛÉÂËÁ × %s: %s"
 
-#: readelf.c:3356
+#: objcopy.c:2363
 #, c-format
-msgid ""
-"\n"
-" Section to Segment mapping:\n"
-msgstr ""
-"\n"
-" óÏÏÔ×ÅÔÓÔ×ÉÅ ÒÁÚÄÅÌ-ÓÅÇÍÅÎÔ:\n"
+msgid "%s: can't create debugging section: %s"
+msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÏÔÌÁÄÏÞÎÙÊ ÒÁÚÄÅÌ: %s"
 
-#: readelf.c:3357
+#: objcopy.c:2377
 #, c-format
-msgid "  Segment Sections...\n"
-msgstr "  óÅÇÍÅÎÔ òÁÚÄÅÌÙ...\n"
+msgid "%s: can't set debugging section contents: %s"
+msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÓÏÄÅÒÖÉÍÏÅ ÏÔÌÁÄÏÞÎÏÇÏ ÒÁÚÄÅÌÁ: %s"
 
-#: readelf.c:3408
-msgid "Cannot interpret virtual addresses without program headers.\n"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÎÔÅÒÐÒÅÔÉÒÏ×ÁÔØ ×ÉÒÔÕÁÌØÎÙÅ ÁÄÒÅÓÁ ÂÅÚ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ.\n"
+#: objcopy.c:2386
+#, c-format
+msgid "%s: don't know how to write debugging information for %s"
+msgstr "%s: ÎÅ ÉÚ×ÅÓÔÎÏ, ËÁË ÚÁÐÉÓÁÔØ ÏÔÌÁÄÏÞÎÕÀ ÉÎÆÏÒÍÁÃÉÀ ÄÌÑ %s"
+
+#: objcopy.c:2561
+msgid "byte number must be non-negative"
+msgstr "ÎÏÍÅÒ ÂÁÊÔÁ ÄÏÌÖÅΠÂÙÔØ ÎÅÏÔÒÉÃÁÔÅÌØÎÙÍ"
+
+#: objcopy.c:2571
+msgid "interleave must be positive"
+msgstr "ÞÅÒÅÄÏ×ÁÎÉÅ ÄÏÌÖÎÏ ÂÙÔØ ÐÏÌÏÖÉÔÅÌØÎÙÍ"
 
-#: readelf.c:3424
+#: objcopy.c:2591 objcopy.c:2599
 #, c-format
-msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
-msgstr "÷ÉÒÔÕÁÌØÎÙÊ ÁÄÒÅÓ 0x%lx ÎÅ ÒÁÚÍÅÝÅΠנËÁËÏÍ-ÌÉÂÏ ÓÅÇÍÅÎÔÅ PT_LOAD.\n"
+msgid "%s both copied and removed"
+msgstr "ÏÂÁ %s ÓËÏÐÉÒÏ×ÁÎÙ É ÕÄÁÌÅÎÙ"
 
-#: readelf.c:3438 readelf.c:3479
-msgid "section headers"
-msgstr "ÚÁÇÏÌÏ×ËÉ ÒÁÚÄÅÌÏ×"
+#: objcopy.c:2696 objcopy.c:2767 objcopy.c:2867 objcopy.c:2898 objcopy.c:2922
+#: objcopy.c:2926 objcopy.c:2946
+#, c-format
+msgid "bad format for %s"
+msgstr "ÐÌÏÈÏÊ ÆÏÒÍÁÔ ÄÌÑ %s"
 
-#: readelf.c:3523 readelf.c:3586
-msgid "symbols"
-msgstr "ÓÉÍ×ÏÌÙ"
+#: objcopy.c:2717
+#, c-format
+msgid "cannot open: %s: %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ: %s: %s"
 
-#: readelf.c:3533 readelf.c:3596
-msgid "symtab shndx"
-msgstr "symtab shndx"
+#: objcopy.c:2836
+#, c-format
+msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
+msgstr "ðÒÅÄÕÐÒÅÖÅÄÎÉÅ: ÏÂÒÅÚÁÅÔÓÑ ÚÁÐÏÌÎÅÎÉÅ ÐÒÏÍÅÖÕÔËÁ ÏÔ 0x%s ÄÏ 0x%x"
+
+#: objcopy.c:3000
+msgid "alternate machine code index must be positive"
+msgstr "ÉÎÄÅËÓ ÁÌØÔÅÒÎÁÔÉ×ÎÏÇÏ ËÏÄÁ ÍÁÛÉÎÙ ÄÏÌÖÅΠÂÙÔØ ÐÏÌÏÖÉÔÅÌØÎÙÍ"
+
+#: objcopy.c:3058
+msgid "byte number must be less than interleave"
+msgstr "ÎÏÍÅÒ ÂÁÊÔÁ ÄÏÌÖÅΠÂÙÔØ ÍÅÎØÛÅ ÞÅÒÅÄÏ×ÁÎÉÑ"
 
-#: readelf.c:3697 readelf.c:3977
+#: objcopy.c:3088
 #, c-format
-msgid ""
-"\n"
-"There are no sections in this file.\n"
-msgstr ""
-"\n"
-"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÒÁÚÄÅÌÏ×.\n"
+msgid "architecture %s unknown"
+msgstr "ÁÒÈÉÔÅËÔÕÒÁ %s ÎÅ ÉÚ×ÅÓÔÎÁ"
+
+#: objcopy.c:3092
+msgid "Warning: input target 'binary' required for binary architecture parameter."
+msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: 'Ä×ÏÉÞÎÙÊ' ÃÅÌÅ×ÏÊ ×ÈÏÄÎÏÊ ÆÁÊÌ ÔÒÅÂÕÅÔÓÑ ÄÌÑ ÐÁÒÁÍÅÔÒÁ Ä×ÏÉÞÎÏÊ ÁÒÈÉÔÅËÔÕÒÙ."
 
-#: readelf.c:3703
+#: objcopy.c:3093
 #, c-format
-msgid "There are %d section headers, starting at offset 0x%lx:\n"
-msgstr "éÍÅÅÔÓÑ %d ÚÁÇÏÌÏ×ËÏ× ÒÁÚÄÅÌÁ, ÎÁÞÉÎÁÑ ÓÏ ÓÍÅÝÅÎÉÑ 0x%lx:\n"
+msgid " Argument %s ignored"
+msgstr " áÒÇÕÍÅÎÔ %s ÐÒÏÐÕÝÅÎ"
 
-#: readelf.c:3720 readelf.c:4079 readelf.c:4290 readelf.c:4591 readelf.c:5011
-#: readelf.c:6618
-msgid "string table"
-msgstr "ÔÁÂÌÉÃÁ ÓÔÒÏË"
+#: objcopy.c:3099
+#, c-format
+msgid "warning: could not locate '%s'.  System error message: %s"
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÎÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ '%s'. óÉÓÔÅÍÎÏÅ ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ: %s"
 
-#: readelf.c:3765
-msgid "File contains multiple dynamic symbol tables\n"
-msgstr "æÁÊÌ ÓÏÄÅÒÖÉÔ ÎÅÓËÏÌØËÏ ÔÁÂÌÉàÄÉÎÁÍÉÞÅÓËÉÈ ÓÉÍ×ÏÌÏ×\n"
+#: objcopy.c:3141 objcopy.c:3155
+#, c-format
+msgid "%s %s%c0x%s never used"
+msgstr "%s %s%c0x%s ÎÉËÏÇÄÁ ÎÅ ÉÓÐÏÌØÚÕÅÔÓÑ"
 
-#: readelf.c:3777
-msgid "File contains multiple dynamic string tables\n"
-msgstr "æÁÊÌ ÓÏÄÅÒÖÉÔ ÎÅÓËÏÌØËÏ ÔÁÂÌÉàÄÉÎÁÍÉÞÅÓËÉÈ ÓÔÒÏË\n"
+#: objdump.c:178
+#, c-format
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s <ÏÐÃÉÉ> <ÆÁÊÌ(Ù)>\n"
 
-#: readelf.c:3782
-msgid "dynamic strings"
-msgstr "ÄÉÎÁÍÉÞÅÓËÉÅ ÓÔÒÏËÉ"
+#: objdump.c:179
+#, c-format
+msgid " Display information from object <file(s)>.\n"
+msgstr " ïÔÏÂÒÁÖÁÅÔ ÉÎÆÏÒÍÁÃÉÀ ÉÚ ÏÂßÅËÔÁ <ÆÁÊÌ(Ù)>.\n"
 
-#: readelf.c:3789
-msgid "File contains multiple symtab shndx tables\n"
-msgstr "æÁÊÌ ÓÏÄÅÒÖÉÔ ÎÅÓËÏÌØËÏ ÔÁÂÌÉàsymtab shndx\n"
+#: objdump.c:180
+#, c-format
+msgid " At least one of the following switches must be given:\n"
+msgstr " äÏÌÖÅΠÂÙÔØ ÕËÁÚÁΠÐÏ ËÒÁÊÎÅÊ ÍÅÒÅ ÏÄÉΠÉÚ ÓÌÅÄÕÀÝÉÈ ËÌÀÞÅÊ:\n"
+
+#: objdump.c:181
+#, c-format
+msgid ""
+"  -a, --archive-headers    Display archive header information\n"
+"  -f, --file-headers       Display the contents of the overall file header\n"
+"  -p, --private-headers    Display object format specific file header contents\n"
+"  -h, --[section-]headers  Display the contents of the section headers\n"
+"  -x, --all-headers        Display the contents of all headers\n"
+"  -d, --disassemble        Display assembler contents of executable sections\n"
+"  -D, --disassemble-all    Display assembler contents of all sections\n"
+"  -S, --source             Intermix source code with disassembly\n"
+"  -s, --full-contents      Display the full contents of all sections requested\n"
+"  -g, --debugging          Display debug information in object file\n"
+"  -e, --debugging-tags     Display debug information using ctags style\n"
+"  -G, --stabs              Display (in raw form) any STABS info in the file\n"
+"  -W, --dwarf              Display DWARF info in the file\n"
+"  -t, --syms               Display the contents of the symbol table(s)\n"
+"  -T, --dynamic-syms       Display the contents of the dynamic symbol table\n"
+"  -r, --reloc              Display the relocation entries in the file\n"
+"  -R, --dynamic-reloc      Display the dynamic relocation entries in the file\n"
+"  @<file>                  Read options from <file>\n"
+"  -v, --version            Display this program's version number\n"
+"  -i, --info               List object formats and architectures supported\n"
+"  -H, --help               Display this information\n"
+msgstr ""
+"  -a, --archive-headers    ÷Ù×ÅÓÔÉ ÉÎÆÏÒÍÁÃÉÀ ÚÁÇÏÌÏ×ËÁ ÁÒÈÉ×Á\n"
+"  -f, --file-headers       ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ÚÁÇÏÌÏ×ËÁ ×ÓÅÇÏ ÆÁÊÌÁ\n"
+"  -p, --private-headers    ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ÚÁÇÏÌÏ×ËÁ ÆÁÊÌÁ, ÓÐÅÃÉÆÉÞÎÏÇÏ ÄÌÑ ÆÏÒÍÁÔÁ ÏÂßÅËÔÁ\n"
+"  -h, --[section-]headers  ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ÚÁÇÏÌÏ×ËÏ× ÒÁÚÄÅÌÏ×\n"
+"  -x, --all-headers        ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ×ÓÅÈ ÚÁÇÏÌÏ×ËÏ×\n"
+"  -d, --disassemble        ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ÁÓÓÅÍÂÌÅÒÁ ÉÓÐÏÌÎÑÅÍÙÈ ÒÁÚÄÅÌÏ×\n"
+"  -D, --disassemble-all    ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ÁÓÓÅÍÂÌÅÒÁ ×ÓÅÈ ÒÁÚÄÅÌÏ×\n"
+"  -S, --source             ðÅÒÅÍÅÛÁÔØ ÉÓÈÏÄÎÙÊ ËÏÄ Ó ÄÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÅÍ\n"
+"  -s, --full-contents      ÷Ù×ÅÓÔÉ ÐÏÌÎÏÅ ÓÏÄÅÒÖÉÍÏÅ ×ÓÅÈ ÚÁÐÒÏÛÅÎÎÙÈ ÒÁÚÄÅÌÏ×\n"
+"  -g, --debugging          ÷Ù×ÅÓÔÉ ÏÔÌÁÄÏÞÎÕÀ ÉÎÆÏÒÍÁÃÉÀ × ÏÂßÅËÔÎÏÍ ÆÁÊÌÅ\n"
+"  -e, --debugging-tags     ÷Ù×ÅÓÔÉ ÏÔÌÁÄÏÞÎÕÀ ÉÎÆÏÒÍÁÃÉÀ × ÓÔÉÌÅ ctags\n"
+"  -G, --stabs              ÷Ù×ÅÓÔÉ (× ÓÙÒÏÊ ÆÏÒÍÅ) ÌÀÂÕÀ ÉÎÆÏÒÍÁÃÉÀ STABS × ÆÁÊÌÅ\n"
+"  -t, --syms               ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ÔÁÂÌÉÃ(Ù) ÓÉÍ×ÏÌÏ×\n"
+"  -T, --dynamic-syms       ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ÔÁÂÌÉÃÙ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÉÍ×ÏÌÏ×\n"
+"  -r, --reloc              ÷Ù×ÅÓÔÉ ÐÕÎËÔÙ ÐÅÒÅÍÅÝÅÎÉÑ × ÆÁÊÌÅ\n"
+"  -R, --dynamic-reloc      ÷Ù×ÅÓÔÉ ÐÕÎËÔÙ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÐÅÒÅÍÅÝÅÎÉÑ × ÆÁÊÌÅ\n"
+"  @<ÆÁÊÌ>                  þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
+"  -v, --version            ÷Ù×ÅÓÔÉ ÎÏÍÅÒ ×ÅÒÓÉÉ ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ\n"
+"  -i, --info               ÷Ù×ÅÓÔÉ ÓÐÉÓÏË ÐÏÄÄÅÒÖÉ×ÁÅÍÙÈ ÆÏÒÍÁÔÏ× ÏÂßÅËÔÏ× É ÁÒÈÉÔÅËÔÕÒ\n"
+"  -H, --help               ÷Ù×ÅÓÔÉ ÜÔÕ ÉÎÆÏÒÍÁÃÉÀ\n"
 
-#: readelf.c:3828
+#: objdump.c:206
 #, c-format
 msgid ""
 "\n"
-"Section Headers:\n"
+" The following switches are optional:\n"
 msgstr ""
 "\n"
-"úÁÇÏÌÏ×ËÉ ÒÁÚÄÅÌÏ×:\n"
+" óÌÅÄÕÀÝÉÅ ËÌÀÞÉ Ñ×ÌÑÀÔÓÑ ÏÐÃÉÏÎÁÌØÎÙÍÉ:\n"
 
-#: readelf.c:3830
+#: objdump.c:207
 #, c-format
 msgid ""
+"  -b, --target=BFDNAME           Specify the target object format as BFDNAME\n"
+"  -m, --architecture=MACHINE     Specify the target architecture as MACHINE\n"
+"  -j, --section=NAME             Only display information for section NAME\n"
+"  -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+"  -EB --endian=big               Assume big endian format when disassembling\n"
+"  -EL --endian=little            Assume little endian format when disassembling\n"
+"      --file-start-context       Include context from start of file (with -S)\n"
+"  -I, --include=DIR              Add DIR to search list for source files\n"
+"  -l, --line-numbers             Include line numbers and filenames in output\n"
+"  -C, --demangle[=STYLE]         Decode mangled/processed symbol names\n"
+"                                  The STYLE, if specified, can be `auto', `gnu',\n"
+"                                  `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+"                                  or `gnat'\n"
+"  -w, --wide                     Format output for more than 80 columns\n"
+"  -z, --disassemble-zeroes       Do not skip blocks of zeroes when disassembling\n"
+"      --start-address=ADDR       Only process data whose address is >= ADDR\n"
+"      --stop-address=ADDR        Only process data whose address is <= ADDR\n"
+"      --prefix-addresses         Print complete address alongside disassembly\n"
+"      --[no-]show-raw-insn       Display hex alongside symbolic disassembly\n"
+"      --adjust-vma=OFFSET        Add OFFSET to all displayed section addresses\n"
+"      --special-syms             Include special symbols in symbol dumps\n"
 "\n"
-"Section Header:\n"
 msgstr ""
+"  -b, --target=BFD-éíñ           õËÁÚÁÔØ ÃÅÌÅ×ÏÊ ÆÏÒÍÁÔ ÏÂßÅËÔÁ ËÁË BFD-éíñ\n"
+"  -m, --architecture=íáûéîá      õËÁÚÁÔØ ÃÅÌÅ×ÕÀ ÁÒÈÉÔÅËÔÕÒÕ ËÁË íáûéîá\n"
+"  -j, --section=éíñ              ÷Ù×ÅÓÔÉ ÉÎÆÏÒÍÁÃÉÀ ÔÏÌØËÏ ÄÌÑ ÒÁÚÄÅÌÁ éíñ\n"
+"  -M, --disassembler-options=OPT ðÅÒÅÄÁÔØ ÔÅËÓÔ OPT × ÄÉÚÁÓÓÅÍÂÌÅÒ\n"
+"  -EB --endian=big               ðÒÅÄÐÏÌÏÖÉÔØ ÆÏÒÍÁÔ big endian ÐÒÉ ÄÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÉ\n"
+"  -EL --endian=little            ðÒÅÄÐÏÌÏÖÉÔØ ÆÏÒÍÁÔ little endian ÐÒÉ ÄÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÉ\n"
+"      --file-start-context       ÷ËÌÀÞÉÔØ ËÏÎÔÅËÓÔ ÉÚ ÎÁÞÁÌÁ ÆÁÊÌÁ (Ó -S)\n"
+"  -I, --include=ëáô              äÏÂÁ×ÉÔØ ëáôÁÌÏÇ × ÓÐÉÓÏË ÐÏÉÓËÁ ÉÓÈÏÄÎÙÈ ÆÁÊÌÏ×\n"
+"  -l, --line-numbers             ÷ËÌÀÞÉÔØ ÎÏÍÅÒÁ ÓÔÒÏË É ÉÍÅÎÁ ÆÁÊÌÏ× ÎÁ ×Ù×ÏÄÅ\n"
+"  -C, --demangle[=óôéìø]         äÅËÏÄÉÒÏ×ÁÔØ ÓËÏÒÒÅËÔÉÒÏ×ÁÎÎÙÅ/ÏÂÒÁÂÏÔÁÎÎÙÅ ÉÍÅÎÁ ÓÉÍ×ÏÌÏ×\n"
+"                                  óôéìø, ÅÓÌÉ ÕËÁÚÁÎ, ÍÏÖÅÔ ÂÙÔØ `auto', `gnu',\n"
+"                                  `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+"                                  ÉÌÉ `gnat'\n"
+"  -w, --wide                     æÏÒÍÁÔÉÒÏ×ÁÔØ ×Ù×ÏÄ ÄÌÑ ÂÏÌÅÅ,\9aÞÅÍ 80 ËÏÌÏÎÏË\n"
+"  -z, --disassemble-zeroes       îÅ ÐÒÏÐÕÓËÁÔØ ÂÌÏËÉ ÎÕÌÅÊ ÐÒÉ ÄÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÉ\n"
+"      --start-address=áäòåó      ïÂÒÁÂÏÔÁÔØ ÔÏÌØËÏ ÄÁÎÎÙÅ, ÁÄÒÅÓ ËÏÔÏÒÙÈ >= áäòåó\n"
+"      --stop-address=áäòåó       ïÂÒÁÂÏÔÁÔØ ÔÏÌØËÏ ÄÁÎÎÙÅ, ÁÄÒÅÓ ËÏÔÏÒÙÈ <= áäòåó\n"
+"      --prefix-addresses         ÷Ù×ÅÓÔÉ ÐÏÌÎÙÊ ÁÄÒÅÓ ÐÒÉ ÄÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÉ\n"
+"      --[no-]show-raw-insn       ÷Ù×ÅÓÔÉ hex ÐÒÉ ÓÉÍ×ÏÌÉÞÅÓËÏÍ ÄÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÉ\n"
+"      --adjust-vma=óíåýåîéå      äÏÂÁ×ÉÔØ óíåýåîéå ËÏ ×ÓÅÍ ÁÄÒÅÓÁÍ ×Ù×ÏÄÉÍÙÈ ÒÁÚÄÅÌÏ×\n"
+"      --special-syms             ÷ËÌÀÞÉÔØ ÓÐÅÃÉÁÌØÎÙÅ ÓÉÍ×ÏÌÙ × ÄÁÍÐÙ ÓÉÍ×ÏÌÏ×\n"
 "\n"
-"úÁÇÏÌÏ×ÏË ÒÁÚÄÅÌÁ:\n"
-
-#: readelf.c:3834
-#, c-format
-msgid "  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al\n"
-msgstr "  [îÍ] éÍÑ               ôÉР            áÄÒÅÓ    óÍÅÝ   òÁÚÍ   ES æÌÇ óÓ éÎÆ Al\n"
-
-#: readelf.c:3837
-#, c-format
-msgid "  [Nr] Name              Type            Address          Off    Size   ES Flg Lk Inf Al\n"
-msgstr "  [îÍ] éÍÑ               ôÉР            áÄÒÅÓ            óÍÅÝ   òÁÚÍ   ES æÌÇ ìË éÎÆ Al\n"
-
-#: readelf.c:3840
-#, c-format
-msgid "  [Nr] Name              Type             Address           Offset\n"
-msgstr "  [îÍ] éÍÑ               ôÉР             áÄÒÅÓ             óÍÅÝÅÎÉÅ\n"
 
-#: readelf.c:3841
+#: objdump.c:389
 #, c-format
-msgid "       Size              EntSize          Flags  Link  Info  Align\n"
-msgstr "       òÁÚÍÅÒ            òÁÚÍ.Ent         æÌÁÇÉ  óÓÙÌË éÎÆÏ  ÷ÙÒÁ×Î\n"
+msgid "Sections:\n"
+msgstr "òÁÚÄÅÌÙ:\n"
 
-#: readelf.c:3936
+#: objdump.c:392 objdump.c:396
 #, c-format
-msgid ""
-"Key to Flags:\n"
-"  W (write), A (alloc), X (execute), M (merge), S (strings)\n"
-"  I (info), L (link order), G (group), x (unknown)\n"
-"  O (extra OS processing required) o (OS specific), p (processor specific)\n"
-msgstr ""
-"ïÂÏÚÎÁÞÅÎÉÑ ÆÌÁÇÏ×:\n"
-"  W (ÚÁÐÉÓØ), A (ÎÁÚÎÁÞ), X (ÉÓÐÏÌÎÑÅÍÙÊ), M (ÓÌÉÑÎÉÅ), S (ÓÔÒÏËÉ)\n"
-"  I (ÉÎÆÏ), L (ÐÏÒÑÄÏË ÓÓÙÌÏË), G (ÇÒÕÐÐÁ), x (ÎÅÉÚ×.)\n"
-"  O (ÔÒÅÂ. ÄÏÐ. ÏÂÒÁÂÏÔËÁ ïó) o (ÓÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ïó), p (ÓÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÐÒÏÃÅÓÓÏÒÁ)\n"
+msgid "Idx Name          Size      VMA       LMA       File off  Algn"
+msgstr "éÎÄ éÍÑ           òÁÚÍÅÒ    VMA       LMA       æÁÊÌ      ÷ÙÒÁ×"
 
-#: readelf.c:3954
+#: objdump.c:398
 #, c-format
-msgid "[<unknown>: 0x%x]"
-msgstr "[<ÎÅÉÚ×ÅÓÔÎÙÊ>: 0x%x]"
-
-#: readelf.c:3984
-msgid "Section headers are not available!\n"
-msgstr "îÅÄÏÓÔÕÐÎÙ ÚÁÇÏÌÏ×ËÉ ÒÁÚÄÅÌÁ!\n"
+msgid "Idx Name          Size      VMA               LMA               File off  Algn"
+msgstr "éÎÄ éÍÑ           òÁÚÍÅÒ    VMA               LMA               æÁÊÌ      ÷ÙÒÁ×"
 
-#: readelf.c:4008
+#: objdump.c:402
 #, c-format
-msgid ""
-"\n"
-"There are no section groups in this file.\n"
-msgstr ""
-"\n"
-"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÇÒÕÐРÒÁÚÄÅÌÏ×.\n"
+msgid "  Flags"
+msgstr "  æÌÁÇÉ"
 
-#: readelf.c:4042
+#: objdump.c:404
 #, c-format
-msgid "Bad sh_link in group section `%s'\n"
-msgstr "îÅ×ÅÒÎÙÊ sh_link × ÒÁÚÄÅÌÅ ÇÒÕÐР`%s'\n"
+msgid "  Pg"
+msgstr "  óÔÒ"
 
-#: readelf.c:4061
+#: objdump.c:447
 #, c-format
-msgid "Bad sh_info in group section `%s'\n"
-msgstr "îÅ×ÅÒÎÙÊ sh_info × ÒÁÚÄÅÌÅ ÇÒÕÐР`%s'\n"
-
-#: readelf.c:4085 readelf.c:6947
-msgid "section data"
-msgstr "ÄÁÎÎÙÅ ÒÁÚÄÅÌÁ"
+msgid "%s: not a dynamic object"
+msgstr "%s: ÎÅ ÄÉÎÁÍÉÞÅÓËÉÊ ÏÂßÅËÔ"
 
-#: readelf.c:4097
+#: objdump.c:1735
 #, c-format
-msgid "   [Index]    Name\n"
-msgstr "   [éÎÄÅËÓ]   éÍÑ\n"
+msgid "Disassembly of section %s:\n"
+msgstr "äÉÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÅ ÒÁÚÄÅÌÁ %s:\n"
 
-#: readelf.c:4114
+#: objdump.c:1897
 #, c-format
-msgid "section [%5u] already in group section [%5u]\n"
-msgstr "ÒÁÚÄÅÌ [%5u] ÕÖÅ ÎÁÈÏÄÉÔÓÑ × ÒÁÚÄÅÌÅ ÇÒÕÐР[%5u]\n"
+msgid "Can't use supplied machine %s"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÒÅÄÓÔÁ×ÌÅÎÎÕÀ ÍÁÛÉÎÕ %s"
 
-#: readelf.c:4127
+#: objdump.c:1916
 #, c-format
-msgid "section 0 in group section [%5u]\n"
-msgstr "ÒÁÚÄÅÌ 0 × ÒÁÚÄÅÌÅ ÇÒÕÐР[%5u]\n"
+msgid "Can't disassemble for architecture %s\n"
+msgstr "äÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÅ ÎÅ×ÏÚÍÏÖÎÏ ÄÌÑ ÁÒÈÉÔÅËÔÕÒÙ %s\n"
 
-#: readelf.c:4224
+#: objdump.c:2006
 #, c-format
 msgid ""
 "\n"
-"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+"Can't get contents for section '%s'.\n"
 msgstr ""
 "\n"
-"'%s' ÒÁÚÄÅÌ ÐÅÒÅÍÅÝÅÎÉÑ ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%lx ÓÏÄÅÒÖÉÔ %ld ÂÁÊÔ:\n"
+"îÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÓÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ '%s'.\n"
 
-#: readelf.c:4236
+#: objdump.c:2143
 #, c-format
 msgid ""
+"No %s section present\n"
 "\n"
-"There are no dynamic relocations in this file.\n"
 msgstr ""
+"òÁÚÄÅÌ %s ÏÔÓÕÔÓÔ×ÕÅÔ\n"
 "\n"
-"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÄÉÎÁÍÉÞÅÓËÉÈ ÐÅÒÅÍÅÝÅÎÉÊ .\n"
 
-#: readelf.c:4260
+#: objdump.c:2152
+#, c-format
+msgid "Reading %s section of %s failed: %s"
+msgstr "þÔÅÎÉÅ %s ÒÁÚÄÅÌÁ %s ÚÁ×ÅÒÛÉÌÏÓØ ÎÅÕÄÁÞÅÊ: %s"
+
+#: objdump.c:2196
 #, c-format
 msgid ""
+"Contents of %s section:\n"
 "\n"
-"Relocation section "
 msgstr ""
+"óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ %s:\n"
 "\n"
-"òÁÚÄÅÌ ÐÅÒÅÍÅÝÅÎÉÑ "
 
-#: readelf.c:4265 readelf.c:4666 readelf.c:4680 readelf.c:5025
+#: objdump.c:2323
 #, c-format
-msgid "'%s'"
-msgstr "'%s'"
+msgid "architecture: %s, "
+msgstr "ÁÒÈÉÔÅËÔÕÒÁ: %s, "
 
-#: readelf.c:4267 readelf.c:4682 readelf.c:5027
+#: objdump.c:2326
 #, c-format
-msgid " at offset 0x%lx contains %lu entries:\n"
-msgstr " ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%lx ÓÏÄÅÒÖÉÔ %lu ÐÕÎËÔÏ×:\n"
+msgid "flags 0x%08x:\n"
+msgstr "ÆÌÁÇÉ 0x%08x:\n"
 
-#: readelf.c:4308
+#: objdump.c:2340
 #, c-format
 msgid ""
 "\n"
-"There are no relocations in this file.\n"
+"start address 0x"
 msgstr ""
 "\n"
-"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÐÅÒÅÍÅÝÅÎÉÊ.\n"
-
-#: readelf.c:4482 readelf.c:4862
-msgid "unwind table"
-msgstr "ÒÁÚ×ÅÒÎÕÔÁÑ ÔÁÂÌÉÃÁ"
+"ÎÁÞÁÌØÎÙÊ ÁÄÒÅÓ 0x"
 
-#: readelf.c:4540 readelf.c:4959
+#: objdump.c:2380
 #, c-format
-msgid "Skipping unexpected relocation type %s\n"
-msgstr "ðÒÏÐÕÓËÁÅÔÓÑ ÎÅÏÖÉÄÁÎÎÙÊ ÔÉРÐÅÒÅÍÅÝÅÎÉÑ %s\n"
+msgid "Contents of section %s:\n"
+msgstr "óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ %s:\n"
 
-#: readelf.c:4598 readelf.c:5018 readelf.c:5069
+#: objdump.c:2505
 #, c-format
-msgid ""
-"\n"
-"There are no unwind sections in this file.\n"
-msgstr ""
-"\n"
-"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÒÁÚ×ÅÒÎÕÔÙÈ ÒÁÚÄÅÌÏ×.\n"
+msgid "no symbols\n"
+msgstr "ÎÅÔ ÓÉÍ×ÏÌÏ×\n"
 
-#: readelf.c:4661
+#: objdump.c:2512
 #, c-format
-msgid ""
-"\n"
-"Could not find unwind info section for "
-msgstr ""
-"\n"
-"îÅ×ÏÚÍÏÖÎÏ ÂÙÌÏ ÎÁÊÔÉ ÒÁÚÄÅÌ Ó ÒÁÚ×ÅÒÎÕÔÏÊ ÉÎÆÏÒÍÁÃÉÅÊ ÄÌÑ"
-
-#: readelf.c:4673
-msgid "unwind info"
-msgstr "ÒÁÚ×ÅÒÎÕÔÁÑ ÉÎÆÏÒÍÁÃÉÑ"
+msgid "no information for symbol number %ld\n"
+msgstr "ÎÅÔ ÉÎÆÏÒÍÁÃÉÉ Ï ÓÉÍ×ÏÌÅ ÎÏÍÅÒ %ld\n"
 
-#: readelf.c:4675 readelf.c:5024
+#: objdump.c:2515
 #, c-format
-msgid ""
-"\n"
-"Unwind section "
-msgstr ""
-"\n"
-"òÁÚ×ÅÒÎÕÔÙÊ ÒÁÚÄÅÌ "
-
-#: readelf.c:5228 readelf.c:5272
-msgid "dynamic section"
-msgstr "ÄÉÎÁÍÉÞÅÓËÉÊ ÒÁÚÄÅÌ"
+msgid "could not determine the type of symbol number %ld\n"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÔÉРÓÉÍ×ÏÌÁ ÎÏÍÅÒ %ld\n"
 
-#: readelf.c:5349
+#: objdump.c:2788
 #, c-format
 msgid ""
 "\n"
-"There is no dynamic section in this file.\n"
+"%s:     file format %s\n"
 msgstr ""
 "\n"
-"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÒÁÚÄÅÌÁ.\n"
-
-#: readelf.c:5387
-msgid "Unable to seek to end of file!"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ ÐÏÉÓË ÄÏ ËÏÎÃÁ ÆÁÊÌÁ!"
+"%s:     ÆÏÒÍÁÔ ÆÁÊÌÁ %s\n"
 
-#: readelf.c:5400
-msgid "Unable to determine the number of symbols to load\n"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÞÉÓÌÏ ÚÁÇÒÕÖÁÅÍÙÈ ÓÉÍ×ÏÌÏ×\n"
+#: objdump.c:2845
+#, c-format
+msgid "%s: printing debugging information failed"
+msgstr "%s: ×Ù×ÏÄ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ"
 
-#: readelf.c:5435
-msgid "Unable to seek to end of file\n"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ ÐÏÉÓË ÄÏ ËÏÎÃÁ ÆÁÊÌÁ\n"
+#: objdump.c:2936
+#, c-format
+msgid "In archive %s:\n"
+msgstr "÷ ÁÒÈÉ×Å %s:\n"
 
-#: readelf.c:5442
-msgid "Unable to determine the length of the dynamic string table\n"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÄÌÉÎÕ ÔÁÂÌÉÃÙ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÔÒÏË\n"
+#: objdump.c:3058
+msgid "unrecognized -E option"
+msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ ÏÐÃÉÑ -E"
 
-#: readelf.c:5447
-msgid "dynamic string table"
-msgstr "ÔÁÂÌÉÃÁ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÔÒÏË"
+#: objdump.c:3069
+#, c-format
+msgid "unrecognized --endian type `%s'"
+msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ --endian ÔÉР`%s'"
 
-#: readelf.c:5482
-msgid "symbol information"
-msgstr "ÉÎÆÏÒÍÁÃÉÑ Ï ÓÉÍ×ÏÌÅ"
+#: rdcoff.c:196
+#, c-format
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr "parse_coff_type: ðÌÏÈÏÊ ËÏÄ ÔÉÐÁ 0x%x"
 
-#: readelf.c:5507
+#: rdcoff.c:404 rdcoff.c:509 rdcoff.c:697
 #, c-format
-msgid ""
-"\n"
-"Dynamic section at offset 0x%lx contains %u entries:\n"
-msgstr ""
-"\n"
-"äÉÎÁÍÉÞÅÓËÉÊ ÒÁÚÄÅÌ ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%lx ÓÏÄÅÒÖÉÔ %u ÐÕÎËÔÏ×:\n"
+msgid "bfd_coff_get_syment failed: %s"
+msgstr "bfd_coff_get_syment ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ: %s"
 
-#: readelf.c:5510
+#: rdcoff.c:420 rdcoff.c:717
 #, c-format
-msgid "  Tag        Type                         Name/Value\n"
-msgstr "  ôÅÇ        ôÉР                         éÍÑ/úÎÁÞ\n"
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr "bfd_coff_get_auxent ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ: %s"
 
-#: readelf.c:5546
+#: rdcoff.c:784
 #, c-format
-msgid "Auxiliary library"
-msgstr "÷ÓÐÏÍÏÇÁÔÅÌØÎÁÑ ÂÉÂÌÉÏÔÅËÁ"
+msgid "%ld: .bf without preceding function"
+msgstr "%ld: .bf ÂÅÚ ÐÒÅÄÛÅÓÔ×ÕÀÝÅÊ ÆÕÎËÃÉÉ"
 
-#: readelf.c:5550
+#: rdcoff.c:834
 #, c-format
-msgid "Filter library"
-msgstr "âÉÂÌÉÏÔÅËÁ ÆÉÌØÔÒÏ×"
+msgid "%ld: unexpected .ef\n"
+msgstr "%ld: ÎÅÏÖÉÄÁÎÎÙÊ .ef\n"
 
-#: readelf.c:5554
+#: rddbg.c:85
 #, c-format
-msgid "Configuration file"
-msgstr "æÁÊÌ ÎÁÓÔÒÏÊËÉ"
+msgid "%s: no recognized debugging information"
+msgstr "%s: ÎÅÔ ÒÁÓÐÏÚÎÁÎÎÏÊ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ"
 
-#: readelf.c:5558
+#: rddbg.c:394
 #, c-format
-msgid "Dependency audit library"
-msgstr "âÉÂÌÉÏÔÅËÁ ÁÕÄÉÔÁ ÚÁ×ÉÓÉÍÏÓÔÅÊ"
+msgid "Last stabs entries before error:\n"
+msgstr "ðÏÓÌÅÄÎÉÅ ÐÕÎËÔÙ stabs ÐÅÒÅÄ ÏÛÉÂËÏÊ:\n"
 
-#: readelf.c:5562
+#: readelf.c:264
 #, c-format
-msgid "Audit library"
-msgstr "âÉÂÌÉÏÔÅËÁ ÁÕÄÉÔÁ"
+msgid "Unable to seek to 0x%lx for %s\n"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ 0x%lx ÄÌÑ %s\n"
 
-#: readelf.c:5580 readelf.c:5608 readelf.c:5636
+#: readelf.c:279
 #, c-format
-msgid "Flags:"
-msgstr "æÌÁÇÉ:"
+msgid "Out of memory allocating 0x%lx bytes for %s\n"
+msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ ÐÒÉ ÒÁÓÐÒÅÄÅÌÅÎÉÉ 0x%lx ÂÁÊÔ ÄÌÑ %s\n"
 
-#: readelf.c:5583 readelf.c:5611 readelf.c:5638
+#: readelf.c:289
 #, c-format
-msgid " None\n"
-msgstr " îÅÔ\n"
+msgid "Unable to read in 0x%lx bytes of %s\n"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÒÏÞÉÔÁÔØ 0x%lx ÂÁÊÔ ÉÚ %s\n"
+
+#: readelf.c:623
+msgid "Don't know about relocations on this machine architecture\n"
+msgstr "îÅÉÚ×ÅÓÔÎÏ Ï ÐÅÒÅÍÅÝÅÎÉÑÈ ÄÌÑ ÜÔÏÊ ÁÒÈÉÔÅËÔÕÒÙ ÍÁÛÉÎÙ\n"
+
+#: readelf.c:643 readelf.c:671 readelf.c:715 readelf.c:743
+msgid "relocs"
+msgstr "ÐÅÒÅÍÅÝÅÎÉÑ"
+
+#: readelf.c:654 readelf.c:682 readelf.c:726 readelf.c:754
+msgid "out of memory parsing relocs"
+msgstr "ÎÅÈ×ÁÔËÁ ÐÁÍÑÔÉ ÐÒÉ ÒÁÚÂÏÒÅ ÐÅÒÅÍÅÝÅÎÉÊ"
 
-#: readelf.c:5759
+#: readelf.c:808
 #, c-format
-msgid "Shared library: [%s]"
-msgstr "óÏ×Í. ÉÓÐ. ÂÉÂÌÉÏÔÅËÁ: [%s]"
+msgid " Offset     Info    Type                Sym. Value  Symbol's Name + Addend\n"
+msgstr " óÍÅÝÅÎÉÅ   éÎÆÏ    ôÉР                úÎÁÞ.ÓÉÍ×.  éÍÑ ÓÉÍ×ÏÌÁ + Addend\n"
 
-#: readelf.c:5762
+#: readelf.c:810
 #, c-format
-msgid " program interpreter"
-msgstr " ÉÎÔÅÒÐÒÅÔÁÔÏÒ ÐÒÏÇÒÁÍÍÙ"
+msgid " Offset     Info    Type            Sym.Value  Sym. Name + Addend\n"
+msgstr " óÍÅÝÅÎÉÅ   éÎÆÏ    ôÉР            úÎÁÞ.ÓÉÍ×  éÍÑ ÓÉÍ×. + Addend\n"
 
-#: readelf.c:5766
+#: readelf.c:815
 #, c-format
-msgid "Library soname: [%s]"
-msgstr "âÉÂÌÉÏÔÅËÁ soname: [%s]"
+msgid " Offset     Info    Type                Sym. Value  Symbol's Name\n"
+msgstr " óÍÅÝÅÎÉÅ   éÎÆÏ    ôÉР                úÎÁÞ.ÓÉÍ×   éÍÑ ÓÉÍ×ÏÌÁ\n"
 
-#: readelf.c:5770
+#: readelf.c:817
 #, c-format
-msgid "Library rpath: [%s]"
-msgstr "âÉÂÌÉÏÔÅËÁ rpath: [%s]"
+msgid " Offset     Info    Type            Sym.Value  Sym. Name\n"
+msgstr " óÍÅÝÅÎÉÅ   éÎÆÏ    ôÉР            úÎÁÞ.ÓÉÍ×  éÍÑ ÓÉÍ×.\n"
 
-#: readelf.c:5774
+#: readelf.c:825
 #, c-format
-msgid "Library runpath: [%s]"
-msgstr "âÉÂÌÉÏÔÅËÁ runpath: [%s]"
+msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name + Addend\n"
+msgstr "    óÍÅÝÅÎÉÅ           éÎÆÏ             ôÉР               úÎÁÞÅÎÉÅ ÓÉÍ×.  éÍÑ ÓÉÍ×ÏÌÁ + Addend\n"
 
-#: readelf.c:5837
+#: readelf.c:827
 #, c-format
-msgid "Not needed object: [%s]\n"
-msgstr "îÅÎÕÖÎÙÊ ÏÂßÅËÔ: [%s]\n"
+msgid "  Offset          Info           Type           Sym. Value    Sym. Name + Addend\n"
+msgstr "  óÍÅÝÅÎÉÅ        éÎÆÏ           ôÉР           úÎÁÞ.ÓÉÍ×.    éÍÑ ÓÉÍ×. + Addend\n"
 
-#: readelf.c:5951
+#: readelf.c:832
 #, c-format
-msgid ""
-"\n"
-"Version definition section '%s' contains %ld entries:\n"
-msgstr ""
-"\n"
-"òÁÚÄÅÌ ÏÐÉÓÁÎÉÑ ×ÅÒÓÉÉ '%s' ÓÏÄÅÒÖÉÔ %ld ÐÕÎËÔÏ×:\n"
+msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name\n"
+msgstr "    óÍÅÝÅÎÉÅ           éÎÆÏ             ôÉР               úÎÁÞÅÎÉÅ ÓÉÍ×.  éÍÑ ÓÉÍ×ÏÌÁ\n"
 
-#: readelf.c:5954
+#: readelf.c:834
 #, c-format
-msgid "  Addr: 0x"
-msgstr "  áÄÒÅÓ: 0x"
+msgid "  Offset          Info           Type           Sym. Value    Sym. Name\n"
+msgstr "  óÍÅÝÅÎÉÅ        éÎÆÏ           ôÉР           úÎÁÞ.ÓÉÍ×.    éÍÑ ÓÉÍ×.\n"
 
-#: readelf.c:5956 readelf.c:6148
+#: readelf.c:1127 readelf.c:1129 readelf.c:1238 readelf.c:1240 readelf.c:1249
+#: readelf.c:1251
 #, c-format
-msgid "  Offset: %#08lx  Link: %lx (%s)\n"
-msgstr "  óÍÅÝÅÎÉÅ: %#08lx  óÓÙÌËÁ: %lx (%s)\n"
-
-#: readelf.c:5961
-msgid "version definition section"
-msgstr "ÒÁÚÄÅÌ ÏÐÉÓÁÎÉÑ ×ÅÒÓÉÉ"
+msgid "unrecognized: %-7lx"
+msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ: %-7lx"
 
-#: readelf.c:5987
+#: readelf.c:1154
 #, c-format
-msgid "  %#06x: Rev: %d  Flags: %s"
-msgstr "  %#06x: òÅ×ÉÚÉÑ: %d  æÌÁÇÉ: %s"
+msgid "<unknown addend: %lx>"
+msgstr "<ÎÅÉÚ×ÅÓÔÎÙÊ addend: %lx>"
 
-#: readelf.c:5990
+#: readelf.c:1210
 #, c-format
-msgid "  Index: %d  Cnt: %d  "
-msgstr "  éÎÄÅËÓ: %d  óÞÅÔÞÉË: %d  "
+msgid "<string table index: %3ld>"
+msgstr "<ÉÎÄÅËÓ ÔÁÂÌÉÃÙ ÓÔÒÏË: %3ld>"
 
-#: readelf.c:6001
+#: readelf.c:1212
 #, c-format
-msgid "Name: %s\n"
-msgstr "éÍÑ: %s\n"
+msgid "<corrupt string table index: %3ld>"
+msgstr "<ÐÏ×ÒÅÖÄÅΠÉÎÄÅËÓ ÔÁÂÌÉÃÙ ÓÔÒÏË: %3ld>"
 
-#: readelf.c:6003
+#: readelf.c:1522
 #, c-format
-msgid "Name index: %ld\n"
-msgstr "éÎÄÅËÓ ÉÍÅÎÉ: %ld\n"
+msgid "Processor Specific: %lx"
+msgstr "óÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÐÒÏÃÅÓÓÏÒÁ: %lx"
 
-#: readelf.c:6018
+#: readelf.c:1543
 #, c-format
-msgid "  %#06x: Parent %d: %s\n"
-msgstr "  %#06x: òÏÄÉÔÅÌØ %d: %s\n"
+msgid "Operating System specific: %lx"
+msgstr "óÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÏÐÅÒÁÃÉÏÎÎÏÊ ÓÉÓÔÅÍÙ: %lx"
 
-#: readelf.c:6021
+#: readelf.c:1547 readelf.c:2349
 #, c-format
-msgid "  %#06x: Parent %d, name index: %ld\n"
-msgstr "  %#06x: òÏÄÉÔÅÌØ %d, ÉÎÄÅËÓ ÉÍÅÎÉ: %ld\n"
+msgid "<unknown>: %lx"
+msgstr "<ÎÅÉÚ×ÅÓÔÎÙÊ>: %lx"
 
-#: readelf.c:6040
-#, c-format
-msgid ""
-"\n"
-"Version needs section '%s' contains %ld entries:\n"
-msgstr ""
-"\n"
-"òÁÚÄÅÌ ÚÁ×ÉÓÉÍÏÓÔÅÊ ×ÅÒÓÉÉ '%s' ÓÏÄÅÒÖÉÔ %ld ÐÕÎËÔÏ×:\n"
+#: readelf.c:1560
+msgid "NONE (None)"
+msgstr "îåô (îÅÔ)"
 
-#: readelf.c:6043
-#, c-format
-msgid " Addr: 0x"
-msgstr " áÄÒÅÓ: 0x"
+#: readelf.c:1561
+msgid "REL (Relocatable file)"
+msgstr "REL (ðÅÒÅÍÅÝÁÅÍÙÊ ÆÁÊÌ)"
 
-#: readelf.c:6045
-#, c-format
-msgid "  Offset: %#08lx  Link to section: %ld (%s)\n"
-msgstr "  óÍÅÝÅÎÉÅ: %#08lx  óÓÙÌËÁ ÎÁ ÒÁÚÄÅÌ: %ld (%s)\n"
+#: readelf.c:1562
+msgid "EXEC (Executable file)"
+msgstr "EXEC (éÓÐÏÌÎÑÅÍÙÊ ÆÁÊÌ)"
 
-#: readelf.c:6050
-msgid "version need section"
-msgstr "ÒÁÚÄÅÌ ÚÁ×ÉÓÉÍÏÓÔÅÊ ×ÅÒÓÉÉ"
+#: readelf.c:1563
+msgid "DYN (Shared object file)"
+msgstr "DYN (óÏ×Í. ÉÓÐ. ÏÂßÅËÔÎÙÊ ÆÁÊÌ)"
 
-#: readelf.c:6072
-#, c-format
-msgid "  %#06x: Version: %d"
-msgstr "  %#06x: ÷ÅÒÓÉÑ: %d"
+#: readelf.c:1564
+msgid "CORE (Core file)"
+msgstr "CORE (ïÓÎÏ×ÎÏÊ ÆÁÊÌ)"
 
-#: readelf.c:6075
+#: readelf.c:1568
 #, c-format
-msgid "  File: %s"
-msgstr "  æÁÊÌ: %s"
+msgid "Processor Specific: (%x)"
+msgstr "óÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÐÒÏÃÅÓÓÏÒÁ: (%x)"
 
-#: readelf.c:6077
+#: readelf.c:1570
 #, c-format
-msgid "  File: %lx"
-msgstr "  æÁÊÌ: %lx"
+msgid "OS Specific: (%x)"
+msgstr "óÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ïó: (%x)"
 
-#: readelf.c:6079
+#: readelf.c:1572 readelf.c:1681 readelf.c:2541
 #, c-format
-msgid "  Cnt: %d\n"
-msgstr "  óÞÅÔÞÉË: %d\n"
+msgid "<unknown>: %x"
+msgstr "<ÎÅÉÚ×ÅÓÔÎÙÊ>: %x"
 
-#: readelf.c:6097
-#, c-format
-msgid "  %#06x:   Name: %s"
-msgstr "  %#06x:   éÍÑ: %s"
+#: readelf.c:1584
+msgid "None"
+msgstr "îÅÔ"
 
-#: readelf.c:6100
+#: readelf.c:2186
+msgid "Standalone App"
+msgstr "éÚÏÌÉÒÏ×ÁÎÎÏÅ ÐÒÉÌÏÖÅÎÉÅ"
+
+#: readelf.c:2189 readelf.c:2948 readelf.c:2964
 #, c-format
-msgid "  %#06x:   Name index: %lx"
-msgstr "  %#06x:   éÎÄÅËÓ ÉÍÅÎÉ: %lx"
+msgid "<unknown: %x>"
+msgstr "<ÎÅÉÚ×ÅÓÔÎÙÊ: %x>"
 
-#: readelf.c:6103
+#: readelf.c:2586
 #, c-format
-msgid "  Flags: %s  Version: %d\n"
-msgstr "  æÌÁÇÉ: %s  ÷ÅÒÓÉÑ: %d\n"
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: readelf <ÏÐÃÉÉ> elf-ÆÁÊÌ(Ù)\n"
 
-#: readelf.c:6139
-msgid "version string table"
-msgstr "ÔÁÂÌÉÃÁ ÓÔÒÏË ×ÅÒÓÉÉ"
+#: readelf.c:2587
+#, c-format
+msgid " Display information about the contents of ELF format files\n"
+msgstr " ïÔÏÂÒÁÖÁÅÔ ÉÎÆÏÒÍÁÃÉÀ Ï ÓÏÄÅÒÖÉÍÏÍ ÆÁÊÌÏ× × ÆÏÒÍÁÔÅ ELF\n"
 
-#: readelf.c:6143
+#: readelf.c:2588
 #, c-format
 msgid ""
-"\n"
-"Version symbols section '%s' contains %d entries:\n"
+" Options are:\n"
+"  -a --all               Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+"  -h --file-header       Display the ELF file header\n"
+"  -l --program-headers   Display the program headers\n"
+"     --segments          An alias for --program-headers\n"
+"  -S --section-headers   Display the sections' header\n"
+"     --sections          An alias for --section-headers\n"
+"  -g --section-groups    Display the section groups\n"
+"  -t --section-details   Display the section details\n"
+"  -e --headers           Equivalent to: -h -l -S\n"
+"  -s --syms              Display the symbol table\n"
+"      --symbols          An alias for --syms\n"
+"  -n --notes             Display the core notes (if present)\n"
+"  -r --relocs            Display the relocations (if present)\n"
+"  -u --unwind            Display the unwind info (if present)\n"
+"  -d --dynamic           Display the dynamic section (if present)\n"
+"  -V --version-info      Display the version sections (if present)\n"
+"  -A --arch-specific     Display architecture specific information (if any).\n"
+"  -D --use-dynamic       Use the dynamic section info when displaying symbols\n"
+"  -x --hex-dump=<number> Dump the contents of section <number>\n"
+"  -w[liaprmfFsoR] or\n"
+"  --debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n"
+"                         Display the contents of DWARF2 debug sections\n"
 msgstr ""
-"\n"
-"òÁÚÄÅÌ ÓÉÍ×ÏÌÏ× ×ÅÒÓÉÉ '%s' ÓÏÄÅÒÖÉÔ %d ÐÕÎËÔÏ×:\n"
+" ïÐÃÉÉ:\n"
+"  -a --all               üË×É×ÁÌÅÎÔÎÁ: -h -l -S -s -r -d -V -A -I\n"
+"  -h --file-header       ÷Ù×ÏÄ ÚÁÇÏÌÏ×ËÁ ÆÁÊÌÁ ELF\n"
+"  -l --program-headers   ÷Ù×ÏÄ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ\n"
+"     --segments          áÌÉÁÓ ÄÌÑ --program-headers\n"
+"  -S --section-headers   ÷Ù×ÏÄ ÚÁÇÏÌÏ×ËÁ ÒÁÚÄÅÌÏ×\n"
+"     --sections          áÌÉÁÓ ÄÌÑ --section-headers\n"
+"  -g --section-groups    ÷Ù×ÏÄ ÇÒÕÐРÒÁÚÄÅÌÏ×\n"
+"  -t --section-details   ÷Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ Ï ÒÁÚÄÅÌÅ\n"
+"  -e --headers           üË×É×ÁÌÅÎÔÎÁ: -h -l -S\n"
+"  -s --syms              ÷Ù×ÏÄ ÔÁÂÌÉÃÙ ÓÉÍ×ÏÌÏ×\n"
+"     --symbols           áÌÉÁÓ ÄÌÑ --syms\n"
+"  -n --notes             ÷Ù×ÏÄ ÏÓÎÏ×ÎÙÈ ÚÁÐÉÓÅÊ (ÅÓÌÉ ÉÍÅÀÔÓÑ)\n"
+"  -r --relocs            ÷Ù×ÏÄ ÐÅÒÅÍÅÝÅÎÉÊ (ÅÓÌÉ ÉÍÅÀÔÓÑ)\n"
+"  -u --unwind            ÷Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ Ï ÒÁÓÐÉÓÙ×ÁÎÉÉ (ÅÓÌÉ ÉÍÅÅÔÓÑ)\n"
+"  -d --dynamic           ÷Ù×ÏÄ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÓÅÇÍÅÎÔÁ (ÅÓÌÉ ÉÍÅÅÔÓÑ)\n"
+"  -V --version-info      ÷Ù×ÏÄ ÒÁÚÄÅÌÏ× Ó ×ÅÒÓÉÅÊ (ÅÓÌÉ ÉÍÅÀÔÓÑ)\n"
+"  -A --arch-specific     ÷Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ, ÓÐÅÃÉÆÉÞÎÏÊ ÄÌÑ ÁÒÈÉÔÅËÔÕÒÙ (ÅÓÌÉ ÉÍÅÅÔÓÑ).\n"
+"  -D --use-dynamic       éÓÐÏÌØÚÏ×ÁÎÉÅ ÄÉÎÁÍÉÞÅÓËÏÊ ÉÎÆÏÒÍÁÃÉÉ ÒÁÚÄÅÌÁ ÐÒÉ ×Ù×ÏÄÅ ÓÉÍ×ÏÌÏ×\n"
+"  -x --hex-dump=<ÎÏÍÅÒ>  äÁÍРÓÏÄÅÒÖÉÍÏÇÏ ÒÁÚÄÅÌÁ <ÎÏÍÅÒ>\n"
+"  -w[liaprmfFsoR] ÉÌÉ\n"
+"  --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str,=loc,=Ranges]\n"
+"                         ÷Ù×ÏÄ ÓÏÄÅÒÖÉÍÏÇÏ ÏÔÌÁÄÏÞÎÙÈ ÒÁÚÄÅÌÏ× DWARF2\n"
 
-#: readelf.c:6146
+#: readelf.c:2612
 #, c-format
-msgid " Addr: "
-msgstr " áÄÒÅÓ: "
-
-#: readelf.c:6156
-msgid "version symbol data"
-msgstr "ÄÁÎÎÙÅ ÓÉÍ×ÏÌÁ ×ÅÒÓÉÉ"
-
-#: readelf.c:6183
-msgid "   0 (*local*)    "
-msgstr "   0 (*ÌÏËÁÌØÎÙÊ*)    "
+msgid ""
+"  -i --instruction-dump=<number>\n"
+"                         Disassemble the contents of section <number>\n"
+msgstr ""
+"  -i --instruction-dump=<ÎÏÍÅÒ>\n"
+"                         äÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÅ ÓÏÄÅÒÖÉÍÏÇÏ ÒÁÚÄÅÌÁ <ÎÏÍÅÒ>\n"
 
-#: readelf.c:6187
-msgid "   1 (*global*)   "
-msgstr "   1 (*ÇÌÏÂÁÌØÎÙÊ*)   "
+#: readelf.c:2616
+#, c-format
+msgid ""
+"  -I --histogram         Display histogram of bucket list lengths\n"
+"  -W --wide              Allow output width to exceed 80 characters\n"
+"  @<file>                Read options from <file>\n"
+"  -H --help              Display this information\n"
+"  -v --version           Display the version number of readelf\n"
+msgstr ""
+"  -I --histogram         ÷Ù×ÏÄ ÇÉÓÔÏÇÒÁÍÍÙ ÄÌÉΠÓÐÉÓËÁ ÕÞÁÓÔËÁ ÐÁÍÑÔÉ\n"
+"  -W --wide              òÁÚÒÅÛÅÎÉÅ ÛÉÒÉÎÙ ×Ù×ÏÄÁ ÂÏÌÅÅ 80 ÓÉÍ×ÏÌÏ×\n"
+"  @<ÆÁÊÌ>                þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
+"  -H --help              ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n"
+"  -v --version           ÷Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ readelf\n"
 
-#: readelf.c:6223 readelf.c:6677
-msgid "version need"
-msgstr "ÚÁ×ÉÓÉÍÏÓÔØ ×ÅÒÓÉÉ"
+#: readelf.c:2642 readelf.c:9180
+msgid "Out of memory allocating dump request table."
+msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ ÐÒÉ ÒÁÚÍÅÝÅÎÉÉ ÄÁÍÐÁ ÔÁÂÌÉÃÙ ÚÁÐÒÏÓÁ."
 
-#: readelf.c:6233
-msgid "version need aux (2)"
-msgstr "ÚÁ×ÉÓÉÍÏÓÔØ ×ÅÒÓÉÉ aux (2)"
+#: readelf.c:2816 readelf.c:2884
+#, c-format
+msgid "Unrecognized debug option '%s'\n"
+msgstr "îÅÒÁÓÐÏÚÎÁÎÎÁÑ ÏÔÌÁÄÏÞÎÁÑ ÏÐÃÉÑ '%s'\n"
 
-#: readelf.c:6275 readelf.c:6740
-msgid "version def"
-msgstr "ÏÐÉÓÁÎÉÅ ×ÅÒÓÉÉ"
+#: readelf.c:2918
+#, c-format
+msgid "Invalid option '-%c'\n"
+msgstr "îÅ×ÅÒÎÁÑ ÏÐÃÉÑ '-%c'\n"
 
-#: readelf.c:6294 readelf.c:6755
-msgid "version def aux"
-msgstr "ÏÐÉÓÁÎÉÅ ×ÅÒÓÉÉ aux"
+#: readelf.c:2932
+msgid "Nothing to do.\n"
+msgstr "îÅÞÅÇÏ ×ÙÐÏÌÎÑÔØ.\n"
 
-#: readelf.c:6325
-#, c-format
-msgid ""
-"\n"
-"No version information found in this file.\n"
-msgstr ""
-"\n"
-"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅ ÎÁÊÄÅÎÁ ÉÎÆÏÒÍÁÃÉÑ Ï ×ÅÒÓÉÉ.\n"
+#: readelf.c:2944 readelf.c:2960 readelf.c:6169
+msgid "none"
+msgstr "ÎÅÔ"
 
-#: readelf.c:6456
-msgid "Unable to read in dynamic data\n"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÞÉÔÁÔØ ÄÉÎÁÍÉÞÅÓËÉÅ ÄÁÎÎÙÅ\n"
+#: readelf.c:2961
+msgid "2's complement, little endian"
+msgstr "ÄÏÐÏÌÎÅÎÉÅ ÄÏ 2, little endian"
 
-#: readelf.c:6509
-msgid "Unable to seek to start of dynamic information"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ ÐÏÉÓË ÏÔ ÎÁÞÁÌÁ ÄÉÎÁÍÉÞÅÓËÏÊ ÉÎÆÏÒÍÁÃÉÉ"
+#: readelf.c:2962
+msgid "2's complement, big endian"
+msgstr "ÄÏÐÏÌÎÅÎÉÅ ÄÏ 2, big endian"
 
-#: readelf.c:6515
-msgid "Failed to read in number of buckets\n"
-msgstr "óÂÏÊ ÐÒÉ ÓÞÉÔÙ×ÁÎÉÉ ÞÉÓÌÁ ÏÂÌÁÓÔÅÊ ÐÁÍÑÔÉ\n"
+#: readelf.c:2980
+msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
+msgstr "îÅ ELF-ÆÁÊÌ - ÏΠÓÏÄÅÒÖÉÔ ÎÅ×ÅÒÎÙÅ magic-ÂÁÊÔÙ × ÎÁÞÁÌÅ\n"
 
-#: readelf.c:6521
-msgid "Failed to read in number of chains\n"
-msgstr "óÂÏÊ ÐÒÉ ÓÞÉÔÙ×ÁÎÉÉ ÞÉÓÌÁ ÃÅÐÏÞÅË\n"
+#: readelf.c:2988
+#, c-format
+msgid "ELF Header:\n"
+msgstr "úÁÇÏÌÏ×ÏË ELF:\n"
 
-#: readelf.c:6541
+#: readelf.c:2989
 #, c-format
-msgid ""
-"\n"
-"Symbol table for image:\n"
-msgstr ""
-"\n"
-"ôÁÂÌÉÃÁ ÓÉÍ×ÏÌÏ× ÄÌÑ ÉÚÏÂÒÁÖÅÎÉÑ:\n"
+msgid "  Magic:   "
+msgstr "  Magic:   "
+
+#: readelf.c:2993
+#, c-format
+msgid "  Class:                             %s\n"
+msgstr "  ëÌÁÓÓ:                             %s\n"
 
-#: readelf.c:6543
+#: readelf.c:2995
 #, c-format
-msgid "  Num Buc:    Value  Size   Type   Bind Vis      Ndx Name\n"
-msgstr "  ïÂÌÁÓÔÉ:    úÎÁÞ   òÁÚÍÅÒ ôÉР   ó×ÑÚ  Vis     éÎÄÅËÓ ÉÍÅÎÉ\n"
+msgid "  Data:                              %s\n"
+msgstr "  äÁÎÎÙÅ:                            %s\n"
 
-#: readelf.c:6545
+#: readelf.c:2997
 #, c-format
-msgid "  Num Buc:    Value          Size   Type   Bind Vis      Ndx Name\n"
-msgstr "  ïÂÌÁÓÔÉ:    úÎÁÞ           òÁÚÍÅÒ ôÉР   ó×ÑÚ Vis     éÎÄÅËÓ ÉÍÅÎÉ\n"
+msgid "  Version:                           %d %s\n"
+msgstr "  ÷ÅÒÓÉÑ:                            %d %s\n"
 
-#: readelf.c:6597
+#: readelf.c:3004
 #, c-format
-msgid ""
-"\n"
-"Symbol table '%s' contains %lu entries:\n"
-msgstr ""
-"\n"
-"ôÁÂÌÉÃÁ ÓÉÍ×ÏÌÏ× '%s' ÓÏÄÅÒÖÉÔ %lu ÐÕÎËÔÏ×:\n"
+msgid "  OS/ABI:                            %s\n"
+msgstr "  OS/ABI:                            %s\n"
 
-#: readelf.c:6601
+#: readelf.c:3006
 #, c-format
-msgid "   Num:    Value  Size Type    Bind   Vis      Ndx Name\n"
-msgstr "   þÉÓ:    úÎÁÞ   òÁÚÍ ôÉР    ó×ÑÚ   Vis      éÎÄÅËÓ ÉÍÅÎÉ\n"
+msgid "  ABI Version:                       %d\n"
+msgstr "  ÷ÅÒÓÉÑ ABI:                        %d\n"
 
-#: readelf.c:6603
+#: readelf.c:3008
 #, c-format
-msgid "   Num:    Value          Size Type    Bind   Vis      Ndx Name\n"
-msgstr "   þÉÓ:    úÎÁÞ           òÁÚÍ ôÉР    ó×ÑÚ   Vis      éÎÄÅËÓ ÉÍÅÎÉ\n"
+msgid "  Type:                              %s\n"
+msgstr "  ôÉÐ:                               %s\n"
 
-#: readelf.c:6649
-msgid "version data"
-msgstr "ÄÁÎÎÙÅ ×ÅÒÓÉÉ"
+#: readelf.c:3010
+#, c-format
+msgid "  Machine:                           %s\n"
+msgstr "  íÁÛÉÎÁ:                            %s\n"
 
-#: readelf.c:6690
-msgid "version need aux (3)"
-msgstr "ÚÁ×ÉÓÉÍÏÓÔØ ×ÅÒÓÉÉ aux (3)"
+#: readelf.c:3012
+#, c-format
+msgid "  Version:                           0x%lx\n"
+msgstr "  ÷ÅÒÓÉÑ:                            0x%lx\n"
 
-#: readelf.c:6715
-msgid "bad dynamic symbol"
-msgstr "ÎÅ×ÅÒÎÙÊ ÄÉÎÁÍÉÞÅÓËÉÊ ÓÉÍ×ÏÌ"
+#: readelf.c:3015
+#, c-format
+msgid "  Entry point address:               "
+msgstr "  áÄÒÅÓ ÔÏÞËÉ ×ÈÏÄÁ:                 "
 
-#: readelf.c:6778
+#: readelf.c:3017
 #, c-format
 msgid ""
 "\n"
-"Dynamic symbol information is not available for displaying symbols.\n"
+"  Start of program headers:          "
 msgstr ""
 "\n"
-"éÎÆÏÒÍÁÃÉÑ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÓÉÍ×ÏÌÁ ÎÅ ÄÏÓÔÕÐÎÁ ÄÌÑ ÏÔÏÂÒÁÖÅÎÉÑ ÓÉÍ×ÏÌÏ×.\n"
+"  îÁÞÁÌÏ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ:       "
 
-#: readelf.c:6790
+#: readelf.c:3019
 #, c-format
 msgid ""
-"\n"
-"Histogram for bucket list length (total of %lu buckets):\n"
+" (bytes into file)\n"
+"  Start of section headers:          "
 msgstr ""
-"\n"
-"çÉÓÔÏÇÒÁÍÍÁ ÄÌÑ ÄÌÉÎÙ ÓÐÉÓËÁ ÏÂÌÁÓÔÅÊ ÐÁÍÑÔÉ (×ÓÅÇÏ %lu ÏÂÌÁÓÔÅÊ):\n"
+" (ÂÁÊÔ × ÆÁÊÌÅ)\n"
+"  îÁÞÁÌÏ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ:       "
 
-#: readelf.c:6792
+#: readelf.c:3021
 #, c-format
-msgid " Length  Number     %% of total  Coverage\n"
-msgstr " äÌÉÎÁ þÉÓÌÏ        %% ÏÔ ×ÓÅÇÏ  ïÈ×ÁÔ\n"
+msgid " (bytes into file)\n"
+msgstr " (ÂÁÊÔ × ÆÁÊÌÅ)\n"
 
-#: readelf.c:6797 readelf.c:6813 readelf.c:10967 readelf.c:11159
-msgid "Out of memory"
-msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ"
+#: readelf.c:3023
+#, c-format
+msgid "  Flags:                             0x%lx%s\n"
+msgstr "  æÌÁÇÉ:                             0x%lx%s\n"
 
-#: readelf.c:6862
+#: readelf.c:3026
 #, c-format
-msgid ""
-"\n"
-"Dynamic info segment at offset 0x%lx contains %d entries:\n"
-msgstr ""
-"\n"
-"óÅÇÍÅÎÔ ÄÉÎÁÍÉÞÅÓËÏÊ ÉÎÆÏÒÍÁÃÉÉ ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%lx ÓÏÄÅÒÖÉÔ %d ÐÕÎËÔÏ×:\n"
+msgid "  Size of this header:               %ld (bytes)\n"
+msgstr "  òÁÚÍÅÒ ÜÔÏÇÏ ÚÁÇÏÌÏ×ËÁ:            %ld (ÂÁÊÔ)\n"
 
-#: readelf.c:6865
+#: readelf.c:3028
 #, c-format
-msgid " Num: Name                           BoundTo     Flags\n"
-msgstr " þÉÓ: éÍÑ                            çÒÁÎÉÃÁ     æÌÁÇÉ\n"
+msgid "  Size of program headers:           %ld (bytes)\n"
+msgstr "  òÁÚÍÅÒ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ:       %ld (ÂÁÊÔ)\n"
 
-#: readelf.c:6917
+#: readelf.c:3030
 #, c-format
-msgid ""
-"\n"
-"Assembly dump of section %s\n"
-msgstr ""
-"\n"
-"óÂÏÒÏÞÎÙÊ ÄÁÍРÒÁÚÄÅÌÁ %s\n"
+msgid "  Number of program headers:         %ld\n"
+msgstr "  þÉÓÌÏ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ:        %ld\n"
+
+#: readelf.c:3032
+#, c-format
+msgid "  Size of section headers:           %ld (bytes)\n"
+msgstr "  òÁÚÍÅÒ ÚÁÇÏÌÏ×ËÏ× ÒÁÚÄÅÌÁ:         %ld (ÂÁÊÔ)\n"
+
+#: readelf.c:3034
+#, c-format
+msgid "  Number of section headers:         %ld"
+msgstr "  þÉÓÌÏ ÚÁÇÏÌÏ×ËÏ× ÒÁÚÄÅÌÁ:          %ld"
+
+#: readelf.c:3039
+#, c-format
+msgid "  Section header string table index: %ld"
+msgstr "  éÎÄÅËÓ ÔÁÂÌ. ÓÔÒÏË ÚÁÇÏÌ. ÒÁÚÄÅÌÁ: %ld"
+
+#: readelf.c:3070 readelf.c:3103
+msgid "program headers"
+msgstr "ÚÁÇÏÌÏ×ËÉ ÐÒÏÇÒÁÍÍÙ"
+
+#: readelf.c:3141 readelf.c:3440 readelf.c:3481 readelf.c:3540 readelf.c:3603
+#: readelf.c:4208 readelf.c:4232 readelf.c:5510 readelf.c:5554 readelf.c:5752
+#: readelf.c:6734 readelf.c:6748 readelf.c:8564 readelf.c:8972 readelf.c:9039
+msgid "Out of memory\n"
+msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ\n"
 
-#: readelf.c:6938
+#: readelf.c:3168
 #, c-format
 msgid ""
 "\n"
-"Section '%s' has no data to dump.\n"
+"There are no program headers in this file.\n"
 msgstr ""
 "\n"
-"òÁÚÄÅÌ '%s' ÎÅ ÓÏÄÅÒÖÉÔ ÄÁÎÎÙÈ ÄÌÑ ÄÁÍÐÁ.\n"
+"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ.\n"
 
-#: readelf.c:6943
+#: readelf.c:3174
 #, c-format
 msgid ""
 "\n"
-"Hex dump of section '%s':\n"
+"Elf file type is %s\n"
 msgstr ""
 "\n"
-"Hex-ÄÁÍРÒÁÚÄÅÌÁ '%s':\n"
-
-#: readelf.c:7090
-msgid "badly formed extended line op encountered!\n"
-msgstr "×ÓÔÒÅÞÅΠÎÅ×ÅÒÎÏ ÓÆÏÒÍÉÒÏ×ÁÎÎÙÊ ÒÁÓÛÉÒÅÎÎÙÊ line-up!\n"
+"ôÉРelf-ÆÁÊÌÁ - %s\n"
 
-#: readelf.c:7097
+#: readelf.c:3175
 #, c-format
-msgid "  Extended opcode %d: "
-msgstr "  òÁÓÛÉÒÅÎÎÙÊ ËÏÄ ÏÐÅÒÁÃÉÉ %d: "
+msgid "Entry point "
+msgstr "ôÏÞËÁ ×ÈÏÄÁ "
 
-#: readelf.c:7102
+#: readelf.c:3177
 #, c-format
 msgid ""
-"End of Sequence\n"
 "\n"
+"There are %d program headers, starting at offset "
 msgstr ""
-"ëÏÎÅàÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ\n"
 "\n"
+"éÍÅÅÔÓÑ %d ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ, ÎÁÞÉÎÁÑ ÓÏ ÓÍÅÝÅÎÉÑ "
 
-#: readelf.c:7108
-#, c-format
-msgid "set Address to 0x%lx\n"
-msgstr "ÕÓÔÁÎÏ×ËÁ ÁÄÒÅÓÁ × 0x%lx\n"
-
-#: readelf.c:7113
-#, c-format
-msgid "  define new File Table entry\n"
-msgstr "  ÏÐÒÅÄÅÌÅÎÉÅ ÎÏ×ÏÇÏ ÐÕÎËÔÁ ôÁÂÌÉÃÙ ÆÁÊÌÏ×\n"
-
-#: readelf.c:7114 readelf.c:9032
-#, c-format
-msgid "  Entry\tDir\tTime\tSize\tName\n"
-msgstr "  ðÕÎËÔ\tëÁÔÁÌÏÇ\t÷ÒÅÍÑ\tòÁÚÍÅÒ\téÍÑ\n"
-
-#: readelf.c:7116
-#, c-format
-msgid "   %d\t"
-msgstr "   %d\t"
-
-#: readelf.c:7119 readelf.c:7121 readelf.c:7123 readelf.c:9044 readelf.c:9046
-#: readelf.c:9048
-#, c-format
-msgid "%lu\t"
-msgstr "%lu\t"
-
-#: readelf.c:7124
+#: readelf.c:3189 readelf.c:3191
 #, c-format
 msgid ""
-"%s\n"
 "\n"
+"Program Headers:\n"
 msgstr ""
-"%s\n"
 "\n"
+"úÁÇÏÌÏ×ËÉ ÐÒÏÇÒÁÍÍÙ:\n"
 
-#: readelf.c:7128
+#: readelf.c:3195
 #, c-format
-msgid "UNKNOWN: length %d\n"
-msgstr "îåéú÷åóôîùê: ÄÌÉÎÁ %d\n"
-
-#: readelf.c:7155
-msgid "debug_str section data"
-msgstr "äÁÎÎÙÅ ÒÁÚÄÅÌÁ debug_str"
+msgid "  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align\n"
+msgstr "  ôÉР           óÍÅÝ.    ÷ÉÒÔ.ÁÄÒ   æÉÚ.ÁÄÒ    òÚÍ.ÆÊÌ òÚÍ.ÐÍ  æÌÇ ÷ÙÒÁ×Î\n"
 
-#: readelf.c:7173
-msgid "<no .debug_str section>"
-msgstr "<ÎÅÔ ÒÁÚÄÅÌÁ .debug_str>"
+#: readelf.c:3198
+#, c-format
+msgid "  Type           Offset   VirtAddr           PhysAddr           FileSiz  MemSiz   Flg Align\n"
+msgstr "  ôÉР           óÍÅÝ.    ÷ÉÒÔ.ÁÄÒ           æÉÚ.ÁÄÒ            òÚÍ.ÆÊÌ  òÚÍ.ÐÍ   æÌÇ ÷ÙÒÁ×Î\n"
 
-#: readelf.c:7176
-msgid "<offset is too big>"
-msgstr "<ÓÍÅÝÅÎÉÅ ÓÌÉÛËÏÍ ×ÅÌÉËÏ>"
+#: readelf.c:3202
+#, c-format
+msgid "  Type           Offset             VirtAddr           PhysAddr\n"
+msgstr "  ôÉР           óÍÅÝ.              ÷ÉÒÔ.ÁÄÒ           æÉÚ.ÁÄÒ\n"
 
-#: readelf.c:7201
-msgid "debug_loc section data"
-msgstr "äÁÎÎÙÅ ÒÁÚÄÅÌÁ debug_loc"
+#: readelf.c:3204
+#, c-format
+msgid "                 FileSiz            MemSiz              Flags  Align\n"
+msgstr "                 òÚÍ.ÆÊÌ            òÚÍ.ÐÍ              æÌÁÇÉ  ÷ÙÒÁ×Î\n"
 
-#: readelf.c:7235
-msgid "debug_range section data"
-msgstr "äÁÎÎÙÅ ÒÁÚÄÅÌÁ debug_range"
+#: readelf.c:3297
+msgid "more than one dynamic segment\n"
+msgstr "ÂÏÌÅÅ ÏÄÎÏÇÏ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÓÅÇÍÅÎÔÁ\n"
 
-#: readelf.c:7307
-#, c-format
-msgid "%s: skipping unexpected symbol type %s in relocation in section .rela%s\n"
-msgstr "%s: ÐÒÏÐÕÓËÁÅÔÓÑ ÎÅÏÖÉÄÁÎÎÙÊ ÔÉРÓÉÍ×ÏÌÁ %s × ÐÅÒÅÍÅÝÅÎÉÉ × ÒÁÚÄÅÌÅ .rela%s\n"
+#: readelf.c:3308
+msgid "no .dynamic section in the dynamic segment"
+msgstr "× ÄÉÎÁÍÉÞÅÓËÏÍ ÓÅÇÍÅÎÔÅ ÎÅÔ ÒÁÚÄÅÌÁ .dynamic"
 
-#: readelf.c:7321
-#, c-format
-msgid "skipping unexpected symbol type %s in relocation in section .rela.%s\n"
-msgstr "ÐÒÏÐÕÓËÁÅÔÓÑ ÎÅÏÖÉÄÁÎÎÙÊ ÔÉРÓÉÍ×ÏÌÁ %s × ÐÅÒÅÍÅÝÅÎÉÉ × ÒÁÚÄÅÌÅ .rela%s\n"
+#: readelf.c:3317
+msgid "the .dynamic section is not contained within the dynamic segment"
+msgstr "× ÄÉÎÁÍÉÞÅÓËÏÍ ÓÅÇÍÅÎÔÅ ÎÅ ÓÏÄÅÒÖÉÔÓÑ ÒÁÚÄÅÌ .dynamic"
 
-#: readelf.c:7565
-#, c-format
-msgid "Unknown TAG value: %lx"
-msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ TAG: %lx"
+#: readelf.c:3319
+msgid "the .dynamic section is not the first section in the dynamic segment."
+msgstr "ÒÁÚÄÅÌ .dynamic ÎÅ Ñ×ÌÑÅÔÓÑ ÐÅÒ×ÙÍ ÒÁÚÄÅÌÏÍ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÓÅÇÍÅÎÔÁ"
 
-#: readelf.c:7601
-#, c-format
-msgid "Unknown FORM value: %lx"
-msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ FORM: %lx"
+#: readelf.c:3333
+msgid "Unable to find program interpreter name\n"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ ÉÍÑ ÉÎÔÅÒÐÒÅÔÁÔÏÒÁ ÐÒÏÇÒÁÍÍÙ\n"
 
-#: readelf.c:7610
+#: readelf.c:3340
 #, c-format
-msgid " %lu byte block: "
-msgstr " %lu-ÂÁÊÔÏ×ÙÊ ÂÌÏË: "
+msgid ""
+"\n"
+"      [Requesting program interpreter: %s]"
+msgstr ""
+"\n"
+"      [úÁÐÒÁÛÉ×ÁÅÍÙÊ ÉÎÔÅÒÐÒÅÔÁÔÏÒ ÐÒÏÇÒÁÍÍÙ: %s]"
 
-#: readelf.c:7944
+#: readelf.c:3352
 #, c-format
-msgid "(User defined location op)"
-msgstr "(ïÐÒÅÄÅÌÅÎÎÏÅ ÐÏÌØÚÏ×ÁÔÅÌÅÍ ÒÁÚÍÅÝÅÎÉÅ ÏÐÅÒÁÃÉÉ)"
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr ""
+"\n"
+" óÏÏÔ×ÅÔÓÔ×ÉÅ ÒÁÚÄÅÌ-ÓÅÇÍÅÎÔ:\n"
 
-#: readelf.c:7946
+#: readelf.c:3353
 #, c-format
-msgid "(Unknown location op)"
-msgstr "(îÅÉÚ×ÅÓÔÎÏÅ ÒÁÚÍÅÝÅÎÉÅ ÏÐÅÒÁÃÉÉ)"
-
-#: readelf.c:8015
-msgid "Internal error: DWARF version is not 2 or 3.\n"
-msgstr "÷ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: ÎÏÍÅÒ ×ÅÒÓÉÉ DWARF ÎÅ 2 ÉÌÉ 3.\n"
+msgid "  Segment Sections...\n"
+msgstr "  óÅÇÍÅÎÔ òÁÚÄÅÌÙ...\n"
 
-#: readelf.c:8113
-msgid "DW_FORM_data8 is unsupported when sizeof (unsigned long) != 8\n"
-msgstr "DW_FORM_data8 ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ, ËÏÇÄÁ sizeof (ÄÌÉÎÎÏÅ ÃÅÌÏÅ ÞÉÓÌÏ ÂÅÚ ÚÎÁËÁ) != 8\n"
+#: readelf.c:3402
+msgid "Cannot interpret virtual addresses without program headers.\n"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÎÔÅÒÐÒÅÔÉÒÏ×ÁÔØ ×ÉÒÔÕÁÌØÎÙÅ ÁÄÒÅÓÁ ÂÅÚ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ.\n"
 
-#: readelf.c:8162
+#: readelf.c:3418
 #, c-format
-msgid " (indirect string, offset: 0x%lx): %s"
-msgstr " (ËÏÓ×ÅÎÎÁÑ ÓÔÒÏËÁ, ÓÍÅÝÅÎÉÅ: 0x%lx): %s"
+msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
+msgstr "÷ÉÒÔÕÁÌØÎÙÊ ÁÄÒÅÓ 0x%lx ÎÅ ÒÁÚÍÅÝÅΠנËÁËÏÍ-ÌÉÂÏ ÓÅÇÍÅÎÔÅ PT_LOAD.\n"
 
-#: readelf.c:8171
-#, c-format
-msgid "Unrecognized form: %d\n"
-msgstr "îÅÒÁÓÐÏÚÎÁÎÎÁÑ ÆÏÒÍÁ: %d\n"
+#: readelf.c:3432 readelf.c:3473
+msgid "section headers"
+msgstr "ÚÁÇÏÌÏ×ËÉ ÒÁÚÄÅÌÏ×"
 
-#: readelf.c:8256
-#, c-format
-msgid "(not inlined)"
-msgstr "(ÎÅ ×ÎÕÔÒÉÓÔÒÏÞÎÙÊ)"
+#: readelf.c:3517 readelf.c:3580
+msgid "symbols"
+msgstr "ÓÉÍ×ÏÌÙ"
 
-#: readelf.c:8259
-#, c-format
-msgid "(inlined)"
-msgstr "(×ÎÕÔÒÉÓÔÒÏÞÎÙÊ)"
+#: readelf.c:3527 readelf.c:3590
+msgid "symtab shndx"
+msgstr "symtab shndx"
 
-#: readelf.c:8262
+#: readelf.c:3817 readelf.c:4192
 #, c-format
-msgid "(declared as inline but ignored)"
-msgstr "(ÏÂßÑ×ÌÅΠËÁË ×ÎÕÔÒÉÓÔÒÏÞÎÙÊ, ÎÏ ÐÒÏÐÕÝÅÎ)"
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr ""
+"\n"
+"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÒÁÚÄÅÌÏ×.\n"
 
-#: readelf.c:8265
+#: readelf.c:3823
 #, c-format
-msgid "(declared as inline and inlined)"
-msgstr "(ÏÂßÑ×ÌÅΠËÁË ×ÎÕÔÒÉÓÔÒÏÞÎÙÊ, ÔÁË É ÅÓÔØ)"
+msgid "There are %d section headers, starting at offset 0x%lx:\n"
+msgstr "éÍÅÅÔÓÑ %d ÚÁÇÏÌÏ×ËÏ× ÒÁÚÄÅÌÁ, ÎÁÞÉÎÁÑ ÓÏ ÓÍÅÝÅÎÉÑ 0x%lx:\n"
 
-#: readelf.c:8268
-#, c-format
-msgid "  (Unknown inline attribute value: %lx)"
-msgstr "  (îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ ×ÎÕÔÒÉÓÔÒÏÞÎÏÇÏ ÁÔÒÉÂÕÔÁ: %lx)"
+#: readelf.c:3842 readelf.c:4309 readelf.c:4544 readelf.c:4852 readelf.c:5267
+#: readelf.c:6906
+msgid "string table"
+msgstr "ÔÁÂÌÉÃÁ ÓÔÒÏË"
 
-#: readelf.c:8413 readelf.c:9537
+#: readelf.c:3881
 #, c-format
-msgid " [without DW_AT_frame_base]"
-msgstr " [ÂÅÚ DW_AT_frame_base]"
+msgid "Section %d has invalid sh_entsize %lx (expected %lx)\n"
+msgstr "òÁÚÄÅÌ %d ÓÏÄÅÒÖÉÔ ÎÅ×ÅÒÎÙÊ sh_entsize %lx (ÏÖÉÄÁÌÏÓØ %lx)\n"
 
-#: readelf.c:8416
-#, c-format
-msgid "(location list)"
-msgstr "(ÓÐÉÓÏË ÍÅÓÔÏÐÏÌÏÖÅÎÉÑ)"
+#: readelf.c:3901
+msgid "File contains multiple dynamic symbol tables\n"
+msgstr "æÁÊÌ ÓÏÄÅÒÖÉÔ ÎÅÓËÏÌØËÏ ÔÁÂÌÉàÄÉÎÁÍÉÞÅÓËÉÈ ÓÉÍ×ÏÌÏ×\n"
 
-#: readelf.c:8534
-#, c-format
-msgid "Unknown AT value: %lx"
-msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ AT: %lx "
+#: readelf.c:3914
+msgid "File contains multiple dynamic string tables\n"
+msgstr "æÁÊÌ ÓÏÄÅÒÖÉÔ ÎÅÓËÏÌØËÏ ÔÁÂÌÉàÄÉÎÁÍÉÞÅÓËÉÈ ÓÔÒÏË\n"
 
-#: readelf.c:8602
-msgid "No comp units in .debug_info section ?"
-msgstr "÷ ÒÁÚÄÅÌÅ .debug_info ÎÅÔ ÜÌÅÍÅÎÔÏ× comp?"
+#: readelf.c:3919
+msgid "dynamic strings"
+msgstr "ÄÉÎÁÍÉÞÅÓËÉÅ ÓÔÒÏËÉ"
 
-#: readelf.c:8611
-#, c-format
-msgid "Not enough memory for a debug info array of %u entries"
-msgstr "îÅÄÏÓÔÁÔÏÞÎÏ ÐÁÍÑÔÉ ÄÌÑ ÍÁÓÓÉ×Á Ó ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÅÊ ÉÚ %u ÜÌÅÍÅÎÔÏ×"
+#: readelf.c:3926
+msgid "File contains multiple symtab shndx tables\n"
+msgstr "æÁÊÌ ÓÏÄÅÒÖÉÔ ÎÅÓËÏÌØËÏ ÔÁÂÌÉàsymtab shndx\n"
 
-#: readelf.c:8619 readelf.c:9630
+#: readelf.c:3973
 #, c-format
 msgid ""
-"The section %s contains:\n"
 "\n"
+"Section Headers:\n"
 msgstr ""
-"òÁÚÄÅÌ %s ÓÏÄÅÒÖÉÔ:\n"
 "\n"
+"úÁÇÏÌÏ×ËÉ ÒÁÚÄÅÌÏ×:\n"
 
-#: readelf.c:8693
+#: readelf.c:3975
 #, c-format
-msgid "  Compilation Unit @ %lx:\n"
-msgstr "  åÄÉÎÉÃÁ ËÏÍÐÉÌÑÃÉÉ @ %lx:\n"
+msgid ""
+"\n"
+"Section Header:\n"
+msgstr ""
+"\n"
+"úÁÇÏÌÏ×ÏË ÒÁÚÄÅÌÁ:\n"
 
-#: readelf.c:8694
+#: readelf.c:3981 readelf.c:3992 readelf.c:4003
 #, c-format
-msgid "   Length:        %ld\n"
-msgstr "   äÌÉÎÁ:         %ld\n"
+msgid "  [Nr] Name\n"
+msgstr "  [Nr] éÍÑ\n"
 
-#: readelf.c:8695
+#: readelf.c:3982
 #, c-format
-msgid "   Version:       %d\n"
-msgstr "   ÷ÅÒÓÉÑ:        %d\n"
+msgid "       Type            Addr     Off    Size   ES   Lk Inf Al\n"
+msgstr "       ôÉР            áÄÒÅÓ    óÍÅÝ   òÁÚÍ   ES   óÓ éÎÆ Al\n"
 
-#: readelf.c:8696
+#: readelf.c:3986
 #, c-format
-msgid "   Abbrev Offset: %ld\n"
-msgstr "   óÍÅÝ. ÁÂÂÒÅ×:  %ld\n"
+msgid "  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al\n"
+msgstr "  [îÍ] éÍÑ               ôÉР            áÄÒÅÓ    óÍÅÝ   òÁÚÍ   ES æÌÇ óÓ éÎÆ Al\n"
 
-#: readelf.c:8697
+#: readelf.c:3993
 #, c-format
-msgid "   Pointer Size:  %d\n"
-msgstr "   òÁÚÍ. ÕËÁÚÁÔ:  %d\n"
-
-#: readelf.c:8702
-msgid "Only version 2 and 3 DWARF debug information is currently supported.\n"
-msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÏÔÌÁÄÏÞÎÁÑ ÉÎÆÏÒÍÁÃÉÑ ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3.\n"
+msgid "       Type            Address          Off    Size   ES   Lk Inf Al\n"
+msgstr "       ôÉР            áÄÒÅÓ            óÍÅÝ   òÁÚÍ   ES   óÓ éÎÆ Al\n"
 
-#: readelf.c:8717
-msgid "Unable to locate .debug_abbrev section!\n"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÒÁÚÍÅÝÅÎÉÅ ÒÁÚÄÅÌÁ .debug_abbrev!\n"
+#: readelf.c:3997
+#, c-format
+msgid "  [Nr] Name              Type            Address          Off    Size   ES Flg Lk Inf Al\n"
+msgstr "  [îÍ] éÍÑ               ôÉР            áÄÒÅÓ            óÍÅÝ   òÁÚÍ   ES æÌÇ ìË éÎÆ Al\n"
 
-#: readelf.c:8722
-msgid "debug_abbrev section data"
-msgstr "äÁÎÎÙÅ ÒÁÚÄÅÌÁ debug_abbrev"
+#: readelf.c:4004
+#, c-format
+msgid "       Type              Address          Offset            Link\n"
+msgstr "       ôÉР              áÄÒÅÓ            óÍÅÝÅÎÉÅ          óÓÙÌËÁ\n"
 
-#: readelf.c:8759
+#: readelf.c:4005
 #, c-format
-msgid "Unable to locate entry %lu in the abbreviation table\n"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÒÁÚÍÅÝÅÎÉÅ ÐÕÎËÔÁ %lu × ÔÁÂÌÉÃÅ ÁÂÂÒÅ×ÉÁÃÉÉ\n"
+msgid "       Size              EntSize          Info              Align\n"
+msgstr "       òÁÚÍÅÒ            òÁÚÍ.Ent         éÎÆÏ              ÷ÙÒÁ×Î\n"
 
-#: readelf.c:8765
+#: readelf.c:4009
 #, c-format
-msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n"
-msgstr " <%d><%lx>: îÏÍÅÒ ÁÂÂÒÅ×: %lu (%s)\n"
+msgid "  [Nr] Name              Type             Address           Offset\n"
+msgstr "  [îÍ] éÍÑ               ôÉР             áÄÒÅÓ             óÍÅÝÅÎÉÅ\n"
 
-#: readelf.c:8838
+#: readelf.c:4010
 #, c-format
-msgid "%s section needs a populated .debug_info section\n"
-msgstr "òÁÚÄÅÌÕ %s ÎÅÏÂÈÏÄÉÍ ÚÁÐÏÌÎÅÎÎÙÊ ÒÁÚÄÅÌ .debug_info\n"
+msgid "       Size              EntSize          Flags  Link  Info  Align\n"
+msgstr "       òÁÚÍÅÒ            òÁÚÍ.Ent         æÌÁÇÉ  óÓÙÌË éÎÆÏ  ÷ÙÒÁ×Î\n"
 
-#: readelf.c:8845
+#: readelf.c:4015
 #, c-format
-msgid "%s section has more comp units than .debug_info section\n"
-msgstr "òÁÚÄÅÌ %s ÓÏÄÅÒÖÉÔ ÂÏÌØÛÅ ÜÌÅÍÅÎÔÏ× comp, ÞÅÍ ÒÁÚÄÅÌ .debug_info\n"
+msgid "       Flags\n"
+msgstr "       æÌÁÇÉ\n"
 
-#: readelf.c:8847
+#: readelf.c:4150
 #, c-format
 msgid ""
-"assuming that the pointer size is %d, from the last comp unit in .debug_info\n"
-"\n"
+"Key to Flags:\n"
+"  W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+"  I (info), L (link order), G (group), x (unknown)\n"
+"  O (extra OS processing required) o (OS specific), p (processor specific)\n"
 msgstr ""
-"ÐÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ, ÞÔÏ ÒÁÚÍÅÒ ÕËÁÚÁÔÅÌÑ - %d, ÏÔ ÐÏÓÌÅÄÎÅÇÏ ÜÌÅÍÅÎÔÁ comp × .debug_info\n"
-"\n"
+"ïÂÏÚÎÁÞÅÎÉÑ ÆÌÁÇÏ×:\n"
+"  W (ÚÁÐÉÓØ), A (ÎÁÚÎÁÞ), X (ÉÓÐÏÌÎÑÅÍÙÊ), M (ÓÌÉÑÎÉÅ), S (ÓÔÒÏËÉ)\n"
+"  I (ÉÎÆÏ), L (ÐÏÒÑÄÏË ÓÓÙÌÏË), G (ÇÒÕÐÐÁ), x (ÎÅÉÚ×.)\n"
+"  O (ÔÒÅÂ. ÄÏÐ. ÏÂÒÁÂÏÔËÁ ïó) o (ÓÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ïó), p (ÓÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÐÒÏÃÅÓÓÏÒÁ)\n"
+
+#: readelf.c:4168
+#, c-format
+msgid "[<unknown>: 0x%x]"
+msgstr "[<ÎÅÉÚ×ÅÓÔÎÙÊ>: 0x%x]"
 
-#: readelf.c:8891
-msgid "extracting information from .debug_info section"
-msgstr "ÉÚ×ÌÅËÁÅÔÓÑ ÉÎÆÏÒÍÁÃÉÑ ÉÚ ÒÁÚÄÅÌÁ .debug_info"
+#: readelf.c:4199
+msgid "Section headers are not available!\n"
+msgstr "îÅÄÏÓÔÕÐÎÙ ÚÁÇÏÌÏ×ËÉ ÒÁÚÄÅÌÁ!\n"
 
-#: readelf.c:8909
+#: readelf.c:4223
 #, c-format
 msgid ""
 "\n"
-"Dump of debug contents of section %s:\n"
-"\n"
+"There are no section groups in this file.\n"
 msgstr ""
 "\n"
-"äÁÍРÄÌÑ ÏÔÌÁÄËÉ ÓÏÄÅÒÖÉÍÏÇÏ ÒÁÚÄÅÌÁ %s:\n"
-"\n"
+"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÇÒÕÐРÒÁÚÄÅÌÏ×.\n"
 
-#: readelf.c:8948
-msgid "The line info appears to be corrupt - the section is too small\n"
-msgstr "ðÏÈÏÖÅ, ÞÔÏ ÓÔÒÏËÁ ÉÎÆÏ ÐÏ×ÒÅÖÄÅÎÁ - ÒÁÚÄÅÌ ÓÌÉÛËÏÍ ÍÁÌ\n"
+#: readelf.c:4259
+#, c-format
+msgid "Bad sh_link in group section `%s'\n"
+msgstr "îÅ×ÅÒÎÙÊ sh_link × ÒÁÚÄÅÌÅ ÇÒÕÐР`%s'\n"
 
-#: readelf.c:8957
-msgid "Only DWARF version 2 and 3 line info is currently supported.\n"
-msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ ÓÔÒÏËÉ ÉÎÆÏ ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3.\n"
+#: readelf.c:4278
+#, c-format
+msgid "Bad sh_info in group section `%s'\n"
+msgstr "îÅ×ÅÒÎÙÊ sh_info × ÒÁÚÄÅÌÅ ÇÒÕÐР`%s'\n"
 
-#: readelf.c:8984
+#: readelf.c:4317 readelf.c:7243
+msgid "section data"
+msgstr "ÄÁÎÎÙÅ ÒÁÚÄÅÌÁ"
+
+#: readelf.c:4329
 #, c-format
-msgid "  Length:                      %ld\n"
-msgstr "  äÌÉÎÁ:                       %ld\n"
+msgid "   [Index]    Name\n"
+msgstr "   [éÎÄÅËÓ]   éÍÑ\n"
 
-#: readelf.c:8985
+#: readelf.c:4343
 #, c-format
-msgid "  DWARF Version:               %d\n"
-msgstr "  DWARF ×ÅÒÓÉÑ:                %d\n"
+msgid "section [%5u] in group section [%5u] > maximum section [%5u]\n"
+msgstr "ÒÁÚÄÅÌ [%5u] ÕÖÅ ÎÁÈÏÄÉÔÓÑ × ÒÁÚÄÅÌÅ ÇÒÕÐР[%5u] > ÍÁËÓÉÍÁÌØÎÙÊ ÒÁÚÄÅÌ [%5u]\n"
 
-#: readelf.c:8986
+#: readelf.c:4349
 #, c-format
-msgid "  Prologue Length:             %d\n"
-msgstr "  äÌÉÎÁ ÐÒÏÌÏÇÁ:               %d\n"
+msgid "invalid section [%5u] in group section [%5u]\n"
+msgstr "ÎÅ×ÅÒÎÙÊ ÒÁÚÄÅÌ [%5u] × ÒÁÚÄÅÌÅ ÇÒÕÐР[%5u]\n"
 
-#: readelf.c:8987
+#: readelf.c:4359
 #, c-format
-msgid "  Minimum Instruction Length:  %d\n"
-msgstr "  íÉÎÉÍ. ÄÌÉÎÁ ÉÎÓÔÒÕËÃÉÉ:     %d\n"
+msgid "section [%5u] in group section [%5u] already in group section [%5u]\n"
+msgstr "ÒÁÚÄÅÌ [%5u] ÉÚ ÒÁÚÄÅÌÁ ÇÒÕÐР[%5u] ÕÖÅ ÎÁÈÏÄÉÔÓÑ × ÒÁÚÄÅÌÅ ÇÒÕÐР[%5u]\n"
 
-#: readelf.c:8988
+#: readelf.c:4372
 #, c-format
-msgid "  Initial value of 'is_stmt':  %d\n"
-msgstr "  îÁÞ. ÚÎÁÞÅÎÉÅ 'is_stmt':     %d\n"
+msgid "section 0 in group section [%5u]\n"
+msgstr "ÒÁÚÄÅÌ 0 × ÒÁÚÄÅÌÅ ÇÒÕÐР[%5u]\n"
 
-#: readelf.c:8989
+#: readelf.c:4468
 #, c-format
-msgid "  Line Base:                   %d\n"
-msgstr "  ïÓÎÏ×ÁÎÉÅ ÓÔÒÏËÉ:            %d\n"
+msgid ""
+"\n"
+"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr ""
+"\n"
+"'%s' ÒÁÚÄÅÌ ÐÅÒÅÍÅÝÅÎÉÑ ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%lx ÓÏÄÅÒÖÉÔ %ld ÂÁÊÔ:\n"
 
-#: readelf.c:8990
+#: readelf.c:4480
 #, c-format
-msgid "  Line Range:                  %d\n"
-msgstr "  äÉÁÐÁÚÏΠÓÔÒÏËÉ:             %d\n"
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr ""
+"\n"
+"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÄÉÎÁÍÉÞÅÓËÉÈ ÐÅÒÅÍÅÝÅÎÉÊ .\n"
 
-#: readelf.c:8991
+#: readelf.c:4504
 #, c-format
-msgid "  Opcode Base:                 %d\n"
-msgstr "  ïÓÎÏ×ÁÎÉÅ ËÏÄÁ ÏÐÅÒÁÃÉÉ:     %d\n"
+msgid ""
+"\n"
+"Relocation section "
+msgstr ""
+"\n"
+"òÁÚÄÅÌ ÐÅÒÅÍÅÝÅÎÉÑ "
+
+#: readelf.c:4509 readelf.c:4928 readelf.c:4942 readelf.c:5282
+#, c-format
+msgid "'%s'"
+msgstr "'%s'"
 
-#: readelf.c:8992
+#: readelf.c:4511 readelf.c:4944 readelf.c:5284
 #, c-format
-msgid "  (Pointer size:               %u)\n"
-msgstr "  (òÁÚÍÅÒ ÕËÁÚÁÔÅÌÑ:           %u)\n"
+msgid " at offset 0x%lx contains %lu entries:\n"
+msgstr " ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%lx ÓÏÄÅÒÖÉÔ %lu ÐÕÎËÔÏ×:\n"
 
-#: readelf.c:9001
+#: readelf.c:4563
 #, c-format
 msgid ""
 "\n"
-" Opcodes:\n"
+"There are no relocations in this file.\n"
 msgstr ""
 "\n"
-" ëÏÄÙ ÏÐÅÒÁÃÉÊ:\n"
+"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÐÅÒÅÍÅÝÅÎÉÊ.\n"
+
+#: readelf.c:4742 readelf.c:5124
+msgid "unwind table"
+msgstr "ÒÁÚ×ÅÒÎÕÔÁÑ ÔÁÂÌÉÃÁ"
 
-#: readelf.c:9004
+#: readelf.c:4801 readelf.c:5214
 #, c-format
-msgid "  Opcode %d has %d args\n"
-msgstr "  ëÏÄ ÏÐÅÒÁÃÉÉ %d ÓÏÄÅÒÖÉÔ %d ÁÒÇÕÍÅÎÔÏ×\n"
+msgid "Skipping unexpected relocation type %s\n"
+msgstr "ðÒÏÐÕÓËÁÅÔÓÑ ÎÅÏÖÉÄÁÎÎÙÊ ÔÉРÐÅÒÅÍÅÝÅÎÉÑ %s\n"
 
-#: readelf.c:9010
+#: readelf.c:4860 readelf.c:5275 readelf.c:5326
 #, c-format
 msgid ""
 "\n"
-" The Directory Table is empty.\n"
+"There are no unwind sections in this file.\n"
 msgstr ""
 "\n"
-" ôÁÂÌÉÃÁ ËÁÔÁÌÏÇÏ× ÐÕÓÔÁ.\n"
+"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÒÁÚ×ÅÒÎÕÔÙÈ ÒÁÚÄÅÌÏ×.\n"
 
-#: readelf.c:9013
+#: readelf.c:4923
 #, c-format
 msgid ""
 "\n"
-" The Directory Table:\n"
+"Could not find unwind info section for "
 msgstr ""
 "\n"
-" ôÁÂÌÉÃÁ ËÁÔÁÌÏÇÏ×:\n"
+"îÅ×ÏÚÍÏÖÎÏ ÂÙÌÏ ÎÁÊÔÉ ÒÁÚÄÅÌ Ó ÒÁÚ×ÅÒÎÕÔÏÊ ÉÎÆÏÒÍÁÃÉÅÊ ÄÌÑ"
 
-#: readelf.c:9017
-#, c-format
-msgid "  %s\n"
-msgstr "  %s\n"
+#: readelf.c:4935
+msgid "unwind info"
+msgstr "ÒÁÚ×ÅÒÎÕÔÁÑ ÉÎÆÏÒÍÁÃÉÑ"
 
-#: readelf.c:9028
+#: readelf.c:4937 readelf.c:5281
 #, c-format
 msgid ""
 "\n"
-" The File Name Table is empty.\n"
+"Unwind section "
 msgstr ""
 "\n"
-" ôÁÂÌÉÃÁ ÉÍÅΠÆÁÊÌÏ× ÐÕÓÔÁ.\n"
+"òÁÚ×ÅÒÎÕÔÙÊ ÒÁÚÄÅÌ "
 
-#: readelf.c:9031
+#: readelf.c:5491 readelf.c:5535
+msgid "dynamic section"
+msgstr "ÄÉÎÁÍÉÞÅÓËÉÊ ÒÁÚÄÅÌ"
+
+#: readelf.c:5612
 #, c-format
 msgid ""
 "\n"
-" The File Name Table:\n"
+"There is no dynamic section in this file.\n"
 msgstr ""
 "\n"
-" ôÁÂÌÉÃÁ ÉÍÅΠÆÁÊÌÏ×:\n"
+"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÒÁÚÄÅÌÁ.\n"
 
-#: readelf.c:9039
-#, c-format
-msgid "  %d\t"
-msgstr "  %d\t"
+#: readelf.c:5650
+msgid "Unable to seek to end of file!"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ ÐÏÉÓË ÄÏ ËÏÎÃÁ ÆÁÊÌÁ!"
 
-#: readelf.c:9050
-#, c-format
-msgid "%s\n"
-msgstr "%s\n"
+#: readelf.c:5663
+msgid "Unable to determine the number of symbols to load\n"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÞÉÓÌÏ ÚÁÇÒÕÖÁÅÍÙÈ ÓÉÍ×ÏÌÏ×\n"
 
-#. Now display the statements.
-#: readelf.c:9058
+#: readelf.c:5698
+msgid "Unable to seek to end of file\n"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ ÐÏÉÓË ÄÏ ËÏÎÃÁ ÆÁÊÌÁ\n"
+
+#: readelf.c:5705
+msgid "Unable to determine the length of the dynamic string table\n"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÄÌÉÎÕ ÔÁÂÌÉÃÙ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÔÒÏË\n"
+
+#: readelf.c:5710
+msgid "dynamic string table"
+msgstr "ÔÁÂÌÉÃÁ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÔÒÏË"
+
+#: readelf.c:5745
+msgid "symbol information"
+msgstr "ÉÎÆÏÒÍÁÃÉÑ Ï ÓÉÍ×ÏÌÅ"
+
+#: readelf.c:5770
 #, c-format
 msgid ""
 "\n"
-" Line Number Statements:\n"
+"Dynamic section at offset 0x%lx contains %u entries:\n"
 msgstr ""
 "\n"
-" ïÐÅÒÁÔÏÒÙ ÎÏÍÅÒÁ ÓÔÒÏËÉ:\n"
+"äÉÎÁÍÉÞÅÓËÉÊ ÒÁÚÄÅÌ ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%lx ÓÏÄÅÒÖÉÔ %u ÐÕÎËÔÏ×:\n"
 
-#: readelf.c:9073
+#: readelf.c:5773
 #, c-format
-msgid "  Special opcode %d: advance Address by %d to 0x%lx"
-msgstr "  óÐÅÃÉÁÌØÎÙÊ ËÏÄ ÏÐÅÒÁÃÉÉ %d: ÐÒÏÄ×ÉÖÅÎÉÅ ÁÄÒÅÓÁ ÎÁ %d × 0x%lx"
+msgid "  Tag        Type                         Name/Value\n"
+msgstr "  ôÅÇ        ôÉР                         éÍÑ/úÎÁÞ\n"
 
-#: readelf.c:9077
+#: readelf.c:5809
 #, c-format
-msgid " and Line by %d to %d\n"
-msgstr " É ÓÔÒÏËÉ ÎÁ %d × %d\n"
+msgid "Auxiliary library"
+msgstr "÷ÓÐÏÍÏÇÁÔÅÌØÎÁÑ ÂÉÂÌÉÏÔÅËÁ"
 
-#: readelf.c:9088
+#: readelf.c:5813
 #, c-format
-msgid "  Copy\n"
-msgstr "  ëÏÐÉÑ\n"
+msgid "Filter library"
+msgstr "âÉÂÌÉÏÔÅËÁ ÆÉÌØÔÒÏ×"
 
-#: readelf.c:9095
+#: readelf.c:5817
 #, c-format
-msgid "  Advance PC by %d to %lx\n"
-msgstr "  ðÒÏÄ×ÉÖÅÎÉÅ ÓÞÅÔÞÉËÁ ËÏÍÁÎÄ ÎÁ %d × %lx\n"
+msgid "Configuration file"
+msgstr "æÁÊÌ ÎÁÓÔÒÏÊËÉ"
 
-#: readelf.c:9103
+#: readelf.c:5821
 #, c-format
-msgid "  Advance Line by %d to %d\n"
-msgstr "  ðÒÏÄ×ÉÖÅÎÉÅ ÓÔÒÏËÉ ÎÁ %d × %d\n"
+msgid "Dependency audit library"
+msgstr "âÉÂÌÉÏÔÅËÁ ÁÕÄÉÔÁ ÚÁ×ÉÓÉÍÏÓÔÅÊ"
 
-#: readelf.c:9110
+#: readelf.c:5825
 #, c-format
-msgid "  Set File Name to entry %d in the File Name Table\n"
-msgstr "  õÓÔÁÎÏ×ËÁ ÉÍÅÎÉ ÆÁÊÌÁ × ÐÕÎËÔ %d × ÔÁÂÌÉÃÅ ÉÍÅΠÆÁÊÌÏ×\n"
+msgid "Audit library"
+msgstr "âÉÂÌÉÏÔÅËÁ ÁÕÄÉÔÁ"
+
+#: readelf.c:5843 readelf.c:5871 readelf.c:5899
+#, c-format
+msgid "Flags:"
+msgstr "æÌÁÇÉ:"
+
+#: readelf.c:5846 readelf.c:5874 readelf.c:5901
+#, c-format
+msgid " None\n"
+msgstr " îÅÔ\n"
+
+#: readelf.c:6022
+#, c-format
+msgid "Shared library: [%s]"
+msgstr "óÏ×Í. ÉÓÐ. ÂÉÂÌÉÏÔÅËÁ: [%s]"
+
+#: readelf.c:6025
+#, c-format
+msgid " program interpreter"
+msgstr " ÉÎÔÅÒÐÒÅÔÁÔÏÒ ÐÒÏÇÒÁÍÍÙ"
+
+#: readelf.c:6029
+#, c-format
+msgid "Library soname: [%s]"
+msgstr "âÉÂÌÉÏÔÅËÁ soname: [%s]"
+
+#: readelf.c:6033
+#, c-format
+msgid "Library rpath: [%s]"
+msgstr "âÉÂÌÉÏÔÅËÁ rpath: [%s]"
+
+#: readelf.c:6037
+#, c-format
+msgid "Library runpath: [%s]"
+msgstr "âÉÂÌÉÏÔÅËÁ runpath: [%s]"
+
+#: readelf.c:6100
+#, c-format
+msgid "Not needed object: [%s]\n"
+msgstr "îÅÎÕÖÎÙÊ ÏÂßÅËÔ: [%s]\n"
 
-#: readelf.c:9118
+#: readelf.c:6214
 #, c-format
-msgid "  Set column to %d\n"
-msgstr "  õÓÔÁÎÏ×ËÁ ÓÔÏÌÂÃÁ × %d\n"
+msgid ""
+"\n"
+"Version definition section '%s' contains %ld entries:\n"
+msgstr ""
+"\n"
+"òÁÚÄÅÌ ÏÐÉÓÁÎÉÑ ×ÅÒÓÉÉ '%s' ÓÏÄÅÒÖÉÔ %ld ÐÕÎËÔÏ×:\n"
 
-#: readelf.c:9125
+#: readelf.c:6217
 #, c-format
-msgid "  Set is_stmt to %d\n"
-msgstr "  õÓÔÁÎÏ×ËÁ is_stmt × %d\n"
+msgid "  Addr: 0x"
+msgstr "  áÄÒÅÓ: 0x"
 
-#: readelf.c:9130
+#: readelf.c:6219 readelf.c:6426
 #, c-format
-msgid "  Set basic block\n"
-msgstr "  õÓÔÁÎÏ×ËÁ ÂÁÚÏ×ÏÇÏ ÂÌÏËÁ\n"
+msgid "  Offset: %#08lx  Link: %lx (%s)\n"
+msgstr "  óÍÅÝÅÎÉÅ: %#08lx  óÓÙÌËÁ: %lx (%s)\n"
+
+#: readelf.c:6228
+msgid "version definition section"
+msgstr "ÒÁÚÄÅÌ ÏÐÉÓÁÎÉÑ ×ÅÒÓÉÉ"
 
-#: readelf.c:9138
+#: readelf.c:6254
 #, c-format
-msgid "  Advance PC by constant %d to 0x%lx\n"
-msgstr "  ðÒÏÄ×ÉÖÅÎÉÅ ÓÞÅÔÞÉËÁ ËÏÍÁÎÄ ÎÁ ÐÏÓÔÏÑÎÎÕÀ %d × 0x%lx\n"
+msgid "  %#06x: Rev: %d  Flags: %s"
+msgstr "  %#06x: òÅ×ÉÚÉÑ: %d  æÌÁÇÉ: %s"
 
-#: readelf.c:9146
+#: readelf.c:6257
 #, c-format
-msgid "  Advance PC by fixed size amount %d to 0x%lx\n"
-msgstr "  ðÒÏÄ×ÉÖÅÎÉÅ ÓÞÅÔÞÉËÁ ËÏÍÁÎÄ ÎÁ ×ÅÌÉÞÉÎÕ ÆÉËÓÉÒÏ×ÁÎÎÏÇÏ ÒÁÚÍÅÒÁ %d × 0x%lx\n"
+msgid "  Index: %d  Cnt: %d  "
+msgstr "  éÎÄÅËÓ: %d  óÞÅÔÞÉË: %d  "
 
-#: readelf.c:9151
+#: readelf.c:6268
 #, c-format
-msgid "  Set prologue_end to true\n"
-msgstr "  õÓÔÁÎÏ×ËÁ prologue_end × `ÉÓÔÉÎÁ'\n"
+msgid "Name: %s\n"
+msgstr "éÍÑ: %s\n"
 
-#: readelf.c:9155
+#: readelf.c:6270
 #, c-format
-msgid "  Set epilogue_begin to true\n"
-msgstr "  õÓÔÁÎÏ×ËÁ epilogue_begin × `ÉÓÔÉÎÁ'\n"
+msgid "Name index: %ld\n"
+msgstr "éÎÄÅËÓ ÉÍÅÎÉ: %ld\n"
 
-#: readelf.c:9161
+#: readelf.c:6285
 #, c-format
-msgid "  Set ISA to %d\n"
-msgstr "  õÓÔÁÎÏ×ËÁ ISA × %d\n"
+msgid "  %#06x: Parent %d: %s\n"
+msgstr "  %#06x: òÏÄÉÔÅÌØ %d: %s\n"
 
-#: readelf.c:9165
+#: readelf.c:6288
 #, c-format
-msgid "  Unknown opcode %d with operands: "
-msgstr "  îÅÉÚ×ÅÓÔÎÙÊ ËÏÄ ÏÐÅÒÁÃÉÉ %d Ó ÏÐÅÒÁÎÄÁÍÉ: "
+msgid "  %#06x: Parent %d, name index: %ld\n"
+msgstr "  %#06x: òÏÄÉÔÅÌØ %d, ÉÎÄÅËÓ ÉÍÅÎÉ: %ld\n"
 
-#: readelf.c:9193 readelf.c:9279 readelf.c:9354
+#: readelf.c:6307
 #, c-format
 msgid ""
-"Contents of the %s section:\n"
 "\n"
+"Version needs section '%s' contains %ld entries:\n"
 msgstr ""
-"óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ %s:\n"
 "\n"
+"òÁÚÄÅÌ ÚÁ×ÉÓÉÍÏÓÔÅÊ ×ÅÒÓÉÉ '%s' ÓÏÄÅÒÖÉÔ %ld ÐÕÎËÔÏ×:\n"
 
-#: readelf.c:9233
-msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
-msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ pubname ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3\n"
-
-#: readelf.c:9240
+#: readelf.c:6310
 #, c-format
-msgid "  Length:                              %ld\n"
-msgstr "  äÌÉÎÁ:                               %ld\n"
+msgid " Addr: 0x"
+msgstr " áÄÒÅÓ: 0x"
 
-#: readelf.c:9242
+#: readelf.c:6312
 #, c-format
-msgid "  Version:                             %d\n"
-msgstr "  ÷ÅÒÓÉÑ:                              %d\n"
+msgid "  Offset: %#08lx  Link to section: %ld (%s)\n"
+msgstr "  óÍÅÝÅÎÉÅ: %#08lx  óÓÙÌËÁ ÎÁ ÒÁÚÄÅÌ: %ld (%s)\n"
 
-#: readelf.c:9244
-#, c-format
-msgid "  Offset into .debug_info section:     %ld\n"
-msgstr "  óÍÅÝÅÎÉÅ × ÒÁÚÄÅÌ .debug_info:       %ld\n"
+#: readelf.c:6321
+msgid "version need section"
+msgstr "ÒÁÚÄÅÌ ÚÁ×ÉÓÉÍÏÓÔÅÊ ×ÅÒÓÉÉ"
 
-#: readelf.c:9246
+#: readelf.c:6343
 #, c-format
-msgid "  Size of area in .debug_info section: %ld\n"
-msgstr "  òÁÚÍ. ÏÂÌÁÓÔÉ × ÒÁÚÄÅÌÅ .debug_info: %ld\n"
+msgid "  %#06x: Version: %d"
+msgstr "  %#06x: ÷ÅÒÓÉÑ: %d"
 
-#: readelf.c:9249
+#: readelf.c:6346
 #, c-format
-msgid ""
-"\n"
-"    Offset\tName\n"
-msgstr ""
-"\n"
-"    óÍÅÝÅÎÉÅ\téÍÑ\n"
+msgid "  File: %s"
+msgstr "  æÁÊÌ: %s"
 
-#: readelf.c:9300
+#: readelf.c:6348
 #, c-format
-msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
-msgstr " DW_MACINFO_start_file - ÎÏÍÅÒ_ÓÔÒÏËÉ: %d ÎÏÍÅÒ_ÆÁÊÌÁ: %d\n"
+msgid "  File: %lx"
+msgstr "  æÁÊÌ: %lx"
 
-#: readelf.c:9306
+#: readelf.c:6350
 #, c-format
-msgid " DW_MACINFO_end_file\n"
-msgstr " DW_MACINFO_end_file\n"
+msgid "  Cnt: %d\n"
+msgstr "  óÞÅÔÞÉË: %d\n"
 
-#: readelf.c:9314
+#: readelf.c:6368
 #, c-format
-msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
-msgstr " DW_MACINFO_define - ÎÏÍÅÒ_ÓÔÒÏËÉ : %d ÍÁËÒÏ : %s\n"
+msgid "  %#06x:   Name: %s"
+msgstr "  %#06x:   éÍÑ: %s"
 
-#: readelf.c:9323
+#: readelf.c:6371
 #, c-format
-msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
-msgstr " DW_MACINFO_undef - ÎÏÍÅÒ_ÓÔÒÏËÉ : %d ÍÁËÒÏ : %s\n"
+msgid "  %#06x:   Name index: %lx"
+msgstr "  %#06x:   éÎÄÅËÓ ÉÍÅÎÉ: %lx"
 
-#: readelf.c:9335
+#: readelf.c:6374
 #, c-format
-msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
-msgstr " DW_MACINFO_vendor_ext - ËÏÎÓÔÁÎÔÁ : %d ÓÔÒÏËÁ : %s\n"
+msgid "  Flags: %s  Version: %d\n"
+msgstr "  æÌÁÇÉ: %s  ÷ÅÒÓÉÑ: %d\n"
+
+#: readelf.c:6417
+msgid "version string table"
+msgstr "ÔÁÂÌÉÃÁ ÓÔÒÏË ×ÅÒÓÉÉ"
 
-#: readelf.c:9363
+#: readelf.c:6421
 #, c-format
-msgid "  Number TAG\n"
-msgstr "  þÉÓÌÏ TAG\n"
+msgid ""
+"\n"
+"Version symbols section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"òÁÚÄÅÌ ÓÉÍ×ÏÌÏ× ×ÅÒÓÉÉ '%s' ÓÏÄÅÒÖÉÔ %d ÐÕÎËÔÏ×:\n"
 
-#: readelf.c:9369
+#: readelf.c:6424
 #, c-format
-msgid "   %ld      %s    [%s]\n"
-msgstr "   %ld      %s    [%s]\n"
+msgid " Addr: "
+msgstr " áÄÒÅÓ: "
 
-#: readelf.c:9372
-msgid "has children"
-msgstr "ÉÍÅÅÔ ÐÏÔÏÍËÏ×"
+#: readelf.c:6434
+msgid "version symbol data"
+msgstr "ÄÁÎÎÙÅ ÓÉÍ×ÏÌÁ ×ÅÒÓÉÉ"
 
-#: readelf.c:9372
-msgid "no children"
-msgstr "ÎÅÔ ÐÏÔÏÍËÏ×"
+#: readelf.c:6461
+msgid "   0 (*local*)    "
+msgstr "   0 (*ÌÏËÁÌØÎÙÊ*)    "
 
-#: readelf.c:9375
-#, c-format
-msgid "    %-18s %s\n"
-msgstr "    %-18s %s\n"
+#: readelf.c:6465
+msgid "   1 (*global*)   "
+msgstr "   1 (*ÇÌÏÂÁÌØÎÙÊ*)   "
+
+#: readelf.c:6503 readelf.c:6969
+msgid "version need"
+msgstr "ÚÁ×ÉÓÉÍÏÓÔØ ×ÅÒÓÉÉ"
+
+#: readelf.c:6513
+msgid "version need aux (2)"
+msgstr "ÚÁ×ÉÓÉÍÏÓÔØ ×ÅÒÓÉÉ aux (2)"
+
+#: readelf.c:6555 readelf.c:7034
+msgid "version def"
+msgstr "ÏÐÉÓÁÎÉÅ ×ÅÒÓÉÉ"
 
-#: readelf.c:9410
+#: readelf.c:6575 readelf.c:7049
+msgid "version def aux"
+msgstr "ÏÐÉÓÁÎÉÅ ×ÅÒÓÉÉ aux"
+
+#: readelf.c:6606
 #, c-format
 msgid ""
 "\n"
-"The .debug_loc section is empty.\n"
+"No version information found in this file.\n"
 msgstr ""
 "\n"
-"òÁÚÄÅÌ .debug_loc ÐÕÓÔ.\n"
+"÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅ ÎÁÊÄÅÎÁ ÉÎÆÏÒÍÁÃÉÑ Ï ×ÅÒÓÉÉ.\n"
 
-#. FIXME: Should we handle this case?
-#: readelf.c:9455
-msgid "Location lists in .debug_info section aren't in ascending order!\n"
-msgstr "óÐÉÓËÉ ÍÅÓÔÏÐÏÌÏÖÅÎÉÊ × ÒÁÚÄÅÌÅ .debug_info ÎÅ ÕÐÏÒÑÄÏÞÅÎÙ ÐÏ ×ÏÚÒÁÓÔÁÎÉÀ!\n"
+#: readelf.c:6740
+msgid "Unable to read in dynamic data\n"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÞÉÔÁÔØ ÄÉÎÁÍÉÞÅÓËÉÅ ÄÁÎÎÙÅ\n"
 
-#: readelf.c:9458
-msgid "No location lists in .debug_info section!\n"
-msgstr "÷ ÒÁÚÄÅÌÅ .debug_info ÎÅÔ ÓÐÉÓËÏ× ÍÅÓÔÏÐÏÌÏÖÅÎÉÊ!\n"
+#: readelf.c:6793
+msgid "Unable to seek to start of dynamic information"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ ÐÏÉÓË ÏÔ ÎÁÞÁÌÁ ÄÉÎÁÍÉÞÅÓËÏÊ ÉÎÆÏÒÍÁÃÉÉ"
 
-#: readelf.c:9461
-#, c-format
-msgid "Location lists in .debug_loc section start at 0x%lx\n"
-msgstr "óÐÉÓËÉ ÍÅÓÔÏÐÏÌÏÖÅÎÉÊ × ÒÁÚÄÅÌÅ .debug_loc ÎÁÞÉÎÁÀÔÓÑ Ó 0x%lx\n"
+#: readelf.c:6799
+msgid "Failed to read in number of buckets\n"
+msgstr "óÂÏÊ ÐÒÉ ÓÞÉÔÙ×ÁÎÉÉ ÞÉÓÌÁ ÏÂÌÁÓÔÅÊ ÐÁÍÑÔÉ\n"
+
+#: readelf.c:6805
+msgid "Failed to read in number of chains\n"
+msgstr "óÂÏÊ ÐÒÉ ÓÞÉÔÙ×ÁÎÉÉ ÞÉÓÌÁ ÃÅÐÏÞÅË\n"
 
-#: readelf.c:9464
+#: readelf.c:6825
 #, c-format
 msgid ""
-"Contents of the .debug_loc section:\n"
 "\n"
+"Symbol table for image:\n"
 msgstr ""
-"óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ .debug_loc:\n"
 "\n"
+"ôÁÂÌÉÃÁ ÓÉÍ×ÏÌÏ× ÄÌÑ ÉÚÏÂÒÁÖÅÎÉÑ:\n"
 
-#: readelf.c:9465
+#: readelf.c:6827
 #, c-format
-msgid "    Offset   Begin    End      Expression\n"
-msgstr "    óÍÅÝ.    îÁÞÁÌÏ   ëÏÎÅà   òÁÓÛÉÒÅÎÉÅ\n"
+msgid "  Num Buc:    Value  Size   Type   Bind Vis      Ndx Name\n"
+msgstr "  ïÂÌÁÓÔÉ:    úÎÁÞ   òÁÚÍÅÒ ôÉР   ó×ÑÚ  Vis     éÎÄÅËÓ ÉÍÅÎÉ\n"
 
-#: readelf.c:9495
+#: readelf.c:6829
 #, c-format
-msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
-msgstr "÷ ÒÁÚÄÅÌÅ .debug_loc ÐÒÉÓÕÔÓÔ×ÕÅÔ ÄÙÒÁ [0x%lx - 0x%lx].\n"
+msgid "  Num Buc:    Value          Size   Type   Bind Vis      Ndx Name\n"
+msgstr "  ïÂÌÁÓÔÉ:    úÎÁÞ           òÁÚÍÅÒ ôÉР   ó×ÑÚ Vis     éÎÄÅËÓ ÉÍÅÎÉ\n"
 
-#: readelf.c:9498
+#: readelf.c:6882
 #, c-format
-msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
-msgstr "÷ ÒÁÚÄÅÌÅ .debug_loc ÐÒÉÓÕÔÓÔ×ÕÅÔ ÐÅÒÅËÒÙÔÉÅ [0x%lx - 0x%lx].\n"
+msgid ""
+"\n"
+"Symbol table '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"ôÁÂÌÉÃÁ ÓÉÍ×ÏÌÏ× '%s' ÓÏÄÅÒÖÉÔ %lu ÐÕÎËÔÏ×:\n"
 
-#: readelf.c:9512 readelf.c:9837
+#: readelf.c:6886
 #, c-format
-msgid "    %8.8lx <End of list>\n"
-msgstr "    %8.8lx <ëÏÎÅàÓÐÉÓËÁ>\n"
+msgid "   Num:    Value  Size Type    Bind   Vis      Ndx Name\n"
+msgstr "   þÉÓ:    úÎÁÞ   òÁÚÍ ôÉР    ó×ÑÚ   Vis      éÎÄÅËÓ ÉÍÅÎÉ\n"
 
-#: readelf.c:9540 readelf.c:9854
-msgid " (start == end)"
-msgstr " (ÎÁÞÁÌÏ == ËÏÎÅÃ)"
+#: readelf.c:6888
+#, c-format
+msgid "   Num:    Value          Size Type    Bind   Vis      Ndx Name\n"
+msgstr "   þÉÓ:    úÎÁÞ           òÁÚÍ ôÉР    ó×ÑÚ   Vis      éÎÄÅËÓ ÉÍÅÎÉ\n"
 
-#: readelf.c:9542 readelf.c:9856
-msgid " (start > end)"
-msgstr " (ÎÁÞÁÌÏ > ËÏÎÅÃ)"
+#: readelf.c:6939
+msgid "version data"
+msgstr "ÄÁÎÎÙÅ ×ÅÒÓÉÉ"
+
+#: readelf.c:6982
+msgid "version need aux (3)"
+msgstr "ÚÁ×ÉÓÉÍÏÓÔØ ×ÅÒÓÉÉ aux (3)"
+
+#: readelf.c:7009
+msgid "bad dynamic symbol"
+msgstr "ÎÅ×ÅÒÎÙÊ ÄÉÎÁÍÉÞÅÓËÉÊ ÓÉÍ×ÏÌ"
 
-#: readelf.c:9566
+#: readelf.c:7073
 #, c-format
 msgid ""
 "\n"
-"The .debug_str section is empty.\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
 msgstr ""
 "\n"
-"òÁÚÄÅÌ .debug_str ÐÕÓÔ.\n"
+"éÎÆÏÒÍÁÃÉÑ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÓÉÍ×ÏÌÁ ÎÅ ÄÏÓÔÕÐÎÁ ÄÌÑ ÏÔÏÂÒÁÖÅÎÉÑ ÓÉÍ×ÏÌÏ×.\n"
 
-#: readelf.c:9570
+#: readelf.c:7085
 #, c-format
 msgid ""
-"Contents of the .debug_str section:\n"
 "\n"
+"Histogram for bucket list length (total of %lu buckets):\n"
 msgstr ""
-"óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ .debug_str:\n"
 "\n"
+"çÉÓÔÏÇÒÁÍÍÁ ÄÌÑ ÄÌÉÎÙ ÓÐÉÓËÁ ÏÂÌÁÓÔÅÊ ÐÁÍÑÔÉ (×ÓÅÇÏ %lu ÏÂÌÁÓÔÅÊ):\n"
 
-#: readelf.c:9675
-msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
-msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ aganges ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3.\n"
-
-#: readelf.c:9679
-#, c-format
-msgid "  Length:                   %ld\n"
-msgstr "  äÌÉÎÁ:                    %ld\n"
-
-#: readelf.c:9680
+#: readelf.c:7087
 #, c-format
-msgid "  Version:                  %d\n"
-msgstr "  ÷ÅÒÓÉÑ:                   %d\n"
+msgid " Length  Number     %% of total  Coverage\n"
+msgstr " äÌÉÎÁ þÉÓÌÏ        %% ÏÔ ×ÓÅÇÏ  ïÈ×ÁÔ\n"
 
-#: readelf.c:9681
-#, c-format
-msgid "  Offset into .debug_info:  %lx\n"
-msgstr "  óÍÅÝÅÎÉÅ × .debug_info:   %lx\n"
+#: readelf.c:7092 readelf.c:7108 readelf.c:8031 readelf.c:8223
+msgid "Out of memory"
+msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ"
 
-#: readelf.c:9682
+#: readelf.c:7157
 #, c-format
-msgid "  Pointer Size:             %d\n"
-msgstr "  òÁÚÍ. ÕËÁÚÁÔ:             %d\n"
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr ""
+"\n"
+"óÅÇÍÅÎÔ ÄÉÎÁÍÉÞÅÓËÏÊ ÉÎÆÏÒÍÁÃÉÉ ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%lx ÓÏÄÅÒÖÉÔ %d ÐÕÎËÔÏ×:\n"
 
-#: readelf.c:9683
+#: readelf.c:7160
 #, c-format
-msgid "  Segment Size:             %d\n"
-msgstr "  òÁÚÍ. ÓÅÇÍ.:              %d\n"
+msgid " Num: Name                           BoundTo     Flags\n"
+msgstr " þÉÓ: éÍÑ                            çÒÁÎÉÃÁ     æÌÁÇÉ\n"
 
-#: readelf.c:9685
+#: readelf.c:7212
 #, c-format
 msgid ""
 "\n"
-"    Address  Length\n"
+"Assembly dump of section %s\n"
 msgstr ""
 "\n"
-"    áÄÒÅÓ    äÌÉÎÁ\n"
+"óÂÏÒÏÞÎÙÊ ÄÁÍРÒÁÚÄÅÌÁ %s\n"
 
-#: readelf.c:9741
+#: readelf.c:7233
 #, c-format
 msgid ""
 "\n"
-"The .debug_ranges section is empty.\n"
+"Section '%s' has no data to dump.\n"
 msgstr ""
 "\n"
-"òÁÚÄÅÌ .debug_ranges ÐÕÓÔ.\n"
-
-#. FIXME: Should we handle this case?
-#: readelf.c:9786
-msgid "Range lists in .debug_info section aren't in ascending order!\n"
-msgstr "óÐÉÓËÉ ÄÉÁÐÁÚÏÎÏ× × ÒÁÚÄÅÌÅ .debug_info ÎÅ ÕÐÏÒÑÄÏÞÅÎÙ ÐÏ ×ÏÚÒÁÓÔÁÎÉÀ!\n"
-
-#: readelf.c:9789
-msgid "No range lists in .debug_info section!\n"
-msgstr "÷ ÒÁÚÄÅÌÅ .debug_info ÎÅÔ ÓÐÉÓËÏ× ÄÉÁÐÁÚÏÎÏ×!\n"
-
-#: readelf.c:9792
-#, c-format
-msgid "Range lists in .debug_ranges section start at 0x%lx\n"
-msgstr "óÐÉÓËÉ ÄÉÁÐÁÚÏÎÏ× × ÒÁÚÄÅÌÅ .debug_loc ÎÁÞÉÎÁÀÔÓÑ Ó 0x%lx\n"
+"òÁÚÄÅÌ '%s' ÎÅ ÓÏÄÅÒÖÉÔ ÄÁÎÎÙÈ ÄÌÑ ÄÁÍÐÁ.\n"
 
-#: readelf.c:9795
+#: readelf.c:7238
 #, c-format
 msgid ""
-"Contents of the .debug_ranges section:\n"
 "\n"
+"Hex dump of section '%s':\n"
 msgstr ""
-"óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ .debug_ranges:\n"
 "\n"
+"Hex-ÄÁÍРÒÁÚÄÅÌÁ '%s':\n"
 
-#: readelf.c:9796
-#, c-format
-msgid "    Offset   Begin    End\n"
-msgstr "    óÍÅÝ.    îÁÞÁÌÏ   ëÏÎÅÃ\n"
-
-#: readelf.c:9820
-#, c-format
-msgid "There is a hole [0x%lx - 0x%lx] in .debug_ranges section.\n"
-msgstr "÷ ÒÁÚÄÅÌÅ .debug_ranges ÐÒÉÓÕÔÓÔ×ÕÅÔ ÄÙÒÁ [0x%lx - 0x%lx].\n"
-
-#: readelf.c:9823
+#: readelf.c:7359
 #, c-format
-msgid "There is an overlap [0x%lx - 0x%lx] in .debug_ranges section.\n"
-msgstr "÷ ÒÁÚÄÅÌÅ .debug_ranges ÐÒÉÓÕÔÓÔ×ÕÅÔ ÐÅÒÅËÒÙÔÉÅ [0x%lx - 0x%lx].\n"
+msgid "skipping invalid relocation offset 0x%lx in section %s\n"
+msgstr "ÐÒÏÐÕÓËÁÅÔÓÑ ÎÅ×ÅÒÎÏÅ ÓÍÅÝÅÎÉÅ ÐÅÒÅÍÅÝÅÎÉÑ 0x%lx × ÒÁÚÄÅÌÅ %s\n"
 
-#: readelf.c:10017
+#: readelf.c:7376
 #, c-format
-msgid "The section %s contains:\n"
-msgstr "òÁÚÄÅÌ %s ÓÏÄÅÒÖÉÔ:\n"
+msgid "skipping unexpected symbol type %s in relocation in section .rela%s\n"
+msgstr "ÐÒÏÐÕÓËÁÅÔÓÑ ÎÅÏÖÉÄÁÎÎÙÊ ÔÉРÓÉÍ×ÏÌÁ %s × ÐÅÒÅÍÅÝÅÎÉÉ × ÒÁÚÄÅÌÅ .rela%s\n"
 
-#: readelf.c:10663
+#: readelf.c:7402
 #, c-format
-msgid "unsupported or unknown DW_CFA_%d\n"
-msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÉÌÉ ÎÅÉÚ×ÅÓÔÎÙÊ DW_CFA_%d\n"
+msgid "skipping unexpected symbol type %s in relocation in section .rela.%s\n"
+msgstr "ÐÒÏÐÕÓËÁÅÔÓÑ ÎÅÏÖÉÄÁÎÎÙÊ ÔÉРÓÉÍ×ÏÌÁ %s × ÐÅÒÅÍÅÝÅÎÉÉ × ÒÁÚÄÅÌÅ .rela.%s\n"
 
-#: readelf.c:10688
+#: readelf.c:7435
 #, c-format
-msgid "Displaying the debug contents of section %s is not yet supported.\n"
-msgstr "ïÔÏÂÒÁÖÅÎÉÅ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ ÒÁÚÄÅÌÁ %s ÅÝÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ.\n"
+msgid "%s section data"
+msgstr "ÄÁÎÎÙÅ ÒÁÚÄÅÌÁ %s"
 
-#: readelf.c:10732
+#: readelf.c:7472
 #, c-format
 msgid ""
 "\n"
@@ -4442,29 +4523,44 @@ msgstr ""
 "\n"
 "òÁÚÄÅÌ '%s' ÎÅ ÓÏÄÅÒÖÉÔ ÏÔÌÁÄÏÞÎÙÈ ÄÁÎÎÙÈ.\n"
 
-#: readelf.c:10746
-msgid "debug section data"
-msgstr "äÁÎÎÙÅ ÒÁÚÄÅÌÁ ÏÔÌÁÄËÉ"
-
-#: readelf.c:10765
+#: readelf.c:7498
 #, c-format
 msgid "Unrecognized debug section: %s\n"
 msgstr "îÅÒÁÓÐÏÚÎÁÎÎÙÊ ÒÁÚÄÅÌ ÏÔÌÁÄËÉ: %s\n"
 
-#: readelf.c:10800
+#: readelf.c:7533
 #, c-format
 msgid "Section %d was not dumped because it does not exist!\n"
 msgstr "äÌÑ ÒÁÚÄÅÌÁ %d ÄÁÍРÎÅ ÂÙÌ ×ÙÐÏÌÎÅÎ, ÐÏÔÏÍÕ ÞÔÏ ÏΠÎÅ ÓÕÝÅÓÔ×ÕÅÔ!\n"
 
-#: readelf.c:10872 readelf.c:11236
+#: readelf.c:7791
+msgid "attributes"
+msgstr "ÁÔÒÉÂÕÔÙ"
+
+#: readelf.c:7809
+#, c-format
+msgid "ERROR: Bad section length (%d > %d)\n"
+msgstr "ïûéâëá: îÅ×ÅÒÎÁÑ ÄÌÉÎÁ ÒÁÚÄÅÌÁ (%d > %d)\n"
+
+#: readelf.c:7830
+#, c-format
+msgid "ERROR: Bad subsection length (%d > %d)\n"
+msgstr "ïûéâëá: îÅ×ÅÒÎÁÑ ÄÌÉÎÁ ÐÏÄÒÁÚÄÅÌÁ (%d > %d)\n"
+
+#: readelf.c:7880
+#, c-format
+msgid "Unknown format '%c'\n"
+msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÆÏÒÍÁÔ '%c'\n"
+
+#: readelf.c:7936 readelf.c:8304
 msgid "liblist"
 msgstr "liblist"
 
-#: readelf.c:10961
+#: readelf.c:8025
 msgid "options"
 msgstr "ÏÐÃÉÉ"
 
-#: readelf.c:10991
+#: readelf.c:8055
 #, c-format
 msgid ""
 "\n"
@@ -4473,15 +4569,15 @@ msgstr ""
 "\n"
 "òÁÚÄÅÌ '%s' ÓÏÄÅÒÖÉÔ %d ÐÕÎËÔÏ×:\n"
 
-#: readelf.c:11152
+#: readelf.c:8216
 msgid "conflict list found without a dynamic symbol table"
 msgstr "ÓÐÉÓÏË ËÏÎÆÌÉËÔÏ× ÎÁÊÄÅΠÂÅÚ ÔÁÂÌÉÃÙ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÉÍ×ÏÌÏ×"
 
-#: readelf.c:11168 readelf.c:11182
+#: readelf.c:8232 readelf.c:8246
 msgid "conflict"
 msgstr "ËÏÎÆÌÉËÔ"
 
-#: readelf.c:11192
+#: readelf.c:8256
 #, c-format
 msgid ""
 "\n"
@@ -4490,15 +4586,15 @@ msgstr ""
 "\n"
 "òÁÚÄÅÌ '.conflict' ÓÏÄÅÒÖÉÔ %lu ÐÕÎËÔÏ×:\n"
 
-#: readelf.c:11194
+#: readelf.c:8258
 msgid "  Num:    Index       Value  Name"
 msgstr "  îÏÍ:    éÎÄÅËÓ      úÎÁÞ.  éÍÑ"
 
-#: readelf.c:11243
+#: readelf.c:8311
 msgid "liblist string table"
 msgstr "ÔÁÂÌÉÃÁ ÓÔÒÏË liblist"
 
-#: readelf.c:11252
+#: readelf.c:8321
 #, c-format
 msgid ""
 "\n"
@@ -4507,90 +4603,90 @@ msgstr ""
 "\n"
 "òÁÚÄÅÌ ÓÐÉÓËÁ ÂÉÂÌÉÏÔÅË '%s' ÓÏÄÅÒÖÉÔ %lu ÐÕÎËÔÏ×:\n"
 
-#: readelf.c:11303
+#: readelf.c:8374
 msgid "NT_AUXV (auxiliary vector)"
 msgstr "NT_AUXV (×ÓÐÏÍÏÇÁÔÅÌØÎÙÊ ×ÅËÔÏÒ)"
 
-#: readelf.c:11305
+#: readelf.c:8376
 msgid "NT_PRSTATUS (prstatus structure)"
 msgstr "NT_PRSTATUS (ÓÔÒÕËÔÕÒÁ prstatus)"
 
-#: readelf.c:11307
+#: readelf.c:8378
 msgid "NT_FPREGSET (floating point registers)"
 msgstr "NT_FPREGSET (ÒÅÇÉÓÔÒÙ Ó ÐÌÁ×ÁÀÝÅÊ ÔÏÞËÏÊ)"
 
-#: readelf.c:11309
+#: readelf.c:8380
 msgid "NT_PRPSINFO (prpsinfo structure)"
 msgstr "NT_PRPSINFO (ÓÔÒÕËÔÕÒÁ prpsinfo)"
 
-#: readelf.c:11311
+#: readelf.c:8382
 msgid "NT_TASKSTRUCT (task structure)"
 msgstr "NT_TASKSTRUCT (ÓÔÒÕËÔÕÒÁ task)"
 
-#: readelf.c:11313
+#: readelf.c:8384
 msgid "NT_PRXFPREG (user_xfpregs structure)"
 msgstr "NT_PRXFPREG (ÓÔÒÕËÔÕÒÁ user_xfpregs)"
 
-#: readelf.c:11315
+#: readelf.c:8386
 msgid "NT_PSTATUS (pstatus structure)"
 msgstr "NT_PSTATUS (ÓÔÒÕËÔÕÒÁ pstatus)"
 
-#: readelf.c:11317
+#: readelf.c:8388
 msgid "NT_FPREGS (floating point registers)"
 msgstr "NT_FPREGS (ÒÅÇÉÓÔÒÙ Ó ÐÌÁ×ÁÀÝÅÊ ÔÏÞËÏÊ)"
 
-#: readelf.c:11319
+#: readelf.c:8390
 msgid "NT_PSINFO (psinfo structure)"
 msgstr "NT_PSINFO (ÓÔÒÕËÔÕÒÁ psinfo)"
 
-#: readelf.c:11321
+#: readelf.c:8392
 msgid "NT_LWPSTATUS (lwpstatus_t structure)"
 msgstr "NT_LWPSTATUS (ÓÔÒÕËÔÕÒÁ lwpstatus_t)"
 
-#: readelf.c:11323
+#: readelf.c:8394
 msgid "NT_LWPSINFO (lwpsinfo_t structure)"
 msgstr "NT_LWPSINFO (ÓÔÒÕËÔÕÒÁ lwpsinfo_t)"
 
-#: readelf.c:11325
+#: readelf.c:8396
 msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
 msgstr "NT_WIN32PSTATUS (ÓÔÒÕËÔÕÒÁ win32_pstatus)"
 
-#: readelf.c:11333
+#: readelf.c:8404
 msgid "NT_VERSION (version)"
 msgstr "NT_VERSION (×ÅÒÓÉÑ)"
 
-#: readelf.c:11335
+#: readelf.c:8406
 msgid "NT_ARCH (architecture)"
 msgstr "NT_ARCH (ÁÒÈÉÔÅËÔÕÒÁ)"
 
-#: readelf.c:11340 readelf.c:11362
+#: readelf.c:8411 readelf.c:8433
 #, c-format
 msgid "Unknown note type: (0x%08x)"
 msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÔÉРËÏÍÍÅÎÔÁÒÉÑ: (0x%08x)"
 
 #. NetBSD core "procinfo" structure.
-#: readelf.c:11352
+#: readelf.c:8423
 msgid "NetBSD procinfo structure"
 msgstr "óÔÒÕËÔÕÒÁ procinfo NetBSD"
 
-#: readelf.c:11379 readelf.c:11393
+#: readelf.c:8450 readelf.c:8464
 msgid "PT_GETREGS (reg structure)"
 msgstr "PT_GETREGS (ÓÔÒÕËÔÕÒÁ reg)"
 
-#: readelf.c:11381 readelf.c:11395
+#: readelf.c:8452 readelf.c:8466
 msgid "PT_GETFPREGS (fpreg structure)"
 msgstr "PT_GETFPREGS (ÓÔÒÕËÔÕÒÁ fpreg)"
 
-#: readelf.c:11401
+#: readelf.c:8472
 #, c-format
 msgid "PT_FIRSTMACH+%d"
 msgstr "PT_FIRSTMACH+%d"
 
-#: readelf.c:11447
+#: readelf.c:8518
 msgid "notes"
 msgstr "ËÏÍÍÅÎÔÁÒÉÉ"
 
-#: readelf.c:11453
+#: readelf.c:8524
 #, c-format
 msgid ""
 "\n"
@@ -4599,27 +4695,27 @@ msgstr ""
 "\n"
 "ëÏÍÍÅÎÔÁÒÉÉ ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%08lx ÄÌÉÎÏÊ 0x%08lx:\n"
 
-#: readelf.c:11455
+#: readelf.c:8526
 #, c-format
 msgid "  Owner\t\tData size\tDescription\n"
 msgstr "  ÷ÌÁÄÅÌÅÃ\t\tòÁÚÍÅÒ ÄÁÎÎÙÈ\tïÐÉÓÁÎÉÅ\n"
 
-#: readelf.c:11474
+#: readelf.c:8545
 #, c-format
-msgid "corrupt note found at offset %x into core notes\n"
-msgstr "ÎÁÊÄÅΠÐÏ×ÒÅÖÄÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ ÓÏ ÓÍÅÝÅÎÉÅÍ %x × ÈÒÁÎÉÌÉÝÅ ËÏÍÍÅÎÔÁÒÉÅ×\n"
+msgid "corrupt note found at offset %lx into core notes\n"
+msgstr "ÎÁÊÄÅΠÐÏ×ÒÅÖÄ£ÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ ÓÏ ÓÍÅÝÅÎÉÅÍ %lx × ÈÒÁÎÉÌÉÝÅ ËÏÍÍÅÎÔÁÒÉÅ×\n"
 
-#: readelf.c:11476
+#: readelf.c:8547
 #, c-format
-msgid " type: %x, namesize: %08lx, descsize: %08lx\n"
-msgstr " ÔÉÐ: %x, ÒÁÚÍ_ÉÍÅÎÉ: %08lx, ÒÁÚÍ_ÏÐÉÓ: %08lx\n"
+msgid " type: %lx, namesize: %08lx, descsize: %08lx\n"
+msgstr " ÔÉÐ: %lx, ÒÁÚÍ_ÉÍÅÎÉ: %08lx, ÒÁÚÍ_ÏÐÉÓ: %08lx\n"
 
-#: readelf.c:11574
+#: readelf.c:8645
 #, c-format
 msgid "No note segments present in the core file.\n"
 msgstr "÷ ÆÁÊÌÅ ÓÏÄÅÒÖÉÍÏÇÏ ÏÔÓÕÔÓÔ×ÕÀÔ ÓÅÇÍÅÎÔÙ ËÏÍÍÅÎÔÁÒÉÅ×.\n"
 
-#: readelf.c:11653
+#: readelf.c:8726
 msgid ""
 "This instance of readelf has been built without support for a\n"
 "64 bit data type and so it cannot read 64 bit ELF files.\n"
@@ -4627,12 +4723,12 @@ msgstr ""
 "üÔÁ ËÏÐÉÑ readelf ÂÙÌÁ ÓÏÂÒÁÎÁ ÂÅÚ ÐÏÄÄÅÒÖËÉ 64-ÂÉÔÎÏÇÏ ÔÉÐÁ\n"
 "ÄÁÎÎÙÈ, É ÐÏÜÔÏÍÕ ÏÎÁ ÎÅ ÍÏÖÅÔ ÞÉÔÁÔØ 64-ÂÉÔÎÙÅ ÆÁÊÌÙ ELF.\n"
 
-#: readelf.c:11700 readelf.c:12059
+#: readelf.c:8775 readelf.c:9119
 #, c-format
 msgid "%s: Failed to read file header\n"
 msgstr "%s: óÂÏÊ ÐÒÉ ÞÔÅÎÉÉ ÚÁÇÏÌÏ×ËÁ ÆÁÊÌÁ\n"
 
-#: readelf.c:11713
+#: readelf.c:8788
 #, c-format
 msgid ""
 "\n"
@@ -4641,68 +4737,68 @@ msgstr ""
 "\n"
 "æÁÊÌ: %s\n"
 
-#: readelf.c:11876 readelf.c:11897 readelf.c:11934 readelf.c:12014
+#: readelf.c:8936 readelf.c:8957 readelf.c:8994 readelf.c:9074
 #, c-format
 msgid "%s: failed to read archive header\n"
 msgstr "%s: ÓÂÏÊ ÐÒÉ ÞÔÅÎÉÉ ÚÁÇÏÌÏ×ËÁ ÁÒÈÉ×Á\n"
 
-#: readelf.c:11887
+#: readelf.c:8947
 #, c-format
 msgid "%s: failed to skip archive symbol table\n"
 msgstr "%s: ÓÂÏÊ ÐÒÉ ÐÒÏÐÕÓËÅ ÔÁÂÌÉÃÙ ÓÉÍ×ÏÌÏ× ÁÒÈÉ×Á\n"
 
-#: readelf.c:11919
+#: readelf.c:8979
 #, c-format
 msgid "%s: failed to read string table\n"
 msgstr "%s: ÓÂÏÊ ÐÒÉ ÞÔÅÎÉÉ ÔÁÂÌÉÃÙ ÓÔÒÏË\n"
 
-#: readelf.c:11955
+#: readelf.c:9015
 #, c-format
 msgid "%s: invalid archive string table offset %lu\n"
 msgstr "%s: ÎÅ×ÅÒÎÏÅ ÓÍÅÝÅÎÉÅ ÔÁÂÌÉÃÙ ÓÔÒÏË ÁÒÈÉ×Á %lu\n"
 
-#: readelf.c:11971
+#: readelf.c:9031
 #, c-format
 msgid "%s: bad archive file name\n"
 msgstr "%s: ÎÅ×ÅÒÎÏÅ ÉÍÑ ÆÁÊÌÁ ÁÒÈÉ×Á\n"
 
-#: readelf.c:12003
+#: readelf.c:9063
 #, c-format
 msgid "%s: failed to seek to next archive header\n"
 msgstr "%s: ÓÂÏÊ ÐÒÉ ÐÒÏÉÓËÅ ÓÌÅÄÕÀÝÅÇÏ ÚÁÇÏÌÏ×ËÁ ÁÒÈÉ×Á\n"
 
-#: readelf.c:12037
+#: readelf.c:9097
 #, c-format
 msgid "'%s': No such file\n"
 msgstr "'%s': îÅÔ ÔÁËÏÇÏ ÆÁÊÌÁ\n"
 
-#: readelf.c:12039
+#: readelf.c:9099
 #, c-format
 msgid "Could not locate '%s'.  System error message: %s\n"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ '%s'. óÉÓÔÅÍÎÏÅ ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ: %s\n"
 
-#: readelf.c:12046
+#: readelf.c:9106
 #, c-format
 msgid "'%s' is not an ordinary file\n"
 msgstr "%s ÎÅ Ñ×ÌÑÅÔÓÑ ÏÂÙÞÎÙÍ ÆÁÊÌÏÍ\n"
 
-#: readelf.c:12053
+#: readelf.c:9113
 #, c-format
 msgid "Input file '%s' is not readable.\n"
 msgstr "÷ÈÏÄÎÏÊ ÆÁÊÌ '%s' Ñ×ÌÑÅÔÓÑ ÎÅÞÉÔÁÅÍÙÍ.\n"
 
-#: rename.c:127
+#: rename.c:129
 #, c-format
 msgid "%s: cannot set time: %s"
 msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ×ÒÅÍÑ: %s"
 
 #. We have to clean up here.
-#: rename.c:162 rename.c:200
+#: rename.c:164 rename.c:202
 #, c-format
 msgid "unable to rename '%s' reason: %s"
 msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÉÍÅÎÏ×ÁÔØ '%s' ÐÒÉÞÉÎÁ: %s"
 
-#: rename.c:208
+#: rename.c:210
 #, c-format
 msgid "unable to copy file '%s' reason: %s"
 msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓËÏÐÉÒÏ×ÁÔØ ÆÁÊÌ '%s' ÐÒÉÞÉÎÁ: %s"
@@ -5084,17 +5180,17 @@ msgstr "
 msgid "can't open `%s' for output: %s"
 msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ `%s' ÄÌÑ ×Ù×ÏÄÁ ÄÁÎÎÙÈ: %s"
 
-#: size.c:81
+#: size.c:83
 #, c-format
 msgid " Displays the sizes of sections inside binary files\n"
 msgstr " ïÔÏÂÒÁÖÁÅÔ ÒÁÚÍÅÒÙ ÒÁÚÄÅÌÏ× ×ÎÕÔÒÉ Ä×ÏÉÞÎÙÈ ÆÁÊÌÏ×\n"
 
-#: size.c:82
+#: size.c:84
 #, c-format
 msgid " If no input file(s) are specified, a.out is assumed\n"
 msgstr " åÓÌÉ ×ÈÏÄÎÙÅ ÆÁÊÌÙ ÎÅ ÕËÁÚÁÎÙ, ÐÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ ÆÁÊÌ a.out\n"
 
-#: size.c:83
+#: size.c:85
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5102,6 +5198,7 @@ msgid ""
 "  -o|-d|-x  --radix={8|10|16}         Display numbers in octal, decimal or hex\n"
 "  -t        --totals                  Display the total sizes (Berkeley only)\n"
 "            --target=<bfdname>        Set the binary file format\n"
+"            @<file>                   Read options from <file>\n"
 "  -h        --help                    Display this information\n"
 "  -v        --version                 Display the program's version\n"
 "\n"
@@ -5112,16 +5209,17 @@ msgstr ""
 "                                      ÉÌÉ ÛÅÓÔÎÁÄÃÁÔÉÒÉÞÎÏÍ ÆÏÒÍÁÔÅ\n"
 "  -t        --totals                  ÷Ù×ÏÄ ÓÕÍÍÁÒÎÙÈ ÒÁÚÍÅÒÏ× (ÔÏÌØËÏ Berkeley)\n"
 "            --target=<bfd-ÉÍÑ>        õÓÔÁÎÏ×ËÁ ÆÏÒÍÁÔÁ Ä×ÏÉÞÎÏÇÏ ÆÁÊÌÁ\n"
+"            @<ÆÁÊÌ>                   þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
 "  -h        --help                    ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n"
 "  -v        --version                 ÷Ù×ÏÄ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ\n"
 "\n"
 
-#: size.c:153
+#: size.c:158
 #, c-format
 msgid "invalid argument to --format: %s"
 msgstr "ÎÅ×ÅÒÎÙÊ ÁÒÇÕÍÅÎÔ --format: %s"
 
-#: size.c:180
+#: size.c:185
 #, c-format
 msgid "Invalid radix: %s\n"
 msgstr "îÅ×ÅÒÎÙÊ radix: %s\n"
@@ -5138,6 +5236,7 @@ msgid ""
 "  -q --quick       (Obsolete - ignored)\n"
 "  -n --noprescan   Do not perform a scan to convert commons into defs\n"
 "  -d --debug       Display information about what is being done\n"
+"  @<file>          Read options from <file>\n"
 "  -h --help        Display this information\n"
 "  -v --version     Print the program's version number\n"
 msgstr ""
@@ -5145,10 +5244,11 @@ msgstr ""
 "  -q --quick       (ÕÓÔÁÒÅÌÁ - ÉÇÎÏÒÉÒÕÅÔÓÑ)\n"
 "  -n --noprescan   îÅ ×ÙÐÏÌÎÑÔØ ÓËÁÎÉÒÏ×ÁÎÉÅ ÄÌÑ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ commons × defs\n"
 "  -d --debug       ÷Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ Ï ÔÏÍ, ÞÔÏ ×ÙÐÏÌÎÑÅÔÓÑ\n"
+"  @<ÆÁÊÌ>          þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
 "  -h --help        ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n"
 "  -v --version     ÷Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ\n"
 
-#: srconv.c:1866
+#: srconv.c:1869
 #, c-format
 msgid "unable to open output file %s"
 msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ %s"
@@ -5286,22 +5386,22 @@ msgstr "
 msgid "Unrecognized demangled builtin type\n"
 msgstr "îÅÏÖÉÄÁÎÎÙÊ ÄÅËÏÄÉÒÏ×ÁÎÎÙÊ ×ÓÔÒÏÅÎÎÙÊ ÔÉÐ\n"
 
-#: strings.c:206
+#: strings.c:218
 #, c-format
 msgid "invalid number %s"
 msgstr "ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ %s"
 
-#: strings.c:643
+#: strings.c:700
 #, c-format
 msgid "invalid integer argument %s"
 msgstr "ÎÅ×ÅÒÎÙÊ ÃÅÌÏÞÉÓÌÅÎÎÙÊ ÁÒÇÕÍÅÎÔ %s"
 
-#: strings.c:652
+#: strings.c:709
 #, c-format
 msgid " Display printable strings in [file(s)] (stdin by default)\n"
 msgstr " ÷Ù×ÏÄÉÔ ÐÒÉÇÏÄÎÙÅ ÄÌÑ ÐÅÞÁÔÉ ÓÔÒÏËÉ × [ÆÁÊÌ(ÁÈ)] (ÐÏ ÕÍÏÌÞÁÎÉÀ stdin)\n"
 
-#: strings.c:653
+#: strings.c:710
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5314,6 +5414,7 @@ msgid ""
 "  -T --target=<BFDNAME>     Specify the binary file format\n"
 "  -e --encoding={s,S,b,l,B,L} Select character size and endianness:\n"
 "                            s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit\n"
+"  @<file>                   Read options from <file>\n"
 "  -h --help                 Display this information\n"
 "  -v --version              Print the program's version number\n"
 msgstr ""
@@ -5327,15 +5428,16 @@ msgstr ""
 "  -T --target=<BFD-éíñ>     õËÁÚÁÎÉÅ ÆÏÒÍÁÔÁ Ä×ÏÉÞÎÏÇÏ ÆÁÊÌÁ\n"
 "  -e --encoding={s,S,b,l,B,L} ÷ÙÂÏÒ ÒÁÚÍÅÒÁ ÓÉÍ×ÏÌÁ É endianness:\n"
 "                            s = 7-ÂÉÔ, S = 8-ÂÉÔ, {b,l} = 16-ÂÉÔ, {B,L} = 32-ÂÉÔ\n"
+"  @<ÆÁÊÌ>                   þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
 "  -h --help                 ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n"
 "  -v --version              ÷Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ\n"
 
-#: sysdump.c:649
+#: sysdump.c:642
 #, c-format
 msgid "Print a human readable interpretation of a SYSROFF object file\n"
 msgstr "÷Ù×ÏÄ ÕÄÏÂÏÞÉÔÁÅÍÏÊ ÄÌÑ ÞÅÌÏ×ÅËÁ ÉÎÔÅÒÐÒÅÔÁÃÉÉ ÏÂßÅËÔÎÏÇÏ ÆÁÊÌÁ SYSROFF\n"
 
-#: sysdump.c:650
+#: sysdump.c:643
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5346,7 +5448,7 @@ msgstr ""
 "  -h --help        ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n"
 "  -v --version     ÷Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ\n"
 
-#: sysdump.c:715
+#: sysdump.c:710
 #, c-format
 msgid "cannot open input file %s"
 msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÈÏÄÎÏÊ ÆÁÊÌ %s"
@@ -5456,14 +5558,16 @@ msgstr "     --yydebug                 
 #, c-format
 msgid ""
 "  -r                           Ignored for compatibility with rc\n"
+"  @<file>                      Read options from <file>\n"
 "  -h --help                    Print this help message\n"
 "  -V --version                 Print version information\n"
 msgstr ""
 "  -r                           ðÒÏÐÕÝÅÎÁ ÄÌÑ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ Ó rc\n"
+"  @<ÆÁÊÌ>                      þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
 "  -h --help                    ÷Ù×ÏÄ ÜÔÏÇÏ ÓÐÒÁ×ÏÞÎÏÇÏ ÓÏÏÂÝÅÎÉÑ\n"
 "  -V --version                 ÷Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ Ï ×ÅÒÓÉÉ\n"
 
-#: windres.c:664
+#: windres.c:665
 #, c-format
 msgid ""
 "FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
@@ -5475,20 +5579,20 @@ msgstr ""
 "âÅÚ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ ÉÓÐÏÌØÚÕÅÔ stdin, ÐÏ ÕÍÏÌÞÁÎÉÀ rc. âÅÚ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ\n"
 "ÉÓÐÏÌØÚÕÅÔÓÑ stdout, ÐÏ ÕÍÏÌÞÁÎÉÀ rc.\n"
 
-#: windres.c:800
+#: windres.c:803
 msgid "invalid option -f\n"
 msgstr "ÎÅ×ÅÒÎÁÑ ÏÐÃÉÑ -f\n"
 
-#: windres.c:805
+#: windres.c:808
 msgid "No filename following the -fo option.\n"
 msgstr "îÅÔ ÉÍÅÎÉ ÆÁÊÌÁ ÐÏÓÌÅ ÏÐÃÉÉ -fo.\n"
 
-#: windres.c:863
+#: windres.c:866
 #, c-format
 msgid "Option -I is deprecated for setting the input format, please use -J instead.\n"
 msgstr "ïÐÃÉÑ -I ËÒÁÊÎÅ ÎÅ ÒÅËÏÍÅÎÄÕÅÔÓÑ ÄÌÑ ÕÓÔÁÎÏ×ËÉ ×ÈÏÄÎÏÇÏ ÆÏÒÍÁÔÁ, ÐÏÖÁÌÕÊÓÔÁ, ÉÓÐÏÌØÚÕÊÔÅ -J.\n"
 
-#: windres.c:981
+#: windres.c:984
 msgid "no resources"
 msgstr "ÎÅÔ ÒÅÓÕÒÓÏ×"
 
index cd9d50f..df512f8 100644 (file)
@@ -4,10 +4,10 @@
 # 
 msgid ""
 msgstr ""
-"Project-Id-Version: binutils-2.15.96\n"
+"Project-Id-Version: binutils-2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-03 21:03+1030\n"
-"PO-Revision-Date: 2006-01-23 23:18+1030\n"
+"POT-Creation-Date: 2005-10-25 09:14+0930\n"
+"PO-Revision-Date: 2006-05-23 17:58+0930\n"
 "Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
 "Language-Team: Vietnamese <gnomevi-list@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
@@ -16,27 +16,29 @@ msgstr ""
 "Plural-Forms: nplurals=1; plural=0\n"
 "X-Generator: LocFactoryEditor 1.6b31\n"
 
-#: addr2line.c:73
+#: addr2line.c:76
 #, c-format
 msgid "Usage: %s [option(s)] [addr(s)]\n"
 msgstr "Cách sử dụng: %s [tùy_chọn...] [địa_chỉ...)]\n"
 
-#: addr2line.c:74
+#: addr2line.c:77
 #, c-format
 msgid " Convert addresses into line number/file name pairs.\n"
 msgstr " Chuyển đổi địa chỉ sang cặp số thứ tự dòng/tên tập tin.\n"
 
-#: addr2line.c:75
+#: addr2line.c:78
 #, c-format
 msgid " If no addresses are specified on the command line, they will be read from stdin\n"
-msgstr "Nếu chưa ghi rõ địa chỉ trên dòng lệnh, sẽ đọc chúng từ thiết bị nhập chuẩn\n"
+msgstr " Nếu chưa ghi rõ địa chỉ trên dòng lệnh, sẽ đọc chúng từ thiết bị nhập chuẩn\n"
 
-#: addr2line.c:76
+#: addr2line.c:79
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                Read options from <file>\n"
 "  -b --target=<bfdname>  Set the binary file format\n"
 "  -e --exe=<executable>  Set the input file name (default is a.out)\n"
+"  -i --inlines\t\t Unwind inlined functions\n"
 "  -s --basenames         Strip directory names\n"
 "  -f --functions         Show function names\n"
 "  -C --demangle[=style]  Demangle function names\n"
@@ -45,9 +47,11 @@ msgid ""
 "\n"
 msgstr ""
 " Tùy chọn:\n"
-"  -b --target=<khuôn_dạng>  \tLập khuôn dạng tập tin nhị phân (_đích_)\n"
+"  @<tập_tin>\t\t\tđọc các tùy chọn từ tập tin đó\n"
+"    -b --target=<khuôn_dạng>  \tLập khuôn dạng tập tin nhị phân (_đích_)\n"
 "  -e --exe=<chương_trình>  \tLập tên tập tin nhập (mặc định là <a.out>)\n"
 "\t\t\t\t\t\t\t\t(_chương trình chạy được_)\n"
+"  -i --inlines\t\t\tTháo ra các hàm trực tiếp\n"
 "  -s --basenames\t\tTước các tên thư mục (_các tên cơ bản_)\n"
 "  -f --functions         \tHiện tên _các chức năng_\n"
 "  -C --demangle[=kiểu_dáng]  \t_Tháo gỡ_ tên chức năng\n"
@@ -55,211 +59,218 @@ msgstr ""
 "  -v --version           \tHiện _phiên bản_ của chương trình\n"
 "\n"
 
-#: addr2line.c:88 ar.c:263 coffdump.c:467 nlmconv.c:1110 objcopy.c:478
-#: objcopy.c:512 readelf.c:2631 size.c:99 srconv.c:1731 strings.c:667
-#: sysdump.c:655 windres.c:672
+#: addr2line.c:93 ar.c:263 coffdump.c:466 nlmconv.c:1113 objcopy.c:486
+#: objcopy.c:520 readelf.c:2622 size.c:102 srconv.c:1732 strings.c:725
+#: sysdump.c:648 windres.c:673
 #, c-format
 msgid "Report bugs to %s\n"
 msgstr "Hãy trình báo lỗi nào cho %s\n"
 
-#: addr2line.c:241
+#: addr2line.c:253
 #, c-format
 msgid "%s: can not get addresses from archive"
 msgstr "%s: không thể lấy địa chỉ từ kho"
 
-#: addr2line.c:311 nm.c:1519 objdump.c:2848
+#: addr2line.c:325 nm.c:1523 objdump.c:3033
 #, c-format
 msgid "unknown demangling style `%s'"
 msgstr "không biết kiểu dáng tháo gõ « %s »"
 
-#: ar.c:205
+#: ar.c:203
 #, c-format
 msgid "no entry %s in archive\n"
 msgstr "không có mục nhập %s trong kho\n"
 
-#: ar.c:221
+#: ar.c:219
 #, c-format
 msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
 msgstr "Cách sử dụng: %s [tùy chọn mô phỏng] [-]{dmpqrstx}[abcfilNoPsSuvV] [tên thành viên] [số đếm] tập_tin_kho tập_tin...\n"
 
-#: ar.c:224
+#: ar.c:222
 #, c-format
 msgid "       %s -M [<mri-script]\n"
 msgstr "       %s -M [<tập_lệnh-mri]\n"
 
-#: ar.c:225
+#: ar.c:223
 #, c-format
 msgid " commands:\n"
 msgstr " lệnh:\n"
 
-#: ar.c:226
+#: ar.c:224
 #, c-format
 msgid "  d            - delete file(s) from the archive\n"
 msgstr "  d            • _xóa bỏ_ tập tin ra kho\n"
 
-#: ar.c:227
+#: ar.c:225
 #, c-format
 msgid "  m[ab]        - move file(s) in the archive\n"
 msgstr "  m[ab]        • _di chuyển_ tập tin trong kho\n"
 
-#: ar.c:228
+#: ar.c:226
 #, c-format
 msgid "  p            - print file(s) found in the archive\n"
 msgstr "  p            • _in_ tập tin được tìm trong kho\n"
 
-#: ar.c:229
+#: ar.c:227
 #, c-format
 msgid "  q[f]         - quick append file(s) to the archive\n"
 msgstr "  q[f]         • phụ thêm _nhanh_ tập tin vào kho\n"
 
-#: ar.c:230
+#: ar.c:228
 #, c-format
 msgid "  r[ab][f][u]  - replace existing or insert new file(s) into the archive\n"
 msgstr "  r[ab][f][u]  • _thay thế_ tập tin đã có, hoặc chèn tập tin mới vào kho\n"
 
-#: ar.c:231
+#: ar.c:229
 #, c-format
 msgid "  t            - display contents of archive\n"
 msgstr "  t            • hiển thị nội dung kho\n"
 
-#: ar.c:232
+#: ar.c:230
 #, c-format
 msgid "  x[o]         - extract file(s) from the archive\n"
 msgstr "  x[o]         • trích tập tin ra kho\n"
 
-#: ar.c:233
+#: ar.c:231
 #, c-format
 msgid " command specific modifiers:\n"
 msgstr " bộ sửa đổi đặc trưng cho lệnh:\n"
 
-#: ar.c:234
+#: ar.c:232
 #, c-format
 msgid "  [a]          - put file(s) after [member-name]\n"
 msgstr "  [a]          • để tập tin _sau_ [tên thành viên]\n"
 
-#: ar.c:235
+#: ar.c:233
 #, c-format
 msgid "  [b]          - put file(s) before [member-name] (same as [i])\n"
 msgstr "  [b]          • để tập tin _trước_ [tên thành viên] (bằng [i])\n"
 
-#: ar.c:236
+#: ar.c:234
 #, c-format
 msgid "  [N]          - use instance [count] of name\n"
 msgstr "  [N]          • dùng lần [số đếm] gặp _tên_\n"
 
-#: ar.c:237
+#: ar.c:235
 #, c-format
 msgid "  [f]          - truncate inserted file names\n"
 msgstr "  [f]         • cắt bớt tên _tập tin_ đã chèn\n"
 
-#: ar.c:238
+#: ar.c:236
 #, c-format
 msgid "  [P]          - use full path names when matching\n"
 msgstr "  [P]          • dùng tên _đường dẫn_ đầy đủ khi khớp\n"
 
-#: ar.c:239
+#: ar.c:237
 #, c-format
 msgid "  [o]          - preserve original dates\n"
 msgstr "  [o]          • bảo tồn các ngày _gốc_\n"
 
-#: ar.c:240
+#: ar.c:238
 #, c-format
 msgid "  [u]          - only replace files that are newer than current archive contents\n"
 msgstr "  [u]          • thay thế chỉ những tập tin mới hơn nội dung kho hiện thời\n"
 
-#: ar.c:241
+#: ar.c:239
 #, c-format
 msgid " generic modifiers:\n"
 msgstr " bộ sửa đổi chung:\n"
 
-#: ar.c:242
+#: ar.c:240
 #, c-format
 msgid "  [c]          - do not warn if the library had to be created\n"
 msgstr "  [c]          • đừng cảnh báo nếu thư viên phải được _tạo_\n"
 
-#: ar.c:243
+#: ar.c:241
 #, c-format
 msgid "  [s]          - create an archive index (cf. ranlib)\n"
 msgstr "  [s]          • tạo chỉ mục kho (như ranlib)\n"
 
-#: ar.c:244
+#: ar.c:242
 #, c-format
 msgid "  [S]          - do not build a symbol table\n"
 msgstr "  [S]          • đừng xây dụng bảng _ký hiệu_\n"
 
-#: ar.c:245
+#: ar.c:243
 #, c-format
 msgid "  [v]          - be verbose\n"
 msgstr "  [v]          • _xuất chi tiết_\n"
 
-#: ar.c:246
+#: ar.c:244
 #, c-format
 msgid "  [V]          - display the version number\n"
 msgstr "  [V]          • hiển thị số thứ tự _phiên bản_\n"
 
-#: ar.c:253
+#: ar.c:245
+#, c-format
+msgid "  @<file>      - read options from <file>\n"
+msgstr "  @<tập_tin>\t\tđọc các tùy chọn từ tập tin đó\n"
+
+#: ar.c:252
 #, c-format
 msgid "Usage: %s [options] archive\n"
 msgstr "Cách sử dụng: %s [tùy_chọn] kho\n"
 
-#: ar.c:254
+#: ar.c:253
 #, c-format
 msgid " Generate an index to speed access to archives\n"
 msgstr " Tạo ra chỉ mục để tăng tốc độ truy cập kho\n"
 
-#: ar.c:255
+#: ar.c:254
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                      Read options from <file>\n"
 "  -h --help                    Print this help message\n"
 "  -V --version                 Print version information\n"
 msgstr ""
 "Tùy chọn:\n"
-"  -h, --help                  \thiển thị _trợ giúp_ này\n"
+"  @<tập_tin>\t\t\tđọc các tùy chọn từ tập tin đó\n"
+"    -h, --help                 \thiển thị _trợ giúp_ này\n"
 "  -V, --version            \txuất thông tin _phiên bản_\n"
 
-#: ar.c:483
+#: ar.c:485
 msgid "two different operation options specified"
 msgstr "hai tùy chọn thao tác khác đã xác định"
 
-#: ar.c:558
+#: ar.c:560
 #, c-format
 msgid "illegal option -- %c"
 msgstr "không cho phép tùy chọn « -- %c »"
 
-#: ar.c:604
+#: ar.c:606
 msgid "no operation specified"
 msgstr "chưa ghi rõ tùy chọn."
 
-#: ar.c:607
+#: ar.c:609
 msgid "`u' is only meaningful with the `r' option."
 msgstr "« u » có nghĩa chỉ cùng với tùy chọn « r »."
 
-#: ar.c:615
+#: ar.c:617
 msgid "`N' is only meaningful with the `x' and `d' options."
 msgstr "« N » có nghĩa chỉ cùng với tùy chọn « x » và « d »."
 
-#: ar.c:618
+#: ar.c:620
 msgid "Value for `N' must be positive."
 msgstr "Giá trị cho « N » phải là số dương."
 
-#: ar.c:668
+#: ar.c:670
 #, c-format
 msgid "internal error -- this option not implemented"
 msgstr "lỗi nội bộ: chưa thực hiện tùy chọn này"
 
-#: ar.c:737
+#: ar.c:739
 #, c-format
 msgid "creating %s"
 msgstr "đang tạo %s..."
 
-#: ar.c:786 ar.c:836 ar.c:1154 objcopy.c:1603
+#: ar.c:788 ar.c:838 ar.c:1156 objcopy.c:1683
 #, c-format
 msgid "internal stat error on %s"
 msgstr "lỗi stat nôi bộ trên %s"
 
 # Variable: do not translate/ biến: đừng dịch
-#: ar.c:790
+#: ar.c:792
 #, c-format
 msgid ""
 "\n"
@@ -270,37 +281,37 @@ msgstr ""
 "<%s>\n"
 "\n"
 
-#: ar.c:806 ar.c:873
+#: ar.c:808 ar.c:875
 #, c-format
 msgid "%s is not a valid archive"
 msgstr "%s không phải là một kho hợp lệ"
 
-#: ar.c:841
+#: ar.c:843
 #, c-format
 msgid "stat returns negative size for %s"
 msgstr "việc stat (lấy các thông tin) trả gởi kích cỡ âm cho %s"
 
-#: ar.c:1059
+#: ar.c:1061
 #, c-format
 msgid "No member named `%s'\n"
 msgstr "Không có thành viên tên « %s »\n"
 
-#: ar.c:1109
+#: ar.c:1111
 #, c-format
 msgid "no entry %s in archive %s!"
 msgstr "không có mục nhập %s trong kho %s."
 
-#: ar.c:1246
+#: ar.c:1248
 #, c-format
 msgid "%s: no archive map to update"
 msgstr "%s: không có ánh xạ kho cần cập nhật"
 
-#: arsup.c:83
+#: arsup.c:87
 #, c-format
 msgid "No entry %s in archive.\n"
 msgstr "Không có mục nhập %s trong kho.\n"
 
-#: arsup.c:109
+#: arsup.c:112
 #, c-format
 msgid "Can't open file %s\n"
 msgstr "Không thể mở tập tin %s\n"
@@ -356,94 +367,96 @@ msgid "  No emulation specific options\n"
 msgstr "  Không có tùy chọn đặc trưng cho mô phỏng\n"
 
 #. Macros for common output.
-#: binemul.h:42
+#: binemul.h:40
 #, c-format
 msgid " emulation options: \n"
 msgstr " tùy chọn mô phỏng:\n"
 
-#: bucomm.c:109
+#: bucomm.c:110
 #, c-format
 msgid "can't set BFD default target to `%s': %s"
 msgstr "không thể lập đích mặc định BFD thành « %s »: %s"
 
-#: bucomm.c:120
+#: bucomm.c:121
 #, c-format
 msgid "%s: Matching formats:"
 msgstr "%s: khuôn dạng khớp:"
 
-#: bucomm.c:135
+#: bucomm.c:136
 #, c-format
 msgid "Supported targets:"
 msgstr "Đích hỗ trợ :"
 
-#: bucomm.c:137
+#: bucomm.c:138
 #, c-format
 msgid "%s: supported targets:"
 msgstr "%s: đích hỗ trợ :"
 
-#: bucomm.c:153
+#: bucomm.c:154
 #, c-format
 msgid "Supported architectures:"
 msgstr "Kiến trúc hỗ trợ :"
 
-#: bucomm.c:155
+#: bucomm.c:156
 #, c-format
 msgid "%s: supported architectures:"
 msgstr "%s: kiến trúc hỗ trợ :"
 
-#: bucomm.c:348
+#: bucomm.c:349
 #, c-format
 msgid "BFD header file version %s\n"
 msgstr "Phiên bản tập tin đầu BFD %s\n"
 
-#: bucomm.c:449
+#: bucomm.c:450
 #, c-format
 msgid "%s: bad number: %s"
 msgstr "%s: số sai: %s"
 
-#: bucomm.c:466 strings.c:386
+#: bucomm.c:467 strings.c:438
 #, c-format
 msgid "'%s': No such file"
 msgstr "« %s »: không có tập tin như vậy"
 
-#: bucomm.c:468 strings.c:388
+#: bucomm.c:469 strings.c:440
 #, c-format
 msgid "Warning: could not locate '%s'.  reason: %s"
 msgstr "Cảnh báo : không thể định vị « %s ». Lý do : %s"
 
-#: bucomm.c:472
+#: bucomm.c:473
 #, c-format
 msgid "Warning: '%s' is not an ordinary file"
 msgstr "Cảnh báo : « %s » không phải là một tập tin chuẩn"
 
-#: coffdump.c:105
+#: coffdump.c:103
 #, c-format
 msgid "#lines %d "
 msgstr "#dòng %d "
 
-#: coffdump.c:459 sysdump.c:648
+#: coffdump.c:457 sysdump.c:641
 #, c-format
 msgid "Usage: %s [option(s)] in-file\n"
 msgstr "Cách sử dụng: %s [tùy_chọn...] tập_tin_nhập\n"
 
-#: coffdump.c:460
+#: coffdump.c:458
 #, c-format
 msgid " Print a human readable interpretation of a SYSROFF object file\n"
 msgstr "In ra lời thông dịch cho phép người đọc của tập tin đối tượng SYSROFF\n"
 
-#: coffdump.c:461
+#: coffdump.c:459
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                Read options from <file>\n"
 "  -h --help              Display this information\n"
 "  -v --version           Display the program's version\n"
 "\n"
 msgstr ""
 "Tùy chọn:\n"
-" -h, --help            hiển thị _trợ giúp_ này\n"
+"  @<tập_tin>\t\tđọc các tùy chọn từ tập tin đó\n"
+"   -h, --help            hiển thị _trợ giúp_ này\n"
 " -v --version         hiển thị _phiên bản_ của chương trình\n"
 
-#: coffdump.c:527 srconv.c:1819 sysdump.c:710
+#: coffdump.c:528 srconv.c:1822 sysdump.c:705
 msgid "no input file specified"
 msgstr "chưa ghi rõ tập tin nhập"
 
@@ -540,545 +553,555 @@ msgstr "debug_get_real_type: (gỡ lỗi lấy kiểu thật) thông tin gỡ l
 msgid "debug_write_type: illegal type encountered"
 msgstr "debug_write_type: (gỡ lỗi ghi kiểu) gặp kiểu không được phép"
 
-#: dlltool.c:773 dlltool.c:797 dlltool.c:826
+#: dlltool.c:765 dlltool.c:789 dlltool.c:818
 #, c-format
 msgid "Internal error: Unknown machine type: %d"
 msgstr "Lỗi nội bộ : không biết kiểu máy: %d"
 
-#: dlltool.c:862
+#: dlltool.c:854
 #, c-format
 msgid "Can't open def file: %s"
 msgstr "Không thể mở tập tin định nghĩa: %s"
 
-#: dlltool.c:867
+#: dlltool.c:859
 #, c-format
 msgid "Processing def file: %s"
 msgstr "Đang xử lý tập tin định nghĩa: %s"
 
-#: dlltool.c:871
+#: dlltool.c:863
 msgid "Processed def file"
 msgstr "Đã xử lý tập tin định nghĩa"
 
-#: dlltool.c:895
+#: dlltool.c:887
 #, c-format
 msgid "Syntax error in def file %s:%d"
 msgstr "Gặp lỗi cú pháp trong tập tin định nghĩa %s:%d"
 
-#: dlltool.c:930
+#: dlltool.c:922
 #, c-format
 msgid "%s: Path components stripped from image name, '%s'."
 msgstr "%s: các thành phần đường dẫn bị tước ra tên ảnh, « %s »."
 
-#: dlltool.c:939
+#: dlltool.c:931
 #, c-format
 msgid "NAME: %s base: %x"
 msgstr "TÊN: %s cơ bản: %x"
 
-#: dlltool.c:942 dlltool.c:958
+#: dlltool.c:934 dlltool.c:950
 msgid "Can't have LIBRARY and NAME"
 msgstr "Không cho phép dùng cả THƯ VIÊN lẫn TÊN đều"
 
-#: dlltool.c:955
+#: dlltool.c:947
 #, c-format
 msgid "LIBRARY: %s base: %x"
 msgstr "THƯ VIÊN: %s cơ bản: %x"
 
-#: dlltool.c:1191 resrc.c:269
+#: dlltool.c:1183 resrc.c:269
 #, c-format
 msgid "wait: %s"
 msgstr "đợi: %s"
 
-#: dlltool.c:1196 dllwrap.c:418 resrc.c:274
+#: dlltool.c:1188 dllwrap.c:413 resrc.c:274
 #, c-format
 msgid "subprocess got fatal signal %d"
 msgstr "tiến trình con đã nhận tín hiệu nghiệm trọng %d"
 
-#: dlltool.c:1202 dllwrap.c:425 resrc.c:281
+#: dlltool.c:1194 dllwrap.c:420 resrc.c:281
 #, c-format
 msgid "%s exited with status %d"
 msgstr "%s đã thoát với trạng thái %d"
 
-#: dlltool.c:1233
+#: dlltool.c:1225
 #, c-format
 msgid "Sucking in info from %s section in %s"
 msgstr "Đang kéo vào thông tin từ phần %s trong %s..."
 
-#: dlltool.c:1358
+#: dlltool.c:1350
 #, c-format
 msgid "Excluding symbol: %s"
 msgstr "Đang loại trừ ký hiệu : %s"
 
-#: dlltool.c:1447 dlltool.c:1458 nm.c:998 nm.c:1009
+#: dlltool.c:1439 dlltool.c:1450 nm.c:1000 nm.c:1011
 #, c-format
 msgid "%s: no symbols"
 msgstr "%s: không có ký hiệu"
 
 #. FIXME: we ought to read in and block out the base relocations.
-#: dlltool.c:1484
+#: dlltool.c:1476
 #, c-format
 msgid "Done reading %s"
 msgstr "Đã đọc xong %s"
 
-#: dlltool.c:1494
+#: dlltool.c:1486
 #, c-format
 msgid "Unable to open object file: %s"
 msgstr "Không thể mở tập tin đối tượng: %s"
 
-#: dlltool.c:1497
+#: dlltool.c:1489
 #, c-format
 msgid "Scanning object file %s"
 msgstr "Đang quét tập tin đối tượng %s..."
 
-#: dlltool.c:1512
+#: dlltool.c:1504
 #, c-format
 msgid "Cannot produce mcore-elf dll from archive file: %s"
 msgstr "Không thể cung cấp « mcore-elf dll » từ tập tin kho: %s"
 
-#: dlltool.c:1598
+#: dlltool.c:1590
 msgid "Adding exports to output file"
 msgstr "Đang thêm các việc xuất vào nhóm kết xuất..."
 
-#: dlltool.c:1646
+#: dlltool.c:1638
 msgid "Added exports to output file"
 msgstr "Đã thêm các việc xuất vào nhóm kết xuất"
 
-#: dlltool.c:1767
+#: dlltool.c:1759
 #, c-format
 msgid "Generating export file: %s"
 msgstr "Đang tạo ra tập tin xuất: %s"
 
-#: dlltool.c:1772
+#: dlltool.c:1764
 #, c-format
 msgid "Unable to open temporary assembler file: %s"
 msgstr "Không thể mở tập tin dịch mã số tạm thời: %s"
 
-#: dlltool.c:1775
+#: dlltool.c:1767
 #, c-format
 msgid "Opened temporary file: %s"
 msgstr "Đã mở tập tin tạm thời: %s"
 
-#: dlltool.c:1997
+#: dlltool.c:1989
 msgid "Generated exports file"
 msgstr "Đã tạo ra tập tin xuất"
 
-#: dlltool.c:2203
+#: dlltool.c:2195
 #, c-format
 msgid "bfd_open failed open stub file: %s"
 msgstr "bfd_open không mở được tập tin stub: %s"
 
-#: dlltool.c:2206
+#: dlltool.c:2198
 #, c-format
 msgid "Creating stub file: %s"
 msgstr "Đang tạo tập tin stub: %s"
 
-#: dlltool.c:2588
+#: dlltool.c:2580
 #, c-format
 msgid "failed to open temporary head file: %s"
 msgstr "lỗi mở tập tin đầu tạm: %s"
 
-#: dlltool.c:2647
+#: dlltool.c:2639
 #, c-format
 msgid "failed to open temporary tail file: %s"
 msgstr "lỗi mở tập tin đuôi tạm: %s"
 
-#: dlltool.c:2714
+#: dlltool.c:2706
 #, c-format
 msgid "Can't open .lib file: %s"
 msgstr "Không thể mở tập tin « .lib » (thư viên): %s"
 
-#: dlltool.c:2717
+#: dlltool.c:2709
 #, c-format
 msgid "Creating library file: %s"
 msgstr "Đang tạo tập tin thư viên: %s"
 
-#: dlltool.c:2800 dlltool.c:2806
+#: dlltool.c:2792 dlltool.c:2798
 #, c-format
 msgid "cannot delete %s: %s"
 msgstr "không thể xóa bỏ %s: %s"
 
-#: dlltool.c:2811
+#: dlltool.c:2803
 msgid "Created lib file"
 msgstr "Đã tạo  tập tin thư viên"
 
-#: dlltool.c:2904
+#: dlltool.c:2882
 #, c-format
 msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
 msgstr "Cảnh báo, đang bỏ qua XUẤT trùng %s %d,%d"
 
-#: dlltool.c:2910
+#: dlltool.c:2888
 #, c-format
 msgid "Error, duplicate EXPORT with oridinals: %s"
 msgstr "Lỗi: XUẤT trùng với điều thứ tự : %s"
 
-#: dlltool.c:3026
+#: dlltool.c:2993
 msgid "Processing definitions"
 msgstr "Đang xử lý các lời định nghĩa..."
 
-#: dlltool.c:3058
+#: dlltool.c:3025
 msgid "Processed definitions"
 msgstr "Đã xử lý các lời định nghĩa"
 
 #. xgetext:c-format
-#: dlltool.c:3065 dllwrap.c:479
+#: dlltool.c:3032 dllwrap.c:474
 #, c-format
 msgid "Usage %s <option(s)> <object-file(s)>\n"
 msgstr "Cách sử dụng %s <tùy_chọn...> <tập_tin_đối_tượng...>\n"
 
 #. xgetext:c-format
-#: dlltool.c:3067
+#: dlltool.c:3034
 #, c-format
 msgid "   -m --machine <machine>    Create as DLL for <machine>.  [default: %s]\n"
 msgstr "   -m --machine <máy>    Tạo dạng DLL cho <máy>.  [mặc định: %s]\n"
 
-#: dlltool.c:3068
+#: dlltool.c:3035
 #, c-format
 msgid "        possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
 msgstr "        <máy> có thể: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
 
-#: dlltool.c:3069
+#: dlltool.c:3036
 #, c-format
 msgid "   -e --output-exp <outname> Generate an export file.\n"
 msgstr "   -e --output-exp <tên_tập_tin> \tTạo ra tập tin _xuất_.\n"
 
-#: dlltool.c:3070
+#: dlltool.c:3037
 #, c-format
 msgid "   -l --output-lib <outname> Generate an interface library.\n"
 msgstr "   -l --output-lib <tên_tập_tin> \tTạo _ra thư viên_ giao diện.\n"
 
-#: dlltool.c:3071
+#: dlltool.c:3038
 #, c-format
 msgid "   -a --add-indirect         Add dll indirects to export file.\n"
 msgstr "   -a --add-indirect         _Thêm lời gián tiếp_dạng dll vào tập tin xuất\n"
 
-#: dlltool.c:3072
+#: dlltool.c:3039
 #, c-format
 msgid "   -D --dllname <name>       Name of input dll to put into interface lib.\n"
 msgstr "   -D --dllname <tên>       _Tên dll_ nhập cần để vào thư viên giao diện.\n"
 
-#: dlltool.c:3073
+#: dlltool.c:3040
 #, c-format
 msgid "   -d --input-def <deffile>  Name of .def file to be read in.\n"
 msgstr "   -d --input-def <tên_tập_tin>  \tTên tập tin _định nghĩa_ cần đọc _vào_.\n"
 
-#: dlltool.c:3074
+#: dlltool.c:3041
 #, c-format
 msgid "   -z --output-def <deffile> Name of .def file to be created.\n"
 msgstr "   -z --output-def <tên_tập_tin> Tên tập tin _định nghĩa_ cần tạo (_ra_).\n"
 
-#: dlltool.c:3075
+#: dlltool.c:3042
 #, c-format
 msgid "      --export-all-symbols   Export all symbols to .def\n"
-msgstr "  --export-all-symbols    Tự động _xuất mọi ký hiệu_ vào tập tin định nghĩa\n"
+msgstr "        --export-all-symbols    Tự động _xuất mọi ký hiệu_ vào tập tin định nghĩa\n"
 
-#: dlltool.c:3076
+#: dlltool.c:3043
 #, c-format
 msgid "      --no-export-all-symbols  Only export listed symbols\n"
 msgstr ""
 "      --no-export-all-symbols  \tXuất chỉ những ký hiệu đã liệt kê\n"
 "\t\t\t\t\t\t\t\t(_không xuất mọi ký hiệu_)\n"
 
-#: dlltool.c:3077
+#: dlltool.c:3044
 #, c-format
 msgid "      --exclude-symbols <list> Don't export <list>\n"
 msgstr ""
 "      --exclude-symbols <danh_sách>           Đừng xuất danh sách này\n"
 "\t\t\t\t\t\t\t\t(_loại trừ ký hiệu_)\n"
 
-#: dlltool.c:3078
+#: dlltool.c:3045
 #, c-format
 msgid "      --no-default-excludes  Clear default exclude symbols\n"
 msgstr ""
 "      --no-default-excludes      Xóa các ký hiệu cần loại trừ theo mặc định\n"
 "\t\t\t\t\t\t\t\t(không loại trừ mặc định)\n"
 
-#: dlltool.c:3079
+#: dlltool.c:3046
 #, c-format
 msgid "   -b --base-file <basefile> Read linker generated base file.\n"
 msgstr "   -b --base-file <tên_tập_tin>    Đọc _tập tin cơ bản_ do bộ liên kết tạo ra.\n"
 
-#: dlltool.c:3080
+#: dlltool.c:3047
 #, c-format
 msgid "   -x --no-idata4            Don't generate idata$4 section.\n"
 msgstr "   -x --no-idata4            Đừng tạo ra phần « idata$4 ».\n"
 
-#: dlltool.c:3081
+#: dlltool.c:3048
 #, c-format
 msgid "   -c --no-idata5            Don't generate idata$5 section.\n"
 msgstr "   -c --no-idata5            Đừng tạo ra phần « idata$5 ».\n"
 
-#: dlltool.c:3082
+#: dlltool.c:3049
 #, c-format
 msgid "   -U --add-underscore       Add underscores to symbols in interface library.\n"
 msgstr ""
 "   -U --add-underscore     \t_Thêm dấu gạch dưới_ vào\n"
 "\t\t\t\t\t\tcác ký hiệu trong thư viên giao diện.\n"
 
-#: dlltool.c:3083
+#: dlltool.c:3050
 #, c-format
 msgid "   -k --kill-at              Kill @<n> from exported names.\n"
 msgstr ""
 "   -k --kill-at              Xóa bỏ « @<n> » ra các tên đã xuất.\n"
 "\t\t\t\t\t\t(_buộc kết thúc tại_)\n"
 
-#: dlltool.c:3084
+#: dlltool.c:3051
 #, c-format
 msgid "   -A --add-stdcall-alias    Add aliases without @<n>.\n"
 msgstr ""
 "   -A --add-stdcall-alias    \tThêm biệt hiệu không có « @<n> ».\n"
 "\t\t\t\t\t\t(_thêm biệt hiệu gọi chuẩn_)\n"
 
-#: dlltool.c:3085
+#: dlltool.c:3052
 #, c-format
 msgid "   -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
 msgstr ""
 "   -p --ext-prefix-alias <tiền_tố> \tThêm các biệt hiệu có tiền tố này.\n"
 "\t\t\t\t\t\t(_biệt hiệu tiền tố thêm_)\n"
 
-#: dlltool.c:3086
+#: dlltool.c:3053
 #, c-format
 msgid "   -S --as <name>            Use <name> for assembler.\n"
 msgstr "   -S --as <tên>            \tDùng tên này cho chương trình dịch mã số.\n"
 
-#: dlltool.c:3087
+#: dlltool.c:3054
 #, c-format
 msgid "   -f --as-flags <flags>     Pass <flags> to the assembler.\n"
 msgstr ""
 "   -f --as-flags <các_cờ>     Gởi các cờ này qua cho chương trình dịch mã số.\n"
 "\t\t\t\t\t\t\t(_dạng cờ_)\n"
 
-#: dlltool.c:3088
+#: dlltool.c:3055
 #, c-format
 msgid "   -C --compat-implib        Create backward compatible import library.\n"
 msgstr "   -C --compat-implib        \tTạo _thư viên nhập tương thích_ ngược.\n"
 
-#: dlltool.c:3089
+#: dlltool.c:3056
 #, c-format
 msgid "   -n --no-delete            Keep temp files (repeat for extra preservation).\n"
 msgstr ""
 "   -n --no-delete \t\tGiữ lại các tập tin tạm thời (lặp lại để bảo tồn thêm)\n"
 "\t\t\t\t\t\t(_không xóa bỏ_)\n"
 
-#: dlltool.c:3090
+#: dlltool.c:3057
 #, c-format
 msgid "   -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"
 msgstr "   -t --temp-prefix <tiền_tố>\tDùng _tiền tố_ này để tạo tên tập tin _tạm_.\n"
 
-#: dlltool.c:3091
+#: dlltool.c:3058
 #, c-format
 msgid "   -v --verbose              Be verbose.\n"
-msgstr "  -v --verbose               Xuất _chi tiết_.\n"
+msgstr "   -v --verbose               Xuất _chi tiết_.\n"
 
-#: dlltool.c:3092
+#: dlltool.c:3059
 #, c-format
 msgid "   -V --version              Display the program version.\n"
-msgstr "  -V --version       \tHiển thị phiên bản chương trình.\n"
+msgstr "   -V --version       \tHiển thị phiên bản chương trình.\n"
 
-#: dlltool.c:3093
+#: dlltool.c:3060
 #, c-format
 msgid "   -h --help                 Display this information.\n"
-msgstr "  -h --help         \tHiển thị _trợ giúp_ này.\n"
+msgstr "   -h --help         \tHiển thị _trợ giúp_ này.\n"
 
-#: dlltool.c:3095
+#: dlltool.c:3061
+#, c-format
+msgid "   @<file>                   Read options from <file>.\n"
+msgstr "   @<tập_tin>\t\tđọc các tùy chọn từ tập tin đó\n"
+
+#: dlltool.c:3063
 #, c-format
 msgid "   -M --mcore-elf <outname>  Process mcore-elf object files into <outname>.\n"
 msgstr ""
 "   -M --mcore-elf <tên_tập_tin>\n"
 "\t\tXử lý các tập tin đối tượng kiểu « mcore-elf » vào tập tin tên này.\n"
 
-#: dlltool.c:3096
+#: dlltool.c:3064
 #, c-format
 msgid "   -L --linker <name>        Use <name> as the linker.\n"
 msgstr "   -L --linker <tên>   \t\tDùng tên này là _bộ liên kết_.\n"
 
-#: dlltool.c:3097
+#: dlltool.c:3065
 #, c-format
 msgid "   -F --linker-flags <flags> Pass <flags> to the linker.\n"
 msgstr "   -F --linker-flags <các_cờ> \tGởi _các cờ_ này qua cho _bộ liên kết_.\n"
 
-#: dlltool.c:3211
+#: dlltool.c:3181
 #, c-format
 msgid "Path components stripped from dllname, '%s'."
 msgstr "Các thành phần đường dẫn bị tước ra tên dll, « %s »."
 
-#: dlltool.c:3256
+#: dlltool.c:3226
 #, c-format
 msgid "Unable to open base-file: %s"
 msgstr "Không thể mở tập tin cơ sở: %s"
 
-#: dlltool.c:3288
+#: dlltool.c:3258
 #, c-format
 msgid "Machine '%s' not supported"
 msgstr "Không hỗ trợ máy « %s »"
 
-#: dlltool.c:3392 dllwrap.c:209
+#: dlltool.c:3362 dllwrap.c:204
 #, c-format
 msgid "Tried file: %s"
 msgstr "Đã thử tập tin: %s"
 
-#: dlltool.c:3399 dllwrap.c:216
+#: dlltool.c:3369 dllwrap.c:211
 #, c-format
 msgid "Using file: %s"
 msgstr "Đang dùng tập tin: %s"
 
-#: dllwrap.c:299
+#: dllwrap.c:294
 #, c-format
 msgid "Keeping temporary base file %s"
 msgstr "Đang giữ tập tin cơ bản tạm thời %s"
 
-#: dllwrap.c:301
+#: dllwrap.c:296
 #, c-format
 msgid "Deleting temporary base file %s"
 msgstr "Đang xóa bỏ tập tin cơ bản tạm thời %s..."
 
-#: dllwrap.c:315
+#: dllwrap.c:310
 #, c-format
 msgid "Keeping temporary exp file %s"
 msgstr "Đang giữ tập tin xuất tạm thời %s"
 
-#: dllwrap.c:317
+#: dllwrap.c:312
 #, c-format
 msgid "Deleting temporary exp file %s"
 msgstr "Đang xóa bỏ tập tin xuất tạm thời %s..."
 
-#: dllwrap.c:330
+#: dllwrap.c:325
 #, c-format
 msgid "Keeping temporary def file %s"
 msgstr "Đang giữ tập tin định nghĩa tạm thời %s"
 
-#: dllwrap.c:332
+#: dllwrap.c:327
 #, c-format
 msgid "Deleting temporary def file %s"
 msgstr "Đang xóa bỏ tập tin định nghĩa tạm thời %s..."
 
-#: dllwrap.c:480
+#: dllwrap.c:475
 #, c-format
 msgid "  Generic options:\n"
 msgstr "  Tùy chọn chung:\n"
 
-#: dllwrap.c:481
+#: dllwrap.c:476
+#, c-format
+msgid "   @<file>                Read options from <file>\n"
+msgstr "   @<tập_tin>\t\tđọc các tùy chọn từ tập tin đó\n"
+
+#: dllwrap.c:477
 #, c-format
 msgid "   --quiet, -q            Work quietly\n"
 msgstr "   --quiet, -q            Không xuất chi tiết (_im_)\n"
 
-#: dllwrap.c:482
+#: dllwrap.c:478
 #, c-format
 msgid "   --verbose, -v          Verbose\n"
 msgstr "   --verbose, -v          Xuất _chi tiết_\n"
 
-#: dllwrap.c:483
+#: dllwrap.c:479
 #, c-format
 msgid "   --version              Print dllwrap version\n"
 msgstr "   --version              In ra phiên bản dllwrap\n"
 
-#: dllwrap.c:484
+#: dllwrap.c:480
 #, c-format
 msgid "   --implib <outname>     Synonym for --output-lib\n"
 msgstr "   --implib <tên_tập_tin>     Bằng « --output-lib »\n"
 
-#: dllwrap.c:485
+#: dllwrap.c:481
 #, c-format
 msgid "  Options for %s:\n"
 msgstr "  Tùy chọn cho %s:\n"
 
-#: dllwrap.c:486
+#: dllwrap.c:482
 #, c-format
 msgid "   --driver-name <driver> Defaults to \"gcc\"\n"
 msgstr ""
 "   --driver-name <trình_điều_khiển> \t        Mặc định là « gcc »\n"
 "\t\t\t\t\t\t\t\t(_tên trình điều khiển_)\n"
 
-#: dllwrap.c:487
+#: dllwrap.c:483
 #, c-format
 msgid "   --driver-flags <flags> Override default ld flags\n"
 msgstr ""
 "   --driver-flags <các_cờ> \t\tCó quyền cao hơn các cờ ld mặc định\n"
 "\t\t\t\t\t\t\t\t(_các cờ trình điều khiển_)\n"
 
-#: dllwrap.c:488
+#: dllwrap.c:484
 #, c-format
 msgid "   --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
 msgstr ""
 "   --dlltool-name <dlltool> \t\tMặc định là « dlltool »\n"
 "\t\t\t\t\t\t\t\t(_tên công cụ dlltool_)\n"
 
-#: dllwrap.c:489
+#: dllwrap.c:485
 #, c-format
 msgid "   --entry <entry>        Specify alternate DLL entry point\n"
 msgstr "   --entry <điểm_vào>        \t\tGhi rõ điểm _vào_ DLL xen kẽ\n"
 
-#: dllwrap.c:490
+#: dllwrap.c:486
 #, c-format
 msgid "   --image-base <base>    Specify image base address\n"
 msgstr "   --image-base <cơ_bản>    \tGhi rõ địa chỉ _cơ bản ảnh_\n"
 
-#: dllwrap.c:491
+#: dllwrap.c:487
 #, c-format
 msgid "   --target <machine>     i386-cygwin32 or i386-mingw32\n"
 msgstr "   --target <máy>     i386-cygwin32 hay i386-mingw32\n"
 
-#: dllwrap.c:492
+#: dllwrap.c:488
 #, c-format
 msgid "   --dry-run              Show what needs to be run\n"
 msgstr "   --dry-run              \tHiển thị các điều cần chạy (_chạy thực hành_)\n"
 
-#: dllwrap.c:493
+#: dllwrap.c:489
 #, c-format
 msgid "   --mno-cygwin           Create Mingw DLL\n"
 msgstr "   --mno-cygwin       \tTạo DLL dạng Mingw\n"
 
-#: dllwrap.c:494
+#: dllwrap.c:490
 #, c-format
 msgid "  Options passed to DLLTOOL:\n"
 msgstr "  Các tùy chọn được gởi qua cho DLLTOOL:\n"
 
-#: dllwrap.c:495
+#: dllwrap.c:491
 #, c-format
 msgid "   --machine <machine>\n"
 msgstr "   --machine <máy>\n"
 
-#: dllwrap.c:496
+#: dllwrap.c:492
 #, c-format
 msgid "   --output-exp <outname> Generate export file.\n"
 msgstr "   --output-exp <tên_tập_tin> \t\tTạo ra tập tin _xuất_.\n"
 
-#: dllwrap.c:497
+#: dllwrap.c:493
 #, c-format
 msgid "   --output-lib <outname> Generate input library.\n"
 msgstr "   --output-lib <tên_tập_tin> \t\tTạo _ra thư viên_ nhập.\n"
 
-#: dllwrap.c:498
+#: dllwrap.c:494
 #, c-format
 msgid "   --add-indirect         Add dll indirects to export file.\n"
 msgstr "   --add-indirect         \t\t_Thêm_ các lời _gián tiếp_ vào tập tin xuất.\n"
 
-#: dllwrap.c:499
+#: dllwrap.c:495
 #, c-format
 msgid "   --dllname <name>       Name of input dll to put into output lib.\n"
 msgstr "   --dllname <tên>       \t\t_Tên dll_ nhập cần để vào thư viên xuất.\n"
 
-#: dllwrap.c:500
+#: dllwrap.c:496
 #, c-format
 msgid "   --def <deffile>        Name input .def file\n"
 msgstr "   --def <tên_tập_tin>        \tTên tập tin _định nghĩa_ nhập\n"
 
-#: dllwrap.c:501
+#: dllwrap.c:497
 #, c-format
 msgid "   --output-def <deffile> Name output .def file\n"
 msgstr "   --output-def <tên_tập_tin>\tTên _tập tin định nghĩa xuất_\n"
 
-#: dllwrap.c:502
+#: dllwrap.c:498
 #, c-format
 msgid "   --export-all-symbols     Export all symbols to .def\n"
 msgstr "   --export-all-symbols     _Xuất mọi ký hiệu_ vào tập tin định nghĩa\n"
 
-#: dllwrap.c:503
+#: dllwrap.c:499
 #, c-format
 msgid "   --no-export-all-symbols  Only export .drectve symbols\n"
 msgstr ""
 "   --no-export-all-symbols  \tXuất chỉ ký hiệu kiểu « .drectve ».\n"
 "\t\t\t\t\t\t\t\t(_không xuất mọi ký hiệu_)\n"
 
-#: dllwrap.c:504
+#: dllwrap.c:500
 #, c-format
 msgid "   --exclude-symbols <list> Exclude <list> from .def\n"
 msgstr ""
@@ -1086,67 +1109,67 @@ msgstr ""
 "\t\t\t\t\tLoại trừ danh sách này ra tập tin định nghĩa.\n"
 "\t\t\t\t\t\t\t\t(_loại trừ các ký hiệu_)\n"
 
-#: dllwrap.c:505
+#: dllwrap.c:501
 #, c-format
 msgid "   --no-default-excludes    Zap default exclude symbols\n"
 msgstr ""
 "   --no-default-excludes    \t\tSửa mọi ký hiệu loại trừ mặc định.\n"
 "\t\t\t\t\t\t\t\t(_không loại trừ mặc định_)\n"
 
-#: dllwrap.c:506
+#: dllwrap.c:502
 #, c-format
 msgid "   --base-file <basefile> Read linker generated base file\n"
 msgstr "   --base-file <tên_tập_tin>     Đọc _tập tin cơ bản_ do bộ liên kết tạo ra.\n"
 
-#: dllwrap.c:507
+#: dllwrap.c:503
 #, c-format
 msgid "   --no-idata4           Don't generate idata$4 section\n"
 msgstr "   --no-idata4           Đừng tạo ra phần « idata$4 ».\n"
 
-#: dllwrap.c:508
+#: dllwrap.c:504
 #, c-format
 msgid "   --no-idata5           Don't generate idata$5 section\n"
 msgstr "   --no-idata5           Đừng tạo ra phần « idata$5 ».\n"
 
-#: dllwrap.c:509
+#: dllwrap.c:505
 #, c-format
 msgid "   -U                     Add underscores to .lib\n"
 msgstr "   -U                     Thêm dấu gạch _dưới_ vào thư viên\n"
 
-#: dllwrap.c:510
+#: dllwrap.c:506
 #, c-format
 msgid "   -k                     Kill @<n> from exported names\n"
 msgstr ""
 "   -k                     Xóa bỏ « @<n> » ra các tên đã xuất\n"
 "\t\t\t\t\t(_buộc kết thúc_)\n"
 
-#: dllwrap.c:511
+#: dllwrap.c:507
 #, c-format
 msgid "   --add-stdcall-alias    Add aliases without @<n>\n"
 msgstr ""
 "   --add-stdcall-alias    \tThêm biệt hiệu không có « @<n> ».\n"
 "\t\t\t\t\t\t\t(_thêm biệt hiệu gọi chuẩn_)\n"
 
-#: dllwrap.c:512
+#: dllwrap.c:508
 #, c-format
 msgid "   --as <name>            Use <name> for assembler\n"
 msgstr "   --as <tên>           Dùng tên này cho chương trình dịch mã số (_dạng_)\n"
 
-#: dllwrap.c:513
+#: dllwrap.c:509
 #, c-format
 msgid "   --nodelete             Keep temp files.\n"
 msgstr "   --nodelete             Giữ các tập tin tạm (_không xóa bỏ_)\n"
 
-#: dllwrap.c:514
+#: dllwrap.c:510
 #, c-format
 msgid "  Rest are passed unmodified to the language driver\n"
 msgstr "  Các điều còn lại được gởi dạng chưa được sửa đổi qua cho trình điều khiển ngôn ngữ\n"
 
-#: dllwrap.c:784
+#: dllwrap.c:782
 msgid "Must provide at least one of -o or --dllname options"
 msgstr "Phải cung cấp ít nhất một của hai tùy chọn « -o » hay « -dllname »"
 
-#: dllwrap.c:813
+#: dllwrap.c:811
 msgid ""
 "no export definition file provided.\n"
 "Creating one, but that may not be what you want"
@@ -1154,3453 +1177,3509 @@ msgstr ""
 "chưa cung cấp tập tin định nghĩa xuất.\n"
 "Đang tạo một điều, mà có lẽ không phải là điều bạn muốn"
 
-#: dllwrap.c:972
+#: dllwrap.c:970
 #, c-format
 msgid "DLLTOOL name    : %s\n"
 msgstr "Tên công cụ DLLTOOL    : %s\n"
 
-#: dllwrap.c:973
+#: dllwrap.c:971
 #, c-format
 msgid "DLLTOOL options : %s\n"
 msgstr "Tùy chọn DLLTOOL: %s\n"
 
-#: dllwrap.c:974
+#: dllwrap.c:972
 #, c-format
 msgid "DRIVER name     : %s\n"
 msgstr "Tên TRÌNH ĐIỀU KHIỀN     : %s\n"
 
-#: dllwrap.c:975
+#: dllwrap.c:973
 #, c-format
 msgid "DRIVER options  : %s\n"
 msgstr "Tùy chọn TRÌNH ĐIỀU KHIỂN  : %s\n"
 
-#: emul_aix.c:51
+#: dwarf.c:93 dwarf.c:137 readelf.c:322 readelf.c:515
 #, c-format
-msgid "  [-g]         - 32 bit small archive\n"
-msgstr "  [-g]         • kho nhỏ 32-bit\n"
+msgid "Unhandled data length: %d\n"
+msgstr "Độ dài dữ liệu không được quản lý: %d\n"
 
-#: emul_aix.c:52
+#: dwarf.c:237
+msgid "badly formed extended line op encountered!\n"
+msgstr "gặp thao tác dòng đã mở rộng dạng sai.\n"
+
+#: dwarf.c:244
 #, c-format
-msgid "  [-X32]       - ignores 64 bit objects\n"
-msgstr "  [-X32]       • bỏ qua các đối tượng kiểu 64 bit\n"
+msgid "  Extended opcode %d: "
+msgstr "  Opcode (mã thao tác) đã mở rộng %d: "
 
-#: emul_aix.c:53
+#: dwarf.c:249
 #, c-format
-msgid "  [-X64]       - ignores 32 bit objects\n"
-msgstr "  [-X64]       • bỏ qua các đối tượng kiểu 32 bit\n"
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"Kết thúc dãy\n"
+"\n"
 
-#: emul_aix.c:54
+#: dwarf.c:255
 #, c-format
-msgid "  [-X32_64]    - accepts 32 and 64 bit objects\n"
-msgstr "  [-X32_64]    • chấp nhận các đối tượng kiểu cả 32 bit lẫn 64 bit đều\n"
+msgid "set Address to 0x%lx\n"
+msgstr "đặt Địa chỉ là 0x%lx\n"
 
-#: ieee.c:311
-msgid "unexpected end of debugging information"
-msgstr "gặp kết thúc thông tin gỡ lỗi bất ngờ"
+#: dwarf.c:260
+#, c-format
+msgid "  define new File Table entry\n"
+msgstr "  định nghĩa mục nhập Bảng Tập tin mới\n"
 
-#: ieee.c:398
-msgid "invalid number"
-msgstr "số không hợp lệ"
+#: dwarf.c:261 dwarf.c:1944
+#, c-format
+msgid "  Entry\tDir\tTime\tSize\tName\n"
+msgstr "  Mục\tTMục\tGiờ\tCỡ\tTên\n"
 
-#: ieee.c:451
-msgid "invalid string length"
-msgstr "độ dài chuỗi không hợp lệ"
+# Variable: don't translate / Biến: đừng dịch
+#: dwarf.c:263
+#, c-format
+msgid "   %d\t"
+msgstr "   %d\t"
 
-#: ieee.c:506 ieee.c:547
-msgid "expression stack overflow"
-msgstr "trán đống biểu thức"
+# Variable: don't translate / Biến: đừng dịch
+#: dwarf.c:266 dwarf.c:268 dwarf.c:270 dwarf.c:1956 dwarf.c:1958 dwarf.c:1960
+#, c-format
+msgid "%lu\t"
+msgstr "%lu\t"
 
-#: ieee.c:526
-msgid "unsupported IEEE expression operator"
-msgstr "toán tử biểu thức IEE không được hỗ trợ"
+# Variable: do not translate/ biến: đừng dịch
+#: dwarf.c:271
+#, c-format
+msgid ""
+"%s\n"
+"\n"
+msgstr ""
+"%s\n"
+"\n"
 
-#: ieee.c:541
-msgid "unknown section"
-msgstr "không biết phần"
+#: dwarf.c:275
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr "KHÔNG RÕ: độ dài %d\n"
 
-#: ieee.c:562
-msgid "expression stack underflow"
-msgstr "trán ngược đống biểu thức"
+#: dwarf.c:288
+msgid "<no .debug_str section>"
+msgstr "<no .debug_str section>"
 
-#: ieee.c:576
-msgid "expression stack mismatch"
-msgstr "đống biểu thức không khớp với nhau"
+#: dwarf.c:294
+#, c-format
+msgid "DW_FORM_strp offset too big: %lx\n"
+msgstr "DW_FORM_strp hiệu số quá lớn: %lx\n"
 
-#: ieee.c:613
-msgid "unknown builtin type"
-msgstr "không biết kiểu builtin"
+#: dwarf.c:295
+msgid "<offset is too big>"
+msgstr "<offset is too big>"
 
-#: ieee.c:758
-msgid "BCD float type not supported"
-msgstr "Kiểu nổi BDC không được hỗ trợ"
+#: dwarf.c:528
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "Giá trị TAG (thẻ) không rõ : %lx"
 
-#: ieee.c:895
-msgid "unexpected number"
-msgstr "số bất ngờ"
+#: dwarf.c:564
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr "Giá trị FORM (dạng) không rõ : %lx"
 
-#: ieee.c:902
-msgid "unexpected record type"
-msgstr "kiểu mục ghi bất ngờ"
+#: dwarf.c:573
+#, c-format
+msgid " %lu byte block: "
+msgstr " Khối %lu byte: "
 
-#: ieee.c:935
-msgid "blocks left on stack at end"
-msgstr "có một số khối còn lại trên đống khi kết thúc"
+#: dwarf.c:907
+#, c-format
+msgid "(User defined location op)"
+msgstr "(Thao tác định vị do người dùng định nghĩa)"
 
-#: ieee.c:1198
-msgid "unknown BB type"
-msgstr "không biết kiểu BB"
+#: dwarf.c:909
+#, c-format
+msgid "(Unknown location op)"
+msgstr "(Thao tác định vị không rõ)"
 
-#: ieee.c:1207
-msgid "stack overflow"
-msgstr "trán đống"
+#: dwarf.c:955
+msgid "Internal error: DWARF version is not 2 or 3.\n"
+msgstr "Lỗi nội bộ: phiên bản DWARF không phải là 2 hay 3.\n"
 
-#: ieee.c:1230
-msgid "stack underflow"
-msgstr "trán ngược đống"
+#: dwarf.c:1053
+msgid "DW_FORM_data8 is unsupported when sizeof (unsigned long) != 8\n"
+msgstr "Không hỗ trợ « DW_FORM_data8 » khi « sizeof (unsigned long) != 8 » [kích cỡ của (dài không ký)]\n"
 
-#: ieee.c:1342 ieee.c:1412 ieee.c:2109
-msgid "illegal variable index"
-msgstr "chỉ mục biến không được phép"
+#: dwarf.c:1102
+#, c-format
+msgid " (indirect string, offset: 0x%lx): %s"
+msgstr " (chuỗi gián tiếp, hiệu số: 0x%lx): %s"
 
-#: ieee.c:1390
-msgid "illegal type index"
-msgstr "chỉ mục kiểu không được phép"
+#: dwarf.c:1111
+#, c-format
+msgid "Unrecognized form: %lu\n"
+msgstr "Không nhận diện dạng: %lu\n"
 
-#: ieee.c:1400 ieee.c:1437
-msgid "unknown TY code"
-msgstr "không biết mã TY"
+#: dwarf.c:1196
+#, c-format
+msgid "(not inlined)"
+msgstr "(không đặt trực tiếp)"
 
-#: ieee.c:1419
-msgid "undefined variable in TY"
-msgstr "gặp biến chưa được định nghĩa trong TY"
+#: dwarf.c:1199
+#, c-format
+msgid "(inlined)"
+msgstr "(đặt trực tiếp)"
 
-#. Pascal file name.  FIXME.
-#: ieee.c:1830
-msgid "Pascal file name not supported"
-msgstr "Chưa hỗ trợ tên tập tin kiểu Pascal"
+#: dwarf.c:1202
+#, c-format
+msgid "(declared as inline but ignored)"
+msgstr "(khai báo là trực tiếp mà bị bỏ qua)"
 
-#: ieee.c:1878
-msgid "unsupported qualifier"
-msgstr "bộ dè dặt chưa được hỗ trợ"
+#: dwarf.c:1205
+#, c-format
+msgid "(declared as inline and inlined)"
+msgstr "(khai báo là trực tiếp và đặt trực tiếp)"
 
-#: ieee.c:2147
-msgid "undefined variable in ATN"
-msgstr "gặp biến chưa định nghĩa trong ATN"
+#: dwarf.c:1208
+#, c-format
+msgid "  (Unknown inline attribute value: %lx)"
+msgstr "  (Không biết giá trị thuộc tính trực tiếp: %lx)"
 
-#: ieee.c:2190
-msgid "unknown ATN type"
-msgstr "không biết kiểu ATN"
+#: dwarf.c:1354 dwarf.c:2484
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr " [không có DW_AT_frame_base (cơ bản khung)]"
 
-#. Reserved for FORTRAN common.
-#: ieee.c:2312
-msgid "unsupported ATN11"
-msgstr "ATN11 không được hỗ trơ"
+#: dwarf.c:1357
+#, c-format
+msgid "(location list)"
+msgstr "(danh sách địa điểm)"
 
-#. We have no way to record this information.  FIXME.
-#: ieee.c:2339
-msgid "unsupported ATN12"
-msgstr "ATN12 không được hỗ trơ"
+#: dwarf.c:1475
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "Không biết giá trị AT: %lx"
 
-#: ieee.c:2399
-msgid "unexpected string in C++ misc"
-msgstr "gặp chuỗi không được hỗ trơ trong C++ lặt vặt"
+#: dwarf.c:1544
+#, c-format
+msgid "No comp units in %s section ?"
+msgstr "Không có đơn vị biên dịch trong phần %s ?"
 
-#: ieee.c:2412
-msgid "bad misc record"
-msgstr "mục ghi lặt vặt sai"
+#: dwarf.c:1553
+#, c-format
+msgid "Not enough memory for a debug info array of %u entries"
+msgstr "Không đủ bộ nhớ cho mảng thông tin gỡ lỗi có mục nhập %u"
 
-#: ieee.c:2453
-msgid "unrecognized C++ misc record"
-msgstr "không chấp nhận mục ghi C++ lặt vặt"
+#: dwarf.c:1561 dwarf.c:2573
+#, c-format
+msgid ""
+"The section %s contains:\n"
+"\n"
+msgstr ""
+"Phần %s chứa:\n"
+"\n"
 
-#: ieee.c:2568
-msgid "undefined C++ object"
-msgstr "đối tượng C++ chưa được định nghĩa"
+#: dwarf.c:1569
+#, c-format
+msgid "Unable to locate %s section!\n"
+msgstr "Không thể định vị phần %s !\n"
 
-#: ieee.c:2602
-msgid "unrecognized C++ object spec"
-msgstr "chưa chấp nhận đặc tả đối tượng C++"
+#: dwarf.c:1635
+#, c-format
+msgid "  Compilation Unit @ offset 0x%lx:\n"
+msgstr "  Đơn vị biên dịch @ hiệu số 0x%lx:\n"
 
-#: ieee.c:2638
-msgid "unsupported C++ object type"
-msgstr "kiểu đối tượng C++ chưa được hỗ trợ"
+#: dwarf.c:1636
+#, c-format
+msgid "   Length:        %ld\n"
+msgstr "   Dài:        %ld\n"
 
-#: ieee.c:2648
-msgid "C++ base class not defined"
-msgstr "chưa định nghĩa hạng cơ bản C++"
+#: dwarf.c:1637
+#, c-format
+msgid "   Version:       %d\n"
+msgstr "   Phiên bản:       %d\n"
 
-#: ieee.c:2660 ieee.c:2765
-msgid "C++ object has no fields"
-msgstr "Đối tượng C++ không có trường nào"
+#: dwarf.c:1638
+#, c-format
+msgid "   Abbrev Offset: %ld\n"
+msgstr "   Hiệu số tắt: %ld\n"
 
-#: ieee.c:2679
-msgid "C++ base class not found in container"
-msgstr "Không tìm thấy hạng cơ bản C++ trong bộ chứa"
+#: dwarf.c:1639
+#, c-format
+msgid "   Pointer Size:  %d\n"
+msgstr "   Cỡ con trỏ :  %d\n"
 
-#: ieee.c:2786
-msgid "C++ data member not found in container"
-msgstr "Không tìm thấy bộ phạn dữ liệu C++ trong bộ chứa"
+#: dwarf.c:1644
+msgid "Only version 2 and 3 DWARF debug information is currently supported.\n"
+msgstr "Hỗ trợ chỉ thông tin gỡ lỗi phiên bản DWARF 2 và 3 thôi.\n"
 
-#: ieee.c:2827 ieee.c:2977
-msgid "unknown C++ visibility"
-msgstr "không biết độ thấy rõ C++"
+#: dwarf.c:1685
+#, c-format
+msgid "Unable to locate entry %lu in the abbreviation table\n"
+msgstr "Không thể định vị mục nhâp %lu trong bảng viết tắt\n"
 
-#: ieee.c:2861
-msgid "bad C++ field bit pos or size"
-msgstr "vị trí bit hay kích cỡ trường C++ sai"
+#: dwarf.c:1691
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n"
+msgstr " <%d><%lx>: Số viết tắt: %lu (%s)\n"
 
-#: ieee.c:2953
-msgid "bad type for C++ method function"
-msgstr "kiểu sai cho hàm phương pháp C++"
+#: dwarf.c:1785
+#, c-format
+msgid "%s section needs a populated .debug_info section\n"
+msgstr "Phần %s cần phần « .debug_info » (thông tin gỡ lỗi) có dữ liệu\n"
 
-#: ieee.c:2963
-msgid "no type information for C++ method function"
-msgstr "không có thông tin kiểu cho hàm phương pháp C++"
+#: dwarf.c:1792
+#, c-format
+msgid "%s section has more comp units than .debug_info section\n"
+msgstr "Phần %s có nhiều đơn vị biên dịch hơn phần « .debug_info » (thông tin gỡ lỗi)\n"
 
-#: ieee.c:3002
-msgid "C++ static virtual method"
-msgstr "phương pháp ảo tĩnh C++"
+#: dwarf.c:1794
+#, c-format
+msgid ""
+"assuming that the pointer size is %d, from the last comp unit in .debug_info\n"
+"\n"
+msgstr ""
+"giả sử kích cỡ con trỏ là %d, từ đơn vị biên dịch cuối cùng trong « .debug_info » (thông tin gỡ lỗi)\n"
+"\n"
 
-#: ieee.c:3097
-msgid "unrecognized C++ object overhead spec"
-msgstr "chưa chấp nhận đặc tả duy tu đối tượng C++"
+#: dwarf.c:1819
+#, c-format
+msgid ""
+"\n"
+"Dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"\n"
+"Việc đổ nội dung gỡ lỗi của phần %s:\n"
 
-#: ieee.c:3136
-msgid "undefined C++ vtable"
-msgstr "chưa định nghĩa vtable C++"
+#: dwarf.c:1858
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr "Hình như dòng bị hỏng — phần quá nhỏ\n"
 
-#: ieee.c:3205
-msgid "C++ default values not in a function"
-msgstr "Giá trị C++ mặc định không phải trong hàm"
+#: dwarf.c:1867
+msgid "Only DWARF version 2 and 3 line info is currently supported.\n"
+msgstr "Hỗ trợ hiện thời chỉ thông tin dòng DWARF phiên bản 2 và 3.\n"
 
-#: ieee.c:3245
-msgid "unrecognized C++ default type"
-msgstr "chưa chấp nhận kiểu C++ mặc định"
+#: dwarf.c:1894
+#, c-format
+msgid "  Length:                      %ld\n"
+msgstr "  Dài:                      %ld\n"
 
-#: ieee.c:3276
-msgid "reference parameter is not a pointer"
-msgstr "tham số tham chiếu không phải là con trỏ"
+#: dwarf.c:1895
+#, c-format
+msgid "  DWARF Version:               %d\n"
+msgstr "  Phiên bản DWARF:               %d\n"
 
-#: ieee.c:3359
-msgid "unrecognized C++ reference type"
-msgstr "chưa chấp nhận kiểu tham chiếu C++"
+#: dwarf.c:1896
+#, c-format
+msgid "  Prologue Length:             %d\n"
+msgstr "  Dài đoạn mở đầu :             %d\n"
 
-#: ieee.c:3441
-msgid "C++ reference not found"
-msgstr "Không tìm thấy tham chiếu C++"
+#: dwarf.c:1897
+#, c-format
+msgid "  Minimum Instruction Length:  %d\n"
+msgstr "  Dài câu lệnh tối thiểu :  %d\n"
 
-#: ieee.c:3449
-msgid "C++ reference is not pointer"
-msgstr "Tham chiếu C++ không phải là con trỏ"
+#: dwarf.c:1898
+#, c-format
+msgid "  Initial value of 'is_stmt':  %d\n"
+msgstr "  Giá trị đầu của « is_stmt »:  %d\n"
 
-#: ieee.c:3475 ieee.c:3483
-msgid "missing required ASN"
-msgstr "thiếu ASN cần thiết"
+#: dwarf.c:1899
+#, c-format
+msgid "  Line Base:                   %d\n"
+msgstr "  Cơ bản dòng:                   %d\n"
 
-#: ieee.c:3510 ieee.c:3518
-msgid "missing required ATN65"
-msgstr "thiếu ATN65 cần thiết"
+#: dwarf.c:1900
+#, c-format
+msgid "  Line Range:                  %d\n"
+msgstr "  Phạm vị dòng:                  %d\n"
 
-#: ieee.c:3532
-msgid "bad ATN65 record"
-msgstr "mục ghi ATN65 sai"
+#: dwarf.c:1901
+#, c-format
+msgid "  Opcode Base:                 %d\n"
+msgstr "  Cơ bản mã thao tác:                 %d\n"
 
-#: ieee.c:4160
+#: dwarf.c:1902
 #, c-format
-msgid "IEEE numeric overflow: 0x"
-msgstr "trán thuộc số IEEE: 0x"
+msgid "  (Pointer size:               %u)%s\n"
+msgstr "  (Cỡ con trỏ :\t\t\t%u)%s\n"
 
-#: ieee.c:4204
+#: dwarf.c:1913
 #, c-format
-msgid "IEEE string length overflow: %u\n"
-msgstr "Trán độ dài chuỗi IEEE: %u\n"
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+"\n"
+" Mã thao tác:\n"
 
-#: ieee.c:5203
+#: dwarf.c:1916
 #, c-format
-msgid "IEEE unsupported integer type size %u\n"
-msgstr "Kích cỡ kiểu số nguyên không được hỗ trợ IEEE %u\n"
+msgid "  Opcode %d has %d args\n"
+msgstr "  Mã thao tác %d có %d đối số\n"
 
-#: ieee.c:5237
+#: dwarf.c:1922
 #, c-format
-msgid "IEEE unsupported float type size %u\n"
-msgstr "Kích cỡ kiểu nổi không được hỗ trợ IEEE %u\n"
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+"\n"
+"  Bảng Thư mục rỗng\n"
 
-#: ieee.c:5271
+#: dwarf.c:1925
 #, c-format
-msgid "IEEE unsupported complex type size %u\n"
-msgstr "Kích cỡ kiểu phức tạp không được hỗ trợ IEEE %u\n"
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+"\n"
+"  Bảng Thư mục:\n"
 
-#: nlmconv.c:267 srconv.c:1810
-msgid "input and output files must be different"
-msgstr "tập tin nhập và xuất phải là khác nhau"
+# Variable: don't translate / Biến: đừng dịch
+#: dwarf.c:1929
+#, c-format
+msgid "  %s\n"
+msgstr "  %s\n"
 
-#: nlmconv.c:314
-msgid "input file named both on command line and with INPUT"
-msgstr "tên tập tin được lập cả trên dòng lệnh lẫn bằng INPUT đều"
+#: dwarf.c:1940
+#, c-format
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr ""
+"\n"
+" Bảng Tên Tập tin rỗng:\n"
 
-#: nlmconv.c:323
-msgid "no input file"
-msgstr "không có tập tin nhập nào"
+#: dwarf.c:1943
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+"\n"
+"  Bảng Tên Tập tin:\n"
 
-#: nlmconv.c:353
-msgid "no name for output file"
-msgstr "không có tên cho tập tin nhập"
+# Variable: don't translate / Biến: đừng dịch
+#: dwarf.c:1951
+#, c-format
+msgid "  %d\t"
+msgstr "  %d\t"
 
-#: nlmconv.c:367
-msgid "warning: input and output formats are not compatible"
-msgstr "cảnh báo : khuôn dạng nhập và xuất không tương thích với nhau"
+# Variable: do not translate/ biến: đừng dịch
+#: dwarf.c:1962
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
 
-#: nlmconv.c:396
-msgid "make .bss section"
-msgstr "tạo phần « .bss »"
+#. Now display the statements.
+#: dwarf.c:1970
+#, c-format
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+"\n"
+" Câu Số thứ tự Dòng:\n"
 
-#: nlmconv.c:405
-msgid "make .nlmsections section"
-msgstr "tạo phần « .nlmsections »"
+#: dwarf.c:1986
+#, c-format
+msgid "  Special opcode %d: advance Address by %lu to 0x%lx"
+msgstr "  Mã thao tác đặc biệt %d: nâng cao Địa chỉ bước %lu tới 0x%lx"
 
-#: nlmconv.c:407
-msgid "set .nlmsections flags"
-msgstr "đặt các cờ « .nlmsections »"
+#: dwarf.c:1990
+#, c-format
+msgid " and Line by %d to %d\n"
+msgstr " và Dòng bước %d tới %d\n"
 
-#: nlmconv.c:435
-msgid "set .bss vma"
-msgstr "đặt vma .bss"
+#: dwarf.c:1998
+msgid "Extend line ops need a valid pointer size, guessing at 4\n"
+msgstr "Thao tác kéo dài đường cần thiết kích cỡ con trỏ hợp lệ, đang đoán nó là 4\n"
 
-#: nlmconv.c:442
-msgid "set .data size"
-msgstr "đặt kích cỡ dữ liệu .data"
+#: dwarf.c:2007
+#, c-format
+msgid "  Copy\n"
+msgstr "  Chép\n"
 
-#: nlmconv.c:622
+#: dwarf.c:2015
 #, c-format
-msgid "warning: symbol %s imported but not in import list"
-msgstr "cảnh báo : ký hiệu %s được nhập mà không phải trong danh sách nhập"
+msgid "  Advance PC by %lu to 0x%lx\n"
+msgstr "  Nâng cao PC bước %lu tới %lx\n"
 
-#: nlmconv.c:642
-msgid "set start address"
-msgstr "đặt địa chỉ bắt đầu"
+#: dwarf.c:2023
+#, c-format
+msgid "  Advance Line by %d to %d\n"
+msgstr "  Nâng cao dòng bước %d tới %d\n"
 
-#: nlmconv.c:691
+#: dwarf.c:2030
 #, c-format
-msgid "warning: START procedure %s not defined"
-msgstr "cảnh báo : thủ tục START (bắt đầu) %s chưa được định nghĩa"
+msgid "  Set File Name to entry %d in the File Name Table\n"
+msgstr "  Lập Tên Tập tin là mục nhập %d trong Bảng Tên Tập tin\n"
 
-#: nlmconv.c:693
+#: dwarf.c:2038
 #, c-format
-msgid "warning: EXIT procedure %s not defined"
-msgstr "cảnh báo : thủ tục EXIT (thoát) %s chưa được định nghĩa"
+msgid "  Set column to %lu\n"
+msgstr "  Lập cột thành %lu\n"
 
-#: nlmconv.c:695
+#: dwarf.c:2045
 #, c-format
-msgid "warning: CHECK procedure %s not defined"
-msgstr "cảnh báo : thủ tục CHECK (kiểm tra) %s chưa được định nghĩa"
+msgid "  Set is_stmt to %d\n"
+msgstr "  Lập « is_stmt » (là câu) là %d\n"
 
-#: nlmconv.c:716 nlmconv.c:905
-msgid "custom section"
-msgstr "phần tự chọn"
+#: dwarf.c:2050
+#, c-format
+msgid "  Set basic block\n"
+msgstr "  Lập khối cơ bản\n"
 
-#: nlmconv.c:737 nlmconv.c:934
-msgid "help section"
-msgstr "phần trợ giúp"
+#: dwarf.c:2058
+#, c-format
+msgid "  Advance PC by constant %lu to 0x%lx\n"
+msgstr "  Nâng cao PC bước hằng số %lu tới 0x%lx\n"
 
-#: nlmconv.c:759 nlmconv.c:952
-msgid "message section"
-msgstr "phần thông điệp"
+#: dwarf.c:2066
+#, c-format
+msgid "  Advance PC by fixed size amount %lu to 0x%lx\n"
+msgstr "  Nâng cao PC bước kích cỡ cố định %lu tới 0x%lx\n"
 
-#: nlmconv.c:775 nlmconv.c:985
-msgid "module section"
-msgstr "phần mô-đun"
+#: dwarf.c:2071
+#, c-format
+msgid "  Set prologue_end to true\n"
+msgstr "  Lập « prologue_end » (kết thúc đoạn mở đầu) là true (đúng)\n"
 
-#: nlmconv.c:795 nlmconv.c:1001
-msgid "rpc section"
-msgstr "phần rpc"
+#: dwarf.c:2075
+#, c-format
+msgid "  Set epilogue_begin to true\n"
+msgstr "  Lập « epilogue_begin » (đầu phần kết) là true (đúng)\n"
 
-#. There is no place to record this information.
-#: nlmconv.c:831
+#: dwarf.c:2081
 #, c-format
-msgid "%s: warning: shared libraries can not have uninitialized data"
-msgstr "%s: cảnh báo : thư viên dùng chung không thể chứa dữ liệu chưa được sở khởi"
+msgid "  Set ISA to %lu\n"
+msgstr "  Lập ISA thành %lu\n"
 
-#: nlmconv.c:852 nlmconv.c:1020
-msgid "shared section"
-msgstr "phần dùng chung"
+#: dwarf.c:2085
+#, c-format
+msgid "  Unknown opcode %d with operands: "
+msgstr "  Gặp opcode (mã thao tác) không rõ %d với tác tử : "
 
-#: nlmconv.c:860
-msgid "warning: No version number given"
-msgstr "cảnh báo : chưa đưa ra số thứ tự phiên bản"
+#: dwarf.c:2111 dwarf.c:2197 dwarf.c:2271 dwarf.c:2382 dwarf.c:2514
+#: dwarf.c:2739
+#, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+"Nội dung của phần %s:\n"
+"\n"
 
-#: nlmconv.c:900 nlmconv.c:929 nlmconv.c:947 nlmconv.c:996 nlmconv.c:1015
+#: dwarf.c:2151
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr "Hỗ trợ hiện thời chỉ pubnames (tên công) DWARF phiên bản 2 và 3 thôi\n"
+
+#: dwarf.c:2158
 #, c-format
-msgid "%s: read: %s"
-msgstr "%s: đọc: %s"
+msgid "  Length:                              %ld\n"
+msgstr "  Length:                              %ld\n"
 
-#: nlmconv.c:922
-msgid "warning: FULLMAP is not supported; try ld -M"
-msgstr "cảnh báo : chưa hỗ trợ FULLMAP; hãy thử « ld -M »"
+#: dwarf.c:2160
+#, c-format
+msgid "  Version:                             %d\n"
+msgstr "  Version:                             %d\n"
 
-#: nlmconv.c:1098
+#: dwarf.c:2162
 #, c-format
-msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
-msgstr "Cách sử dụng: %s [tùy_chọn...] [tập_tin_nhập [tập_tin_xuất]]\n"
+msgid "  Offset into .debug_info section:     %ld\n"
+msgstr "  Hiệu số vào phầnO« ffset into .» (thông tin gỡ lỗi)nfo section:     %ld\n"
 
-#: nlmconv.c:1099
+#: dwarf.c:2164
 #, c-format
-msgid " Convert an object file into a NetWare Loadable Module\n"
-msgstr " Chuyển đổi tập tin đối tượng sang Mô-đun Tải được NetWare (NetWare Loadable Module)\n"
+msgid "  Size of area in .debug_info section: %ld\n"
+msgstr "  Kích cỡ của vùng trong phần « .debug_info » (thông tin gỡ lỗi): %ld\n"
 
-#: nlmconv.c:1100
+#: dwarf.c:2167
 #, c-format
 msgid ""
-" The options are:\n"
-"  -I --input-target=<bfdname>   Set the input binary file format\n"
-"  -O --output-target=<bfdname>  Set the output binary file format\n"
-"  -T --header-file=<file>       Read <file> for NLM header information\n"
-"  -l --linker=<linker>          Use <linker> for any linking\n"
-"  -d --debug                    Display on stderr the linker command line\n"
-"  -h --help                     Display this information\n"
-"  -v --version                  Display the program's version\n"
+"\n"
+"    Offset\tName\n"
 msgstr ""
-" Tùy chọn:\n"
-"  -I --input-target=<tên_bfd>   \t\tLập dạng thức tập tin nhị phân nhập\n"
-"\t\t\t\t\t\t\t\t    (_đích nhập_)\n"
-"  -O --output-target=<tên_bfd>  \tLập dạng thức tập tin nhị phân xuất\n"
-"\t\t\t\t\t\t\t\t    (_đích xuất_)\n"
-"  -T --header-file=<tập_tin>\n"
-"\t\tĐọc tập tin này để  tìm thông tin phần đầu NLM (_tập tin phần đầu_)\n"
-"  -l --linker=<bộ_liên_kết>          \tDùng _bộ liên kết_ này khi liên kết\n"
-"  -d --debug\n"
-"\tHiển thị trên thiết bị lỗi chuẩn dòng lệnh của bộ liên kết (_gỡ lỗi_)\n"
-"  -h --help                     \t\t\tHiển thị _trợ giúp_ này\n"
-"  -v --version                  \t\t\tHiển thị _phiên bản_ chương trình\n"
+"\n"
+"    Hiệu\tTên\n"
 
-#: nlmconv.c:1140
+#: dwarf.c:2218
 #, c-format
-msgid "support not compiled in for %s"
-msgstr "chưa biên dịch cách hỗ trợ %s"
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACINFO_start_file (bắt đầu tập tin) — số_dòng: %d số_tập_tin: %d\n"
 
-#: nlmconv.c:1177
-msgid "make section"
-msgstr "tạo phần"
+#: dwarf.c:2224
+#, c-format
+msgid " DW_MACINFO_end_file\n"
+msgstr " DW_MACINFO_end_file (kết thúc tập tin)\n"
 
-#: nlmconv.c:1191
-msgid "set section size"
-msgstr "lập kích cỡ phần"
+#: dwarf.c:2232
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_define (định nghĩa) — số_dòng : %d bộ_lệnh : %s\n"
 
-#: nlmconv.c:1197
-msgid "set section alignment"
-msgstr "lập canh lề phần"
+#: dwarf.c:2241
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_undef (chưa định nghĩa) — số_dòng : %d bộ_lệnh : %s\n"
 
-#: nlmconv.c:1201
-msgid "set section flags"
-msgstr "lập các cờ phân"
+#: dwarf.c:2253
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr " DW_MACINFO_vendor_ext (phần mở rộng nhà bán) — hằng số : %d chuối : %s\n"
 
-#: nlmconv.c:1212
-msgid "set .nlmsections size"
-msgstr "lập kích cỡ « .nlmsections »"
+#: dwarf.c:2282
+#, c-format
+msgid "  Number TAG\n"
+msgstr "  Số THẺ\n"
 
-#: nlmconv.c:1293 nlmconv.c:1301 nlmconv.c:1310 nlmconv.c:1315
-msgid "set .nlmsection contents"
-msgstr "lập nội dung « .nlmsections »"
+# Variable: don't translate / Biến: đừng dịch
+#: dwarf.c:2288
+#, c-format
+msgid "   %ld      %s    [%s]\n"
+msgstr "   %ld      %s    [%s]\n"
 
-#: nlmconv.c:1794
-msgid "stub section sizes"
-msgstr "kích cỡ phần stub"
+#: dwarf.c:2291
+msgid "has children"
+msgstr "có điều con"
 
-#: nlmconv.c:1841
-msgid "writing stub"
-msgstr "đang ghi stub..."
+#: dwarf.c:2291
+msgid "no children"
+msgstr "không có con"
 
-#: nlmconv.c:1925
+# Variable: don't translate / Biến: đừng dịch
+#: dwarf.c:2294
 #, c-format
-msgid "unresolved PC relative reloc against %s"
-msgstr "có việc định vị lại liên quan đến PC chưa tháo gỡ đối với %s"
+msgid "    %-18s %s\n"
+msgstr "    %-18s %s\n"
 
-#: nlmconv.c:1989
+#: dwarf.c:2327 dwarf.c:2510 dwarf.c:2684
 #, c-format
-msgid "overflow when adjusting relocation against %s"
-msgstr "trán khi điều chỉnh việc định vị lại đối với %s"
+msgid ""
+"\n"
+"The %s section is empty.\n"
+msgstr ""
+"\n"
+"Phần %s là rỗng.\n"
+
+#. FIXME: Should we handle this case?
+#: dwarf.c:2372
+msgid "Location lists in .debug_info section aren't in ascending order!\n"
+msgstr "• Các danh sách địa điểm trong phần « .debug_info » (thông tin gỡ lỗi) không phải theo thứ tự dần. •\n"
+
+#: dwarf.c:2375
+msgid "No location lists in .debug_info section!\n"
+msgstr "• Không có danh sách địa điểm trong phần « .debug_info » (thông tin gỡ lỗi). •\n"
 
-#: nlmconv.c:2116
+#: dwarf.c:2379
 #, c-format
-msgid "%s: execution of %s failed: "
-msgstr "%s: việc thực hiện %s bị lỗi:"
+msgid "Location lists in %s section start at 0x%lx\n"
+msgstr "Danh sách địa điểm trong phần %s bắt đầu tại 0x%lx\n"
 
-#: nlmconv.c:2131
+#: dwarf.c:2383
 #, c-format
-msgid "Execution of %s failed"
-msgstr "Việc thực hiện %s bị lỗi"
+msgid "    Offset   Begin    End      Expression\n"
+msgstr "    HIệu   Đầu    Cuối      Biểu thức\n"
 
-#: nm.c:224 size.c:80 strings.c:651
+#: dwarf.c:2414
 #, c-format
-msgid "Usage: %s [option(s)] [file(s)]\n"
-msgstr "Cách sá»­ dụng: %s [tùy_chá»\8dn...] [tập_tin...]\n"
+msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "Có má»\99t lá»\97 [0x%lx - 0x%lx] trong phần Â« .debug_info Â» (thông tin gỡ lá»\97i).\n"
 
-#: nm.c:225
+#: dwarf.c:2417
 #, c-format
-msgid " List symbols in [file(s)] (a.out by default).\n"
-msgstr " Liệt kê các ký hiệu trong những tập tin này (mặc định là <a.out>).\n"
+msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "Có một nơi chồng lấp [0x%lx - 0x%lx] trong phần « .debug_info » (thông tin gỡ lỗi).\n"
 
-#: nm.c:226
+#: dwarf.c:2424
 #, c-format
-msgid ""
-" The options are:\n"
-"  -a, --debug-syms       Display debugger-only symbols\n"
-"  -A, --print-file-name  Print name of the input file before every symbol\n"
-"  -B                     Same as --format=bsd\n"
-"  -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
-"                          The STYLE, if specified, can be `auto' (the default),\n"
-"                          `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
-"                          or `gnat'\n"
-"      --no-demangle      Do not demangle low-level symbol names\n"
-"  -D, --dynamic          Display dynamic symbols instead of normal symbols\n"
-"      --defined-only     Display only defined symbols\n"
-"  -e                     (ignored)\n"
-"  -f, --format=FORMAT    Use the output format FORMAT.  FORMAT can be `bsd',\n"
-"                           `sysv' or `posix'.  The default is `bsd'\n"
-"  -g, --extern-only      Display only external symbols\n"
-"  -l, --line-numbers     Use debugging information to find a filename and\n"
-"                           line number for each symbol\n"
-"  -n, --numeric-sort     Sort symbols numerically by address\n"
-"  -o                     Same as -A\n"
-"  -p, --no-sort          Do not sort the symbols\n"
-"  -P, --portability      Same as --format=posix\n"
-"  -r, --reverse-sort     Reverse the sense of the sort\n"
-"  -S, --print-size       Print size of defined symbols\n"
-"  -s, --print-armap      Include index for symbols from archive members\n"
-"      --size-sort        Sort symbols by size\n"
-"      --special-syms     Include special symbols in the output\n"
-"      --synthetic        Display synthetic symbols as well\n"
-"  -t, --radix=RADIX      Use RADIX for printing symbol values\n"
-"      --target=BFDNAME   Specify the target object format as BFDNAME\n"
-"  -u, --undefined-only   Display only undefined symbols\n"
-"  -X 32_64               (ignored)\n"
-"  -h, --help             Display this information\n"
-"  -V, --version          Display this program's version number\n"
-"\n"
-msgstr ""
-" Tùy chọn:\n"
-"  -a, --debug-syms       \tHiển thị _ký hiệu_ chỉ kiểu bộ _gỡ lỗi_ thôi\n"
-"  -A, --print-file-name  \t_In ra tên tập tin_ nhập trước mỗi ký hiệu\n"
-"  -B                     \t\t\tBằng « --format=bsd »\n"
-"  -C, --demangle[=KIỂU_DÁNG]\n"
-"\tGiải mã các tên ký hiệu cấp thấp thành tên cấp người dùng (_tháo gỡ_)\n"
-"       Kiểu dáng này, nếu được ghi rõ, có thể  là « auto » (tự động: mặc định)\n"
-"\t« gnu », « lucid », « arm », « hp », « edg », « gnu-v3 », « java » hay « gnat ».\n"
-"      --no-demangle      \t\t_Đừng tháo gỡ_ tên ký hiệu cấp thấp\n"
-"  -D, --dynamic          \t\tHiển thị ký hiệu _động_ thay vào ký hiệu chuẩn\n"
-"      --defined-only     \t\tHiển thị _chỉ_ ký hiệu _được định nghĩa_\n"
-"  -e                     \t\t\t(bị bỏ qua)\n"
-"  -f, --format=DẠNG_THỨC    \tDùng _dạng thức_ xuất này, một của\n"
-"\t\t\t\t\t\t\t« bsd » (mặc định), « sysv » hay « posix »\n"
-"  -g, --extern-only      \t\tHiển thị _chỉ_ ký hiệu _bên ngoài_\n"
-"  -l, --line-numbers     \t\tDùng thông tin gỡ lỗi để tìm tên tập tin\n"
-"\t\t\t\t\t\tvà _số thứ tự dòng_ cho mỗi ký hiệu\n"
-"  -n, --numeric-sort     \t\t_Sắp xếp_ ký hiệu một cách _thuộc số_ theo địa chỉ\n"
-"  -o                     \t\t\tBằng « -A »\n"
-"  -p, --no-sort          \t\t_Đừng sắp xếp_ ký hiệu\n"
-"  -P, --portability      \t\tBằng « --format=posix »\n"
-"  -r, --reverse-sort     \t\t_Sắp xếp ngược_\n"
-"  -S, --print-size       \t\tIn ra kích cỡ của các ký hiệu được định nghĩa\n"
-"  -s, --print-armap      \t\tGồm chỉ mục cho ký hiệu từ bộ phạn kho\n"
-"      --size-sort        \t\t_Sắp xếp_ ký hiệu theo _kích cỡ_\n"
-"      --special-syms     \t\tGồm _ký hiệu đặc biệt_ trong dữ liệu xuất\n"
-"      --synthetic        \t\tCũng hiển thị ký hiệu _tổng hợp_\n"
-"  -t, --radix=CƠ_SỞ      \tDùng _cơ sở_ này để in ra giá trị ký hiệu\n"
-"      --target=TÊN_BFD   \tGhi rõ dạng thức đối tượng _đích_ là tên BFD này\n"
-"  -u, --undefined-only   \tHiển thị _chỉ_ ký hiệu _chưa được định nghĩa_\n"
-"  -X 32_64               \t\t(bị bỏ qua)\n"
-"  -h, --help             \t\tHiển thị _trợ giúp_ này\n"
-"  -V, --version          \t\tHiển thị số thứ tự _phiên bản_ của chương trình này\n"
-"\n"
+msgid "Offset 0x%lx is bigger than .debug_loc section size.\n"
+msgstr "Có hiệu số 0x%lx lớn hơn kích cỡ của phần « .debug_loc » (địa điểm gỡ lỗi).\n"
 
-#: nm.c:262 objdump.c:232
+#: dwarf.c:2433 dwarf.c:2460 dwarf.c:2470
 #, c-format
-msgid "Report bugs to %s.\n"
-msgstr "Hãy trình báo lỗi nào cho %s\n"
+msgid "Location list starting at offset 0x%lx is not terminated.\n"
+msgstr "Danh sách địa điểm mà bắt đầu tại hiệu số 0x%lx chưa được kết thúc.\n"
 
-#: nm.c:294
+#: dwarf.c:2445 dwarf.c:2784
 #, c-format
-msgid "%s: invalid radix"
-msgstr "%s: cơ sở không hợp lệ"
+msgid "    %8.8lx <End of list>\n"
+msgstr "    %8.8lx <Kết thúc danh sách>\n"
 
-#: nm.c:318
+#: dwarf.c:2453
 #, c-format
-msgid "%s: invalid output format"
-msgstr "%s: dạng thức xuất không hợp lệ"
+msgid "    %8.8lx %8.8lx %8.8lx (base address)\n"
+msgstr "    %8.8lx %8.8lx %8.8lx (địa chỉ cơ bản)\n"
+
+#: dwarf.c:2487 dwarf.c:2801
+msgid " (start == end)"
+msgstr " (start == end)"
+
+#: dwarf.c:2489 dwarf.c:2803
+msgid " (start > end)"
+msgstr " (start > end)"
 
-#: nm.c:339 readelf.c:6342 readelf.c:6378
+#: dwarf.c:2618
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr "Hỗ trợ hiện thời chỉ arange (phạm vị a) DWARF phiên bản 2 và 3 thôi.\n"
+
+#: dwarf.c:2622
 #, c-format
-msgid "<processor specific>: %d"
-msgstr "<đặc trưng cho bộ xử lý>: %d"
+msgid "  Length:                   %ld\n"
+msgstr "  Dài:                   %ld\n"
 
-#: nm.c:341 readelf.c:6345 readelf.c:6390
+#: dwarf.c:2623
 #, c-format
-msgid "<OS specific>: %d"
-msgstr "<đặc trưng cho hệ điều hành>: %d"
+msgid "  Version:                  %d\n"
+msgstr "  Phiên bản:                  %d\n"
 
-#: nm.c:343 readelf.c:6347 readelf.c:6393
+#: dwarf.c:2624
 #, c-format
-msgid "<unknown>: %d"
-msgstr "<không biết>: %d"
+msgid "  Offset into .debug_info:  %lx\n"
+msgstr "  Hiệu số vào « .debug_info » (thông tin gỡ lỗi):  %lx\n"
 
-#: nm.c:380
+#: dwarf.c:2625
 #, c-format
-msgid ""
-"\n"
-"Archive index:\n"
-msgstr ""
-"\n"
-"Chỉ mục kho:\n"
+msgid "  Pointer Size:             %d\n"
+msgstr "  Kích cỡ con trỏ :             %d\n"
 
-#: nm.c:1225
+#: dwarf.c:2626
 #, c-format
-msgid ""
-"\n"
-"\n"
-"Undefined symbols from %s:\n"
-"\n"
-msgstr ""
-"\n"
-"\n"
-"Ký hiệu chưa được định nghĩa từ %s:\n"
-"\n"
+msgid "  Segment Size:             %d\n"
+msgstr "  Kích cỡ phân đoạn:             %d\n"
 
-#: nm.c:1227
+#: dwarf.c:2628
 #, c-format
 msgid ""
 "\n"
-"\n"
-"Symbols from %s:\n"
-"\n"
+"    Address  Length\n"
 msgstr ""
 "\n"
-"\n"
-"Ký hiệu từ %s:\n"
-"\n"
+"    Độ dài địa chỉ\n"
+
+#. FIXME: Should we handle this case?
+#: dwarf.c:2729
+msgid "Range lists in .debug_info section aren't in ascending order!\n"
+msgstr "• Các danh sách phạm vị trong phần « .debug_info » (thông tin gỡ lỗi) không phải theo thứ tự dần. •\n"
 
-#: nm.c:1229 nm.c:1280
+#: dwarf.c:2732
+msgid "No range lists in .debug_info section!\n"
+msgstr "• Không có danh sách phạm vị trong phần « .debug_info » (thông tin gỡ lỗi). •\n"
+
+#: dwarf.c:2736
 #, c-format
-msgid ""
-"Name                  Value   Class        Type         Size     Line  Section\n"
-"\n"
-msgstr ""
-"Tên                  Giá trị   Hạng        Kiểu         Cỡ     Dòng  Phần\n"
-"\n"
+msgid "Range lists in %s section start at 0x%lx\n"
+msgstr "Danh sách phạm vị trong phần %s bắt đầu tại 0x%lx\n"
 
-#: nm.c:1232 nm.c:1283
+#: dwarf.c:2740
 #, c-format
-msgid ""
-"Name                  Value           Class        Type         Size             Line  Section\n"
-"\n"
-msgstr ""
-"Name                  Value           Class        Type         Size             Line  Section\n"
-"\n"
+msgid "    Offset   Begin    End\n"
+msgstr "    HIệu   Đầu    Cuối\n"
 
-#: nm.c:1276
+#: dwarf.c:2765
 #, c-format
-msgid ""
-"\n"
-"\n"
-"Undefined symbols from %s[%s]:\n"
-"\n"
-msgstr ""
-"\n"
-"\n"
-"Ký hiệu chưa được định nghĩa từUndefined symbols from %s[%s]:\n"
-"\n"
+msgid "There is a hole [0x%lx - 0x%lx] in %s section.\n"
+msgstr "Có một lỗ [0x%lx - 0x%lx] trong phần %s.\n"
 
-#: nm.c:1278
+#: dwarf.c:2769
 #, c-format
-msgid ""
-"\n"
-"\n"
-"Symbols from %s[%s]:\n"
-"\n"
-msgstr ""
-"\n"
-"\n"
-"Ký hiệu từ %s[%s]:\n"
-"\n"
+msgid "There is an overlap [0x%lx - 0x%lx] in %s section.\n"
+msgstr "Có một nơi chồng lấp [0x%lx - 0x%lx] trong phần %s.\n"
 
-#: nm.c:1580
-msgid "Only -X 32_64 is supported"
-msgstr "Chỉ hỗ trợ « -X 32_64 »"
+#: dwarf.c:2964
+#, c-format
+msgid "The section %s contains:\n"
+msgstr "Phần %s chứa:\n"
 
-#: nm.c:1600
-msgid "Using the --size-sort and --undefined-only options together"
-msgstr "Dùng tùy chọn cả « --size-sort » lẫn « --undefined-only » đều"
+#: dwarf.c:3608
+#, c-format
+msgid "unsupported or unknown DW_CFA_%d\n"
+msgstr "« DW_CFA_%d » không được hỗ trợ, hay không rõ\n"
 
-#: nm.c:1601
-msgid "will produce no output, since undefined symbols have no size."
-msgstr "sẽ không xuất gì, vì ký hiệu chưa được định nghĩa không có kích cỡ nào."
+#: dwarf.c:3632
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr "Chưa hỗ trợ khả năng hiển thị nội dung phần %s.\n"
 
-#: nm.c:1629
+#: dwarf.c:3674
 #, c-format
-msgid "data size %ld"
-msgstr "cỡ dữ liệu %ld"
+msgid "%s: Error: "
+msgstr "%s: Lỗi: "
 
-#: objcopy.c:396 srconv.c:1721
+#: dwarf.c:3685
 #, c-format
-msgid "Usage: %s [option(s)] in-file [out-file]\n"
-msgstr "Cách sử dụng: %s [tùy_chọn...] tập_tin_nhập [tập_tin_xuất]\n"
+msgid "%s: Warning: "
+msgstr "%s: Cảnh báo : "
 
-#: objcopy.c:397
+#: emul_aix.c:51
 #, c-format
-msgid " Copies a binary file, possibly transforming it in the process\n"
-msgstr " Sao chép tập tin nhị phân, cũng có thể chuyển đổi nó\n"
+msgid "  [-g]         - 32 bit small archive\n"
+msgstr "  [-g]         • kho nhỏ 32-bit\n"
 
-#: objcopy.c:398 objcopy.c:487
+#: emul_aix.c:52
 #, c-format
-msgid " The options are:\n"
-msgstr " Tùy chọn:\n"
+msgid "  [-X32]       - ignores 64 bit objects\n"
+msgstr "  [-X32]       • bỏ qua các đối tượng kiểu 64 bit\n"
 
-#: objcopy.c:399
+#: emul_aix.c:53
 #, c-format
-msgid ""
-"  -I --input-target <bfdname>      Assume input file is in format <bfdname>\n"
-"  -O --output-target <bfdname>     Create an output file in format <bfdname>\n"
-"  -B --binary-architecture <arch>  Set arch of output file, when input is binary\n"
-"  -F --target <bfdname>            Set both input and output format to <bfdname>\n"
-"     --debugging                   Convert debugging information, if possible\n"
-"  -p --preserve-dates              Copy modified/access timestamps to the output\n"
-"  -j --only-section <name>         Only copy section <name> into the output\n"
-"     --add-gnu-debuglink=<file>    Add section .gnu_debuglink linking to <file>\n"
-"  -R --remove-section <name>       Remove section <name> from the output\n"
-"  -S --strip-all                   Remove all symbol and relocation information\n"
-"  -g --strip-debug                 Remove all debugging symbols & sections\n"
-"     --strip-unneeded              Remove all symbols not needed by relocations\n"
-"  -N --strip-symbol <name>         Do not copy symbol <name>\n"
-"     --strip-unneeded-symbol <name>\n"
-"                                   Do not copy symbol <name> unless needed by\n"
-"                                     relocations\n"
-"     --only-keep-debug             Strip everything but the debug information\n"
-"  -K --keep-symbol <name>          Only copy symbol <name>\n"
-"  -L --localize-symbol <name>      Force symbol <name> to be marked as a local\n"
-"  -G --keep-global-symbol <name>   Localize all symbols except <name>\n"
-"  -W --weaken-symbol <name>        Force symbol <name> to be marked as a weak\n"
-"     --weaken                      Force all global symbols to be marked as weak\n"
-"  -w --wildcard                    Permit wildcard in symbol comparison\n"
-"  -x --discard-all                 Remove all non-global symbols\n"
-"  -X --discard-locals              Remove any compiler-generated symbols\n"
-"  -i --interleave <number>         Only copy one out of every <number> bytes\n"
-"  -b --byte <num>                  Select byte <num> in every interleaved block\n"
-"     --gap-fill <val>              Fill gaps between sections with <val>\n"
-"     --pad-to <addr>               Pad the last section up to address <addr>\n"
-"     --set-start <addr>            Set the start address to <addr>\n"
-"    {--change-start|--adjust-start} <incr>\n"
-"                                   Add <incr> to the start address\n"
-"    {--change-addresses|--adjust-vma} <incr>\n"
-"                                   Add <incr> to LMA, VMA and start addresses\n"
-"    {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
-"                                   Change LMA and VMA of section <name> by <val>\n"
-"     --change-section-lma <name>{=|+|-}<val>\n"
-"                                   Change the LMA of section <name> by <val>\n"
-"     --change-section-vma <name>{=|+|-}<val>\n"
-"                                   Change the VMA of section <name> by <val>\n"
-"    {--[no-]change-warnings|--[no-]adjust-warnings}\n"
-"                                   Warn if a named section does not exist\n"
-"     --set-section-flags <name>=<flags>\n"
-"                                   Set section <name>'s properties to <flags>\n"
-"     --add-section <name>=<file>   Add section <name> found in <file> to output\n"
-"     --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
-"     --change-leading-char         Force output format's leading character style\n"
-"     --remove-leading-char         Remove leading character from global symbols\n"
-"     --redefine-sym <old>=<new>    Redefine symbol name <old> to <new>\n"
-"     --redefine-syms <file>        --redefine-sym for all symbol pairs \n"
-"                                     listed in <file>\n"
-"     --srec-len <number>           Restrict the length of generated Srecords\n"
-"     --srec-forceS3                Restrict the type of generated Srecords to S3\n"
-"     --strip-symbols <file>        -N for all symbols listed in <file>\n"
-"     --strip-unneeded-symbols <file>\n"
-"                                   --strip-unneeded-symbol for all symbols listed\n"
-"                                     in <file>\n"
-"     --keep-symbols <file>         -K for all symbols listed in <file>\n"
-"     --localize-symbols <file>     -L for all symbols listed in <file>\n"
-"     --keep-global-symbols <file>  -G for all symbols listed in <file>\n"
-"     --weaken-symbols <file>       -W for all symbols listed in <file>\n"
-"     --alt-machine-code <index>    Use alternate machine code for output\n"
-"     --writable-text               Mark the output text as writable\n"
-"     --readonly-text               Make the output text write protected\n"
-"     --pure                        Mark the output file as demand paged\n"
-"     --impure                      Mark the output file as impure\n"
-"     --prefix-symbols <prefix>     Add <prefix> to start of every symbol name\n"
-"     --prefix-sections <prefix>    Add <prefix> to start of every section name\n"
-"     --prefix-alloc-sections <prefix>\n"
-"                                   Add <prefix> to start of every allocatable\n"
-"                                     section name\n"
-"  -v --verbose                     List all object files modified\n"
-"  -V --version                     Display this program's version number\n"
-"  -h --help                        Display this output\n"
-"     --info                        List object formats & architectures supported\n"
-msgstr ""
-"  -I --input-target <tên_bfd>\t\tGiả sử tập tin nhập có dạng <tên_bfd>\n"
-"\t\t\t\t\t\t\t\t    (_đích nhập_)\n"
-"  -O --output-target <tên_bfd>     \tTạo tập tin dạng <tên_bfd>\n"
-"\t\t\t\t\t\t\t\t    (_đích xuất_)\n"
-"  -B --binary-architecture <kiến_trúc>\n"
-"\t\t\tLập _kiến trúc_ của tập tin xuất, khi tập tin nhập là _nhị phân_\n"
-"  -F --target <tên_bfd>\n"
-"\t\t\tLập dạng thức cả nhập lẫn xuất đều thành <tên_bfd> (_đích_)\n"
-"     --debugging                   \t\t\tChuyển đổi thông tin _gỡ lỗi_, nếu có thể\n"
-"  -p --preserve-dates\n"
-"\tSao chép nhãn thời gian truy cập/sửa đổi vào kết xuất (_bảo tồn các ngày_)\n"
-"  -j --only-section <tên>         \t_Chỉ_ sao chép <tên> _phần_ vào kết xuất\n"
-"     --add-gnu-debuglink=<tập_tin>\n"
-"\t\t_Thêm_ khả năng liên kết phần « .gnu_debuglink » vào <tập_tin>\n"
-"  -R --remove-section <tên>       \t_Gỡ bỏ phần_ <tên> ra kết xuất\n"
-"  -S --strip-all                   \t\t\tGỡ bỏ mọi thông tin ký hiệu và định vị lại\n"
-"\t\t\t\t\t\t\t\t    (_tước hết_)\n"
-"  -g --strip-debug                 \t\tGỡ bỏ mọi ký hiệu và phần kiểu gỡ lỗi\n"
-"\t\t\t\t\t\t\t\t    (_tước gỡ lỗi_)\n"
-"     --strip-unneeded        \tGỡ bỏ mọi ký hiệu không cần thiết để định vị lại\n"
-"\t\t\t\t\t\t\t\t    (_tước không cần thiết_)\n"
-"  -N --strip-symbol <tên>        \t\t Đừng sao chép ký hiệu <tên>\n"
-"\t\t\t\t\t\t\t\t    (_tước ký hiệu_)\n"
-"     --strip-unneeded-symbol <tên>\n"
-"\tĐừng sao chép ký hiệu trừ cần thiết để định vị lại (_tước không cần thiết_)\n"
-"     --only-keep-debug\t\t\t\tTước hết, trừ thông tin gỡ lỗi\n"
-"\t\t\t\t\t\t\t\t    (_chỉ giữ gỡ lỗi_)\n"
-"  -K --keep-symbol <tên>          \tChỉ sao chép ký hiệu <tên>\n"
-"\t\t\t\t\t\t\t\t    (_giữ ký hiệu_)\n"
-"  -L --localize-symbol <tên>\n"
-"\t\t\t\tBuộc ký hiệu <tên>có nhãn điều cục bộ (_địa phương hóa_)\n"
-"  -G --keep-global-symbol <tên>   \tĐịa phương hóa mọi ký hiệu trừ <name>\n"
-"\t\t\t\t\t\t\t\t    (_giữ ký hiệu toàn cục_)\n"
-"      -W --weaken-symbol <tên>        \tBuộc ký hiệu <name> có nhãn điều yếu\n"
-"\t\t\t\t\t\t\t\t    (_làm yếu ký hiệu_)\n"
-"     --weaken                      \t\tBuộc mọi ký hiệu toàn cục có nhãn điều yếu\n"
-"\t\t\t\t\t\t\t\t    (_làm yếu đi_)\n"
-"  -w --wildcard          \t\tCho phép _ký tự đại diện_ trong sự so sánh ký hiệu\n"
-"  -x --discard-all                 \t\t\tGỡ bỏ mọi ký hiệu không toàn cục\n"
-"\t\t\t\t\t\t\t\t    (_hủy hết_)\n"
-"  -X --discard-locals              Gỡ bỏ ký hiệu nào được tạo ra bởi bộ biên dịch\n"
-"\t\t\t\t\t\t\t\t    (_hủy các điều cục bộ_)\n"
-"  -i --interleave <số>         \t\t\tChỉ sao chép một của mỗi <số> byte\n"
-"\t\t\t\t\t\t\t\t    (_chen vào_)\n"
-"  -b --byte <số>\n"
-"\t\t\t\tChọn byte số thứ tự <số> trong mỗi khối tin đã chen vào\n"
-"     --gap-fill <giá_trị>              \t_Điền vào khe_ giữa hai phần bằng <giá_trị>\n"
-"     --pad-to <địa_chỉ>\t\t_Đệm_ phần cuối cùng _đế_n địa chỉ <địa_chỉ>\n"
-"     --set-start <địa_chỉ>            \t\t_Lập_ địa chỉ _đầu_ thành <địa_chỉ>\n"
-"    {--change-start|--adjust-start} <tăng>\n"
-"\t\tThêm <tăng> vào địa chỉ đầu (_thay đổi đầu, điều chỉnh đầu_)\n"
-"    {--change-addresses|--adjust-vma} <tang>\n"
-"    \t\t\t\t\t\t\tThêm <tang> vào địa chỉ đầu, LMA và VMA\n"
-"\t\t\t\t\t\t\t    (_thay đổi địa chỉ, điều chỉnh vma_)\n"
-"    {--change-section-address|--adjust-section-vma} <tên>{=|+|-}<giá_trị>\n"
-"\t\t\t\t\tThay đổi LMA và VMA của phần <tên> bằng <giá_trị>\n"
-"\t\t\t\t\t\t(_thay đổi địa chỉ phần, điều chỉnh vma phần_)\n"
-"     --change-section-lma <tên>{=|+|-}<giá_trị>\n"
-"   \tThay đổi LMA của phần <tên> bằng <giá_trị> (_thay đổi LMA của phần_)\n"
-"     --change-section-vma <tên>{=|+|-}<giá_trị>\n"
-"  \tThay đổi VMA của phần <tên> bằng <giá_trị> (_thay đổi VMA của phần_)\n"
-"    {--[no-]change-warnings|--[no-]adjust-warnings}\n"
-"   \t\t\t\t\t\t\t\tCảnh báo nếu không có phần có tên\n"
-"\t\t(_[không] thay đổi các cảnh báo, [không] điều chỉnh các cảnh báo_)\n"
-"     --set-section-flags <tên>=<cờ ...>\n"
-"                                   \t\tLập thuộc tính của phần <tên> thành <cờ ...>\n"
-"\t\t\t\t\t\t\t\t    (_lập các cờ phần_)\n"
-"     --add-section <tên>=<tập_tin>\n"
-"\t\t\t\t_Thêm phần_ <tên> được tìm trong <tập_tin> vào kết  xuất\n"
-"     --rename-section <cũ>=<mới>[,<cờ ...>]\n"
-"\t\t\t\t\t\t\t\t_Thay đổi phần_ <cũ> thành <mới>\n"
-"     --change-leading-char\n"
-"\t\t\t\t\tBuộc kiểu dáng của ký tự đi trước của dạng thức xuất\n"
-"\t\t\t\t\t\t\t\t    (_thay đổi ký tự đi trước_)\n"
-"     --remove-leading-char\t\t_Gỡ bỏ ký tự đi trước_ ra các ký hiệu toàn cục\n"
-"     --redefine-sym <cũ>=<mới>\n"
-"\t\t\t\t\t\t_Định nghĩa lại_ tên _ký hiệu_ <cũ> thành <mới>\n"
-"     --redefine-syms <tập_tin>\n"
-"\t\t« --redefine-sym » cho mọi cặp ký hiệu được liệt kê trong <tập_tin>\n"
-"     --srec-len <số>           \t\tGiới hạn _độ dài_ của các Srecords đã tạo ra\n"
-"     --srec-forceS3                \tGiới hạn kiểu Srecords thành S3 (_buộc_)\n"
-"     --strip-symbols <tập_tin>\n"
-"\t« -N » cho mọi ký hiệu được liệt kê trong <tập_tin> (_tước các ký hiệu_)\n"
-"     --strip-unneeded-symbols <tập_tin>\n"
-"     \t\t\t\t\t\t\t« --strip-unneeded-symbol » cho mọi ký hiệu\n"
-"\t\t\t\t\t\t\t\tđược liệt kê trong <tập_tin>\n"
-"     --keep-symbols <tập_tin>\n"
-"\t\t\t\t\t« -K » cho mọi ký hiệu được liệt kê trong <tập_tin>\n"
-"\t\t\t\t\t\t\t\t    (_giữ các ký hiệu_)\n"
-"     --localize-symbols <tập_tin>\n"
-"\t\t\t\t\t« -L » cho mọi ký hiệu được liệt kê trong <tập_tin>\n"
-"\t\t\t\t\t\t\t\t    (_địa phương hóa các ký hiệu_)\n"
-"     --keep-global-symbols <tập_tin>\n"
-"\t\t\t\t\t« -G » cho mọi ký hiệu được liệt kê trong <tập_tin>\n"
-"\t\t\t\t\t\t\t\t    (_giữ các ký hiệu toàn cục_)\n"
-"     --weaken-symbols <tập_tin>\n"
-"\t\t\t\t\t« -W » cho mọi ký hiệu được liệt kê trong <tập_tin>\n"
-"\t\t\t\t\t\t\t\t    (_làm yếu các ký hiệu_)\n"
-"     --alt-machine-code <chỉ_mục>    Dùng _mã máy xen kẽ_ cho kết xuất\n"
-"     --writable-text               \t\tĐánh dấu _văn bản_ xuất _có khả năng ghi_\n"
-"     --readonly-text               \tLàm cho vân bản xuất được bảo vậ chống ghi\n"
-"\t\t\t\t\t\t\t\t    (_văn bản chỉ có khả năng đọc_)\n"
-"     --pure\n"
-"\t\t\tĐánh dấu tập tin xuất sẽ có trang được sắp xếp theo yêu cầu\n"
-"\t\t\t\t\t\t\t\t    (_tinh khiết_)\n"
-"     --impure                      \t\tĐánh dấu tập tin xuất _không tinh khiết_\n"
-"     --prefix-symbols <tiền_tố>\n"
-"\t\tThêm <tiền_tố> vào đầu của mọi tên ký hiệu (_tiền tố các ký hiệu_)\n"
-"     --prefix-sections <tiền_tố>\n"
-"\t\tThêm <tiền_tố> vào đầu của mọi tên phần (_tiền tố các phần_)\n"
-"     --prefix-alloc-sections <tiền_tố>\n"
-"\t\tThêm <tiền_tố> vào đầu của mọi tên phần có thể cấp phát\n"
-"\t\t\t\t\t\t\t\t(_tiền tố các phần có thể cấp phát_)\n"
-"  -v --verbose                     \t\tLiệt kê mọi tập tin đối tượng đã được sửa đổi\n"
-"\t\t\t\t\t\t\t\t    (_chi tiết_)\n"
-"  -V --version                    Hiển thị số thứ tự _phiên bản_ của chương trình này\n"
-"  -h --help                        \t\t\tHiển thị _trợ giúp_ này\n"
-"     --info                        \t\tLiệt kê các dạng thức và kiến trúc được hỗ trợ\n"
-"\t\t\t\t\t\t\t\t    (_thông tin_)\n"
-
-#: objcopy.c:485
-#, c-format
-msgid "Usage: %s <option(s)> in-file(s)\n"
-msgstr "Cách sử dụng: %s <tùy_chọn> tập_tin_nhập...\n"
-
-#: objcopy.c:486
-#, c-format
-msgid " Removes symbols and sections from files\n"
-msgstr " Gỡ bỏ ký hiệu và phần ra tập tin\n"
-
-#: objcopy.c:488
-#, c-format
-msgid ""
-"  -I --input-target=<bfdname>      Assume input file is in format <bfdname>\n"
-"  -O --output-target=<bfdname>     Create an output file in format <bfdname>\n"
-"  -F --target=<bfdname>            Set both input and output format to <bfdname>\n"
-"  -p --preserve-dates              Copy modified/access timestamps to the output\n"
-"  -R --remove-section=<name>       Remove section <name> from the output\n"
-"  -s --strip-all                   Remove all symbol and relocation information\n"
-"  -g -S -d --strip-debug           Remove all debugging symbols & sections\n"
-"     --strip-unneeded              Remove all symbols not needed by relocations\n"
-"     --only-keep-debug             Strip everything but the debug information\n"
-"  -N --strip-symbol=<name>         Do not copy symbol <name>\n"
-"  -K --keep-symbol=<name>          Only copy symbol <name>\n"
-"  -w --wildcard                    Permit wildcard in symbol comparison\n"
-"  -x --discard-all                 Remove all non-global symbols\n"
-"  -X --discard-locals              Remove any compiler-generated symbols\n"
-"  -v --verbose                     List all object files modified\n"
-"  -V --version                     Display this program's version number\n"
-"  -h --help                        Display this output\n"
-"     --info                        List object formats & architectures supported\n"
-"  -o <file>                        Place stripped output into <file>\n"
-msgstr ""
-"  -I --input-target=<tên_bfd>        Giả sử tập tin nhập có dạng thức <tên_bfd>\n"
-"\t\t(đích nhập)\n"
-"  -O --output-target=<tên_bfd>  Tạo một tập tin xuất có dạng thức <tên_bfd>\n"
-"\t\t(đích xuất)\n"
-"  -F --target=<tên_bfd>   Đặt dạng thức cả nhập lẫn xuất đều thành <tên_bfd>\n"
-"\t\t(đích)\n"
-"  -p --preserve-dates\n"
-"\t\tSao chép các nhãn thời gian truy cập/đã sửa đổi vào kết xuất\n"
-"\t\t(bảo tồn các ngày)\n"
-"  -R --remove-section=<tên>       \t_Gỡ bỏ phần_ <name> ra dữ liệu xuất\n"
-"  -s --strip-all                   \t\tGỡ bỏ mọi thông tin kiểu ký hiệu và định vị lại\n"
-"\t\t(tước hết)\n"
-"  -g -S -d --strip-debug           \tGỡ bỏ mọi ký hiệu và phần kiểu gỡ lỗi\n"
-"\t\t(tước gỡ lỗi)\n"
-"     --strip-unneeded               Gỡ bỏ mọi ký hiệu không cần thiết khi định vị lại\n"
-"\t\t(tước không cần thiết)\n"
-"     --only-keep-debug             \tTước hết, trừ thông tin gỡ lỗi\n"
-"\t\t(chỉ giữ gỡ lỗi)\n"
-"  -N --strip-symbol=<tên>      \tĐừng sao chép ký hiệu <tên>\n"
-"\t\t(tước ký hiệu)\n"
-"  -K --keep-symbol=<tên>       \tSao chép chỉ ký hiệu <tên>\n"
-"\t\t(giữ ký hiệu)\n"
-"  -w --wildcard                Cho phép _ký tự đại diện_ trong chuỗi so sánh ký hiệu\n"
-"  -x --discard-all                 \t\tGỡ bỏ mọi ký hiệu không toàn cục\n"
-"\t\t(hủy hết)\n"
-"  -X --discard-locals              \tGỡ bo ký hiệu nào do bộ biên dịch tạo ra\n"
-"\t\t(hủy các điều cục bộ)\n"
-"  -v --verbose                     \t\tLiệt kê mọi tập tin đối tượng đã sửa đổi\n"
-"\t\t(chi tiết)\n"
-"  -V --version                     Hiển thị số thứ tự _phiên bản_ của chương trình này\n"
-"  -h --help                        \t\tHiển thị _trợ giúp_ này\n"
-"     --info                     Liệt kê các dạng thức đối tượng và kiến trúc được hỗ trợ\n"
-"\t\t(thông tin)  -o <tập_tin>                        \tĐể kết _xuất_ đã tướng vào <tập_tin>\n"
-
-#: objcopy.c:560
-#, c-format
-msgid "unrecognized section flag `%s'"
-msgstr "không nhận ra cờ phần « %s »"
-
-#: objcopy.c:561
-#, c-format
-msgid "supported flags: %s"
-msgstr "các cờ đã hỗ trợ : %s"
-
-#: objcopy.c:638
-#, c-format
-msgid "cannot open '%s': %s"
-msgstr "không thể mở « %s »: %s"
-
-#: objcopy.c:641 objcopy.c:2629
-#, c-format
-msgid "%s: fread failed"
-msgstr "%s: việc fread (đọc f) bị lỗi"
-
-#: objcopy.c:714
-#, c-format
-msgid "%s:%d: Ignoring rubbish found on this line"
-msgstr "%s:%d: Đang bỏ qua rác được gặp trên dòng này"
-
-#: objcopy.c:976
-#, c-format
-msgid "%s: Multiple redefinition of symbol \"%s\""
-msgstr "%s: Ký hiệu « %s » đã được định nghĩa lại nhiều lần"
-
-#: objcopy.c:980
-#, c-format
-msgid "%s: Symbol \"%s\" is target of more than one redefinition"
-msgstr "%s: Ký hiệu « %s » là đích của nhiều lời định nghĩa lại"
-
-#: objcopy.c:1008
-#, c-format
-msgid "couldn't open symbol redefinition file %s (error: %s)"
-msgstr "không thể mở tập tin định nghĩa lại ký hiệu %s (lỗi: %s)"
-
-#: objcopy.c:1086
-#, c-format
-msgid "%s:%d: garbage found at end of line"
-msgstr "%s:%d: gặp rác tại kết thúc dòng"
-
-#: objcopy.c:1089
-#, c-format
-msgid "%s:%d: missing new symbol name"
-msgstr "%s:%d: thiếu tên ký hiệu mới"
-
-#: objcopy.c:1099
-#, c-format
-msgid "%s:%d: premature end of file"
-msgstr "%s:%d: gặp kết thúc tập tin quá sớm"
-
-#: objcopy.c:1124
-msgid "Unable to change endianness of input file(s)"
-msgstr "Không thể thay đổi tính trạng cuối (endian) của (các) tập tin nhập"
-
-#: objcopy.c:1133
-#, c-format
-msgid "copy from %s(%s) to %s(%s)\n"
-msgstr "chép từ %s(%s) đến %s(%s)\n"
-
-#: objcopy.c:1170
-#, c-format
-msgid "Unable to recognise the format of the input file %s"
-msgstr "Không thể nhận diện dạng thức của tập tin nhập %s"
-
-#: objcopy.c:1174
-#, c-format
-msgid "Warning: Output file cannot represent architecture %s"
-msgstr "Cảnh báo : Tập tin xuất không thể tiêu biểu kiến trúc %s"
-
-#: objcopy.c:1211
-#, c-format
-msgid "can't create section `%s': %s"
-msgstr "không thể tạo phần « %s »: %s"
-
-#: objcopy.c:1277
-msgid "there are no sections to be copied!"
-msgstr "• Không có phần cần sao chép. •"
-
-#: objcopy.c:1323
-#, c-format
-msgid "Can't fill gap after %s: %s"
-msgstr "Không thể điền vào khe sau : %s: %s"
-
-#: objcopy.c:1348
-#, c-format
-msgid "Can't add padding to %s: %s"
-msgstr "Không thể thêm đệm vào %s: %s"
-
-#: objcopy.c:1514
-#, c-format
-msgid "%s: error copying private BFD data: %s"
-msgstr "%s: gặp lỗi khi sao chép dữ liệu BFD riêng : %s"
-
-#: objcopy.c:1525
-msgid "unknown alternate machine code, ignored"
-msgstr "không biết mã máy xen kẽ nên bỏ qua nó"
+msgid "  [-X64]       - ignores 32 bit objects\n"
+msgstr "  [-X64]       • bỏ qua các đối tượng kiểu 32 bit\n"
 
-#: objcopy.c:1555 objcopy.c:1585
+#: emul_aix.c:54
 #, c-format
-msgid "cannot mkdir %s for archive copying (error: %s)"
-msgstr "không thể mkdir (tạo thư mục) %s để sao chép kho (lỗi: %s)"
+msgid "  [-X32_64]    - accepts 32 and 64 bit objects\n"
+msgstr "  [-X32_64]    • chấp nhận các đối tượng kiểu cả 32 bit lẫn 64 bit đều\n"
 
-#: objcopy.c:1790
-#, c-format
-msgid "Multiple renames of section %s"
-msgstr "Đã thay đổi tên phần %s nhiều lần"
+#: ieee.c:311
+msgid "unexpected end of debugging information"
+msgstr "gặp kết thúc thông tin gỡ lỗi bất ngờ"
 
-#: objcopy.c:1841
-msgid "private header data"
-msgstr "dữ liệu dòng đầu riêng"
+#: ieee.c:398
+msgid "invalid number"
+msgstr "số không hợp lệ"
 
-#: objcopy.c:1849
-#, c-format
-msgid "%s: error in %s: %s"
-msgstr "%s: lỗi trong %s: %s"
+#: ieee.c:451
+msgid "invalid string length"
+msgstr "độ dài chuỗi không hợp lệ"
 
-#: objcopy.c:1903
-msgid "making"
-msgstr "làm"
+#: ieee.c:506 ieee.c:547
+msgid "expression stack overflow"
+msgstr "trán đống biểu thức"
 
-#: objcopy.c:1912
-msgid "size"
-msgstr "cỡ"
+#: ieee.c:526
+msgid "unsupported IEEE expression operator"
+msgstr "toán tử biểu thức IEE không được hỗ trợ"
 
-#: objcopy.c:1926
-msgid "vma"
-msgstr "vma"
+#: ieee.c:541
+msgid "unknown section"
+msgstr "không biết phần"
 
-#: objcopy.c:1951
-msgid "alignment"
-msgstr "canh lề"
+#: ieee.c:562
+msgid "expression stack underflow"
+msgstr "trán ngược đống biểu thức"
 
-#: objcopy.c:1966
-msgid "flags"
-msgstr "cờ"
+#: ieee.c:576
+msgid "expression stack mismatch"
+msgstr "đống biểu thức không khớp với nhau"
 
-#: objcopy.c:1988
-msgid "private data"
-msgstr "dữ liệu riêng"
+#: ieee.c:613
+msgid "unknown builtin type"
+msgstr "không biết kiểu builtin"
 
-#: objcopy.c:1996
-#, c-format
-msgid "%s: section `%s': error in %s: %s"
-msgstr "%s: phần « %s »: lỗi trong %s: %s"
+#: ieee.c:758
+msgid "BCD float type not supported"
+msgstr "Kiểu nổi BDC không được hỗ trợ"
 
-#: objcopy.c:2274
-#, c-format
-msgid "%s: can't create debugging section: %s"
-msgstr "%s: không thể tạo phần gỡ lỗi: %s"
+#: ieee.c:895
+msgid "unexpected number"
+msgstr "số bất ngờ"
 
-#: objcopy.c:2288
-#, c-format
-msgid "%s: can't set debugging section contents: %s"
-msgstr "%s: không thể đặt nội dung phần gỡ lỗi: %s"
+#: ieee.c:902
+msgid "unexpected record type"
+msgstr "kiểu mục ghi bất ngờ"
 
-#: objcopy.c:2297
-#, c-format
-msgid "%s: don't know how to write debugging information for %s"
-msgstr "%s: không biết cách ghi thông tin gỡ lỗi cho %s"
+#: ieee.c:935
+msgid "blocks left on stack at end"
+msgstr "có một số khối còn lại trên đống khi kết thúc"
 
-#: objcopy.c:2472
-msgid "byte number must be non-negative"
-msgstr "số byte phải là không âm"
+#: ieee.c:1198
+msgid "unknown BB type"
+msgstr "không biết kiểu BB"
 
-#: objcopy.c:2482
-msgid "interleave must be positive"
-msgstr "chen vào phải là dương"
+#: ieee.c:1207
+msgid "stack overflow"
+msgstr "trán đống"
 
-#: objcopy.c:2502 objcopy.c:2510
-#, c-format
-msgid "%s both copied and removed"
-msgstr "%s cả được sao chép lẫn bị gỡ bỏ đều"
+#: ieee.c:1230
+msgid "stack underflow"
+msgstr "trán ngược đống"
 
-#: objcopy.c:2603 objcopy.c:2674 objcopy.c:2774 objcopy.c:2805 objcopy.c:2829
-#: objcopy.c:2833 objcopy.c:2853
-#, c-format
-msgid "bad format for %s"
-msgstr "dạng thức sai cho %s"
+#: ieee.c:1342 ieee.c:1412 ieee.c:2109
+msgid "illegal variable index"
+msgstr "chỉ mục biến không được phép"
 
-#: objcopy.c:2624
-#, c-format
-msgid "cannot open: %s: %s"
-msgstr "không thể mở : %s: %s"
+#: ieee.c:1390
+msgid "illegal type index"
+msgstr "chỉ mục kiểu không được phép"
 
-#: objcopy.c:2743
-#, c-format
-msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
-msgstr "Cảnh báo : đang cắt xén điền-khe từ 0x%s thành 0x%x"
+#: ieee.c:1400 ieee.c:1437
+msgid "unknown TY code"
+msgstr "không biết mã TY"
 
-#: objcopy.c:2903
-msgid "alternate machine code index must be positive"
-msgstr "chỉ mục mã máy xen kẽ phải là dương"
+#: ieee.c:1419
+msgid "undefined variable in TY"
+msgstr "gặp biến chưa được định nghĩa trong TY"
 
-#: objcopy.c:2961
-msgid "byte number must be less than interleave"
-msgstr "số byte phải là ít hơn chen vào"
+#. Pascal file name.  FIXME.
+#: ieee.c:1830
+msgid "Pascal file name not supported"
+msgstr "Chưa hỗ trợ tên tập tin kiểu Pascal"
 
-#: objcopy.c:2991
-#, c-format
-msgid "architecture %s unknown"
-msgstr "không biết kiến trúc %s"
+#: ieee.c:1878
+msgid "unsupported qualifier"
+msgstr "bộ dè dặt chưa được hỗ trợ"
 
-#: objcopy.c:2995
-msgid "Warning: input target 'binary' required for binary architecture parameter."
-msgstr "Cảnh báo : đích nhập « binary » (nhị phân) cần thiết cho tham số kiến trúc nhị phân."
+#: ieee.c:2147
+msgid "undefined variable in ATN"
+msgstr "gặp biến chưa định nghĩa trong ATN"
 
-#: objcopy.c:2996
-#, c-format
-msgid " Argument %s ignored"
-msgstr " Đối số %s bị bỏ qua"
+#: ieee.c:2190
+msgid "unknown ATN type"
+msgstr "không biết kiểu ATN"
 
-#: objcopy.c:3002
-#, c-format
-msgid "warning: could not locate '%s'.  System error message: %s"
-msgstr "cảnh báo : không thể định vị « %s ». Thông điệp lỗi hệ thống: %s"
+#. Reserved for FORTRAN common.
+#: ieee.c:2312
+msgid "unsupported ATN11"
+msgstr "ATN11 không được hỗ trơ"
 
-#: objcopy.c:3042 objcopy.c:3056
-#, c-format
-msgid "%s %s%c0x%s never used"
-msgstr "%s %s%c0x%s chưa bao giờ dùng"
+#. We have no way to record this information.  FIXME.
+#: ieee.c:2339
+msgid "unsupported ATN12"
+msgstr "ATN12 không được hỗ trơ"
 
-#: objdump.c:176
-#, c-format
-msgid "Usage: %s <option(s)> <file(s)>\n"
-msgstr "Cách sử dụng: %s <tùy_chọn...> <tập_tin...>\n"
+#: ieee.c:2399
+msgid "unexpected string in C++ misc"
+msgstr "gặp chuỗi không được hỗ trơ trong C++ lặt vặt"
 
-#: objdump.c:177
-#, c-format
-msgid " Display information from object <file(s)>.\n"
-msgstr " Hiển thị thông tin từ <tập_tin...> đối tượng.\n"
+#: ieee.c:2412
+msgid "bad misc record"
+msgstr "mục ghi lặt vặt sai"
 
-#: objdump.c:178
-#, c-format
-msgid " At least one of the following switches must be given:\n"
-msgstr " Phải đưa ra ít nhất một của những cái chuyển theo sau :\n"
+#: ieee.c:2453
+msgid "unrecognized C++ misc record"
+msgstr "không chấp nhận mục ghi C++ lặt vặt"
 
-#: objdump.c:179
-#, c-format
-msgid ""
-"  -a, --archive-headers    Display archive header information\n"
-"  -f, --file-headers       Display the contents of the overall file header\n"
-"  -p, --private-headers    Display object format specific file header contents\n"
-"  -h, --[section-]headers  Display the contents of the section headers\n"
-"  -x, --all-headers        Display the contents of all headers\n"
-"  -d, --disassemble        Display assembler contents of executable sections\n"
-"  -D, --disassemble-all    Display assembler contents of all sections\n"
-"  -S, --source             Intermix source code with disassembly\n"
-"  -s, --full-contents      Display the full contents of all sections requested\n"
-"  -g, --debugging          Display debug information in object file\n"
-"  -e, --debugging-tags     Display debug information using ctags style\n"
-"  -G, --stabs              Display (in raw form) any STABS info in the file\n"
-"  -t, --syms               Display the contents of the symbol table(s)\n"
-"  -T, --dynamic-syms       Display the contents of the dynamic symbol table\n"
-"  -r, --reloc              Display the relocation entries in the file\n"
-"  -R, --dynamic-reloc      Display the dynamic relocation entries in the file\n"
-"  -v, --version            Display this program's version number\n"
-"  -i, --info               List object formats and architectures supported\n"
-"  -H, --help               Display this information\n"
-msgstr ""
-"  -a, --archive-headers    \t\tHiển thị thông tin về _các phần đầu kho_\n"
-"  -f, --file-headers          Hiển thị nội dung của _toàn bộ phần đầu tập tin_\n"
-"  -p, --private-headers\n"
-"\t\tHiển thị nội dung của phần đầu tập tin đặc trưng cho đối tượng\n"
-"\t\t(các phần đầu riêng)\n"
-"  -h, --[section-]headers    Hiển thị nội dung của _các phần đầu của phần_\n"
-"  -x, --all-headers        \t\t     Hiển thị nội dung của _mọi phần đầu_\n"
-"  -d, --disassemble\n"
-"\t\tHiển thị nội dung của các phần có khả năng thực hiện\n"
-"\t\t(rã)\n"
-"  -D, --disassemble-all    \t    Hiển thị nội dung dịch mã số của mọi phần\n"
-"\t\t(rã hết)\n"
-"  -S, --source             \t\t\t\t      Trộn lẫn mã _nguồn_ với việc rã\n"
-"  -s, --full-contents   Hiển thị _nội dung đầy đủ_ của mọi phần đã yêu cầu\n"
-"  -g, --debugging          Hiển thị thông tin _gỡ lỗi_ trong tập tin đối tượng\n"
-"  -e, --debugging-tags      Hiển thị thông tin gỡ lỗi, dùng kiểu dáng ctags\n"
-"\t\t(các thẻ gỡ lỗi)\n"
-"  -G, --stabs         Hiển thị (dạng thô) thông tin STABS nào trong thông tin\n"
-"  -t, --syms               \t\t\t   Hiển thị nội dung của các bảng ký hiệu\n"
-"\t\t(các ký hiệu [viết tắt])\n"
-"  -T, --dynamic-syms       \t\tHiển thị nội dung của bảng ký hiệu động\n"
-"\t\t(các ký hiệu động [viết tắt])\n"
-"  -r, --reloc             \t\tHiển thị các mục nhập định vị lại trong tập tin\n"
-"\t\t(định vị lại [viết tắt])\n"
-"  -R, --dynamic-reloc\n"
-"\t\t\t\t      Hiển thị các mục nhập định vị lại động trong tập tin\n"
-"\t\t(định vị lại động [viết tắt])\n"
-"  -v, --version            Hiển thị số thự tự _phiên bản_ của chương trình này\n"
-"  -i, --info           Liệt kê các dạng thức đối tượng và kiến trúc được hỗ trợ\n"
-"\t\t(thông tin [viết tắt])\n"
-"  -H, --help              \tHiển thị _trợ giúp_ này\n"
+#: ieee.c:2568
+msgid "undefined C++ object"
+msgstr "đối tượng C++ chưa được định nghĩa"
 
-#: objdump.c:202
-#, c-format
-msgid ""
-"\n"
-" The following switches are optional:\n"
-msgstr ""
-"\n"
-" Những cái chuyển theo đây là tùy chọn:\n"
+#: ieee.c:2602
+msgid "unrecognized C++ object spec"
+msgstr "chưa chấp nhận đặc tả đối tượng C++"
 
-#: objdump.c:203
-#, c-format
-msgid ""
-"  -b, --target=BFDNAME           Specify the target object format as BFDNAME\n"
-"  -m, --architecture=MACHINE     Specify the target architecture as MACHINE\n"
-"  -j, --section=NAME             Only display information for section NAME\n"
-"  -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
-"  -EB --endian=big               Assume big endian format when disassembling\n"
-"  -EL --endian=little            Assume little endian format when disassembling\n"
-"      --file-start-context       Include context from start of file (with -S)\n"
-"  -I, --include=DIR              Add DIR to search list for source files\n"
-"  -l, --line-numbers             Include line numbers and filenames in output\n"
-"  -C, --demangle[=STYLE]         Decode mangled/processed symbol names\n"
-"                                  The STYLE, if specified, can be `auto', `gnu',\n"
-"                                  `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
-"                                  or `gnat'\n"
-"  -w, --wide                     Format output for more than 80 columns\n"
-"  -z, --disassemble-zeroes       Do not skip blocks of zeroes when disassembling\n"
-"      --start-address=ADDR       Only process data whose address is >= ADDR\n"
-"      --stop-address=ADDR        Only process data whose address is <= ADDR\n"
-"      --prefix-addresses         Print complete address alongside disassembly\n"
-"      --[no-]show-raw-insn       Display hex alongside symbolic disassembly\n"
-"      --adjust-vma=OFFSET        Add OFFSET to all displayed section addresses\n"
-"      --special-syms             Include special symbols in symbol dumps\n"
-"\n"
-msgstr ""
-"  -b, --target=TÊN_BFD  \tGhi rõ dạng thức đối tượng _đích_ là TÊN_BFD\n"
-"  -m, --architecture=MÁY     \t\t          Ghi rõ _kiến trúc_ đích là MÁY\n"
-"  -j, --section=TÊN             \t\t     Hiển thị thông tin chỉ cho _phần_ TÊN\n"
-"  -M, --disassembler-options=TÙY_CHỌN\n"
-"\t\tGởi chuỗi TÙY_CHỌN qua cho _bộ rã_\n"
-"\t\t(các tùy chọn bộ rã)\n"
-"  -EB --endian=big\n"
-"\t\tGiả sử dạng thức tính trạng cuối lớn (big-endian) khi rã\n"
-"  -EL --endian=little\n"
-"\t\tGiả sử dạng thức tính trạng cuối nhỏ (little-endian) khi rã\n"
-"      --file-start-context       \tGồm _ngữ cảnh_ từ _đầu tập tin_ (bằng « -S »)\n"
-"  -I, --include=THƯ_MỤC\n"
-"\t\tThêm THƯ_MỤC vào danh sách tìm kiếm tập tin nguồn\n"
-"\t\t(bao gồm)\n"
-"  -l, --line-numbers\n"
-"\t\tGồm các _số thứ tự dòng_ và tên tập tin trong kết xuất\n"
-"  -C, --demangle[=KIỂU_DÁNG]           giải mã các tên ký hiệu đã rối/xử lý\n"
-"\t\t(tháo gỡ)\n"
-"\t\tKIỂU_DÁNG, nếu đã ghi rõ, có thể là:\n"
-"\t\t • auto\t\ttự động\n"
-"\t\t • gnu\n"
-"             \t • lucid\t\trõ ràng\n"
-"\t\t • arm\n"
-"\t\t • hp\n"
-"\t\t • edg\n"
-"\t\t • gnu-v3\n"
-" \t\t • java\n"
-"           \t • gnat\n"
-"  -w, --wide                     \t\tĐịnh dạng dữ liệu xuất chiếm hơn 80 cột\n"
-"\t\t(rộng)\n"
-"  -z, --disassemble-zeroes       \t\tĐừng nhảy qua khối  ố không khi rã\n"
-"\t\t(rã các số không)\n"
-"      --start-address=ĐỊA_CHỈ            Xử lý chỉ dữ liệu có địa chỉ ≥ ĐỊA_CHỈ\n"
-"      --stop-address=ĐỊA_CHỈ            Xử lý chỉ dữ liệu có địa chỉ ≤ ĐỊA_CHỈ\n"
-"      --prefix-addresses         \t\tIn ra địa chỉ hoàn toàn ở b        việc rã\n"
-"\t\t(thêm vào đầu các địa chỉ)\n"
-"      --[no-]show-raw-insn\n"
-"\t\tHiển thị thập lục phân ở bên việc rã kiểu ký hiệu\n"
-"hông] hiển thị câu lệnh thô)\n"
-"      --adjust-vma=HIỆU_SỐ\n"
-"\t\tThêm HIỆU_SỐ vào mọi địa chỉ phần đã hiển thị\n"
-"\t\t(điều chỉnh vma)      --special-syms          Gồm _các ký hiệu đặc biệt_ trong việc đổ ký hiệu\n"
-"\n"
+#: ieee.c:2638
+msgid "unsupported C++ object type"
+msgstr "kiểu đối tượng C++ chưa được hỗ trợ"
 
-#: objdump.c:378
-#, c-format
-msgid "Sections:\n"
-msgstr "Phần:\n"
+#: ieee.c:2648
+msgid "C++ base class not defined"
+msgstr "chưa định nghĩa hạng cơ bản C++"
 
-#: objdump.c:381 objdump.c:385
-#, c-format
-msgid "Idx Name          Size      VMA       LMA       File off  Algn"
-msgstr "Idx Name          Size      VMA       LMA       File off  Algn"
+#: ieee.c:2660 ieee.c:2765
+msgid "C++ object has no fields"
+msgstr "Đối tượng C++ không có trường nào"
 
-#: objdump.c:387
-#, c-format
-msgid "Idx Name          Size      VMA               LMA               File off  Algn"
-msgstr "Idx Name          Size      VMA               LMA               File off  Algn"
+#: ieee.c:2679
+msgid "C++ base class not found in container"
+msgstr "Không tìm thấy hạng cơ bản C++ trong bộ chứa"
 
-#: objdump.c:391
-#, c-format
-msgid "  Flags"
-msgstr "  Cờ"
+#: ieee.c:2786
+msgid "C++ data member not found in container"
+msgstr "Không tìm thấy bộ phạn dữ liệu C++ trong bộ chứa"
 
-#: objdump.c:393
-#, c-format
-msgid "  Pg"
-msgstr "  Tr"
+#: ieee.c:2827 ieee.c:2977
+msgid "unknown C++ visibility"
+msgstr "không biết độ thấy rõ C++"
 
-#: objdump.c:436
-#, c-format
-msgid "%s: not a dynamic object"
-msgstr "%s không phải là môt đối tượng động"
+#: ieee.c:2861
+msgid "bad C++ field bit pos or size"
+msgstr "vị trí bit hay kích cỡ trường C++ sai"
 
-#: objdump.c:1722
-#, c-format
-msgid "Disassembly of section %s:\n"
-msgstr "Việc rã phần %s:\n"
+#: ieee.c:2953
+msgid "bad type for C++ method function"
+msgstr "kiểu sai cho hàm phương pháp C++"
 
-#: objdump.c:1884
-#, c-format
-msgid "Can't use supplied machine %s"
-msgstr "Không thể sử dụng máy đã cung cấp %s"
+#: ieee.c:2963
+msgid "no type information for C++ method function"
+msgstr "không có thông tin kiểu cho hàm phương pháp C++"
 
-#: objdump.c:1903
-#, c-format
-msgid "Can't disassemble for architecture %s\n"
-msgstr "Không thể rã cho kiến trúc %s\n"
+#: ieee.c:3002
+msgid "C++ static virtual method"
+msgstr "phương pháp ảo tĩnh C++"
 
-#: objdump.c:1973
-#, c-format
-msgid ""
-"No %s section present\n"
-"\n"
-msgstr ""
-"Không có phần %s ở\n"
-"\n"
+#: ieee.c:3097
+msgid "unrecognized C++ object overhead spec"
+msgstr "chưa chấp nhận đặc tả duy tu đối tượng C++"
 
-#: objdump.c:1982
-#, c-format
-msgid "Reading %s section of %s failed: %s"
-msgstr "Việc đọc phần %s của %s bị lỗi: %s"
+#: ieee.c:3136
+msgid "undefined C++ vtable"
+msgstr "chưa định nghĩa vtable C++"
 
-#: objdump.c:2026
-#, c-format
-msgid ""
-"Contents of %s section:\n"
-"\n"
-msgstr ""
-"Nội dung phần %s\n"
-"\n"
+#: ieee.c:3205
+msgid "C++ default values not in a function"
+msgstr "Giá trị C++ mặc định không phải trong hàm"
 
-#: objdump.c:2153
-#, c-format
-msgid "architecture: %s, "
-msgstr "kiến trúc: %s, "
+#: ieee.c:3245
+msgid "unrecognized C++ default type"
+msgstr "chưa chấp nhận kiểu C++ mặc định"
 
-#: objdump.c:2156
-#, c-format
-msgid "flags 0x%08x:\n"
-msgstr "cờ 0x%08x:\n"
+#: ieee.c:3276
+msgid "reference parameter is not a pointer"
+msgstr "tham số tham chiếu không phải là con trỏ"
 
-#: objdump.c:2170
-#, c-format
-msgid ""
-"\n"
-"start address 0x"
-msgstr ""
-"\n"
-"địa chỉ đầu 0x"
+#: ieee.c:3359
+msgid "unrecognized C++ reference type"
+msgstr "chưa chấp nhận kiểu tham chiếu C++"
 
-#: objdump.c:2210
-#, c-format
-msgid "Contents of section %s:\n"
-msgstr "Nội dung phần %s:\n"
+#: ieee.c:3441
+msgid "C++ reference not found"
+msgstr "Không tìm thấy tham chiếu C++"
 
-#: objdump.c:2335
-#, c-format
-msgid "no symbols\n"
-msgstr "không có ký hiệu\n"
+#: ieee.c:3449
+msgid "C++ reference is not pointer"
+msgstr "Tham chiếu C++ không phải là con trỏ"
+
+#: ieee.c:3475 ieee.c:3483
+msgid "missing required ASN"
+msgstr "thiếu ASN cần thiết"
+
+#: ieee.c:3510 ieee.c:3518
+msgid "missing required ATN65"
+msgstr "thiếu ATN65 cần thiết"
+
+#: ieee.c:3532
+msgid "bad ATN65 record"
+msgstr "mục ghi ATN65 sai"
 
-#: objdump.c:2342
+#: ieee.c:4160
 #, c-format
-msgid "no information for symbol number %ld\n"
-msgstr "không có thông tin cho ký hiệu số %ld\n"
+msgid "IEEE numeric overflow: 0x"
+msgstr "trán thuộc số IEEE: 0x"
 
-#: objdump.c:2345
+#: ieee.c:4204
 #, c-format
-msgid "could not determine the type of symbol number %ld\n"
-msgstr "không thể quyết định kiểu ký hiệu số %ld\n"
+msgid "IEEE string length overflow: %u\n"
+msgstr "Trán độ dài chuỗi IEEE: %u\n"
 
-#: objdump.c:2611
+#: ieee.c:5203
 #, c-format
-msgid ""
-"\n"
-"%s:     file format %s\n"
-msgstr ""
-"\n"
-"%s:    dạng thức tập tin %s\n"
+msgid "IEEE unsupported integer type size %u\n"
+msgstr "Kích cỡ kiểu số nguyên không được hỗ trợ IEEE %u\n"
 
-#: objdump.c:2662
+#: ieee.c:5237
 #, c-format
-msgid "%s: printing debugging information failed"
-msgstr "%s: việc in ra thông tin gỡ lỗi bị lỗi"
+msgid "IEEE unsupported float type size %u\n"
+msgstr "Kích cỡ kiểu nổi không được hỗ trợ IEEE %u\n"
 
-#: objdump.c:2753
+#: ieee.c:5271
 #, c-format
-msgid "In archive %s:\n"
-msgstr "Trong kho %s\n"
+msgid "IEEE unsupported complex type size %u\n"
+msgstr "Kích cỡ kiểu phức tạp không được hỗ trợ IEEE %u\n"
 
-#: objdump.c:2873
-msgid "unrecognized -E option"
-msgstr "không nhận ra tùy chọn « -E »"
+#: nlmconv.c:269 srconv.c:1813
+msgid "input and output files must be different"
+msgstr "tập tin nhập và xuất phải là khác nhau"
 
-#: objdump.c:2884
-#, c-format
-msgid "unrecognized --endian type `%s'"
-msgstr "không nhận ra kiểu tính trạng cuối (endian) « %s »"
+#: nlmconv.c:316
+msgid "input file named both on command line and with INPUT"
+msgstr "tên tập tin được lập cả trên dòng lệnh lẫn bằng INPUT đều"
 
-#: rdcoff.c:196
-#, c-format
-msgid "parse_coff_type: Bad type code 0x%x"
-msgstr "parse_coff_type: (phân tách kiểu coff) Mã kiểu sai 0x%x"
+#: nlmconv.c:325
+msgid "no input file"
+msgstr "không có tập tin nhập nào"
 
-#: rdcoff.c:404 rdcoff.c:509 rdcoff.c:697
-#, c-format
-msgid "bfd_coff_get_syment failed: %s"
-msgstr "« bfd_coff_get_syment » bị lỗi: %s"
+#: nlmconv.c:355
+msgid "no name for output file"
+msgstr "không có tên cho tập tin nhập"
 
-#: rdcoff.c:420 rdcoff.c:717
-#, c-format
-msgid "bfd_coff_get_auxent failed: %s"
-msgstr "« bfd_coff_get_auxent » bị lỗi: %s"
+#: nlmconv.c:369
+msgid "warning: input and output formats are not compatible"
+msgstr "cảnh báo : khuôn dạng nhập và xuất không tương thích với nhau"
 
-#: rdcoff.c:784
-#, c-format
-msgid "%ld: .bf without preceding function"
-msgstr "%ld: « .bf » không có hàm đi trước"
+#: nlmconv.c:398
+msgid "make .bss section"
+msgstr "tạo phần « .bss »"
 
-#: rdcoff.c:834
-#, c-format
-msgid "%ld: unexpected .ef\n"
-msgstr "%ld: « .ef » bất ngờ\n"
+#: nlmconv.c:407
+msgid "make .nlmsections section"
+msgstr "tạo phần « .nlmsections »"
 
-#: rddbg.c:85
-#, c-format
-msgid "%s: no recognized debugging information"
-msgstr "%s: không có thông tin gỡ lỗi đã nhận ra"
+#: nlmconv.c:409
+msgid "set .nlmsections flags"
+msgstr "đặt các cờ « .nlmsections »"
 
-#: rddbg.c:394
-#, c-format
-msgid "Last stabs entries before error:\n"
-msgstr "Những mục nhập stabs cuối cùng trước lỗi:\n"
+#: nlmconv.c:437
+msgid "set .bss vma"
+msgstr "đặt vma .bss"
 
-#: readelf.c:272
-#, c-format
-msgid "%s: Error: "
-msgstr "%s: Lỗi: "
+#: nlmconv.c:444
+msgid "set .data size"
+msgstr "đặt kích cỡ dữ liệu .data"
 
-#: readelf.c:283
+#: nlmconv.c:624
 #, c-format
-msgid "%s: Warning: "
-msgstr "%s: Cảnh báo : "
+msgid "warning: symbol %s imported but not in import list"
+msgstr "cảnh báo : ký hiệu %s được nhập mà không phải trong danh sách nhập"
 
-#: readelf.c:298
-#, c-format
-msgid "Unable to seek to 0x%x for %s\n"
-msgstr "Không thể nhảy tới 0x%x tìm %s\n"
+#: nlmconv.c:644
+msgid "set start address"
+msgstr "đặt địa chỉ bắt đầu"
 
-#: readelf.c:310
+#: nlmconv.c:693
 #, c-format
-msgid "Out of memory allocating 0x%x bytes for %s\n"
-msgstr "Hết bộ nhớ khi cấp phát 0x%x byte cho %s\n"
+msgid "warning: START procedure %s not defined"
+msgstr "cảnh báo : thủ tục START (bắt đầu) %s chưa được định nghĩa"
 
-#: readelf.c:318
+#: nlmconv.c:695
 #, c-format
-msgid "Unable to read in 0x%x bytes of %s\n"
-msgstr "Không thể đọc trong 0x%x byte của %s\n"
+msgid "warning: EXIT procedure %s not defined"
+msgstr "cảnh báo : thủ tục EXIT (thoát) %s chưa được định nghĩa"
 
-#: readelf.c:364 readelf.c:412 readelf.c:615 readelf.c:647
+#: nlmconv.c:697
 #, c-format
-msgid "Unhandled data length: %d\n"
-msgstr "Độ dài dữ liệu không được quản lý: %d\n"
-
-#: readelf.c:752
-msgid "Don't know about relocations on this machine architecture\n"
-msgstr "Không biết về việc định vị lại trên kiến trúc máy này\n"
+msgid "warning: CHECK procedure %s not defined"
+msgstr "cảnh báo : thủ tục CHECK (kiểm tra) %s chưa được định nghĩa"
 
-#: readelf.c:772 readelf.c:799 readelf.c:842 readelf.c:869
-msgid "relocs"
-msgstr "đ.v. lại"
+#: nlmconv.c:718 nlmconv.c:907
+msgid "custom section"
+msgstr "phần tự chọn"
 
-#: readelf.c:782 readelf.c:809 readelf.c:852 readelf.c:879
-msgid "out of memory parsing relocs"
-msgstr "hết bộ nhớ khi phân tách việc định vị lại"
+#: nlmconv.c:739 nlmconv.c:936
+msgid "help section"
+msgstr "phần trợ giúp"
 
-#: readelf.c:933
-#, c-format
-msgid " Offset     Info    Type                Sym. Value  Symbol's Name + Addend\n"
-msgstr " Hiệu     Tin    Kiểu            Giá trị ký hiệu  Tên ký hiệu + gì thêm\n"
+#: nlmconv.c:761 nlmconv.c:954
+msgid "message section"
+msgstr "phần thông điệp"
 
-#: readelf.c:935
-#, c-format
-msgid " Offset     Info    Type            Sym.Value  Sym. Name + Addend\n"
-msgstr " HIệu     Tin    Kiểu    Giá trị ký hiệu Tên ký hiệu + gì thêm\n"
+#: nlmconv.c:777 nlmconv.c:987
+msgid "module section"
+msgstr "phần mô-đun"
 
-#: readelf.c:940
-#, c-format
-msgid " Offset     Info    Type                Sym. Value  Symbol's Name\n"
-msgstr " HIệu     Tin    Kiểu            Giá trị ký hiệu Tên ký hiệu\n"
+#: nlmconv.c:797 nlmconv.c:1003
+msgid "rpc section"
+msgstr "phần rpc"
 
-#: readelf.c:942
+#. There is no place to record this information.
+#: nlmconv.c:833
 #, c-format
-msgid " Offset     Info    Type            Sym.Value  Sym. Name\n"
-msgstr " Hiệu     Tin    Kiểu    Giá trị ký hiệu Tên ký hiệu\n"
+msgid "%s: warning: shared libraries can not have uninitialized data"
+msgstr "%s: cảnh báo : thư viên dùng chung không thể chứa dữ liệu chưa được sở khởi"
 
-#: readelf.c:950
-#, c-format
-msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name + Addend\n"
-msgstr "    Offset             Info             Type               Symbol's Value  Symbol's Name + Addend\n"
+#: nlmconv.c:854 nlmconv.c:1022
+msgid "shared section"
+msgstr "phần dùng chung"
 
-#: readelf.c:952
-#, c-format
-msgid "  Offset          Info           Type           Sym. Value    Sym. Name + Addend\n"
-msgstr "  Hiệu        Tin         Kiểu     Giá trị ký hiệu  Tên ký hiệu + gì thêm\n"
+#: nlmconv.c:862
+msgid "warning: No version number given"
+msgstr "cảnh báo : chưa đưa ra số thứ tự phiên bản"
 
-#: readelf.c:957
+#: nlmconv.c:902 nlmconv.c:931 nlmconv.c:949 nlmconv.c:998 nlmconv.c:1017
 #, c-format
-msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name\n"
-msgstr "    Offset             Info             Type               Symbol's Value  Symbol's Name\n"
+msgid "%s: read: %s"
+msgstr "%s: đọc: %s"
 
-#: readelf.c:959
-#, c-format
-msgid "  Offset          Info           Type           Sym. Value    Sym. Name\n"
-msgstr "  HIệu        Tin         Kiểu      Giá trị ký hiệu  Tên ký hiệu\n"
+#: nlmconv.c:924
+msgid "warning: FULLMAP is not supported; try ld -M"
+msgstr "cảnh báo : chưa hỗ trợ FULLMAP; hãy thử « ld -M »"
 
-#: readelf.c:1239 readelf.c:1241 readelf.c:1324 readelf.c:1326 readelf.c:1335
-#: readelf.c:1337
+#: nlmconv.c:1100
 #, c-format
-msgid "unrecognized: %-7lx"
-msgstr "không nhận ra: %-7lx"
+msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
+msgstr "Cách sử dụng: %s [tùy_chọn...] [tập_tin_nhập [tập_tin_xuất]]\n"
 
-#: readelf.c:1295
+#: nlmconv.c:1101
 #, c-format
-msgid "<string table index: %3ld>"
-msgstr "<chỉ mục bảng chuỗi: %3ld>"
+msgid " Convert an object file into a NetWare Loadable Module\n"
+msgstr " Chuyển đổi tập tin đối tượng sang Mô-đun Tải được NetWare (NetWare Loadable Module)\n"
 
-#: readelf.c:1297
+#: nlmconv.c:1102
 #, c-format
-msgid "<corrupt string table index: %3ld>"
-msgstr "<chỉ mục bảng chuỗi bị hỏng: %3ld>"
+msgid ""
+" The options are:\n"
+"  -I --input-target=<bfdname>   Set the input binary file format\n"
+"  -O --output-target=<bfdname>  Set the output binary file format\n"
+"  -T --header-file=<file>       Read <file> for NLM header information\n"
+"  -l --linker=<linker>          Use <linker> for any linking\n"
+"  -d --debug                    Display on stderr the linker command line\n"
+"  @<file>                       Read options from <file>.\n"
+"  -h --help                     Display this information\n"
+"  -v --version                  Display the program's version\n"
+msgstr ""
+" Tùy chọn:\n"
+"  -I --input-target=<tên_bfd>\t    Lập dạng thức tập tin nhị phân nhập\n"
+"\t\t\t\t\t\t\t\t    (_đích nhập_)\n"
+"  -O --output-target=<tên_bfd>\t    Lập dạng thức tập tin nhị phân xuất\n"
+"\t\t\t\t\t\t\t\t    (_đích xuất_)\n"
+"  -T --header-file=<tập_tin>\n"
+"\t\tĐọc tập tin này để  tìm thông tin phần đầu NLM (_tập tin phần đầu_)\n"
+"  -l --linker=<bộ_liên_kết>        \t    Dùng _bộ liên kết_ này khi liên kết\n"
+"  -d --debug\n"
+"\tHiển thị trên thiết bị lỗi chuẩn dòng lệnh của bộ liên kết (_gỡ lỗi_)\n"
+"  @<file>    \t\t\t\t\t    Đọc các tùy chọn từ tập tin đó\n"
+"  -h --help                    \t\t    Hiển thị _trợ giúp_ này\n"
+"  -v --version                 \t\t    Hiển thị _phiên bản_ chương trình\n"
 
-#: readelf.c:1569
+#: nlmconv.c:1143
 #, c-format
-msgid "Processor Specific: %lx"
-msgstr "Đặc trưng cho bộ xử lý: %lx"
+msgid "support not compiled in for %s"
+msgstr "chưa biên dịch cách hỗ trợ %s"
 
-#: readelf.c:1588
-#, c-format
-msgid "Operating System specific: %lx"
-msgstr "Đặc trưng cho Hệ điều hành: %lx"
+#: nlmconv.c:1180
+msgid "make section"
+msgstr "tạo phần"
 
-#: readelf.c:1592 readelf.c:2370
-#, c-format
-msgid "<unknown>: %lx"
-msgstr "<không rõ>: %lx"
+#: nlmconv.c:1194
+msgid "set section size"
+msgstr "lập kích cỡ phần"
 
-#: readelf.c:1605
-msgid "NONE (None)"
-msgstr "KHÔNG CÓ (Không có)"
+#: nlmconv.c:1200
+msgid "set section alignment"
+msgstr "lập canh lề phần"
 
-#: readelf.c:1606
-msgid "REL (Relocatable file)"
-msgstr "REL (Tập tin có thể _định vị lại_)"
+#: nlmconv.c:1204
+msgid "set section flags"
+msgstr "lập các cờ phân"
 
-#: readelf.c:1607
-msgid "EXEC (Executable file)"
-msgstr "EXEC (Executable file)"
+#: nlmconv.c:1215
+msgid "set .nlmsections size"
+msgstr "lập kích cỡ « .nlmsections »"
 
-#: readelf.c:1608
-msgid "DYN (Shared object file)"
-msgstr "DYN (Shared object file)"
+#: nlmconv.c:1296 nlmconv.c:1304 nlmconv.c:1313 nlmconv.c:1318
+msgid "set .nlmsection contents"
+msgstr "lập nội dung « .nlmsections »"
 
-#: readelf.c:1609
-msgid "CORE (Core file)"
-msgstr "CORE (Core file)"
+#: nlmconv.c:1797
+msgid "stub section sizes"
+msgstr "kích cỡ phần stub"
 
-#: readelf.c:1613
-#, c-format
-msgid "Processor Specific: (%x)"
-msgstr "Đặc trưng cho bộ xử lý: (%x)"
+#: nlmconv.c:1844
+msgid "writing stub"
+msgstr "đang ghi stub..."
 
-#: readelf.c:1615
+#: nlmconv.c:1928
 #, c-format
-msgid "OS Specific: (%x)"
-msgstr "Đặc trưng cho HĐH: (%x)"
+msgid "unresolved PC relative reloc against %s"
+msgstr "có việc định vị lại liên quan đến PC chưa tháo gỡ đối với %s"
 
-#: readelf.c:1617 readelf.c:1724 readelf.c:2554
+#: nlmconv.c:1992
 #, c-format
-msgid "<unknown>: %x"
-msgstr "<không rõ>: %x"
-
-#: readelf.c:1629
-msgid "None"
-msgstr "Không có"
+msgid "overflow when adjusting relocation against %s"
+msgstr "trán khi điều chỉnh việc định vị lại đối với %s"
 
-#: readelf.c:2229
-msgid "Standalone App"
-msgstr "Ứng dụng Độc lập"
+#: nlmconv.c:2119
+#, c-format
+msgid "%s: execution of %s failed: "
+msgstr "%s: việc thực hiện %s bị lỗi: "
 
-#: readelf.c:2232 readelf.c:2952 readelf.c:2968
+#: nlmconv.c:2134
 #, c-format
-msgid "<unknown: %x>"
-msgstr "<không rõ : %x>"
+msgid "Execution of %s failed"
+msgstr "Việc thực hiện %s bị lỗi"
 
-#: readelf.c:2597
+#: nm.c:224 size.c:82 strings.c:708
 #, c-format
-msgid "Usage: readelf <option(s)> elf-file(s)\n"
-msgstr "Cách sử dụng: readelf <tùy_chọn...> tập_tin_elf...\n"
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr "Cách sử dụng: %s [tùy_chọn...] [tập_tin...]\n"
 
-#: readelf.c:2598
+#: nm.c:225
 #, c-format
-msgid " Display information about the contents of ELF format files\n"
-msgstr " Hiển thị thông tin về nội dung tập tin dạng thức ELF\n"
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr " Liệt kê các ký hiệu trong những tập tin này (mặc định là <a.out>).\n"
 
-#: readelf.c:2599
+#: nm.c:226
 #, c-format
 msgid ""
-" Options are:\n"
-"  -a --all               Equivalent to: -h -l -S -s -r -d -V -A -I\n"
-"  -h --file-header       Display the ELF file header\n"
-"  -l --program-headers   Display the program headers\n"
-"     --segments          An alias for --program-headers\n"
-"  -S --section-headers   Display the sections' header\n"
-"     --sections          An alias for --section-headers\n"
-"  -g --section-groups    Display the section groups\n"
-"  -e --headers           Equivalent to: -h -l -S\n"
-"  -s --syms              Display the symbol table\n"
-"      --symbols          An alias for --syms\n"
-"  -n --notes             Display the core notes (if present)\n"
-"  -r --relocs            Display the relocations (if present)\n"
-"  -u --unwind            Display the unwind info (if present)\n"
-"  -d --dynamic           Display the dynamic section (if present)\n"
-"  -V --version-info      Display the version sections (if present)\n"
-"  -A --arch-specific     Display architecture specific information (if any).\n"
-"  -D --use-dynamic       Use the dynamic section info when displaying symbols\n"
-"  -x --hex-dump=<number> Dump the contents of section <number>\n"
-"  -w[liaprmfFsoR] or\n"
-"  --debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n"
-"                         Display the contents of DWARF2 debug sections\n"
+" The options are:\n"
+"  -a, --debug-syms       Display debugger-only symbols\n"
+"  -A, --print-file-name  Print name of the input file before every symbol\n"
+"  -B                     Same as --format=bsd\n"
+"  -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
+"                          The STYLE, if specified, can be `auto' (the default),\n"
+"                          `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+"                          or `gnat'\n"
+"      --no-demangle      Do not demangle low-level symbol names\n"
+"  -D, --dynamic          Display dynamic symbols instead of normal symbols\n"
+"      --defined-only     Display only defined symbols\n"
+"  -e                     (ignored)\n"
+"  -f, --format=FORMAT    Use the output format FORMAT.  FORMAT can be `bsd',\n"
+"                           `sysv' or `posix'.  The default is `bsd'\n"
+"  -g, --extern-only      Display only external symbols\n"
+"  -l, --line-numbers     Use debugging information to find a filename and\n"
+"                           line number for each symbol\n"
+"  -n, --numeric-sort     Sort symbols numerically by address\n"
+"  -o                     Same as -A\n"
+"  -p, --no-sort          Do not sort the symbols\n"
+"  -P, --portability      Same as --format=posix\n"
+"  -r, --reverse-sort     Reverse the sense of the sort\n"
+"  -S, --print-size       Print size of defined symbols\n"
+"  -s, --print-armap      Include index for symbols from archive members\n"
+"      --size-sort        Sort symbols by size\n"
+"      --special-syms     Include special symbols in the output\n"
+"      --synthetic        Display synthetic symbols as well\n"
+"  -t, --radix=RADIX      Use RADIX for printing symbol values\n"
+"      --target=BFDNAME   Specify the target object format as BFDNAME\n"
+"  -u, --undefined-only   Display only undefined symbols\n"
+"  -X 32_64               (ignored)\n"
+"  @FILE                  Read options from FILE\n"
+"  -h, --help             Display this information\n"
+"  -V, --version          Display this program's version number\n"
+"\n"
 msgstr ""
 " Tùy chọn:\n"
-"  -a --all               \t\t\t\t\tBằng: -h -l -S -s -r -d -V -A -I\n"
-"\t(hết)\n"
-"  -h --file-header       \t\t\t\tHiển thị _dòng đầu tập tin_ ELF\n"
-"  -l --program-headers   \t\tHiển thị _các dòng đầu chương trình_\n"
-"     --segments          \t\t\tBiệt hiệu cho « --program-headers »\n"
-"\t(các phân đoạn)\n"
-"  -S --section-headers   \t\t\tHiển thị dòng đầu của các phần\n"
-"\t(các dòng đầu phần)\n"
-"     --sections          \t\t\tBiệt hiệu cho « --section-headers »\n"
-"\t(các phần)\n"
-"  -g --section-groups    \t\t\t     Hiển thị _các nhóm phần_\n"
-"  -e --headers           \t\t\t\tBằng: -h -l -S\n"
-"\t(các dòng đầu)\n"
-"  -s --syms              \t\t\tHiển thị bảng _ký hiệu_\n"
-"      --symbols          \t\t\tBiệt hiệu cho « --syms »\n"
-"\t(các ký hiệu [« syms » là viết tắt])\n"
-"  -n --notes             \t\t\tHiển thị _các ghi chú_ lõi (nếu có)\n"
-"  -r --relocs            \t\tHiển thị _các việc định vị lại_ (nếu có)\n"
-"  -u --unwind            \t\tHiển thị thông tin _tri ra_ (nếu có)\n"
-"  -d --dynamic           \t\tHiển thị phần _động_ (nếu có)\n"
-"  -V --version-info      \t\tHiển thị các phần phiên bản (nếu có)\n"
-"\t(thông tin phiên bản)\n"
-"  -A --arch-specific     Hiển thị thông tin _đặc trưng cho kiến trúc_ (nếu có)\n"
-"  -D --use-dynamic       _Dùng_ thông tin phần _động_ khi hiển thị ký hiệu\n"
-"  -x --hex-dump=<số> \t\t\tĐổ nội dung phần <số>\n"
-"\t(đổ thập lục)\n"
-"  -w[liaprmfFsoR] or\n"
-"  --debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n"
-"\t[line\t\t\tdòng\n"
-"\tinfo\t\t\tthông tin\n"
-"\tabbrev.\t\tviết tắt\n"
-"\tpubnames\tcác tên công\n"
-"\taranges\t\tcác phạm vị a\n"
-"\tmacro\t\tbộ lệnh\n"
-"\tframes\t\tcác khung\n"
-"\tstr\t\t\tchuỗi\n"
-"\tloc\t\t\tđịnh vị\n"
-"\tRanges\t\tCác phạm vị]\n"
-"       Hiển thị nội dung các phần gỡ lỗi kiểu DWARF2\n"
+"  -a, --debug-syms       \tHiển thị _ký hiệu_ chỉ kiểu bộ _gỡ lỗi_ thôi\n"
+"  -A, --print-file-name  \t_In ra tên tập tin_ nhập trước mỗi ký hiệu\n"
+"  -B                     \t\t\tBằng « --format=bsd »\n"
+"  -C, --demangle[=KIỂU_DÁNG]\n"
+"\tGiải mã các tên ký hiệu cấp thấp thành tên cấp người dùng (_tháo gỡ_)\n"
+"       Kiểu dáng này, nếu được ghi rõ, có thể  là « auto » (tự động: mặc định)\n"
+"\t« gnu », « lucid », « arm », « hp », « edg », « gnu-v3 », « java » hay « gnat ».\n"
+"      --no-demangle      \t\t_Đừng tháo gỡ_ tên ký hiệu cấp thấp\n"
+"  -D, --dynamic          \t\tHiển thị ký hiệu _động_ thay vào ký hiệu chuẩn\n"
+"      --defined-only     \t\tHiển thị _chỉ_ ký hiệu _được định nghĩa_\n"
+"  -e                     \t\t\t(bị bỏ qua)\n"
+"  -f, --format=DẠNG_THỨC    \tDùng _dạng thức_ xuất này, một của\n"
+"\t\t\t\t\t\t\t« bsd » (mặc định), « sysv » hay « posix »\n"
+"  -g, --extern-only      \t\tHiển thị _chỉ_ ký hiệu _bên ngoài_\n"
+"  -l, --line-numbers     \t\tDùng thông tin gỡ lỗi để tìm tên tập tin\n"
+"\t\t\t\t\t\tvà _số thứ tự dòng_ cho mỗi ký hiệu\n"
+"  -n, --numeric-sort     \t\t_Sắp xếp_ ký hiệu một cách _thuộc số_ theo địa chỉ\n"
+"  -o                     \t\t\tBằng « -A »\n"
+"  -p, --no-sort          \t\t_Đừng sắp xếp_ ký hiệu\n"
+"  -P, --portability      \t\tBằng « --format=posix »\n"
+"  -r, --reverse-sort     \t\t_Sắp xếp ngược_\n"
+"  -S, --print-size       \t\tIn ra kích cỡ của các ký hiệu được định nghĩa\n"
+"  -s, --print-armap      \t\tGồm chỉ mục cho ký hiệu từ bộ phạn kho\n"
+"      --size-sort        \t\t_Sắp xếp_ ký hiệu theo _kích cỡ_\n"
+"      --special-syms     \t\tGồm _ký hiệu đặc biệt_ trong dữ liệu xuất\n"
+"      --synthetic        \t\tCũng hiển thị ký hiệu _tổng hợp_\n"
+"  -t, --radix=CƠ_SỞ      \tDùng _cơ sở_ này để in ra giá trị ký hiệu\n"
+"      --target=TÊN_BFD   \tGhi rõ dạng thức đối tượng _đích_ là tên BFD này\n"
+"  -u, --undefined-only   \tHiển thị _chỉ_ ký hiệu _chưa được định nghĩa_\n"
+"  -X 32_64               \t\t(bị bỏ qua)\n"
+"  @<file>    \t\t\t\t\t    Đọc các tùy chọn từ tập tin đó\n"
+"  -h, --help             \t\tHiển thị _trợ giúp_ này\n"
+"  -V, --version          \t\tHiển thị số thứ tự _phiên bản_ của chương trình này\n"
+"\n"
+
+#: nm.c:263 objdump.c:236
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr "Hãy trình báo lỗi nào cho %s\n"
+
+#: nm.c:295
+#, c-format
+msgid "%s: invalid radix"
+msgstr "%s: cơ sở không hợp lệ"
+
+#: nm.c:319
+#, c-format
+msgid "%s: invalid output format"
+msgstr "%s: dạng thức xuất không hợp lệ"
+
+#: nm.c:340 readelf.c:6623 readelf.c:6659
+#, c-format
+msgid "<processor specific>: %d"
+msgstr "<đặc trưng cho bộ xử lý>: %d"
+
+#: nm.c:342 readelf.c:6626 readelf.c:6671
+#, c-format
+msgid "<OS specific>: %d"
+msgstr "<đặc trưng cho hệ điều hành>: %d"
+
+#: nm.c:344 readelf.c:6628 readelf.c:6674
+#, c-format
+msgid "<unknown>: %d"
+msgstr "<không biết>: %d"
 
-#: readelf.c:2622
+#: nm.c:381
 #, c-format
 msgid ""
-"  -i --instruction-dump=<number>\n"
-"                         Disassemble the contents of section <number>\n"
+"\n"
+"Archive index:\n"
 msgstr ""
-"  -i --instruction-dump=<số>\t\tTháo ra nội dung phần <số>\n"
-"\t(đổ câu lệnh)\n"
+"\n"
+"Chỉ mục kho:\n"
 
-#: readelf.c:2626
+#: nm.c:1227
 #, c-format
 msgid ""
-"  -I --histogram         Display histogram of bucket list lengths\n"
-"  -W --wide              Allow output width to exceed 80 characters\n"
-"  -H --help              Display this information\n"
-"  -v --version           Display the version number of readelf\n"
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
 msgstr ""
-"  -I --histogram\n"
-"\tHiển thị _biểu đồ tần xuất_ của các độ dài danh sách xô\n"
-"  -W --wide              Cho phép độ _rộng_ kết xuất vượt qua 80 ký tự\n"
-"  -H --help             \tHiển thị _trợ giúp_ này\n"
-"  -v --version           \tHiển thị số thứ tự _phiên bản_ của readelf\n"
+"\n"
+"\n"
+"Ký hiệu chưa được định nghĩa từ %s:\n"
+"\n"
 
-#: readelf.c:2651 readelf.c:12118
-msgid "Out of memory allocating dump request table."
-msgstr "Hết bộ nhớ khi cấp phát bảng yêu cầu đổ."
+#: nm.c:1229
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Ký hiệu từ %s:\n"
+"\n"
 
-#: readelf.c:2820 readelf.c:2888
+#: nm.c:1231 nm.c:1282
 #, c-format
-msgid "Unrecognized debug option '%s'\n"
-msgstr "Không nhận diện tùy chọn gỡ lỗi « %s »\n"
+msgid ""
+"Name                  Value   Class        Type         Size     Line  Section\n"
+"\n"
+msgstr ""
+"Tên                  Giá trị   Hạng        Kiểu         Cỡ     Dòng  Phần\n"
+"\n"
 
-#: readelf.c:2922
+#: nm.c:1234 nm.c:1285
 #, c-format
-msgid "Invalid option '-%c'\n"
-msgstr "Tùy chọn không hợp lệ « -%c »\n"
+msgid ""
+"Name                  Value           Class        Type         Size             Line  Section\n"
+"\n"
+msgstr ""
+"Name                  Value           Class        Type         Size             Line  Section\n"
+"\n"
 
-#: readelf.c:2936
-msgid "Nothing to do.\n"
-msgstr "Không có gì cần làm.\n"
+#: nm.c:1278
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Ký hiệu chưa được định nghĩa từUndefined symbols from %s[%s]:\n"
+"\n"
 
-#: readelf.c:2948 readelf.c:2964 readelf.c:5906
-msgid "none"
-msgstr "không có"
+#: nm.c:1280
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Ký hiệu từ %s[%s]:\n"
+"\n"
 
-#: readelf.c:2965
-msgid "2's complement, little endian"
-msgstr "phần bù của 2, tính trạng cuối nhỏ"
+#: nm.c:1584
+msgid "Only -X 32_64 is supported"
+msgstr "Chỉ hỗ trợ « -X 32_64 »"
 
-#: readelf.c:2966
-msgid "2's complement, big endian"
-msgstr "phần bù của 2, tính trạng cuối lớn"
+#: nm.c:1604
+msgid "Using the --size-sort and --undefined-only options together"
+msgstr "Dùng tùy chọn cả « --size-sort » lẫn « --undefined-only » đều"
 
-#: readelf.c:2984
-msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
-msgstr "Không phải là tập tin ELF — có những byte ma thuật không đúng tại đầu nó.\n"
+#: nm.c:1605
+msgid "will produce no output, since undefined symbols have no size."
+msgstr "sẽ không xuất gì, vì ký hiệu chưa được định nghĩa không có kích cỡ nào."
+
+#: nm.c:1633
+#, c-format
+msgid "data size %ld"
+msgstr "cỡ dữ liệu %ld"
+
+#: objcopy.c:401 srconv.c:1721
+#, c-format
+msgid "Usage: %s [option(s)] in-file [out-file]\n"
+msgstr "Cách sử dụng: %s [tùy_chọn...] tập_tin_nhập [tập_tin_xuất]\n"
+
+#: objcopy.c:402
+#, c-format
+msgid " Copies a binary file, possibly transforming it in the process\n"
+msgstr " Sao chép tập tin nhị phân, cũng có thể chuyển đổi nó\n"
+
+#: objcopy.c:403 objcopy.c:495
+#, c-format
+msgid " The options are:\n"
+msgstr " Tùy chọn:\n"
+
+#: objcopy.c:404
+#, c-format
+msgid ""
+"  -I --input-target <bfdname>      Assume input file is in format <bfdname>\n"
+"  -O --output-target <bfdname>     Create an output file in format <bfdname>\n"
+"  -B --binary-architecture <arch>  Set arch of output file, when input is binary\n"
+"  -F --target <bfdname>            Set both input and output format to <bfdname>\n"
+"     --debugging                   Convert debugging information, if possible\n"
+"  -p --preserve-dates              Copy modified/access timestamps to the output\n"
+"  -j --only-section <name>         Only copy section <name> into the output\n"
+"     --add-gnu-debuglink=<file>    Add section .gnu_debuglink linking to <file>\n"
+"  -R --remove-section <name>       Remove section <name> from the output\n"
+"  -S --strip-all                   Remove all symbol and relocation information\n"
+"  -g --strip-debug                 Remove all debugging symbols & sections\n"
+"     --strip-unneeded              Remove all symbols not needed by relocations\n"
+"  -N --strip-symbol <name>         Do not copy symbol <name>\n"
+"     --strip-unneeded-symbol <name>\n"
+"                                   Do not copy symbol <name> unless needed by\n"
+"                                     relocations\n"
+"     --only-keep-debug             Strip everything but the debug information\n"
+"  -K --keep-symbol <name>          Do not strip symbol <name>\n"
+"  -L --localize-symbol <name>      Force symbol <name> to be marked as a local\n"
+"     --globalize-symbol <name>     Force symbol <name> to be marked as a global\n"
+"  -G --keep-global-symbol <name>   Localize all symbols except <name>\n"
+"  -W --weaken-symbol <name>        Force symbol <name> to be marked as a weak\n"
+"     --weaken                      Force all global symbols to be marked as weak\n"
+"  -w --wildcard                    Permit wildcard in symbol comparison\n"
+"  -x --discard-all                 Remove all non-global symbols\n"
+"  -X --discard-locals              Remove any compiler-generated symbols\n"
+"  -i --interleave <number>         Only copy one out of every <number> bytes\n"
+"  -b --byte <num>                  Select byte <num> in every interleaved block\n"
+"     --gap-fill <val>              Fill gaps between sections with <val>\n"
+"     --pad-to <addr>               Pad the last section up to address <addr>\n"
+"     --set-start <addr>            Set the start address to <addr>\n"
+"    {--change-start|--adjust-start} <incr>\n"
+"                                   Add <incr> to the start address\n"
+"    {--change-addresses|--adjust-vma} <incr>\n"
+"                                   Add <incr> to LMA, VMA and start addresses\n"
+"    {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+"                                   Change LMA and VMA of section <name> by <val>\n"
+"     --change-section-lma <name>{=|+|-}<val>\n"
+"                                   Change the LMA of section <name> by <val>\n"
+"     --change-section-vma <name>{=|+|-}<val>\n"
+"                                   Change the VMA of section <name> by <val>\n"
+"    {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+"                                   Warn if a named section does not exist\n"
+"     --set-section-flags <name>=<flags>\n"
+"                                   Set section <name>'s properties to <flags>\n"
+"     --add-section <name>=<file>   Add section <name> found in <file> to output\n"
+"     --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+"     --change-leading-char         Force output format's leading character style\n"
+"     --remove-leading-char         Remove leading character from global symbols\n"
+"     --redefine-sym <old>=<new>    Redefine symbol name <old> to <new>\n"
+"     --redefine-syms <file>        --redefine-sym for all symbol pairs \n"
+"                                     listed in <file>\n"
+"     --srec-len <number>           Restrict the length of generated Srecords\n"
+"     --srec-forceS3                Restrict the type of generated Srecords to S3\n"
+"     --strip-symbols <file>        -N for all symbols listed in <file>\n"
+"     --strip-unneeded-symbols <file>\n"
+"                                   --strip-unneeded-symbol for all symbols listed\n"
+"                                     in <file>\n"
+"     --keep-symbols <file>         -K for all symbols listed in <file>\n"
+"     --localize-symbols <file>     -L for all symbols listed in <file>\n"
+"     --globalize-symbols <file>    --globalize-symbol for all in <file>\n"
+"     --keep-global-symbols <file>  -G for all symbols listed in <file>\n"
+"     --weaken-symbols <file>       -W for all symbols listed in <file>\n"
+"     --alt-machine-code <index>    Use alternate machine code for output\n"
+"     --writable-text               Mark the output text as writable\n"
+"     --readonly-text               Make the output text write protected\n"
+"     --pure                        Mark the output file as demand paged\n"
+"     --impure                      Mark the output file as impure\n"
+"     --prefix-symbols <prefix>     Add <prefix> to start of every symbol name\n"
+"     --prefix-sections <prefix>    Add <prefix> to start of every section name\n"
+"     --prefix-alloc-sections <prefix>\n"
+"                                   Add <prefix> to start of every allocatable\n"
+"                                     section name\n"
+"  -v --verbose                     List all object files modified\n"
+"  @<file>                          Read options from <file>\n"
+"  -V --version                     Display this program's version number\n"
+"  -h --help                        Display this output\n"
+"     --info                        List object formats & architectures supported\n"
+msgstr ""
+"  -I --input-target <tên_bfd>\t\tGiả sử tập tin nhập có dạng <tên_bfd>\n"
+"\t\t\t\t\t\t\t\t    (_đích nhập_)\n"
+"  -O --output-target <tên_bfd>     \tTạo tập tin dạng <tên_bfd>\n"
+"\t\t\t\t\t\t\t\t    (_đích xuất_)\n"
+"  -B --binary-architecture <kiến_trúc>\n"
+"\t\t\tLập _kiến trúc_ của tập tin xuất, khi tập tin nhập là _nhị phân_\n"
+"  -F --target <tên_bfd>\n"
+"\t\t\tLập dạng thức cả nhập lẫn xuất đều thành <tên_bfd> (_đích_)\n"
+"     --debugging                   \t\t\tChuyển đổi thông tin _gỡ lỗi_, nếu có thể\n"
+"  -p --preserve-dates\n"
+"\tSao chép nhãn thời gian truy cập/sửa đổi vào kết xuất (_bảo tồn các ngày_)\n"
+"  -j --only-section <tên>         \t_Chỉ_ sao chép <tên> _phần_ vào kết xuất\n"
+"     --add-gnu-debuglink=<tập_tin>\n"
+"\t\t_Thêm_ khả năng liên kết phần « .gnu_debuglink » vào <tập_tin>\n"
+"  -R --remove-section <tên>       \t_Gỡ bỏ phần_ <tên> ra kết xuất\n"
+"  -S --strip-all                   \t\t\tGỡ bỏ mọi thông tin ký hiệu và định vị lại\n"
+"\t\t\t\t\t\t\t\t    (_tước hết_)\n"
+"  -g --strip-debug                 \t\tGỡ bỏ mọi ký hiệu và phần kiểu gỡ lỗi\n"
+"\t\t\t\t\t\t\t\t    (_tước gỡ lỗi_)\n"
+"     --strip-unneeded        \tGỡ bỏ mọi ký hiệu không cần thiết để định vị lại\n"
+"\t\t\t\t\t\t\t\t    (_tước không cần thiết_)\n"
+"  -N --strip-symbol <tên>        \t\t Đừng sao chép ký hiệu <tên>\n"
+"\t\t\t\t\t\t\t\t    (_tước ký hiệu_)\n"
+"     --strip-unneeded-symbol <tên>\n"
+"\tĐừng sao chép ký hiệu trừ cần thiết để định vị lại (_tước không cần thiết_)\n"
+"     --only-keep-debug\t\t\t\tTước hết, trừ thông tin gỡ lỗi\n"
+"\t\t\t\t\t\t\t\t    (_chỉ giữ gỡ lỗi_)\n"
+"  -K --keep-symbol <tên>          \tChỉ sao chép ký hiệu <tên>\n"
+"\t\t\t\t\t\t\t\t    (_giữ ký hiệu_)\n"
+"  -L --localize-symbol <tên>\n"
+"\t\t\t\tBuộc ký hiệu <tên>có nhãn điều cục bộ (_địa phương hóa_)\n"
+"  -G --keep-global-symbol <tên>   \tĐịa phương hóa mọi ký hiệu trừ <name>\n"
+"\t\t\t\t\t\t\t\t    (_giữ ký hiệu toàn cục_)\n"
+"      -W --weaken-symbol <tên>        \tBuộc ký hiệu <name> có nhãn điều yếu\n"
+"\t\t\t\t\t\t\t\t    (_làm yếu ký hiệu_)\n"
+"     --weaken                      \t\tBuộc mọi ký hiệu toàn cục có nhãn điều yếu\n"
+"\t\t\t\t\t\t\t\t    (_làm yếu đi_)\n"
+"  -w --wildcard          \t\tCho phép _ký tự đại diện_ trong sự so sánh ký hiệu\n"
+"  -x --discard-all                 \t\t\tGỡ bỏ mọi ký hiệu không toàn cục\n"
+"\t\t\t\t\t\t\t\t    (_hủy hết_)\n"
+"  -X --discard-locals              Gỡ bỏ ký hiệu nào được tạo ra bởi bộ biên dịch\n"
+"\t\t\t\t\t\t\t\t    (_hủy các điều cục bộ_)\n"
+"  -i --interleave <số>         \t\t\tChỉ sao chép một của mỗi <số> byte\n"
+"\t\t\t\t\t\t\t\t    (_chen vào_)\n"
+"  -b --byte <số>\n"
+"\t\t\t\tChọn byte số thứ tự <số> trong mỗi khối tin đã chen vào\n"
+"     --gap-fill <giá_trị>              \t_Điền vào khe_ giữa hai phần bằng <giá_trị>\n"
+"     --pad-to <địa_chỉ>\t\t_Đệm_ phần cuối cùng _đế_n địa chỉ <địa_chỉ>\n"
+"     --set-start <địa_chỉ>            \t\t_Lập_ địa chỉ _đầu_ thành <địa_chỉ>\n"
+"    {--change-start|--adjust-start} <tăng>\n"
+"\t\tThêm <tăng> vào địa chỉ đầu (_thay đổi đầu, điều chỉnh đầu_)\n"
+"    {--change-addresses|--adjust-vma} <tang>\n"
+"    \t\t\t\t\t\t\tThêm <tang> vào địa chỉ đầu, LMA và VMA\n"
+"\t\t\t\t\t\t\t    (_thay đổi địa chỉ, điều chỉnh vma_)\n"
+"    {--change-section-address|--adjust-section-vma} <tên>{=|+|-}<giá_trị>\n"
+"\t\t\t\t\tThay đổi LMA và VMA của phần <tên> bằng <giá_trị>\n"
+"\t\t\t\t\t\t(_thay đổi địa chỉ phần, điều chỉnh vma phần_)\n"
+"     --change-section-lma <tên>{=|+|-}<giá_trị>\n"
+"   \tThay đổi LMA của phần <tên> bằng <giá_trị> (_thay đổi LMA của phần_)\n"
+"     --change-section-vma <tên>{=|+|-}<giá_trị>\n"
+"  \tThay đổi VMA của phần <tên> bằng <giá_trị> (_thay đổi VMA của phần_)\n"
+"    {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+"   \t\t\t\t\t\t\t\tCảnh báo nếu không có phần có tên\n"
+"\t\t(_[không] thay đổi các cảnh báo, [không] điều chỉnh các cảnh báo_)\n"
+"     --set-section-flags <tên>=<cờ ...>\n"
+"                                   \t\tLập thuộc tính của phần <tên> thành <cờ ...>\n"
+"\t\t\t\t\t\t\t\t    (_lập các cờ phần_)\n"
+"     --add-section <tên>=<tập_tin>\n"
+"\t\t\t\t_Thêm phần_ <tên> được tìm trong <tập_tin> vào kết  xuất\n"
+"     --rename-section <cũ>=<mới>[,<cờ ...>]\n"
+"\t\t\t\t\t\t\t\t_Thay đổi phần_ <cũ> thành <mới>\n"
+"     --change-leading-char\n"
+"\t\t\t\t\tBuộc kiểu dáng của ký tự đi trước của dạng thức xuất\n"
+"\t\t\t\t\t\t\t\t    (_thay đổi ký tự đi trước_)\n"
+"     --remove-leading-char\t\t_Gỡ bỏ ký tự đi trước_ ra các ký hiệu toàn cục\n"
+"     --redefine-sym <cũ>=<mới>\n"
+"\t\t\t\t\t\t_Định nghĩa lại_ tên _ký hiệu_ <cũ> thành <mới>\n"
+"     --redefine-syms <tập_tin>\n"
+"\t\t« --redefine-sym » cho mọi cặp ký hiệu được liệt kê trong <tập_tin>\n"
+"     --srec-len <số>           \t\tGiới hạn _độ dài_ của các Srecords đã tạo ra\n"
+"     --srec-forceS3                \tGiới hạn kiểu Srecords thành S3 (_buộc_)\n"
+"     --strip-symbols <tập_tin>\n"
+"\t« -N » cho mọi ký hiệu được liệt kê trong <tập_tin> (_tước các ký hiệu_)\n"
+"     --strip-unneeded-symbols <tập_tin>\n"
+"     \t\t\t\t\t\t\t« --strip-unneeded-symbol » cho mọi ký hiệu\n"
+"\t\t\t\t\t\t\t\tđược liệt kê trong <tập_tin>\n"
+"     --keep-symbols <tập_tin>\n"
+"\t\t\t\t\t« -K » cho mọi ký hiệu được liệt kê trong <tập_tin>\n"
+"\t\t\t\t\t\t\t\t    (_giữ các ký hiệu_)\n"
+"     --localize-symbols <tập_tin>\n"
+"\t\t\t\t\t« -L » cho mọi ký hiệu được liệt kê trong <tập_tin>\n"
+"\t\t\t\t\t\t\t\t    (_địa phương hóa các ký hiệu_)\n"
+"     --keep-global-symbols <tập_tin>\n"
+"\t\t\t\t\t« -G » cho mọi ký hiệu được liệt kê trong <tập_tin>\n"
+"\t\t\t\t\t\t\t\t    (_giữ các ký hiệu toàn cục_)\n"
+"     --weaken-symbols <tập_tin>\n"
+"\t\t\t\t\t« -W » cho mọi ký hiệu được liệt kê trong <tập_tin>\n"
+"\t\t\t\t\t\t\t\t    (_làm yếu các ký hiệu_)\n"
+"     --alt-machine-code <chỉ_mục>    Dùng _mã máy xen kẽ_ cho kết xuất\n"
+"     --writable-text               \t\tĐánh dấu _văn bản_ xuất _có khả năng ghi_\n"
+"     --readonly-text               \tLàm cho vân bản xuất được bảo vậ chống ghi\n"
+"\t\t\t\t\t\t\t\t    (_văn bản chỉ có khả năng đọc_)\n"
+"     --pure\n"
+"\t\t\tĐánh dấu tập tin xuất sẽ có trang được sắp xếp theo yêu cầu\n"
+"\t\t\t\t\t\t\t\t    (_tinh khiết_)\n"
+"     --impure                      \t\tĐánh dấu tập tin xuất _không tinh khiết_\n"
+"     --prefix-symbols <tiền_tố>\n"
+"\t\tThêm <tiền_tố> vào đầu của mọi tên ký hiệu (_tiền tố các ký hiệu_)\n"
+"     --prefix-sections <tiền_tố>\n"
+"\t\tThêm <tiền_tố> vào đầu của mọi tên phần (_tiền tố các phần_)\n"
+"     --prefix-alloc-sections <tiền_tố>\n"
+"\t\tThêm <tiền_tố> vào đầu của mọi tên phần có thể cấp phát\n"
+"\t\t\t\t\t\t\t\t(_tiền tố các phần có thể cấp phát_)\n"
+"  -v --verbose                     \t\tLiệt kê mọi tập tin đối tượng đã được sửa đổi\n"
+"\t\t\t\t\t\t\t\t    (_chi tiết_)\n"
+"  @<file>    \t\t\t\t\t    Đọc các tùy chọn từ tập tin đó\n"
+"  -V --version                    Hiển thị số thứ tự _phiên bản_ của chương trình này\n"
+"  -h --help                        \t\t\tHiển thị _trợ giúp_ này\n"
+"     --info                        \t\tLiệt kê các dạng thức và kiến trúc được hỗ trợ\n"
+"\t\t\t\t\t\t\t\t    (_thông tin_)\n"
 
-#: readelf.c:2992
+#: objcopy.c:493
 #, c-format
-msgid "ELF Header:\n"
-msgstr "Dòng đầu ELF:\n"
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr "Cách sử dụng: %s <tùy_chọn> tập_tin_nhập...\n"
 
-#: readelf.c:2993
+#: objcopy.c:494
 #, c-format
-msgid "  Magic:   "
-msgstr "  Ma thuật:   "
+msgid " Removes symbols and sections from files\n"
+msgstr " Gỡ bỏ ký hiệu và phần ra tập tin\n"
 
-#: readelf.c:2997
+#: objcopy.c:496
 #, c-format
-msgid "  Class:                             %s\n"
-msgstr "  Class:                             %s\n"
+msgid ""
+"  -I --input-target=<bfdname>      Assume input file is in format <bfdname>\n"
+"  -O --output-target=<bfdname>     Create an output file in format <bfdname>\n"
+"  -F --target=<bfdname>            Set both input and output format to <bfdname>\n"
+"  -p --preserve-dates              Copy modified/access timestamps to the output\n"
+"  -R --remove-section=<name>       Remove section <name> from the output\n"
+"  -s --strip-all                   Remove all symbol and relocation information\n"
+"  -g -S -d --strip-debug           Remove all debugging symbols & sections\n"
+"     --strip-unneeded              Remove all symbols not needed by relocations\n"
+"     --only-keep-debug             Strip everything but the debug information\n"
+"  -N --strip-symbol=<name>         Do not copy symbol <name>\n"
+"  -K --keep-symbol=<name>          Do not strip symbol <name>\n"
+"  -w --wildcard                    Permit wildcard in symbol comparison\n"
+"  -x --discard-all                 Remove all non-global symbols\n"
+"  -X --discard-locals              Remove any compiler-generated symbols\n"
+"  -v --verbose                     List all object files modified\n"
+"  -V --version                     Display this program's version number\n"
+"  -h --help                        Display this output\n"
+"     --info                        List object formats & architectures supported\n"
+"  -o <file>                        Place stripped output into <file>\n"
+msgstr ""
+"  -I --input-target=<tên_bfd>        Giả sử tập tin nhập có dạng thức <tên_bfd>\n"
+"\t\t(đích nhập)\n"
+"  -O --output-target=<tên_bfd>  Tạo một tập tin xuất có dạng thức <tên_bfd>\n"
+"\t\t(đích xuất)\n"
+"  -F --target=<tên_bfd>   Đặt dạng thức cả nhập lẫn xuất đều thành <tên_bfd>\n"
+"\t\t(đích)\n"
+"  -p --preserve-dates\n"
+"\t\tSao chép các nhãn thời gian truy cập/đã sửa đổi vào kết xuất\n"
+"\t\t(bảo tồn các ngày)\n"
+"  -R --remove-section=<tên>       \t_Gỡ bỏ phần_ <name> ra dữ liệu xuất\n"
+"  -s --strip-all                   \t\tGỡ bỏ mọi thông tin kiểu ký hiệu và định vị lại\n"
+"\t\t(tước hết)\n"
+"  -g -S -d --strip-debug           \tGỡ bỏ mọi ký hiệu và phần kiểu gỡ lỗi\n"
+"\t\t(tước gỡ lỗi)\n"
+"     --strip-unneeded               Gỡ bỏ mọi ký hiệu không cần thiết khi định vị lại\n"
+"\t\t(tước không cần thiết)\n"
+"     --only-keep-debug             \tTước hết, trừ thông tin gỡ lỗi\n"
+"\t\t(chỉ giữ gỡ lỗi)\n"
+"  -N --strip-symbol=<tên>      \tĐừng sao chép ký hiệu <tên>\n"
+"\t\t(tước ký hiệu)\n"
+"  -K --keep-symbol=<tên>       \tSao chép chỉ ký hiệu <tên>\n"
+"\t\t(giữ ký hiệu)\n"
+"  -w --wildcard                Cho phép _ký tự đại diện_ trong chuỗi so sánh ký hiệu\n"
+"  -x --discard-all                 \t\tGỡ bỏ mọi ký hiệu không toàn cục\n"
+"\t\t(hủy hết)\n"
+"  -X --discard-locals              \tGỡ bo ký hiệu nào do bộ biên dịch tạo ra\n"
+"\t\t(hủy các điều cục bộ)\n"
+"  -v --verbose                     \t\tLiệt kê mọi tập tin đối tượng đã sửa đổi\n"
+"\t\t(chi tiết)\n"
+"  -V --version                     Hiển thị số thứ tự _phiên bản_ của chương trình này\n"
+"  -h --help                        \t\tHiển thị _trợ giúp_ này\n"
+"     --info                     Liệt kê các dạng thức đối tượng và kiến trúc được hỗ trợ\n"
+"\t\t(thông tin)  -o <tập_tin>                        \tĐể kết _xuất_ đã tướng vào <tập_tin>\n"
+"  @<file>    \t\t\t\t\t   Để dữ liệu xuất đã gỡ bỏ vào tập tin đó\n"
 
-#: readelf.c:2999
+#: objcopy.c:568
 #, c-format
-msgid "  Data:                              %s\n"
-msgstr "  Data:                              %s\n"
+msgid "unrecognized section flag `%s'"
+msgstr "không nhận ra cờ phần « %s »"
 
-#: readelf.c:3001
+#: objcopy.c:569
 #, c-format
-msgid "  Version:                           %d %s\n"
-msgstr "  Version:                           %d %s\n"
+msgid "supported flags: %s"
+msgstr "các cờ đã hỗ trợ : %s"
 
-#: readelf.c:3008
+#: objcopy.c:646
 #, c-format
-msgid "  OS/ABI:                            %s\n"
-msgstr "  OS/ABI:                            %s\n"
+msgid "cannot open '%s': %s"
+msgstr "không thể mở « %s »: %s"
 
-#: readelf.c:3010
+#: objcopy.c:649 objcopy.c:2722
 #, c-format
-msgid "  ABI Version:                       %d\n"
-msgstr "  Phiên bản ABI:                       %d\n"
+msgid "%s: fread failed"
+msgstr "%s: việc fread (đọc f) bị lỗi"
 
-#: readelf.c:3012
+#: objcopy.c:722
 #, c-format
-msgid "  Type:                              %s\n"
-msgstr "  Type:                              %s\n"
+msgid "%s:%d: Ignoring rubbish found on this line"
+msgstr "%s:%d: Đang bỏ qua rác được gặp trên dòng này"
 
-#: readelf.c:3014
+#: objcopy.c:996
 #, c-format
-msgid "  Machine:                           %s\n"
-msgstr "  Machine:                           %s\n"
+msgid "%s: Multiple redefinition of symbol \"%s\""
+msgstr "%s: Ký hiệu « %s » đã được định nghĩa lại nhiều lần"
 
-#: readelf.c:3016
+#: objcopy.c:1000
 #, c-format
-msgid "  Version:                           0x%lx\n"
-msgstr "  Version:                           0x%lx\n"
+msgid "%s: Symbol \"%s\" is target of more than one redefinition"
+msgstr "%s: Ký hiệu « %s » là đích của nhiều lời định nghĩa lại"
 
-#: readelf.c:3019
+#: objcopy.c:1028
 #, c-format
-msgid "  Entry point address:               "
-msgstr "  Địa chỉ điểm vào :               "
+msgid "couldn't open symbol redefinition file %s (error: %s)"
+msgstr "không thể mở tập tin định nghĩa lại ký hiệu %s (lỗi: %s)"
 
-#: readelf.c:3021
+#: objcopy.c:1106
 #, c-format
-msgid ""
-"\n"
-"  Start of program headers:          "
-msgstr ""
-"\n"
-"  Điểm đầu các dòng đầu chương trình:          "
+msgid "%s:%d: garbage found at end of line"
+msgstr "%s:%d: gặp rác tại kết thúc dòng"
 
-#: readelf.c:3023
+#: objcopy.c:1109
 #, c-format
-msgid ""
-" (bytes into file)\n"
-"  Start of section headers:          "
-msgstr ""
-" (byte vào tập tin)\n"
-"  Đầu các dòng đầu phần:          "
+msgid "%s:%d: missing new symbol name"
+msgstr "%s:%d: thiếu tên ký hiệu mới"
 
-#: readelf.c:3025
+#: objcopy.c:1119
 #, c-format
-msgid " (bytes into file)\n"
-msgstr " (byte vào tập tin)\n"
+msgid "%s:%d: premature end of file"
+msgstr "%s:%d: gặp kết thúc tập tin quá sớm"
 
-#: readelf.c:3027
+#: objcopy.c:1145
 #, c-format
-msgid "  Flags:                             0x%lx%s\n"
-msgstr "  Flags:                             0x%lx%s\n"
+msgid "stat returns negative size for `%s'"
+msgstr "việc stat (lấy các thông tin) trả gởi kích cỡ âm cho « %s »"
 
-#: readelf.c:3030
+#: objcopy.c:1157
 #, c-format
-msgid "  Size of this header:               %ld (bytes)\n"
-msgstr "  Cỡ phần này:               %ld (byte)\n"
+msgid "copy from `%s' [unknown] to `%s' [unknown]\n"
+msgstr "chép từ « %s » [không rõ] sang « %s » [không rõ]\n"
 
-#: readelf.c:3032
-#, c-format
-msgid "  Size of program headers:           %ld (bytes)\n"
-msgstr "  Cỡ các dòng đầu chương trình:           %ld (byte)\n"
+#: objcopy.c:1212
+msgid "Unable to change endianness of input file(s)"
+msgstr "Không thể thay đổi tính trạng cuối (endian) của (các) tập tin nhập"
 
-#: readelf.c:3034
+#: objcopy.c:1221
 #, c-format
-msgid "  Number of program headers:         %ld\n"
-msgstr "  Số dòng đầu chương trình:         %ld\n"
+msgid "copy from `%s' [%s] to `%s' [%s]\n"
+msgstr "chép từ « %s » [%s] sang « %s » [%s]\n"
 
-#: readelf.c:3036
+#: objcopy.c:1258 objcopy.c:1715
 #, c-format
-msgid "  Size of section headers:           %ld (bytes)\n"
-msgstr "  Cỡ các dòng đầu phần:           %ld (byte)\n"
+msgid "Unable to recognise the format of the input file `%s'"
+msgstr "Không thể nhận diện dạng thức của tập tin nhập « %s »"
 
-#: readelf.c:3038
+#: objcopy.c:1261
 #, c-format
-msgid "  Number of section headers:         %ld"
-msgstr "  Số dòng đầu phần:         %ld"
+msgid "Warning: Output file cannot represent architecture `%s'"
+msgstr "Cảnh báo : tập tin xuất không thể tiêu biểu kiến trúc « %s »"
 
-#: readelf.c:3043
+#: objcopy.c:1305
 #, c-format
-msgid "  Section header string table index: %ld"
-msgstr "  Chỉ mục bảng chuỗi dòng đầu phần: %ld"
-
-#: readelf.c:3074 readelf.c:3107
-msgid "program headers"
-msgstr "các dòng đầu chương trình"
-
-#: readelf.c:3145 readelf.c:3446 readelf.c:3487 readelf.c:3546 readelf.c:3609
-#: readelf.c:3993 readelf.c:4017 readelf.c:5247 readelf.c:5291 readelf.c:5489
-#: readelf.c:6450 readelf.c:6464 readelf.c:11493 readelf.c:11912
-#: readelf.c:11979
-msgid "Out of memory\n"
-msgstr "Hết bộ nhớ\n"
+msgid "can't create section `%s': %s"
+msgstr "không thể tạo phần « %s »: %s"
 
-#: readelf.c:3172
-#, c-format
-msgid ""
-"\n"
-"There are no program headers in this file.\n"
-msgstr ""
-"\n"
-"Không có dòng đầu chương trình nào trong tập tin này.\n"
+#: objcopy.c:1356
+msgid "there are no sections to be copied!"
+msgstr "• Không có phần cần sao chép. •"
 
-#: readelf.c:3178
+#: objcopy.c:1402
 #, c-format
-msgid ""
-"\n"
-"Elf file type is %s\n"
-msgstr ""
-"\n"
-"Kiểu tập tin Elf là %s\n"
+msgid "Can't fill gap after %s: %s"
+msgstr "Không thể điền vào khe sau : %s: %s"
 
-#: readelf.c:3179
+#: objcopy.c:1427
 #, c-format
-msgid "Entry point "
-msgstr "Điểm vào"
+msgid "Can't add padding to %s: %s"
+msgstr "Không thể thêm đệm vào %s: %s"
 
-#: readelf.c:3181
+#: objcopy.c:1594
 #, c-format
-msgid ""
-"\n"
-"There are %d program headers, starting at offset "
-msgstr ""
-"\n"
-"Có %d dòng đầu chương trình, bắt đầu tại hiệu số"
+msgid "%s: error copying private BFD data: %s"
+msgstr "%s: gặp lỗi khi sao chép dữ liệu BFD riêng : %s"
 
-#: readelf.c:3193 readelf.c:3195
-#, c-format
-msgid ""
-"\n"
-"Program Headers:\n"
-msgstr ""
-"\n"
-"Dòng đầu chương trình:\n"
+#: objcopy.c:1605
+msgid "unknown alternate machine code, ignored"
+msgstr "không biết mã máy xen kẽ nên bỏ qua nó"
 
-#: readelf.c:3199
+#: objcopy.c:1635 objcopy.c:1665
 #, c-format
-msgid "  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align\n"
-msgstr "  Kiểu         HIệu   ĐChỉẢo   ĐChỉVật   CỡTập CỡNhớ  Cờ Cạnh lề\n"
+msgid "cannot mkdir %s for archive copying (error: %s)"
+msgstr "không thể mkdir (tạo thư mục) %s để sao chép kho (lỗi: %s)"
 
-#: readelf.c:3202
+#: objcopy.c:1787
 #, c-format
-msgid "  Type           Offset   VirtAddr           PhysAddr           FileSiz  MemSiz   Flg Align\n"
-msgstr "  Kiểu         HIệu   Địa Chỉ Ảo   Địa Chỉ Vật lý   CỡTập CỡNhớ  Cờ Cạnh lề\n"
+msgid "error: the input file '%s' is empty"
+msgstr "lỗi : tập tin nhập « %s » là rỗng"
 
-#: readelf.c:3206
+#: objcopy.c:1889
 #, c-format
-msgid "  Type           Offset             VirtAddr           PhysAddr\n"
-msgstr "   Kiểu         HIệu         Địa Chỉ Ảo     Địa Chỉ Vật lý\n"
+msgid "Multiple renames of section %s"
+msgstr "Đã thay đổi tên phần %s nhiều lần"
+
+#: objcopy.c:1940
+msgid "private header data"
+msgstr "dữ liệu dòng đầu riêng"
 
-#: readelf.c:3208
+#: objcopy.c:1948
 #, c-format
-msgid "                 FileSiz            MemSiz              Flags  Align\n"
-msgstr "                 FileSiz            MemSiz              Flags  Align\n"
+msgid "%s: error in %s: %s"
+msgstr "%s: lỗi trong %s: %s"
 
-#: readelf.c:3301
-msgid "more than one dynamic segment\n"
-msgstr "hơn một phân đoạn động\n"
+#: objcopy.c:2007
+msgid "making"
+msgstr "làm"
 
-#: readelf.c:3312
-msgid "no .dynamic section in the dynamic segment"
-msgstr "không có phân đoạn « .dynamic » (động) trong phân đoạn động"
+#: objcopy.c:2022
+msgid "size"
+msgstr "cỡ"
 
-#: readelf.c:3321
-msgid "the .dynamic section is not contained within the dynamic segment"
-msgstr "phần « .dynamic » (động) không có được chứa ở trong phân đoạn động"
+#: objcopy.c:2036
+msgid "vma"
+msgstr "vma"
 
-#: readelf.c:3323
-msgid "the .dynamic section is not the first section in the dynamic segment."
-msgstr "phần « .dynamic » (động) không phải là phần thứ nhất trong phân đoạn động."
+#: objcopy.c:2061
+msgid "alignment"
+msgstr "canh lề"
 
-#: readelf.c:3337
-msgid "Unable to find program interpreter name\n"
-msgstr "Không tìm thấy tên bộ giải dịch chương trình\n"
+#: objcopy.c:2083
+msgid "private data"
+msgstr "dữ liệu riêng"
 
-#: readelf.c:3344
+#: objcopy.c:2091
 #, c-format
-msgid ""
-"\n"
-"      [Requesting program interpreter: %s]"
-msgstr ""
-"\n"
-"      [Đang yêu cầu bộ giải dịch chương trình: %s]"
+msgid "%s: section `%s': error in %s: %s"
+msgstr "%s: phần « %s »: lỗi trong %s: %s"
 
-#: readelf.c:3356
+#: objcopy.c:2363
 #, c-format
-msgid ""
-"\n"
-" Section to Segment mapping:\n"
-msgstr ""
-"\n"
-" Ánh xạ Phần đến Phân đoạn:\n"
+msgid "%s: can't create debugging section: %s"
+msgstr "%s: không thể tạo phần gỡ lỗi: %s"
 
-#: readelf.c:3357
+#: objcopy.c:2377
 #, c-format
-msgid "  Segment Sections...\n"
-msgstr "  Các phần phân đoạn...\n"
+msgid "%s: can't set debugging section contents: %s"
+msgstr "%s: không thể đặt nội dung phần gỡ lỗi: %s"
 
-#: readelf.c:3408
-msgid "Cannot interpret virtual addresses without program headers.\n"
-msgstr "Không thể giải dịch địa chỉ ảo khi không có dòng đầu chương trình.\n"
+#: objcopy.c:2386
+#, c-format
+msgid "%s: don't know how to write debugging information for %s"
+msgstr "%s: không biết cách ghi thông tin gỡ lỗi cho %s"
+
+#: objcopy.c:2561
+msgid "byte number must be non-negative"
+msgstr "số byte phải là không âm"
+
+#: objcopy.c:2571
+msgid "interleave must be positive"
+msgstr "chen vào phải là dương"
 
-#: readelf.c:3424
+#: objcopy.c:2591 objcopy.c:2599
 #, c-format
-msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
-msgstr "Địa chỉ ảo 0x%lx không được định vị trong phân đoạn kiểu « PT_LOAD » nào.\n"
+msgid "%s both copied and removed"
+msgstr "%s cả được sao chép lẫn bị gỡ bỏ đều"
 
-#: readelf.c:3438 readelf.c:3479
-msgid "section headers"
-msgstr "dòng đầu phần"
+#: objcopy.c:2696 objcopy.c:2767 objcopy.c:2867 objcopy.c:2898 objcopy.c:2922
+#: objcopy.c:2926 objcopy.c:2946
+#, c-format
+msgid "bad format for %s"
+msgstr "dạng thức sai cho %s"
 
-#: readelf.c:3523 readelf.c:3586
-msgid "symbols"
-msgstr "ký hiệu"
+#: objcopy.c:2717
+#, c-format
+msgid "cannot open: %s: %s"
+msgstr "không thể mở : %s: %s"
 
-#: readelf.c:3533 readelf.c:3596
-msgid "symtab shndx"
-msgstr "symtab shndx"
+#: objcopy.c:2836
+#, c-format
+msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
+msgstr "Cảnh báo : đang cắt xén điền-khe từ 0x%s thành 0x%x"
+
+#: objcopy.c:3000
+msgid "alternate machine code index must be positive"
+msgstr "chỉ mục mã máy xen kẽ phải là dương"
+
+#: objcopy.c:3058
+msgid "byte number must be less than interleave"
+msgstr "số byte phải là ít hơn chen vào"
 
-#: readelf.c:3697 readelf.c:3977
+#: objcopy.c:3088
 #, c-format
-msgid ""
-"\n"
-"There are no sections in this file.\n"
-msgstr ""
-"\n"
-"Không có phần nào trong tập tin này.\n"
+msgid "architecture %s unknown"
+msgstr "không biết kiến trúc %s"
+
+#: objcopy.c:3092
+msgid "Warning: input target 'binary' required for binary architecture parameter."
+msgstr "Cảnh báo : đích nhập « binary » (nhị phân) cần thiết cho tham số kiến trúc nhị phân."
 
-#: readelf.c:3703
+#: objcopy.c:3093
 #, c-format
-msgid "There are %d section headers, starting at offset 0x%lx:\n"
-msgstr "Có %d dòng đầu phần, bắt đầu tại hiệu số 0x%lx:\n"
+msgid " Argument %s ignored"
+msgstr " Đối số %s bị bỏ qua"
 
-#: readelf.c:3720 readelf.c:4079 readelf.c:4290 readelf.c:4591 readelf.c:5011
-#: readelf.c:6618
-msgid "string table"
-msgstr "bảng chuỗi"
+#: objcopy.c:3099
+#, c-format
+msgid "warning: could not locate '%s'.  System error message: %s"
+msgstr "cảnh báo : không thể định vị « %s ». Thông điệp lỗi hệ thống: %s"
 
-#: readelf.c:3765
-msgid "File contains multiple dynamic symbol tables\n"
-msgstr "Tập tin chứa nhiều bảng ký hiệu động\n"
+#: objcopy.c:3141 objcopy.c:3155
+#, c-format
+msgid "%s %s%c0x%s never used"
+msgstr "%s %s%c0x%s chưa bao giờ dùng"
 
-# Type: text
-# Description
-#: readelf.c:3777
-msgid "File contains multiple dynamic string tables\n"
-msgstr "Tập tin chứa nhiều bảng chuỗi động\n"
+#: objdump.c:178
+#, c-format
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr "Cách sử dụng: %s <tùy_chọn...> <tập_tin...>\n"
 
-#: readelf.c:3782
-msgid "dynamic strings"
-msgstr "chuỗi động"
+#: objdump.c:179
+#, c-format
+msgid " Display information from object <file(s)>.\n"
+msgstr " Hiển thị thông tin từ <tập_tin...> đối tượng.\n"
 
-#: readelf.c:3789
-msgid "File contains multiple symtab shndx tables\n"
-msgstr "Tập tin chứa nhiều bảng symtab shndx\n"
+#: objdump.c:180
+#, c-format
+msgid " At least one of the following switches must be given:\n"
+msgstr " Phải đưa ra ít nhất một của những cái chuyển theo sau :\n"
+
+#: objdump.c:181
+#, c-format
+msgid ""
+"  -a, --archive-headers    Display archive header information\n"
+"  -f, --file-headers       Display the contents of the overall file header\n"
+"  -p, --private-headers    Display object format specific file header contents\n"
+"  -h, --[section-]headers  Display the contents of the section headers\n"
+"  -x, --all-headers        Display the contents of all headers\n"
+"  -d, --disassemble        Display assembler contents of executable sections\n"
+"  -D, --disassemble-all    Display assembler contents of all sections\n"
+"  -S, --source             Intermix source code with disassembly\n"
+"  -s, --full-contents      Display the full contents of all sections requested\n"
+"  -g, --debugging          Display debug information in object file\n"
+"  -e, --debugging-tags     Display debug information using ctags style\n"
+"  -G, --stabs              Display (in raw form) any STABS info in the file\n"
+"  -W, --dwarf              Display DWARF info in the file\n"
+"  -t, --syms               Display the contents of the symbol table(s)\n"
+"  -T, --dynamic-syms       Display the contents of the dynamic symbol table\n"
+"  -r, --reloc              Display the relocation entries in the file\n"
+"  -R, --dynamic-reloc      Display the dynamic relocation entries in the file\n"
+"  @<file>                  Read options from <file>\n"
+"  -v, --version            Display this program's version number\n"
+"  -i, --info               List object formats and architectures supported\n"
+"  -H, --help               Display this information\n"
+msgstr ""
+"  -a, --archive-headers    \t\tHiển thị thông tin về _các phần đầu kho_\n"
+"  -f, --file-headers          Hiển thị nội dung của _toàn bộ phần đầu tập tin_\n"
+"  -p, --private-headers\n"
+"\t\tHiển thị nội dung của phần đầu tập tin đặc trưng cho đối tượng\n"
+"\t\t(các phần đầu riêng)\n"
+"  -h, --[section-]headers    Hiển thị nội dung của _các phần đầu của phần_\n"
+"  -x, --all-headers        \t\t     Hiển thị nội dung của _mọi phần đầu_\n"
+"  -d, --disassemble\n"
+"\t\tHiển thị nội dung của các phần có khả năng thực hiện\n"
+"\t\t(rã)\n"
+"  -D, --disassemble-all    \t    Hiển thị nội dung dịch mã số của mọi phần\n"
+"\t\t(rã hết)\n"
+"  -S, --source             \t\t\t\t      Trộn lẫn mã _nguồn_ với việc rã\n"
+"  -s, --full-contents   Hiển thị _nội dung đầy đủ_ của mọi phần đã yêu cầu\n"
+"  -g, --debugging          Hiển thị thông tin _gỡ lỗi_ trong tập tin đối tượng\n"
+"  -e, --debugging-tags      Hiển thị thông tin gỡ lỗi, dùng kiểu dáng ctags\n"
+"\t\t(các thẻ gỡ lỗi)\n"
+"  -G, --stabs         Hiển thị (dạng thô) thông tin STABS nào trong thông tin\n"
+"  -t, --syms               \t\t\t   Hiển thị nội dung của các bảng ký hiệu\n"
+"\t\t(các ký hiệu [viết tắt])\n"
+"  -T, --dynamic-syms       \t\tHiển thị nội dung của bảng ký hiệu động\n"
+"\t\t(các ký hiệu động [viết tắt])\n"
+"  -r, --reloc             \t\tHiển thị các mục nhập định vị lại trong tập tin\n"
+"\t\t(định vị lại [viết tắt])\n"
+"  -R, --dynamic-reloc\n"
+"\t\t\t\t      Hiển thị các mục nhập định vị lại động trong tập tin\n"
+"\t\t(định vị lại động [viết tắt])\n"
+"  @<file>    \t\t\t\t\t    Đọc các tùy chọn từ tập tin đó\n"
+"  -v, --version            Hiển thị số thự tự _phiên bản_ của chương trình này\n"
+"  -i, --info           Liệt kê các dạng thức đối tượng và kiến trúc được hỗ trợ\n"
+"\t\t(thông tin [viết tắt])\n"
+"  -H, --help              \tHiển thị _trợ giúp_ này\n"
 
-#: readelf.c:3828
+#: objdump.c:206
 #, c-format
 msgid ""
 "\n"
-"Section Headers:\n"
+" The following switches are optional:\n"
 msgstr ""
 "\n"
-"Dòng đầu phần:\n"
+" Những cái chuyển theo đây là tùy chọn:\n"
 
-#: readelf.c:3830
+#: objdump.c:207
 #, c-format
 msgid ""
+"  -b, --target=BFDNAME           Specify the target object format as BFDNAME\n"
+"  -m, --architecture=MACHINE     Specify the target architecture as MACHINE\n"
+"  -j, --section=NAME             Only display information for section NAME\n"
+"  -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+"  -EB --endian=big               Assume big endian format when disassembling\n"
+"  -EL --endian=little            Assume little endian format when disassembling\n"
+"      --file-start-context       Include context from start of file (with -S)\n"
+"  -I, --include=DIR              Add DIR to search list for source files\n"
+"  -l, --line-numbers             Include line numbers and filenames in output\n"
+"  -C, --demangle[=STYLE]         Decode mangled/processed symbol names\n"
+"                                  The STYLE, if specified, can be `auto', `gnu',\n"
+"                                  `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+"                                  or `gnat'\n"
+"  -w, --wide                     Format output for more than 80 columns\n"
+"  -z, --disassemble-zeroes       Do not skip blocks of zeroes when disassembling\n"
+"      --start-address=ADDR       Only process data whose address is >= ADDR\n"
+"      --stop-address=ADDR        Only process data whose address is <= ADDR\n"
+"      --prefix-addresses         Print complete address alongside disassembly\n"
+"      --[no-]show-raw-insn       Display hex alongside symbolic disassembly\n"
+"      --adjust-vma=OFFSET        Add OFFSET to all displayed section addresses\n"
+"      --special-syms             Include special symbols in symbol dumps\n"
 "\n"
-"Section Header:\n"
 msgstr ""
+"  -b, --target=TÊN_BFD  \tGhi rõ dạng thức đối tượng _đích_ là TÊN_BFD\n"
+"  -m, --architecture=MÁY     \t\t          Ghi rõ _kiến trúc_ đích là MÁY\n"
+"  -j, --section=TÊN             \t\t     Hiển thị thông tin chỉ cho _phần_ TÊN\n"
+"  -M, --disassembler-options=TÙY_CHỌN\n"
+"\t\tGởi chuỗi TÙY_CHỌN qua cho _bộ rã_\n"
+"\t\t(các tùy chọn bộ rã)\n"
+"  -EB --endian=big\n"
+"\t\tGiả sử dạng thức tính trạng cuối lớn (big-endian) khi rã\n"
+"  -EL --endian=little\n"
+"\t\tGiả sử dạng thức tính trạng cuối nhỏ (little-endian) khi rã\n"
+"      --file-start-context       \tGồm _ngữ cảnh_ từ _đầu tập tin_ (bằng « -S »)\n"
+"  -I, --include=THƯ_MỤC\n"
+"\t\tThêm THƯ_MỤC vào danh sách tìm kiếm tập tin nguồn\n"
+"\t\t(bao gồm)\n"
+"  -l, --line-numbers\n"
+"\t\tGồm các _số thứ tự dòng_ và tên tập tin trong kết xuất\n"
+"  -C, --demangle[=KIỂU_DÁNG]           giải mã các tên ký hiệu đã rối/xử lý\n"
+"\t\t(tháo gỡ)\n"
+"\t\tKIỂU_DÁNG, nếu đã ghi rõ, có thể là:\n"
+"\t\t • auto\t\ttự động\n"
+"\t\t • gnu\n"
+"             \t • lucid\t\trõ ràng\n"
+"\t\t • arm\n"
+"\t\t • hp\n"
+"\t\t • edg\n"
+"\t\t • gnu-v3\n"
+" \t\t • java\n"
+"           \t • gnat\n"
+"  -w, --wide                     \t\tĐịnh dạng dữ liệu xuất chiếm hơn 80 cột\n"
+"\t\t(rộng)\n"
+"  -z, --disassemble-zeroes       \t\tĐừng nhảy qua khối  ố không khi rã\n"
+"\t\t(rã các số không)\n"
+"      --start-address=ĐỊA_CHỈ            Xử lý chỉ dữ liệu có địa chỉ ≥ ĐỊA_CHỈ\n"
+"      --stop-address=ĐỊA_CHỈ            Xử lý chỉ dữ liệu có địa chỉ ≤ ĐỊA_CHỈ\n"
+"      --prefix-addresses         \t\tIn ra địa chỉ hoàn toàn ở b        việc rã\n"
+"\t\t(thêm vào đầu các địa chỉ)\n"
+"      --[no-]show-raw-insn\n"
+"\t\tHiển thị thập lục phân ở bên việc rã kiểu ký hiệu\n"
+"hông] hiển thị câu lệnh thô)\n"
+"      --adjust-vma=HIỆU_SỐ\n"
+"\t\tThêm HIỆU_SỐ vào mọi địa chỉ phần đã hiển thị\n"
+"\t\t(điều chỉnh vma)      --special-syms          Gồm _các ký hiệu đặc biệt_ trong việc đổ ký hiệu\n"
 "\n"
-"Dòng đầu phần:\n"
-
-#: readelf.c:3834
-#, c-format
-msgid "  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al\n"
-msgstr "  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al\n"
-
-#: readelf.c:3837
-#, c-format
-msgid "  [Nr] Name              Type            Address          Off    Size   ES Flg Lk Inf Al\n"
-msgstr "  [Nr] Name              Type            Address          Off    Size   ES Flg Lk Inf Al\n"
-
-#: readelf.c:3840
-#, c-format
-msgid "  [Nr] Name              Type             Address           Offset\n"
-msgstr "  [Nr] Name              Type             Address           Offset\n"
 
-#: readelf.c:3841
+#: objdump.c:389
 #, c-format
-msgid "       Size              EntSize          Flags  Link  Info  Align\n"
-msgstr "       Size              EntSize          Flags  Link  Info  Align\n"
+msgid "Sections:\n"
+msgstr "Phần:\n"
 
-#: readelf.c:3936
+#: objdump.c:392 objdump.c:396
 #, c-format
-msgid ""
-"Key to Flags:\n"
-"  W (write), A (alloc), X (execute), M (merge), S (strings)\n"
-"  I (info), L (link order), G (group), x (unknown)\n"
-"  O (extra OS processing required) o (OS specific), p (processor specific)\n"
-msgstr ""
-"Cờ ey \tW\tghi\n"
-" \tA\tcấp phát\n"
-"\tX\tthực hiện\n"
-"\tM\ttrộn\n"
-"\tS\tcác chuỗi\n"
-"\tI\tthông tin\n"
-"\tL\tthứ tự liên kết\n"
-"\tG\tnhóm\n"
-"\tO\tcần thiết xử lý hệ điều hành thêm\n"
-"\to \tđặc trưng cho hệ điều hành\n"
-"\ts\tđặc trưng cho bộ xử lý\n"
+msgid "Idx Name          Size      VMA       LMA       File off  Algn"
+msgstr "Idx Name          Size      VMA       LMA       File off  Algn"
 
-#: readelf.c:3954
+#: objdump.c:398
 #, c-format
-msgid "[<unknown>: 0x%x]"
-msgstr "[<không rõ>: 0x%x]"
-
-#: readelf.c:3984
-msgid "Section headers are not available!\n"
-msgstr "Dòng đầu phần không sẵn sàng.\n"
+msgid "Idx Name          Size      VMA               LMA               File off  Algn"
+msgstr "Idx Name          Size      VMA               LMA               File off  Algn"
 
-#: readelf.c:4008
+#: objdump.c:402
 #, c-format
-msgid ""
-"\n"
-"There are no section groups in this file.\n"
-msgstr ""
-"\n"
-"Không có nhóm phần nào trong tập tin này.\n"
+msgid "  Flags"
+msgstr "  Cờ"
 
-#: readelf.c:4042
+#: objdump.c:404
 #, c-format
-msgid "Bad sh_link in group section `%s'\n"
-msgstr "Có liên kết « sh_link » sai trong phần nhóm « %s »\n"
+msgid "  Pg"
+msgstr "  Tr"
 
-#: readelf.c:4061
+#: objdump.c:447
 #, c-format
-msgid "Bad sh_info in group section `%s'\n"
-msgstr "Có thông tin « sh_info » sai trong phần nhóm « %s »\n"
-
-#: readelf.c:4085 readelf.c:6947
-msgid "section data"
-msgstr "dữ liệu phần"
+msgid "%s: not a dynamic object"
+msgstr "%s không phải là môt đối tượng động"
 
-#: readelf.c:4097
+#: objdump.c:1735
 #, c-format
-msgid "   [Index]    Name\n"
-msgstr "   [Chỉ mục]    Tên\n"
+msgid "Disassembly of section %s:\n"
+msgstr "Việc rã phần %s:\n"
 
-#: readelf.c:4114
+#: objdump.c:1897
 #, c-format
-msgid "section [%5u] already in group section [%5u]\n"
-msgstr "phần [%5u] đã có trong phần nhóm [%5u]\n"
+msgid "Can't use supplied machine %s"
+msgstr "Không thể sử dụng máy đã cung cấp %s"
 
-#: readelf.c:4127
+#: objdump.c:1916
 #, c-format
-msgid "section 0 in group section [%5u]\n"
-msgstr "phần 0 trong phần nhóm [%5u]\n"
+msgid "Can't disassemble for architecture %s\n"
+msgstr "Không thể rã cho kiến trúc %s\n"
 
-#: readelf.c:4224
+#: objdump.c:2006
 #, c-format
 msgid ""
 "\n"
-"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+"Can't get contents for section '%s'.\n"
 msgstr ""
 "\n"
-"phần định vị lại « %s » tại hiệu số 0x%lx chứa %ld byte:\n"
+"Không thể lấy nội dung cho phần « %s ».\n"
 
-#: readelf.c:4236
+#: objdump.c:2143
 #, c-format
 msgid ""
+"No %s section present\n"
 "\n"
-"There are no dynamic relocations in this file.\n"
 msgstr ""
+"Không có phần %s ở\n"
 "\n"
-"Không có việc định vị lại động nào trong tập tin này.\n"
 
-#: readelf.c:4260
+#: objdump.c:2152
+#, c-format
+msgid "Reading %s section of %s failed: %s"
+msgstr "Việc đọc phần %s của %s bị lỗi: %s"
+
+#: objdump.c:2196
 #, c-format
 msgid ""
+"Contents of %s section:\n"
 "\n"
-"Relocation section "
 msgstr ""
+"Nội dung phần %s\n"
 "\n"
-"Phần định vị lại"
 
-#: readelf.c:4265 readelf.c:4666 readelf.c:4680 readelf.c:5025
+#: objdump.c:2323
 #, c-format
-msgid "'%s'"
-msgstr "« %s »"
+msgid "architecture: %s, "
+msgstr "kiến trúc: %s, "
 
-#: readelf.c:4267 readelf.c:4682 readelf.c:5027
+#: objdump.c:2326
 #, c-format
-msgid " at offset 0x%lx contains %lu entries:\n"
-msgstr " tại hiệu số 0x%lx chứa %lu mục nhập:\n"
+msgid "flags 0x%08x:\n"
+msgstr "cờ 0x%08x:\n"
 
-#: readelf.c:4308
+#: objdump.c:2340
 #, c-format
 msgid ""
 "\n"
-"There are no relocations in this file.\n"
+"start address 0x"
 msgstr ""
 "\n"
-"Không có việc định vị lại nào trong tập tin này.\n"
-
-#: readelf.c:4482 readelf.c:4862
-msgid "unwind table"
-msgstr "tri ra bảng"
+"địa chỉ đầu 0x"
 
-#: readelf.c:4540 readelf.c:4959
+#: objdump.c:2380
 #, c-format
-msgid "Skipping unexpected relocation type %s\n"
-msgstr "Đang nhảy kiểu định vị lại bất ngờ %s\n"
+msgid "Contents of section %s:\n"
+msgstr "Nội dung phần %s:\n"
 
-#: readelf.c:4598 readelf.c:5018 readelf.c:5069
+#: objdump.c:2505
 #, c-format
-msgid ""
-"\n"
-"There are no unwind sections in this file.\n"
-msgstr ""
-"\n"
-"Không có phần tri ra nào trong tập tin này.\n"
+msgid "no symbols\n"
+msgstr "không có ký hiệu\n"
 
-#: readelf.c:4661
+#: objdump.c:2512
 #, c-format
-msgid ""
-"\n"
-"Could not find unwind info section for "
-msgstr ""
-"\n"
-"Không thể tìm thấy phần thông tin tri ra cho "
-
-#: readelf.c:4673
-msgid "unwind info"
-msgstr "thông tin tri ra"
+msgid "no information for symbol number %ld\n"
+msgstr "không có thông tin cho ký hiệu số %ld\n"
 
-#: readelf.c:4675 readelf.c:5024
+#: objdump.c:2515
 #, c-format
-msgid ""
-"\n"
-"Unwind section "
-msgstr ""
-"\n"
-"Phần tri ra "
-
-#: readelf.c:5228 readelf.c:5272
-msgid "dynamic section"
-msgstr "phần động"
+msgid "could not determine the type of symbol number %ld\n"
+msgstr "không thể quyết định kiểu ký hiệu số %ld\n"
 
-#: readelf.c:5349
+#: objdump.c:2788
 #, c-format
 msgid ""
 "\n"
-"There is no dynamic section in this file.\n"
+"%s:     file format %s\n"
 msgstr ""
 "\n"
-"Không có phần động nào trong tập tin này.\n"
-
-#: readelf.c:5387
-msgid "Unable to seek to end of file!"
-msgstr "• Không thể tìm tới kết thúc tập tin. •"
-
-#: readelf.c:5400
-msgid "Unable to determine the number of symbols to load\n"
-msgstr "Không thể quyết định số ký hiệu cần tải\n"
-
-#: readelf.c:5435
-msgid "Unable to seek to end of file\n"
-msgstr "Không thể tìm tới kết thúc tập tin\n"
+"%s:    dạng thức tập tin %s\n"
 
-#: readelf.c:5442
-msgid "Unable to determine the length of the dynamic string table\n"
-msgstr "Không thể quyết định độ dài của bảng chuỗi động\n"
+#: objdump.c:2845
+#, c-format
+msgid "%s: printing debugging information failed"
+msgstr "%s: việc in ra thông tin gỡ lỗi bị lỗi"
 
-#: readelf.c:5447
-msgid "dynamic string table"
-msgstr "bảng chuỗi động"
+#: objdump.c:2936
+#, c-format
+msgid "In archive %s:\n"
+msgstr "Trong kho %s\n"
 
-#: readelf.c:5482
-msgid "symbol information"
-msgstr "thông tin ký hiệu"
+#: objdump.c:3058
+msgid "unrecognized -E option"
+msgstr "không nhận ra tùy chọn « -E »"
 
-#: readelf.c:5507
+#: objdump.c:3069
 #, c-format
-msgid ""
-"\n"
-"Dynamic section at offset 0x%lx contains %u entries:\n"
-msgstr ""
-"\n"
-"Phần động tại hiệu số 0x%lx chứa %u mục nhập:\n"
+msgid "unrecognized --endian type `%s'"
+msgstr "không nhận ra kiểu tính trạng cuối (endian) « %s »"
 
-#: readelf.c:5510
+#: rdcoff.c:196
 #, c-format
-msgid "  Tag        Type                         Name/Value\n"
-msgstr "  Thẻ        Kiểu                     Tên/Giá trị\n"
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr "parse_coff_type: (phân tách kiểu coff) Mã kiểu sai 0x%x"
 
-#: readelf.c:5546
+#: rdcoff.c:404 rdcoff.c:509 rdcoff.c:697
 #, c-format
-msgid "Auxiliary library"
-msgstr "Thư viên phụ"
+msgid "bfd_coff_get_syment failed: %s"
+msgstr "« bfd_coff_get_syment » bị lỗi: %s"
 
-#: readelf.c:5550
+#: rdcoff.c:420 rdcoff.c:717
 #, c-format
-msgid "Filter library"
-msgstr "Thư viên lọc"
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr "« bfd_coff_get_auxent » bị lỗi: %s"
 
-#: readelf.c:5554
+#: rdcoff.c:784
 #, c-format
-msgid "Configuration file"
-msgstr "Tập tin cấu hình"
+msgid "%ld: .bf without preceding function"
+msgstr "%ld: « .bf » không có hàm đi trước"
 
-#: readelf.c:5558
+#: rdcoff.c:834
 #, c-format
-msgid "Dependency audit library"
-msgstr "Thư viên kiểm tra cách phụ thuộc"
+msgid "%ld: unexpected .ef\n"
+msgstr "%ld: « .ef » bất ngờ\n"
 
-#: readelf.c:5562
+#: rddbg.c:85
 #, c-format
-msgid "Audit library"
-msgstr "Thư viên kiểm tra"
+msgid "%s: no recognized debugging information"
+msgstr "%s: không có thông tin gỡ lỗi đã nhận ra"
 
-#: readelf.c:5580 readelf.c:5608 readelf.c:5636
+#: rddbg.c:394
 #, c-format
-msgid "Flags:"
-msgstr "Cờ :"
+msgid "Last stabs entries before error:\n"
+msgstr "Những mục nhập stabs cuối cùng trước lỗi:\n"
 
-#: readelf.c:5583 readelf.c:5611 readelf.c:5638
+#: readelf.c:264
 #, c-format
-msgid " None\n"
-msgstr " Không có\n"
+msgid "Unable to seek to 0x%lx for %s\n"
+msgstr "Không thể nhảy tới 0x%lx tìm %s\n"
 
-#: readelf.c:5759
+#: readelf.c:279
 #, c-format
-msgid "Shared library: [%s]"
-msgstr "Thư viện dùng chung: [%s]"
+msgid "Out of memory allocating 0x%lx bytes for %s\n"
+msgstr "Hết bộ nhớ khi cấp phát 0x%lx byte cho %s\n"
 
-#: readelf.c:5762
+#: readelf.c:289
 #, c-format
-msgid " program interpreter"
-msgstr " bộ giải dịch chương trình"
+msgid "Unable to read in 0x%lx bytes of %s\n"
+msgstr "Không thể đọc nhập 0x%lx byte của %s\n"
 
-#: readelf.c:5766
-#, c-format
-msgid "Library soname: [%s]"
-msgstr "soname (tên so) thư viên: [%s]"
+#: readelf.c:623
+msgid "Don't know about relocations on this machine architecture\n"
+msgstr "Không biết về việc định vị lại trên kiến trúc máy này\n"
 
-#: readelf.c:5770
-#, c-format
-msgid "Library rpath: [%s]"
-msgstr "rpath (đường dẫn r) thư viên: [%s]"
+#: readelf.c:643 readelf.c:671 readelf.c:715 readelf.c:743
+msgid "relocs"
+msgstr "đ.v. lại"
+
+#: readelf.c:654 readelf.c:682 readelf.c:726 readelf.c:754
+msgid "out of memory parsing relocs"
+msgstr "hết bộ nhớ khi phân tách việc định vị lại"
 
-#: readelf.c:5774
+#: readelf.c:808
 #, c-format
-msgid "Library runpath: [%s]"
-msgstr "runpath (đường dẫn chạy) thư viên: [%s]"
+msgid " Offset     Info    Type                Sym. Value  Symbol's Name + Addend\n"
+msgstr " Hiệu     Tin    Kiểu            Giá trị ký hiệu  Tên ký hiệu + gì thêm\n"
 
-#: readelf.c:5837
+#: readelf.c:810
 #, c-format
-msgid "Not needed object: [%s]\n"
-msgstr "Đối tượng không cần thiết: [%s]\n"
+msgid " Offset     Info    Type            Sym.Value  Sym. Name + Addend\n"
+msgstr " HIệu     Tin    Kiểu    Giá trị ký hiệu Tên ký hiệu + gì thêm\n"
 
-#: readelf.c:5951
+#: readelf.c:815
 #, c-format
-msgid ""
-"\n"
-"Version definition section '%s' contains %ld entries:\n"
-msgstr ""
-"\n"
-"Phần định nghĩa phiên bản « %s » chứa %ld mục nhập:\n"
+msgid " Offset     Info    Type                Sym. Value  Symbol's Name\n"
+msgstr " HIệu     Tin    Kiểu            Giá trị ký hiệu Tên ký hiệu\n"
 
-#: readelf.c:5954
+#: readelf.c:817
 #, c-format
-msgid "  Addr: 0x"
-msgstr "  ĐChỉ: 0x"
+msgid " Offset     Info    Type            Sym.Value  Sym. Name\n"
+msgstr " Hiệu     Tin    Kiểu    Giá trị ký hiệu Tên ký hiệu\n"
 
-#: readelf.c:5956 readelf.c:6148
+#: readelf.c:825
 #, c-format
-msgid "  Offset: %#08lx  Link: %lx (%s)\n"
-msgstr "  HIệu: %#08lx  LKết: %lx (%s)\n"
+msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name + Addend\n"
+msgstr "    Offset             Info             Type               Symbol's Value  Symbol's Name + Addend\n"
 
-#: readelf.c:5961
-msgid "version definition section"
-msgstr "phần định nghĩa phiên bản"
+#: readelf.c:827
+#, c-format
+msgid "  Offset          Info           Type           Sym. Value    Sym. Name + Addend\n"
+msgstr "  Hiệu        Tin         Kiểu     Giá trị ký hiệu  Tên ký hiệu + gì thêm\n"
 
-#: readelf.c:5987
+#: readelf.c:832
 #, c-format
-msgid "  %#06x: Rev: %d  Flags: %s"
-msgstr "  %#06x: Bản: %d  Cờ: %s"
+msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name\n"
+msgstr "    Offset             Info             Type               Symbol's Value  Symbol's Name\n"
 
-#: readelf.c:5990
+#: readelf.c:834
 #, c-format
-msgid "  Index: %d  Cnt: %d  "
-msgstr "  Chỉ mục: %d  Đếm: %d  "
+msgid "  Offset          Info           Type           Sym. Value    Sym. Name\n"
+msgstr "  HIệu        Tin         Kiểu      Giá trị ký hiệu  Tên ký hiệu\n"
 
-#: readelf.c:6001
+#: readelf.c:1127 readelf.c:1129 readelf.c:1238 readelf.c:1240 readelf.c:1249
+#: readelf.c:1251
 #, c-format
-msgid "Name: %s\n"
-msgstr "Tên: %s\n"
+msgid "unrecognized: %-7lx"
+msgstr "không nhận ra: %-7lx"
 
-#: readelf.c:6003
+#: readelf.c:1154
 #, c-format
-msgid "Name index: %ld\n"
-msgstr "Chỉ mục tên: %ld\n"
+msgid "<unknown addend: %lx>"
+msgstr "<số thêm vào không rõ : %lx>"
 
-#: readelf.c:6018
+#: readelf.c:1210
 #, c-format
-msgid "  %#06x: Parent %d: %s\n"
-msgstr "  %#06x: Mẹ %d: %s\n"
+msgid "<string table index: %3ld>"
+msgstr "<chỉ mục bảng chuỗi: %3ld>"
 
-#: readelf.c:6021
+#: readelf.c:1212
 #, c-format
-msgid "  %#06x: Parent %d, name index: %ld\n"
-msgstr "  %#06x: Mẹ %d, chỉ mục tên: %ld\n"
+msgid "<corrupt string table index: %3ld>"
+msgstr "<chỉ mục bảng chuỗi bị hỏng: %3ld>"
 
-#: readelf.c:6040
+#: readelf.c:1522
 #, c-format
-msgid ""
-"\n"
-"Version needs section '%s' contains %ld entries:\n"
-msgstr ""
-"\n"
-"Phần cần thiết phiên bản « %s » chứa %ld mục nhập:\n"
+msgid "Processor Specific: %lx"
+msgstr "Đặc trưng cho bộ xử lý: %lx"
 
-#: readelf.c:6043
+#: readelf.c:1543
 #, c-format
-msgid " Addr: 0x"
-msgstr " ĐChỉ: 0x"
+msgid "Operating System specific: %lx"
+msgstr "Đặc trưng cho Hệ điều hành: %lx"
 
-#: readelf.c:6045
+#: readelf.c:1547 readelf.c:2349
 #, c-format
-msgid "  Offset: %#08lx  Link to section: %ld (%s)\n"
-msgstr "  HIệu: %#08lx  Liên kết đến phần: %ld (%s)\n"
+msgid "<unknown>: %lx"
+msgstr "<không rõ>: %lx"
 
-#: readelf.c:6050
-msgid "version need section"
-msgstr "phần cần phiên bản"
+#: readelf.c:1560
+msgid "NONE (None)"
+msgstr "KHÔNG CÓ (Không có)"
+
+#: readelf.c:1561
+msgid "REL (Relocatable file)"
+msgstr "REL (Tập tin có thể _định vị lại_)"
+
+#: readelf.c:1562
+msgid "EXEC (Executable file)"
+msgstr "EXEC (Executable file)"
+
+#: readelf.c:1563
+msgid "DYN (Shared object file)"
+msgstr "DYN (Shared object file)"
 
-#: readelf.c:6072
+#: readelf.c:1564
+msgid "CORE (Core file)"
+msgstr "CORE (Core file)"
+
+#: readelf.c:1568
 #, c-format
-msgid "  %#06x: Version: %d"
-msgstr "  %#06x: PhBản: %d"
+msgid "Processor Specific: (%x)"
+msgstr "Đặc trưng cho bộ xử lý: (%x)"
 
-#: readelf.c:6075
+#: readelf.c:1570
 #, c-format
-msgid "  File: %s"
-msgstr "  Tập tin: %s"
+msgid "OS Specific: (%x)"
+msgstr "Đặc trưng cho HĐH: (%x)"
 
-#: readelf.c:6077
+#: readelf.c:1572 readelf.c:1681 readelf.c:2541
 #, c-format
-msgid "  File: %lx"
-msgstr "  Tập tin: %lx"
+msgid "<unknown>: %x"
+msgstr "<không rõ>: %x"
+
+#: readelf.c:1584
+msgid "None"
+msgstr "Không có"
+
+#: readelf.c:2186
+msgid "Standalone App"
+msgstr "Ứng dụng Độc lập"
 
-#: readelf.c:6079
+#: readelf.c:2189 readelf.c:2948 readelf.c:2964
 #, c-format
-msgid "  Cnt: %d\n"
-msgstr "  Đếm: %d\n"
+msgid "<unknown: %x>"
+msgstr "<không rõ : %x>"
 
-#: readelf.c:6097
+#: readelf.c:2586
 #, c-format
-msgid "  %#06x:   Name: %s"
-msgstr "  %#06x:   Tên: %s"
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr "Cách sử dụng: readelf <tùy_chọn...> tập_tin_elf...\n"
 
-#: readelf.c:6100
+#: readelf.c:2587
 #, c-format
-msgid "  %#06x:   Name index: %lx"
-msgstr "  %#06x:   Chỉ mục tên: %lx"
+msgid " Display information about the contents of ELF format files\n"
+msgstr " Hiển thị thông tin về nội dung tập tin dạng thức ELF\n"
 
-#: readelf.c:6103
+#: readelf.c:2588
 #, c-format
-msgid "  Flags: %s  Version: %d\n"
-msgstr "  Cờ: %s  Phiên bản: %d\n"
+msgid ""
+" Options are:\n"
+"  -a --all               Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+"  -h --file-header       Display the ELF file header\n"
+"  -l --program-headers   Display the program headers\n"
+"     --segments          An alias for --program-headers\n"
+"  -S --section-headers   Display the sections' header\n"
+"     --sections          An alias for --section-headers\n"
+"  -g --section-groups    Display the section groups\n"
+"  -t --section-details   Display the section details\n"
+"  -e --headers           Equivalent to: -h -l -S\n"
+"  -s --syms              Display the symbol table\n"
+"      --symbols          An alias for --syms\n"
+"  -n --notes             Display the core notes (if present)\n"
+"  -r --relocs            Display the relocations (if present)\n"
+"  -u --unwind            Display the unwind info (if present)\n"
+"  -d --dynamic           Display the dynamic section (if present)\n"
+"  -V --version-info      Display the version sections (if present)\n"
+"  -A --arch-specific     Display architecture specific information (if any).\n"
+"  -D --use-dynamic       Use the dynamic section info when displaying symbols\n"
+"  -x --hex-dump=<number> Dump the contents of section <number>\n"
+"  -w[liaprmfFsoR] or\n"
+"  --debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n"
+"                         Display the contents of DWARF2 debug sections\n"
+msgstr ""
+" Tùy chọn:\n"
+"  -a --all               \t\t\t\t\tBằng: -h -l -S -s -r -d -V -A -I\n"
+"\t(hết)\n"
+"  -h --file-header       \t\t\t\tHiển thị _dòng đầu tập tin_ ELF\n"
+"  -l --program-headers   \t\tHiển thị _các dòng đầu chương trình_\n"
+"     --segments          \t\t\tBiệt hiệu cho « --program-headers »\n"
+"\t(các phân đoạn)\n"
+"  -S --section-headers   \t\t\tHiển thị dòng đầu của các phần\n"
+"\t(các dòng đầu phần)\n"
+"     --sections          \t\t\tBiệt hiệu cho « --section-headers »\n"
+"\t(các phần)\n"
+"  -g --section-groups    \t\t\t     Hiển thị _các nhóm phần_\n"
+"  -t --section-details\t\t\tHiển thị _chi tiết về phần_\n"
+"  -e --headers           \t\t\t\tBằng: -h -l -S\n"
+"\t(các dòng đầu)\n"
+"  -s --syms              \t\t\tHiển thị bảng _ký hiệu_\n"
+"      --symbols          \t\t\tBiệt hiệu cho « --syms »\n"
+"\t(các ký hiệu [« syms » là viết tắt])\n"
+"  -n --notes             \t\t\tHiển thị _các ghi chú_ lõi (nếu có)\n"
+"  -r --relocs            \t\tHiển thị _các việc định vị lại_ (nếu có)\n"
+"  -u --unwind            \t\tHiển thị thông tin _tri ra_ (nếu có)\n"
+"  -d --dynamic           \t\tHiển thị phần _động_ (nếu có)\n"
+"  -V --version-info      \t\tHiển thị các phần phiên bản (nếu có)\n"
+"\t(thông tin phiên bản)\n"
+"  -A --arch-specific     Hiển thị thông tin _đặc trưng cho kiến trúc_ (nếu có)\n"
+"  -D --use-dynamic       _Dùng_ thông tin phần _động_ khi hiển thị ký hiệu\n"
+"  -x --hex-dump=<số> \t\t\tĐổ nội dung phần <số>\n"
+"\t(đổ thập lục)\n"
+"  -w[liaprmfFsoR] or\n"
+"  --debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n"
+"\t[line\t\t\tdòng\n"
+"\tinfo\t\t\tthông tin\n"
+"\tabbrev.\t\tviết tắt\n"
+"\tpubnames\tcác tên công\n"
+"\taranges\t\tcác phạm vị a\n"
+"\tmacro\t\tbộ lệnh\n"
+"\tframes\t\tcác khung\n"
+"\tstr\t\t\tchuỗi\n"
+"\tloc\t\t\tđịnh vị\n"
+"\tRanges\t\tCác phạm vị]\n"
+"       Hiển thị nội dung các phần gỡ lỗi kiểu DWARF2\n"
 
-#: readelf.c:6139
-msgid "version string table"
-msgstr "bảng chuỗi phiên bản"
+#: readelf.c:2612
+#, c-format
+msgid ""
+"  -i --instruction-dump=<number>\n"
+"                         Disassemble the contents of section <number>\n"
+msgstr ""
+"  -i --instruction-dump=<số>\t\tTháo ra nội dung phần <số>\n"
+"\t(đổ câu lệnh)\n"
 
-#: readelf.c:6143
+#: readelf.c:2616
 #, c-format
 msgid ""
-"\n"
-"Version symbols section '%s' contains %d entries:\n"
+"  -I --histogram         Display histogram of bucket list lengths\n"
+"  -W --wide              Allow output width to exceed 80 characters\n"
+"  @<file>                Read options from <file>\n"
+"  -H --help              Display this information\n"
+"  -v --version           Display the version number of readelf\n"
 msgstr ""
-"\n"
-"Phần ký hiệu phiên bản « %s » chứa %d mục nhập:\n"
+"  -I --histogram\n"
+"\tHiển thị _biểu đồ tần xuất_ của các độ dài danh sách xô\n"
+"  -W --wide              Cho phép độ _rộng_ kết xuất vượt qua 80 ký tự\n"
+"  @<file>        \t\tĐọc các tùy chọn từ tập tin đó\n"
+"  -H --help             \tHiển thị _trợ giúp_ này\n"
+"  -v --version           \tHiển thị số thứ tự _phiên bản_ của readelf\n"
+
+#: readelf.c:2642 readelf.c:9180
+msgid "Out of memory allocating dump request table."
+msgstr "Hết bộ nhớ khi cấp phát bảng yêu cầu đổ."
 
-#: readelf.c:6146
+#: readelf.c:2816 readelf.c:2884
 #, c-format
-msgid " Addr: "
-msgstr " ĐChỉ: "
+msgid "Unrecognized debug option '%s'\n"
+msgstr "Không nhận diện tùy chọn gỡ lỗi « %s »\n"
 
-#: readelf.c:6156
-msgid "version symbol data"
-msgstr "dữ liệu ký hiệu phiên bản"
+#: readelf.c:2918
+#, c-format
+msgid "Invalid option '-%c'\n"
+msgstr "Tùy chọn không hợp lệ « -%c »\n"
 
-#: readelf.c:6183
-msgid "   0 (*local*)    "
-msgstr "   0 (*local*)    "
+#: readelf.c:2932
+msgid "Nothing to do.\n"
+msgstr "Không có gì cần làm.\n"
 
-#: readelf.c:6187
-msgid "   1 (*global*)   "
-msgstr "   1 (*toàn cụcglobal*)   "
+#: readelf.c:2944 readelf.c:2960 readelf.c:6169
+msgid "none"
+msgstr "không có"
 
-#: readelf.c:6223 readelf.c:6677
-msgid "version need"
-msgstr "phiên bản cần"
+#: readelf.c:2961
+msgid "2's complement, little endian"
+msgstr "phần bù của 2, tính trạng cuối nhỏ"
 
-#: readelf.c:6233
-msgid "version need aux (2)"
-msgstr "phiên bản cần phụ (2)"
+#: readelf.c:2962
+msgid "2's complement, big endian"
+msgstr "phần bù của 2, tính trạng cuối lớn"
 
-#: readelf.c:6275 readelf.c:6740
-msgid "version def"
-msgstr "phbản đ.nghĩa"
+#: readelf.c:2980
+msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
+msgstr "Không phải là tập tin ELF — có những byte ma thuật không đúng tại đầu nó.\n"
 
-#: readelf.c:6294 readelf.c:6755
-msgid "version def aux"
-msgstr "phbản đ.nghĩa phụ"
+#: readelf.c:2988
+#, c-format
+msgid "ELF Header:\n"
+msgstr "Dòng đầu ELF:\n"
 
-#: readelf.c:6325
+#: readelf.c:2989
 #, c-format
-msgid ""
-"\n"
-"No version information found in this file.\n"
-msgstr ""
-"\n"
-"Không tìm thấy thông tin phiên bản trong tập tin này.\n"
+msgid "  Magic:   "
+msgstr "  Ma thuật:   "
 
-#: readelf.c:6456
-msgid "Unable to read in dynamic data\n"
-msgstr "Không thể đọc vào dữ liệu động\n"
+#: readelf.c:2993
+#, c-format
+msgid "  Class:                             %s\n"
+msgstr "  Class:                             %s\n"
 
-#: readelf.c:6509
-msgid "Unable to seek to start of dynamic information"
-msgstr "Không thể tìm tới đầu thông tin động"
+#: readelf.c:2995
+#, c-format
+msgid "  Data:                              %s\n"
+msgstr "  Data:                              %s\n"
 
-#: readelf.c:6515
-msgid "Failed to read in number of buckets\n"
-msgstr "Việc đọc vào số xô bị lỗi\n"
+#: readelf.c:2997
+#, c-format
+msgid "  Version:                           %d %s\n"
+msgstr "  Version:                           %d %s\n"
+
+#: readelf.c:3004
+#, c-format
+msgid "  OS/ABI:                            %s\n"
+msgstr "  OS/ABI:                            %s\n"
+
+#: readelf.c:3006
+#, c-format
+msgid "  ABI Version:                       %d\n"
+msgstr "  Phiên bản ABI:                       %d\n"
+
+#: readelf.c:3008
+#, c-format
+msgid "  Type:                              %s\n"
+msgstr "  Type:                              %s\n"
+
+#: readelf.c:3010
+#, c-format
+msgid "  Machine:                           %s\n"
+msgstr "  Machine:                           %s\n"
+
+#: readelf.c:3012
+#, c-format
+msgid "  Version:                           0x%lx\n"
+msgstr "  Version:                           0x%lx\n"
 
-#: readelf.c:6521
-msgid "Failed to read in number of chains\n"
-msgstr "Việc đọc vào số dây bị lỗi\n"
+#: readelf.c:3015
+#, c-format
+msgid "  Entry point address:               "
+msgstr "  Địa chỉ điểm vào :               "
 
-#: readelf.c:6541
+#: readelf.c:3017
 #, c-format
 msgid ""
 "\n"
-"Symbol table for image:\n"
+"  Start of program headers:          "
 msgstr ""
 "\n"
-"Bảng ký hiệu cho ảnh:\n"
-
-#: readelf.c:6543
-#, c-format
-msgid "  Num Buc:    Value  Size   Type   Bind Vis      Ndx Name\n"
-msgstr "  Số xô :    Giá trị  Cỡ   Kiểu   Trộn Hiện      Ndx Tên\n"
-
-#: readelf.c:6545
-#, c-format
-msgid "  Num Buc:    Value          Size   Type   Bind Vis      Ndx Name\n"
-msgstr "  Số xô :    Giá trị         Cỡ   Kiểu   Trộn Hiện     Ndx Tên\n"
+"  Điểm đầu các dòng đầu chương trình:          "
 
-#: readelf.c:6597
+#: readelf.c:3019
 #, c-format
 msgid ""
-"\n"
-"Symbol table '%s' contains %lu entries:\n"
+" (bytes into file)\n"
+"  Start of section headers:          "
 msgstr ""
-"\n"
-"Bảng ký hiệu « %s » chứa %lu mục nhập:\n"
+" (byte vào tập tin)\n"
+"  Đầu các dòng đầu phần:          "
 
-#: readelf.c:6601
+#: readelf.c:3021
 #, c-format
-msgid "   Num:    Value  Size Type    Bind   Vis      Ndx Name\n"
-msgstr "   Số :    Giá trị  Cỡ Kiểu    Trộn   Hiện    Ndx Tên\n"
+msgid " (bytes into file)\n"
+msgstr " (byte vào tập tin)\n"
 
-#: readelf.c:6603
+#: readelf.c:3023
 #, c-format
-msgid "   Num:    Value          Size Type    Bind   Vis      Ndx Name\n"
-msgstr "   Số :    Giá trị        Cỡ Kiểu    Trộn   Hiện    Ndx Tên\n"
+msgid "  Flags:                             0x%lx%s\n"
+msgstr "  Flags:                             0x%lx%s\n"
 
-#: readelf.c:6649
-msgid "version data"
-msgstr "dữ liệu phiên bản"
+#: readelf.c:3026
+#, c-format
+msgid "  Size of this header:               %ld (bytes)\n"
+msgstr "  Cỡ phần này:               %ld (byte)\n"
 
-#: readelf.c:6690
-msgid "version need aux (3)"
-msgstr "phiên bản cần phụ (3)"
+#: readelf.c:3028
+#, c-format
+msgid "  Size of program headers:           %ld (bytes)\n"
+msgstr "  Cỡ các dòng đầu chương trình:           %ld (byte)\n"
 
-#: readelf.c:6715
-msgid "bad dynamic symbol"
-msgstr "ký hiệu động sai"
+#: readelf.c:3030
+#, c-format
+msgid "  Number of program headers:         %ld\n"
+msgstr "  Số dòng đầu chương trình:         %ld\n"
 
-#: readelf.c:6778
+#: readelf.c:3032
 #, c-format
-msgid ""
-"\n"
-"Dynamic symbol information is not available for displaying symbols.\n"
-msgstr ""
-"\n"
-"Không có thông tin ký hiệu động để hiển thị ký hiệu.\n"
+msgid "  Size of section headers:           %ld (bytes)\n"
+msgstr "  Cỡ các dòng đầu phần:           %ld (byte)\n"
 
-#: readelf.c:6790
+#: readelf.c:3034
 #, c-format
-msgid ""
-"\n"
-"Histogram for bucket list length (total of %lu buckets):\n"
-msgstr ""
-"\n"
-"Biểu đồ tần xuất cho độ dài danh sách xô (tổng số %lu xô):\n"
+msgid "  Number of section headers:         %ld"
+msgstr "  Số dòng đầu phần:         %ld"
 
-#: readelf.c:6792
+#: readelf.c:3039
 #, c-format
-msgid " Length  Number     %% of total  Coverage\n"
-msgstr " Dài       Số           %% tổng phạm vị\n"
+msgid "  Section header string table index: %ld"
+msgstr "  Chỉ mục bảng chuỗi dòng đầu phần: %ld"
 
-#: readelf.c:6797 readelf.c:6813 readelf.c:10967 readelf.c:11159
-msgid "Out of memory"
-msgstr "Hết bộ nhớ"
+#: readelf.c:3070 readelf.c:3103
+msgid "program headers"
+msgstr "các dòng đầu chương trình"
+
+#: readelf.c:3141 readelf.c:3440 readelf.c:3481 readelf.c:3540 readelf.c:3603
+#: readelf.c:4208 readelf.c:4232 readelf.c:5510 readelf.c:5554 readelf.c:5752
+#: readelf.c:6734 readelf.c:6748 readelf.c:8564 readelf.c:8972 readelf.c:9039
+msgid "Out of memory\n"
+msgstr "Hết bộ nhớ\n"
 
-#: readelf.c:6862
+#: readelf.c:3168
 #, c-format
 msgid ""
 "\n"
-"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+"There are no program headers in this file.\n"
 msgstr ""
 "\n"
-"Phân đoạn thông tin động tại hiệu số 0x%lx chứa %d mục nhập:\n"
-
-#: readelf.c:6865
-#, c-format
-msgid " Num: Name                           BoundTo     Flags\n"
-msgstr " Số : Tên                           ĐóngVới     Cờ\n"
+"Không có dòng đầu chương trình nào trong tập tin này.\n"
 
-#: readelf.c:6917
+#: readelf.c:3174
 #, c-format
 msgid ""
 "\n"
-"Assembly dump of section %s\n"
+"Elf file type is %s\n"
 msgstr ""
 "\n"
-"Việc đổ thanh ghi của phần %s\n"
+"Kiểu tập tin Elf là %s\n"
 
-#: readelf.c:6938
+#: readelf.c:3175
 #, c-format
-msgid ""
-"\n"
-"Section '%s' has no data to dump.\n"
-msgstr ""
-"\n"
-"Phần « %s » không có dữ liệu cần đổ.\n"
+msgid "Entry point "
+msgstr "Điểm vào "
 
-#: readelf.c:6943
+#: readelf.c:3177
 #, c-format
 msgid ""
 "\n"
-"Hex dump of section '%s':\n"
+"There are %d program headers, starting at offset "
 msgstr ""
 "\n"
-"Việc đổ thập lục của phần « %s »:\n"
-
-#: readelf.c:7090
-msgid "badly formed extended line op encountered!\n"
-msgstr "gặp thao tác dòng đã mở rộng dạng sai.\n"
-
-#: readelf.c:7097
-#, c-format
-msgid "  Extended opcode %d: "
-msgstr "  Opcode (mã thao tác) đã mở rộng %d: "
+"Có %d dòng đầu chương trình, bắt đầu tại hiệu số"
 
-#: readelf.c:7102
+#: readelf.c:3189 readelf.c:3191
 #, c-format
 msgid ""
-"End of Sequence\n"
 "\n"
+"Program Headers:\n"
 msgstr ""
-"Kết thúc dãy\n"
 "\n"
+"Dòng đầu chương trình:\n"
 
-#: readelf.c:7108
-#, c-format
-msgid "set Address to 0x%lx\n"
-msgstr "đặt Địa chỉ là 0x%lx\n"
-
-#: readelf.c:7113
-#, c-format
-msgid "  define new File Table entry\n"
-msgstr "  định nghĩa mục nhập Bảng Tập tin mới\n"
-
-#: readelf.c:7114 readelf.c:9032
-#, c-format
-msgid "  Entry\tDir\tTime\tSize\tName\n"
-msgstr "  Mục\tTMục\tGiờ\tCỡ\tTên\n"
-
-# Variable: don't translate / Biến: đừng dịch
-#: readelf.c:7116
+#: readelf.c:3195
 #, c-format
-msgid "   %d\t"
-msgstr "   %d\t"
+msgid "  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align\n"
+msgstr "  Kiểu         HIệu   ĐChỉẢo   ĐChỉVật   CỡTập CỡNhớ  Cờ Cạnh lề\n"
 
-# Variable: don't translate / Biến: đừng dịch
-#: readelf.c:7119 readelf.c:7121 readelf.c:7123 readelf.c:9044 readelf.c:9046
-#: readelf.c:9048
+#: readelf.c:3198
 #, c-format
-msgid "%lu\t"
-msgstr "%lu\t"
+msgid "  Type           Offset   VirtAddr           PhysAddr           FileSiz  MemSiz   Flg Align\n"
+msgstr "  Kiểu         HIệu   Địa Chỉ Ảo   Địa Chỉ Vật lý   CỡTập CỡNhớ  Cờ Cạnh lề\n"
 
-# Variable: do not translate/ biến: đừng dịch
-#: readelf.c:7124
+#: readelf.c:3202
 #, c-format
-msgid ""
-"%s\n"
-"\n"
-msgstr ""
-"%s\n"
-"\n"
+msgid "  Type           Offset             VirtAddr           PhysAddr\n"
+msgstr "  Kiểu         HIệu         Địa Chỉ Ảo     Địa Chỉ Vật lý\n"
 
-#: readelf.c:7128
+#: readelf.c:3204
 #, c-format
-msgid "UNKNOWN: length %d\n"
-msgstr "KHÔNG RÕ: độ dài %d\n"
-
-#: readelf.c:7155
-msgid "debug_str section data"
-msgstr "debug_str section data"
-
-#: readelf.c:7173
-msgid "<no .debug_str section>"
-msgstr "<no .debug_str section>"
+msgid "                 FileSiz            MemSiz              Flags  Align\n"
+msgstr "                 FileSiz            MemSiz              Flags  Align\n"
 
-#: readelf.c:7176
-msgid "<offset is too big>"
-msgstr "<offset is too big>"
+#: readelf.c:3297
+msgid "more than one dynamic segment\n"
+msgstr "hơn một phân đoạn động\n"
 
-#: readelf.c:7201
-msgid "debug_loc section data"
-msgstr "dữ liệu phần « debug_loc » (định vị gỡ lỗi)"
+#: readelf.c:3308
+msgid "no .dynamic section in the dynamic segment"
+msgstr "không có phân đoạn « .dynamic » (động) trong phân đoạn động"
 
-#: readelf.c:7235
-msgid "debug_range section data"
-msgstr "dữ liệu phần « debug_range » (phạm vị gỡ lỗi)"
+#: readelf.c:3317
+msgid "the .dynamic section is not contained within the dynamic segment"
+msgstr "phần « .dynamic » (động) không có được chứa ở trong phân đoạn động"
 
-#: readelf.c:7307
-#, c-format
-msgid "%s: skipping unexpected symbol type %s in relocation in section .rela%s\n"
-msgstr "%s: đang nhảy qua kiểu ký hiệu bất ngờ %s trong việc định vị lại trong phần .rela%s\n"
+#: readelf.c:3319
+msgid "the .dynamic section is not the first section in the dynamic segment."
+msgstr "phần « .dynamic » (động) không phải là phần thứ nhất trong phân đoạn động."
 
-#: readelf.c:7321
-#, c-format
-msgid "skipping unexpected symbol type %s in relocation in section .rela.%s\n"
-msgstr "đang nhảy qua kiểu ký hiệu bất ngờ %s trong việc định vị lại trong phần .rela%s\n"
+#: readelf.c:3333
+msgid "Unable to find program interpreter name\n"
+msgstr "Không tìm thấy tên bộ giải dịch chương trình\n"
 
-#: readelf.c:7565
+#: readelf.c:3340
 #, c-format
-msgid "Unknown TAG value: %lx"
-msgstr "Giá trị TAG (thẻ) không rõ : %lx"
+msgid ""
+"\n"
+"      [Requesting program interpreter: %s]"
+msgstr ""
+"\n"
+"      [Đang yêu cầu bộ giải dịch chương trình: %s]"
 
-#: readelf.c:7601
+#: readelf.c:3352
 #, c-format
-msgid "Unknown FORM value: %lx"
-msgstr "Giá trị FORM (dạng) không rõ : %lx"
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr ""
+"\n"
+" Ánh xạ Phần đến Phân đoạn:\n"
 
-#: readelf.c:7610
+#: readelf.c:3353
 #, c-format
-msgid " %lu byte block: "
-msgstr " Khối %lu byte: "
+msgid "  Segment Sections...\n"
+msgstr "  Các phần phân đoạn...\n"
 
-#: readelf.c:7944
-#, c-format
-msgid "(User defined location op)"
-msgstr "(Thao tác định vị do người dùng định nghĩa)"
+#: readelf.c:3402
+msgid "Cannot interpret virtual addresses without program headers.\n"
+msgstr "Không thể giải dịch địa chỉ ảo khi không có dòng đầu chương trình.\n"
 
-#: readelf.c:7946
+#: readelf.c:3418
 #, c-format
-msgid "(Unknown location op)"
-msgstr "(Thao tác định vị không rõ)"
-
-#: readelf.c:8015
-msgid "Internal error: DWARF version is not 2 or 3.\n"
-msgstr "Lỗi nội bộ: phiên bản DWARF không phải là 2 hay 3.\n"
-
-#: readelf.c:8113
-msgid "DW_FORM_data8 is unsupported when sizeof (unsigned long) != 8\n"
-msgstr "Không hỗ trợ « DW_FORM_data8 » khi « sizeof (unsigned long) != 8 » [kích cỡ của (dài không ký)]\n"
+msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
+msgstr "Địa chỉ ảo 0x%lx không được định vị trong phân đoạn kiểu « PT_LOAD » nào.\n"
 
-#: readelf.c:8162
-#, c-format
-msgid " (indirect string, offset: 0x%lx): %s"
-msgstr " (chuỗi gián tiếp, hiệu số: 0x%lx): %s"
+#: readelf.c:3432 readelf.c:3473
+msgid "section headers"
+msgstr "dòng đầu phần"
 
-#: readelf.c:8171
-#, c-format
-msgid "Unrecognized form: %d\n"
-msgstr "Không nhận diện dạng: %d\n"
+#: readelf.c:3517 readelf.c:3580
+msgid "symbols"
+msgstr "ký hiệu"
 
-#: readelf.c:8256
-#, c-format
-msgid "(not inlined)"
-msgstr "(không đặt trực tiếp)"
+#: readelf.c:3527 readelf.c:3590
+msgid "symtab shndx"
+msgstr "symtab shndx"
 
-#: readelf.c:8259
+#: readelf.c:3817 readelf.c:4192
 #, c-format
-msgid "(inlined)"
-msgstr "(đặt trực tiếp)"
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr ""
+"\n"
+"Không có phần nào trong tập tin này.\n"
 
-#: readelf.c:8262
+#: readelf.c:3823
 #, c-format
-msgid "(declared as inline but ignored)"
-msgstr "(khai báo là trực tiếp mà bị bỏ qua)"
+msgid "There are %d section headers, starting at offset 0x%lx:\n"
+msgstr "Có %d dòng đầu phần, bắt đầu tại hiệu số 0x%lx:\n"
 
-#: readelf.c:8265
-#, c-format
-msgid "(declared as inline and inlined)"
-msgstr "(khai báo là trực tiếp và đặt trực tiếp)"
+#: readelf.c:3842 readelf.c:4309 readelf.c:4544 readelf.c:4852 readelf.c:5267
+#: readelf.c:6906
+msgid "string table"
+msgstr "bảng chuỗi"
 
-#: readelf.c:8268
+#: readelf.c:3881
 #, c-format
-msgid "  (Unknown inline attribute value: %lx)"
-msgstr "  (Không biết giá trị thuộc tính trực tiếp: %lx)"
+msgid "Section %d has invalid sh_entsize %lx (expected %lx)\n"
+msgstr "Phần %d có kích cỡ sh_entsize không hợp lệ %lx (ngờ %lx)\n"
 
-#: readelf.c:8413 readelf.c:9537
-#, c-format
-msgid " [without DW_AT_frame_base]"
-msgstr " [không có DW_AT_frame_base (cơ bản khung)]"
+#: readelf.c:3901
+msgid "File contains multiple dynamic symbol tables\n"
+msgstr "Tập tin chứa nhiều bảng ký hiệu động\n"
 
-#: readelf.c:8416
-#, c-format
-msgid "(location list)"
-msgstr "(danh sách địa điểm)"
+# Type: text
+# Description
+#: readelf.c:3914
+msgid "File contains multiple dynamic string tables\n"
+msgstr "Tập tin chứa nhiều bảng chuỗi động\n"
 
-#: readelf.c:8534
-#, c-format
-msgid "Unknown AT value: %lx"
-msgstr "Không biết giá trị AT: %lx"
+#: readelf.c:3919
+msgid "dynamic strings"
+msgstr "chuỗi động"
 
-#: readelf.c:8602
-msgid "No comp units in .debug_info section ?"
-msgstr "Không có đơn vị biên dịch trong phần « .debug_info » (thông tin gỡ lỗi) ?"
+#: readelf.c:3926
+msgid "File contains multiple symtab shndx tables\n"
+msgstr "Tập tin chứa nhiều bảng symtab shndx\n"
 
-#: readelf.c:8611
+#: readelf.c:3973
 #, c-format
-msgid "Not enough memory for a debug info array of %u entries"
-msgstr "Không đủ bộ nhớ cho mảng thông tin gỡ lỗi có mục nhập %u"
+msgid ""
+"\n"
+"Section Headers:\n"
+msgstr ""
+"\n"
+"Dòng đầu phần:\n"
 
-#: readelf.c:8619 readelf.c:9630
+#: readelf.c:3975
 #, c-format
 msgid ""
-"The section %s contains:\n"
 "\n"
+"Section Header:\n"
 msgstr ""
-"Phần %s chứa:\n"
 "\n"
+"Dòng đầu phần:\n"
 
-#: readelf.c:8693
+#: readelf.c:3981 readelf.c:3992 readelf.c:4003
 #, c-format
-msgid "  Compilation Unit @ %lx:\n"
-msgstr "  Đơn vị biên dịch @ %lx:\n"
+msgid "  [Nr] Name\n"
+msgstr "  [Nr] Tên\n"
 
-#: readelf.c:8694
+#: readelf.c:3982
 #, c-format
-msgid "   Length:        %ld\n"
-msgstr "   Dài:        %ld\n"
+msgid "       Type            Addr     Off    Size   ES   Lk Inf Al\n"
+msgstr "       Kiểu            ĐChỉ     Hiệu    Cỡ   ES   Lk Tin Cl\n"
 
-#: readelf.c:8695
+#: readelf.c:3986
 #, c-format
-msgid "   Version:       %d\n"
-msgstr "   Phiên bản:       %d\n"
+msgid "  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al\n"
+msgstr "  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al\n"
 
-#: readelf.c:8696
+#: readelf.c:3993
 #, c-format
-msgid "   Abbrev Offset: %ld\n"
-msgstr "   Hiệu số tắt: %ld\n"
+msgid "       Type            Address          Off    Size   ES   Lk Inf Al\n"
+msgstr "       Kiểu            Địa chỉ          Hiệu    Cỡ   ES   Lk Tin Cl\n"
 
-#: readelf.c:8697
+#: readelf.c:3997
 #, c-format
-msgid "   Pointer Size:  %d\n"
-msgstr "   Cỡ con trỏ :  %d\n"
-
-#: readelf.c:8702
-msgid "Only version 2 and 3 DWARF debug information is currently supported.\n"
-msgstr "Hỗ trợ chỉ thông tin gỡ lỗi phiên bản DWARF 2 và 3 thôi.\n"
-
-#: readelf.c:8717
-msgid "Unable to locate .debug_abbrev section!\n"
-msgstr "Không thể định vị phần « .debug_abbrev » (gỡ lỗi viết tắt)\n"
+msgid "  [Nr] Name              Type            Address          Off    Size   ES Flg Lk Inf Al\n"
+msgstr "  [Nr] Name              Type            Address          Off    Size   ES Flg Lk Inf Al\n"
 
-#: readelf.c:8722
-msgid "debug_abbrev section data"
-msgstr "dữ liệu phần « .debug_abbrev » (gỡ lỗi viết tắt)"
+#: readelf.c:4004
+#, c-format
+msgid "       Type              Address          Offset            Link\n"
+msgstr "       Kiểu              Địa chỉ          Hiệu số            Liên kết\n"
 
-#: readelf.c:8759
+#: readelf.c:4005
 #, c-format
-msgid "Unable to locate entry %lu in the abbreviation table\n"
-msgstr "Không thể định vị mục nhâp %lu trong bảng viết tắt\n"
+msgid "       Size              EntSize          Info              Align\n"
+msgstr "       Cỡ              CỡEnt          TTin              Canh lề\n"
 
-#: readelf.c:8765
+#: readelf.c:4009
 #, c-format
-msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n"
-msgstr " <%d><%lx>: Số viết tắt: %lu (%s)\n"
+msgid "  [Nr] Name              Type             Address           Offset\n"
+msgstr "  [Nr] Name              Type             Address           Offset\n"
 
-#: readelf.c:8838
+#: readelf.c:4010
 #, c-format
-msgid "%s section needs a populated .debug_info section\n"
-msgstr "Phần %s cần phần « .debug_info » (thông tin gỡ lỗi) có dữ liệu\n"
+msgid "       Size              EntSize          Flags  Link  Info  Align\n"
+msgstr "       Size              EntSize          Flags  Link  Info  Align\n"
 
-#: readelf.c:8845
+#: readelf.c:4015
 #, c-format
-msgid "%s section has more comp units than .debug_info section\n"
-msgstr "Phần %s có nhiều đơn vị biên dịch hơn phần « .debug_info » (thông tin gỡ lỗi)\n"
+msgid "       Flags\n"
+msgstr "       Cờ\n"
 
-#: readelf.c:8847
+#: readelf.c:4150
 #, c-format
 msgid ""
-"assuming that the pointer size is %d, from the last comp unit in .debug_info\n"
-"\n"
+"Key to Flags:\n"
+"  W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+"  I (info), L (link order), G (group), x (unknown)\n"
+"  O (extra OS processing required) o (OS specific), p (processor specific)\n"
 msgstr ""
-"giả sử kích cỡ con trỏ là %d, từ đơn vị biên dịch cuối cùng trong « .debug_info » (thông tin gỡ lỗi)\n"
-"\n"
+"Cờ ey \tW\tghi\n"
+" \tA\tcấp phát\n"
+"\tX\tthực hiện\n"
+"\tM\ttrộn\n"
+"\tS\tcác chuỗi\n"
+"\tI\tthông tin\n"
+"\tL\tthứ tự liên kết\n"
+"\tG\tnhóm\n"
+"\tO\tcần thiết xử lý hệ điều hành thêm\n"
+"\to \tđặc trưng cho hệ điều hành\n"
+"\ts\tđặc trưng cho bộ xử lý\n"
 
-#: readelf.c:8891
-msgid "extracting information from .debug_info section"
-msgstr "đang trích thông tin ra phần « .debug_info » (thông tin gỡ lỗi)"
+#: readelf.c:4168
+#, c-format
+msgid "[<unknown>: 0x%x]"
+msgstr "[<không rõ>: 0x%x]"
+
+#: readelf.c:4199
+msgid "Section headers are not available!\n"
+msgstr "Dòng đầu phần không sẵn sàng.\n"
 
-#: readelf.c:8909
+#: readelf.c:4223
 #, c-format
 msgid ""
 "\n"
-"Dump of debug contents of section %s:\n"
-"\n"
+"There are no section groups in this file.\n"
 msgstr ""
 "\n"
-"Việc đổ nội dung gỡ lỗi của phần %s:\n"
+"Không có nhóm phần nào trong tập tin này.\n"
 
-#: readelf.c:8948
-msgid "The line info appears to be corrupt - the section is too small\n"
-msgstr "Hình như dòng bị hỏng — phần quá nhỏ\n"
+#: readelf.c:4259
+#, c-format
+msgid "Bad sh_link in group section `%s'\n"
+msgstr "Có liên kết « sh_link » sai trong phần nhóm « %s »\n"
 
-#: readelf.c:8957
-msgid "Only DWARF version 2 and 3 line info is currently supported.\n"
-msgstr "Hỗ trợ hiện thời chỉ thông tin dòng DWARF phiên bản 2 và 3.\n"
+#: readelf.c:4278
+#, c-format
+msgid "Bad sh_info in group section `%s'\n"
+msgstr "Có thông tin « sh_info » sai trong phần nhóm « %s »\n"
+
+#: readelf.c:4317 readelf.c:7243
+msgid "section data"
+msgstr "dữ liệu phần"
 
-#: readelf.c:8984
+#: readelf.c:4329
 #, c-format
-msgid "  Length:                      %ld\n"
-msgstr "  Dài:                      %ld\n"
+msgid "   [Index]    Name\n"
+msgstr "   [Chỉ mục]    Tên\n"
 
-#: readelf.c:8985
+#: readelf.c:4343
 #, c-format
-msgid "  DWARF Version:               %d\n"
-msgstr "  Phiên bản DWARF:               %d\n"
+msgid "section [%5u] in group section [%5u] > maximum section [%5u]\n"
+msgstr "phần [%5u] trong phần nhóm [%5u]>phần tối đa [%5u]\n"
 
-#: readelf.c:8986
+#: readelf.c:4349
 #, c-format
-msgid "  Prologue Length:             %d\n"
-msgstr "  Dài đoạn mở đầu :             %d\n"
+msgid "invalid section [%5u] in group section [%5u]\n"
+msgstr "phần không hợp lệ [%5u] trong phần nhóm [%5u]\n"
 
-#: readelf.c:8987
+#: readelf.c:4359
 #, c-format
-msgid "  Minimum Instruction Length:  %d\n"
-msgstr "  Dài câu lệnh tối thiểu :  %d\n"
+msgid "section [%5u] in group section [%5u] already in group section [%5u]\n"
+msgstr "phần [%5u] trong phần nhóm [%5u] đã có trong phần nhóm [%5u]\n"
 
-#: readelf.c:8988
+#: readelf.c:4372
 #, c-format
-msgid "  Initial value of 'is_stmt':  %d\n"
-msgstr " Giá trị đầu của « is_stmt »:  %d\n"
+msgid "section 0 in group section [%5u]\n"
+msgstr "phần 0 trong phần nhóm [%5u]\n"
 
-#: readelf.c:8989
+#: readelf.c:4468
 #, c-format
-msgid "  Line Base:                   %d\n"
-msgstr "  Cơ bản dòng:                   %d\n"
+msgid ""
+"\n"
+"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr ""
+"\n"
+"phần định vị lại « %s » tại hiệu số 0x%lx chứa %ld byte:\n"
 
-#: readelf.c:8990
+#: readelf.c:4480
 #, c-format
-msgid "  Line Range:                  %d\n"
-msgstr "  Phạm vị dòng:                  %d\n"
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr ""
+"\n"
+"Không có việc định vị lại động nào trong tập tin này.\n"
 
-#: readelf.c:8991
+#: readelf.c:4504
 #, c-format
-msgid "  Opcode Base:                 %d\n"
-msgstr "  Cơ bản mã thao tác:                 %d\n"
+msgid ""
+"\n"
+"Relocation section "
+msgstr ""
+"\n"
+"Phần định vị lại"
+
+#: readelf.c:4509 readelf.c:4928 readelf.c:4942 readelf.c:5282
+#, c-format
+msgid "'%s'"
+msgstr "« %s »"
 
-#: readelf.c:8992
+#: readelf.c:4511 readelf.c:4944 readelf.c:5284
 #, c-format
-msgid "  (Pointer size:               %u)\n"
-msgstr "  (cỡ con trỏ :               %u)\n"
+msgid " at offset 0x%lx contains %lu entries:\n"
+msgstr " tại hiệu số 0x%lx chứa %lu mục nhập:\n"
 
-#: readelf.c:9001
+#: readelf.c:4563
 #, c-format
 msgid ""
 "\n"
-" Opcodes:\n"
+"There are no relocations in this file.\n"
 msgstr ""
 "\n"
-" Mã thao tác:\n"
+"Không có việc định vị lại nào trong tập tin này.\n"
+
+#: readelf.c:4742 readelf.c:5124
+msgid "unwind table"
+msgstr "tri ra bảng"
 
-#: readelf.c:9004
+#: readelf.c:4801 readelf.c:5214
 #, c-format
-msgid "  Opcode %d has %d args\n"
-msgstr "  Mã thao tác %d có %d đối số\n"
+msgid "Skipping unexpected relocation type %s\n"
+msgstr "Đang nhảy kiểu định vị lại bất ngờ %s\n"
 
-#: readelf.c:9010
+#: readelf.c:4860 readelf.c:5275 readelf.c:5326
 #, c-format
 msgid ""
 "\n"
-" The Directory Table is empty.\n"
+"There are no unwind sections in this file.\n"
 msgstr ""
 "\n"
-"  Bảng Thư mục rỗng\n"
+"Không có phần tri ra nào trong tập tin này.\n"
 
-#: readelf.c:9013
+#: readelf.c:4923
 #, c-format
 msgid ""
 "\n"
-" The Directory Table:\n"
+"Could not find unwind info section for "
 msgstr ""
 "\n"
-"  Bảng Thư mục:\n"
+"Không thể tìm thấy phần thông tin tri ra cho "
 
-# Variable: don't translate / Biến: đừng dịch
-#: readelf.c:9017
-#, c-format
-msgid "  %s\n"
-msgstr "  %s\n"
+#: readelf.c:4935
+msgid "unwind info"
+msgstr "thông tin tri ra"
 
-#: readelf.c:9028
+#: readelf.c:4937 readelf.c:5281
 #, c-format
 msgid ""
 "\n"
-" The File Name Table is empty.\n"
+"Unwind section "
 msgstr ""
 "\n"
-" Bảng Tên Tập tin rỗng:\n"
+"Phần tri ra "
 
-#: readelf.c:9031
+#: readelf.c:5491 readelf.c:5535
+msgid "dynamic section"
+msgstr "phần động"
+
+#: readelf.c:5612
 #, c-format
 msgid ""
 "\n"
-" The File Name Table:\n"
+"There is no dynamic section in this file.\n"
 msgstr ""
 "\n"
-"  Bảng Tên Tập tin:\n"
+"Không có phần động nào trong tập tin này.\n"
 
-# Variable: don't translate / Biến: đừng dịch
-#: readelf.c:9039
-#, c-format
-msgid "  %d\t"
-msgstr "  %d\t"
+#: readelf.c:5650
+msgid "Unable to seek to end of file!"
+msgstr "• Không thể tìm tới kết thúc tập tin. •"
 
-# Variable: do not translate/ biến: đừng dịch
-#: readelf.c:9050
-#, c-format
-msgid "%s\n"
-msgstr "%s\n"
+#: readelf.c:5663
+msgid "Unable to determine the number of symbols to load\n"
+msgstr "Không thể quyết định số ký hiệu cần tải\n"
 
-#. Now display the statements.
-#: readelf.c:9058
+#: readelf.c:5698
+msgid "Unable to seek to end of file\n"
+msgstr "Không thể tìm tới kết thúc tập tin\n"
+
+#: readelf.c:5705
+msgid "Unable to determine the length of the dynamic string table\n"
+msgstr "Không thể quyết định độ dài của bảng chuỗi động\n"
+
+#: readelf.c:5710
+msgid "dynamic string table"
+msgstr "bảng chuỗi động"
+
+#: readelf.c:5745
+msgid "symbol information"
+msgstr "thông tin ký hiệu"
+
+#: readelf.c:5770
 #, c-format
 msgid ""
 "\n"
-" Line Number Statements:\n"
+"Dynamic section at offset 0x%lx contains %u entries:\n"
 msgstr ""
 "\n"
-" Câu Số thứ tự Dòng:\n"
+"Phần động tại hiệu số 0x%lx chứa %u mục nhập:\n"
 
-#: readelf.c:9073
+#: readelf.c:5773
 #, c-format
-msgid "  Special opcode %d: advance Address by %d to 0x%lx"
-msgstr "  Mã thao tác đặc biệt %d: nâng cao Địa chỉ bước %d tới 0x%lx"
+msgid "  Tag        Type                         Name/Value\n"
+msgstr "  Thẻ        Kiểu                     Tên/Giá trị\n"
 
-#: readelf.c:9077
+#: readelf.c:5809
 #, c-format
-msgid " and Line by %d to %d\n"
-msgstr " và Dòng bước %d tới %d\n"
+msgid "Auxiliary library"
+msgstr "Thư viên phụ"
 
-#: readelf.c:9088
+#: readelf.c:5813
 #, c-format
-msgid "  Copy\n"
-msgstr "  Chép\n"
+msgid "Filter library"
+msgstr "Thư viên lọc"
 
-#: readelf.c:9095
+#: readelf.c:5817
 #, c-format
-msgid "  Advance PC by %d to %lx\n"
-msgstr "  Nâng cao PC bước %d tới %lx\n"
+msgid "Configuration file"
+msgstr "Tập tin cấu hình"
 
-#: readelf.c:9103
+#: readelf.c:5821
 #, c-format
-msgid "  Advance Line by %d to %d\n"
-msgstr "  Nâng cao dòng bước %d tới %d\n"
+msgid "Dependency audit library"
+msgstr "Thư viên kiểm tra cách phụ thuộc"
 
-#: readelf.c:9110
+#: readelf.c:5825
 #, c-format
-msgid "  Set File Name to entry %d in the File Name Table\n"
-msgstr "  Lập Tên Tập tin là mục nhập %d trong Bảng Tên Tập tin\n"
+msgid "Audit library"
+msgstr "Thư viên kiểm tra"
+
+#: readelf.c:5843 readelf.c:5871 readelf.c:5899
+#, c-format
+msgid "Flags:"
+msgstr "Cờ :"
+
+#: readelf.c:5846 readelf.c:5874 readelf.c:5901
+#, c-format
+msgid " None\n"
+msgstr " Không có\n"
+
+#: readelf.c:6022
+#, c-format
+msgid "Shared library: [%s]"
+msgstr "Thư viện dùng chung: [%s]"
+
+#: readelf.c:6025
+#, c-format
+msgid " program interpreter"
+msgstr " bộ giải dịch chương trình"
+
+#: readelf.c:6029
+#, c-format
+msgid "Library soname: [%s]"
+msgstr "soname (tên so) thư viên: [%s]"
+
+#: readelf.c:6033
+#, c-format
+msgid "Library rpath: [%s]"
+msgstr "rpath (đường dẫn r) thư viên: [%s]"
+
+#: readelf.c:6037
+#, c-format
+msgid "Library runpath: [%s]"
+msgstr "runpath (đường dẫn chạy) thư viên: [%s]"
+
+#: readelf.c:6100
+#, c-format
+msgid "Not needed object: [%s]\n"
+msgstr "Đối tượng không cần thiết: [%s]\n"
+
+#: readelf.c:6214
+#, c-format
+msgid ""
+"\n"
+"Version definition section '%s' contains %ld entries:\n"
+msgstr ""
+"\n"
+"Phần định nghĩa phiên bản « %s » chứa %ld mục nhập:\n"
 
-#: readelf.c:9118
+#: readelf.c:6217
 #, c-format
-msgid "  Set column to %d\n"
-msgstr "  Lập cột là %d\n"
+msgid "  Addr: 0x"
+msgstr "  ĐChỉ: 0x"
 
-#: readelf.c:9125
+#: readelf.c:6219 readelf.c:6426
 #, c-format
-msgid "  Set is_stmt to %d\n"
-msgstr "  Lập « is_stmt » (là câu) là %d\n"
+msgid "  Offset: %#08lx  Link: %lx (%s)\n"
+msgstr "  HIệu: %#08lx  LKết: %lx (%s)\n"
 
-#: readelf.c:9130
-#, c-format
-msgid "  Set basic block\n"
-msgstr "  Lập khối cơ bản\n"
+#: readelf.c:6228
+msgid "version definition section"
+msgstr "phần định nghĩa phiên bản"
 
-#: readelf.c:9138
+#: readelf.c:6254
 #, c-format
-msgid "  Advance PC by constant %d to 0x%lx\n"
-msgstr "  Nâng cao PC bước hằng số %d tới 0x%lx\n"
+msgid "  %#06x: Rev: %d  Flags: %s"
+msgstr "  %#06x: Bản: %d  Cờ: %s"
 
-#: readelf.c:9146
+#: readelf.c:6257
 #, c-format
-msgid "  Advance PC by fixed size amount %d to 0x%lx\n"
-msgstr "  Nâng cao PC bước kích cỡ cố định %d tới 0x%lx\n"
+msgid "  Index: %d  Cnt: %d  "
+msgstr "  Chỉ mục: %d  Đếm: %d  "
 
-#: readelf.c:9151
+#: readelf.c:6268
 #, c-format
-msgid "  Set prologue_end to true\n"
-msgstr "  Lập « prologue_end » (kết thúc đoạn mở đầu) là true (đúng)\n"
+msgid "Name: %s\n"
+msgstr "Tên: %s\n"
 
-#: readelf.c:9155
+#: readelf.c:6270
 #, c-format
-msgid "  Set epilogue_begin to true\n"
-msgstr "  Lập « epilogue_begin » (đầu phần kết) là true (đúng)\n"
+msgid "Name index: %ld\n"
+msgstr "Chỉ mục tên: %ld\n"
 
-#: readelf.c:9161
+#: readelf.c:6285
 #, c-format
-msgid "  Set ISA to %d\n"
-msgstr "  Lập ISA là %d\n"
+msgid "  %#06x: Parent %d: %s\n"
+msgstr "  %#06x: Mẹ %d: %s\n"
 
-#: readelf.c:9165
+#: readelf.c:6288
 #, c-format
-msgid "  Unknown opcode %d with operands: "
-msgstr "  Gặp opcode (mã thao tác) không rõ %d với tác tử : "
+msgid "  %#06x: Parent %d, name index: %ld\n"
+msgstr "  %#06x: Mẹ %d, chỉ mục tên: %ld\n"
 
-#: readelf.c:9193 readelf.c:9279 readelf.c:9354
+#: readelf.c:6307
 #, c-format
 msgid ""
-"Contents of the %s section:\n"
 "\n"
+"Version needs section '%s' contains %ld entries:\n"
 msgstr ""
-"Nội dung của phần %s:\n"
 "\n"
+"Phần cần thiết phiên bản « %s » chứa %ld mục nhập:\n"
 
-#: readelf.c:9233
-msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
-msgstr "Hỗ trợ hiện thời chỉ pubnames (tên công) DWARF phiên bản 2 và 3 thôi\n"
-
-#: readelf.c:9240
+#: readelf.c:6310
 #, c-format
-msgid "  Length:                              %ld\n"
-msgstr "  Length:                              %ld\n"
+msgid " Addr: 0x"
+msgstr " ĐChỉ: 0x"
 
-#: readelf.c:9242
+#: readelf.c:6312
 #, c-format
-msgid "  Version:                             %d\n"
-msgstr "  Version:                             %d\n"
+msgid "  Offset: %#08lx  Link to section: %ld (%s)\n"
+msgstr "  HIệu: %#08lx  Liên kết đến phần: %ld (%s)\n"
 
-#: readelf.c:9244
-#, c-format
-msgid "  Offset into .debug_info section:     %ld\n"
-msgstr "  Hiệu số vào phầnO« ffset into .» (thông tin gỡ lỗi)nfo section:     %ld\n"
+#: readelf.c:6321
+msgid "version need section"
+msgstr "phần cần phiên bản"
 
-#: readelf.c:9246
+#: readelf.c:6343
 #, c-format
-msgid "  Size of area in .debug_info section: %ld\n"
-msgstr "  Kích cỡ của vùng trong phần « .debug_info » (thông tin gỡ lỗi): %ld\n"
+msgid "  %#06x: Version: %d"
+msgstr "  %#06x: PhBản: %d"
 
-#: readelf.c:9249
+#: readelf.c:6346
 #, c-format
-msgid ""
-"\n"
-"    Offset\tName\n"
-msgstr ""
-"\n"
-"    Hiệu\tTên\n"
+msgid "  File: %s"
+msgstr "  Tập tin: %s"
 
-#: readelf.c:9300
+#: readelf.c:6348
 #, c-format
-msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
-msgstr " DW_MACINFO_start_file (bắt đầu tập tin) — số_dòng: %d số_tập_tin: %d\n"
+msgid "  File: %lx"
+msgstr "  Tập tin: %lx"
 
-#: readelf.c:9306
+#: readelf.c:6350
 #, c-format
-msgid " DW_MACINFO_end_file\n"
-msgstr " DW_MACINFO_end_file (kết thúc tập tin)\n"
+msgid "  Cnt: %d\n"
+msgstr "  Đếm: %d\n"
 
-#: readelf.c:9314
+#: readelf.c:6368
 #, c-format
-msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
-msgstr " DW_MACINFO_define (định nghĩa) — số_dòng : %d bộ_lệnh : %s\n"
+msgid "  %#06x:   Name: %s"
+msgstr "  %#06x:   Tên: %s"
 
-#: readelf.c:9323
+#: readelf.c:6371
 #, c-format
-msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
-msgstr " DW_MACINFO_undef (chưa định nghĩa) — số_dòng : %d bộ_lệnh : %s\n"
+msgid "  %#06x:   Name index: %lx"
+msgstr "  %#06x:   Chỉ mục tên: %lx"
 
-#: readelf.c:9335
+#: readelf.c:6374
 #, c-format
-msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
-msgstr " DW_MACINFO_vendor_ext (phần mở rộng nhà bán) — hằng số : %d chuối : %s\n"
+msgid "  Flags: %s  Version: %d\n"
+msgstr "  Cờ: %s  Phiên bản: %d\n"
 
-#: readelf.c:9363
+#: readelf.c:6417
+msgid "version string table"
+msgstr "bảng chuỗi phiên bản"
+
+#: readelf.c:6421
 #, c-format
-msgid "  Number TAG\n"
-msgstr "  Số THẺ\n"
+msgid ""
+"\n"
+"Version symbols section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"Phần ký hiệu phiên bản « %s » chứa %d mục nhập:\n"
 
-# Variable: don't translate / Biến: đừng dịch
-#: readelf.c:9369
+#: readelf.c:6424
 #, c-format
-msgid "   %ld      %s    [%s]\n"
-msgstr "   %ld      %s    [%s]\n"
+msgid " Addr: "
+msgstr " ĐChỉ: "
 
-#: readelf.c:9372
-msgid "has children"
-msgstr "có điều con"
+#: readelf.c:6434
+msgid "version symbol data"
+msgstr "dữ liệu ký hiệu phiên bản"
 
-#: readelf.c:9372
-msgid "no children"
-msgstr "không có con"
+#: readelf.c:6461
+msgid "   0 (*local*)    "
+msgstr "   0 (*local*)    "
 
-# Variable: don't translate / Biến: đừng dịch
-#: readelf.c:9375
-#, c-format
-msgid "    %-18s %s\n"
-msgstr "    %-18s %s\n"
+#: readelf.c:6465
+msgid "   1 (*global*)   "
+msgstr "   1 (*toàn cụcglobal*)   "
+
+#: readelf.c:6503 readelf.c:6969
+msgid "version need"
+msgstr "phiên bản cần"
+
+#: readelf.c:6513
+msgid "version need aux (2)"
+msgstr "phiên bản cần phụ (2)"
 
-#: readelf.c:9410
+#: readelf.c:6555 readelf.c:7034
+msgid "version def"
+msgstr "phbản đ.nghĩa"
+
+#: readelf.c:6575 readelf.c:7049
+msgid "version def aux"
+msgstr "phbản đ.nghĩa phụ"
+
+#: readelf.c:6606
 #, c-format
 msgid ""
 "\n"
-"The .debug_loc section is empty.\n"
+"No version information found in this file.\n"
 msgstr ""
 "\n"
-"Phần « .debug_loc » (gỡ lỗi định vị) rỗng:\n"
+"Không tìm thấy thông tin phiên bản trong tập tin này.\n"
 
-#. FIXME: Should we handle this case?
-#: readelf.c:9455
-msgid "Location lists in .debug_info section aren't in ascending order!\n"
-msgstr "• Các danh sách địa điểm trong phần « .debug_info » (thông tin gỡ lỗi) không phải theo thứ tự dần. •\n"
+#: readelf.c:6740
+msgid "Unable to read in dynamic data\n"
+msgstr "Không thể đọc vào dữ liệu động\n"
 
-#: readelf.c:9458
-msgid "No location lists in .debug_info section!\n"
-msgstr "• Không có danh sách địa điểm trong phần « .debug_info » (thông tin gỡ lỗi). •\n"
+#: readelf.c:6793
+msgid "Unable to seek to start of dynamic information"
+msgstr "Không thể tìm tới đầu thông tin động"
 
-#: readelf.c:9461
-#, c-format
-msgid "Location lists in .debug_loc section start at 0x%lx\n"
-msgstr "Danh sách địa điểm trong phần « .debug_info » (thông tin gỡ lỗi) bắt đầu tại 0x%lx\n"
+#: readelf.c:6799
+msgid "Failed to read in number of buckets\n"
+msgstr "Việc đọc vào số xô bị lỗi\n"
 
-#: readelf.c:9464
+#: readelf.c:6805
+msgid "Failed to read in number of chains\n"
+msgstr "Việc đọc vào số dây bị lỗi\n"
+
+#: readelf.c:6825
 #, c-format
 msgid ""
-"Contents of the .debug_loc section:\n"
 "\n"
+"Symbol table for image:\n"
 msgstr ""
-"Nội dung của phần « .debug_info » (thông tin gỡ lỗi):\n"
 "\n"
+"Bảng ký hiệu cho ảnh:\n"
 
-#: readelf.c:9465
+#: readelf.c:6827
 #, c-format
-msgid "    Offset   Begin    End      Expression\n"
-msgstr "    HIệu   Đầu    Cuối      Biểu thức\n"
+msgid "  Num Buc:    Value  Size   Type   Bind Vis      Ndx Name\n"
+msgstr "  Số xô :    Giá trị  Cỡ   Kiểu   Trộn Hiện      Ndx Tên\n"
 
-#: readelf.c:9495
+#: readelf.c:6829
 #, c-format
-msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
-msgstr "Có một lỗ [0x%lx - 0x%lx] trong phần « .debug_info » (thông tin gỡ lỗi).\n"
+msgid "  Num Buc:    Value          Size   Type   Bind Vis      Ndx Name\n"
+msgstr "  Số xô :    Giá trị         Cỡ   Kiểu   Trộn Hiện     Ndx Tên\n"
 
-#: readelf.c:9498
+#: readelf.c:6882
 #, c-format
-msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
-msgstr "Có một nơi chồng lấp [0x%lx - 0x%lx] trong phần « .debug_info » (thông tin gỡ lỗi).\n"
+msgid ""
+"\n"
+"Symbol table '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Bảng ký hiệu « %s » chứa %lu mục nhập:\n"
 
-#: readelf.c:9512 readelf.c:9837
+#: readelf.c:6886
 #, c-format
-msgid "    %8.8lx <End of list>\n"
-msgstr "    %8.8lx <Kết thúc danh sách>\n"
+msgid "   Num:    Value  Size Type    Bind   Vis      Ndx Name\n"
+msgstr "   Số :    Giá trị  Cỡ Kiểu    Trộn   Hiện    Ndx Tên\n"
 
-#: readelf.c:9540 readelf.c:9854
-msgid " (start == end)"
-msgstr " (start == end)"
+#: readelf.c:6888
+#, c-format
+msgid "   Num:    Value          Size Type    Bind   Vis      Ndx Name\n"
+msgstr "   Số :    Giá trị        Cỡ Kiểu    Trộn   Hiện    Ndx Tên\n"
 
-#: readelf.c:9542 readelf.c:9856
-msgid " (start > end)"
-msgstr " (start > end)"
+#: readelf.c:6939
+msgid "version data"
+msgstr "dữ liệu phiên bản"
+
+#: readelf.c:6982
+msgid "version need aux (3)"
+msgstr "phiên bản cần phụ (3)"
+
+#: readelf.c:7009
+msgid "bad dynamic symbol"
+msgstr "ký hiệu động sai"
 
-#: readelf.c:9566
+#: readelf.c:7073
 #, c-format
 msgid ""
 "\n"
-"The .debug_str section is empty.\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
 msgstr ""
 "\n"
-"Phần « .debug_str » (chuỗi gỡ lỗi) rỗng.\n"
+"Không có thông tin ký hiệu động để hiển thị ký hiệu.\n"
 
-#: readelf.c:9570
+#: readelf.c:7085
 #, c-format
 msgid ""
-"Contents of the .debug_str section:\n"
 "\n"
+"Histogram for bucket list length (total of %lu buckets):\n"
 msgstr ""
-"Nội dung của phần « .debug_str » (chuỗi gỡ lỗi):\n"
 "\n"
+"Biểu đồ tần xuất cho độ dài danh sách xô (tổng số %lu xô):\n"
 
-#: readelf.c:9675
-msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
-msgstr "Hỗ trợ hiện thời chỉ arange (phạm vị a) DWARF phiên bản 2 và 3 thôi.\n"
-
-#: readelf.c:9679
-#, c-format
-msgid "  Length:                   %ld\n"
-msgstr "  Dài:                   %ld\n"
-
-#: readelf.c:9680
+#: readelf.c:7087
 #, c-format
-msgid "  Version:                  %d\n"
-msgstr "  Phiên bản:                  %d\n"
+msgid " Length  Number     %% of total  Coverage\n"
+msgstr " Dài       Số           %% tổng phạm vị\n"
 
-#: readelf.c:9681
-#, c-format
-msgid "  Offset into .debug_info:  %lx\n"
-msgstr "  Hiệu số vào « .debug_info » (thông tin gỡ lỗi):  %lx\n"
+#: readelf.c:7092 readelf.c:7108 readelf.c:8031 readelf.c:8223
+msgid "Out of memory"
+msgstr "Hết bộ nhớ"
 
-#: readelf.c:9682
+#: readelf.c:7157
 #, c-format
-msgid "  Pointer Size:             %d\n"
-msgstr "  Kích cỡ con trỏ :             %d\n"
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr ""
+"\n"
+"Phân đoạn thông tin động tại hiệu số 0x%lx chứa %d mục nhập:\n"
 
-#: readelf.c:9683
+#: readelf.c:7160
 #, c-format
-msgid "  Segment Size:             %d\n"
-msgstr "  Kích cỡ phân đoạn:             %d\n"
+msgid " Num: Name                           BoundTo     Flags\n"
+msgstr " Số : Tên                           ĐóngVới     Cờ\n"
 
-#: readelf.c:9685
+#: readelf.c:7212
 #, c-format
 msgid ""
 "\n"
-"    Address  Length\n"
+"Assembly dump of section %s\n"
 msgstr ""
 "\n"
-"    Độ dài địa chỉ\n"
+"Việc đổ thanh ghi của phần %s\n"
 
-#: readelf.c:9741
+#: readelf.c:7233
 #, c-format
 msgid ""
 "\n"
-"The .debug_ranges section is empty.\n"
+"Section '%s' has no data to dump.\n"
 msgstr ""
 "\n"
-"Phần « .debug_ranges » (các phạm vị gỡ lỗi) rỗng.\n"
-
-#. FIXME: Should we handle this case?
-#: readelf.c:9786
-msgid "Range lists in .debug_info section aren't in ascending order!\n"
-msgstr "• Các danh sách phạm vị trong phần « .debug_info » (thông tin gỡ lỗi) không phải theo thứ tự dần. •\n"
-
-#: readelf.c:9789
-msgid "No range lists in .debug_info section!\n"
-msgstr "• Không có danh sách phạm vị trong phần « .debug_info » (thông tin gỡ lỗi). •\n"
-
-#: readelf.c:9792
-#, c-format
-msgid "Range lists in .debug_ranges section start at 0x%lx\n"
-msgstr "Danh sách phạm vị trong phần « .debug_ranges » (các phạm vị gỡ lỗi) bắt đầu tại 0x%lx\n"
+"Phần « %s » không có dữ liệu cần đổ.\n"
 
-#: readelf.c:9795
+#: readelf.c:7238
 #, c-format
 msgid ""
-"Contents of the .debug_ranges section:\n"
 "\n"
+"Hex dump of section '%s':\n"
 msgstr ""
-"Nội dung của phần « .debug_ranges » (các phạm vị gỡ lỗi):\n"
 "\n"
+"Việc đổ thập lục của phần « %s »:\n"
 
-#: readelf.c:9796
-#, c-format
-msgid "    Offset   Begin    End\n"
-msgstr "    HIệu   Đầu    Cuối\n"
-
-#: readelf.c:9820
-#, c-format
-msgid "There is a hole [0x%lx - 0x%lx] in .debug_ranges section.\n"
-msgstr "Có một lỗ [0x%lx - 0x%lx] trong phần « .debug_ranges » (các phạm vị gỡ lỗi).\n"
-
-#: readelf.c:9823
+#: readelf.c:7359
 #, c-format
-msgid "There is an overlap [0x%lx - 0x%lx] in .debug_ranges section.\n"
-msgstr "Có một chồng lấp [0x%lx - 0x%lx] trong phần « .debug_ranges » (các phạm vị gỡ lỗi).\n"
+msgid "skipping invalid relocation offset 0x%lx in section %s\n"
+msgstr "đang bỏ qua hiệu số định vị lại không hợp lệ 0x%lx trong phần %s\n"
 
-#: readelf.c:10017
+#: readelf.c:7376
 #, c-format
-msgid "The section %s contains:\n"
-msgstr "Phần %s chứa:\n"
+msgid "skipping unexpected symbol type %s in relocation in section .rela%s\n"
+msgstr "đang bỏ qua kiểu ký hiệu bất ngờ %s trong việc định vị lại trong phần .rela%s\n"
 
-#: readelf.c:10663
+#: readelf.c:7402
 #, c-format
-msgid "unsupported or unknown DW_CFA_%d\n"
-msgstr "« DW_CFA_%d » không được hỗ trợ, hay không rõ\n"
+msgid "skipping unexpected symbol type %s in relocation in section .rela.%s\n"
+msgstr "đang nhảy qua kiểu ký hiệu bất ngờ %s trong việc định vị lại trong phần .rela%s\n"
 
-#: readelf.c:10688
+#: readelf.c:7435
 #, c-format
-msgid "Displaying the debug contents of section %s is not yet supported.\n"
-msgstr "Chưa hỗ trợ khả năng hiển thị nội dung phần %s.\n"
+msgid "%s section data"
+msgstr "dữ liệu phần %s"
 
-#: readelf.c:10732
+#: readelf.c:7472
 #, c-format
 msgid ""
 "\n"
@@ -4609,29 +4688,44 @@ msgstr ""
 "\n"
 "Phần « %s » không có dữ liệu gỡ lỗi nào.\n"
 
-#: readelf.c:10746
-msgid "debug section data"
-msgstr "dữ liệu phần gỡ lỗi"
-
-#: readelf.c:10765
+#: readelf.c:7498
 #, c-format
 msgid "Unrecognized debug section: %s\n"
 msgstr "Không nhận diện phần gỡ lỗi: %s\n"
 
-#: readelf.c:10800
+#: readelf.c:7533
 #, c-format
 msgid "Section %d was not dumped because it does not exist!\n"
 msgstr "• Phần %d không được đổ vì nó không tồn tại. •\n"
 
-#: readelf.c:10872 readelf.c:11236
+#: readelf.c:7791
+msgid "attributes"
+msgstr "thuộc tính"
+
+#: readelf.c:7809
+#, c-format
+msgid "ERROR: Bad section length (%d > %d)\n"
+msgstr "LỖI : độ dài phần sai (%d > %d)\n"
+
+#: readelf.c:7830
+#, c-format
+msgid "ERROR: Bad subsection length (%d > %d)\n"
+msgstr "LỖI : độ dài phần phụ sai (%d > %d)\n"
+
+#: readelf.c:7880
+#, c-format
+msgid "Unknown format '%c'\n"
+msgstr "Không biết dạng thức %c\n"
+
+#: readelf.c:7936 readelf.c:8304
 msgid "liblist"
 msgstr "danh sách thư viên"
 
-#: readelf.c:10961
+#: readelf.c:8025
 msgid "options"
 msgstr "tùy chọn"
 
-#: readelf.c:10991
+#: readelf.c:8055
 #, c-format
 msgid ""
 "\n"
@@ -4640,15 +4734,15 @@ msgstr ""
 "\n"
 "Phần « %s » chứa %d mục nhập:\n"
 
-#: readelf.c:11152
+#: readelf.c:8216
 msgid "conflict list found without a dynamic symbol table"
 msgstr "tìm danh sách xung đột không có bảng ký hiệu động"
 
-#: readelf.c:11168 readelf.c:11182
+#: readelf.c:8232 readelf.c:8246
 msgid "conflict"
 msgstr "xung đột"
 
-#: readelf.c:11192
+#: readelf.c:8256
 #, c-format
 msgid ""
 "\n"
@@ -4657,15 +4751,15 @@ msgstr ""
 "\n"
 "Phần « .conflict » (xung đột) chứa %lu mục nhập:\n"
 
-#: readelf.c:11194
+#: readelf.c:8258
 msgid "  Num:    Index       Value  Name"
 msgstr "  Số :    CMục     Giá trị    Tên"
 
-#: readelf.c:11243
+#: readelf.c:8311
 msgid "liblist string table"
 msgstr "bảng chuỗi danh sách thư viên"
 
-#: readelf.c:11252
+#: readelf.c:8321
 #, c-format
 msgid ""
 "\n"
@@ -4674,91 +4768,91 @@ msgstr ""
 "\n"
 "Phần danh sách thư viên « %s » chứa %lu mục nhập:\n"
 
-#: readelf.c:11303
+#: readelf.c:8374
 msgid "NT_AUXV (auxiliary vector)"
 msgstr "NT_AUXV (véc-tơ phụ)"
 
-#: readelf.c:11305
+#: readelf.c:8376
 msgid "NT_PRSTATUS (prstatus structure)"
 msgstr "NT_PRSTATUS (cấu trúc trạng thái prstatus)"
 
-#: readelf.c:11307
+#: readelf.c:8378
 msgid "NT_FPREGSET (floating point registers)"
 msgstr "NT_FPREGSET (thanh ghi điểm phù động)"
 
-#: readelf.c:11309
+#: readelf.c:8380
 msgid "NT_PRPSINFO (prpsinfo structure)"
 msgstr "NT_PRPSINFO (cấu trúc thông tin prpsinfo)"
 
-#: readelf.c:11311
+#: readelf.c:8382
 msgid "NT_TASKSTRUCT (task structure)"
 msgstr "NT_TASKSTRUCT (cấu trúc tác vụ)"
 
-#: readelf.c:11313
+#: readelf.c:8384
 msgid "NT_PRXFPREG (user_xfpregs structure)"
 msgstr "NT_PRXFPREG (cấu trúc « user_xfpregs »)"
 
-#: readelf.c:11315
+#: readelf.c:8386
 msgid "NT_PSTATUS (pstatus structure)"
 msgstr "NT_PSTATUS (cấu trúc trạng thái pstatus)"
 
-#: readelf.c:11317
+#: readelf.c:8388
 msgid "NT_FPREGS (floating point registers)"
 msgstr "NT_FPREGS (thanh ghi điểm phù động)"
 
-#: readelf.c:11319
+#: readelf.c:8390
 msgid "NT_PSINFO (psinfo structure)"
 msgstr "NT_PSINFO (cấu trúc thông tin psinfo)"
 
-#: readelf.c:11321
+#: readelf.c:8392
 msgid "NT_LWPSTATUS (lwpstatus_t structure)"
 msgstr "NT_LWPSTATUS (cấu trúc trạng thái « lwpstatus_t »)"
 
-#: readelf.c:11323
+#: readelf.c:8394
 msgid "NT_LWPSINFO (lwpsinfo_t structure)"
 msgstr "NT_LWPSINFO (cấu trúc thông tin « lwpsinfo_t »)"
 
-#: readelf.c:11325
+#: readelf.c:8396
 msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
 msgstr "NT_WIN32PSTATUS (cấu trúc trạng thái « win32_pstatus »)"
 
-#: readelf.c:11333
+#: readelf.c:8404
 msgid "NT_VERSION (version)"
 msgstr "NT_VERSION (phiên bản)"
 
-#: readelf.c:11335
+#: readelf.c:8406
 msgid "NT_ARCH (architecture)"
 msgstr "NT_ARCH (architecture)"
 
-#: readelf.c:11340 readelf.c:11362
+#: readelf.c:8411 readelf.c:8433
 #, c-format
 msgid "Unknown note type: (0x%08x)"
 msgstr "Không biết kiểu ghi chú : (0x%08x)"
 
 #. NetBSD core "procinfo" structure.
-#: readelf.c:11352
+#: readelf.c:8423
 msgid "NetBSD procinfo structure"
 msgstr "Cấu trúc thông tin tiến trình procinfo NetBSD"
 
-#: readelf.c:11379 readelf.c:11393
+#: readelf.c:8450 readelf.c:8464
 msgid "PT_GETREGS (reg structure)"
 msgstr "PT_GETREGS (cấu trúc thanh ghi)"
 
-#: readelf.c:11381 readelf.c:11395
+#: readelf.c:8452 readelf.c:8466
 msgid "PT_GETFPREGS (fpreg structure)"
 msgstr "PT_GETFPREGS (cấu trúc thanh ghi « fpreg »)"
 
 # Name: don't translate / Tên: đừng dịch
-#: readelf.c:11401
+#: readelf.c:8472
 #, c-format
 msgid "PT_FIRSTMACH+%d"
 msgstr "PT_FIRSTMACH+%d"
 
-#: readelf.c:11447
+#: readelf.c:8518
 msgid "notes"
 msgstr "ghi chú"
 
-#: readelf.c:11453
+#: readelf.c:8524
 #, c-format
 msgid ""
 "\n"
@@ -4767,27 +4861,27 @@ msgstr ""
 "\n"
 "Gặp ghi chú tại hiệu số 0x%08lx có độ dài 0x%08lx:\n"
 
-#: readelf.c:11455
+#: readelf.c:8526
 #, c-format
 msgid "  Owner\t\tData size\tDescription\n"
 msgstr "  Chủ\t\tCỡ dữ liệu\tMô tả\n"
 
-#: readelf.c:11474
+#: readelf.c:8545
 #, c-format
-msgid "corrupt note found at offset %x into core notes\n"
-msgstr "tìm ghi chú bị hỏng tại hiệu số %x vào ghi chú lõi\n"
+msgid "corrupt note found at offset %lx into core notes\n"
+msgstr "tìm ghi chú bị hỏng tại hiệu số %lx vào ghi chú lõi\n"
 
-#: readelf.c:11476
+#: readelf.c:8547
 #, c-format
-msgid " type: %x, namesize: %08lx, descsize: %08lx\n"
-msgstr " kiểu: %x, cỡ_tên: %08lx, cỡ_mô_tả: %08lx\n"
+msgid " type: %lx, namesize: %08lx, descsize: %08lx\n"
+msgstr " kiểu: %lx, cỡ_tên: %08lx, cỡ_mô_tả: %08lx\n"
 
-#: readelf.c:11574
+#: readelf.c:8645
 #, c-format
 msgid "No note segments present in the core file.\n"
 msgstr "Không có phân đoạn ghi chú trong tập tin lõi.\n"
 
-#: readelf.c:11653
+#: readelf.c:8726
 msgid ""
 "This instance of readelf has been built without support for a\n"
 "64 bit data type and so it cannot read 64 bit ELF files.\n"
@@ -4796,12 +4890,12 @@ msgstr ""
 "không có hỗ trợ kiểu dữ liệu 64-bit\n"
 "nên không thể đọc tập tin ELF kiểu 64-bit.\n"
 
-#: readelf.c:11700 readelf.c:12059
+#: readelf.c:8775 readelf.c:9119
 #, c-format
 msgid "%s: Failed to read file header\n"
 msgstr "%s: việc đọc dòng đầu tập tin bị lỗi\n"
 
-#: readelf.c:11713
+#: readelf.c:8788
 #, c-format
 msgid ""
 "\n"
@@ -4810,72 +4904,72 @@ msgstr ""
 "\n"
 "Tập tin: %s\n"
 
-#: readelf.c:11876 readelf.c:11897 readelf.c:11934 readelf.c:12014
+#: readelf.c:8936 readelf.c:8957 readelf.c:8994 readelf.c:9074
 #, c-format
 msgid "%s: failed to read archive header\n"
 msgstr "%s: việc đọc dòng đầu kho bị lỗi\n"
 
 # Type: error
 # Description
-#: readelf.c:11887
+#: readelf.c:8947
 #, c-format
 msgid "%s: failed to skip archive symbol table\n"
 msgstr "%s: việc nhảy qua bảng ký hiệu kho bị lỗi\n"
 
 # Type: error
 # Description
-#: readelf.c:11919
+#: readelf.c:8979
 #, c-format
 msgid "%s: failed to read string table\n"
 msgstr "%s: việc đọc bảng chuỗi bị lỗi\n"
 
-#: readelf.c:11955
+#: readelf.c:9015
 #, c-format
 msgid "%s: invalid archive string table offset %lu\n"
 msgstr "%s: hiệu số bảng chuỗi kho không hợp lệ %lu\n"
 
-#: readelf.c:11971
+#: readelf.c:9031
 #, c-format
 msgid "%s: bad archive file name\n"
 msgstr "%s: tên tập tin kho sai\n"
 
-#: readelf.c:12003
+#: readelf.c:9063
 #, c-format
 msgid "%s: failed to seek to next archive header\n"
 msgstr "%s: việc tìm tới dòng đầu kho kế tiếp bị lỗi\n"
 
-#: readelf.c:12037
+#: readelf.c:9097
 #, c-format
 msgid "'%s': No such file\n"
 msgstr "« %s »: không có tập tin như vậy\n"
 
-#: readelf.c:12039
+#: readelf.c:9099
 #, c-format
 msgid "Could not locate '%s'.  System error message: %s\n"
 msgstr "Không thể định vị « %s ». Thông điệp lỗi hệ thống: %s\n"
 
-#: readelf.c:12046
+#: readelf.c:9106
 #, c-format
 msgid "'%s' is not an ordinary file\n"
 msgstr "« %s » không phải là tập tin chuẩn\n"
 
-#: readelf.c:12053
+#: readelf.c:9113
 #, c-format
 msgid "Input file '%s' is not readable.\n"
 msgstr "Tập tin nhập « %s » không có khả năng đọc.\n"
 
-#: rename.c:127
+#: rename.c:129
 #, c-format
 msgid "%s: cannot set time: %s"
 msgstr "%s: không thể lập thời gian: %s"
 
 #. We have to clean up here.
-#: rename.c:162 rename.c:200
+#: rename.c:164 rename.c:202
 #, c-format
 msgid "unable to rename '%s' reason: %s"
 msgstr "không thể đổi tên %s vì lý do : %s"
 
-#: rename.c:208
+#: rename.c:210
 #, c-format
 msgid "unable to copy file '%s' reason: %s"
 msgstr "không thể sao chép tập tin « %s » vì lý do : %s"
@@ -5108,7 +5202,7 @@ msgstr "mục nhập thư mục có tên"
 
 #: rescoff.c:227
 msgid "directory entry name"
-msgstr "tên mục nhập thư mục "
+msgstr "tên mục nhập thư mục"
 
 #: rescoff.c:247
 msgid "named subdirectory"
@@ -5259,17 +5353,17 @@ msgstr "việc lấy các thông tin bị lỗi trên tập tin « %s »: %s"
 msgid "can't open `%s' for output: %s"
 msgstr "không thể mở « %s » để xuất: %s"
 
-#: size.c:81
+#: size.c:83
 #, c-format
 msgid " Displays the sizes of sections inside binary files\n"
 msgstr " Hiển thị kích cỡ của các phần ở trong tập tin nhị phân\n"
 
-#: size.c:82
+#: size.c:84
 #, c-format
 msgid " If no input file(s) are specified, a.out is assumed\n"
-msgstr "Nếu chưa ghi rõ tập tin nhập, giả sử <a.out>\n"
+msgstr " Nếu chưa ghi rõ tập tin nhập, giả sử <a.out>\n"
 
-#: size.c:83
+#: size.c:85
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5277,6 +5371,7 @@ msgid ""
 "  -o|-d|-x  --radix={8|10|16}         Display numbers in octal, decimal or hex\n"
 "  -t        --totals                  Display the total sizes (Berkeley only)\n"
 "            --target=<bfdname>        Set the binary file format\n"
+"            @<file>                   Read options from <file>\n"
 "  -h        --help                    Display this information\n"
 "  -v        --version                 Display the program's version\n"
 "\n"
@@ -5291,16 +5386,17 @@ msgstr ""
 "  -t        --totals          Hiển thị các kích cỡ _tổng cổng_ (chỉ Berkeley)\n"
 "            --target=<tên_bfd>        \tLập dạng thức tập tin nhị phân\n"
 "\t\t\t(đích)\n"
+"            @<file>                   Đọc các tùy chọn từ tập tin đó\n"
 "  -h        --help                Hiển thị _trợ giúp_ này\n"
 "  -v        --version            Hiển thị _phiên bản_ của chương trình này\n"
 "\n"
 
-#: size.c:153
+#: size.c:158
 #, c-format
 msgid "invalid argument to --format: %s"
 msgstr "đối sô không hợp lệ tới « --format » (dạng thức): %s"
 
-#: size.c:180
+#: size.c:185
 #, c-format
 msgid "Invalid radix: %s\n"
 msgstr "Cơ sở không hợp lệ: %s\n"
@@ -5317,6 +5413,7 @@ msgid ""
 "  -q --quick       (Obsolete - ignored)\n"
 "  -n --noprescan   Do not perform a scan to convert commons into defs\n"
 "  -d --debug       Display information about what is being done\n"
+"  @<file>          Read options from <file>\n"
 "  -h --help        Display this information\n"
 "  -v --version     Print the program's version number\n"
 msgstr ""
@@ -5328,10 +5425,11 @@ msgstr ""
 "\t\t(không quét trước)\n"
 "  -d --debug       \t\t\tHiển thị thông tin về hành động hiện thời\n"
 "\t\t(gỡ lỗi)\n"
+"   @<file>                   Đọc các tùy chọn từ tập tin đó\n"
 "  -h --help        \t\t\tHiển thị _trợ giúp_ này\n"
 "  -v --version     \t\tIn ra số thứ tự _phiên bản_ của chương trình\n"
 
-#: srconv.c:1866
+#: srconv.c:1869
 #, c-format
 msgid "unable to open output file %s"
 msgstr "không thể mở tập tin kết xuất %s"
@@ -5469,22 +5567,22 @@ msgstr "Gặp một số varargs (đối số biến) đã tháo gỡ bất ng
 msgid "Unrecognized demangled builtin type\n"
 msgstr "Không nhận diện kiểu builtin (điều có sẵn) đã tháo gỡ\n"
 
-#: strings.c:206
+#: strings.c:218
 #, c-format
 msgid "invalid number %s"
 msgstr "số không hợp lệ %s"
 
-#: strings.c:643
+#: strings.c:700
 #, c-format
 msgid "invalid integer argument %s"
 msgstr "đối số số nguyên không hợp lệ %s"
 
-#: strings.c:652
+#: strings.c:709
 #, c-format
 msgid " Display printable strings in [file(s)] (stdin by default)\n"
 msgstr " Hiển thị các chuỗi có khả năng in trong [tập tin...] (mặc định là thiết bị nhập chuẩn)\n"
 
-#: strings.c:653
+#: strings.c:710
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5497,6 +5595,7 @@ msgid ""
 "  -T --target=<BFDNAME>     Specify the binary file format\n"
 "  -e --encoding={s,S,b,l,B,L} Select character size and endianness:\n"
 "                            s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit\n"
+"  @<file>                   Read options from <file>\n"
 "  -h --help                 Display this information\n"
 "  -v --version              Print the program's version number\n"
 msgstr ""
@@ -5516,15 +5615,16 @@ msgstr ""
 "  -e --encoding={s,S,b,l,B,L}\n"
 "\t\tChọn kích cỡ ký tự và tính trạng cuối (endian):\n"
 "            \ts = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit\n"
+"    @<file>                   Đọc các tùy chọn từ tập tin đó\n"
 "  -h --help                 \t\tHiển thị _trợ giúp_ này\n"
 "  -v --version              \t\tIn ra số thứ tự _phiên bản_ của chương trình\n"
 
-#: sysdump.c:649
+#: sysdump.c:642
 #, c-format
 msgid "Print a human readable interpretation of a SYSROFF object file\n"
 msgstr "In ra lời giải dịch tập tin đối tượng SYSROFF cho người đọc\n"
 
-#: sysdump.c:650
+#: sysdump.c:643
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5535,7 +5635,7 @@ msgstr ""
 "  -h --help                 \t\tHiển thị _trợ giúp_ này\n"
 "  -v --version              \t\tIn ra số thứ tự _phiên bản_ của chương trình\n"
 
-#: sysdump.c:715
+#: sysdump.c:710
 #, c-format
 msgid "cannot open input file %s"
 msgstr "không thể mở tập tin nhập %s"
@@ -5651,14 +5751,16 @@ msgstr "     --yydebug                 Bật khả năng gỡ lỗi kiểu bộ
 #, c-format
 msgid ""
 "  -r                           Ignored for compatibility with rc\n"
+"  @<file>                      Read options from <file>\n"
 "  -h --help                    Print this help message\n"
 "  -V --version                 Print version information\n"
 msgstr ""
 "  -r\t\t\t\t\t \t \t\t     Bị bỏ qua để tương thích với rc (tài nguyên)\n"
+"   @<file>                   Đọc các tùy chọn từ tập tin đó\n"
 "  -h, --help                  \t\t\t\t             rctrợ giúp_ này\n"
 "  -V, --version            \t\t\t\t           In ra thông tin _phiên bản_\n"
 
-#: windres.c:664
+#: windres.c:665
 #, c-format
 msgid ""
 "FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
@@ -5671,20 +5773,20 @@ msgstr ""
 "thiết bị nhập chuẩn, mặc định là rc. Không có tập tin xuất thì\n"
 "thiết bị xuất chuẩn, mặc định là rc.\n"
 
-#: windres.c:800
+#: windres.c:803
 msgid "invalid option -f\n"
 msgstr "tùy chọn không hợp lệ « -f »\n"
 
-#: windres.c:805
+#: windres.c:808
 msgid "No filename following the -fo option.\n"
 msgstr "Không có tên tập tin đi sau tùy chọn « -fo ».\n"
 
-#: windres.c:863
+#: windres.c:866
 #, c-format
 msgid "Option -I is deprecated for setting the input format, please use -J instead.\n"
 msgstr "Tùy chọn « -l » bị phản đối để lập dạng thức nhập, hãy dùng « -J » thay thế.\n"
 
-#: windres.c:981
+#: windres.c:984
 msgid "no resources"
 msgstr "không có tài nguyên nào"
 
@@ -5702,3 +5804,68 @@ msgstr "stab_int_type: (kiểu số nguyên stab) kích cỡ sai %u"
 #, c-format
 msgid "%s: warning: unknown size for field `%s' in struct"
 msgstr "%s: cảnh báo : không biết kích cỡ cho trường « %s » trong cấu trúc"
+
+#~ msgid "flags"
+#~ msgstr "cờ"
+
+#~ msgid "debug_str section data"
+#~ msgstr "debug_str section data"
+
+#~ msgid "debug_loc section data"
+#~ msgstr "dữ liệu phần « debug_loc » (định vị gỡ lỗi)"
+
+#~ msgid "debug_range section data"
+#~ msgstr "dữ liệu phần « debug_range » (phạm vị gỡ lỗi)"
+
+#~ msgid "%s: skipping unexpected symbol type %s in relocation in section .rela%s\n"
+#~ msgstr "%s: đang nhảy qua kiểu ký hiệu bất ngờ %s trong việc định vị lại trong phần .rela%s\n"
+
+#~ msgid "debug_abbrev section data"
+#~ msgstr "dữ liệu phần « .debug_abbrev » (gỡ lỗi viết tắt)"
+
+#~ msgid "extracting information from .debug_info section"
+#~ msgstr "đang trích thông tin ra phần « .debug_info » (thông tin gỡ lỗi)"
+
+#~ msgid ""
+#~ "\n"
+#~ "The .debug_loc section is empty.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Phần « .debug_loc » (gỡ lỗi định vị) rỗng:\n"
+
+#~ msgid ""
+#~ "Contents of the .debug_loc section:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Nội dung của phần « .debug_info » (thông tin gỡ lỗi):\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Contents of the .debug_str section:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Nội dung của phần « .debug_str » (chuỗi gỡ lỗi):\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "The .debug_ranges section is empty.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Phần « .debug_ranges » (các phạm vị gỡ lỗi) rỗng.\n"
+
+#~ msgid ""
+#~ "Contents of the .debug_ranges section:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Nội dung của phần « .debug_ranges » (các phạm vị gỡ lỗi):\n"
+#~ "\n"
+
+#~ msgid "There is a hole [0x%lx - 0x%lx] in .debug_ranges section.\n"
+#~ msgstr "Có một lỗ [0x%lx - 0x%lx] trong phần « .debug_ranges » (các phạm vị gỡ lỗi).\n"
+
+#~ msgid "There is an overlap [0x%lx - 0x%lx] in .debug_ranges section.\n"
+#~ msgstr "Có một chồng lấp [0x%lx - 0x%lx] trong phần « .debug_ranges » (các phạm vị gỡ lỗi).\n"
+
+#~ msgid "debug section data"
+#~ msgstr "dữ liệu phần gỡ lỗi"
index 2c20a27..80c2596 100644 (file)
@@ -1331,7 +1331,7 @@ resid_to_bin (struct res_id id, int big_endian)
   if (! id.named)
     {
       d->length = 4;
-      d->data = (unsigned char *) reswr_alloc (4);
+      d->data = (unsigned char *) reswr_alloc (d->length);
       put_16 (big_endian, 0xffff, d->data);
       put_16 (big_endian, id.u.id, d->data + 2);
     }
@@ -1408,7 +1408,7 @@ res_to_bin_accelerator (const struct accelerator *accelerators,
 
       d = (struct bindata *) reswr_alloc (sizeof *d);
       d->length = 8;
-      d->data = (unsigned char *) reswr_alloc (8);
+      d->data = (unsigned char *) reswr_alloc (d->length);
 
       put_16 (big_endian,
              a->flags | (a->next != NULL ? 0 : ACC_LAST),
@@ -1434,7 +1434,7 @@ res_to_bin_cursor (const struct cursor *c, int big_endian)
 
   d = (struct bindata *) reswr_alloc (sizeof *d);
   d->length = 4;
-  d->data = (unsigned char *) reswr_alloc (4);
+  d->data = (unsigned char *) reswr_alloc (d->length);
 
   put_16 (big_endian, c->xhotspot, d->data);
   put_16 (big_endian, c->yhotspot, d->data + 2);
@@ -1459,7 +1459,7 @@ res_to_bin_group_cursor (const struct group_cursor *group_cursors,
 
   first = (struct bindata *) reswr_alloc (sizeof *first);
   first->length = 6;
-  first->data = (unsigned char *) reswr_alloc (6);
+  first->data = (unsigned char *) reswr_alloc (first->length);
 
   put_16 (big_endian, 0, first->data);
   put_16 (big_endian, 2, first->data + 2);
@@ -1476,7 +1476,7 @@ res_to_bin_group_cursor (const struct group_cursor *group_cursors,
 
       d = (struct bindata *) reswr_alloc (sizeof *d);
       d->length = 14;
-      d->data = (unsigned char *) reswr_alloc (14);
+      d->data = (unsigned char *) reswr_alloc (d->length);
 
       put_16 (big_endian, gc->width, d->data);
       put_16 (big_endian, gc->height, d->data + 2);
@@ -1642,7 +1642,7 @@ res_to_bin_dialog (const struct dialog *dialog, int big_endian)
 
       d = (struct bindata *) reswr_alloc (sizeof *d);
       d->length = 2;
-      d->data = (unsigned char *) reswr_alloc (2);
+      d->data = (unsigned char *) reswr_alloc (d->length);
 
       length += 2;
 
@@ -1687,7 +1687,7 @@ res_to_bin_fontdir (const struct fontdir *fontdirs, int big_endian)
 
   first = (struct bindata *) reswr_alloc (sizeof *first);
   first->length = 2;
-  first->data = (unsigned char *) reswr_alloc (2);
+  first->data = (unsigned char *) reswr_alloc (first->length);
 
   first->next = NULL;
   pp = &first->next;
@@ -1701,7 +1701,7 @@ res_to_bin_fontdir (const struct fontdir *fontdirs, int big_endian)
 
       d = (struct bindata *) reswr_alloc (sizeof *d);
       d->length = 2;
-      d->data = (unsigned char *) reswr_alloc (2);
+      d->data = (unsigned char *) reswr_alloc (d->length);
 
       put_16 (big_endian, fd->index, d->data);
 
@@ -1733,7 +1733,7 @@ res_to_bin_group_icon (const struct group_icon *group_icons, int big_endian)
 
   first = (struct bindata *) reswr_alloc (sizeof *first);
   first->length = 6;
-  first->data = (unsigned char *) reswr_alloc (6);
+  first->data = (unsigned char *) reswr_alloc (first->length);
 
   put_16 (big_endian, 0, first->data);
   put_16 (big_endian, 1, first->data + 2);
@@ -1750,7 +1750,7 @@ res_to_bin_group_icon (const struct group_icon *group_icons, int big_endian)
 
       d = (struct bindata *) reswr_alloc (sizeof *d);
       d->length = 14;
-      d->data = (unsigned char *) reswr_alloc (14);
+      d->data = (unsigned char *) reswr_alloc (d->length);
 
       d->data[0] = gi->width;
       d->data[1] = gi->height;
@@ -1875,7 +1875,7 @@ res_to_bin_menuexitems (const struct menuitem *items, int big_endian)
 
       d = (struct bindata *) reswr_alloc (sizeof *d);
       d->length = 12;
-      d->data = (unsigned char *) reswr_alloc (12);
+      d->data = (unsigned char *) reswr_alloc (d->length);
 
       length += 12;
 
@@ -1903,7 +1903,7 @@ res_to_bin_menuexitems (const struct menuitem *items, int big_endian)
 
          d = (struct bindata *) reswr_alloc (sizeof *d);
          d->length = 4;
-         d->data = (unsigned char *) reswr_alloc (4);
+         d->data = (unsigned char *) reswr_alloc (d->length);
 
          put_32 (big_endian, mi->help, d->data);
 
@@ -1948,13 +1948,13 @@ res_to_bin_rcdata (const struct rcdata_item *items, int big_endian)
 
        case RCDATA_WORD:
          d->length = 2;
-         d->data = (unsigned char *) reswr_alloc (2);
+         d->data = (unsigned char *) reswr_alloc (d->length);
          put_16 (big_endian, ri->u.word, d->data);
          break;
 
        case RCDATA_DWORD:
          d->length = 4;
-         d->data = (unsigned char *) reswr_alloc (4);
+         d->data = (unsigned char *) reswr_alloc (d->length);
          put_32 (big_endian, ri->u.dword, d->data);
          break;
 
@@ -2060,7 +2060,7 @@ res_to_bin_versioninfo (const struct versioninfo *versioninfo, int big_endian)
 
   first = (struct bindata *) reswr_alloc (sizeof *first);
   first->length = 6;
-  first->data = (unsigned char *) reswr_alloc (6);
+  first->data = (unsigned char *) reswr_alloc (first->length);
 
   length = 6;
 
@@ -2086,7 +2086,7 @@ res_to_bin_versioninfo (const struct versioninfo *versioninfo, int big_endian)
 
       d = (struct bindata *) reswr_alloc (sizeof *d);
       d->length = 52;
-      d->data = (unsigned char *) reswr_alloc (52);
+      d->data = (unsigned char *) reswr_alloc (d->length);
 
       length += 52;
 
@@ -2120,7 +2120,7 @@ res_to_bin_versioninfo (const struct versioninfo *versioninfo, int big_endian)
 
       vid = (struct bindata *) reswr_alloc (sizeof *vid);
       vid->length = 6;
-      vid->data = (unsigned char *) reswr_alloc (6);
+      vid->data = (unsigned char *) reswr_alloc (vid->length);
 
       length += 6;
       vilen = 6;
@@ -2153,7 +2153,7 @@ res_to_bin_versioninfo (const struct versioninfo *versioninfo, int big_endian)
 
            vsd = (struct bindata *) reswr_alloc (sizeof *vsd);
            vsd->length = 6;
-           vsd->data = (unsigned char *) reswr_alloc (6);
+           vsd->data = (unsigned char *) reswr_alloc (vsd->length);
 
            length += 6;
            vilen += 6;
@@ -2183,7 +2183,7 @@ res_to_bin_versioninfo (const struct versioninfo *versioninfo, int big_endian)
 
                vssd = (struct bindata *) reswr_alloc (sizeof *vssd);
                vssd->length = 6;
-               vssd->data = (unsigned char *) reswr_alloc (6);
+               vssd->data = (unsigned char *) reswr_alloc (vssd->length);
 
                length += 6;
                vilen += 6;
@@ -2241,7 +2241,7 @@ res_to_bin_versioninfo (const struct versioninfo *versioninfo, int big_endian)
 
            vvd = (struct bindata *) reswr_alloc (sizeof *vvd);
            vvd->length = 6;
-           vvd->data = (unsigned char *) reswr_alloc (6);
+           vvd->data = (unsigned char *) reswr_alloc (vvd->length);
 
            length += 6;
            vilen += 6;
@@ -2271,7 +2271,7 @@ res_to_bin_versioninfo (const struct versioninfo *versioninfo, int big_endian)
 
                vvsd = (struct bindata *) reswr_alloc (sizeof *vvsd);
                vvsd->length = 4;
-               vvsd->data = (unsigned char *) reswr_alloc (4);
+               vvsd->data = (unsigned char *) reswr_alloc (vvsd->length);
 
                length += 4;
                vilen += 4;
index 03dea90..175e539 100644 (file)
@@ -3,6 +3,10 @@
        * binutils-all/localize-hidden-1.d: Use objdump --syms instead
        of readelf.
 
+2006-04-10  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * lib/utils-lib.exp (default_binutils_run): Check exit status.
+
 2005-12-24  Ben Elliston  <bje@gnu.org>
 
        * config/default.exp: Do not load the unneeded util-defs.exp.
index b5ed3f2..3ee7675 100644 (file)
@@ -73,6 +73,12 @@ proc default_binutils_run { prog progargs } {
     if {![string match "" $exec_output]} then {
        send_log "$exec_output\n"
        verbose "$exec_output"
+    } else {
+       if { [lindex $state 0] != 0 } {
+           set exec_output "$prog exited with status [lindex $state 0]"
+           send_log "$exec_output\n"
+           verbose "$exec_output"
+       }
     }
     return $exec_output
 }
diff --git a/compile b/compile
deleted file mode 100755 (executable)
index 1b1d232..0000000
--- a/compile
+++ /dev/null
@@ -1,142 +0,0 @@
-#! /bin/sh
-# Wrapper for compilers which do not understand `-c -o'.
-
-scriptversion=2005-05-14.22
-
-# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
-# Written by Tom Tromey <tromey@cygnus.com>.
-#
-# 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.
-#
-# 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 this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# This file is maintained in Automake, please report
-# bugs to <bug-automake@gnu.org> or send patches to
-# <automake-patches@gnu.org>.
-
-case $1 in
-  '')
-     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
-     exit 1;
-     ;;
-  -h | --h*)
-    cat <<\EOF
-Usage: compile [--help] [--version] PROGRAM [ARGS]
-
-Wrapper for compilers which do not understand `-c -o'.
-Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
-arguments, and rename the output as expected.
-
-If you are trying to build a whole package this is not the
-right script to run: please start by reading the file `INSTALL'.
-
-Report bugs to <bug-automake@gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "compile $scriptversion"
-    exit $?
-    ;;
-esac
-
-ofile=
-cfile=
-eat=
-
-for arg
-do
-  if test -n "$eat"; then
-    eat=
-  else
-    case $1 in
-      -o)
-       # configure might choose to run compile as `compile cc -o foo foo.c'.
-       # So we strip `-o arg' only if arg is an object.
-       eat=1
-       case $2 in
-         *.o | *.obj)
-           ofile=$2
-           ;;
-         *)
-           set x "$@" -o "$2"
-           shift
-           ;;
-       esac
-       ;;
-      *.c)
-       cfile=$1
-       set x "$@" "$1"
-       shift
-       ;;
-      *)
-       set x "$@" "$1"
-       shift
-       ;;
-    esac
-  fi
-  shift
-done
-
-if test -z "$ofile" || test -z "$cfile"; then
-  # If no `-o' option was seen then we might have been invoked from a
-  # pattern rule where we don't need one.  That is ok -- this is a
-  # normal compilation that the losing compiler can handle.  If no
-  # `.c' file was seen then we are probably linking.  That is also
-  # ok.
-  exec "$@"
-fi
-
-# Name of file we expect compiler to create.
-cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
-
-# Create the lock directory.
-# Note: use `[/.-]' here to ensure that we don't use the same name
-# that we are using for the .o file.  Also, base the name on the expected
-# object file name, since that is what matters with a parallel build.
-lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
-while true; do
-  if mkdir "$lockdir" >/dev/null 2>&1; then
-    break
-  fi
-  sleep 1
-done
-# FIXME: race condition here if user kills between mkdir and trap.
-trap "rmdir '$lockdir'; exit 1" 1 2 15
-
-# Run the compile.
-"$@"
-ret=$?
-
-if test -f "$cofile"; then
-  mv "$cofile" "$ofile"
-elif test -f "${cofile}bj"; then
-  mv "${cofile}bj" "$ofile"
-fi
-
-rmdir "$lockdir"
-exit $ret
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
index a4f069d..ffbe198 100755 (executable)
--- a/configure
+++ b/configure
@@ -3634,10 +3634,10 @@ case " $build_configdirs " in
   *" texinfo "*) MAKEINFO='$$r/$(BUILD_SUBDIR)/texinfo/makeinfo/makeinfo' ;;
   *)
 
-    # For an installed makeinfo, we require it to be from texinfo 4.2 or
+    # For an installed makeinfo, we require it to be from texinfo 4.4 or
     # higher, else we use the "missing" dummy.
     if ${MAKEINFO} --version \
-       | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])' >/dev/null 2>&1; then
+       | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
       :
     else
       MAKEINFO="$MISSING makeinfo"
index 88ad368..8e56c77 100644 (file)
@@ -2203,10 +2203,10 @@ case " $build_configdirs " in
   *" texinfo "*) MAKEINFO='$$r/$(BUILD_SUBDIR)/texinfo/makeinfo/makeinfo' ;;
   *)
 changequote(,)
-    # For an installed makeinfo, we require it to be from texinfo 4.2 or
+    # For an installed makeinfo, we require it to be from texinfo 4.4 or
     # higher, else we use the "missing" dummy.
     if ${MAKEINFO} --version \
-       | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])' >/dev/null 2>&1; then
+       | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
       :
     else
       MAKEINFO="$MISSING makeinfo"
diff --git a/contrib/ChangeLog b/contrib/ChangeLog
deleted file mode 100644 (file)
index 4a0de85..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-2002-07-03  Nick Clifton  <nickc@cambridge.redhat.com>
-
-       * ChangeLog: Newly created.
-       * texi2pod.pl: Imported from FSF GCC sources.
-       
-       
-
diff --git a/contrib/texi2pod.pl b/contrib/texi2pod.pl
deleted file mode 100755 (executable)
index e5560f3..0000000
+++ /dev/null
@@ -1,431 +0,0 @@
-#! /usr/bin/perl -w
-
-#   Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
-
-# This file is part of GNU CC.
-
-# GNU CC 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.
-
-# GNU CC 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 GNU CC; see the file COPYING.  If not, write to
-# the Free Software Foundation, 59 Temple Place - Suite 330,
-# Boston MA 02111-1307, USA.
-
-# This does trivial (and I mean _trivial_) conversion of Texinfo
-# markup to Perl POD format.  It's intended to be used to extract
-# something suitable for a manpage from a Texinfo document.
-
-$output = 0;
-$skipping = 0;
-%sects = ();
-$section = "";
-@icstack = ();
-@endwstack = ();
-@skstack = ();
-@instack = ();
-$shift = "";
-%defs = ();
-$fnno = 1;
-$inf = "";
-$ibase = "";
-
-while ($_ = shift) {
-    if (/^-D(.*)$/) {
-       if ($1 ne "") {
-           $flag = $1;
-       } else {
-           $flag = shift;
-       }
-       $value = "";
-       ($flag, $value) = ($flag =~ /^([^=]+)(?:=(.+))?/);
-       die "no flag specified for -D\n"
-           unless $flag ne "";
-       die "flags may only contain letters, digits, hyphens, dashes and underscores\n"
-           unless $flag =~ /^[a-zA-Z0-9_-]+$/;
-       $defs{$flag} = $value;
-    } elsif (/^-/) {
-       usage();
-    } else {
-       $in = $_, next unless defined $in;
-       $out = $_, next unless defined $out;
-       usage();
-    }
-}
-
-if (defined $in) {
-    $inf = gensym();
-    open($inf, "<$in") or die "opening \"$in\": $!\n";
-    $ibase = $1 if $in =~ m|^(.+)/[^/]+$|;
-} else {
-    $inf = \*STDIN;
-}
-
-if (defined $out) {
-    open(STDOUT, ">$out") or die "opening \"$out\": $!\n";
-}
-
-while(defined $inf) {
-while(<$inf>) {
-    # Certain commands are discarded without further processing.
-    /^\@(?:
-        [a-z]+index            # @*index: useful only in complete manual
-        |need                  # @need: useful only in printed manual
-        |(?:end\s+)?group      # @group .. @end group: ditto
-        |page                  # @page: ditto
-        |node                  # @node: useful only in .info file
-        |(?:end\s+)?ifnottex   # @ifnottex .. @end ifnottex: use contents
-       )\b/x and next;
-
-    chomp;
-
-    # Look for filename and title markers.
-    /^\@setfilename\s+([^.]+)/ and $fn = $1, next;
-    /^\@settitle\s+([^.]+)/ and $tl = postprocess($1), next;
-
-    # Identify a man title but keep only the one we are interested in.
-    /^\@c\s+man\s+title\s+([A-Za-z0-9-]+)\s+(.+)/ and do {
-       if (exists $defs{$1}) {
-           $fn = $1;
-           $tl = postprocess($2);
-       }
-       next;
-    };
-
-    # Look for blocks surrounded by @c man begin SECTION ... @c man end.
-    # This really oughta be @ifman ... @end ifman and the like, but such
-    # would require rev'ing all other Texinfo translators.
-    /^\@c\s+man\s+begin\s+([A-Z]+)\s+([A-Za-z0-9-]+)/ and do {
-       $output = 1 if exists $defs{$2};
-        $sect = $1;
-       next;
-    };
-    /^\@c\s+man\s+begin\s+([A-Z]+)/ and $sect = $1, $output = 1, next;
-    /^\@c\s+man\s+end/ and do {
-       $sects{$sect} = "" unless exists $sects{$sect};
-       $sects{$sect} .= postprocess($section);
-       $section = "";
-       $output = 0;
-       next;
-    };
-
-    # handle variables
-    /^\@set\s+([a-zA-Z0-9_-]+)\s*(.*)$/ and do {
-       $defs{$1} = $2;
-       next;
-    };
-    /^\@clear\s+([a-zA-Z0-9_-]+)/ and do {
-       delete $defs{$1};
-       next;
-    };
-
-    next unless $output;
-
-    # Discard comments.  (Can't do it above, because then we'd never see
-    # @c man lines.)
-    /^\@c\b/ and next;
-
-    # End-block handler goes up here because it needs to operate even
-    # if we are skipping.
-    /^\@end\s+([a-z]+)/ and do {
-       # Ignore @end foo, where foo is not an operation which may
-       # cause us to skip, if we are presently skipping.
-       my $ended = $1;
-       next if $skipping && $ended !~ /^(?:ifset|ifclear|ignore|menu|iftex)$/;
-
-       die "\@end $ended without \@$ended at line $.\n" unless defined $endw;
-       die "\@$endw ended by \@end $ended at line $.\n" unless $ended eq $endw;
-
-       $endw = pop @endwstack;
-
-       if ($ended =~ /^(?:ifset|ifclear|ignore|menu|iftex)$/) {
-           $skipping = pop @skstack;
-           next;
-       } elsif ($ended =~ /^(?:example|smallexample|display)$/) {
-           $shift = "";
-           $_ = "";    # need a paragraph break
-       } elsif ($ended =~ /^(?:itemize|enumerate|[fv]?table)$/) {
-           $_ = "\n=back\n";
-           $ic = pop @icstack;
-       } else {
-           die "unknown command \@end $ended at line $.\n";
-       }
-    };
-
-    # We must handle commands which can cause skipping even while we
-    # are skipping, otherwise we will not process nested conditionals
-    # correctly.
-    /^\@ifset\s+([a-zA-Z0-9_-]+)/ and do {
-       push @endwstack, $endw;
-       push @skstack, $skipping;
-       $endw = "ifset";
-       $skipping = 1 unless exists $defs{$1};
-       next;
-    };
-
-    /^\@ifclear\s+([a-zA-Z0-9_-]+)/ and do {
-       push @endwstack, $endw;
-       push @skstack, $skipping;
-       $endw = "ifclear";
-       $skipping = 1 if exists $defs{$1};
-       next;
-    };
-
-    /^\@(ignore|menu|iftex)\b/ and do {
-       push @endwstack, $endw;
-       push @skstack, $skipping;
-       $endw = $1;
-       $skipping = 1;
-       next;
-    };
-
-    next if $skipping;
-
-    # Character entities.  First the ones that can be replaced by raw text
-    # or discarded outright:
-    s/\@copyright\{\}/(c)/g;
-    s/\@dots\{\}/.../g;
-    s/\@enddots\{\}/..../g;
-    s/\@([.!? ])/$1/g;
-    s/\@[:-]//g;
-    s/\@bullet(?:\{\})?/*/g;
-    s/\@TeX\{\}/TeX/g;
-    s/\@pounds\{\}/\#/g;
-    s/\@minus(?:\{\})?/-/g;
-    s/\\,/,/g;
-
-    # Now the ones that have to be replaced by special escapes
-    # (which will be turned back into text by unmunge())
-    s/&/&amp;/g;
-    s/\@\{/&lbrace;/g;
-    s/\@\}/&rbrace;/g;
-    s/\@\@/&at;/g;
-
-    # Inside a verbatim block, handle @var specially.
-    if ($shift ne "") {
-       s/\@var\{([^\}]*)\}/<$1>/g;
-    }
-
-    # POD doesn't interpret E<> inside a verbatim block.
-    if ($shift eq "") {
-       s/</&lt;/g;
-       s/>/&gt;/g;
-    } else {
-       s/</&LT;/g;
-       s/>/&GT;/g;
-    }
-
-    # Single line command handlers.
-
-    /^\@include\s+(.+)$/ and do {
-       push @instack, $inf;
-       $inf = gensym();
-
-       # Try cwd and $ibase.
-       open($inf, "<" . $1) 
-           or open($inf, "<" . $ibase . "/" . $1)
-               or die "cannot open $1 or $ibase/$1: $!\n";
-       next;
-    };
-
-    /^\@(?:section|unnumbered|unnumberedsec|center)\s+(.+)$/
-       and $_ = "\n=head2 $1\n";
-    /^\@subsection\s+(.+)$/
-       and $_ = "\n=head3 $1\n";
-
-    # Block command handlers:
-    /^\@itemize\s+(\@[a-z]+|\*|-)/ and do {
-       push @endwstack, $endw;
-       push @icstack, $ic;
-       $ic = $1;
-       $_ = "\n=over 4\n";
-       $endw = "itemize";
-    };
-
-    /^\@enumerate(?:\s+([a-zA-Z0-9]+))?/ and do {
-       push @endwstack, $endw;
-       push @icstack, $ic;
-       if (defined $1) {
-           $ic = $1 . ".";
-       } else {
-           $ic = "1.";
-       }
-       $_ = "\n=over 4\n";
-       $endw = "enumerate";
-    };
-
-    /^\@([fv]?table)\s+(\@[a-z]+)/ and do {
-       push @endwstack, $endw;
-       push @icstack, $ic;
-       $endw = $1;
-       $ic = $2;
-       $ic =~ s/\@(?:samp|strong|key|gcctabopt|env)/B/;
-       $ic =~ s/\@(?:code|kbd)/C/;
-       $ic =~ s/\@(?:dfn|var|emph|cite|i)/I/;
-       $ic =~ s/\@(?:file)/F/;
-       $_ = "\n=over 4\n";
-    };
-
-    /^\@((?:small)?example|display)/ and do {
-       push @endwstack, $endw;
-       $endw = $1;
-       $shift = "\t";
-       $_ = "";        # need a paragraph break
-    };
-
-    /^\@itemx?\s*(.+)?$/ and do {
-       if (defined $1) {
-           # Entity escapes prevent munging by the <> processing below.
-           $_ = "\n=item $ic\&LT;$1\&GT;\n";
-       } else {
-           $_ = "\n=item $ic\n";
-           $ic =~ y/A-Ya-y/B-Zb-z/;
-           $ic =~ s/(\d+)/$1 + 1/eg;
-       }
-    };
-
-    $section .= $shift.$_."\n";
-}
-# End of current file.
-close($inf);
-$inf = pop @instack;
-}
-
-die "No filename or title\n" unless defined $fn && defined $tl;
-
-$sects{NAME} = "$fn \- $tl\n";
-$sects{FOOTNOTES} .= "=back\n" if exists $sects{FOOTNOTES};
-
-for $sect (qw(NAME SYNOPSIS DESCRIPTION OPTIONS ENVIRONMENT FILES
-             BUGS NOTES FOOTNOTES SEEALSO AUTHOR COPYRIGHT)) {
-    if(exists $sects{$sect}) {
-       $head = $sect;
-       $head =~ s/SEEALSO/SEE ALSO/;
-       print "=head1 $head\n\n";
-       print scalar unmunge ($sects{$sect});
-       print "\n";
-    }
-}
-
-sub usage
-{
-    die "usage: $0 [-D toggle...] [infile [outfile]]\n";
-}
-
-sub postprocess
-{
-    local $_ = $_[0];
-
-    # @value{foo} is replaced by whatever 'foo' is defined as.
-    while (m/(\@value\{([a-zA-Z0-9_-]+)\})/g) {
-       if (! exists $defs{$2}) {
-           print STDERR "Option $2 not defined\n";
-           s/\Q$1\E//;
-       } else {
-           $value = $defs{$2};
-           s/\Q$1\E/$value/;
-       }
-    }
-
-    # Formatting commands.
-    # Temporary escape for @r.
-    s/\@r\{([^\}]*)\}/R<$1>/g;
-    s/\@(?:dfn|var|emph|cite|i)\{([^\}]*)\}/I<$1>/g;
-    s/\@(?:code|kbd)\{([^\}]*)\}/C<$1>/g;
-    s/\@(?:gccoptlist|samp|strong|key|option|env|command|b)\{([^\}]*)\}/B<$1>/g;
-    s/\@sc\{([^\}]*)\}/\U$1/g;
-    s/\@file\{([^\}]*)\}/F<$1>/g;
-    s/\@w\{([^\}]*)\}/S<$1>/g;
-    s/\@(?:dmn|math)\{([^\}]*)\}/$1/g;
-
-    # Cross references are thrown away, as are @noindent and @refill.
-    # (@noindent is impossible in .pod, and @refill is unnecessary.)
-    # @* is also impossible in .pod; we discard it and any newline that
-    # follows it.  Similarly, our macro @gol must be discarded.
-
-    s/\(?\@xref\{(?:[^\}]*)\}(?:[^.<]|(?:<[^<>]*>))*\.\)?//g;
-    s/\s+\(\@pxref\{(?:[^\}]*)\}\)//g;
-    s/;\s+\@pxref\{(?:[^\}]*)\}//g;
-    s/\@noindent\s*//g;
-    s/\@refill//g;
-    s/\@gol//g;
-    s/\@\*\s*\n?//g;
-
-    # @uref can take one, two, or three arguments, with different
-    # semantics each time.  @url and @email are just like @uref with
-    # one argument, for our purposes.
-    s/\@(?:uref|url|email)\{([^\},]*)\}/&lt;B<$1>&gt;/g;
-    s/\@uref\{([^\},]*),([^\},]*)\}/$2 (C<$1>)/g;
-    s/\@uref\{([^\},]*),([^\},]*),([^\},]*)\}/$3/g;
-
-    # Un-escape <> at this point.
-    s/&LT;/</g;
-    s/&GT;/>/g;
-
-    # Now un-nest all B<>, I<>, R<>.  Theoretically we could have
-    # indefinitely deep nesting; in practice, one level suffices.
-    1 while s/([BIR])<([^<>]*)([BIR])<([^<>]*)>/$1<$2>$3<$4>$1</g;
-
-    # Replace R<...> with bare ...; eliminate empty markup, B<>;
-    # shift white space at the ends of [BI]<...> expressions outside
-    # the expression.
-    s/R<([^<>]*)>/$1/g;
-    s/[BI]<>//g;
-    s/([BI])<(\s+)([^>]+)>/$2$1<$3>/g;
-    s/([BI])<([^>]+?)(\s+)>/$1<$2>$3/g;
-
-    # Extract footnotes.  This has to be done after all other
-    # processing because otherwise the regexp will choke on formatting
-    # inside @footnote.
-    while (/\@footnote/g) {
-       s/\@footnote\{([^\}]+)\}/[$fnno]/;
-       add_footnote($1, $fnno);
-       $fnno++;
-    }
-
-    return $_;
-}
-
-sub unmunge
-{
-    # Replace escaped symbols with their equivalents.
-    local $_ = $_[0];
-
-    s/&lt;/E<lt>/g;
-    s/&gt;/E<gt>/g;
-    s/&lbrace;/\{/g;
-    s/&rbrace;/\}/g;
-    s/&at;/\@/g;
-    s/&amp;/&/g;
-    return $_;
-}
-
-sub add_footnote
-{
-    unless (exists $sects{FOOTNOTES}) {
-       $sects{FOOTNOTES} = "\n=over 4\n\n";
-    }
-
-    $sects{FOOTNOTES} .= "=item $fnno.\n\n"; $fnno++;
-    $sects{FOOTNOTES} .= $_[0];
-    $sects{FOOTNOTES} .= "\n\n";
-}
-
-# stolen from Symbol.pm
-{
-    my $genseq = 0;
-    sub gensym
-    {
-       my $name = "GEN" . $genseq++;
-       my $ref = \*{$name};
-       delete $::{$name};
-       return $ref;
-    }
-}
index 2a888e0..c0019d8 100644 (file)
@@ -1,3 +1,17 @@
+2006-04-10  DJ Delorie  <dj@redhat.com>
+
+       * m32c.opc (parse_unsigned_bitbase): Take a new parameter which
+       decides if this function accepts symbolic constants or not.
+       (parse_signed_bitbase): Likewise.
+       (parse_unsigned_bitbase8): Pass the new parameter.
+       (parse_unsigned_bitbase11): Likewise.
+       (parse_unsigned_bitbase16): Likewise.
+       (parse_unsigned_bitbase19): Likewise.
+       (parse_unsigned_bitbase27): Likewise.
+       (parse_signed_bitbase8): Likewise.
+       (parse_signed_bitbase11): Likewise.
+       (parse_signed_bitbase19): Likewise.
+       
 2006-03-13  DJ Delorie  <dj@redhat.com>
 
        * m32c.cpu (Bit3-S): New.
index f664e9a..6b9ef11 100644 (file)
@@ -608,13 +608,14 @@ parse_Bitno16R (CGEN_CPU_DESC cd, const char **strp,
 static const char *
 parse_unsigned_bitbase (CGEN_CPU_DESC cd, const char **strp,
                        int opindex, unsigned long *valuep,
-                       unsigned bits)
+                       unsigned bits, int allow_syms)
 {
   const char *errmsg = 0;
   unsigned long bit;
   unsigned long base;
   const char *newp = *strp;
   unsigned long long bitbase;
+  long have_zero = 0;
 
   errmsg = cgen_parse_unsigned_integer (cd, & newp, opindex, & bit);
   if (errmsg)
@@ -624,6 +625,11 @@ parse_unsigned_bitbase (CGEN_CPU_DESC cd, const char **strp,
     return "Missing base for bit,base:8";
 
   ++newp;
+
+  if (strncmp (newp, "0x0", 3) == 0 
+      || (newp[0] == '0' && newp[1] != 'x'))
+    have_zero = 1;
+
   errmsg = cgen_parse_unsigned_integer (cd, & newp, opindex, & base);
   if (errmsg)
     return errmsg;
@@ -633,6 +639,21 @@ parse_unsigned_bitbase (CGEN_CPU_DESC cd, const char **strp,
   if (bitbase >= (1ull << bits))
     return _("bit,base is out of range");
 
+  /* If this field may require a relocation then use larger displacement.  */
+  if (! have_zero && base == 0)
+    {
+      switch (allow_syms) {
+      case 0:
+       return _("bit,base out of range for symbol");
+      case 1:
+       break;
+      case 2:
+       if (strncmp (newp, "[sb]", 4) != 0)
+         return _("bit,base out of range for symbol");
+       break;
+      }
+    }
+
   *valuep = bitbase;
   *strp = newp;
   return 0;
@@ -641,7 +662,7 @@ parse_unsigned_bitbase (CGEN_CPU_DESC cd, const char **strp,
 static const char *
 parse_signed_bitbase (CGEN_CPU_DESC cd, const char **strp,
                      int opindex, signed long *valuep,
-                     unsigned bits)
+                     unsigned bits, int allow_syms)
 {
   const char *errmsg = 0;
   unsigned long bit;
@@ -649,6 +670,7 @@ parse_signed_bitbase (CGEN_CPU_DESC cd, const char **strp,
   const char *newp = *strp;
   long long bitbase;
   long long limit;
+  long have_zero = 0;
 
   errmsg = cgen_parse_unsigned_integer (cd, & newp, opindex, & bit);
   if (errmsg)
@@ -658,6 +680,11 @@ parse_signed_bitbase (CGEN_CPU_DESC cd, const char **strp,
     return "Missing base for bit,base:8";
 
   ++newp;
+
+  if (strncmp (newp, "0x0", 3) == 0 
+      || (newp[0] == '0' && newp[1] != 'x'))
+    have_zero = 1;
+
   errmsg = cgen_parse_signed_integer (cd, & newp, opindex, & base);
   if (errmsg)
     return errmsg;
@@ -668,6 +695,10 @@ parse_signed_bitbase (CGEN_CPU_DESC cd, const char **strp,
   if (bitbase < -limit || bitbase >= limit)
     return _("bit,base is out of range");
 
+  /* If this field may require a relocation then use larger displacement.  */
+  if (! have_zero && base == 0 && ! allow_syms)
+    return _("bit,base out of range for symbol");
+
   *valuep = bitbase;
   *strp = newp;
   return 0;
@@ -677,56 +708,56 @@ static const char *
 parse_unsigned_bitbase8 (CGEN_CPU_DESC cd, const char **strp,
                         int opindex, unsigned long *valuep)
 {
-  return parse_unsigned_bitbase (cd, strp, opindex, valuep, 8);
+  return parse_unsigned_bitbase (cd, strp, opindex, valuep, 8, 0);
 }
 
 static const char *
 parse_unsigned_bitbase11 (CGEN_CPU_DESC cd, const char **strp,
                         int opindex, unsigned long *valuep)
 {
-  return parse_unsigned_bitbase (cd, strp, opindex, valuep, 11);
+  return parse_unsigned_bitbase (cd, strp, opindex, valuep, 11, 0);
 }
 
 static const char *
 parse_unsigned_bitbase16 (CGEN_CPU_DESC cd, const char **strp,
                          int opindex, unsigned long *valuep)
 {
-  return parse_unsigned_bitbase (cd, strp, opindex, valuep, 16);
+  return parse_unsigned_bitbase (cd, strp, opindex, valuep, 16, 1);
 }
 
 static const char *
 parse_unsigned_bitbase19 (CGEN_CPU_DESC cd, const char **strp,
                         int opindex, unsigned long *valuep)
 {
-  return parse_unsigned_bitbase (cd, strp, opindex, valuep, 19);
+  return parse_unsigned_bitbase (cd, strp, opindex, valuep, 19, 2);
 }
 
 static const char *
 parse_unsigned_bitbase27 (CGEN_CPU_DESC cd, const char **strp,
                         int opindex, unsigned long *valuep)
 {
-  return parse_unsigned_bitbase (cd, strp, opindex, valuep, 27);
+  return parse_unsigned_bitbase (cd, strp, opindex, valuep, 27, 1);
 }
 
 static const char *
 parse_signed_bitbase8 (CGEN_CPU_DESC cd, const char **strp,
                       int opindex, signed long *valuep)
 {
-  return parse_signed_bitbase (cd, strp, opindex, valuep, 8);
+  return parse_signed_bitbase (cd, strp, opindex, valuep, 8, 1);
 }
 
 static const char *
 parse_signed_bitbase11 (CGEN_CPU_DESC cd, const char **strp,
                       int opindex, signed long *valuep)
 {
-  return parse_signed_bitbase (cd, strp, opindex, valuep, 11);
+  return parse_signed_bitbase (cd, strp, opindex, valuep, 11, 0);
 }
 
 static const char *
 parse_signed_bitbase19 (CGEN_CPU_DESC cd, const char **strp,
                       int opindex, signed long *valuep)
 {
-  return parse_signed_bitbase (cd, strp, opindex, valuep, 19);
+  return parse_signed_bitbase (cd, strp, opindex, valuep, 19, 1);
 }
 
 /* Parse the suffix as :<char> or as nothing followed by a whitespace.  */
diff --git a/djunpack.bat b/djunpack.bat
deleted file mode 100755 (executable)
index f09f5ed..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-@echo off\r
-Rem\r
-Rem WARNING WARNING WARNING: This file needs to have DOS CRLF end-of-line\r
-Rem format, or else stock DOS/Windows shells will refuse to run it.\r
-Rem\r
-Rem This batch file unpacks the GDB distribution while simultaneously\r
-Rem renaming some of the files whose names are invalid on DOS or conflict\r
-Rem with other file names after truncation to DOS 8+3 namespace.\r
-Rem\r
-Rem Invoke like this:\r
-Rem\r
-Rem     djunpack gdb-XYZ.tar\r
-Rem\r
-Rem where XYZ is the version number.  If the argument includes leading\r
-Rem directories, it MUST use backslashes, not forward slashes.\r
-Rem\r
-Rem The following 2 lines need to be changed with each new GDB release, to\r
-Rem be identical to the name of the top-level directory where the GDB\r
-Rem distribution unpacks itself.\r
-set GDBVER=gdb-5.0\r
-if "%GDBVER%"=="gdb-5.0" GoTo EnvOk\r
-Rem If their environment space is too small, re-exec with a larger one\r
-command.com /e:4096 /c %0 %1\r
-GoTo End\r
-:EnvOk\r
-if not exist %1 GoTo NoArchive\r
-djtar -x -p -o %GDBVER%/gdb/config/djgpp/fnchange.lst %1 > fnchange.tmp\r
-Rem The following uses a feature of COPY whereby it does not copy\r
-Rem empty files.  We need that because the previous line will create\r
-Rem an empty fnchange.tmp even if the command failed for some reason.\r
-copy fnchange.tmp junk.tmp > nul\r
-if not exist junk.tmp GoTo NoDjTar\r
-del junk.tmp\r
-sed -e 's,@V@,%GDBVER%,g' < fnchange.tmp > fnchange.lst\r
-Rem See the comment above about the reason for using COPY.\r
-copy fnchange.lst junk.tmp > nul\r
-if not exist junk.tmp GoTo NoSed\r
-del junk.tmp\r
-djtar -x -n fnchange.lst %1\r
-GoTo End\r
-:NoSed\r
-echo FAIL: Sed is not available.\r
-GoTo End\r
-:NoDjTar\r
-echo FAIL: DJTAR is not available or no fnchange.lst file in %1.\r
-GoTo End\r
-:NoArchive\r
-echo FAIL: the file %1 does not seem to exist.\r
-echo Remember that %1 cannot use forward slashes, only backslashes.\r
-GoTo End\r
-:End\r
-set GDBVER=\r
index 64fdee6..a5959c7 100644 (file)
@@ -1,3 +1,19 @@
+2006-05-31  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * texi2pod.pl: Correct handling of absolute @include.
+
+2006-05-02  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * texi2pod.pl: Handle -I.
+
+2006-04-06  Carlos O'Donell  <carlos@codesourcery.com>
+
+       * Makefile.in: Add install-html target. Add htmldir,
+       docdir and datarootdir.
+       * configure.texi: Document install-html target.
+       * configure.in: AC_SUBST datarootdir, docdir, htmldir.
+       * configure: Regenerate.
+
 2006-02-27  Carlos O'Donell  <carlos@codesourcery.com>
 
        * Makefile.in: TEXI2HTML uses makeinfo. Define 
index c2e1ad1..82033e9 100755 (executable)
 #! /bin/sh
-
 # Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.13 
-# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
+# Generated by GNU Autoconf 2.59.
 #
+# Copyright (C) 2003 Free Software Foundation, Inc.
 # This configure script is free software; the Free Software Foundation
 # gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)$' \| \
+        .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+         /^X\/\(\/\/\)$/{ s//\1/; q; }
+         /^X\/\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  case $0 in
+    *[\\/]* ) as_myself=$0 ;;
+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+       ;;
+  esac
+  # We did not find ourselves, most probably we were run as `sh COMMAND'
+  # in which case we are not to be found in the path.
+  if test "x$as_myself" = x; then
+    as_myself=$0
+  fi
+  if test ! -f "$as_myself"; then
+    { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+        case $as_dir in
+        /*)
+          if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+            $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+            $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+            CONFIG_SHELL=$as_dir/$as_base
+            export CONFIG_SHELL
+            exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+          fi;;
+        esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='     ' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
 
-# Defaults:
-ac_help=
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS="  $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
+
+#
+# Initializations.
+#
 ac_default_prefix=/usr/local
-# Any additions from configure.in:
+ac_config_libobj_dir=.
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete.  It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=38}
+
+# Identity of this package.
+PACKAGE_NAME=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+
+ac_unique_file="Makefile.in"
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA datarootdir docdir htmldir LIBOBJS LTLIBOBJS'
+ac_subst_files=''
 
 # Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
 # The variables have the same names as the options, with
 # dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
+cache_file=/dev/null
 exec_prefix=NONE
-host=NONE
 no_create=
-nonopt=NONE
 no_recursion=
 prefix=NONE
 program_prefix=NONE
@@ -29,10 +291,15 @@ program_transform_name=s,x,x,
 silent=
 site=
 srcdir=
-target=NONE
 verbose=
 x_includes=NONE
 x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
 bindir='${exec_prefix}/bin'
 sbindir='${exec_prefix}/sbin'
 libexecdir='${exec_prefix}/libexec'
@@ -46,17 +313,9 @@ oldincludedir='/usr/include'
 infodir='${prefix}/info'
 mandir='${prefix}/man'
 
-# Initialize some other variables.
-subdirs=
-MFLAGS= MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-# Maximum number of lines to put in a shell here document.
-ac_max_here_lines=12
-
 ac_prev=
 for ac_option
 do
-
   # If the previous option needs an argument, assign it.
   if test -n "$ac_prev"; then
     eval "$ac_prev=\$ac_option"
@@ -64,59 +323,59 @@ do
     continue
   fi
 
-  case "$ac_option" in
-  -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
-  *) ac_optarg= ;;
-  esac
+  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
 
   # Accept the important Cygnus configure options, so we can diagnose typos.
 
-  case "$ac_option" in
+  case $ac_option in
 
   -bindir | --bindir | --bindi | --bind | --bin | --bi)
     ac_prev=bindir ;;
   -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir="$ac_optarg" ;;
+    bindir=$ac_optarg ;;
 
   -build | --build | --buil | --bui | --bu)
-    ac_prev=build ;;
+    ac_prev=build_alias ;;
   -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build="$ac_optarg" ;;
+    build_alias=$ac_optarg ;;
 
   -cache-file | --cache-file | --cache-fil | --cache-fi \
   | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
     ac_prev=cache_file ;;
   -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
   | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file="$ac_optarg" ;;
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
 
   -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
     ac_prev=datadir ;;
   -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
   | --da=*)
-    datadir="$ac_optarg" ;;
+    datadir=$ac_optarg ;;
 
   -disable-* | --disable-*)
-    ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
+    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
     # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
-      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-    fi
-    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-    eval "enable_${ac_feature}=no" ;;
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    eval "enable_$ac_feature=no" ;;
 
   -enable-* | --enable-*)
-    ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
+    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
-      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-    fi
-    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-    case "$ac_option" in
-      *=*) ;;
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
       *) ac_optarg=yes ;;
     esac
-    eval "enable_${ac_feature}='$ac_optarg'" ;;
+    eval "enable_$ac_feature='$ac_optarg'" ;;
 
   -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
   | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
@@ -125,95 +384,47 @@ do
   -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
   | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
   | --exec=* | --exe=* | --ex=*)
-    exec_prefix="$ac_optarg" ;;
+    exec_prefix=$ac_optarg ;;
 
   -gas | --gas | --ga | --g)
     # Obsolete; use --with-gas.
     with_gas=yes ;;
 
-  -help | --help | --hel | --he)
-    # Omit some internal or obsolete options to make the list less imposing.
-    # This message is too long to be a string in the A/UX 3.1 sh.
-    cat << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
-  --cache-file=FILE       cache test results in FILE
-  --help                  print this message
-  --no-create             do not create output files
-  --quiet, --silent       do not print \`checking...' messages
-  --version               print the version of autoconf that created configure
-Directory and file names:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [same as prefix]
-  --bindir=DIR            user executables in DIR [EPREFIX/bin]
-  --sbindir=DIR           system admin executables in DIR [EPREFIX/sbin]
-  --libexecdir=DIR        program executables in DIR [EPREFIX/libexec]
-  --datadir=DIR           read-only architecture-independent data in DIR
-                          [PREFIX/share]
-  --sysconfdir=DIR        read-only single-machine data in DIR [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data in DIR
-                          [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data in DIR [PREFIX/var]
-  --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
-  --includedir=DIR        C header files in DIR [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc in DIR [/usr/include]
-  --infodir=DIR           info documentation in DIR [PREFIX/info]
-  --mandir=DIR            man documentation in DIR [PREFIX/man]
-  --srcdir=DIR            find the sources in DIR [configure dir or ..]
-  --program-prefix=PREFIX prepend PREFIX to installed program names
-  --program-suffix=SUFFIX append SUFFIX to installed program names
-  --program-transform-name=PROGRAM
-                          run sed PROGRAM on installed program names
-EOF
-    cat << EOF
-Host type:
-  --build=BUILD           configure for building on BUILD [BUILD=HOST]
-  --host=HOST             configure for HOST [guessed]
-  --target=TARGET         configure for TARGET [TARGET=HOST]
-Features and packages:
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --x-includes=DIR        X include files are in DIR
-  --x-libraries=DIR       X library files are in DIR
-EOF
-    if test -n "$ac_help"; then
-      echo "--enable and --with options recognized:$ac_help"
-    fi
-    exit 0 ;;
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
 
   -host | --host | --hos | --ho)
-    ac_prev=host ;;
+    ac_prev=host_alias ;;
   -host=* | --host=* | --hos=* | --ho=*)
-    host="$ac_optarg" ;;
+    host_alias=$ac_optarg ;;
 
   -includedir | --includedir | --includedi | --included | --include \
   | --includ | --inclu | --incl | --inc)
     ac_prev=includedir ;;
   -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
   | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir="$ac_optarg" ;;
+    includedir=$ac_optarg ;;
 
   -infodir | --infodir | --infodi | --infod | --info | --inf)
     ac_prev=infodir ;;
   -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir="$ac_optarg" ;;
+    infodir=$ac_optarg ;;
 
   -libdir | --libdir | --libdi | --libd)
     ac_prev=libdir ;;
   -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir="$ac_optarg" ;;
+    libdir=$ac_optarg ;;
 
   -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
   | --libexe | --libex | --libe)
     ac_prev=libexecdir ;;
   -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
   | --libexe=* | --libex=* | --libe=*)
-    libexecdir="$ac_optarg" ;;
+    libexecdir=$ac_optarg ;;
 
   -localstatedir | --localstatedir | --localstatedi | --localstated \
   | --localstate | --localstat | --localsta | --localst \
@@ -222,19 +433,19 @@ EOF
   -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
   | --localstate=* | --localstat=* | --localsta=* | --localst=* \
   | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-    localstatedir="$ac_optarg" ;;
+    localstatedir=$ac_optarg ;;
 
   -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
     ac_prev=mandir ;;
   -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir="$ac_optarg" ;;
+    mandir=$ac_optarg ;;
 
   -nfp | --nfp | --nf)
     # Obsolete; use --without-fp.
     with_fp=no ;;
 
   -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c)
+  | --no-cr | --no-c | -n)
     no_create=yes ;;
 
   -no-recursion | --no-recursion | --no-recursio | --no-recursi \
@@ -248,26 +459,26 @@ EOF
   -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
   | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
   | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir="$ac_optarg" ;;
+    oldincludedir=$ac_optarg ;;
 
   -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
     ac_prev=prefix ;;
   -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix="$ac_optarg" ;;
+    prefix=$ac_optarg ;;
 
   -program-prefix | --program-prefix | --program-prefi | --program-pref \
   | --program-pre | --program-pr | --program-p)
     ac_prev=program_prefix ;;
   -program-prefix=* | --program-prefix=* | --program-prefi=* \
   | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix="$ac_optarg" ;;
+    program_prefix=$ac_optarg ;;
 
   -program-suffix | --program-suffix | --program-suffi | --program-suff \
   | --program-suf | --program-su | --program-s)
     ac_prev=program_suffix ;;
   -program-suffix=* | --program-suffix=* | --program-suffi=* \
   | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix="$ac_optarg" ;;
+    program_suffix=$ac_optarg ;;
 
   -program-transform-name | --program-transform-name \
   | --program-transform-nam | --program-transform-na \
@@ -284,7 +495,7 @@ EOF
   | --program-transfo=* | --program-transf=* \
   | --program-trans=* | --program-tran=* \
   | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name="$ac_optarg" ;;
+    program_transform_name=$ac_optarg ;;
 
   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
   | -silent | --silent | --silen | --sile | --sil)
@@ -294,7 +505,7 @@ EOF
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
   | --sbi=* | --sb=*)
-    sbindir="$ac_optarg" ;;
+    sbindir=$ac_optarg ;;
 
   -sharedstatedir | --sharedstatedir | --sharedstatedi \
   | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
@@ -305,58 +516,57 @@ EOF
   | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
   | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
   | --sha=* | --sh=*)
-    sharedstatedir="$ac_optarg" ;;
+    sharedstatedir=$ac_optarg ;;
 
   -site | --site | --sit)
     ac_prev=site ;;
   -site=* | --site=* | --sit=*)
-    site="$ac_optarg" ;;
+    site=$ac_optarg ;;
 
   -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
     ac_prev=srcdir ;;
   -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir="$ac_optarg" ;;
+    srcdir=$ac_optarg ;;
 
   -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
   | --syscon | --sysco | --sysc | --sys | --sy)
     ac_prev=sysconfdir ;;
   -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
   | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir="$ac_optarg" ;;
+    sysconfdir=$ac_optarg ;;
 
   -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target ;;
+    ac_prev=target_alias ;;
   -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target="$ac_optarg" ;;
+    target_alias=$ac_optarg ;;
 
   -v | -verbose | --verbose | --verbos | --verbo | --verb)
     verbose=yes ;;
 
-  -version | --version | --versio | --versi | --vers)
-    echo "configure generated by autoconf version 2.13"
-    exit 0 ;;
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
 
   -with-* | --with-*)
-    ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
+    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
-      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-    fi
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
     ac_package=`echo $ac_package| sed 's/-/_/g'`
-    case "$ac_option" in
-      *=*) ;;
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
       *) ac_optarg=yes ;;
     esac
-    eval "with_${ac_package}='$ac_optarg'" ;;
+    eval "with_$ac_package='$ac_optarg'" ;;
 
   -without-* | --without-*)
-    ac_package=`echo $ac_option|sed -e 's/-*without-//'`
+    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
     # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
-      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-    fi
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
-    eval "with_${ac_package}=no" ;;
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package | sed 's/-/_/g'`
+    eval "with_$ac_package=no" ;;
 
   --x)
     # Obsolete; use --with-x.
@@ -367,99 +577,110 @@ EOF
     ac_prev=x_includes ;;
   -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
   | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes="$ac_optarg" ;;
+    x_includes=$ac_optarg ;;
 
   -x-libraries | --x-libraries | --x-librarie | --x-librari \
   | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
     ac_prev=x_libraries ;;
   -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
   | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries="$ac_optarg" ;;
+    x_libraries=$ac_optarg ;;
 
-  -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
+  -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; }
     ;;
 
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+    eval "$ac_envvar='$ac_optarg'"
+    export $ac_envvar ;;
+
   *)
-    if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
-      echo "configure: warning: $ac_option: invalid host type" 1>&2
-    fi
-    if test "x$nonopt" != xNONE; then
-      { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
-    fi
-    nonopt="$ac_option"
+    # FIXME: should be removed in autoconf 3.0.
+    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
     ;;
 
   esac
 done
 
 if test -n "$ac_prev"; then
-  { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
-fi
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
-  exec 6>/dev/null
-else
-  exec 6>&1
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  { echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
 fi
-exec 5>./config.log
 
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
 
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+             localstatedir libdir includedir oldincludedir infodir mandir
 do
-  case "$ac_arg" in
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c) ;;
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
-  *" "*|*"     "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
-  ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-  *) ac_configure_args="$ac_configure_args $ac_arg" ;;
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* ) ;;
+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
   esac
 done
 
-# NLS nuisances.
-# Only set these to C if already set.  These must not be set unconditionally
-# because not all systems understand e.g. LANG=C (notably SCO).
-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
-# Non-C LC_CTYPE values break the ctype check.
-if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
-if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
 
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
 
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=Makefile.in
 
 # Find the source files, if location was not specified.
 if test -z "$srcdir"; then
   ac_srcdir_defaulted=yes
   # Try the directory containing this script, then its parent.
-  ac_prog=$0
-  ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
-  test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
+  ac_confdir=`(dirname "$0") 2>/dev/null ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$0" : 'X\(//\)[^/]' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| \
+        .     : '\(.\)' 2>/dev/null ||
+echo X"$0" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
   srcdir=$ac_confdir
   if test ! -r $srcdir/$ac_unique_file; then
     srcdir=..
@@ -469,13 +690,422 @@ else
 fi
 if test ! -r $srcdir/$ac_unique_file; then
   if test "$ac_srcdir_defaulted" = yes; then
-    { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+   { (exit 1); exit 1; }; }
   else
-    { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+   { (exit 1); exit 1; }; }
   fi
 fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
+(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+  { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+   { (exit 1); exit 1; }; }
+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=${build_alias+set}
+ac_env_build_alias_value=$build_alias
+ac_cv_env_build_alias_set=${build_alias+set}
+ac_cv_env_build_alias_value=$build_alias
+ac_env_host_alias_set=${host_alias+set}
+ac_env_host_alias_value=$host_alias
+ac_cv_env_host_alias_set=${host_alias+set}
+ac_cv_env_host_alias_value=$host_alias
+ac_env_target_alias_set=${target_alias+set}
+ac_env_target_alias_value=$target_alias
+ac_cv_env_target_alias_set=${target_alias+set}
+ac_cv_env_target_alias_value=$target_alias
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+_ACEOF
+
+  cat <<_ACEOF
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                         [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                         [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR           user executables [EPREFIX/bin]
+  --sbindir=DIR          system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR       program executables [EPREFIX/libexec]
+  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
+  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
+  --libdir=DIR           object code libraries [EPREFIX/lib]
+  --includedir=DIR       C header files [PREFIX/include]
+  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
+  --infodir=DIR          info documentation [PREFIX/info]
+  --mandir=DIR           man documentation [PREFIX/man]
+_ACEOF
+
+  cat <<\_ACEOF
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+
+  cat <<\_ACEOF
+
+_ACEOF
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  ac_popdir=`pwd`
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d $ac_dir || continue
+    ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+    cd $ac_dir
+    # Check for guested configure; otherwise get Cygnus style configure.
+    if test -f $ac_srcdir/configure.gnu; then
+      echo
+      $SHELL $ac_srcdir/configure.gnu  --help=recursive
+    elif test -f $ac_srcdir/configure; then
+      echo
+      $SHELL $ac_srcdir/configure  --help=recursive
+    elif test -f $ac_srcdir/configure.ac ||
+          test -f $ac_srcdir/configure.in; then
+      echo
+      $ac_configure --help
+    else
+      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi
+    cd $ac_popdir
+  done
+fi
+
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+  cat <<\_ACEOF
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit 0
+fi
+exec 5>config.log
+cat >&5 <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by $as_me, which was
+generated by GNU Autoconf 2.59.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+hostinfo               = `(hostinfo) 2>/dev/null               || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  echo "PATH: $as_dir"
+done
 
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_sep=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *" "*|*"   "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+    2)
+      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+       ac_must_keep_next=false # Got value, back to normal.
+      else
+       case $ac_arg in
+         *=* | --config-cache | -C | -disable-* | --disable-* \
+         | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+         | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+         | -with-* | --with-* | -without-* | --without-* | --x)
+           case "$ac_configure_args0 " in
+             "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+           esac
+           ;;
+         -* ) ac_must_keep_next=true ;;
+       esac
+      fi
+      ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+      # Get rid of the leading space.
+      ac_sep=" "
+      ;;
+    esac
+  done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Be sure not to use single quotes in there, as some shells,
+# such as our DU 5.0 friend, will then `close' the trap.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+{
+  (set) 2>&1 |
+    case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      sed -n \
+       "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+      ;;
+    *)
+      sed -n \
+       "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+}
+    echo
+
+    cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=$`echo $ac_var`
+      echo "$ac_var='"'"'$ac_val'"'"'"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      cat <<\_ASBOX
+## ------------- ##
+## Output files. ##
+## ------------- ##
+_ASBOX
+      echo
+      for ac_var in $ac_subst_files
+      do
+       eval ac_val=$`echo $ac_var`
+       echo "$ac_var='"'"'$ac_val'"'"'"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+      echo
+      sed "/^$/d" confdefs.h | sort
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      echo "$as_me: caught signal $ac_signal"
+    echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core &&
+  rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+     ' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo >confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
 # Prefer explicitly selected file to automatically selected ones.
 if test -z "$CONFIG_SITE"; then
   if test "x$prefix" != xNONE; then
@@ -486,40 +1116,104 @@ if test -z "$CONFIG_SITE"; then
 fi
 for ac_site_file in $CONFIG_SITE; do
   if test -r "$ac_site_file"; then
-    echo "loading site script $ac_site_file"
+    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
     . "$ac_site_file"
   fi
 done
 
 if test -r "$cache_file"; then
-  echo "loading cache $cache_file"
-  . $cache_file
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . $cache_file;;
+      *)                      . ./$cache_file;;
+    esac
+  fi
 else
-  echo "creating cache $cache_file"
-  > $cache_file
+  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
 fi
 
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-ac_exeext=
-ac_objext=o
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
-  # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
-  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
-    ac_n= ac_c='
-' ac_t='       '
-  else
-    ac_n=-n ac_c= ac_t=
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in `(set) 2>&1 |
+              sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+  eval ac_new_val="\$ac_env_${ac_var}_value"
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+       { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+       { echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
+echo "$as_me:   former value:  $ac_old_val" >&2;}
+       { echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
+echo "$as_me:   current value: $ac_new_val" >&2;}
+       ac_cache_corrupted=:
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *" "*|*"   "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+      ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+    esac
   fi
-else
-  ac_n= ac_c='\c' ac_t=
+done
+if $ac_cache_corrupted; then
+  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+   { (exit 1); exit 1; }; }
 fi
 
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 ac_aux_dir=
@@ -532,14 +1226,20 @@ for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
     ac_aux_dir=$ac_dir
     ac_install_sh="$ac_aux_dir/install.sh -c"
     break
+  elif test -f $ac_dir/shtool; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
   fi
 done
 if test -z "$ac_aux_dir"; then
-  { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
+  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
+   { (exit 1); exit 1; }; }
 fi
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
 
 # Find a good install program.  We prefer a C program (faster),
 # so one script is as good as another.  But avoid the broken or
@@ -548,60 +1248,75 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
 # SunOS /usr/etc/install
 # IRIX /sbin/install
 # AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
 # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
 # AFS /usr/afsws/bin/install, which mishandles nonexistent args
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
 # ./install, which can be erroneously created by make from ./install.sh.
-echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:557: checking for a BSD compatible install" >&5
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
 if test -z "$INSTALL"; then
-if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+if test "${ac_cv_path_install+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-    IFS="${IFS=        }"; ac_save_IFS="$IFS"; IFS=":"
-  for ac_dir in $PATH; do
-    # Account for people who put trailing slashes in PATH elements.
-    case "$ac_dir/" in
-    /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
-    *)
-      # OSF1 and SCO ODT 3.0 have their own names for install.
-      # Don't use installbsd from OSF since it installs stuff as root
-      # by default.
-      for ac_prog in ginstall scoinst install; do
-        if test -f $ac_dir/$ac_prog; then
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+  ./ | .// | /cC/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+       if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
          if test $ac_prog = install &&
-            grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
+           grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
            # AIX install.  It has an incompatible calling convention.
            :
+         elif test $ac_prog = install &&
+           grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+           # program-specific install script used by HP pwplus--don't use.
+           :
          else
-           ac_cv_path_install="$ac_dir/$ac_prog -c"
-           break 2
+           ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+           break 3
          fi
        fi
       done
-      ;;
-    esac
-  done
-  IFS="$ac_save_IFS"
+    done
+    ;;
+esac
+done
+
 
 fi
   if test "${ac_cv_path_install+set}" = set; then
-    INSTALL="$ac_cv_path_install"
+    INSTALL=$ac_cv_path_install
   else
     # As a last resort, use the slow shell script.  We don't cache a
     # path for INSTALL within a source directory, because that will
     # break other packages using the cache if that directory is
     # removed, or if the path is relative.
-    INSTALL="$ac_install_sh"
+    INSTALL=$ac_install_sh
   fi
 fi
-echo "$ac_t""$INSTALL" 1>&6
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
 
 # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
 # It thinks the first close brace ends the variable substitution.
 test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
 
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
 
 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
@@ -611,69 +1326,81 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
 
 
-trap '' 1 2 15
-cat > confcache <<\EOF
+          ac_config_files="$ac_config_files Makefile"
+cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
-# scripts and configure runs.  It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
 #
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already.  You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
 #
-EOF
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
 # The following way of writing the cache mishandles newlines in values,
 # but we know of no workaround that is simple, portable, and efficient.
 # So, don't put newlines in cache variables' values.
 # Ultrix sh set writes to stderr and can't be redirected directly,
 # and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
-  case `(ac_space=' '; set | grep ac_space) 2>&1` in
-  *ac_space=\ *)
-    # `set' does not quote correctly, so add quotes (double-quote substitution
-    # turns \\\\ into \\, and sed turns \\ into \).
-    sed -n \
-      -e "s/'/'\\\\''/g" \
-      -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
-    ;;
-  *)
-    # `set' quotes correctly as required by POSIX, so do not add quotes.
-    sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
-    ;;
-  esac >> confcache
-if cmp -s $cache_file confcache; then
-  :
-else
+{
+  (set) 2>&1 |
+    case `(ac_space=' '; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      # `set' does not quote correctly, so add quotes (double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      sed -n \
+       "s/'/'\\\\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;;
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n \
+       "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+} |
+  sed '
+     t clear
+     : clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     : end' >>confcache
+if diff $cache_file confcache >/dev/null 2>&1; then :; else
   if test -w $cache_file; then
-    echo "updating cache $cache_file"
-    cat confcache > $cache_file
+    test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+    cat confcache >$cache_file
   else
     echo "not updating unwritable cache $cache_file"
   fi
 fi
 rm -f confcache
 
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
 test "x$prefix" = xNONE && prefix=$ac_default_prefix
 # Let make expand exec_prefix.
 test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
 
-# Any assignment to VPATH causes Sun make to only execute
-# the first set of double-colon rules, so remove it if not needed.
-# If there is a colon in the path, we need to keep it.
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
 if test "x$srcdir" = x.; then
-  ac_vpsub='/^[        ]*VPATH[        ]*=[^:]*$/d'
+  ac_vpsub='/^[         ]*VPATH[        ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[    ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[      ]*$//;
+}'
 fi
 
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
 # Transform confdefs.h into DEFS.
 # Protect against shell expansion while executing Makefile rules.
 # Protect against Makefile macro expansion.
@@ -684,13 +1411,13 @@ trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
 cat >confdef2opt.sed <<\_ACEOF
 t clear
 : clear
-s,^[   ]*#[    ]*define[       ][      ]*\([^  (][^    (]*([^)]*)\)[   ]*\(.*\),-D\1=\2,g
+s,^[    ]*#[    ]*define[       ][      ]*\([^  (][^    (]*([^)]*)\)[   ]*\(.*\),-D\1=\2,g
 t quote
-s,^[   ]*#[    ]*define[       ][      ]*\([^  ][^     ]*\)[   ]*\(.*\),-D\1=\2,g
+s,^[    ]*#[    ]*define[       ][      ]*\([^  ][^     ]*\)[   ]*\(.*\),-D\1=\2,g
 t quote
 d
 : quote
-s,[    `~#$^&*(){}\\|;'"<>?],\\&,g
+s,[     `~#$^&*(){}\\|;'"<>?],\\&,g
 s,\[,\\&,g
 s,\],\\&,g
 s,\$,$$,g
@@ -707,189 +1434,807 @@ DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'`
 rm -f confdef2opt.sed
 
 
-# Without the "./", some shells look in PATH for config.status.
-: ${CONFIG_STATUS=./config.status}
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_i=`echo "$ac_i" |
+        sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+  # 2. Add them.
+  ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+  ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
 
-echo creating $CONFIG_STATUS
-rm -f $CONFIG_STATUS
-cat > $CONFIG_STATUS <<EOF
-#! /bin/sh
-# Generated automatically by configure.
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
 # Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# $0 $ac_configure_args
-#
 # Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
+# configure, is in config.log if it exists.
 
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
 do
-  case "\$ac_option" in
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
-    exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
-  -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
-    echo "$CONFIG_STATUS generated by autoconf version 2.13"
-    exit 0 ;;
-  -help | --help | --hel | --he | --h)
-    echo "\$ac_cs_usage"; exit 0 ;;
-  *) echo "\$ac_cs_usage"; exit 1 ;;
-  esac
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
 done
 
-ac_given_srcdir=$srcdir
-ac_given_INSTALL="$INSTALL"
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
 
-trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-EOF
-cat >> $CONFIG_STATUS <<EOF
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
 
-# Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
-$ac_vpsub
-$extrasub
-s%@SHELL@%$SHELL%g
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@FFLAGS@%$FFLAGS%g
-s%@DEFS@%$DEFS%g
-s%@LDFLAGS@%$LDFLAGS%g
-s%@LIBS@%$LIBS%g
-s%@exec_prefix@%$exec_prefix%g
-s%@prefix@%$prefix%g
-s%@program_transform_name@%$program_transform_name%g
-s%@bindir@%$bindir%g
-s%@sbindir@%$sbindir%g
-s%@libexecdir@%$libexecdir%g
-s%@datadir@%$datadir%g
-s%@sysconfdir@%$sysconfdir%g
-s%@sharedstatedir@%$sharedstatedir%g
-s%@localstatedir@%$localstatedir%g
-s%@libdir@%$libdir%g
-s%@includedir@%$includedir%g
-s%@oldincludedir@%$oldincludedir%g
-s%@infodir@%$infodir%g
-s%@mandir@%$mandir%g
-s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
-s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
-s%@INSTALL_DATA@%$INSTALL_DATA%g
-s%@datarootdir@%$datarootdir%g
-s%@docdir@%$docdir%g
-s%@htmldir@%$htmldir%g
 
-CEOF
-EOF
-
-cat >> $CONFIG_STATUS <<\EOF
-
-# Split the substitutions into bite-sized pieces for seds with
-# small command number limits, like on Digital OSF/1 and HP-UX.
-ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
-ac_file=1 # Number of current file.
-ac_beg=1 # First line for current file.
-ac_end=$ac_max_sed_cmds # Line after last line for current file.
-ac_more_lines=:
-ac_sed_cmds=""
-while $ac_more_lines; do
-  if test $ac_beg -gt 1; then
-    sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)$' \| \
+        .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+         /^X\/\(\/\/\)$/{ s//\1/; q; }
+         /^X\/\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
   else
-    sed "${ac_end}q" conftest.subs > conftest.s$ac_file
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  case $0 in
+    *[\\/]* ) as_myself=$0 ;;
+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+       ;;
+  esac
+  # We did not find ourselves, most probably we were run as `sh COMMAND'
+  # in which case we are not to be found in the path.
+  if test "x$as_myself" = x; then
+    as_myself=$0
   fi
-  if test ! -s conftest.s$ac_file; then
-    ac_more_lines=false
-    rm -f conftest.s$ac_file
+  if test ! -f "$as_myself"; then
+    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+        case $as_dir in
+        /*)
+          if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+            $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+            $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+            CONFIG_SHELL=$as_dir/$as_base
+            export CONFIG_SHELL
+            exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+          fi;;
+        esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='     ' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
   else
-    if test -z "$ac_sed_cmds"; then
-      ac_sed_cmds="sed -f conftest.s$ac_file"
-    else
-      ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
-    fi
-    ac_file=`expr $ac_file + 1`
-    ac_beg=$ac_end
-    ac_end=`expr $ac_end + $ac_max_sed_cmds`
+    as_ln_s='ln -s'
   fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS="  $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.  Logging --version etc. is OK.
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.59.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+  echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+  echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+  echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+  echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number, then exit
+  -q, --quiet      do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+  --file=FILE[:TEMPLATE]
+                  instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Report bugs to <bug-autoconf@gnu.org>."
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.59,
+  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+INSTALL="$INSTALL"
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value.  By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "x$1" : 'x\([^=]*\)='`
+    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  -*)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  *) # This is not an option, so the user has probably given explicit
+     # arguments.
+     ac_option=$1
+     ac_need_defaults=false;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --vers* | -V )
+    echo "$ac_cs_version"; exit 0 ;;
+  --he | --h)
+    # Conflict between --help and --header
+    { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    echo "$ac_cs_usage"; exit 0 ;;
+  --debug | --d* | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+    ac_need_defaults=false;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$ac_config_targets $1" ;;
+
+  esac
+  shift
 done
-if test -z "$ac_sed_cmds"; then
-  ac_sed_cmds=cat
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+if \$ac_cs_recheck; then
+  echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+  exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
 fi
-EOF
 
-cat >> $CONFIG_STATUS <<EOF
+_ACEOF
 
-CONFIG_FILES=\${CONFIG_FILES-"Makefile"}
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-  case "$ac_file" in
-  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
-       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-  *) ac_file_in="${ac_file}.in" ;;
+
+
+
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_config_target in $ac_config_targets
+do
+  case "$ac_config_target" in
+  # Handling of arguments.
+  "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
   esac
+done
 
-  # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+fi
 
-  # Remove last slash and all that follows it.  Not all systems have dirname.
-  ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
-  if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-    # The file is in a subdirectory.
-    test ! -d "$ac_dir" && mkdir "$ac_dir"
-    ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
-    # A "../" for each directory in $ac_dir_suffix.
-    ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
-  else
-    ac_dir_suffix= ac_dots=
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./confstat$$-$RANDOM
+  (umask 077 && mkdir $tmp)
+} ||
+{
+   echo "$me: cannot create a temporary directory in ." >&2
+   { (exit 1); exit 1; }
+}
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+  # Protect against being on the right side of a sed subst in config.status.
+  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s,@SHELL@,$SHELL,;t t
+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s,@exec_prefix@,$exec_prefix,;t t
+s,@prefix@,$prefix,;t t
+s,@program_transform_name@,$program_transform_name,;t t
+s,@bindir@,$bindir,;t t
+s,@sbindir@,$sbindir,;t t
+s,@libexecdir@,$libexecdir,;t t
+s,@datadir@,$datadir,;t t
+s,@sysconfdir@,$sysconfdir,;t t
+s,@sharedstatedir@,$sharedstatedir,;t t
+s,@localstatedir@,$localstatedir,;t t
+s,@libdir@,$libdir,;t t
+s,@includedir@,$includedir,;t t
+s,@oldincludedir@,$oldincludedir,;t t
+s,@infodir@,$infodir,;t t
+s,@mandir@,$mandir,;t t
+s,@build_alias@,$build_alias,;t t
+s,@host_alias@,$host_alias,;t t
+s,@target_alias@,$target_alias,;t t
+s,@DEFS@,$DEFS,;t t
+s,@ECHO_C@,$ECHO_C,;t t
+s,@ECHO_N@,$ECHO_N,;t t
+s,@ECHO_T@,$ECHO_T,;t t
+s,@LIBS@,$LIBS,;t t
+s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+s,@datarootdir@,$datarootdir,;t t
+s,@docdir@,$docdir,;t t
+s,@htmldir@,$htmldir,;t t
+s,@LIBOBJS@,$LIBOBJS,;t t
+s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+CEOF
+
+_ACEOF
+
+  cat >>$CONFIG_STATUS <<\_ACEOF
+  # Split the substitutions into bite-sized pieces for seds with
+  # small command number limits, like on Digital OSF/1 and HP-UX.
+  ac_max_sed_lines=48
+  ac_sed_frag=1 # Number of current file.
+  ac_beg=1 # First line for current file.
+  ac_end=$ac_max_sed_lines # Line after last line for current file.
+  ac_more_lines=:
+  ac_sed_cmds=
+  while $ac_more_lines; do
+    if test $ac_beg -gt 1; then
+      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    else
+      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    fi
+    if test ! -s $tmp/subs.frag; then
+      ac_more_lines=false
+    else
+      # The purpose of the label and of the branching condition is to
+      # speed up the sed processing (if there are no `@' at all, there
+      # is no need to browse any of the substitutions).
+      # These are the two extra sed commands mentioned above.
+      (echo ':t
+  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+      if test -z "$ac_sed_cmds"; then
+       ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+      else
+       ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+      fi
+      ac_sed_frag=`expr $ac_sed_frag + 1`
+      ac_beg=$ac_end
+      ac_end=`expr $ac_end + $ac_max_sed_lines`
+    fi
+  done
+  if test -z "$ac_sed_cmds"; then
+    ac_sed_cmds=cat
   fi
+fi # test -n "$CONFIG_FILES"
 
-  case "$ac_given_srcdir" in
-  .)  srcdir=.
-      if test -z "$ac_dots"; then top_srcdir=.
-      else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
-  /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
-  *) # Relative path.
-    srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
-    top_srcdir="$ac_dots$ac_given_srcdir" ;;
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+       cat >$tmp/stdin
+       ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+       ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+       ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
   esac
 
-  case "$ac_given_INSTALL" in
-  [/$]*) INSTALL="$ac_given_INSTALL" ;;
-  *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
-  esac
+  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+  ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$ac_file" : 'X\(//\)[^/]' \| \
+        X"$ac_file" : 'X\(//\)$' \| \
+        X"$ac_file" : 'X\(/\)' \| \
+        .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+  { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| \
+        .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+  ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
 
-  echo creating "$ac_file"
-  rm -f "$ac_file"
-  configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
-  case "$ac_file" in
-  *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
-  *) ac_comsub= ;;
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
   esac
 
-  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
-  sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-s%@INSTALL@%$INSTALL%g
-" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
-fi; done
-rm -f conftest.s*
+  if test x"$ac_file" != x-; then
+    { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    rm -f "$ac_file"
+  fi
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated by config.status.  */
+  if test x"$ac_file" = x-; then
+    configure_input=
+  else
+    configure_input="$ac_file.  "
+  fi
+  configure_input=$configure_input"Generated from `echo $ac_file_in |
+                                    sed 's,.*/,,'` by configure."
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+        # Absolute (can't be DOS-style, as IFS=:)
+        test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+        echo "$f";;
+      *) # Relative
+        if test -f "$f"; then
+          # Build tree
+          echo "$f"
+        elif test -f "$srcdir/$f"; then
+          # Source tree
+          echo "$srcdir/$f"
+        else
+          # /dev/null tree
+          { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+        fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+  sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;t t
+s,@srcdir@,$ac_srcdir,;t t
+s,@abs_srcdir@,$ac_abs_srcdir,;t t
+s,@top_srcdir@,$ac_top_srcdir,;t t
+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s,@builddir@,$ac_builddir,;t t
+s,@abs_builddir@,$ac_abs_builddir,;t t
+s,@top_builddir@,$ac_top_builddir,;t t
+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+s,@INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+  rm -f $tmp/stdin
+  if test x"$ac_file" != x-; then
+    mv $tmp/out $ac_file
+  else
+    cat $tmp/out
+    rm -f $tmp/out
+  fi
 
-EOF
-cat >> $CONFIG_STATUS <<EOF
+done
+_ACEOF
 
-EOF
-cat >> $CONFIG_STATUS <<\EOF
+cat >>$CONFIG_STATUS <<\_ACEOF
 
-exit 0
-EOF
+{ (exit 0); exit 0; }
+_ACEOF
 chmod +x $CONFIG_STATUS
-rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || { (exit 1); exit 1; }
+fi
 
index 9696a12..ed0d102 100644 (file)
@@ -36,6 +36,7 @@ $shift = "";
 $fnno = 1;
 $inf = "";
 $ibase = "";
+@ipath = ();
 
 while ($_ = shift) {
     if (/^-D(.*)$/) {
@@ -51,6 +52,13 @@ while ($_ = shift) {
        die "flags may only contain letters, digits, hyphens, dashes and underscores\n"
            unless $flag =~ /^[a-zA-Z0-9_-]+$/;
        $defs{$flag} = $value;
+    } elsif (/^-I(.*)$/) {
+       if ($1 ne "") {
+           $flag = $1;
+       } else {
+           $flag = shift;
+       }
+        push (@ipath, $flag);
     } elsif (/^-/) {
        usage();
     } else {
@@ -229,10 +237,14 @@ while(<$inf>) {
        $inf = gensym();
        $file = postprocess($1);
 
-       # Try cwd and $ibase.
-       open($inf, "<" . $file) 
-           or open($inf, "<" . $ibase . "/" . $file)
-               or die "cannot open $file or $ibase/$file: $!\n";
+       # Try cwd and $ibase, then explicit -I paths.
+       $done = 0;
+       foreach $path ("", $ibase, @ipath) {
+           $mypath = $file;
+           $mypath = $path . "/" . $mypath if ($path ne "");
+           open($inf, "<" . $mypath) and ($done = 1, last);
+       }
+       die "cannot find $file" if !$done;
        next;
     };
 
index 53f3bb2..18b9b4e 100644 (file)
@@ -1,3 +1,302 @@
+2006-06-07  Joseph S. Myers  <joseph@codesourcery.com>
+
+       * po/Make-in (pdf, ps): New dummy targets.
+
+2006-06-02  Joseph S. Myers  <joseph@codesourcery.com>
+
+       * doc/Makefile.am (TEXI2DVI): Define.
+       * doc/Makefile.in: Regenerate.
+       * doc/c-arc.texi: Fix typo.
+
+2006-05-30  Nick Clifton  <nickc@redhat.com>
+
+       * po/es.po: Updated Spanish translation.
+
+2006-05-25  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * gas/config/tc-m68k.c (m68k_init_arch): Move checking of
+       cfloat/m68881 to correct architecture before using it.
+
+2006-05-16  Nick Clifton  <nickc@redhat.com>
+
+       * Import these patches from the mainline:
+
+       2006-05-16  Bjoern Haase  <bjoern.m.haase@web.de>
+
+        * config/tc-avr.h (TC_VALIDATE_FIX): Allow fixups for immediate
+       constant values.
+
+       2006-05-05  Bjoern Haase  <bjoern.m.haase@web.de>
+
+       * gas/config/tc-avr.h (TC_VALIDATE_FIX): Define.  Disable fixups
+       for PMEM related expressions.
+
+2006-05-11  Thiemo Seufer  <ths@mips.com>
+
+       * config/tc-mips.c (append_insn): Don't check the range of j or
+       jal addresses.
+
+2006-05-10  Alan Modra  <amodra@bigpond.net.au>
+
+       * dwarf2dbg.c (get_line_subseg): Attach new struct line_seg to end
+       of list rather than beginning.
+
+2006-05-10  Alan Modra  <amodra@bigpond.net.au>
+
+       * write.c (relax_segment): Add pass count arg.  Don't error on
+       negative org/space on first two passes.
+       (relax_seg_info): New struct.
+       (relax_seg, write_object_file): Adjust.
+       * write.h (relax_segment): Update prototype.
+
+2006-05-02  Joseph Myers  <joseph@codesourcery.com>
+
+       * config/tc-arm.c (do_iwmmxt_wldstbh): Don't multiply offset by 4
+       here.
+       (md_apply_fix3): Multiply offset by 4 here for
+       BFD_RELOC_ARM_CP_OFF_IMM_S2 and BFD_RELOC_ARM_T32_CP_OFF_IMM_S2.
+
+2006-05-02  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * doc/Makefile.am (AM_MAKEINFOFLAGS): New.
+       (TEXI2POD): Use AM_MAKEINFOFLAGS.
+       (asconfig.texi): Don't set top_srcdir.
+       * doc/as.texinfo: Don't use top_srcdir.
+       * aclocal.m4, Makefile.in, doc/Makefile.in: Regenerated.
+
+2006-05-02  Paul Brook  <paul@codesourcery.com>
+
+       * config/tc-arm.c (arm_optimize_expr): New function.
+       * config/tc-arm.h (md_optimize_expr): Define
+       (arm_optimize_expr): Add prototype.
+       (TC_FORCE_RELOCATION_SUB_SAME): Define.
+
+2006-05-01  James Lemke  <jwlemke@wasabisystems.com>
+
+       * subsegs.c (subseg_set_rest): Always set seginfp->frchainP if NULL.
+
+2006-04-25  Bob Wilson  <bob.wilson@acm.org>
+
+       * config/xtensa-relax.c (widen_spec_list): Use new "WIDE.<opcode>"
+       syntax instead of hardcoded opcodes with ".w18" suffixes.
+       (wide_branch_opcode): New.
+       (build_transition): Use it to check for wide branch opcodes with
+       either ".w18" or ".w15" suffixes.
+
+2006-04-25  Bob Wilson  <bob.wilson@acm.org>
+
+       * config/tc-xtensa.c (xtensa_create_literal_symbol,
+       xg_assemble_literal, xg_assemble_literal_space): Do not set the
+       frag's is_literal flag.
+
+2006-04-25  Bob Wilson  <bob.wilson@acm.org>
+
+       * config/xtensa-relax.c (XCHAL_HAVE_WIDE_BRANCHES): Provide default.
+
+2006-04-16  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * po/POTFILES.in: Regenerated.
+
+2006-04-14  Sterling Augustine  <sterling@tensilica.com>
+
+       * config/tc-xtensa.c (emit_single_op): Do not relax MOVI
+       instructions when such transformations have been disabled.
+
+2006-04-10  Sterling Augustine  <sterling@tensilica.com>
+
+       * config/tc-xtensa.c (xg_assemble_vliw_tokens): Record loop target
+       symbols in RELAX[_CHECK]_ALIGN_NEXT_OPCODE frags.
+       (xtensa_fix_close_loop_end_frags): Use the recorded values instead of
+       decoding the loop instructions.  Remove current_offset variable.
+       (xtensa_fix_short_loop_frags): Likewise.
+       (min_bytes_to_other_loop_end): Remove current_offset argument.
+
+2006-04-09  Arnold Metselaar  <arnold.metselaar@planet.nl>
+
+       * config/tc-z80.c (z80_optimize_expr): Removed; redundant since 2006-04-04.
+       * config/tc-z80.h (z80_optimize_expr, md_optimize_expr): Removed.
+
+2006-04-07  Joerg Wunsch <j.gnu@uriah.heep.sax.de>
+
+       * gas/config/tc-avr.c (mcu_types): Add support for attiny261,
+       attiny461, attiny861, attiny25, attiny45, attiny85,attiny24,
+       attiny44, attiny84, at90pwm2, at90pwm3, atmega164, atmega324,
+       atmega644, atmega329, atmega3290, atmega649, atmega6490,
+       atmega406, atmega640, atmega1280, atmega1281, at90can32,
+       at90can64, at90usb646, at90usb647, at90usb1286 and
+       at90usb1287.
+       Move atmega48 and atmega88 from AVR_ISA_M8 to AVR_ISA_PWMx.
+
+2006-04-07  Paul Brook  <paul@codesourcery.com>
+
+       * config/tc-arm.c (parse_operands): Set default error message.
+
+2006-04-07  Paul Brook  <paul@codesourcery.com>
+
+       * config/tc-arm.c (parse_tb): Set inst.error before returning FAIL.
+
+2006-04-07  Paul Brook  <paul@codesourcery.com>
+
+       * config/tc-arm.c (md_apply_fix): Set H bit on blx instruction.
+
+2006-04-07  Paul Brook  <paul@codesourcery.com>
+
+       * config/tc-arm.c (THUMB2_LOAD_BIT): Define.
+       (move_or_literal_pool): Handle Thumb-2 instructions.
+       (do_t_ldst): Call move_or_literal_pool for =N addressing modes.
+
+2006-04-07  Alan Modra  <amodra@bigpond.net.au>
+
+       PR 2512.
+       * config/tc-i386.c (match_template): Move 64-bit operand tests
+       inside loop.
+
+2006-04-06  Carlos O'Donell  <carlos@codesourcery.com>
+
+       * po/Make-in: Add install-html target.
+       * Makefile.am: Add install-html and install-html-recursive targets.
+       * Makefile.in: Regenerate.
+       * configure.in: AC_SUBST datarootdir, docdir, htmldir.
+       * configure: Regenerate.
+       * doc/Makefile.am: Add install-html and install-html-am targets.
+       * doc/Makefile.in: Regenerate.
+
+2006-04-06  Alan Modra  <amodra@bigpond.net.au>
+
+       * frags.c (frag_offset_fixed_p): Reinitialise offset before
+       second scan.
+
+2006-04-05  Richard Sandiford  <richard@codesourcery.com>
+           Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * config/tc-sparc.c (sparc_target_format): Handle TE_VXWORKS.
+       (GOTT_BASE, GOTT_INDEX): New.
+       (tc_gen_reloc): Don't alter relocations against GOTT_BASE and
+       GOTT_INDEX when generating VxWorks PIC.
+       * configure.tgt (sparc*-*-vxworks*): Remove this special case;
+       use the generic *-*-vxworks* stanza instead.
+
+2006-04-04  Alan Modra  <amodra@bigpond.net.au>
+
+       PR 997
+       * frags.c (frag_offset_fixed_p): New function.
+       * frags.h (frag_offset_fixed_p): Declare.
+       * expr.c (expr): Use frag_offset_fixed_p when simplifying subtraction.
+       (resolve_expression): Likewise.
+
+2006-04-03  Sterling Augustine  <sterling@tensilica.com>
+
+       * config/tc-xtensa.c (init_op_placement_info_table): Check for formats
+       of the same length but different numbers of slots.
+
+2006-03-30  Andreas Schwab  <schwab@suse.de>
+
+       * configure.in: Fix help string for --enable-targets option.
+       * configure: Regenerate.
+
+2006-03-28  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * gas/config/tc-m68k.c (find_cf_chip): Merge into ...
+       (m68k_ip): ... here.  Use for all chips.  Protect against buffer
+       overrun and avoid excessive copying.
+
+       * config/tc-m68k.c (m68000_control_regs, m68010_control_regs,
+       m68020_control_regs, m68040_control_regs, m68060_control_regs,
+       mcf_control_regs, mcf5208_control_regs, mcf5213_control_regs,
+       mcf5329_control_regs, mcf5249_control_regs, mcf528x_control_regs,
+       mcfv4e_control_regs, m68010_control_regs): Rename and reorder to ...
+       (m68000_ctrl, m68010_ctrl, m68020_ctrl, m68040_ctrl, m68060_ctrl,
+       mcf_ctrl, mcf5208_ctrl, mcf5213_ctrl, mcf5235_ctrl, mcf5249_ctrl, 
+       mcf5216_ctrl, mcf5250_ctrl, mcf5271_ctrl, mcf5272_ctrl,
+       mcf5282_ctrl, mcfv4e_ctrl): ... these.
+       (mcf5275_ctrl, mcf5329_ctrl, mcf5373_ctrl): New.
+       (struct m68k_cpu): Change chip field to control_regs.
+       (current_chip): Remove.
+       (control_regs): New.
+       (m68k_archs, m68k_extensions): Adjust.
+       (m68k_cpus): Reorder to be in cpu number order.  Adjust.
+       (CPU_ALLOW_MC, CPU_ALLOW_NEGATION): Remove.
+       (find_cf_chip): Reimplement for new organization of cpu table.
+       (select_control_regs): Remove.
+       (mri_chip): Adjust.
+       (struct save_opts): Save control regs, not chip.
+       (s_save, s_restore): Adjust.
+       (m68k_lookup_cpu): Give deprecated warning when necessary.
+       (m68k_init_arch): Adjust.
+       (md_show_usage): Adjust for new cpu table organization.
+
+2006-03-25  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+       * config/bfin-defs.h (Expr_Node_Type enum): Add Expr_Node_GOT_Reloc.
+       * config/bfin-lex.l: Recognize GOT17M4 and FUNCDESC_GOT17M4.
+       * config/bfin-parse.y: Include "libbfd.h", "elf/common.h" and
+       "elf/bfin.h".
+       (GOT17M4, FUNCDESC_GOT17M4): New tokens of type <value>.
+       (any_gotrel): New rule.
+       (got): Use it, and create Expr_Node_GOT_Reloc nodes.
+       * config/tc-bfin.c: Include "libbfd.h", "elf/common.h" and
+       "elf/bfin.h".
+       (DEFAULT_FLAGS, bfin_flags, bfin_pic_flag): New.
+       (bfin_pic_ptr): New function.
+       (md_pseudo_table): Add it for ".picptr".
+       (OPTION_FDPIC): New macro.
+       (md_longopts): Add -mfdpic.
+       (md_parse_option): Handle it.
+       (md_begin): Set BFD flags.
+       (md_apply_fix3, bfin_fix_adjustable): Handle new relocs.
+       (bfin_gen_ldstidxi): Adjust to match the trees that the parser gives
+       us for GOT relocs.
+       * Makefile.am (bfin-parse.o): Update dependencies.
+       (DEPTC_bfin_elf): Likewise.
+       * Makefile.in: Regenerate.
+
+2006-03-25  Richard Sandiford  <richard@codesourcery.com>
+
+       * config/tc-m68k.c (m68k_cpus): Change cpu_cf5208 entries to use
+       mcfemac instead of mcfmac.
+
+2006-03-22  Richard Sandiford  <richard@codesourcery.com>
+           Daniel Jacobowitz  <dan@codesourcery.com>
+           Phil Edwards  <phil@codesourcery.com>
+           Zack Weinberg  <zack@codesourcery.com>
+           Mark Mitchell  <mark@codesourcery.com>
+           Nathan Sidwell  <nathan@codesourcery.com>
+
+       * config/tc-mips.c (mips_target_format): Handle vxworks targets.
+       (md_begin): Complain about -G being used for PIC.  Don't change
+       the text, data and bss alignments on VxWorks.
+       (reloc_needs_lo_p): Don't return true for R_MIPS_GOT16 when
+       generating VxWorks PIC.
+       (load_address): Extend SVR4_PIC handling to VXWORKS_PIC.
+       (macro): Likewise, but do not treat la $25 specially for
+       VxWorks PIC, and do not handle jal.
+       (OPTION_MVXWORKS_PIC): New macro.
+       (md_longopts): Add -mvxworks-pic.
+       (md_parse_option): Don't complain about using PIC and -G together here.
+       Handle OPTION_MVXWORKS_PIC.
+       (md_estimate_size_before_relax): Always use the first relaxation
+       sequence on VxWorks.
+       * config/tc-mips.h (VXWORKS_PIC): New.
+
+2006-03-21  Paul Brook  <paul@codesourcery.com>
+
+       * config/tc-arm.c (md_apply_fix): Fix typo in offset mask.
+
+2006-03-21  Sterling Augustine  <sterling@tensilica.com>
+
+       * config/tc-xtensa.c (enforce_three_byte_loop_align): New flag.
+       (xtensa_setup_hw_workarounds): Set this new flag for older hardware.
+       (get_loop_align_size): New.
+       (xtensa_end): Skip xtensa_mark_narrow_branches when not aligning.
+       (xtensa_mark_zcl_first_insns): Prevent widening of first loop frag.
+       (get_text_align_power): Rewrite to handle inputs in the range 2-8.
+       (get_noop_aligned_address): Use get_loop_align_size.
+       (get_aligned_diff): Likewise.
+
+2006-03-21  Paul Brook  <paul@codesourcery.com>
+
+       * config/tc-arm.c (insns): Correct opcodes for ldrbt and strbt.
+
 2006-03-20  Paul Brook  <paul@codesourcery.com>
 
        * config/tc-arm.c (BAD_BRANCH, BAD_NOT_IT): Define.
index f70c6f0..1e34499 100644 (file)
@@ -621,7 +621,8 @@ $(srcdir)/config/m68k-parse.h: ; @true
 bfin-parse.c: $(srcdir)/config/bfin-parse.y
        $(SHELL) $(YLWRAP) $(srcdir)/config/bfin-parse.y y.tab.c bfin-parse.c y.tab.h bfin-parse.h -- $(YACCCOMPILE) -d ;
 bfin-parse.h: bfin-parse.c
-bfin-parse.o: bfin-parse.c bfin-parse.h $(srcdir)/config/bfin-defs.h
+bfin-parse.o: bfin-parse.c bfin-parse.h $(srcdir)/config/bfin-defs.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/bfin.h $(BFDDIR)/libbfd.h
 
 bfin-defs.h: ; @true
 $(srcdir)/config/bfin-defs.h: ; @true
@@ -1058,14 +1059,17 @@ DEPTC_bfin_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
   $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h struc-symbol.h \
   $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h \
   $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h dwarf2dbg.h \
-  $(srcdir)/config/bfin-defs.h $(INCDIR)/obstack.h $(INCDIR)/safe-ctype.h \
-  $(srcdir)/config/bfin-aux.h $(INCDIR)/opcode/bfin.h
+  $(INCDIR)/obstack.h $(INCDIR)/safe-ctype.h \
+  $(srcdir)/config/bfin-aux.h $(INCDIR)/opcode/bfin.h \
+  $(srcdir)/config/bfin-defs.h $(INCDIR)/elf/common.h \
+  $(INCDIR)/elf/bfin.h $(BFDDIR)/libbfd.h
 DEPTC_bfin_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
   $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
   $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h \
   dwarf2dbg.h struc-symbol.h $(srcdir)/config/bfin-defs.h \
   $(INCDIR)/obstack.h $(INCDIR)/safe-ctype.h $(srcdir)/config/bfin-aux.h \
-  $(INCDIR)/opcode/bfin.h
+  $(INCDIR)/opcode/bfin.h $(srcdir)/config/bfin-defs.h $(INCDIR)/elf/common.h \
+  $(INCDIR)/elf/bfin.h $(BFDDIR)/libbfd.h
 DEPTC_cris_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
   $(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
   $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
index 80f17db..437b6ac 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -15,8 +15,6 @@
 @SET_MAKE@
 
 
-SOURCES = $(as_new_SOURCES) $(EXTRA_as_new_SOURCES) $(itbl_test_SOURCES)
-
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
 VPATH = @srcdir@
@@ -815,15 +813,18 @@ DEPTC_bfin_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
   $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h struc-symbol.h \
   $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h \
   $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h dwarf2dbg.h \
-  $(srcdir)/config/bfin-defs.h $(INCDIR)/obstack.h $(INCDIR)/safe-ctype.h \
-  $(srcdir)/config/bfin-aux.h $(INCDIR)/opcode/bfin.h
+  $(INCDIR)/obstack.h $(INCDIR)/safe-ctype.h \
+  $(srcdir)/config/bfin-aux.h $(INCDIR)/opcode/bfin.h \
+  $(srcdir)/config/bfin-defs.h $(INCDIR)/elf/common.h \
+  $(INCDIR)/elf/bfin.h $(BFDDIR)/libbfd.h
 
 DEPTC_bfin_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
   $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
   $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h \
   dwarf2dbg.h struc-symbol.h $(srcdir)/config/bfin-defs.h \
   $(INCDIR)/obstack.h $(INCDIR)/safe-ctype.h $(srcdir)/config/bfin-aux.h \
-  $(INCDIR)/opcode/bfin.h
+  $(INCDIR)/opcode/bfin.h $(srcdir)/config/bfin-defs.h $(INCDIR)/elf/common.h \
+  $(INCDIR)/elf/bfin.h $(BFDDIR)/libbfd.h
 
 DEPTC_cris_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
   $(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
@@ -2979,7 +2980,8 @@ $(srcdir)/config/m68k-parse.h: ; @true
 bfin-parse.c: $(srcdir)/config/bfin-parse.y
        $(SHELL) $(YLWRAP) $(srcdir)/config/bfin-parse.y y.tab.c bfin-parse.c y.tab.h bfin-parse.h -- $(YACCCOMPILE) -d ;
 bfin-parse.h: bfin-parse.c
-bfin-parse.o: bfin-parse.c bfin-parse.h $(srcdir)/config/bfin-defs.h
+bfin-parse.o: bfin-parse.c bfin-parse.h $(srcdir)/config/bfin-defs.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/bfin.h $(BFDDIR)/libbfd.h
 
 bfin-defs.h: ; @true
 $(srcdir)/config/bfin-defs.h: ; @true
index ca84997..cd42673 100644 (file)
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.9.5 -*- Autoconf -*-
+# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
 # 2005  Free Software Foundation, Inc.
@@ -28,7 +28,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
 # Call AM_AUTOMAKE_VERSION so it can be traced.
 # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-        [AM_AUTOMAKE_VERSION([1.9.5])])
+        [AM_AUTOMAKE_VERSION([1.9.6])])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
index 46ae61e..48bacb3 100644 (file)
@@ -263,6 +263,7 @@ typedef enum
   Expr_Node_Binop,             /* Binary operator.  */
   Expr_Node_Unop,              /* Unary operator.  */
   Expr_Node_Reloc,             /* Symbol to be relocated.  */
+  Expr_Node_GOT_Reloc,         /* Symbol to be relocated using the GOT.  */
   Expr_Node_Constant           /* Constant.  */
 } Expr_Node_Type;
 
index c3af842..3a0077c 100644 (file)
@@ -241,6 +241,8 @@ abort                                   return ABORT;
 [aA]0"."[wW]    _REG.regno = REG_A0w; return REG;
 [aA]0           _REG.regno = REG_A0;  return REG_A_DOUBLE_ZERO;
 [Gg][Oo][Tt]   return GOT;
+[Gg][Oo][Tt]"17"[Mm]"4" return GOT17M4;
+[Ff][Uu][Nn][Cc][Dd][Ee][Ss][Cc]"_"[Gg][Oo][Tt]"17"[Mm]"4" return FUNCDESC_GOT17M4;
 [Pp][Ll][Tt][Pp][Cc]   return PLTPC;
 
 
index f1e4887..917c2d2 100644 (file)
 %{
 
 #include <stdio.h>
-#include "bfin-aux.h"
 #include <stdarg.h>
 #include <obstack.h>
 
+#include "bfin-aux.h"  // opcode generating auxiliaries
+#include "libbfd.h"
+#include "elf/common.h"
+#include "elf/bfin.h"
+
 #define DSP32ALU(aopcde, HL, dst1, dst0, src0, src1, s, x, aop) \
        bfin_gen_dsp32alu (HL, aopcde, aop, s, x, dst0, dst1, src0, src1)
 
@@ -485,7 +489,8 @@ is_group2 (INSTR_T x)
 %token STATUS_REG
 %token MNOP
 %token SYMBOL NUMBER
-%token GOT AT PLTPC
+%token GOT GOT17M4 FUNCDESC_GOT17M4
+%token AT PLTPC
 
 /* Types.  */
 %type <instr> asm
@@ -544,7 +549,7 @@ is_group2 (INSTR_T x)
 %type <expr> got
 %type <expr> got_or_expr
 %type <expr> pltpc
-
+%type <value> any_gotrel GOT GOT17M4 FUNCDESC_GOT17M4
 
 /* Precedence rules.  */
 %left BAR
@@ -4111,9 +4116,20 @@ symbol: SYMBOL
        }
        ;
 
-got:   symbol AT GOT
+any_gotrel:
+       GOT
+       { $$ = BFD_RELOC_BFIN_GOT; }
+       | GOT17M4
+       { $$ = BFD_RELOC_BFIN_GOT17M4; }
+       | FUNCDESC_GOT17M4
+       { $$ = BFD_RELOC_BFIN_FUNCDESC_GOT17M4; }
+       ;
+
+got:   symbol AT any_gotrel
        {
-       $$ = $1;
+       Expr_Node_Value val;
+       val.i_value = $3;
+       $$ = Expr_Node_Create (Expr_Node_GOT_Reloc, val, $1, NULL);
        }
        ;
 
index d6294f3..7a95033 100644 (file)
@@ -89,34 +89,62 @@ static struct mcu_type_s mcu_types[] =
   {"at86rf401", AVR_ISA_2xxx,     bfd_mach_avr2},
   {"attiny13",  AVR_ISA_TINY2,    bfd_mach_avr2},
   {"attiny2313",AVR_ISA_TINY2,    bfd_mach_avr2},
+  {"attiny261", AVR_ISA_TINY2,    bfd_mach_avr2},
+  {"attiny461", AVR_ISA_TINY2,    bfd_mach_avr2},
+  {"attiny861", AVR_ISA_TINY2,    bfd_mach_avr2},
+  {"attiny24",  AVR_ISA_TINY2,    bfd_mach_avr2},
+  {"attiny44",  AVR_ISA_TINY2,    bfd_mach_avr2},
+  {"attiny84",  AVR_ISA_TINY2,    bfd_mach_avr2},
+  {"attiny25",  AVR_ISA_TINY2,    bfd_mach_avr2},
+  {"attiny45",  AVR_ISA_TINY2,    bfd_mach_avr2},
+  {"attiny85",  AVR_ISA_TINY2,    bfd_mach_avr2},
   {"atmega603", AVR_ISA_M603,     bfd_mach_avr3}, /* XXX -> m103 */
   {"atmega103", AVR_ISA_M103,     bfd_mach_avr3},
   {"at43usb320",AVR_ISA_M103,     bfd_mach_avr3},
   {"at43usb355",AVR_ISA_M603,     bfd_mach_avr3},
   {"at76c711",  AVR_ISA_M603,     bfd_mach_avr3},
-  {"atmega48",  AVR_ISA_M8,       bfd_mach_avr4},
+  {"atmega48",  AVR_ISA_PWMx,     bfd_mach_avr4},
   {"atmega8",   AVR_ISA_M8,       bfd_mach_avr4},
   {"atmega83",  AVR_ISA_M8,       bfd_mach_avr4}, /* XXX -> m8535 */
   {"atmega85",  AVR_ISA_M8,       bfd_mach_avr4}, /* XXX -> m8 */
-  {"atmega88",  AVR_ISA_M8,       bfd_mach_avr4},
+  {"atmega88",  AVR_ISA_PWMx,     bfd_mach_avr4},
   {"atmega8515",AVR_ISA_M8,       bfd_mach_avr4},
   {"atmega8535",AVR_ISA_M8,       bfd_mach_avr4},
+  {"at90pwm2",  AVR_ISA_PWMx,     bfd_mach_avr4},
+  {"at90pwm3",  AVR_ISA_PWMx,     bfd_mach_avr4},
   {"atmega16",  AVR_ISA_M323,     bfd_mach_avr5},
   {"atmega161", AVR_ISA_M161,     bfd_mach_avr5},
   {"atmega162", AVR_ISA_M323,     bfd_mach_avr5},
   {"atmega163", AVR_ISA_M161,     bfd_mach_avr5},
+  {"atmega164", AVR_ISA_M323,     bfd_mach_avr5},
   {"atmega165", AVR_ISA_M323,     bfd_mach_avr5},
   {"atmega168", AVR_ISA_M323,     bfd_mach_avr5},
   {"atmega169", AVR_ISA_M323,     bfd_mach_avr5},
   {"atmega32",  AVR_ISA_M323,     bfd_mach_avr5},
   {"atmega323", AVR_ISA_M323,     bfd_mach_avr5},
+  {"atmega324", AVR_ISA_M323,     bfd_mach_avr5},
   {"atmega325", AVR_ISA_M323,     bfd_mach_avr5},
+  {"atmega329", AVR_ISA_M323,     bfd_mach_avr5},
   {"atmega3250",AVR_ISA_M323,     bfd_mach_avr5},
+  {"atmega3290",AVR_ISA_M323,     bfd_mach_avr5},
+  {"atmega406", AVR_ISA_M323,     bfd_mach_avr5},
   {"atmega64",  AVR_ISA_M323,     bfd_mach_avr5},
+  {"atmega640", AVR_ISA_M323,     bfd_mach_avr5},
+  {"atmega644", AVR_ISA_M323,     bfd_mach_avr5},
   {"atmega128", AVR_ISA_M128,     bfd_mach_avr5},
+  {"atmega1280",AVR_ISA_M128,     bfd_mach_avr5},
+  {"atmega1281",AVR_ISA_M128,     bfd_mach_avr5},
   {"atmega645", AVR_ISA_M323,     bfd_mach_avr5},
+  {"atmega649", AVR_ISA_M323,     bfd_mach_avr5},
   {"atmega6450",AVR_ISA_M323,     bfd_mach_avr5},
+  {"atmega6490",AVR_ISA_M323,     bfd_mach_avr5},
+  {"at90can32" ,AVR_ISA_M323,     bfd_mach_avr5},
+  {"at90can64" ,AVR_ISA_M323,     bfd_mach_avr5},
   {"at90can128",AVR_ISA_M128,     bfd_mach_avr5},
+  {"at90usb646", AVR_ISA_M323,    bfd_mach_avr5},
+  {"at90usb647", AVR_ISA_M323,    bfd_mach_avr5},
+  {"at90usb1286",AVR_ISA_M128,    bfd_mach_avr5},
+  {"at90usb1287",AVR_ISA_M128,    bfd_mach_avr5},
   {"at94k",     AVR_ISA_94K,      bfd_mach_avr5},
   {NULL, 0, 0}
 };
index df12045..61fc594 100644 (file)
@@ -120,3 +120,21 @@ extern long md_pcrel_from_section (struct fix *, segT);
    also affected by this macro.  The default definition will set
    P2VAR to the truncated power of two of sizes up to eight bytes.  */
 #define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR) (P2VAR) = 0
+
+/* We don't want gas to fixup the following program memory related relocations.
+   We will need them in case that we want to do linker relaxation.
+   We could in principle keep these fixups in gas when not relaxing.
+   However, there is no serious performance penilty when making the linker
+   make the fixup work.  */
+#define TC_VALIDATE_FIX(FIXP,SEG,SKIP)                     \
+ if (   (FIXP->fx_r_type == BFD_RELOC_AVR_7_PCREL          \
+      || FIXP->fx_r_type == BFD_RELOC_AVR_13_PCREL         \
+      || FIXP->fx_r_type == BFD_RELOC_AVR_LO8_LDI_PM       \
+      || FIXP->fx_r_type == BFD_RELOC_AVR_HI8_LDI_PM       \
+      || FIXP->fx_r_type == BFD_RELOC_AVR_HH8_LDI_PM       \
+      || FIXP->fx_r_type == BFD_RELOC_AVR_16_PM)           \
+     && (FIXP->fx_addsy))                                  \
+   {                                                       \
+     goto SKIP;                                            \
+   }
+
index d9e88de..43d48d6 100644 (file)
@@ -28,6 +28,9 @@
 #ifdef OBJ_ELF
 #include "dwarf2dbg.h"
 #endif
+#include "libbfd.h"
+#include "elf/common.h"
+#include "elf/bfin.h"
 
 extern int yyparse (void);
 struct yy_buffer_state;
@@ -45,6 +48,12 @@ int last_insn_size;
 extern struct obstack mempool;
 FILE *errorf;
 
+/* Flags to set in the elf header */
+#define DEFAULT_FLAGS 0
+
+static flagword bfin_flags = DEFAULT_FLAGS;
+static const char *bfin_pic_flag = (const char *)0;
+
 /* Registers list.  */
 struct bfin_reg_entry
 {
@@ -202,11 +211,73 @@ static const struct bfin_reg_entry bfin_reg_info[] = {
   {0, 0}
 };
 
+/* Blackfin specific function to handle FD-PIC pointer initializations.  */
+
+static void
+bfin_pic_ptr (int nbytes)
+{
+  expressionS exp;
+  char *p;
+
+  if (nbytes != 4)
+    abort ();
+
+#ifdef md_flush_pending_output
+  md_flush_pending_output ();
+#endif
+
+  if (is_it_end_of_statement ())
+    {
+      demand_empty_rest_of_line ();
+      return;
+    }
+
+#ifdef md_cons_align
+  md_cons_align (nbytes);
+#endif
+
+  do
+    {
+      bfd_reloc_code_real_type reloc_type = BFD_RELOC_BFIN_FUNCDESC;
+      
+      if (strncasecmp (input_line_pointer, "funcdesc(", 9) == 0)
+       {
+         input_line_pointer += 9;
+         expression (&exp);
+         if (*input_line_pointer == ')')
+           input_line_pointer++;
+         else
+           as_bad ("missing ')'");
+       }
+      else
+       error ("missing funcdesc in picptr");
+
+      p = frag_more (4);
+      memset (p, 0, 4);
+      fix_new_exp (frag_now, p - frag_now->fr_literal, 4, &exp, 0,
+                  reloc_type);
+    }
+  while (*input_line_pointer++ == ',');
+
+  input_line_pointer--;                        /* Put terminator back into stream. */
+  demand_empty_rest_of_line ();
+}
+
+static void
+bfin_s_bss (int ignore ATTRIBUTE_UNUSED)
+{
+  register int temp;
+
+  temp = get_absolute_expression ();
+  subseg_set (bss_section, (subsegT) temp);
+  demand_empty_rest_of_line ();
+}
 
 const pseudo_typeS md_pseudo_table[] = {
   {"align", s_align_bytes, 0},
   {"byte2", cons, 2},
   {"byte4", cons, 4},
+  {"picptr", bfin_pic_ptr, 4},
   {"code", obj_elf_section, 0},
   {"db", cons, 1},
   {"dd", cons, 4},
@@ -218,17 +289,6 @@ const pseudo_typeS md_pseudo_table[] = {
   {0, 0, 0}
 };
 
-static void
-bfin_s_bss (int ignore ATTRIBUTE_UNUSED)
-{
-  register int temp;
-
-  temp = get_absolute_expression ();
-  subseg_set (bss_section, (subsegT) temp);
-  demand_empty_rest_of_line ();
-}
-
-
 /* Characters that are used to denote comments and line separators. */
 const char comment_chars[] = "";
 const char line_comment_chars[] = "#";
@@ -245,16 +305,32 @@ const char FLT_CHARS[] = "fFdDxX";
 /* Define bfin-specific command-line options (there are none). */
 const char *md_shortopts = "";
 
-struct option md_longopts[] = {
-  {NULL, no_argument, NULL, 0}
+#define OPTION_FDPIC           (OPTION_MD_BASE)
+
+struct option md_longopts[] =
+{
+  { "mfdpic",          no_argument,            NULL, OPTION_FDPIC         },
+  { NULL,              no_argument,            NULL, 0                 },
 };
+
 size_t md_longopts_size = sizeof (md_longopts);
 
 
 int
 md_parse_option (int c ATTRIBUTE_UNUSED, char *arg ATTRIBUTE_UNUSED)
 {
-  return 0;
+  switch (c)
+    {
+    default:
+      return 0;
+
+    case OPTION_FDPIC:
+      bfin_flags |= EF_BFIN_FDPIC;
+      bfin_pic_flag = "-mfdpic";
+      break;
+    }
+
+  return 1;
 }
 
 void
@@ -267,6 +343,10 @@ md_show_usage (FILE * stream ATTRIBUTE_UNUSED)
 void
 md_begin ()
 {
+  /* Set the ELF flags if desired. */
+  if (bfin_flags)
+    bfd_set_private_flags (stdoutput, bfin_flags);
+
   /* Set the default machine type. */
   if (!bfd_set_arch_mach (stdoutput, bfd_arch_bfin, 0))
     as_warn ("Could not set architecture and machine.");
@@ -476,6 +556,8 @@ md_apply_fix (fixS *fixP, valueT *valueP, segT seg ATTRIBUTE_UNUSED)
   switch (fixP->fx_r_type)
     {
     case BFD_RELOC_BFIN_GOT:
+    case BFD_RELOC_BFIN_GOT17M4:
+    case BFD_RELOC_BFIN_FUNCDESC_GOT17M4:
       fixP->fx_no_overflow = 1;
       newval = md_chars_to_number (where, 2);
       newval |= 0x0 & 0x7f;
@@ -579,6 +661,7 @@ md_apply_fix (fixS *fixP, valueT *valueP, segT seg ATTRIBUTE_UNUSED)
       md_number_to_chars (where, value, 2);
       break;
 
+    case BFD_RELOC_BFIN_FUNCDESC:
     case BFD_RELOC_VTABLE_INHERIT:
     case BFD_RELOC_VTABLE_ENTRY:
       fixP->fx_done = FALSE;
@@ -725,8 +808,10 @@ bfin_fix_adjustable (fixS *fixP)
   switch (fixP->fx_r_type)
     {     
   /* Adjust_reloc_syms doesn't know about the GOT.  */
-    case BFD_RELOC_BFIN_GOT :
-    case BFD_RELOC_BFIN_PLTPC :
+    case BFD_RELOC_BFIN_GOT:
+    case BFD_RELOC_BFIN_GOT17M4:
+    case BFD_RELOC_BFIN_FUNCDESC_GOT17M4:
+    case BFD_RELOC_BFIN_PLTPC:
   /* We need the symbol name for the VTABLE entries.  */
     case BFD_RELOC_VTABLE_INHERIT:
     case BFD_RELOC_VTABLE_ENTRY:
@@ -982,6 +1067,8 @@ Expr_Node_Gen_Reloc (Expr_Node * head, int parent_reloc)
          break;
        case BFD_RELOC_16:
        case BFD_RELOC_BFIN_GOT:
+       case BFD_RELOC_BFIN_GOT17M4:
+       case BFD_RELOC_BFIN_FUNCDESC_GOT17M4:
          note1 = conscode (gencode (value), NULL_CODE);
          pcrel = 0;
          break;
@@ -1356,8 +1443,6 @@ bfin_gen_ldimmhalf (REG_T reg, int H, int S, int Z, Expr_Node * phword, int relo
 INSTR_T
 bfin_gen_ldstidxi (REG_T ptr, REG_T reg, int W, int sz, int Z, Expr_Node * poffset)
 {
-  int offset;
-  int value = 0;
   INIT (LDSTidxI);
 
   if (!IS_PREG (*ptr) || (!IS_DREG (*reg) && !Z))
@@ -1370,44 +1455,51 @@ bfin_gen_ldstidxi (REG_T ptr, REG_T reg, int W, int sz, int Z, Expr_Node * poffs
   ASSIGN_R (reg);
   ASSIGN (W);
   ASSIGN (sz);
-  switch (sz)
-    {
-    case 0:
-      value = EXPR_VALUE (poffset) >> 2;
-      break;
-    case 1:
-      value = EXPR_VALUE (poffset) >> 1;
-      break;
-    case 2:
-      value = EXPR_VALUE (poffset);
-      break;
-    }
-
 
   ASSIGN (Z);
 
-  offset = (value & 0xffff);
-  ASSIGN (offset);
-  /* TODO : test if you need to check this here.
-     The reloc case should automatically generate instruction
-     if constant.  */
-  if(poffset->type != Expr_Node_Constant){
-    /* A GOT relocation such as R0 = [P5 + symbol@GOT].
-       Distinguish between R0 = [P5 + symbol@GOT] and
-       P5 = [P5 + _current_shared_library_p5_offset_].  */
-    if(!strcmp(poffset->value.s_value, "_current_shared_library_p5_offset_")){
-      return  conscode (gencode (HI (c_code.opcode)),
-                       Expr_Node_Gen_Reloc(poffset, BFD_RELOC_16));
+  if (poffset->type != Expr_Node_Constant)
+    {
+      /* a GOT relocation such as R0 = [P5 + symbol@GOT] */
+      /* distinguish between R0 = [P5 + symbol@GOT] and
+        P5 = [P5 + _current_shared_library_p5_offset_]
+      */
+      if (poffset->type == Expr_Node_Reloc
+         && !strcmp (poffset->value.s_value,
+                     "_current_shared_library_p5_offset_"))
+       {
+         return  conscode (gencode (HI (c_code.opcode)),
+                           Expr_Node_Gen_Reloc(poffset, BFD_RELOC_16));
+       }
+      else if (poffset->type != Expr_Node_GOT_Reloc)
+       abort ();
+
+      return conscode (gencode (HI (c_code.opcode)),
+                      Expr_Node_Gen_Reloc(poffset->Left_Child,
+                                          poffset->value.i_value));
     }
-    else
+  else
     {
-      return  conscode (gencode (HI (c_code.opcode)),
-                       Expr_Node_Gen_Reloc(poffset, BFD_RELOC_BFIN_GOT));
+      int value, offset;
+      switch (sz)
+       {                               // load/store access size
+       case 0:                 // 32 bit
+         value = EXPR_VALUE (poffset) >> 2;
+         break;
+       case 1:                 // 16 bit
+         value = EXPR_VALUE (poffset) >> 1;
+         break;
+       case 2:                 // 8 bit
+         value = EXPR_VALUE (poffset);
+         break;
+       default:
+         abort ();
+       }
+
+      offset = (value & 0xffff);
+      ASSIGN (offset);
+      return GEN_OPCODE32 ();
     }
-  }
-  else{
-    return GEN_OPCODE32 ();
-  }
 }
 
 
index f42a9a4..be384bc 100644 (file)
@@ -1169,13 +1169,12 @@ ps (s)
           segment_name (S_GET_SEGMENT (s)));
 }
 
-struct type_name
+static struct type_name
   {
     unsigned int mask;
     char *tname;
   }
-
-static const type_names[] =
+const type_names[] =
 {
   { Reg8, "r8" },
   { Reg16, "r16" },
@@ -1238,6 +1237,18 @@ reloc (unsigned int size,
       if (size == 8)
        switch (other)
          {
+           case BFD_RELOC_X86_64_GOT32:
+             return BFD_RELOC_X86_64_GOT64;
+             break;
+           case BFD_RELOC_X86_64_PLTOFF64:
+             return BFD_RELOC_X86_64_PLTOFF64;
+             break;
+           case BFD_RELOC_X86_64_GOTPC32:
+             other = BFD_RELOC_X86_64_GOTPC64;
+             break;
+           case BFD_RELOC_X86_64_GOTPCREL:
+             other = BFD_RELOC_X86_64_GOTPCREL64;
+             break;
            case BFD_RELOC_X86_64_TPOFF32:
              other = BFD_RELOC_X86_64_TPOFF64;
              break;
@@ -2252,19 +2263,7 @@ match_template ()
                              : (i.suffix == LONG_DOUBLE_MNEM_SUFFIX
                                 ? No_xSuf : 0))))));
 
-  t = current_templates->start;
-  if (i.suffix == QWORD_MNEM_SUFFIX
-      && flag_code != CODE_64BIT
-      && (intel_syntax
-         ? !(t->opcode_modifier & IgnoreSize)
-           && !intel_float_operand (t->name)
-         : intel_float_operand (t->name) != 2)
-      && (!(t->operand_types[0] & (RegMMX | RegXMM))
-         || !(t->operand_types[t->operands > 1] & (RegMMX | RegXMM)))
-      && (t->base_opcode != 0x0fc7
-         || t->extension_opcode != 1 /* cmpxchg8b */))
-    t = current_templates->end;
-  for (; t < current_templates->end; t++)
+  for (t = current_templates->start; t < current_templates->end; t++)
     {
       /* Must have right number of operands.  */
       if (i.operands != t->operands)
@@ -2276,6 +2275,19 @@ match_template ()
               && (t->opcode_modifier & IgnoreSize)))
        continue;
 
+      /* In general, don't allow 64-bit operands in 32-bit mode.  */
+      if (i.suffix == QWORD_MNEM_SUFFIX
+         && flag_code != CODE_64BIT
+         && (intel_syntax
+             ? (!(t->opcode_modifier & IgnoreSize)
+                && !intel_float_operand (t->name))
+             : intel_float_operand (t->name) != 2)
+         && (!(t->operand_types[0] & (RegMMX | RegXMM))
+             || !(t->operand_types[t->operands > 1] & (RegMMX | RegXMM)))
+         && (t->base_opcode != 0x0fc7
+             || t->extension_opcode != 1 /* cmpxchg8b */))
+       continue;
+
       /* Do not verify operands when there are none.  */
       else if (!t->operands)
        {
@@ -3569,7 +3581,7 @@ check_prefix:
 #ifdef DEBUG386
   if (flag_debug)
     {
-      pi (line, &i);
+      pi ("" /*line*/, &i);
     }
 #endif /* DEBUG386  */
 }
@@ -3654,7 +3666,9 @@ output_disp (insn_start_frag, insn_start_off)
              if (GOT_symbol
                  && GOT_symbol == i.op[n].disps->X_add_symbol
                  && (((reloc_type == BFD_RELOC_32
-                       || reloc_type == BFD_RELOC_X86_64_32S)
+                       || reloc_type == BFD_RELOC_X86_64_32S
+                       || (reloc_type == BFD_RELOC_64
+                           && object_64bit))
                       && (i.op[n].disps->X_op == O_symbol
                           || (i.op[n].disps->X_op == O_add
                               && ((symbol_get_value_expression
@@ -3678,10 +3692,17 @@ output_disp (insn_start_frag, insn_start_off)
                    }
 
                  if (!object_64bit)
-                   reloc_type = BFD_RELOC_386_GOTPC;
+                   {
+                     reloc_type = BFD_RELOC_386_GOTPC;
+                     i.op[n].imms->X_add_number += add;
+                   }
+                 else if (reloc_type == BFD_RELOC_64)
+                   reloc_type = BFD_RELOC_X86_64_GOTPC64;
                  else
+                   /* Don't do the adjustment for x86-64, as there
+                      the pcrel addressing is relative to the _next_
+                      insn, and that is taken care of in other code.  */
                    reloc_type = BFD_RELOC_X86_64_GOTPC32;
-                 i.op[n].disps->X_add_number += add;
                }
              fix_new_exp (frag_now, p - frag_now->fr_literal, size,
                           i.op[n].disps, pcrel, reloc_type);
@@ -3790,7 +3811,8 @@ output_imm (insn_start_frag, insn_start_off)
               * confusing to do it this way.  */
 
              if ((reloc_type == BFD_RELOC_32
-                  || reloc_type == BFD_RELOC_X86_64_32S)
+                  || reloc_type == BFD_RELOC_X86_64_32S
+                  || reloc_type == BFD_RELOC_64)
                  && GOT_symbol
                  && GOT_symbol == i.op[n].imms->X_add_symbol
                  && (i.op[n].imms->X_op == O_symbol
@@ -3816,8 +3838,10 @@ output_imm (insn_start_frag, insn_start_off)
 
                  if (!object_64bit)
                    reloc_type = BFD_RELOC_386_GOTPC;
-                 else
+                 else if (size == 4)
                    reloc_type = BFD_RELOC_X86_64_GOTPC32;
+                 else if (size == 8)
+                   reloc_type = BFD_RELOC_X86_64_GOTPC64;
                  i.op[n].imms->X_add_number += add;
                }
              fix_new_exp (frag_now, p - frag_now->fr_literal, size,
@@ -3870,12 +3894,19 @@ lex_got (enum bfd_reloc_code_real *reloc,
      int *adjust,
      unsigned int *types)
 {
+  /* Some of the relocations depend on the size of what field is to
+     be relocated.  But in our callers i386_immediate and i386_displacement
+     we don't yet know the operand size (this will be set by insn
+     matching).  Hence we record the word32 relocation here,
+     and adjust the reloc according to the real size in reloc().  */
   static const struct {
     const char *str;
     const enum bfd_reloc_code_real rel[2];
     const unsigned int types64;
   } gotrel[] = {
+    { "PLTOFF",   { 0,                        BFD_RELOC_X86_64_PLTOFF64 }, Imm64 },
     { "PLT",      { BFD_RELOC_386_PLT32,      BFD_RELOC_X86_64_PLT32    }, Imm32|Imm32S|Disp32 },
+    { "GOTPLT",   { 0,                        BFD_RELOC_X86_64_GOTPLT64 }, Imm64|Disp64 },
     { "GOTOFF",   { BFD_RELOC_386_GOTOFF,     BFD_RELOC_X86_64_GOTOFF64 }, Imm64|Disp64 },
     { "GOTPCREL", { 0,                        BFD_RELOC_X86_64_GOTPCREL }, Imm32|Imm32S|Disp32 },
     { "TLSGD",    { BFD_RELOC_386_TLS_GD,     BFD_RELOC_X86_64_TLSGD    }, Imm32|Imm32S|Disp32 },
@@ -3887,7 +3918,7 @@ lex_got (enum bfd_reloc_code_real *reloc,
     { "DTPOFF",   { BFD_RELOC_386_TLS_LDO_32, BFD_RELOC_X86_64_DTPOFF32 }, Imm32|Imm32S|Imm64|Disp32|Disp64 },
     { "GOTNTPOFF",{ BFD_RELOC_386_TLS_GOTIE,  0                         }, 0 },
     { "INDNTPOFF",{ BFD_RELOC_386_TLS_IE,     0                         }, 0 },
-    { "GOT",      { BFD_RELOC_386_GOT32,      BFD_RELOC_X86_64_GOT32    }, Imm32|Imm32S|Disp32 },
+    { "GOT",      { BFD_RELOC_386_GOT32,      BFD_RELOC_X86_64_GOT32    }, Imm32|Imm32S|Disp32|Imm64 },
     { "TLSDESC",  { BFD_RELOC_386_TLS_GOTDESC, BFD_RELOC_X86_64_GOTPC32_TLSDESC }, Imm32|Imm32S|Disp32 },
     { "TLSCALL",  { BFD_RELOC_386_TLS_DESC_CALL, BFD_RELOC_X86_64_TLSDESC_CALL }, Imm32|Imm32S|Disp32 }
   };
@@ -4947,6 +4978,20 @@ md_convert_frag (abfd, sec, fragP)
        }
     }
 
+  /* If size if less then four we are sure that the operand fits,
+     but if it's 4, then it could be that the displacement is larger
+     then -/+ 2GB.  */
+  if (DISP_SIZE_FROM_RELAX_STATE (fragP->fr_subtype) == 4
+      && object_64bit
+      && ((addressT) (displacement_from_opcode_start - extension
+                      + ((addressT) 1 << 31))
+          > (((addressT) 2 << 31) - 1)))
+    {
+      as_bad_where (fragP->fr_file, fragP->fr_line,
+                   _("jump target out of range"));
+      /* Make us emit 0.  */
+      displacement_from_opcode_start = extension;
+    }
   /* Now put displacement after opcode.  */
   md_number_to_chars ((char *) where_to_put_displacement,
                      (valueT) (displacement_from_opcode_start - extension),
@@ -5708,6 +5753,11 @@ tc_gen_reloc (section, fixp)
     case BFD_RELOC_X86_64_TPOFF64:
     case BFD_RELOC_X86_64_GOTOFF64:
     case BFD_RELOC_X86_64_GOTPC32:
+    case BFD_RELOC_X86_64_GOT64:
+    case BFD_RELOC_X86_64_GOTPCREL64:
+    case BFD_RELOC_X86_64_GOTPC64:
+    case BFD_RELOC_X86_64_GOTPLT64:
+    case BFD_RELOC_X86_64_PLTOFF64:
     case BFD_RELOC_X86_64_GOTPC32_TLSDESC:
     case BFD_RELOC_X86_64_TLSDESC_CALL:
     case BFD_RELOC_RVA:
@@ -5776,6 +5826,12 @@ tc_gen_reloc (section, fixp)
       else
        code = BFD_RELOC_X86_64_GOTPC32;
     }
+  if ((code == BFD_RELOC_64 || code == BFD_RELOC_64_PCREL)
+      && GOT_symbol
+      && fixp->fx_addsy == GOT_symbol)
+    {
+      code = BFD_RELOC_X86_64_GOTPC64;
+    }
 
   rel = (arelent *) xmalloc (sizeof (arelent));
   rel->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
index 557fb40..c885205 100644 (file)
@@ -1191,6 +1191,12 @@ mips_target_format (void)
     case bfd_target_coff_flavour:
       return "pe-mips";
     case bfd_target_elf_flavour:
+#ifdef TE_VXWORKS
+      if (!HAVE_64BIT_OBJECTS && !HAVE_NEWABI)
+       return (target_big_endian
+               ? "elf32-bigmips-vxworks"
+               : "elf32-littlemips-vxworks");
+#endif
 #ifdef TE_TMIPS
       /* This is traditional mips.  */
       return (target_big_endian
@@ -1397,6 +1403,13 @@ md_begin (void)
   int i = 0;
   int broken = 0;
 
+  if (mips_pic != NO_PIC)
+    {
+      if (g_switch_seen && g_switch_value != 0)
+       as_bad (_("-G may not be used in position-independent code"));
+      g_switch_value = 0;
+    }
+
   if (! bfd_set_arch_mach (stdoutput, bfd_arch_mips, file_mips_arch))
     as_warn (_("Could not set architecture and machine"));
 
@@ -1524,10 +1537,11 @@ md_begin (void)
 
   if (OUTPUT_FLAVOR == bfd_target_elf_flavour)
     {
-      /* On a native system, sections must be aligned to 16 byte
-        boundaries.  When configured for an embedded ELF target, we
-        don't bother.  */
-      if (strcmp (TARGET_OS, "elf") != 0)
+      /* On a native system other than VxWorks, sections must be aligned
+        to 16 byte boundaries.  When configured for an embedded ELF
+        target, we don't bother.  */
+      if (strcmp (TARGET_OS, "elf") != 0
+         && strcmp (TARGET_OS, "vxworks") != 0)
        {
          (void) bfd_set_section_alignment (stdoutput, text_section, 4);
          (void) bfd_set_section_alignment (stdoutput, data_section, 4);
@@ -1680,16 +1694,18 @@ md_assemble (char *str)
 }
 
 /* Return true if the given relocation might need a matching %lo().
-   Note that R_MIPS_GOT16 relocations only need a matching %lo() when
-   applied to local symbols.  */
+   This is only "might" because SVR4 R_MIPS_GOT16 relocations only
+   need a matching %lo() when applied to local symbols.  */
 
 static inline bfd_boolean
 reloc_needs_lo_p (bfd_reloc_code_real_type reloc)
 {
   return (HAVE_IN_PLACE_ADDENDS
          && (reloc == BFD_RELOC_HI16_S
-             || reloc == BFD_RELOC_MIPS_GOT16
-             || reloc == BFD_RELOC_MIPS16_HI16_S));
+             || reloc == BFD_RELOC_MIPS16_HI16_S
+             /* VxWorks R_MIPS_GOT16 relocs never need a matching %lo();
+                all GOT16 relocations evaluate to "G".  */
+             || (reloc == BFD_RELOC_MIPS_GOT16 && mips_pic != VXWORKS_PIC)));
 }
 
 /* Return true if the given fixup is followed by a matching R_MIPS_LO16
@@ -2390,9 +2406,6 @@ append_insn (struct mips_cl_insn *ip, expressionS *address_expr,
              if ((address_expr->X_add_number & 3) != 0)
                as_bad (_("jump to misaligned address (0x%lx)"),
                        (unsigned long) address_expr->X_add_number);
-             if (address_expr->X_add_number & ~0xfffffff)
-               as_bad (_("jump address range overflow (0x%lx)"),
-                       (unsigned long) address_expr->X_add_number);
              ip->insn_opcode |= (address_expr->X_add_number >> 2) & 0x3ffffff;
              break;
 
@@ -2400,9 +2413,6 @@ append_insn (struct mips_cl_insn *ip, expressionS *address_expr,
              if ((address_expr->X_add_number & 3) != 0)
                as_bad (_("jump to misaligned address (0x%lx)"),
                        (unsigned long) address_expr->X_add_number);
-             if (address_expr->X_add_number & ~0xfffffff)
-               as_bad (_("jump address range overflow (0x%lx)"),
-                       (unsigned long) address_expr->X_add_number);
              ip->insn_opcode |=
                (((address_expr->X_add_number & 0x7c0000) << 3)
                 | ((address_expr->X_add_number & 0xf800000) >> 7)
@@ -3898,7 +3908,7 @@ load_address (int reg, expressionS *ep, int *used_at)
            relax_end ();
        }
     }
-  else if (mips_pic == SVR4_PIC && ! mips_big_got)
+  else if (!mips_big_got)
     {
       expressionS ex;
 
@@ -3959,7 +3969,7 @@ load_address (int reg, expressionS *ep, int *used_at)
            }
        }
     }
-  else if (mips_pic == SVR4_PIC)
+  else if (mips_big_got)
     {
       expressionS ex;
 
@@ -5011,7 +5021,7 @@ macro (struct mips_cl_insn *ip)
                relax_end ();
            }
        }
-      else if (mips_pic == SVR4_PIC && ! mips_big_got && ! HAVE_NEWABI)
+      else if (!mips_big_got && !HAVE_NEWABI)
        {
          int lw_reloc_type = (int) BFD_RELOC_MIPS_GOT16;
 
@@ -5047,7 +5057,9 @@ macro (struct mips_cl_insn *ip)
 
          if (offset_expr.X_add_number == 0)
            {
-             if (breg == 0 && (call || tempreg == PIC_CALL_REG))
+             if (mips_pic == SVR4_PIC
+                 && breg == 0
+                 && (call || tempreg == PIC_CALL_REG))
                lw_reloc_type = (int) BFD_RELOC_MIPS_CALL16;
 
              relax_start (offset_expr.X_add_symbol);
@@ -5104,7 +5116,7 @@ macro (struct mips_cl_insn *ip)
              used_at = 1;
            }
        }
-      else if (mips_pic == SVR4_PIC && ! mips_big_got && HAVE_NEWABI)
+      else if (!mips_big_got && HAVE_NEWABI)
        {
          int add_breg_early = 0;
 
@@ -5207,7 +5219,7 @@ macro (struct mips_cl_insn *ip)
                           BFD_RELOC_MIPS_GOT_DISP, mips_gp_register);
            }
        }
-      else if (mips_pic == SVR4_PIC && ! HAVE_NEWABI)
+      else if (mips_big_got && !HAVE_NEWABI)
        {
          int gpdelay;
          int lui_reloc_type = (int) BFD_RELOC_MIPS_GOT_HI16;
@@ -5364,7 +5376,7 @@ macro (struct mips_cl_insn *ip)
            }
          relax_end ();
        }
-      else if (mips_pic == SVR4_PIC && HAVE_NEWABI)
+      else if (mips_big_got && HAVE_NEWABI)
        {
          int lui_reloc_type = (int) BFD_RELOC_MIPS_GOT_HI16;
          int lw_reloc_type = (int) BFD_RELOC_MIPS_GOT_LO16;
@@ -5497,13 +5509,13 @@ macro (struct mips_cl_insn *ip)
     case M_JAL_2:
       if (mips_pic == NO_PIC)
        macro_build (NULL, "jalr", "d,s", dreg, sreg);
-      else if (mips_pic == SVR4_PIC)
+      else
        {
          if (sreg != PIC_CALL_REG)
            as_warn (_("MIPS PIC call to register other than $25"));
 
          macro_build (NULL, "jalr", "d,s", dreg, sreg);
-         if (HAVE_NEWABI)
+         if (mips_pic == SVR4_PIC && !HAVE_NEWABI)
            {
              if (mips_cprestore_offset < 0)
                as_warn (_("No .cprestore pseudo-op used in PIC code"));
@@ -5529,8 +5541,6 @@ macro (struct mips_cl_insn *ip)
                }
            }
        }
-      else
-       abort ();
 
       break;
 
@@ -5666,6 +5676,8 @@ macro (struct mips_cl_insn *ip)
                }
            }
        }
+      else if (mips_pic == VXWORKS_PIC)
+       as_bad (_("Non-PIC jump used in PIC library"));
       else
        abort ();
 
@@ -6026,7 +6038,7 @@ macro (struct mips_cl_insn *ip)
                relax_end ();
            }
        }
-      else if (mips_pic == SVR4_PIC && ! mips_big_got)
+      else if (!mips_big_got)
        {
          int lw_reloc_type = (int) BFD_RELOC_MIPS_GOT16;
 
@@ -6080,7 +6092,7 @@ macro (struct mips_cl_insn *ip)
                         tempreg, tempreg, breg);
          macro_build (&expr1, s, fmt, treg, BFD_RELOC_LO16, tempreg);
        }
-      else if (mips_pic == SVR4_PIC && ! HAVE_NEWABI)
+      else if (mips_big_got && !HAVE_NEWABI)
        {
          int gpdelay;
 
@@ -6129,7 +6141,7 @@ macro (struct mips_cl_insn *ip)
                         tempreg, tempreg, breg);
          macro_build (&expr1, s, fmt, treg, BFD_RELOC_LO16, tempreg);
        }
-      else if (mips_pic == SVR4_PIC && HAVE_NEWABI)
+      else if (mips_big_got && HAVE_NEWABI)
        {
          /* If this is a reference to an external symbol, we want
               lui      $tempreg,<sym>          (BFD_RELOC_MIPS_GOT_HI16)
@@ -6249,14 +6261,12 @@ macro (struct mips_cl_insn *ip)
          macro_build_lui (&offset_expr, AT);
          used_at = 1;
        }
-      else if (mips_pic == SVR4_PIC)
+      else
        {
          macro_build (&offset_expr, ADDRESS_LOAD_INSN, "t,o(b)", AT,
                       BFD_RELOC_MIPS_GOT16, mips_gp_register);
          used_at = 1;
        }
-      else
-       abort ();
 
       /* Now we load the register(s).  */
       if (HAVE_64BIT_GPRS)
@@ -6328,7 +6338,7 @@ macro (struct mips_cl_insn *ip)
        {
          assert (strcmp (s, RDATA_SECTION_NAME) == 0);
          used_at = 1;
-         if (mips_pic == SVR4_PIC)
+         if (mips_pic != NO_PIC)
            macro_build (&offset_expr, ADDRESS_LOAD_INSN, "t,o(b)", AT,
                         BFD_RELOC_MIPS_GOT16, mips_gp_register);
          else
@@ -6547,7 +6557,7 @@ macro (struct mips_cl_insn *ip)
          if (mips_relax.sequence)
            relax_end ();
        }
-      else if (mips_pic == SVR4_PIC && ! mips_big_got)
+      else if (!mips_big_got)
        {
          /* If this is a reference to an external symbol, we want
               lw       $at,<sym>($gp)          (BFD_RELOC_MIPS_GOT16)
@@ -6594,7 +6604,7 @@ macro (struct mips_cl_insn *ip)
 
          mips_optimize = hold_mips_optimize;
        }
-      else if (mips_pic == SVR4_PIC)
+      else if (mips_big_got)
        {
          int gpdelay;
 
@@ -10646,6 +10656,8 @@ struct option md_longopts[] =
   {"mpdr", no_argument, NULL, OPTION_PDR},
 #define OPTION_NO_PDR     (OPTION_ELF_BASE + 10)
   {"mno-pdr", no_argument, NULL, OPTION_NO_PDR},
+#define OPTION_MVXWORKS_PIC (OPTION_ELF_BASE + 11)
+  {"mvxworks-pic", no_argument, NULL, OPTION_MVXWORKS_PIC},
 #endif /* OBJ_ELF */
 
   {NULL, no_argument, NULL, 0}
@@ -10887,12 +10899,6 @@ md_parse_option (int c, char *arg)
        }
       mips_pic = SVR4_PIC;
       mips_abicalls = TRUE;
-      if (g_switch_seen && g_switch_value != 0)
-       {
-         as_bad (_("-G may not be used with SVR4 PIC code"));
-         return 0;
-       }
-      g_switch_value = 0;
       break;
 
     case OPTION_NON_SHARED:
@@ -10916,11 +10922,6 @@ md_parse_option (int c, char *arg)
     case 'G':
       g_switch_value = atoi (arg);
       g_switch_seen = 1;
-      if (mips_pic == SVR4_PIC && g_switch_value != 0)
-       {
-         as_bad (_("-G may not be used with SVR4 PIC code"));
-         return 0;
-       }
       break;
 
 #ifdef OBJ_ELF
@@ -11026,6 +11027,10 @@ md_parse_option (int c, char *arg)
     case OPTION_NO_PDR:
       mips_flag_pdr = FALSE;
       break;
+
+    case OPTION_MVXWORKS_PIC:
+      mips_pic = VXWORKS_PIC;
+      break;
 #endif /* OBJ_ELF */
 
     default:
@@ -13166,6 +13171,9 @@ md_estimate_size_before_relax (fragS *fragp, asection *segtype)
     change = nopic_need_relax (fragp->fr_symbol, 0);
   else if (mips_pic == SVR4_PIC)
     change = pic_need_relax (fragp->fr_symbol, segtype);
+  else if (mips_pic == VXWORKS_PIC)
+    /* For vxworks, GOT16 relocations never have a corresponding LO16.  */
+    change = 0;
   else
     abort ();
 
index bc642b0..5665d3d 100644 (file)
@@ -75,6 +75,9 @@ enum mips_pic_level
 
   /* Generate PIC code as in the SVR4 MIPS ABI.  */
   SVR4_PIC,
+
+  /* VxWorks's PIC model.  */
+  VXWORKS_PIC
 };
 
 extern enum mips_pic_level mips_pic;
index 04bfb53..10a1411 100644 (file)
@@ -334,6 +334,10 @@ sparc_target_format ()
 #endif
 #endif
 
+#ifdef TE_VXWORKS
+  return "elf32-sparc-vxworks";
+#endif
+
 #ifdef OBJ_ELF
   return sparc_arch_size == 64 ? "elf64-sparc" : "elf32-sparc";
 #endif
@@ -3528,6 +3532,10 @@ tc_gen_reloc (section, fixp)
 #else
 #define GOT_NAME "__GLOBAL_OFFSET_TABLE_"
 #endif
+#ifdef TE_VXWORKS
+#define GOTT_BASE "__GOTT_BASE__"
+#define GOTT_INDEX "__GOTT_INDEX__"
+#endif
 
   /* This code must be parallel to the OBJ_ELF tc_fix_adjustable.  */
 
@@ -3540,18 +3548,30 @@ tc_gen_reloc (section, fixp)
            code = BFD_RELOC_SPARC_WPLT30;
          break;
        case BFD_RELOC_HI22:
-         if (fixp->fx_addsy != NULL
-             && strcmp (S_GET_NAME (fixp->fx_addsy), GOT_NAME) == 0)
-           code = BFD_RELOC_SPARC_PC22;
-         else
-           code = BFD_RELOC_SPARC_GOT22;
+         code = BFD_RELOC_SPARC_GOT22;
+         if (fixp->fx_addsy != NULL)
+           {
+             if (strcmp (S_GET_NAME (fixp->fx_addsy), GOT_NAME) == 0)
+               code = BFD_RELOC_SPARC_PC22;
+#ifdef TE_VXWORKS
+             if (strcmp (S_GET_NAME (fixp->fx_addsy), GOTT_BASE) == 0
+                 || strcmp (S_GET_NAME (fixp->fx_addsy), GOTT_INDEX) == 0)
+               code = BFD_RELOC_HI22; /* Unchanged.  */
+#endif
+           }
          break;
        case BFD_RELOC_LO10:
-         if (fixp->fx_addsy != NULL
-             && strcmp (S_GET_NAME (fixp->fx_addsy), GOT_NAME) == 0)
-           code = BFD_RELOC_SPARC_PC10;
-         else
-           code = BFD_RELOC_SPARC_GOT10;
+         code = BFD_RELOC_SPARC_GOT10;
+         if (fixp->fx_addsy != NULL)
+           {
+             if (strcmp (S_GET_NAME (fixp->fx_addsy), GOT_NAME) == 0)
+               code = BFD_RELOC_SPARC_PC10;
+#ifdef TE_VXWORKS
+             if (strcmp (S_GET_NAME (fixp->fx_addsy), GOTT_BASE) == 0
+                 || strcmp (S_GET_NAME (fixp->fx_addsy), GOTT_INDEX) == 0)
+               code = BFD_RELOC_LO10; /* Unchanged.  */
+#endif
+           }
          break;
        case BFD_RELOC_SPARC13:
          code = BFD_RELOC_SPARC_GOT13;
index 5a7f202..d7f059e 100644 (file)
@@ -566,6 +566,7 @@ static bfd_boolean workaround_short_loop = FALSE;
 static bfd_boolean maybe_has_short_loop = FALSE;
 static bfd_boolean workaround_close_loop_end = FALSE;
 static bfd_boolean maybe_has_close_loop_end = FALSE;
+static bfd_boolean enforce_three_byte_loop_align = FALSE;
 
 /* When workaround_short_loops is TRUE, all loops with early exits must
    have at least 3 instructions.  workaround_all_short_loops is a modifier
@@ -590,6 +591,7 @@ xtensa_setup_hw_workarounds (int earliest, int latest)
       workaround_short_loop |= TRUE;
       workaround_close_loop_end |= TRUE;
       workaround_all_short_loops |= TRUE;
+      enforce_three_byte_loop_align = TRUE;
     }
 }
 
@@ -3978,7 +3980,6 @@ xtensa_create_literal_symbol (segT sec, fragS *frag)
 
   xtensa_add_literal_sym (symbolP);
 
-  frag->tc_frag_data.is_literal = TRUE;
   lit_num++;
   return symbolP;
 }
@@ -4044,7 +4045,6 @@ xg_assemble_literal (/* const */ TInsn *insn)
   frag_now->tc_frag_data.literal_frag = get_literal_pool_location (now_seg);
   frag_now->fr_symbol = xtensa_create_literal_symbol (now_seg, frag_now);
   lit_sym = frag_now->fr_symbol;
-  frag_now->tc_frag_data.is_literal = TRUE;
 
   /* Go back.  */
   xtensa_restore_emit_state (&state);
@@ -4073,7 +4073,6 @@ xg_assemble_literal_space (/* const */ int size, int slot)
 
   lit_saved_frag = frag_now;
   frag_now->tc_frag_data.literal_frag = get_literal_pool_location (now_seg);
-  frag_now->tc_frag_data.is_literal = TRUE;
   frag_now->fr_symbol = xtensa_create_literal_symbol (now_seg, frag_now);
   xg_finish_frag (0, RELAX_LITERAL, 0, size, FALSE);
 
@@ -4228,7 +4227,6 @@ xg_resolve_labels (TInsn *insn, symbolS *label_sym)
 {
   symbolS *sym = get_special_label_symbol ();
   int i;
-  /* assert (!insn->is_literal); */
   for (i = 0; i < insn->ntok; i++)
     if (insn->tok[i].X_add_symbol == sym)
       insn->tok[i].X_add_symbol = label_sym;
@@ -4430,6 +4428,26 @@ next_frag_format_size (const fragS *fragP)
 }
 
 
+/* In early Xtensa Processors, for reasons that are unclear, the ISA
+   required two-byte instructions to be treated as three-byte instructions
+   for loop instruction alignment.  This restriction was removed beginning
+   with Xtensa LX.  Now the only requirement on loop instruction alignment
+   is that the first instruction of the loop must appear at an address that
+   does not cross a fetch boundary.  */
+
+static int
+get_loop_align_size (int insn_size)
+{
+  if (insn_size == XTENSA_UNDEFINED)
+    return xtensa_fetch_width;
+
+  if (enforce_three_byte_loop_align && insn_size == 2)
+    return 3;
+
+  return insn_size;
+}
+
+
 /* If the next legit fragment is an end-of-loop marker,
    switch its state so it will instantiate a NOP.  */
 
@@ -6551,7 +6569,8 @@ emit_single_op (TInsn *orig_insn)
        || orig_insn->opcode == xtensa_movi_n_opcode)
       && !cur_vinsn.inside_bundle
       && (orig_insn->tok[1].X_op == O_symbol
-         || orig_insn->tok[1].X_op == O_pltrel))
+         || orig_insn->tok[1].X_op == O_pltrel)
+      && !orig_insn->is_specific_opcode && use_transform ())
     xg_assembly_relax (&istack, orig_insn, now_seg, frag_now, 0, 1, 0);
   else
     if (xg_expand_assembly_insn (&istack, orig_insn))
@@ -6702,6 +6721,14 @@ xg_assemble_vliw_tokens (vliw_insn *vinsn)
     {
       int max_fill;
 
+      /* Remember the symbol that marks the end of the loop in the frag
+        that marks the start of the loop.  This way we can easily find
+        the end of the loop at the beginning, without adding special code
+        to mark the loop instructions themselves.  */
+      symbolS *target_sym = NULL;
+      if (vinsn->slots[0].tok[1].X_op == O_symbol)
+       target_sym = vinsn->slots[0].tok[1].X_add_symbol;
+
       xtensa_set_frag_assembly_state (frag_now);
       frag_now->tc_frag_data.is_insn = TRUE;
 
@@ -6711,13 +6738,10 @@ xg_assemble_vliw_tokens (vliw_insn *vinsn)
 
       if (use_transform ())
        frag_var (rs_machine_dependent, max_fill, max_fill,
-                 RELAX_ALIGN_NEXT_OPCODE,
-                 frag_now->fr_symbol,
-                 frag_now->fr_offset,
-                 NULL);
+                 RELAX_ALIGN_NEXT_OPCODE, target_sym, 0, NULL);
       else
        frag_var (rs_machine_dependent, 0, 0,
-                 RELAX_CHECK_ALIGN_NEXT_OPCODE, 0, 0, NULL);
+                 RELAX_CHECK_ALIGN_NEXT_OPCODE, target_sym, 0, NULL);
       xtensa_set_frag_assembly_state (frag_now);
 
       xtensa_move_labels (frag_now, 0, FALSE);
@@ -6918,7 +6942,8 @@ xtensa_end (void)
 
   if (workaround_short_loop && maybe_has_short_loop)
     xtensa_fix_short_loop_frags ();
-  xtensa_mark_narrow_branches ();
+  if (align_targets)
+    xtensa_mark_narrow_branches ();
   xtensa_mark_zcl_first_insns ();
 
   xtensa_sanity_check ();
@@ -7113,7 +7138,24 @@ xtensa_mark_zcl_first_insns (void)
              /* Of course, sometimes (mostly for toy test cases) a
                 zero-cost loop instruction is the last in a section.  */
              if (targ_frag)
-               targ_frag->tc_frag_data.is_first_loop_insn = TRUE;
+               {
+                 targ_frag->tc_frag_data.is_first_loop_insn = TRUE;
+                 /* Do not widen a frag that is the first instruction of a
+                    zero-cost loop.  It makes that loop harder to align.  */
+                 if (targ_frag->fr_type == rs_machine_dependent
+                     && targ_frag->fr_subtype == RELAX_SLOTS
+                     && (targ_frag->tc_frag_data.slot_subtypes[0]
+                         == RELAX_NARROW))
+                   {
+                     if (targ_frag->tc_frag_data.is_aligning_branch)
+                       targ_frag->tc_frag_data.slot_subtypes[0] = RELAX_IMMED;
+                     else
+                       {
+                         frag_wane (targ_frag);
+                         targ_frag->tc_frag_data.slot_subtypes[0] = 0;
+                       }
+                   }
+               }
              if (fragP->fr_subtype == RELAX_CHECK_ALIGN_NEXT_OPCODE)
                frag_wane (fragP);
            }
@@ -7301,7 +7343,7 @@ next_instr_is_loop_end (fragS *fragP)
    .fill 0.  */
 
 static offsetT min_bytes_to_other_loop_end
-  (fragS *, fragS *, offsetT, offsetT);
+  (fragS *, fragS *, offsetT);
 
 static void
 xtensa_fix_close_loop_end_frags (void)
@@ -7315,32 +7357,14 @@ xtensa_fix_close_loop_end_frags (void)
       fragS *fragP;
 
       fragS *current_target = NULL;
-      offsetT current_offset = 0;
 
       /* Walk over all of the fragments in a subsection.  */
       for (fragP = frchP->frch_root; fragP; fragP = fragP->fr_next)
        {
          if (fragP->fr_type == rs_machine_dependent
-             && ((fragP->fr_subtype == RELAX_IMMED)
-                 || ((fragP->fr_subtype == RELAX_SLOTS)
-                     && (fragP->tc_frag_data.slot_subtypes[0]
-                         == RELAX_IMMED))))
-           {
-             /* Read it.  If the instruction is a loop, get the target.  */
-             TInsn t_insn;
-             tinsn_from_chars (&t_insn, fragP->fr_opcode, 0);
-             if (xtensa_opcode_is_loop (xtensa_default_isa,
-                                        t_insn.opcode) == 1)
-               {
-                 /* Get the current fragment target.  */
-                 if (fragP->tc_frag_data.slot_symbols[0])
-                   {
-                     symbolS *sym = fragP->tc_frag_data.slot_symbols[0];
-                     current_target = symbol_get_frag (sym);
-                     current_offset = fragP->fr_offset;
-                   }
-               }
-           }
+             && ((fragP->fr_subtype == RELAX_ALIGN_NEXT_OPCODE)
+                 || (fragP->fr_subtype == RELAX_CHECK_ALIGN_NEXT_OPCODE)))
+             current_target = symbol_get_frag (fragP->fr_symbol);
 
          if (current_target
              && fragP->fr_type == rs_machine_dependent
@@ -7352,8 +7376,7 @@ xtensa_fix_close_loop_end_frags (void)
 #define REQUIRED_LOOP_DIVIDING_BYTES 12
              /* Max out at 12.  */
              min_bytes = min_bytes_to_other_loop_end
-               (fragP->fr_next, current_target, current_offset,
-                REQUIRED_LOOP_DIVIDING_BYTES);
+               (fragP->fr_next, current_target, REQUIRED_LOOP_DIVIDING_BYTES);
 
              if (min_bytes < REQUIRED_LOOP_DIVIDING_BYTES)
                {
@@ -7394,7 +7417,6 @@ static offsetT unrelaxed_frag_min_size (fragS *);
 static offsetT
 min_bytes_to_other_loop_end (fragS *fragP,
                             fragS *current_target,
-                            offsetT current_offset,
                             offsetT max_size)
 {
   offsetT offset = 0;
@@ -7406,11 +7428,11 @@ min_bytes_to_other_loop_end (fragS *fragP,
     {
       if (current_fragP->tc_frag_data.is_loop_target
          && current_fragP != current_target)
-       return offset + current_offset;
+       return offset;
 
       offset += unrelaxed_frag_min_size (current_fragP);
 
-      if (offset + current_offset >= max_size)
+      if (offset >= max_size)
        return max_size;
     }
   return max_size;
@@ -7497,35 +7519,22 @@ xtensa_fix_short_loop_frags (void)
     {
       fragS *fragP;
       fragS *current_target = NULL;
-      offsetT current_offset = 0;
       xtensa_opcode current_opcode = XTENSA_UNDEFINED;
 
       /* Walk over all of the fragments in a subsection.  */
       for (fragP = frchP->frch_root; fragP; fragP = fragP->fr_next)
        {
-         /* Check on the current loop.  */
          if (fragP->fr_type == rs_machine_dependent
-             && ((fragP->fr_subtype == RELAX_IMMED)
-                 || ((fragP->fr_subtype == RELAX_SLOTS)
-                     && (fragP->tc_frag_data.slot_subtypes[0]
-                         == RELAX_IMMED))))
+             && ((fragP->fr_subtype == RELAX_ALIGN_NEXT_OPCODE)
+                 || (fragP->fr_subtype == RELAX_CHECK_ALIGN_NEXT_OPCODE)))
            {
              TInsn t_insn;
-
-             /* Read it.  If the instruction is a loop, get the target.  */
-             tinsn_from_chars (&t_insn, fragP->fr_opcode, 0);
-             if (xtensa_opcode_is_loop (xtensa_default_isa,
-                                        t_insn.opcode) == 1)
-               {
-                 /* Get the current fragment target.  */
-                 if (fragP->tc_frag_data.slot_symbols[0])
-                   {
-                     symbolS *sym = fragP->tc_frag_data.slot_symbols[0];
-                     current_target = symbol_get_frag (sym);
-                     current_offset = fragP->fr_offset;
-                     current_opcode = t_insn.opcode;
-                   }
-               }
+             fragS *loop_frag = next_non_empty_frag (fragP);
+             tinsn_from_chars (&t_insn, loop_frag->fr_opcode, 0);
+             current_target = symbol_get_frag (fragP->fr_symbol);
+             current_opcode = t_insn.opcode;
+             assert (xtensa_opcode_is_loop (xtensa_default_isa,
+                                            current_opcode));
            }
 
          if (fragP->fr_type == rs_machine_dependent
@@ -7835,16 +7844,10 @@ is_local_forward_loop (const TInsn *insn, fragS *fragP)
 static int
 get_text_align_power (unsigned target_size)
 {
-  int i = 0;
-  unsigned power = 1;
-
-  assert (target_size <= INT_MAX);
-  while (target_size > power)
-    {
-      power <<= 1;
-      i += 1;
-    }
-  return i;
+  if (target_size <= 4)
+    return 2;
+  assert (target_size == 8);
+  return 3;
 }
 
 
@@ -8038,14 +8041,9 @@ get_noop_aligned_address (fragS *fragP, addressT address)
      instruction following the loop, not the LOOP instruction.  */
 
   if (first_insn == NULL)
-    return address;
-
-  assert (first_insn->tc_frag_data.is_first_loop_insn);
-
-  first_insn_size = frag_format_size (first_insn);
-
-  if (first_insn_size == 2 || first_insn_size == XTENSA_UNDEFINED)
-    first_insn_size = 3;       /* ISA specifies this */
+    first_insn_size = xtensa_fetch_width;
+  else
+    first_insn_size = get_loop_align_size (frag_format_size (first_insn));
 
   /* If it was 8, then we'll need a larger alignment for the section.  */
   align_power = get_text_align_power (first_insn_size);
@@ -8108,7 +8106,7 @@ get_aligned_diff (fragS *fragP, addressT address, offsetT *max_diff)
       return opt_diff;
 
     case RELAX_ALIGN_NEXT_OPCODE:
-      target_size = next_frag_format_size (fragP);
+      target_size = get_loop_align_size (next_frag_format_size (fragP));
       loop_insn_offset = 0;
       is_loop = next_frag_opcode_is_loop (fragP, &loop_opcode);
       assert (is_loop);
@@ -8119,9 +8117,6 @@ get_aligned_diff (fragS *fragP, addressT address, offsetT *max_diff)
          != RELAX_IMMED)
        loop_insn_offset = get_expanded_loop_offset (loop_opcode);
 
-      if (target_size == 2)
-       target_size = 3; /* ISA specifies this */
-
       /* In an ideal world, which is what we are shooting for here,
         we wouldn't need to use any NOPs immediately prior to the
         LOOP instruction.  If this approach fails, relax_frag_loop_align
@@ -8725,7 +8720,7 @@ bytes_to_stretch (fragS *this_frag,
       /* We will need a NOP no matter what, but should we widen
         this instruction to help?
 
-        This is a RELAX_FRAG_NARROW frag.  */
+        This is a RELAX_NARROW frag.  */
       switch (desired_diff)
        {
        case 1:
@@ -10826,8 +10821,11 @@ init_op_placement_info_table (void)
                  opi->issuef++;
                  set_bit (fmt, opi->formats);
                  set_bit (slot, opi->slots[fmt]);
-                 /* opi->slot_count[fmt]++; */
-                 if (fmt_length < opi->narrowest_size)
+                 if (fmt_length < opi->narrowest_size
+                     || (fmt_length == opi->narrowest_size
+                         && (xtensa_format_num_slots (isa, fmt)
+                             < xtensa_format_num_slots (isa,
+                                                        opi->narrowest))))
                    {
                      opi->narrowest = fmt;
                      opi->narrowest_size = fmt_length;
index 76d46f5..413e336 100644 (file)
@@ -460,70 +460,6 @@ check_mach (int ins_type)
   ins_used |= ins_type;
 }
 
-/* This function tries to subtract two symbols, the generic code does
-   that too, but this function tries harder.
-   The behaviour of this function is not altered by extra
-   fragmentations caused by the code to produce listings.  */
-int
-z80_optimize_expr (expressionS *resultP, operatorT left_op,
-                  expressionS *right)
-{
-  int res, swap, som;
-  fragS *lfrag, *rfrag, *cur;
-
-  res = 0;
-  if (left_op == O_subtract
-      && right->X_op == O_symbol
-      && resultP->X_op == O_symbol)
-    {
-      lfrag = symbol_get_frag (resultP->X_add_symbol);
-      rfrag = symbol_get_frag (right->X_add_symbol);
-
-      if (S_GET_SEGMENT (right->X_add_symbol) !=  undefined_section
-         && (S_GET_SEGMENT (right->X_add_symbol)
-             == S_GET_SEGMENT (resultP->X_add_symbol)))
-       {
-         for (swap = 0; (res == 0) && (swap < 2); ++swap)
-           {
-             if (swap)
-               {
-                 cur = lfrag;
-                 lfrag = rfrag;
-                 rfrag = cur;
-               }
-             else
-               cur = rfrag;
-
-             /* Now som == cur->fr_address - rfrag->address, except
-                the latter may not have been computed yet.  */
-             for (som = 0; cur && cur != lfrag; cur = cur->fr_next)
-               {
-                 if (cur->fr_type == rs_fill) /* Is the size fized?  */
-                   som += cur->fr_fix+cur->fr_offset*cur->fr_var;
-                 else
-                   break;
-               }
-
-             if  (cur == lfrag)
-               {
-                 resultP->X_add_number -= right->X_add_number;
-                 resultP->X_add_number
-                   += (S_GET_VALUE (resultP->X_add_symbol)
-                       - S_GET_VALUE (right->X_add_symbol));
-                 som -= lfrag->fr_address - rfrag->fr_address;
-                 /* Correct the result if the fr_address
-                    fields are not computed yet.  */
-                 resultP->X_add_number += (swap ? -som : som);
-                 resultP->X_op = O_constant;
-                 resultP->X_add_symbol = 0;
-                 res = 1;
-               }
-           }
-       }
-    }
-  return res;
-}
-
 /* Check whether an expression is indirect.  */
 static int
 is_indir (const char *s)
index 0ae318a..0021fb3 100644 (file)
 /* Define some functions to be called by generic code.  */
 #define md_end               z80_md_end
 #define md_start_line_hook() { if (z80_start_line_hook ()) continue; }
-#define md_optimize_expr     z80_optimize_expr
 #define TC_CONS_FIX_NEW z80_cons_fix_new
 
 extern void z80_md_end (void);
 extern int z80_start_line_hook (void);
-extern int z80_optimize_expr (expressionS *, operatorT, expressionS *);
 extern void z80_cons_fix_new (fragS *, int, int, expressionS *);
 
 #define WORKING_DOT_WORD
index 5f85840..a084882 100644 (file)
 #include <stddef.h>
 #include "xtensa-config.h"
 
+#ifndef XCHAL_HAVE_WIDE_BRANCHES
+#define XCHAL_HAVE_WIDE_BRANCHES 0
+#endif
+
 /* Imported from bfd.  */
 extern xtensa_isa xtensa_default_isa;
 
@@ -345,30 +349,30 @@ static string_pattern_pair widen_spec_list[] =
      table since they are more efficient than the branch-around
      relaxations.  */
   
-  {"beqz %as,%label ? IsaUseWideBranches", "beqz.w18 %as,%label"},
-  {"bnez %as,%label ? IsaUseWideBranches", "bnez.w18 %as,%label"},
-  {"bgez %as,%label ? IsaUseWideBranches", "bgez.w18 %as,%label"},
-  {"bltz %as,%label ? IsaUseWideBranches", "bltz.w18 %as,%label"},
-  {"beqi %as,%imm,%label ? IsaUseWideBranches", "beqi.w18 %as,%imm,%label"},
-  {"bnei %as,%imm,%label ? IsaUseWideBranches", "bnei.w18 %as,%imm,%label"},
-  {"bgei %as,%imm,%label ? IsaUseWideBranches", "bgei.w18 %as,%imm,%label"},
-  {"blti %as,%imm,%label ? IsaUseWideBranches", "blti.w18 %as,%imm,%label"},
-  {"bgeui %as,%imm,%label ? IsaUseWideBranches", "bgeui.w18 %as,%imm,%label"},
-  {"bltui %as,%imm,%label ? IsaUseWideBranches", "bltui.w18 %as,%imm,%label"},
-  {"bbci %as,%imm,%label ? IsaUseWideBranches", "bbci.w18 %as,%imm,%label"},
-  {"bbsi %as,%imm,%label ? IsaUseWideBranches", "bbsi.w18 %as,%imm,%label"},
-  {"beq %as,%at,%label ? IsaUseWideBranches", "beq.w18 %as,%at,%label"},
-  {"bne %as,%at,%label ? IsaUseWideBranches", "bne.w18 %as,%at,%label"},
-  {"bge %as,%at,%label ? IsaUseWideBranches", "bge.w18 %as,%at,%label"},
-  {"blt %as,%at,%label ? IsaUseWideBranches", "blt.w18 %as,%at,%label"},
-  {"bgeu %as,%at,%label ? IsaUseWideBranches", "bgeu.w18 %as,%at,%label"},
-  {"bltu %as,%at,%label ? IsaUseWideBranches", "bltu.w18 %as,%at,%label"},
-  {"bany %as,%at,%label ? IsaUseWideBranches", "bany.w18 %as,%at,%label"},
-  {"bnone %as,%at,%label ? IsaUseWideBranches", "bnone.w18 %as,%at,%label"},
-  {"ball %as,%at,%label ? IsaUseWideBranches", "ball.w18 %as,%at,%label"},
-  {"bnall %as,%at,%label ? IsaUseWideBranches", "bnall.w18 %as,%at,%label"},
-  {"bbc %as,%at,%label ? IsaUseWideBranches", "bbc.w18 %as,%at,%label"},
-  {"bbs %as,%at,%label ? IsaUseWideBranches", "bbs.w18 %as,%at,%label"},
+  {"beqz %as,%label ? IsaUseWideBranches", "WIDE.beqz %as,%label"},
+  {"bnez %as,%label ? IsaUseWideBranches", "WIDE.bnez %as,%label"},
+  {"bgez %as,%label ? IsaUseWideBranches", "WIDE.bgez %as,%label"},
+  {"bltz %as,%label ? IsaUseWideBranches", "WIDE.bltz %as,%label"},
+  {"beqi %as,%imm,%label ? IsaUseWideBranches", "WIDE.beqi %as,%imm,%label"},
+  {"bnei %as,%imm,%label ? IsaUseWideBranches", "WIDE.bnei %as,%imm,%label"},
+  {"bgei %as,%imm,%label ? IsaUseWideBranches", "WIDE.bgei %as,%imm,%label"},
+  {"blti %as,%imm,%label ? IsaUseWideBranches", "WIDE.blti %as,%imm,%label"},
+  {"bgeui %as,%imm,%label ? IsaUseWideBranches", "WIDE.bgeui %as,%imm,%label"},
+  {"bltui %as,%imm,%label ? IsaUseWideBranches", "WIDE.bltui %as,%imm,%label"},
+  {"bbci %as,%imm,%label ? IsaUseWideBranches", "WIDE.bbci %as,%imm,%label"},
+  {"bbsi %as,%imm,%label ? IsaUseWideBranches", "WIDE.bbsi %as,%imm,%label"},
+  {"beq %as,%at,%label ? IsaUseWideBranches", "WIDE.beq %as,%at,%label"},
+  {"bne %as,%at,%label ? IsaUseWideBranches", "WIDE.bne %as,%at,%label"},
+  {"bge %as,%at,%label ? IsaUseWideBranches", "WIDE.bge %as,%at,%label"},
+  {"blt %as,%at,%label ? IsaUseWideBranches", "WIDE.blt %as,%at,%label"},
+  {"bgeu %as,%at,%label ? IsaUseWideBranches", "WIDE.bgeu %as,%at,%label"},
+  {"bltu %as,%at,%label ? IsaUseWideBranches", "WIDE.bltu %as,%at,%label"},
+  {"bany %as,%at,%label ? IsaUseWideBranches", "WIDE.bany %as,%at,%label"},
+  {"bnone %as,%at,%label ? IsaUseWideBranches", "WIDE.bnone %as,%at,%label"},
+  {"ball %as,%at,%label ? IsaUseWideBranches", "WIDE.ball %as,%at,%label"},
+  {"bnall %as,%at,%label ? IsaUseWideBranches", "WIDE.bnall %as,%at,%label"},
+  {"bbc %as,%at,%label ? IsaUseWideBranches", "WIDE.bbc %as,%at,%label"},
+  {"bbs %as,%at,%label ? IsaUseWideBranches", "WIDE.bbs %as,%at,%label"},
   
   /* Widening branch comparisons eq/ne to zero.  Prefer relaxing to narrow
      branches if the density option is available.  */
@@ -1550,6 +1554,31 @@ transition_applies (insn_pattern *initial_insn,
 }
 
 
+static bfd_boolean
+wide_branch_opcode (const char *opcode_name,
+                   char *suffix,
+                   xtensa_opcode *popcode)
+{
+  xtensa_isa isa = xtensa_default_isa;
+  xtensa_opcode opcode;
+  static char wbr_name_buf[20];
+
+  if (strncmp (opcode_name, "WIDE.", 5) != 0)
+    return FALSE;
+
+  strcpy (wbr_name_buf, opcode_name + 5);
+  strcat (wbr_name_buf, suffix);
+  opcode = xtensa_opcode_lookup (isa, wbr_name_buf);
+  if (opcode != XTENSA_UNDEFINED)
+    {
+      *popcode = opcode;
+      return TRUE;
+    }
+
+  return FALSE;
+}
+
+
 static TransitionRule *
 build_transition (insn_pattern *initial_insn,
                  insn_repl *replace_insns,
@@ -1727,13 +1756,19 @@ build_transition (insn_pattern *initial_insn,
       else
        {
          bi->typ = INSTR_INSTR;
-         bi->opcode = xtensa_opcode_lookup (isa, r->t.opcode_name);
+         if (wide_branch_opcode (opcode_name, ".w18", &bi->opcode)
+             || wide_branch_opcode (opcode_name, ".w15", &bi->opcode))
+           opcode_name = xtensa_opcode_name (isa, bi->opcode);
+         else
+           bi->opcode = xtensa_opcode_lookup (isa, opcode_name);
+
          if (bi->opcode == XTENSA_UNDEFINED)
            {
              as_warn (_("invalid opcode '%s' in transition rule '%s'"),
-                      r->t.opcode_name, to_string);
+                      opcode_name, to_string);
              return NULL;
            }
+
          /* Check for the right number of ops.  */
          if (xtensa_opcode_num_operands (isa, bi->opcode)
              != (int) operand_count)
index ce252a7..539f754 100755 (executable)
@@ -856,7 +856,7 @@ Optional Features:
   --enable-static=PKGS  build static libraries default=yes
   --enable-fast-install=PKGS  optimize for fast installation default=yes
   --disable-libtool-lock  avoid locking (might break parallel builds)
-    targets            alternative target configurations besides the primary
+   --enable-targets       alternative target configurations besides the primary
   --enable-commonbfdlib   build shared BFD/opcodes/libiberty library
   --enable-werror    treat compile warnings as errors
   --enable-build-warnings Enable build-time compiler warnings
index 00f6512..43c9ef9 100644 (file)
@@ -23,7 +23,7 @@ AM_INIT_AUTOMAKE(gas, ${BFD_VERSION})
 AM_PROG_LIBTOOL
 
 AC_ARG_ENABLE(targets,
-[    targets            alternative target configurations besides the primary],
+[   --enable-targets       alternative target configurations besides the primary],
 [case "${enableval}" in
   yes | "") AC_ERROR(enable-targets option must specify target names or 'all')
            ;;
index 220b013..07fa817 100644 (file)
@@ -335,7 +335,7 @@ case ${generic_target} in
 
   sparc-*-rtems*)                      fmt=elf ;;
   sparc-*-sunos4*)                     fmt=aout em=sun3 ;;
-  sparc-*-aout | sparc*-*-vxworks*)    fmt=aout em=sparcaout ;;
+  sparc-*-aout)                                fmt=aout em=sparcaout ;;
   sparc-*-coff)                                fmt=coff ;;
   sparc-*-linux*aout*)                 fmt=aout em=linux ;;
   sparc-*-linux-*)                     fmt=elf em=linux ;;
index cc806ca..d48a9cc 100644 (file)
@@ -8,7 +8,7 @@ CONFIG=all
 # Options to extract the man page from as.texinfo
 MANCONF = -Dman
 
-TEXI2POD = perl $(top_srcdir)/../etc/texi2pod.pl
+TEXI2POD = perl $(BASEDIR)/etc/texi2pod.pl $(AM_MAKEINFOFLAGS)
 
 POD2MAN = pod2man --center="GNU Development Tools" \
        --release="binutils-$(VERSION)" --section=1
@@ -17,11 +17,13 @@ man_MANS = as.1
 
 info_TEXINFOS = as.texinfo 
 
+AM_MAKEINFOFLAGS = -I "$(srcdir)" -I "$(top_srcdir)/../libiberty"
+TEXI2DVI = texi2dvi -I "$(srcdir)" -I "$(top_srcdir)/../libiberty"
+
 asconfig.texi: $(CONFIG).texi
        rm -f asconfig.texi
        cp $(srcdir)/$(CONFIG).texi ./asconfig.texi
        chmod u+w ./asconfig.texi
-       echo "@set top_srcdir $(top_srcdir)" >> ./asconfig.texi
 
 CPU_DOCS = \
        c-alpha.texi \
index 99c1a2f..fc07fc3 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -58,11 +58,6 @@ PDFS = as.pdf
 PSS = as.ps
 HTMLS = as.html
 TEXINFOS = as.texinfo
-TEXI2DVI = `if test -f $(top_srcdir)/../texinfo/util/texi2dvi; then \
-             echo $(top_srcdir)/../texinfo/util/texi2dvi; \
-           else \
-             echo texi2dvi; \
-           fi`
 TEXI2PDF = $(TEXI2DVI) --pdf --batch
 MAKEINFOHTML = $(MAKEINFO) --html
 AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
@@ -212,12 +207,14 @@ CONFIG = all
 
 # Options to extract the man page from as.texinfo
 MANCONF = -Dman
-TEXI2POD = perl $(top_srcdir)/../etc/texi2pod.pl
+TEXI2POD = perl $(BASEDIR)/etc/texi2pod.pl $(AM_MAKEINFOFLAGS)
 POD2MAN = pod2man --center="GNU Development Tools" \
        --release="binutils-$(VERSION)" --section=1
 
 man_MANS = as.1
 info_TEXINFOS = as.texinfo 
+AM_MAKEINFOFLAGS = -I "$(srcdir)" -I "$(top_srcdir)/../libiberty"
+TEXI2DVI = texi2dvi -I "$(srcdir)" -I "$(top_srcdir)/../libiberty"
 CPU_DOCS = \
        c-alpha.texi \
        c-arc.texi \
@@ -309,9 +306,11 @@ distclean-libtool:
        restore=: && backupdir="$(am__leading_dot)am$$$$" && \
        am__cwd=`pwd` && cd $(srcdir) && \
        rm -rf $$backupdir && mkdir $$backupdir && \
-       for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
-         if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
-       done; \
+       if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+         for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+           if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+         done; \
+       else :; fi && \
        cd "$$am__cwd"; \
        if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
         -o $@ $<; \
@@ -353,6 +352,7 @@ as.dvi: as.texinfo
 as.pdf: as.texinfo 
 as.html: as.texinfo 
 .dvi.ps:
+       TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
        $(DVIPS) -o $@ $<
 
 uninstall-info-am:
@@ -586,7 +586,6 @@ asconfig.texi: $(CONFIG).texi
        rm -f asconfig.texi
        cp $(srcdir)/$(CONFIG).texi ./asconfig.texi
        chmod u+w ./asconfig.texi
-       echo "@set top_srcdir $(top_srcdir)" >> ./asconfig.texi
 
 gasver.texi: $(srcdir)/../../bfd/configure
        rm -f $@
index 89fecf2..d585da9 100644 (file)
@@ -451,7 +451,7 @@ gcc(1), ld(1), and the Info entries for @file{binutils} and @file{ld}.
 @c man begin OPTIONS
 
 @table @gcctabopt
-@include @value{top_srcdir}/../libiberty/at-file.texi
+@include at-file.texi
 
 @item -a[cdhlmns]
 Turn on listings, in any of a variety of ways:
index 64285b8..04544d1 100644 (file)
@@ -49,7 +49,7 @@ Base instruction set.
 Jump-and-link (jl) instruction.  No requirement of an instruction between
 setting flags and conditional jump.  For example:
 
-@smallexample @ta
+@smallexample
   mov.f r0,r1
   beq   foo
 @end smallexample
index 8194528..16666fa 100644 (file)
@@ -209,21 +209,21 @@ get_line_subseg (segT seg, subsegT subseg)
   static subsegT last_subseg;
   static struct line_subseg *last_line_subseg;
 
-  struct line_seg *s;
+  struct line_seg **ps, *s;
   struct line_subseg **pss, *ss;
 
   if (seg == last_seg && subseg == last_subseg)
     return last_line_subseg;
 
-  for (s = all_segs; s; s = s->next)
+  for (ps = &all_segs; (s = *ps) != NULL; ps = &s->next)
     if (s->seg == seg)
       goto found_seg;
 
   s = (struct line_seg *) xmalloc (sizeof (*s));
-  s->next = all_segs;
+  s->next = NULL;
   s->seg = seg;
   s->head = NULL;
-  all_segs = s;
+  *ps = s;
 
  found_seg:
   for (pss = &s->head; (ss = *pss) != NULL ; pss = &ss->next)
index 3ae1bcc..69f0aac 100644 (file)
@@ -1,6 +1,6 @@
 /* expr.c -operands, expressions-
    Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-   1999, 2000, 2001, 2002, 2003, 2004, 2005
+   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
    Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
@@ -1662,6 +1662,7 @@ expr (int rankarg,                /* Larger # is higher rank.  */
   while (op_left != O_illegal && op_rank[(int) op_left] > rank)
     {
       segT rightseg;
+      bfd_vma frag_off;
 
       input_line_pointer += op_chars;  /* -> after operator.  */
 
@@ -1741,12 +1742,15 @@ expr (int rankarg,              /* Larger # is higher rank.  */
       else if (op_left == O_subtract
               && right.X_op == O_symbol
               && resultP->X_op == O_symbol
-              && (symbol_get_frag (right.X_add_symbol)
-                  == symbol_get_frag (resultP->X_add_symbol))
+              && retval == rightseg
               && (SEG_NORMAL (rightseg)
-                  || right.X_add_symbol == resultP->X_add_symbol))
+                  || right.X_add_symbol == resultP->X_add_symbol)
+              && frag_offset_fixed_p (symbol_get_frag (resultP->X_add_symbol),
+                                      symbol_get_frag (right.X_add_symbol),
+                                      &frag_off))
        {
          resultP->X_add_number -= right.X_add_number;
+         resultP->X_add_number -= frag_off / OCTETS_PER_BYTE;
          resultP->X_add_number += (S_GET_VALUE (resultP->X_add_symbol)
                                    - S_GET_VALUE (right.X_add_symbol));
          resultP->X_op = O_constant;
@@ -1900,6 +1904,7 @@ resolve_expression (expressionS *expressionP)
   valueT left, right;
   segT seg_left, seg_right;
   fragS *frag_left, *frag_right;
+  bfd_vma frag_off;
 
   switch (op)
     {
@@ -2002,13 +2007,15 @@ resolve_expression (expressionS *expressionP)
         on the input value.
         Otherwise, both operands must be absolute.  We already handled
         the case of addition or subtraction of a constant above.  */
+      frag_off = 0;
       if (!(seg_left == absolute_section
               && seg_right == absolute_section)
          && !(op == O_eq || op == O_ne)
          && !((op == O_subtract
                || op == O_lt || op == O_le || op == O_ge || op == O_gt)
               && seg_left == seg_right
-              && (finalize_syms || frag_left == frag_right)
+              && (finalize_syms
+                  || frag_offset_fixed_p (frag_left, frag_right, &frag_off))
               && (seg_left != reg_section || left == right)
               && (seg_left != undefined_section || add_symbol == op_symbol)))
        {
@@ -2068,6 +2075,7 @@ resolve_expression (expressionS *expressionP)
            return 0;
        }
 
+      right += frag_off / OCTETS_PER_BYTE;
       switch (op)
        {
        case O_add:                     left += right; break;
index 6dae8bc..b08ef50 100644 (file)
@@ -1,6 +1,6 @@
 /* frags.c - manage frags -
    Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-   1999, 2000, 2001, 2003, 2004
+   1999, 2000, 2001, 2003, 2004, 2005, 2006
    Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
@@ -383,3 +383,56 @@ frag_append_1_char (int datum)
     }
   obstack_1grow (&frchain_now->frch_obstack, datum);
 }
+
+/* Return TRUE if FRAG1 and FRAG2 have a fixed relationship between
+   their start addresses.  Set OFFSET to the difference in address
+   not already accounted for in the frag FR_ADDRESS.  */
+
+bfd_boolean
+frag_offset_fixed_p (fragS *frag1, fragS *frag2, bfd_vma *offset)
+{
+  fragS *frag;
+  bfd_vma off;
+
+  /* Start with offset initialised to difference between the two frags.
+     Prior to assigning frag addresses this will be zero.  */
+  off = frag1->fr_address - frag2->fr_address;
+  if (frag1 == frag2)
+    {
+      *offset = off;
+      return TRUE;
+    }
+
+  /* Maybe frag2 is after frag1.  */
+  frag = frag1;
+  while (frag->fr_type == rs_fill)
+    {
+      off += frag->fr_fix + frag->fr_offset * frag->fr_var;
+      frag = frag->fr_next;
+      if (frag == NULL)
+       break;
+      if (frag == frag2)
+       {
+         *offset = off;
+         return TRUE;
+       }
+    }
+
+  /* Maybe frag1 is after frag2.  */
+  off = frag1->fr_address - frag2->fr_address;
+  frag = frag2;
+  while (frag->fr_type == rs_fill)
+    {
+      off -= frag->fr_fix + frag->fr_offset * frag->fr_var;
+      frag = frag->fr_next;
+      if (frag == NULL)
+       break;
+      if (frag == frag1)
+       {
+         *offset = off;
+         return TRUE;
+       }
+    }
+
+  return FALSE;
+}
index e6c6170..8804467 100644 (file)
@@ -1,6 +1,6 @@
 /* frags.h - Header file for the frag concept.
    Copyright 1987, 1992, 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001,
-   2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
 
@@ -148,4 +148,6 @@ char *frag_var (relax_stateT type,
                offsetT offset,
                char *opcode);
 
+bfd_boolean frag_offset_fixed_p (fragS *, fragS *, bfd_vma *);
+
 #endif /* FRAGS_H */
index 4ec0ca0..be09b4c 100644 (file)
@@ -1,6 +1,6 @@
 # Makefile for program source directory in GNU NLS utilities package.
 # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
-# Copyright 2003 Free Software Foundation, Inc.
+# Copyright 2003, 2006 Free Software Foundation, Inc.
 #
 # This file may be copied and used freely without restrictions.  It can
 # be used in projects which are not available under the GNU Public License
@@ -186,7 +186,7 @@ check: all
 
 cat-id-tbl.o: ../intl/libgettext.h
 
-html dvi info tags TAGS ID:
+html dvi pdf ps info tags TAGS ID:
 
 mostlyclean:
        rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
index 441076a..3a173a5 100644 (file)
@@ -116,6 +116,8 @@ config/tc-v850.c
 config/tc-v850.h
 config/tc-vax.c
 config/tc-vax.h
+config/tc-xc16x.c
+config/tc-xc16x.h
 config/tc-xstormy16.c
 config/tc-xstormy16.h
 config/tc-xtensa.c
index eb78d7c..e7678f7 100644 (file)
@@ -1,85 +1,77 @@
-# Mensajes en español para gas-2.15.96.
-# Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-# Cristian Othón Martínez Vera <cfuga@itam.mx>, 2002, 2003, 2004, 2005.
+# Mensajes en español para gas-2.16.93.
+# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# Cristian Othón Martínez Vera <cfuga@itam.mx>, 2002, 2003, 2004, 2005, 2006.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gas 2.15.96\n"
+"Project-Id-Version: gas 2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-05 20:33+1030\n"
-"PO-Revision-Date: 2005-03-14 17:12-0600\n"
+"POT-Creation-Date: 2005-10-25 08:41+0930\n"
+"PO-Revision-Date: 2006-05-26 15:10-0500\n"
 "Last-Translator: Cristian Othón Martínez Vera <cfuga@itam.mx>\n"
 "Language-Team: Spanish <es@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8-bit\n"
 
-#: app.c:468 app.c:482
+#: app.c:470 app.c:484
 msgid "end of file in comment"
 msgstr "fin de fichero en el comentario"
 
-#: app.c:561
-msgid "end of file in string; inserted '\"'"
-msgstr "fin de fichero en la cadena; se insertó '\"'"
-
-#: app.c:606
-msgid "end of file in string; '\"' inserted"
-msgstr "fin de fichero en la cadena; se insertó '\"'"
+#: app.c:560 app.c:605
+#, c-format
+msgid "end of file in string; '%c' inserted"
+msgstr "fin de fichero en la cadena; se insertó '%c'"
 
-#: app.c:632
+#: app.c:631
 #, c-format
 msgid "unknown escape '\\%c' in string; ignored"
 msgstr "escape '\\%c' desconocido en la cadena; se ignora"
 
-#: app.c:788
+#: app.c:786
 msgid "end of file not at end of a line; newline inserted"
 msgstr "el fin de fichero no está al final de una línea: se insertó línea nueva"
 
-#: app.c:947
+#: app.c:945
 msgid "end of file in multiline comment"
 msgstr "fin de fichero en comentario multilíneas"
 
-#: app.c:1011
+#: app.c:1010
 msgid "end of file after a one-character quote; \\0 inserted"
 msgstr "fin de fichero después de una comilla de un carácter; se insertó \\0"
 
-#: app.c:1019
+#: app.c:1018
 msgid "end of file in escape character"
 msgstr "fin de fichero en carácter de escape"
 
-#: app.c:1031
+#: app.c:1030
 msgid "missing close quote; (assumed)"
 msgstr "falta la comilla que cierra; (se asume)"
 
-#: app.c:1099 app.c:1153 app.c:1164 app.c:1229
+#: app.c:1098 app.c:1152 app.c:1163 app.c:1228
 msgid "end of file in comment; newline inserted"
 msgstr "fin de fichero en comentario; se insertó una línea nueva"
 
-#: as.c:165
+#: as.c:161
 msgid "missing emulation mode name"
 msgstr "falta el nombre del modo de emulación"
 
-#: as.c:180
+#: as.c:176
 #, c-format
 msgid "unrecognized emulation name `%s'"
 msgstr "nombre de emulación `%s' no reconocido"
 
-#: as.c:228
-#, c-format
-msgid "GNU assembler version %s (%s) using BFD version %s"
-msgstr "GNU ensamblador versión %s (%s) utilizando BFD versión %s"
-
-#: as.c:231
+#: as.c:223
 #, c-format
-msgid "GNU assembler version %s (%s)"
-msgstr "GNU ensamblador versión %s (%s)"
+msgid "GNU assembler version %s (%s) using BFD version %s\n"
+msgstr "GNU ensamblador versión %s (%s) utilizando BFD versión %s\n"
 
-#: as.c:239
+#: as.c:230
 #, c-format
 msgid "Usage: %s [option...] [asmfile...]\n"
 msgstr "Modo de empleo: %s [opción...] [ficheroasm...]\n"
 
-#: as.c:241
+#: as.c:232
 #, c-format
 msgid ""
 "Options:\n"
@@ -106,152 +98,168 @@ msgstr ""
 "                      \t  s      incluye símbolos\n"
 "                      \t  =FICH  listar a FICHero (debe ser la última sub-opción)\n"
 
-#: as.c:254
+#: as.c:245
 #, c-format
 msgid "  --alternate             initially turn on alternate macro syntax\n"
 msgstr "  --alternate             activa inicialmente la sintaxis alternativa de macros\n"
 
-#: as.c:256
+#: as.c:247
 #, c-format
 msgid "  -D                      produce assembler debugging messages\n"
 msgstr "  -D                      produce mensajes de depuración de ensamblador\n"
 
-#: as.c:258
+#: as.c:249
 #, c-format
 msgid "  --defsym SYM=VAL        define symbol SYM to given value\n"
 msgstr "  --defsym SIM=VAL        define el símbolo SIM al valor dado\n"
 
-#: as.c:274
+#: as.c:265
 #, c-format
 msgid "                          emulate output (default %s)\n"
 msgstr "                          emula la salida (por defecto %s)\n"
 
-#: as.c:279
+#: as.c:270
 #, c-format
 msgid "  --execstack             require executable stack for this object\n"
 msgstr "  --execstack             requiere pila ejecutable para este objeto\n"
 
-#: as.c:281
+#: as.c:272
 #, c-format
 msgid "  --noexecstack           don't require executable stack for this object\n"
 msgstr "  --noexecstack           no requiere pila ejecutable para este objeto\n"
 
-#: as.c:284
+#: as.c:275
 #, c-format
 msgid "  -f                      skip whitespace and comment preprocessing\n"
 msgstr "  -f                      salta espacios en blanco y comentarios de preprocesamiento\n"
 
-#: as.c:286
+#: as.c:277
 #, c-format
 msgid "  -g --gen-debug          generate debugging information\n"
 msgstr "  -g --gen-debug          genera información de depuración\n"
 
-#: as.c:288
+#: as.c:279
 #, c-format
 msgid "  --gstabs                generate STABS debugging information\n"
 msgstr "  --gstabs                genera información de depuración de STABS\n"
 
-#: as.c:290
+#: as.c:281
 #, c-format
 msgid "  --gstabs+               generate STABS debug info with GNU extensions\n"
 msgstr "  --gstabs+               genera información de depuración de STABS con extensiones GNU\n"
 
-#: as.c:292
+#: as.c:283
 #, c-format
 msgid "  --gdwarf-2              generate DWARF2 debugging information\n"
 msgstr "  --gdwarf-2              genera información de depuración DWARF2\n"
 
-#: as.c:294
+#: as.c:285
+#, c-format
+msgid "  --hash-size=<value>     set the hash table size close to <value>\n"
+msgstr "  --hash-size=<valor>     establece el tamaño de la tabla de dispersión cerca a <valor>\n"
+
+#: as.c:287
 #, c-format
 msgid "  --help                  show this message and exit\n"
 msgstr "  --help                  muestra este mensaje y termina\n"
 
-#: as.c:296
+#: as.c:289
 #, c-format
 msgid "  --target-help           show target specific options\n"
 msgstr "  --target-help           muestra las opciones específicas del objetivo\n"
 
-#: as.c:298
+#: as.c:291
 #, c-format
 msgid "  -I DIR                  add DIR to search list for .include directives\n"
 msgstr "  -I DIR                  agrega DIR a la lista de búsqueda para directivas .include\n"
 
-#: as.c:300
+#: as.c:293
 #, c-format
 msgid "  -J                      don't warn about signed overflow\n"
 msgstr "  -J                      no avisa sobre desbordamiento con signo\n"
 
-#: as.c:302
+#: as.c:295
 #, c-format
 msgid "  -K                      warn when differences altered for long displacements\n"
 msgstr "  -K                      avisa cuando hay diferencias alteradas por desubicaciones largas\n"
 
-#: as.c:304
+#: as.c:297
 #, c-format
 msgid "  -L,--keep-locals        keep local symbols (e.g. starting with `L')\n"
 msgstr "  -L,--keep-locals        conserva los símbolos locales (p.e. inician con `L')\n"
 
-#: as.c:306
+#: as.c:299
 #, c-format
 msgid "  -M,--mri                assemble in MRI compatibility mode\n"
 msgstr "  -M,--mri                ensambla en modo de compatibilidad MRI\n"
 
-#: as.c:308
+#: as.c:301
 #, c-format
 msgid "  --MD FILE               write dependency information in FILE (default none)\n"
 msgstr "  --MD FICHERO            escribe la información de dependencias en el FICHERO (por defecto ninguno)\n"
 
-#: as.c:310
+#: as.c:303
 #, c-format
 msgid "  -nocpp                  ignored\n"
 msgstr "  -nocpp                  ignorado\n"
 
-#: as.c:312
+#: as.c:305
 #, c-format
 msgid "  -o OBJFILE              name the object-file output OBJFILE (default a.out)\n"
 msgstr "  -o FICHOBJ              nombra la salida del objeto fichero FICHOBJ (por defecto a.out)\n"
 
-#: as.c:314
+#: as.c:307
 #, c-format
 msgid "  -R                      fold data section into text section\n"
 msgstr "  -R                      pliega la sección de datos en la sección de texto\n"
 
-#: as.c:316
+#: as.c:309
+#, c-format
+msgid ""
+"  --reduce-memory-overheads \n"
+"                          prefer smaller memory use at the cost of longer\n"
+"                          assembly times\n"
+msgstr ""
+"  --reduce-memory-overheads \n"
+"                          prefiere un menor uso de memoria al costo de\n"
+"                          tiempos de ensamblado más largos\n"
+
+#: as.c:313
 #, c-format
 msgid "  --statistics            print various measured statistics from execution\n"
 msgstr "  --statistics            muestra varias estadísticas medidas de la ejecución\n"
 
-#: as.c:318
+#: as.c:315
 #, c-format
 msgid "  --strip-local-absolute  strip local absolute symbols\n"
 msgstr "  --strip-local-absolute  remueve los símbolos locales absolutos\n"
 
-#: as.c:320
+#: as.c:317
 #, c-format
 msgid "  --traditional-format    Use same format as native assembler when possible\n"
 msgstr "  --traditional-format    Usa el mismo formato que el ensamblador nativo en lo posible\n"
 
-#: as.c:322
+#: as.c:319
 #, c-format
 msgid "  --version               print assembler version number and exit\n"
 msgstr "  --version               muestra el número de versión del ensamblador y termina\n"
 
-#: as.c:324
+#: as.c:321
 #, c-format
 msgid "  -W  --no-warn           suppress warnings\n"
 msgstr "  -W  --no-warn           suprime los avisos\n"
 
-#: as.c:326
+#: as.c:323
 #, c-format
 msgid "  --warn                  don't suppress warnings\n"
 msgstr "  --warn                  no suprime los avisos\n"
 
-#: as.c:328
+#: as.c:325
 #, c-format
 msgid "  --fatal-warnings        treat warnings as errors\n"
 msgstr "  --fatal-warnings        trata los avisos como errores\n"
 
-#: as.c:330
+#: as.c:327
 #, c-format
 msgid ""
 "  --itbl INSTTBL          extend instruction set to include instructions\n"
@@ -261,22 +269,22 @@ msgstr ""
 "                          instrucciones que coincidan con las especificaciones\n"
 "                          definidas en el fichero INSTTBL\n"
 
-#: as.c:333
+#: as.c:330
 #, c-format
 msgid "  -w                      ignored\n"
 msgstr "  -w                      ignorado\n"
 
-#: as.c:335
+#: as.c:332
 #, c-format
 msgid "  -X                      ignored\n"
 msgstr "  -X                      ignorado\n"
 
-#: as.c:337
+#: as.c:334
 #, c-format
 msgid "  -Z                      generate object file even after errors\n"
 msgstr "  -Z                      genera el fichero objeto aún después de errores\n"
 
-#: as.c:339
+#: as.c:336
 #, c-format
 msgid ""
 "  --listing-lhs-width     set the width in words of the output data column of\n"
@@ -285,7 +293,7 @@ msgstr ""
 "  --listing-lhs-width     establece la anchura en palabras de la columna de\n"
 "                          datos de salida en el listado\n"
 
-#: as.c:342
+#: as.c:339
 #, c-format
 msgid ""
 "  --listing-lhs-width2    set the width in words of the continuation lines\n"
@@ -297,7 +305,7 @@ msgstr ""
 "                          ignora si es más pequeño que la anchura de la\n"
 "                          primera línea\n"
 
-#: as.c:346
+#: as.c:343
 #, c-format
 msgid ""
 "  --listing-rhs-width     set the max width in characters of the lines from\n"
@@ -306,7 +314,7 @@ msgstr ""
 "  --listing-rhs-width     establece la anchura máxima en caracteres de las\n"
 "                          líneas del fichero fuente\n"
 
-#: as.c:349
+#: as.c:346
 #, c-format
 msgid ""
 "  --listing-cont-lines    set the maximum number of continuation lines used\n"
@@ -316,17 +324,18 @@ msgstr ""
 "                          utilizadas para la columna de datos de salida del\n"
 "                          listado\n"
 
-#: as.c:356
+#: as.c:353
 #, c-format
 msgid "Report bugs to %s\n"
 msgstr "Reportar bichos a %s\n"
 
-#: as.c:549
+#: as.c:553
 #, c-format
 msgid "unrecognized option -%c%s"
 msgstr "opción -%c%s no reconocida"
 
-#: as.c:588 as.c:590
+#. This output is intended to follow the GNU standards document.
+#: as.c:591
 #, c-format
 msgid "GNU assembler %s\n"
 msgstr "GNU ensamblador %s\n"
@@ -387,36 +396,40 @@ msgstr "objetivo-bfd = %s\n"
 msgid "bad defsym; format is --defsym name=value"
 msgstr "defsym erróneo; el formato es --defsym nombre=valor"
 
-#: as.c:654
+#: as.c:650
 msgid "no file name following -t option"
 msgstr "no hay un nombre de fichero a continuación de la opción -t"
 
-#: as.c:669
+#: as.c:665
 #, c-format
 msgid "failed to read instruction table %s\n"
 msgstr "falló la lectura de la tabla de instrucciones %s\n"
 
-#: as.c:830
+#: as.c:832
 #, c-format
 msgid "invalid listing option `%c'"
 msgstr "opción de listado `%c' inválida"
 
-#: as.c:890
+#: as.c:885
+msgid "--hash-size needs a numeric argument"
+msgstr "--hash-size necesita un argumento numérico"
+
+#: as.c:910
 #, c-format
 msgid "%s: total time in assembly: %ld.%06ld\n"
 msgstr "%s: tiempo total en ensamblado: %ld.%06ld\n"
 
-#: as.c:893
+#: as.c:913
 #, c-format
 msgid "%s: data size %ld\n"
 msgstr "%s: tamaño de datos %ld\n"
 
-#: as.c:1202
+#: as.c:1175
 #, c-format
 msgid "%d warnings, treating warnings as errors"
 msgstr "%d avisos, tratando los avisos como errores"
 
-#: as.h:199
+#: as.h:200
 #, c-format
 msgid "Case value %ld unexpected at line %d of file \"%s\"\n"
 msgstr "Valor de case %ld inesperado en la línea %d del fichero \"%s\"\n"
@@ -425,7 +438,7 @@ msgstr "Valor de case %ld inesperado en la l
 #. * We have a GROSS internal error.
 #. * This should never happen.
 #.
-#: atof-generic.c:419 config/tc-m68k.c:3160
+#: atof-generic.c:419 config/tc-m68k.c:3118
 msgid "failed sanity check"
 msgstr "falló la prueba de sanidad"
 
@@ -437,428 +450,342 @@ msgstr "identificador inv
 msgid "non-constant expression in \".if\" statement"
 msgstr "expresión no constante en la declaración \".if\""
 
-#: cond.c:242
+#: cond.c:276
 msgid "bad format for ifc or ifnc"
 msgstr "formato erróneo para ifc ó ifnc"
 
-#: cond.c:272
+#: cond.c:306
 msgid "\".elseif\" without matching \".if\""
 msgstr "\".elseif\" sin un \".if\" coincidente"
 
-#: cond.c:276
+#: cond.c:310
 msgid "\".elseif\" after \".else\""
 msgstr "\".elseif\" después de \".else\""
 
-#: cond.c:279 cond.c:385
+#: cond.c:313 cond.c:419
 msgid "here is the previous \"else\""
 msgstr "aquí está el \"else\" anterior"
 
-#: cond.c:282 cond.c:388
+#: cond.c:316 cond.c:422
 msgid "here is the previous \"if\""
 msgstr "aquí está el \"if\" anterior"
 
-#: cond.c:311
+#: cond.c:345
 msgid "non-constant expression in \".elseif\" statement"
 msgstr "expresión no constante en la declaración \".elseif\""
 
-#: cond.c:349
+#: cond.c:383
 msgid "\".endif\" without \".if\""
 msgstr "\".endif\" sin \".if\""
 
-#: cond.c:378
+#: cond.c:412
 msgid "\".else\" without matching \".if\""
 msgstr "\".else\" sin un \".if\" coincidente"
 
-#: cond.c:382
+#: cond.c:416
 msgid "duplicate \"else\""
 msgstr "\"else\" duplicado"
 
-#: cond.c:433
+#: cond.c:467
 msgid ".ifeqs syntax error"
 msgstr "error sintáctico .ifeqs"
 
-#: cond.c:514
+#: cond.c:548
 msgid "end of macro inside conditional"
 msgstr "fin de macro dentro de un condicional"
 
-#: cond.c:516
+#: cond.c:550
 msgid "end of file inside conditional"
 msgstr "fin de fichero dentro de un condicional"
 
-#: cond.c:519
+#: cond.c:553
 msgid "here is the start of the unterminated conditional"
 msgstr "aquí es el inicio del condicional sin terminar"
 
-#: cond.c:523
+#: cond.c:557
 msgid "here is the \"else\" of the unterminated conditional"
 msgstr "aquí está el \"else\" del condicional sin terminar"
 
-#: config/obj-aout.c:162
+#: config/obj-aout.c:85
 #, c-format
 msgid "Attempt to put a common symbol into set %s"
 msgstr "Se intentó poner un símbolo común en el conjunto %s"
 
-#: config/obj-aout.c:166
+#: config/obj-aout.c:89
 #, c-format
 msgid "Attempt to put an undefined symbol into set %s"
 msgstr "Se intentó poner un símbolo indefinido en el conjunto %s"
 
-#: config/obj-aout.c:197 config/obj-coff.c:1415
+#: config/obj-aout.c:116 config/obj-coff.c:1328
 #, c-format
 msgid "Symbol `%s' can not be both weak and common"
 msgstr "El símbolo `%s' no puede ser débil y común al mismo tiempo"
 
-#: config/obj-aout.c:255 config/obj-coff.c:2156
-msgid "unresolved relocation"
-msgstr "reubicación sin resolver"
-
-#: config/obj-aout.c:257 config/obj-coff.c:2158
-#, c-format
-msgid "bad relocation: symbol `%s' not in symbol table"
-msgstr "reubicación errónea: el símbolo `%s' no está en la tabla de símbolos"
-
-#: config/obj-aout.c:353
-#, c-format
-msgid "%s: bad type for weak symbol"
-msgstr "%s: tipo erróneo para un símbolo débil"
-
-#: config/obj-aout.c:459 config/obj-coff.c:3076 write.c:1904
-#, c-format
-msgid "%s: global symbols not supported in common sections"
-msgstr "%s: los símbolos globales no tienen soporte en las secciones comunes"
-
-#: config/obj-aout.c:529
-#, c-format
-msgid "Local symbol %s never defined."
-msgstr "El símbolo local %s nunca se definió."
-
-#: config/obj-bout.c:312 config/obj-vms.c:449
-#, c-format
-msgid "Local symbol %s never defined"
-msgstr "El símbolo local %s nunca se definió"
-
-#: config/obj-coff.c:165
+#: config/obj-coff.c:133
 #, c-format
 msgid "Inserting \"%s\" into structure table failed: %s"
 msgstr "Falló la inserción de \"%s\" en la tabla de estructuras: %s"
 
 #. Zero is used as an end marker in the file.
-#: config/obj-coff.c:426
+#: config/obj-coff.c:354
 msgid "Line numbers must be positive integers\n"
 msgstr "Los números de línea deben ser enteros positivos\n"
 
-#. Wrong context.
-#: config/obj-coff.c:460 config/obj-coff.c:2501
+#: config/obj-coff.c:386
 msgid ".ln pseudo-op inside .def/.endef: ignored."
 msgstr "pseudo-operador .ln dentro de .def/.endef: ignorado."
 
-#: config/obj-coff.c:503 ecoff.c:3240
+#: config/obj-coff.c:428 ecoff.c:3240
 msgid ".loc outside of .text"
 msgstr ".loc fuera de .text"
 
-#: config/obj-coff.c:510
+#: config/obj-coff.c:435
 msgid ".loc pseudo-op inside .def/.endef: ignored."
 msgstr "pseudo-operador .loc dentro de .def/.endef: ignorado."
 
-#: config/obj-coff.c:598 config/obj-coff.c:2553
+#: config/obj-coff.c:516
 msgid ".def pseudo-op used inside of .def/.endef: ignored."
 msgstr "pseudo-operador .def usado dentro de .def/.endef: ignorado."
 
-#: config/obj-coff.c:644 config/obj-coff.c:2605
+#: config/obj-coff.c:555
 msgid ".endef pseudo-op used outside of .def/.endef: ignored."
 msgstr "pseudo-operador .endef usado fuera de .def/.endef: ignorado."
 
-#: config/obj-coff.c:682
+#: config/obj-coff.c:594
 #, c-format
 msgid "`%s' symbol without preceding function"
 msgstr "símbolo `%s' sin una función precedente"
 
-#: config/obj-coff.c:769 config/obj-coff.c:2685
+#: config/obj-coff.c:681
 #, c-format
 msgid "unexpected storage class %d"
 msgstr "clase de almacenamiento %d inesperada"
 
-#: config/obj-coff.c:882 config/obj-coff.c:2792
+#: config/obj-coff.c:790
 msgid ".dim pseudo-op used outside of .def/.endef: ignored."
 msgstr "pseudo-operador .dim usado fuera de .def/.endef: ignorado."
 
-#: config/obj-coff.c:902 config/obj-coff.c:2812
+#: config/obj-coff.c:810
 msgid "badly formed .dim directive ignored"
 msgstr "directiva .dim formada erróneamente ignorada"
 
-#: config/obj-coff.c:953 config/obj-coff.c:2869
+#: config/obj-coff.c:859
 msgid ".size pseudo-op used outside of .def/.endef ignored."
 msgstr "pseudo-operador .size usado fuera de .def/.endef ignorado."
 
-#: config/obj-coff.c:969 config/obj-coff.c:2885
+#: config/obj-coff.c:874
 msgid ".scl pseudo-op used outside of .def/.endef ignored."
 msgstr "pseudo-operador .scl usado fuera de .def/.endef ignorado."
 
-#: config/obj-coff.c:987 config/obj-coff.c:2903
+#: config/obj-coff.c:891
 msgid ".tag pseudo-op used outside of .def/.endef ignored."
 msgstr "pseudo-operador .tag usado fuera de .def/.endef ignorado."
 
-#: config/obj-coff.c:1006 config/obj-coff.c:2920
+#: config/obj-coff.c:909
 #, c-format
 msgid "tag not found for .tag %s"
 msgstr "no se encontró una marca para .tag %s"
 
-#: config/obj-coff.c:1021 config/obj-coff.c:2934
+#: config/obj-coff.c:922
 msgid ".type pseudo-op used outside of .def/.endef ignored."
 msgstr "pseudo-operador .type usado fuera de .def/.endef ignorado."
 
-#: config/obj-coff.c:1043 config/obj-coff.c:2954
+#: config/obj-coff.c:941
 msgid ".val pseudo-op used outside of .def/.endef ignored."
 msgstr "pseudo-operador .val usado fuera de .def/.endef ignorado."
 
-#: config/obj-coff.c:1180
+#: config/obj-coff.c:1108
 msgid "badly formed .weak directive ignored"
 msgstr "directiva .weak formada erróneamente ignorada"
 
-#: config/obj-coff.c:1372 config/obj-coff.c:3147
+#: config/obj-coff.c:1286
 msgid "mismatched .eb"
 msgstr ".eb sin coincidencia"
 
-#: config/obj-coff.c:1393 config/obj-coff.c:3178
-msgid "C_EFCN symbol out of scope"
-msgstr "símbolo C_EFCN fuera de ámbito"
+#: config/obj-coff.c:1307
+#, c-format
+msgid "C_EFCN symbol for %s out of scope"
+msgstr "símbolo C_EFCN para %s fuera de ámbito"
 
 #. STYP_INFO
 #. STYP_LIB
 #. STYP_OVER
-#: config/obj-coff.c:1621
+#: config/obj-coff.c:1533
 #, c-format
 msgid "unsupported section attribute '%c'"
 msgstr "atributo de sección '%c' sin soporte"
 
-#: config/obj-coff.c:1626 config/obj-coff.c:3874 config/tc-ppc.c:4595
+#: config/obj-coff.c:1538 config/tc-ppc.c:4610
 #, c-format
 msgid "unknown section attribute '%c'"
 msgstr "atributo de sección '%c' desconocido"
 
-#: config/obj-coff.c:1656 config/tc-ppc.c:4613 config/tc-tic54x.c:4306
-#: read.c:2545
+#: config/obj-coff.c:1568 config/tc-ppc.c:4628 config/tc-tic54x.c:4287
+#: read.c:2551
 #, c-format
 msgid "error setting flags for \"%s\": %s"
 msgstr "error al establecer las opciones para \"%s\": %s"
 
-#: config/obj-coff.c:1667
+#: config/obj-coff.c:1579
 #, c-format
 msgid "Ignoring changed section attributes for %s"
 msgstr "Ignorando los atributos de sección cambiados para %s"
 
-#: config/obj-coff.c:1803
+#: config/obj-coff.c:1710
 #, c-format
 msgid "0x%lx: \"%s\" type = %ld, class = %d, segment = %d\n"
 msgstr "0x%lx: \"%s\" tipo = %ld, clase = %d, segmento = %d\n"
 
-#: config/obj-coff.c:1983 config/obj-ieee.c:69
-#, c-format
-msgid "Out of step\n"
-msgstr "Fuera del paso\n"
-
-#: config/obj-coff.c:2420
-msgid "bfd_coff_swap_scnhdr_out failed"
-msgstr "falló bfd_coff_swap_scnhdr_out"
-
-#: config/obj-coff.c:2641
-#, c-format
-msgid "`.bf' symbol without preceding function\n"
-msgstr "símbolo `.bf' sin una función precedente\n"
-
-#: config/obj-coff.c:3581 config/obj-ieee.c:511
-#, c-format
-msgid "FATAL: Can't create %s"
-msgstr "FATAL: No se puede crear %s"
-
-#: config/obj-coff.c:3784
-#, c-format
-msgid "Too many new sections; can't add \"%s\""
-msgstr "Demasiadas secciones nuevas; no se puede agregar \"%s\""
-
-#: config/obj-coff.c:4247 config/tc-i960.c:3222
-#, c-format
-msgid "No 'bal' entry point for leafproc %s"
-msgstr "No hay un punto de entrada 'bal' para el proceso hoja %s"
-
-#: config/obj-coff.c:4323
-#, c-format
-msgid "Negative of non-absolute symbol %s"
-msgstr "Negativo de un símbolo %s que no es absoluto"
-
-#: config/obj-coff.c:4343
-msgid "callj to difference of 2 symbols"
-msgstr "callj para diferenciar a 2 símbolos"
-
-#: config/obj-coff.c:4383
-#, c-format
-msgid "Can't emit reloc {- %s-seg symbol \"%s\"} @ file address %ld."
-msgstr "No se puede emitir la reubicación {- %s-seg símbolo \"%s\"} @ dirección del fichero %ld."
-
-#: config/obj-coff.c:4469 config/tc-i960.c:2849
-msgid "can't use COBR format with external label"
-msgstr "no se puede utilizar el formato COBR con una etiqueta externa"
-
-#: config/obj-coff.c:4542
-#, c-format
-msgid "Value of %ld too large for field of %d bytes at 0x%lx"
-msgstr "El valor de %ld es demasiado grande para el campo de %d bytes en 0x%lx"
-
-#: config/obj-coff.c:4556
-#, c-format
-msgid "Signed .word overflow; switch may be too large; %ld at 0x%lx"
-msgstr "Desbordamiento con signo de .word; el interruptor puede ser demasiado grande; %ld en 0x%lx"
-
-#: config/obj-ecoff.c:192
+#: config/obj-ecoff.c:125
 msgid "Can't set GP value"
 msgstr "No se puede establecer el valor GP"
 
-#: config/obj-ecoff.c:199
+#: config/obj-ecoff.c:132
 msgid "Can't set register masks"
 msgstr "No se pueden establecer las máscaras de registro"
 
-#: config/obj-elf.c:307 config/tc-sparc.c:3976 config/tc-v850.c:461
+#: config/obj-elf.c:318 config/tc-sparc.c:3973 config/tc-v850.c:451
 #, c-format
 msgid "bad .common segment %s"
 msgstr "segmento .common %s erróneo"
 
-#: config/obj-elf.c:574
+#: config/obj-elf.c:596
 #, c-format
 msgid "setting incorrect section type for %s"
 msgstr "se establece un tipo de sección incorrecto para %s"
 
-#: config/obj-elf.c:579
+#: config/obj-elf.c:601
 #, c-format
 msgid "ignoring incorrect section type for %s"
 msgstr "se ignora un tipo de sección incorrecto para %s"
 
-#: config/obj-elf.c:616
+#: config/obj-elf.c:638
 #, c-format
 msgid "setting incorrect section attributes for %s"
 msgstr "se establecen atributos de sección incorrectos para %s"
 
-#: config/obj-elf.c:668
+#: config/obj-elf.c:690
 #, c-format
 msgid "ignoring changed section type for %s"
 msgstr "se ignoran el tipo de sección cambiado para %s"
 
-#: config/obj-elf.c:680
+#: config/obj-elf.c:702
 #, c-format
 msgid "ignoring changed section attributes for %s"
 msgstr "se ignoran los atributos de sección cambiados para %s"
 
-#: config/obj-elf.c:682
+#: config/obj-elf.c:704
 #, c-format
 msgid "ignoring changed section entity size for %s"
 msgstr "se ignoran el tamaño de entidad de sección cambiado para %s"
 
-#: config/obj-elf.c:735
+#: config/obj-elf.c:757
 msgid "unrecognized .section attribute: want a,w,x,M,S,G,T"
 msgstr "atributo de .section no reconocido: se quiere a,w,x,M,S,G,T"
 
-#: config/obj-elf.c:772
+#: config/obj-elf.c:794
 msgid "unrecognized section attribute"
 msgstr "atributo de sección no reconocido"
 
-#: config/obj-elf.c:800 read.c:2528
+#: config/obj-elf.c:822 read.c:2535
 msgid "unrecognized section type"
 msgstr "tipo de sección no reconocido"
 
-#: config/obj-elf.c:830
+#: config/obj-elf.c:852
 msgid "missing name"
 msgstr "falta un nombre"
 
-#: config/obj-elf.c:941
+#: config/obj-elf.c:963
 msgid "invalid merge entity size"
 msgstr "tamaño de entidad de mezcla inválido"
 
-#: config/obj-elf.c:948
+#: config/obj-elf.c:970
 msgid "entity size for SHF_MERGE not specified"
 msgstr "no se especificó el tamaño de entidad para SHF_MERGE"
 
-#: config/obj-elf.c:968
+#: config/obj-elf.c:990
 msgid "group name for SHF_GROUP not specified"
 msgstr "no se especificó el tamaño de entidad para SHF_GROUP"
 
-#: config/obj-elf.c:981
+#: config/obj-elf.c:1003
 msgid "character following name is not '#'"
 msgstr "el carácter a continuación del nombre no es '#'"
 
-#: config/obj-elf.c:1078
+#: config/obj-elf.c:1118
 msgid ".previous without corresponding .section; ignored"
 msgstr ".previous sin .section correspondiente; ignorado"
 
-#: config/obj-elf.c:1104
+#: config/obj-elf.c:1144
 msgid ".popsection without corresponding .pushsection; ignored"
 msgstr ".popsection sin .pushsection correspondiente; ignorado"
 
-#: config/obj-elf.c:1156
+#: config/obj-elf.c:1196
 msgid "expected comma after name in .symver"
 msgstr "se esperaba una coma después del nombre en .symver"
 
-#: config/obj-elf.c:1180
+#: config/obj-elf.c:1220
 #, c-format
 msgid "missing version name in `%s' for symbol `%s'"
 msgstr "falta el nombre de versión en `%s' para el símbolo `%s'"
 
-#: config/obj-elf.c:1191
+#: config/obj-elf.c:1231
 #, c-format
 msgid "multiple versions [`%s'|`%s'] for symbol `%s'"
 msgstr "versiones múltiples [`%s'|`%s'] para el símbolo `%s'"
 
-#: config/obj-elf.c:1421
+#: config/obj-elf.c:1461
 msgid "expected quoted string"
 msgstr "se esperaba una cadena entre comillas"
 
-#: config/obj-elf.c:1441
+#: config/obj-elf.c:1481
 #, c-format
 msgid "expected comma after name `%s' in .size directive"
 msgstr "se esperaba una coma después del nombre `%s' en la directiva .size"
 
-#: config/obj-elf.c:1450
+#: config/obj-elf.c:1490
 msgid "missing expression in .size directive"
 msgstr "falta una expresión en la directiva .size"
 
-#: config/obj-elf.c:1537
+#: config/obj-elf.c:1577
 #, c-format
 msgid "unrecognized symbol type \"%s\""
 msgstr "tipo de símbolo \"%s\" no reconocido"
 
-#: config/obj-elf.c:1705
+#: config/obj-elf.c:1745
 msgid ".size expression too complicated to fix up"
 msgstr "la expresión .size es demasiado complicada para componerla"
 
-#: config/obj-elf.c:1737
+#: config/obj-elf.c:1777
 #, c-format
 msgid "invalid attempt to declare external version name as default in symbol `%s'"
 msgstr "intento inválido de declarar un nombre de versión externo como valor por defecto en el símbolo `%s'"
 
-#: config/obj-elf.c:1798 ecoff.c:3598
+#: config/obj-elf.c:1838 ecoff.c:3598
 #, c-format
 msgid "symbol `%s' can not be both weak and common"
 msgstr "el símbolo `%s' no puede ser débil y común al mismo tiempo"
 
-#: config/obj-elf.c:1905
+#: config/obj-elf.c:1945
 #, c-format
 msgid "assuming all members of group `%s' are COMDAT"
 msgstr "se asume que todos los miembros del grupo `%s' son COMDAT"
 
-#: config/obj-elf.c:1927
+#: config/obj-elf.c:1967
 #, c-format
 msgid "can't create group: %s"
 msgstr "no se puede crear un grupo: %s"
 
-#: config/obj-elf.c:2036
+#: config/obj-elf.c:2076
 #, c-format
 msgid "failed to set up debugging information: %s"
 msgstr "falló al establecer la información de depuración: %s"
 
-#: config/obj-elf.c:2056
+#: config/obj-elf.c:2096
 #, c-format
 msgid "can't start writing .mdebug section: %s"
 msgstr "no se puede iniciar la escritura de la sección .mdebug: %s"
 
-#: config/obj-elf.c:2064
+#: config/obj-elf.c:2104
 #, c-format
 msgid "could not write .mdebug section: %s"
 msgstr "no se puede escribir la sección .mdebug: %s"
@@ -868,2054 +795,1911 @@ msgstr "no se puede escribir la secci
 msgid "can't allocate ELF private section data: %s"
 msgstr "no se puede crear la sección de datos privados ELF: %s"
 
+#: config/obj-ieee.c:69
+#, c-format
+msgid "Out of step\n"
+msgstr "Fuera del paso\n"
+
 #: config/obj-ieee.c:449
 msgid "too many sections"
 msgstr "demasiadas secciones"
 
-#: config/obj-som.c:140
+#: config/obj-ieee.c:511
+#, c-format
+msgid "FATAL: Can't create %s"
+msgstr "FATAL: No se puede crear %s"
+
+#: config/obj-som.c:129
 msgid "Only one .version pseudo-op per file!"
 msgstr "¡Sólo un pseudo-operador .version por fichero!"
 
-#: config/obj-som.c:157 config/obj-som.c:203
+#: config/obj-som.c:146 config/obj-som.c:191
 msgid "Expected quoted string"
 msgstr "Se esperaba una cadena entre comillas"
 
-#: config/obj-som.c:166
+#: config/obj-som.c:155
 #, c-format
 msgid "FATAL: Attaching version header %s"
 msgstr "FATAL: Adjuntando el encabezado de versión %s"
 
-#: config/obj-som.c:186
+#: config/obj-som.c:174
 msgid "Only one .copyright pseudo-op per file!"
 msgstr "¡Sólo un pseudo-operador .copyright por fichero!"
 
-#: config/obj-som.c:212
+#: config/obj-som.c:200
 #, c-format
 msgid "FATAL: Attaching copyright header %s"
 msgstr "FATAL: Adjuntando el encabezado de copyright %s"
 
-#: config/obj-vms.c:367
+#: config/tc-alpha.c:592
 #, c-format
-msgid "compiler emitted zero-size common symbol `%s' already defined"
-msgstr "el símbolo común de tamaño cero emitido por el compilador `%s' ya está definido"
+msgid "No !literal!%ld was found"
+msgstr "No se encontró una !literal!%ld"
 
-#: config/obj-vms.c:375
+#: config/tc-alpha.c:599
 #, c-format
-msgid "compiler redefined zero-size common symbol `%s'"
-msgstr "símbolo común de tamaño cero `%s' redefinido por el compilador"
+msgid "No !tlsgd!%ld was found"
+msgstr "No se encontró un !tlsgd!%ld"
 
-#: config/obj-vms.c:482
+#: config/tc-alpha.c:606
 #, c-format
-msgid "Couldn't create VMS object file \"%s\""
-msgstr "No se puede crear el fichero objeto VMS \"%s\""
-
-#: config/obj-vms.c:507
-msgid "I/O error writing VMS object file (length prefix)"
-msgstr "Error de E/S al escribir el fichero objeto VMS (longitud del prefijo)"
-
-#: config/obj-vms.c:521
-msgid "I/O error writing VMS object file"
-msgstr "Error de E/S al escribir el fichero objeto VMS"
+msgid "No !tlsldm!%ld was found"
+msgstr "No se encontró un !tlsldm!%ld"
 
-#: config/obj-vms.c:1057
+#: config/tc-alpha.c:615
 #, c-format
-msgid "Couldn't find source file \"%s\", status=%%X%x"
-msgstr "No se puede encontrar el fichero fuente \"%s\", estado=%%X%x"
+msgid "No ldah !gpdisp!%ld was found"
+msgstr "No se encontró un ldah !gpdisp!%ld"
 
-#: config/obj-vms.c:1505 config/obj-vms.c:2677
+#: config/tc-alpha.c:665
 #, c-format
-msgid "debugger forward reference error, dbx type %d"
-msgstr "error de referencia hacia adelante del depurador, tipo dbx %d"
+msgid "too many !literal!%ld for %s"
+msgstr "demasiados !literal!%ld para %s"
 
-#: config/obj-vms.c:1579
+#: config/tc-alpha.c:695
 #, c-format
-msgid "Variable descriptor %d too complicated.  Defined as `void *'."
-msgstr "El descriptor de variable %d es demasiado complicado.  Se define como `void *'."
-
-#: config/obj-vms.c:1894
-msgid ""
-"***Warning - the assembly code generated by the compiler has placed \n"
-" global constant(s) in the text psect.  These will not be available to \n"
-" other modules, since this is not the correct way to handle this. You \n"
-" have two options: 1) get a patched compiler that does not put global \n"
-" constants in the text psect, or 2) remove the 'const' keyword from \n"
-" definitions of global variables in your source module(s).  Don't say \n"
-" I didn't warn you! \n"
-msgstr ""
-"***Aviso - el código ensamblador generado por el compilador ha colocado \n"
-" constante(s) global(es) en la psect de texto.  Éstas no estarán disponibles \n"
-" para otros módulos, ya que no es la forma correcta de manejarlo. Tiene \n"
-" dos opciones: 1) obtener un compilador parchado que no coloque constantes \n"
-" globales en la psect de texto, o 2) quitar la palabra clave 'const' de \n"
-" las definiciones de las variables globales en el(los) módulo(s) fuente. \n"
-" ¡No diga que no se le advirtió! \n"
+msgid "No lda !gpdisp!%ld was found"
+msgstr "No se encontró un lda !gpdisp!%ld"
 
-#: config/obj-vms.c:2199
-#, c-format
-msgid "debugginer output: %d is an unknown untyped variable."
-msgstr "salida del depurador: %d es una variable sin tipo desconocido."
+#. Only support one relocation op per insn.
+#: config/tc-alpha.c:852
+msgid "More than one relocation op per insn"
+msgstr "Más de un operador de reubicación por insn"
 
-#: config/obj-vms.c:2419
-#, c-format
-msgid "debugger output: structure element `%s' has undefined type"
-msgstr "salida del depurador: el elmento de la estructura `%s' tiene un tipo indefinido"
+#: config/tc-alpha.c:868
+msgid "No relocation operand"
+msgstr "No hay un operando de reubicación"
 
-#: config/obj-vms.c:2530
+#: config/tc-alpha.c:878
 #, c-format
-msgid "debugger output: %d is an unknown type of variable."
-msgstr "salida del depurador: %d es un tipo desconocido de variable."
+msgid "Unknown relocation operand: !%s"
+msgstr "Operando de reubicación desconocido: !%s"
 
-#: config/obj-vms.c:2666
+#: config/tc-alpha.c:888
 #, c-format
-msgid "debugger output: Unable to resolve %d circular references."
-msgstr "salida del depurador: No se pueden resolver %d referencias circulares."
+msgid "no sequence number after !%s"
+msgstr "no hay un número de secuencia después de !%s"
 
-#: config/obj-vms.c:2854
+#: config/tc-alpha.c:898
 #, c-format
-msgid "Module name truncated: %s\n"
-msgstr "Nombre de módulo truncado: %s\n"
+msgid "!%s does not use a sequence number"
+msgstr "!%s no utiliza un número de secuencia"
 
-#: config/obj-vms.c:3096
+#: config/tc-alpha.c:908
 #, c-format
-msgid "Symbol %s replaced by %s\n"
-msgstr "El símbolo %s se reemplazó por %s\n"
+msgid "Bad sequence number: !%s!%s"
+msgstr "Secuencia de números errónea: !%s!%s"
 
-#. impossible
-#: config/obj-vms.c:3322
+#: config/tc-alpha.c:1123 config/tc-alpha.c:3139
 #, c-format
-msgid "Unknown VMS psect type (%ld)"
-msgstr "Tipo psect VMS desconocido (%ld)"
+msgid "inappropriate arguments for opcode `%s'"
+msgstr "argumentos inapropiados para el código de operación `%s'"
 
-#: config/obj-vms.c:3360
+#: config/tc-alpha.c:1125 config/tc-alpha.c:3141
 #, c-format
-msgid "Globalsymbol attribute for symbol %s was unexpected."
-msgstr "El atributo de globalsymbol para el símbolo %s era inesperado."
-
-#: config/obj-vms.c:3484
-msgid "Invalid data type for globalvalue"
-msgstr "Tipo de dato inválido para globalvalue"
+msgid "opcode `%s' not supported for target %s"
+msgstr "el código de operación `%s' no tiene soporte para el objetivo %s"
 
-#: config/obj-vms.c:3496
+#: config/tc-alpha.c:1129 config/tc-alpha.c:3145 config/tc-avr.c:1221
+#: config/tc-msp430.c:1870
 #, c-format
-msgid "Invalid globalvalue of %s"
-msgstr "Globalvalue inválido de %s"
+msgid "unknown opcode `%s'"
+msgstr "código de operación `%s' desconocido"
 
-#: config/obj-vms.c:3736
-msgid "Couldn't find fixup fragment when checking for indirect reference"
-msgstr "No se puede encontrar el fragmento de compostura al revisar por referencias indirectas"
+#: config/tc-alpha.c:1209 config/tc-alpha.c:1384
+msgid "overflow in literal (.lita) table"
+msgstr "desbordamiento en la tabla (.lita) literal"
 
-#: config/obj-vms.c:4014 config/obj-vms.c:4149
-msgid "Fixup data addsy and subsy don't have the same type"
-msgstr "Los datos de compostura addsy y subsy no tienen el mismo tipo"
+#: config/tc-alpha.c:1216 config/tc-alpha.c:1240 config/tc-alpha.c:1397
+#: config/tc-alpha.c:2049 config/tc-alpha.c:2093 config/tc-alpha.c:2162
+#: config/tc-alpha.c:2245 config/tc-alpha.c:2470 config/tc-alpha.c:2568
+msgid "macro requires $at register while noat in effect"
+msgstr "la macro requiere el registro $at mientras noat está en efecto"
 
-#: config/obj-vms.c:4018 config/obj-vms.c:4153
-msgid "Fixup data addsy and subsy don't have an appropriate type"
-msgstr "Los datos de compostura addsy y subsy no tienen un tipo apropiado"
+#: config/tc-alpha.c:1218 config/tc-alpha.c:1242 config/tc-alpha.c:1399
+msgid "macro requires $at while $at in use"
+msgstr "la macro requiere $at mientras $at está en uso"
 
-#: config/obj-vms.c:4021 config/obj-vms.c:4156
-msgid "Fixup data is erroneously \"pcrel\""
-msgstr "Los datos de compostura son \"pcrel\" erróneamente"
+#: config/tc-alpha.c:1346
+msgid "bignum invalid; zero assumed"
+msgstr "bignum inválido; se asume cero"
 
-#: config/obj-vms.c:4037 config/obj-vms.c:4173
-msgid "Fixup datum is not a longword"
-msgstr "El dato de compostura no es un longword"
+#: config/tc-alpha.c:1348
+msgid "floating point number invalid; zero assumed"
+msgstr "número de coma flotante inválido; se asume cero"
 
-#: config/obj-vms.c:4041 config/obj-vms.c:4177
-msgid "Fixup datum is not \"fixP->fx_addsy\""
-msgstr "El dato de compostura no es \"fixP->fx_addsy\""
+#: config/tc-alpha.c:1353
+msgid "can't handle expression"
+msgstr "no se puede manejar la expresión"
 
-#: config/obj-vms.c:4353
-msgid "Can't handle global xtors symbols yet."
-msgstr "No se pueden manejar símbolos xtors globales aún."
+#: config/tc-alpha.c:1390
+msgid "overflow in literal (.lit8) table"
+msgstr "desbordamiento en la tabla (.lit8) literal"
 
-#: config/obj-vms.c:4356
+#: config/tc-alpha.c:1674
 #, c-format
-msgid "Unknown %s"
-msgstr "%s desconocido"
+msgid "too many ldah insns for !gpdisp!%ld"
+msgstr "demasiadas instrucciones ldah para !gpdisp!%ld"
 
-#.
-#. *   Error otherwise.
-#.
-#: config/obj-vms.c:4441
+#: config/tc-alpha.c:1676 config/tc-alpha.c:1688
 #, c-format
-msgid "unhandled stab type %d"
-msgstr "tipo de cabo %d sin manejar"
-
-#: config/tc-a29k.c:164 config/tc-sparc.c:4028
-msgid "Unknown segment type"
-msgstr "Tipo de segmento desconocido"
-
-#. Probably a memory allocation problem?  Give up now.
-#: config/tc-a29k.c:334 config/tc-dlx.c:331 config/tc-hppa.c:1480
-#: config/tc-mips.c:1152 config/tc-mips.c:1194 config/tc-or32.c:228
-#: config/tc-sparc.c:858
-msgid "Broken assembler.  No assembly attempted."
-msgstr "Ensamblador descompuesto.  No se intentó ensamblar."
-
-#: config/tc-a29k.c:379 config/tc-avr.c:1179 config/tc-d10v.c:545
-#: config/tc-d30v.c:552 config/tc-h8300.c:470 config/tc-h8500.c:283
-#: config/tc-mcore.c:608 config/tc-mmix.c:502 config/tc-mn10200.c:940
-#: config/tc-mn10300.c:1820 config/tc-msp430.c:407 config/tc-or32.c:334
-#: config/tc-or32.c:390 config/tc-ppc.c:2367 config/tc-s390.c:1218
-#: config/tc-sh64.c:2213 config/tc-sh.c:1240 config/tc-tic80.c:280
-#: config/tc-v850.c:2034 config/tc-w65.c:215 config/tc-z8k.c:331
-msgid "missing operand"
-msgstr "operando faltante"
+msgid "both insns for !gpdisp!%ld must be in the same section"
+msgstr "ambas instrucciones para !gpdisp!%ld deben estar en la misma sección"
 
-#: config/tc-a29k.c:418 config/tc-cris.c:1515 config/tc-cris.c:1523
-#: config/tc-crx.c:2028 config/tc-dlx.c:808 config/tc-hppa.c:1616
-#: config/tc-i860.c:492 config/tc-i860.c:509 config/tc-i860.c:989
-#: config/tc-sparc.c:1420 config/tc-sparc.c:1426
+#: config/tc-alpha.c:1686
 #, c-format
-msgid "Unknown opcode: `%s'"
-msgstr "Código de operación desconocido: `%s'"
+msgid "too many lda insns for !gpdisp!%ld"
+msgstr "demasiadas instrucciones lda para !gpdisp!%ld"
 
-#: config/tc-a29k.c:423 config/tc-dlx.c:826
+#: config/tc-alpha.c:1742
 #, c-format
-msgid "Unknown opcode `%s'."
-msgstr "Código de operación desconocido `%s'."
+msgid "too many lituse insns for !lituse_tlsgd!%ld"
+msgstr "demasiadas instrucciones lituse para !lituse_tlsgd!%ld"
 
-#: config/tc-a29k.c:455 config/tc-dlx.c:887
+#: config/tc-alpha.c:1745
 #, c-format
-msgid "Too many operands: %s"
-msgstr "Demasiados operandos: %s"
+msgid "too many lituse insns for !lituse_tlsldm!%ld"
+msgstr "demasiadas instrucciones lituse para !lituse_tlsldm!%ld"
 
-#: config/tc-a29k.c:477 config/tc-a29k.c:508
+#: config/tc-alpha.c:1762
 #, c-format
-msgid "Immediate value of %ld is too large"
-msgstr "El valor inmediato de %ld es demasiado grande"
+msgid "duplicate !tlsgd!%ld"
+msgstr "!tlsgd!%ld duplicado"
 
-#: config/tc-a29k.c:547 config/tc-i860.c:395 config/tc-i860.c:940
-#: config/tc-m68k.c:3485 config/tc-m68k.c:3517 config/tc-sparc.c:2658
-msgid "failed sanity check."
-msgstr "falló la prueba de sanidad."
+#: config/tc-alpha.c:1764
+#, c-format
+msgid "sequence number in use for !tlsldm!%ld"
+msgstr "número de secuencia en uso para !tlsldm!%ld"
 
-#: config/tc-a29k.c:891 config/tc-or32.c:1023 config/tc-or32.c:1147
+#: config/tc-alpha.c:1778
 #, c-format
-msgid "bad relocation type: 0x%02x"
-msgstr "tipo de reubicación erróneo: 0x%02x"
+msgid "duplicate !tlsldm!%ld"
+msgstr "!tlsldm!%ld duplicado"
 
-#: config/tc-a29k.c:918
+#: config/tc-alpha.c:1780
 #, c-format
-msgid "need %o3\n"
-msgstr "se necesita %o3\n"
+msgid "sequence number in use for !tlsgd!%ld"
+msgstr "número de secuencia en uso para !tlsgd!%ld"
 
-#: config/tc-a29k.c:934
-msgid "a29k_convert_frag\n"
-msgstr "a29k_convert_frag\n"
+#: config/tc-alpha.c:1823 config/tc-arc.c:294 config/tc-mn10200.c:889
+#: config/tc-mn10300.c:2600 config/tc-ppc.c:1476 config/tc-s390.c:614
+#: config/tc-v850.c:1573
+msgid "operand"
+msgstr "operando"
 
-#: config/tc-a29k.c:943
-msgid "a29k_estimate_size_before_relax\n"
-msgstr "a29k_estimate_size_before_relax\n"
+#: config/tc-alpha.c:1926 config/tc-alpha.c:1950 config/tc-d10v.c:585
+#: config/tc-d30v.c:573 config/tc-mn10200.c:1133 config/tc-mn10300.c:1893
+#: config/tc-ppc.c:2348 config/tc-ppc.c:2565 config/tc-ppc.c:2577
+#: config/tc-s390.c:1230 config/tc-s390.c:1330 config/tc-s390.c:1459
+#: config/tc-v850.c:1747 config/tc-v850.c:1770 config/tc-v850.c:1973
+msgid "too many fixups"
+msgstr "demasiadas composturas"
 
-#: config/tc-a29k.c:1037 config/tc-dlx.c:1251 config/tc-or32.c:1342
-#, c-format
-msgid "label \"$%d\" redefined"
-msgstr "se redefinió la etiqueta \"$%d\""
+#: config/tc-alpha.c:1962
+msgid "invalid relocation for instruction"
+msgstr "reubicación inválida para la instrucción"
 
-#: config/tc-a29k.c:1110 config/tc-dlx.c:485 config/tc-or32.c:1435
-#, c-format
-msgid "Invalid expression after %%%%\n"
-msgstr "Expresión inválida después de %%%%\n"
+#: config/tc-alpha.c:1973
+msgid "invalid relocation for field"
+msgstr "reubicación inválida para el campo"
 
-#: config/tc-a29k.c:1121
-msgid "Invalid register in & expression"
-msgstr "Registro inválido en la expresión &"
+#: config/tc-alpha.c:2760
+msgid "can not resolve expression"
+msgstr "no se puede resolver la expresión"
 
-#: config/tc-alpha.c:802
+#: config/tc-alpha.c:3275 config/tc-ppc.c:1781 config/tc-ppc.c:4373
 #, c-format
-msgid "internal error: can't hash opcode `%s': %s"
-msgstr "error interno: no se puede dispersar el código de operación `%s': %s"
+msgid ".COMMon length (%ld.) <0! Ignored."
+msgstr "¡longitud de .COMM (%ld.) <0! Ignorada."
+
+#: config/tc-alpha.c:3304 config/tc-sparc.c:3843 config/tc-v850.c:246
+msgid "Ignoring attempt to re-define symbol"
+msgstr "Se ignora el intento de redefinir el símbolo"
 
-#: config/tc-alpha.c:836
+#: config/tc-alpha.c:3313 config/tc-alpha.c:3322 config/tc-ppc.c:4410
+#: config/tc-sparc.c:3851
 #, c-format
-msgid "internal error: can't hash macro `%s': %s"
-msgstr "error interno: no se puede dispersar la macro `%s': %s"
+msgid "Length of .comm \"%s\" is already %ld. Not changed to %ld."
+msgstr "La longitud de .comm \"%s\" ya es %ld. No se cambia a %ld."
 
-#: config/tc-alpha.c:919 config/tc-i960.c:2712 config/tc-xtensa.c:5191
-#: config/tc-xtensa.c:5260 config/tc-xtensa.c:5311
-msgid "syntax error"
-msgstr "error sintáctico"
+#: config/tc-alpha.c:3439 ecoff.c:3054
+msgid ".ent directive has no name"
+msgstr "la directiva .ent no tiene nombre"
 
-#: config/tc-alpha.c:993 config/tc-h8300.c:2092 config/tc-h8500.c:1204
-#: config/tc-hppa.c:4033 config/tc-i860.c:1059 config/tc-m68hc11.c:558
-#: config/tc-m68k.c:4576 config/tc-m88k.c:991 config/tc-ns32k.c:1689
-#: config/tc-or32.c:902 config/tc-sparc.c:2945 config/tc-z8k.c:1328
-msgid "Bad call to MD_ATOF()"
-msgstr "Llamada errónea a MD_ATOF()"
+#: config/tc-alpha.c:3447
+msgid "nested .ent directives"
+msgstr "directivas .ent anidadas"
 
-#: config/tc-alpha.c:1043
-#, c-format
-msgid "Unknown CPU identifier `%s'"
-msgstr "Identificador de CPU `%s' desconocido"
+#: config/tc-alpha.c:3491 ecoff.c:3005
+msgid ".end directive has no name"
+msgstr "la directiva .end no tiene nombre"
 
-#: config/tc-alpha.c:1087
-msgid ""
-"Alpha options:\n"
-"-32addr\t\t\ttreat addresses as 32-bit values\n"
-"-F\t\t\tlack floating point instructions support\n"
-"-mev4 | -mev45 | -mev5 | -mev56 | -mpca56 | -mev6 | -mev67 | -mev68 | -mall\n"
-"\t\t\tspecify variant of Alpha architecture\n"
-"-m21064 | -m21066 | -m21164 | -m21164a | -m21164pc | -m21264 | -m21264a | -m21264b\n"
-"\t\t\tthese variants include PALcode opcodes\n"
-msgstr ""
-"Opciones Alpha:\n"
-"-32addr\t\t\ttrata direcciones como valores de 32-bit\n"
-"-F\t\t\tfalta el soporte de instrucciones de coma flotante\n"
-"-mev4 | -mev45 | -mev5 | -mev56 | -mpca56 | -mev6 | -mev67 | -mev68 | -mall\n"
-"\t\t\tespecifica variante de la arquitectura Alpha\n"
-"-m21064 | -m21066 | -m21164 | -m21164a | -m21164pc | -m21264 | -m21264a | -m21264b\n"
-"\t\t\testas variantes incluyen códigos de operación PALcode\n"
+#: config/tc-alpha.c:3500
+msgid ".end directive without matching .ent"
+msgstr "directiva .end sin una directiva .ent coincidente"
 
-#: config/tc-alpha.c:1097
-msgid ""
-"VMS options:\n"
-"-+\t\t\thash encode (don't truncate) names longer than 64 characters\n"
-"-H\t\t\tshow new symbol after hash truncation\n"
-msgstr ""
-"Opciones VMS:\n"
-"-+\t\t\tcodificar por dispersión (no truncar) nombres más largos que 64 caracteres\n"
-"-H\t\t\tmostrar el símbolo nuevo después del truncado por dispersión\n"
+#: config/tc-alpha.c:3502
+msgid ".end directive names different symbol than .ent"
+msgstr "la directiva .end nombra un símbolo diferente de .ent"
 
-#: config/tc-alpha.c:1274
-#, c-format
-msgid "unhandled relocation type %s"
-msgstr "tipo de reubicación %s sin manejar"
+#: config/tc-alpha.c:3545 ecoff.c:3140
+msgid ".fmask outside of .ent"
+msgstr ".fmask fuera de .ent"
 
-#: config/tc-alpha.c:1287
-msgid "non-absolute expression in constant field"
-msgstr "expresión no absoluta en campo constante"
+#: config/tc-alpha.c:3547 ecoff.c:3204
+msgid ".mask outside of .ent"
+msgstr ".mask fuera de .ent"
 
-#: config/tc-alpha.c:1301
-#, c-format
-msgid "type %d reloc done?\n"
-msgstr "¿tipo %d de reubicación hecha?\n"
+#: config/tc-alpha.c:3555 ecoff.c:3147
+msgid "bad .fmask directive"
+msgstr "directiva .fmask errónea"
 
-#: config/tc-alpha.c:1349 config/tc-alpha.c:1356 config/tc-mips.c:8442
-msgid "Used $at without \".set noat\""
-msgstr "Se usó $at sin \".set noat\""
+#: config/tc-alpha.c:3557 ecoff.c:3211
+msgid "bad .mask directive"
+msgstr "directiva .mask errónea"
 
-#: config/tc-alpha.c:1518
-#, c-format
-msgid "!samegp reloc against symbol without .prologue: %s"
-msgstr "reubicación !samegp contra un símbolo sin .prologue: %s"
-
-#: config/tc-alpha.c:1557 config/tc-xtensa.c:5831
-#, c-format
-msgid "cannot represent `%s' relocation in object file"
-msgstr "no se puede representar la reubicación `%s' en el fichero objeto"
-
-#: config/tc-alpha.c:1564 config/tc-xtensa.c:5839
-#, c-format
-msgid "internal error? cannot generate `%s' relocation"
-msgstr "¿error interno? no se puede generar la reubicación `%s'"
-
-#: config/tc-alpha.c:1618
-#, c-format
-msgid "frame reg expected, using $%d."
-msgstr "se esperaba un marco de registro, se usa $%d."
-
-#: config/tc-alpha.c:1719
-#, c-format
-msgid "No !literal!%ld was found"
-msgstr "No se encontró una !literal!%ld"
-
-#: config/tc-alpha.c:1726
-#, c-format
-msgid "No !tlsgd!%ld was found"
-msgstr "No se encontró un !tlsgd!%ld"
-
-#: config/tc-alpha.c:1733
-#, c-format
-msgid "No !tlsldm!%ld was found"
-msgstr "No se encontró un !tlsldm!%ld"
-
-#: config/tc-alpha.c:1742
-#, c-format
-msgid "No ldah !gpdisp!%ld was found"
-msgstr "No se encontró un ldah !gpdisp!%ld"
-
-#: config/tc-alpha.c:1792
-#, c-format
-msgid "too many !literal!%ld for %s"
-msgstr "demasiados !literal!%ld para %s"
-
-#: config/tc-alpha.c:1822
-#, c-format
-msgid "No lda !gpdisp!%ld was found"
-msgstr "No se encontró un lda !gpdisp!%ld"
-
-#. Only support one relocation op per insn.
-#: config/tc-alpha.c:1970
-msgid "More than one relocation op per insn"
-msgstr "Más de un operador de reubicación por insn"
-
-#: config/tc-alpha.c:1986
-msgid "No relocation operand"
-msgstr "No hay un operando de reubicación"
-
-#: config/tc-alpha.c:1996
-#, c-format
-msgid "Unknown relocation operand: !%s"
-msgstr "Operando de reubicación desconocido: !%s"
-
-#: config/tc-alpha.c:2006
-#, c-format
-msgid "no sequence number after !%s"
-msgstr "no hay un número de secuencia después de !%s"
-
-#: config/tc-alpha.c:2016
-#, c-format
-msgid "!%s does not use a sequence number"
-msgstr "!%s no utiliza un número de secuencia"
-
-#: config/tc-alpha.c:2026
-#, c-format
-msgid "Bad sequence number: !%s!%s"
-msgstr "Secuencia de números errónea: !%s!%s"
-
-#: config/tc-alpha.c:2352 config/tc-arc.c:331 config/tc-mn10200.c:1344
-#: config/tc-mn10300.c:2601 config/tc-ppc.c:1461 config/tc-s390.c:612
-#: config/tc-v850.c:1644
-msgid "operand"
-msgstr "operando"
-
-#: config/tc-alpha.c:2456 config/tc-alpha.c:2480 config/tc-d10v.c:634
-#: config/tc-d30v.c:640 config/tc-mn10200.c:995 config/tc-mn10300.c:1893
-#: config/tc-ppc.c:2333 config/tc-ppc.c:2550 config/tc-ppc.c:2562
-#: config/tc-s390.c:1228 config/tc-s390.c:1328 config/tc-s390.c:1424
-#: config/tc-v850.c:1821 config/tc-v850.c:1844 config/tc-v850.c:2057
-msgid "too many fixups"
-msgstr "demasiadas composturas"
-
-#: config/tc-alpha.c:2492
-msgid "invalid relocation for instruction"
-msgstr "reubicación inválida para la instrucción"
-
-#: config/tc-alpha.c:2503
-msgid "invalid relocation for field"
-msgstr "reubicación inválida para el campo"
-
-#: config/tc-alpha.c:2608
-#, c-format
-msgid "too many ldah insns for !gpdisp!%ld"
-msgstr "demasiadas instrucciones ldah para !gpdisp!%ld"
-
-#: config/tc-alpha.c:2610 config/tc-alpha.c:2622
-#, c-format
-msgid "both insns for !gpdisp!%ld must be in the same section"
-msgstr "ambas instrucciones para !gpdisp!%ld deben estar en la misma sección"
-
-#: config/tc-alpha.c:2620
-#, c-format
-msgid "too many lda insns for !gpdisp!%ld"
-msgstr "demasiadas instrucciones lda para !gpdisp!%ld"
-
-#: config/tc-alpha.c:2673
-#, c-format
-msgid "too many lituse insns for !lituse_tlsgd!%ld"
-msgstr "demasiadas instrucciones lituse para !lituse_tlsgd!%ld"
-
-#: config/tc-alpha.c:2676
-#, c-format
-msgid "too many lituse insns for !lituse_tlsldm!%ld"
-msgstr "demasiadas instrucciones lituse para !lituse_tlsldm!%ld"
-
-#: config/tc-alpha.c:2693
-#, c-format
-msgid "duplicate !tlsgd!%ld"
-msgstr "!tlsgd!%ld duplicado"
-
-#: config/tc-alpha.c:2695
-#, c-format
-msgid "sequence number in use for !tlsldm!%ld"
-msgstr "número de secuencia en uso para !tlsldm!%ld"
-
-#: config/tc-alpha.c:2709
-#, c-format
-msgid "duplicate !tlsldm!%ld"
-msgstr "!tlsldm!%ld duplicado"
-
-#: config/tc-alpha.c:2711
-#, c-format
-msgid "sequence number in use for !tlsgd!%ld"
-msgstr "número de secuencia en uso para !tlsgd!%ld"
-
-#: config/tc-alpha.c:2756 config/tc-alpha.c:2829
-#, c-format
-msgid "inappropriate arguments for opcode `%s'"
-msgstr "argumentos inapropiados para el código de operación `%s'"
-
-#: config/tc-alpha.c:2758 config/tc-alpha.c:2831
-#, c-format
-msgid "opcode `%s' not supported for target %s"
-msgstr "el código de operación `%s' no tiene soporte para el objetivo %s"
-
-#: config/tc-alpha.c:2762 config/tc-alpha.c:2835 config/tc-avr.c:1145
-#: config/tc-msp430.c:1777
-#, c-format
-msgid "unknown opcode `%s'"
-msgstr "código de operación `%s' desconocido"
-
-#: config/tc-alpha.c:2882
-msgid "can not resolve expression"
-msgstr "no se puede resolver la expresión"
-
-#: config/tc-alpha.c:3026 config/tc-alpha.c:3205
-msgid "overflow in literal (.lita) table"
-msgstr "desbordamiento en la tabla (.lita) literal"
-
-#: config/tc-alpha.c:3033 config/tc-alpha.c:3056 config/tc-alpha.c:3218
-#: config/tc-alpha.c:3433 config/tc-alpha.c:3478 config/tc-alpha.c:3552
-#: config/tc-alpha.c:3644 config/tc-alpha.c:3892 config/tc-alpha.c:3991
-msgid "macro requires $at register while noat in effect"
-msgstr "la macro requiere el registro $at mientras noat está en efecto"
-
-#: config/tc-alpha.c:3035 config/tc-alpha.c:3058 config/tc-alpha.c:3220
-msgid "macro requires $at while $at in use"
-msgstr "la macro requiere $at mientras $at está en uso"
-
-#: config/tc-alpha.c:3166
-msgid "bignum invalid; zero assumed"
-msgstr "bignum inválido; se asume cero"
-
-#: config/tc-alpha.c:3168
-msgid "floating point number invalid; zero assumed"
-msgstr "número de coma flotante inválido; se asume cero"
-
-#: config/tc-alpha.c:3173
-msgid "can't handle expression"
-msgstr "no se puede manejar la expresión"
-
-#: config/tc-alpha.c:3211
-msgid "overflow in literal (.lit8) table"
-msgstr "desbordamiento en la tabla (.lit8) literal"
-
-#: config/tc-alpha.c:4228 config/tc-ppc.c:1766 config/tc-ppc.c:4358
-#, c-format
-msgid ".COMMon length (%ld.) <0! Ignored."
-msgstr "¡longitud de .COMM (%ld.) <0! Ignorada."
-
-#: config/tc-alpha.c:4257 config/tc-sparc.c:3844 config/tc-v850.c:256
-msgid "Ignoring attempt to re-define symbol"
-msgstr "Se ignora el intento de redefinir el símbolo"
-
-#: config/tc-alpha.c:4266 config/tc-alpha.c:4275 config/tc-ppc.c:4395
-#: config/tc-sparc.c:3852
-#, c-format
-msgid "Length of .comm \"%s\" is already %ld. Not changed to %ld."
-msgstr "La longitud de .comm \"%s\" ya es %ld. No se cambia a %ld."
-
-#: config/tc-alpha.c:4396 ecoff.c:3054
-msgid ".ent directive has no name"
-msgstr "la directiva .ent no tiene nombre"
-
-#: config/tc-alpha.c:4404
-msgid "nested .ent directives"
-msgstr "directivas .ent anidadas"
-
-#: config/tc-alpha.c:4449 ecoff.c:3005
-msgid ".end directive has no name"
-msgstr "la directiva .end no tiene nombre"
-
-#: config/tc-alpha.c:4458
-msgid ".end directive without matching .ent"
-msgstr "directiva .end sin una directiva .ent coincidente"
-
-#: config/tc-alpha.c:4460
-msgid ".end directive names different symbol than .ent"
-msgstr "la directiva .end nombra un símbolo diferente de .ent"
-
-#: config/tc-alpha.c:4504 ecoff.c:3140
-msgid ".fmask outside of .ent"
-msgstr ".fmask fuera de .ent"
-
-#: config/tc-alpha.c:4506 ecoff.c:3204
-msgid ".mask outside of .ent"
-msgstr ".mask fuera de .ent"
-
-#: config/tc-alpha.c:4514 ecoff.c:3147
-msgid "bad .fmask directive"
-msgstr "directiva .fmask errónea"
-
-#: config/tc-alpha.c:4516 ecoff.c:3211
-msgid "bad .mask directive"
-msgstr "directiva .mask errónea"
-
-#: config/tc-alpha.c:4550 config/tc-mips.c:13757 ecoff.c:3168
+#: config/tc-alpha.c:3590 config/tc-mips.c:14022 ecoff.c:3168
 msgid ".frame outside of .ent"
 msgstr ".frame fuera de .ent"
 
-#: config/tc-alpha.c:4561 ecoff.c:3179
+#: config/tc-alpha.c:3601 ecoff.c:3179
 msgid "bad .frame directive"
 msgstr "directiva .frame errónea"
 
-#: config/tc-alpha.c:4594
+#: config/tc-alpha.c:3633
 msgid ".prologue directive without a preceding .ent directive"
 msgstr "directiva .prolog sin una directiva .ent precedente"
 
-#: config/tc-alpha.c:4612
+#: config/tc-alpha.c:3651
 #, c-format
 msgid "Invalid argument %d to .prologue."
 msgstr "Argumento inválido %d para .prologue."
 
-#: config/tc-alpha.c:4707
+#: config/tc-alpha.c:3742
 msgid "ECOFF debugging is disabled."
 msgstr "La depuración ECOFF está desactivada."
 
-#: config/tc-alpha.c:4721
+#: config/tc-alpha.c:3756
 msgid ".ent directive without matching .end"
 msgstr "directiva .ent sin una directiva .end coincidente"
 
-#: config/tc-alpha.c:4806
+#: config/tc-alpha.c:3841
 msgid ".usepv directive has no name"
 msgstr "la directiva .usepv no tiene nombre"
 
-#: config/tc-alpha.c:4817
+#: config/tc-alpha.c:3852
 msgid ".usepv directive has no type"
 msgstr "la directiva .usepv no tiene tipo"
 
-#: config/tc-alpha.c:4832
+#: config/tc-alpha.c:3867
 msgid "unknown argument for .usepv"
 msgstr "argumento desconocido para .usepv"
 
-#: config/tc-alpha.c:4866
+#: config/tc-alpha.c:3900
 msgid "Unknown section directive"
 msgstr "Directiva de sección desconocida"
 
-#: config/tc-alpha.c:4902
+#: config/tc-alpha.c:3935
 msgid ".ent directive has no symbol"
 msgstr "la directiva .ent no tiene símbolo"
 
-#: config/tc-alpha.c:4928
+#: config/tc-alpha.c:3960
 msgid "Bad .frame directive 1./2. param"
 msgstr "Parámetro 1./2. de directiva .frame erróneo"
 
-#: config/tc-alpha.c:4940
+#: config/tc-alpha.c:3972
 msgid "Bad .frame directive 3./4. param"
 msgstr "Parámetro 3./4. de directiva .frame erróneo"
 
-#: config/tc-alpha.c:4963
+#: config/tc-alpha.c:3994
 msgid ".pdesc directive not in link (.link) section"
 msgstr "la directiva .pdesc no está en la sección de enlace (.link)"
 
-#: config/tc-alpha.c:4971
+#: config/tc-alpha.c:4002
 msgid ".pdesc has no matching .ent"
 msgstr ".pdesc no tiene un .ent coincidente"
 
-#: config/tc-alpha.c:4982
+#: config/tc-alpha.c:4013
 msgid ".pdesc directive has no entry symbol"
 msgstr "la directiva .pdesc no tiene un símbolo de entrada"
 
-#: config/tc-alpha.c:4995
+#: config/tc-alpha.c:4026
 msgid "No comma after .pdesc <entryname>"
 msgstr "No hay una coma después de .pdesc <nombreentrada>"
 
-#: config/tc-alpha.c:5018
+#: config/tc-alpha.c:4046
 msgid "unknown procedure kind"
 msgstr "tipo de procedimiento desconocido"
 
-#: config/tc-alpha.c:5109
+#: config/tc-alpha.c:4136
 msgid ".name directive not in link (.link) section"
 msgstr "la directiva .name no está en la sección de enlace (.link)"
 
-#: config/tc-alpha.c:5117
+#: config/tc-alpha.c:4144
 msgid ".name directive has no symbol"
 msgstr "la directiva .name no tiene símbolo"
 
-#: config/tc-alpha.c:5149
+#: config/tc-alpha.c:4175
 msgid "No symbol after .linkage"
 msgstr "No hay un símbolo después de .linkage"
 
-#: config/tc-alpha.c:5175
+#: config/tc-alpha.c:4199
 msgid "No symbol after .code_address"
 msgstr "No hay un símbolo después de .code_address"
 
-#: config/tc-alpha.c:5205
+#: config/tc-alpha.c:4226
 msgid "Bad .mask directive"
 msgstr "Directiva .mask errónea"
 
-#: config/tc-alpha.c:5224
+#: config/tc-alpha.c:4244
 msgid "Bad .fmask directive"
 msgstr "Directiva .fmask errónea"
 
-#: config/tc-alpha.c:5386
+#: config/tc-alpha.c:4401
 #, c-format
 msgid "Expected comma after name \"%s\""
 msgstr "Se esperaba una coma después del nombre \"%s\""
 
 #. *symbol_get_obj (symbolP) = (signed char) temp;
-#: config/tc-alpha.c:5397
+#: config/tc-alpha.c:4412
 #, c-format
 msgid "unhandled: .proc %s,%d"
 msgstr "sin manejar: .proc %s,%d"
 
-#: config/tc-alpha.c:5432
+#: config/tc-alpha.c:4446
 #, c-format
 msgid "Tried to .set unrecognized mode `%s'"
 msgstr "Se intento hacer .set del modo `%s' no reconocido"
 
-#: config/tc-alpha.c:5457
+#: config/tc-alpha.c:4472
 #, c-format
 msgid "Bad base register, using $%d."
 msgstr "Registro base erróneo, utilizando $%d."
 
-#: config/tc-alpha.c:5479
+#: config/tc-alpha.c:4493
 #, c-format
 msgid "Alignment too large: %d. assumed"
 msgstr "Alineación demasiado grande: se asume %d."
 
-#: config/tc-alpha.c:5483 config/tc-d30v.c:2183
+#: config/tc-alpha.c:4497 config/tc-d30v.c:2083
 msgid "Alignment negative: 0 assumed"
 msgstr "Alineación negativa: se asume 0"
 
-#: config/tc-alpha.c:5790
+#: config/tc-alpha.c:4775
 #, c-format
 msgid "Chose GP value of %lx\n"
 msgstr "Valor GP escogido de %lx\n"
 
-#: config/tc-alpha.c:5806
+#: config/tc-alpha.c:4789
 msgid "Bad .section directive: want a,s,w,x,M,S,G,T in string"
 msgstr "Directiva .section errónea: se quiere a,s,w,x,M,S,G,T en la cadena"
 
-#: config/tc-arc.c:1574 config/tc-arm.c:12232 config/tc-ip2k.c:219
+#: config/tc-alpha.c:4878
+#, c-format
+msgid "internal error: can't hash opcode `%s': %s"
+msgstr "error interno: no se puede dispersar el código de operación `%s': %s"
+
+#: config/tc-alpha.c:4914
+#, c-format
+msgid "internal error: can't hash macro `%s': %s"
+msgstr "error interno: no se puede dispersar la macro `%s': %s"
+
+#: config/tc-alpha.c:4998 config/tc-i960.c:710 config/tc-xtensa.c:5112
+#: config/tc-xtensa.c:5181 config/tc-xtensa.c:5227
+msgid "syntax error"
+msgstr "error sintáctico"
+
+#: config/tc-alpha.c:5067 config/tc-h8300.c:2055 config/tc-hppa.c:4041
+#: config/tc-i860.c:1059 config/tc-m68hc11.c:558 config/tc-m68k.c:4524
+#: config/tc-ns32k.c:1945 config/tc-or32.c:579 config/tc-sparc.c:2944
+#: config/tc-z8k.c:1310
+msgid "Bad call to MD_ATOF()"
+msgstr "Llamada errónea a MD_ATOF()"
+
+#: config/tc-alpha.c:5116
+#, c-format
+msgid "Unknown CPU identifier `%s'"
+msgstr "Identificador de CPU `%s' desconocido"
+
+#: config/tc-alpha.c:5159
+msgid ""
+"Alpha options:\n"
+"-32addr\t\t\ttreat addresses as 32-bit values\n"
+"-F\t\t\tlack floating point instructions support\n"
+"-mev4 | -mev45 | -mev5 | -mev56 | -mpca56 | -mev6 | -mev67 | -mev68 | -mall\n"
+"\t\t\tspecify variant of Alpha architecture\n"
+"-m21064 | -m21066 | -m21164 | -m21164a | -m21164pc | -m21264 | -m21264a | -m21264b\n"
+"\t\t\tthese variants include PALcode opcodes\n"
+msgstr ""
+"Opciones Alpha:\n"
+"-32addr\t\t\ttrata direcciones como valores de 32-bit\n"
+"-F\t\t\tfalta el soporte de instrucciones de coma flotante\n"
+"-mev4 | -mev45 | -mev5 | -mev56 | -mpca56 | -mev6 | -mev67 | -mev68 | -mall\n"
+"\t\t\tespecifica variante de la arquitectura Alpha\n"
+"-m21064 | -m21066 | -m21164 | -m21164a | -m21164pc | -m21264 | -m21264a | -m21264b\n"
+"\t\t\testas variantes incluyen códigos de operación PALcode\n"
+
+#: config/tc-alpha.c:5169
+msgid ""
+"VMS options:\n"
+"-+\t\t\thash encode (don't truncate) names longer than 64 characters\n"
+"-H\t\t\tshow new symbol after hash truncation\n"
+msgstr ""
+"Opciones VMS:\n"
+"-+\t\t\tcodificar por dispersión (no truncar) nombres más largos que 64 caracteres\n"
+"-H\t\t\tmostrar el símbolo nuevo después del truncado por dispersión\n"
+
+#: config/tc-alpha.c:5346
+#, c-format
+msgid "unhandled relocation type %s"
+msgstr "tipo de reubicación %s sin manejar"
+
+#: config/tc-alpha.c:5359
+msgid "non-absolute expression in constant field"
+msgstr "expresión no absoluta en campo constante"
+
+#: config/tc-alpha.c:5373
+#, c-format
+msgid "type %d reloc done?\n"
+msgstr "¿tipo %d de reubicación hecha?\n"
+
+#: config/tc-alpha.c:5420 config/tc-alpha.c:5427 config/tc-mips.c:8657
+msgid "Used $at without \".set noat\""
+msgstr "Se usó $at sin \".set noat\""
+
+#: config/tc-alpha.c:5589
+#, c-format
+msgid "!samegp reloc against symbol without .prologue: %s"
+msgstr "reubicación !samegp contra un símbolo sin .prologue: %s"
+
+#: config/tc-alpha.c:5626 config/tc-xtensa.c:5739
+#, c-format
+msgid "cannot represent `%s' relocation in object file"
+msgstr "no se puede representar la reubicación `%s' en el fichero objeto"
+
+#: config/tc-alpha.c:5632 config/tc-xtensa.c:5747
+#, c-format
+msgid "internal error? cannot generate `%s' relocation"
+msgstr "¿error interno? no se puede generar la reubicación `%s'"
+
+#: config/tc-alpha.c:5683
+#, c-format
+msgid "frame reg expected, using $%d."
+msgstr "se esperaba un marco de registro, se usa $%d."
+
+#: config/tc-arc.c:1077 config/tc-ip2k.c:249
 msgid "md_estimate_size_before_relax\n"
 msgstr "md_estimate_size_before_relax\n"
 
-#: config/tc-arc.c:1586
+#: config/tc-arc.c:1088
 msgid "md_convert_frag\n"
 msgstr "md_convert_frag\n"
 
 #. We can't actually support subtracting a symbol.
-#: config/tc-arc.c:1856 config/tc-arm.c:6622 config/tc-arm.c:9378
-#: config/tc-arm.c:9470 config/tc-avr.c:891 config/tc-cris.c:3999
-#: config/tc-d10v.c:1708 config/tc-d30v.c:1836 config/tc-mips.c:3835
-#: config/tc-mips.c:4949 config/tc-mips.c:5881 config/tc-mips.c:6469
-#: config/tc-msp430.c:1871 config/tc-ppc.c:5542 config/tc-v850.c:2367
-#: config/tc-xstormy16.c:499
+#: config/tc-arc.c:1288 config/tc-arm.c:1021 config/tc-arm.c:5764
+#: config/tc-arm.c:5815 config/tc-arm.c:6614 config/tc-arm.c:7256
+#: config/tc-arm.c:7284 config/tc-arm.c:7536 config/tc-arm.c:7553
+#: config/tc-arm.c:7674 config/tc-avr.c:970 config/tc-cris.c:3928
+#: config/tc-d10v.c:1539 config/tc-d30v.c:1938 config/tc-mips.c:3794
+#: config/tc-mips.c:4902 config/tc-mips.c:5834 config/tc-mips.c:6428
+#: config/tc-msp430.c:1979 config/tc-ppc.c:5562 config/tc-v850.c:2274
+#: config/tc-xstormy16.c:484
 msgid "expression too complex"
 msgstr "expresión demasiado compleja"
 
-#: config/tc-arm.c:758 config/tc-arm.c:14522
+#: config/tc-arm.c:352
 msgid "ARM register expected"
 msgstr "se esperaba un registro ARM"
 
-#: config/tc-arm.c:759
+#: config/tc-arm.c:353
 msgid "bad or missing co-processor number"
 msgstr "número de co-procesador erróneo o faltante"
 
-#: config/tc-arm.c:760
+#: config/tc-arm.c:354
 msgid "co-processor register expected"
 msgstr "se esperaba un registro de co-procesador"
 
-#: config/tc-arm.c:761
+#: config/tc-arm.c:355
 msgid "FPA register expected"
 msgstr "se esperaba un registro FPA"
 
-#: config/tc-arm.c:762
+#: config/tc-arm.c:356
 msgid "VFP single precision register expected"
 msgstr "Se esperaba un registro de precisión simple VFP"
 
-#: config/tc-arm.c:763
+#: config/tc-arm.c:357
 msgid "VFP double precision register expected"
 msgstr "Se esperaba un registro de precisión doble VFP"
 
-#: config/tc-arm.c:764
+#: config/tc-arm.c:358
+msgid "VFP system register expected"
+msgstr "se esperaba un registro de sistema VFP"
+
+#: config/tc-arm.c:359
 msgid "Maverick MVF register expected"
 msgstr "se esperaba un registro Maverick MVF"
 
-#: config/tc-arm.c:765
+#: config/tc-arm.c:360
 msgid "Maverick MVD register expected"
 msgstr "se esperaba un registro Maverick MVD"
 
-#: config/tc-arm.c:766
+#: config/tc-arm.c:361
 msgid "Maverick MVFX register expected"
 msgstr "se esperaba un registro Maverick MVFX"
 
-#: config/tc-arm.c:767
+#: config/tc-arm.c:362
 msgid "Maverick MVDX register expected"
 msgstr "se esperaba un registro Maverick MVDX"
 
-#: config/tc-arm.c:768
+#: config/tc-arm.c:363
 msgid "Maverick MVAX register expected"
 msgstr "se esperaba un registro Maverick MVAX"
 
-#: config/tc-arm.c:769
+#: config/tc-arm.c:364
 msgid "Maverick DSPSC register expected"
 msgstr "se esperaba un registro Maverick DSPSC"
 
-#: config/tc-arm.c:770
-msgid "Intel Wireless MMX technology register expected"
-msgstr "se esperaba un registro de tecnología Intel Inalámbrico MMX"
+#: config/tc-arm.c:365
+msgid "iWMMXt data register expected"
+msgstr "se esperaba un registro de datos iWMMXt"
+
+#: config/tc-arm.c:366
+msgid "iWMMXt control register expected"
+msgstr "se esperaba un registro de control iWMMXt"
+
+#: config/tc-arm.c:367
+msgid "iWMMXt scalar register expected"
+msgstr "se esperaba un registro escalar iWMMXt"
+
+#: config/tc-arm.c:368
+msgid "XScale accumulator register expected"
+msgstr "se esperaba un registro acumulador XScale"
 
-#: config/tc-arm.c:964
+#: config/tc-arm.c:499
 msgid "bad arguments to instruction"
 msgstr "argumentos erróneos para la instrucción"
 
-#: config/tc-arm.c:965
+#: config/tc-arm.c:500
 msgid "r15 not allowed here"
 msgstr "no se permite r15 aquí"
 
-#: config/tc-arm.c:966
-msgid "instruction is not conditional"
-msgstr "la instrucción no es condicional"
+#: config/tc-arm.c:501
+msgid "instruction cannot be conditional"
+msgstr "la instrucción no puede ser condicional"
 
-#: config/tc-arm.c:967
-msgid "acc0 expected"
-msgstr "se esperaba acc0"
+#: config/tc-arm.c:502
+msgid "registers may not be the same"
+msgstr "los registros no pueden ser el mismo"
 
-#: config/tc-arm.c:1100
-msgid "literal pool overflow"
-msgstr "desbordamiento de conjunto literal"
+#: config/tc-arm.c:503
+msgid "lo register required"
+msgstr "se requiere el registro lo"
 
-#: config/tc-arm.c:1475
-msgid "selected processor does not support THUMB opcodes"
-msgstr "el procesador seleccionado no tiene soporte para códigos de operación THUMB"
+#: config/tc-arm.c:504
+msgid "instruction not supported in Thumb16 mode"
+msgstr "la instrucción no tiene soporte en modo Thumb16"
 
-#: config/tc-arm.c:1489
-msgid "selected processor does not support ARM opcodes"
-msgstr "el procesador seleccionado no tiene soporte para códigos de operación ARM"
+#: config/tc-arm.c:640
+msgid "immediate expression requires a # prefix"
+msgstr "la expresión inmediata requiere un prefijo #"
+
+#: config/tc-arm.c:666 expr.c:1302 read.c:2228
+msgid "bad expression"
+msgstr "expresión errónea"
 
-#: config/tc-arm.c:1502
+#: config/tc-arm.c:677 config/tc-i860.c:1005 config/tc-sparc.c:2844
+msgid "bad segment"
+msgstr "segmento erróneo"
+
+#: config/tc-arm.c:693 config/tc-arm.c:3230 config/tc-i960.c:1302
+msgid "invalid constant"
+msgstr "constante inválida"
+
+#: config/tc-arm.c:754
+msgid "bad call to MD_ATOF()"
+msgstr "llamada errónea a MD_ATOF()"
+
+#: config/tc-arm.c:821
+msgid "expected #constant"
+msgstr "se esperaba #constant"
+
+#: config/tc-arm.c:953
+msgid "bad range in register list"
+msgstr "rango erróneo en la lista de registros"
+
+#: config/tc-arm.c:961 config/tc-arm.c:970 config/tc-arm.c:1011
 #, c-format
-msgid "invalid instruction size selected (%d)"
-msgstr "tamaño de instrucción seleccionado inválido (%d)"
+msgid "Warning: duplicated register (r%d) in register list"
+msgstr "Aviso: registro duplicado (r%d) en la lista de registros"
 
-#: config/tc-arm.c:1509
-msgid "invalid syntax for .req directive"
-msgstr "sintaxis inválida para la directiva .req."
+#: config/tc-arm.c:973
+msgid "Warning: register range not in ascending order"
+msgstr "Aviso: el rango de registros no está en orden ascendente"
+
+#: config/tc-arm.c:984
+msgid "missing `}'"
+msgstr "falta un `}'"
+
+#: config/tc-arm.c:1000
+msgid "invalid register mask"
+msgstr "máscara de registro inválida"
+
+#: config/tc-arm.c:1091 config/tc-arm.c:1126 config/tc-h8300.c:991
+#: config/tc-mips.c:9797 config/tc-mips.c:9827
+msgid "invalid register list"
+msgstr "lista de registros inválida"
+
+#: config/tc-arm.c:1097 config/tc-arm.c:2402 config/tc-arm.c:2535
+msgid "register list not in ascending order"
+msgstr "la lista de registros no está en orden ascendente"
+
+#: config/tc-arm.c:1118
+msgid "register range not in ascending order"
+msgstr "el rango de registros no está en orden ascendente"
 
-#: config/tc-arm.c:1552
+#: config/tc-arm.c:1151
+msgid "non-contiguous register range"
+msgstr "el rango de registro no es contiguo"
+
+#: config/tc-arm.c:1199
+#, c-format
+msgid "ignoring attempt to redefine built-in register '%s'"
+msgstr "se ignora el intento de redefinir el símbolo interno '%s'"
+
+#: config/tc-arm.c:1204
 #, c-format
-msgid "unreq: missing hash entry for \"%s\""
-msgstr "unreq: falta la entrada de hash para \"%s\""
+msgid "ignoring redefinition of register alias '%s'"
+msgstr "se ignora la redefinición del alias de registro '%s'"
 
-#: config/tc-arm.c:1571 config/tc-arm.c:1574
+#: config/tc-arm.c:1248
 #, c-format
-msgid ".unreq: unrecognized symbol \"%s\""
-msgstr ".unreq: símbolo \"%s\" no reconocido"
+msgid "unknown register '%s' -- .req ignored"
+msgstr "registro '%s' desconocido -- se ignora .req"
 
-#: config/tc-arm.c:1577
+#: config/tc-arm.c:1291
+msgid "invalid syntax for .req directive"
+msgstr "sintaxis inválida para la directiva .req."
+
+#: config/tc-arm.c:1317
 msgid "invalid syntax for .unreq directive"
 msgstr "sintaxis inválida para la directiva .unreq"
 
-#: config/tc-arm.c:1659
+#: config/tc-arm.c:1323
 #, c-format
-msgid "alignment too large: %d assumed"
-msgstr "alineación demasiado grande: se asume %d"
+msgid "unknown register alias '%s'"
+msgstr "alias de registro '%s' desconocido"
 
-#: config/tc-arm.c:1662
-msgid "alignment negative. 0 assumed."
-msgstr "alineación negativa. Se asume 0."
-
-#: config/tc-arm.c:1743
+#: config/tc-arm.c:1325
 #, c-format
-msgid "expected comma after name \"%s\""
-msgstr "se esperaba una coma después del nombre \"%s\""
+msgid "ignoring attempt to undefine built-in register '%s'"
+msgstr "se ignora el intento de eliminar la definición del símbolo interno '%s'"
+
+#: config/tc-arm.c:1456
+msgid "selected processor does not support THUMB opcodes"
+msgstr "el procesador seleccionado no tiene soporte para códigos de operación THUMB"
+
+#: config/tc-arm.c:1470
+msgid "selected processor does not support ARM opcodes"
+msgstr "el procesador seleccionado no tiene soporte para códigos de operación ARM"
 
-#: config/tc-arm.c:1793 config/tc-m32r.c:617
+#: config/tc-arm.c:1483
 #, c-format
-msgid "symbol `%s' already defined"
-msgstr "el símbolo `%s' ya está definido"
+msgid "invalid instruction size selected (%d)"
+msgstr "tamaño de instrucción seleccionado inválido (%d)"
 
-#: config/tc-arm.c:1836
+#: config/tc-arm.c:1515
 #, c-format
 msgid "invalid operand to .code directive (%d) (expecting 16 or 32)"
 msgstr "operando inválido para la directiva .code (%d) (se esperaba 16 o 32)"
 
-#: config/tc-arm.c:1846
-msgid "garbage following instruction"
-msgstr "basura a continuación de la instrucción"
-
-#: config/tc-arm.c:1916
-msgid "bad_segment"
-msgstr "segmento_erróneo"
+#: config/tc-arm.c:1571
+#, c-format
+msgid "expected comma after name \"%s\""
+msgstr "se esperaba una coma después del nombre \"%s\""
 
-#: config/tc-arm.c:1932 config/tc-arm.c:2699 config/tc-arm.c:3889
-#: config/tc-arm.c:5841 config/tc-arm.c:5861 config/tc-i960.c:1940
-msgid "invalid constant"
-msgstr "constante inválida"
+#: config/tc-arm.c:1621 config/tc-m32r.c:589
+#, c-format
+msgid "symbol `%s' already defined"
+msgstr "el símbolo `%s' ya está definido"
 
-#. In the few cases where we might be able to accept something else
-#. this error can be overridden.
-#: config/tc-arm.c:1967
+#: config/tc-arm.c:1655
 #, c-format
-msgid "register expected, not '%.100s'"
-msgstr "se esperaba un registro, no '%.100s'"
+msgid "unrecognized syntax mode \"%s\""
+msgstr "modo de sintaxis \"%s\" no reconocido"
 
-#. In the few cases where we might be able to accept
-#. something else this error can be overridden.
-#: config/tc-arm.c:2017
+#: config/tc-arm.c:1675
 #, c-format
-msgid "Intel Wireless MMX technology register expected, not '%.100s'"
-msgstr "se esperaba un registro de tecnología Intel Inalámbrica MMX, no '%.100s'"
+msgid "alignment too large: %d assumed"
+msgstr "alineación demasiado grande: se asume %d"
 
-#. In the few cases where we might be able to accept
-#. something else this error can be overridden.
-#: config/tc-arm.c:2087
-msgid "flag for {c}psr instruction expected"
-msgstr "se esperaba una opción para la instrucción {c}psr"
+#: config/tc-arm.c:1678
+msgid "alignment negative. 0 assumed."
+msgstr "alineación negativa. Se asume 0."
 
-#: config/tc-arm.c:2120
-msgid "illegal co-processor number"
-msgstr "número de co-procesador ilegal"
+#: config/tc-arm.c:1816
+msgid "literal pool overflow"
+msgstr "desbordamiento de conjunto literal"
 
-#: config/tc-arm.c:2149 config/tc-arm.c:5101
-msgid "bad or missing expression"
-msgstr "expresión errónea o faltante"
+#: config/tc-arm.c:1972 config/tc-arm.c:3888
+msgid "unrecognized relocation suffix"
+msgstr "sufijo de reubicación no reconocido"
 
-#: config/tc-arm.c:2155
-msgid "immediate co-processor expression too large"
-msgstr "expresión de co-procesador inmediata demasiado grande"
+#: config/tc-arm.c:1985
+msgid "(plt) is only valid on branch targets"
+msgstr "(plt) sólo es válido en objetivos ramas"
 
-#: config/tc-arm.c:2214 config/tc-arm.c:2427 config/tc-arm.c:3718
-#: config/tc-arm.c:3804 config/tc-arm.c:3868 config/tc-arm.c:4106
-#: config/tc-arm.c:4208
-msgid "immediate expression expected"
-msgstr "se esperaba una expresión inmediata"
+#: config/tc-arm.c:1991 config/tc-s390.c:1128 config/tc-s390.c:1742
+#: config/tc-xtensa.c:1601
+#, c-format
+msgid "%s relocations do not fit in %d bytes"
+msgstr "%s reubicaciones no caben en %d bytes"
 
-#: config/tc-arm.c:2229
-msgid "co-processor address must be word aligned"
-msgstr "la dirección del co-procesador debe ser alineada con word"
+#: config/tc-arm.c:2039 dwarf2dbg.c:659
+msgid "expected 0 or 1"
+msgstr "se esperaba 0 ó 1"
 
-#: config/tc-arm.c:2235 config/tc-arm.c:2442 config/tc-mips.c:5037
-msgid "offset too large"
-msgstr "desplazamiento demasiado grande"
+#: config/tc-arm.c:2043
+msgid "missing comma"
+msgstr "falta una coma"
 
-#: config/tc-arm.c:2290
-msgid "comma expected after closing square bracket"
-msgstr "se esperaba una coma después del paréntesis cuadrado que cierra"
+#: config/tc-arm.c:2098
+msgid "dupicate .handlerdata directive"
+msgstr "directiva .handlerdata duplicada"
 
-#: config/tc-arm.c:2305 config/tc-arm.c:2489
-msgid "pc may not be used in post-increment"
-msgstr "el pc no se puede usar en post-incremento"
+#: config/tc-arm.c:2169
+msgid "personality routine specified for cantunwind frame"
+msgstr "se especificó una rutina personality para el marco cantunwind"
 
-#: config/tc-arm.c:2333
-msgid "'option' field too large"
-msgstr "campo 'option' demasiado grande"
+#: config/tc-arm.c:2183
+msgid "duplicate .personalityindex directive"
+msgstr "directiva .personalityindex duplicada"
 
-#: config/tc-arm.c:2341
-msgid "'}' expected at end of 'option' field"
-msgstr "se esperaba '}' al final del campo 'option'"
+#: config/tc-arm.c:2190
+msgid "bad personality routine number"
+msgstr "número de rutina personality erróneo"
 
-#: config/tc-arm.c:2353
-msgid "non-constant expressions for 'option' field not supported"
-msgstr "no hay soporte para expresiones no constantes para el campo 'option'"
+#: config/tc-arm.c:2209
+msgid "duplicate .personality directive"
+msgstr "directiva .personality duplicada"
 
-#: config/tc-arm.c:2359
-msgid "# or { expected after comma"
-msgstr "se esperaba # o { después de la coma"
+#: config/tc-arm.c:2232 config/tc-arm.c:2354
+msgid "expected register list"
+msgstr "se esperaba una lista de registros"
 
-#: config/tc-arm.c:2369 config/tc-arm.c:2505 config/tc-arm.c:3020
-#: config/tc-arm.c:5530 config/tc-arm.c:6134 config/tc-arm.c:6405
-msgid "pre-indexed expression expected"
-msgstr "se esperaba una expresión pre-indizada"
+#: config/tc-arm.c:2310
+msgid "expected , <constant>"
+msgstr "se esperaba , <constante>"
 
-#: config/tc-arm.c:2382 config/tc-arm.c:2518 config/tc-arm.c:3033
-#: config/tc-arm.c:5541 config/tc-arm.c:6146 config/tc-arm.c:6417
-#: config/tc-arm.c:6800 config/tc-arm.c:9110 config/tc-arm.c:9125
-msgid "missing ]"
-msgstr "falta un ]"
+#: config/tc-arm.c:2319
+msgid "number of registers must be in the range [1:4]"
+msgstr "el número de registros debe estar en el rango [1:4]"
 
-#: config/tc-arm.c:2392 config/tc-arm.c:2528
-msgid "pc may not be used with write-back"
-msgstr "el pc no se puede usar con escritura hacia atrás"
+#: config/tc-arm.c:2416 config/tc-arm.c:2549
+msgid "bad register range"
+msgstr "rango de registro erróneo"
 
-#: config/tc-arm.c:2577
-msgid "Invalid NOP hint"
-msgstr "Pista NOP inválida"
+#: config/tc-arm.c:2602
+msgid "register expected"
+msgstr "se esperaba un registro"
 
 #: config/tc-arm.c:2612
-msgid "comma expected after register name"
-msgstr "se esperaba una coma después del nombre de registro"
+msgid "FPA .unwind_save does not take a register list"
+msgstr ".unwind_save de FPA no toma una lista de registros"
 
-#: config/tc-arm.c:2631
-msgid "CPSR or SPSR expected"
-msgstr "se esperaba CPSR ó SPSR"
+#: config/tc-arm.c:2625
+msgid ".unwind_save does not support this kind of register"
+msgstr ".unwind_save no tiene soporte para este tipo de registro"
 
-#: config/tc-arm.c:2656
-msgid "comma missing after psr flags"
-msgstr "falta una coma después de las opciones psr"
+#: config/tc-arm.c:2650
+msgid "SP and PC not permitted in .unwind_movsp directive"
+msgstr "no se permiten SP y PC en la directiva .unwind_movsp"
 
-#: config/tc-arm.c:2672 config/tc-arm.c:2682
-msgid "only a register or immediate value can follow a psr flag"
-msgstr "sólo un registro o un valor inmediato puede seguir a una opción psr"
+#: config/tc-arm.c:2655
+msgid "unexpected .unwind_movsp directive"
+msgstr "directiva .unwind_movsp inesperada"
 
-#: config/tc-arm.c:2746
-msgid "rdhi, rdlo and rm must all be different"
-msgstr "rdhi, rdlo y rm deben ser todos diferentes"
+#: config/tc-arm.c:2679
+msgid "stack increment must be multiple of 4"
+msgstr "el operando de pila debe ser un múltiplo de 4"
 
-#: config/tc-arm.c:2798
-msgid "rd and rm should be different in mul"
-msgstr "rd y rm deben ser diferentes en mul"
+#: config/tc-arm.c:2708
+msgid "expected <reg>, <reg>"
+msgstr "se esperaba <reg>, <reg>"
 
-#: config/tc-arm.c:2850
-msgid "rd and rm should be different in mla"
-msgstr "rd y rm deben ser diferentes en mla"
+#: config/tc-arm.c:2726
+msgid "register must be either sp or set by a previousunwind_movsp directive"
+msgstr "el registro debe ser sp o establecido por una directiva previousunwind_movsp"
 
-#: config/tc-arm.c:2896
-#, c-format
-msgid "acc0 expected, not '%.100s'"
-msgstr "se esperaba acc0, no '%.100s'"
+#: config/tc-arm.c:2762
+msgid "expected <offset>, <opcode>"
+msgstr "se esperaba <desplazamiento>, <códigoop>"
 
-#: config/tc-arm.c:2925 config/tc-arm.c:5439
-msgid "address offset too large"
-msgstr "dirección de desplazamiento demasiado grande"
+#: config/tc-arm.c:2774
+msgid "unwind opcode too long"
+msgstr "código de operación de desenredo demasiado largo"
 
-#: config/tc-arm.c:3130
-msgid "rdhi and rdlo must be different"
-msgstr "rdhi y rdlo deben ser diferentes"
+#: config/tc-arm.c:2779
+msgid "invalid unwind opcode"
+msgstr "código de operación de desenredo inválido"
 
-#: config/tc-arm.c:3235
-msgid "Warning: instruction unpredictable when using r15"
-msgstr "Aviso: la instrucción es impredecible cuando se utiliza r15"
+#: config/tc-arm.c:2829
+msgid "expected numeric constant"
+msgstr "se esperaba una constante numérica"
 
-#: config/tc-arm.c:3444
-msgid "use of r15 in bx in ARM mode is not really useful"
-msgstr "el uso de r15 en bx en modo ARM no es realmente útil"
+#: config/tc-arm.c:2838
+msgid "expected comma"
+msgstr "se esperaba una coma"
 
-#: config/tc-arm.c:3466
-msgid "use of r15 in bxj is not really useful"
-msgstr "el uso de r15 en bxj no es realmente útil"
+#: config/tc-arm.c:2877
+msgid "bad string constant"
+msgstr "constante de cadena errónea"
+
+#: config/tc-arm.c:2881
+msgid "expected <tag> , <value>"
+msgstr "se esperaba <etiq> , <valor>"
 
-#: config/tc-arm.c:3524 config/tc-arm.c:3548
-msgid "Rd equal to Rm or Rn yields unpredictable results"
-msgstr "Rd igual a Rm o Rn produce resultados impredecibles"
+#: config/tc-arm.c:2957
+msgid "constant expression required"
+msgstr "se requiere una expresión constante"
 
-#: config/tc-arm.c:3577 config/tc-arm.c:3588
+#: config/tc-arm.c:2963 config/tc-arm.c:6472 config/tc-arm.c:11799
+#: config/tc-arm.c:11824 config/tc-arm.c:11832 config/tc-z8k.c:1122
+#: config/tc-z8k.c:1132
+msgid "immediate value out of range"
+msgstr "valor inmediato fuera de rango"
+
+#: config/tc-arm.c:3058
+msgid "invalid FPA immediate expression"
+msgstr "expresión inmediata FPA inválida"
+
+#: config/tc-arm.c:3108 config/tc-arm.c:3116
 msgid "shift expression expected"
 msgstr "se esperaba una expresión de desplazamiento"
 
-#: config/tc-arm.c:3598
+#: config/tc-arm.c:3130
 msgid "'LSL' or 'ASR' required"
 msgstr "se requiere 'LSL' o 'ASR'"
 
-#: config/tc-arm.c:3604
+#: config/tc-arm.c:3138
 msgid "'LSL' required"
 msgstr "se requiere 'LSL'"
 
-#: config/tc-arm.c:3610
+#: config/tc-arm.c:3146
 msgid "'ASR' required"
 msgstr "se requiere 'ASR'"
 
+#: config/tc-arm.c:3218 config/tc-arm.c:4349 config/tc-v850.c:1844
+#: config/tc-v850.c:1865
+msgid "constant expression expected"
+msgstr "se esperaba una expresión constante"
+
+#: config/tc-arm.c:3225
+msgid "invalid rotation"
+msgstr "rotación inválida"
+
+#: config/tc-arm.c:3340 config/tc-arm.c:3640
+msgid "']' expected"
+msgstr "se esperaba ']'"
+
+#: config/tc-arm.c:3358
+msgid "'}' expected at end of 'option' field"
+msgstr "se esperaba '}' al final del campo 'option'"
+
+#: config/tc-arm.c:3363
+msgid "cannot combine index with option"
+msgstr "no se puede combinar index con option"
+
+#: config/tc-arm.c:3376
+msgid "cannot combine pre- and post-indexing"
+msgstr "no se puede combinar pre y post-indizado"
+
+#: config/tc-arm.c:3472
+msgid "flag for {c}psr instruction expected"
+msgstr "se esperaba una opción para la instrucción {c}psr"
+
+#: config/tc-arm.c:3497
+msgid "unrecognized CPS flag"
+msgstr "opción CPS no reconocida"
+
+#: config/tc-arm.c:3504
+msgid "missing CPS flags"
+msgstr "faltan las opciones CPS"
+
+#: config/tc-arm.c:3527 config/tc-arm.c:3533
+msgid "valid endian specifiers are be or le"
+msgstr "los especificadores endian válidos son be o le"
+
+#: config/tc-arm.c:3555
+msgid "missing rotation field after comma"
+msgstr "falta el campo rotation después de la coma"
+
+#: config/tc-arm.c:3570
+msgid "rotation can only be 0, 8, 16, or 24"
+msgstr "la rotación sólo puede ser 0, 8 , 16 o 24"
+
+#: config/tc-arm.c:3590
+msgid "condition required"
+msgstr "se requiere una condición"
+
 #: config/tc-arm.c:3632
-msgid "shift requires register or #expression"
-msgstr "el desplazamiento requiere un registro o una #expresión"
+msgid "invalid shift"
+msgstr "desplazamiento inválido"
 
-#: config/tc-arm.c:3633
-msgid "shift requires #expression"
-msgstr "el desplazamiento requiere una #expresión"
+#: config/tc-arm.c:3929
+msgid "iWMMXt data or control register expected"
+msgstr "se esperaba un registro de datos o control iWMMXt"
 
-#: config/tc-arm.c:3663
-msgid "shift of 0 ignored."
-msgstr "se ignora un desplazamiento de 0."
+#: config/tc-arm.c:4051
+msgid "garbage following instruction"
+msgstr "basura a continuación de la instrucción"
 
-#: config/tc-arm.c:3669
-msgid "invalid immediate shift"
-msgstr "desplazamiento inmediato inválido"
+#: config/tc-arm.c:4185
+msgid "instruction does not accept preindexed addressing"
+msgstr "la instrucción no acepta el direccionamiento preindizado"
 
-#: config/tc-arm.c:3723 config/tc-arm.c:3809 config/tc-arm.c:3875
-#: config/tc-arm.c:4112 config/tc-arm.c:4214 config/tc-arm.c:4536
-#: config/tc-arm.c:4760 config/tc-arm.c:5698 expr.c:1332 read.c:2198
-msgid "bad expression"
-msgstr "expresión errónea"
+#. unindexed - only for coprocessor
+#: config/tc-arm.c:4201 config/tc-arm.c:5857
+msgid "instruction does not accept unindexed addressing"
+msgstr "la instrucción no acepta el direccionamiento sin indizar"
 
-#: config/tc-arm.c:3728 config/tc-arm.c:3814 config/tc-arm.c:3881
-#: config/tc-arm.c:4118 config/tc-arm.c:4220 config/tc-arm.c:5832
-#: config/tc-arm.c:6182 config/tc-arm.c:6454 config/tc-arm.c:7063
-#: config/tc-v850.c:1924 config/tc-v850.c:1945
-msgid "constant expression expected"
-msgstr "se esperaba una expresión constante"
+#: config/tc-arm.c:4209
+msgid "destination register same as write-back base"
+msgstr "el registro destino es el mismo que la base de escritura-hacia-atrás"
+
+#: config/tc-arm.c:4210
+msgid "source register same as write-back base"
+msgstr "el registro fuente es el mismo que la base de escritura-hacia-atrás"
+
+#: config/tc-arm.c:4256
+msgid "instruction does not accept scaled register index"
+msgstr "la instrucción no acepta el índice de registro escalado"
+
+#: config/tc-arm.c:4295
+msgid "instruction does not support unindexed addressing"
+msgstr "la instrucción no acepta el direccionamiento sin indizar"
+
+#: config/tc-arm.c:4310
+msgid "pc may not be used with write-back"
+msgstr "el pc no se puede usar con escritura hacia atrás"
+
+#: config/tc-arm.c:4315
+msgid "instruction does not support writeback"
+msgstr "la instrucción no tiene soporte para escritura hacia atrás"
+
+#: config/tc-arm.c:4344
+msgid "invalid pseudo operation"
+msgstr "pseudo operación inválida"
+
+#: config/tc-arm.c:4390
+msgid "literal pool insertion failed"
+msgstr "falló la inserción en el conjunto de literales"
+
+#: config/tc-arm.c:4448
+msgid "Rn must not overlap other operands"
+msgstr "Rn no debe sobreescribir otros operandos"
+
+#: config/tc-arm.c:4534 config/tc-arm.c:4553 config/tc-arm.c:4566
+#: config/tc-arm.c:6360 config/tc-arm.c:6380 config/tc-arm.c:6394
+msgid "bit-field extends past end of register"
+msgstr "el campo de bits se extiende más allá del final del registro"
+
+#: config/tc-arm.c:4595
+msgid "the only suffix valid here is '(plt)'"
+msgstr "el único sufijo válido aquí es '(plt)'"
+
+#: config/tc-arm.c:4627
+msgid "use of r15 in blx in ARM mode is not really useful"
+msgstr "el uso de r15 en blx en modo ARM no es realmente útil"
+
+#: config/tc-arm.c:4645
+msgid "use of r15 in bx in ARM mode is not really useful"
+msgstr "el uso de r15 en bx en modo ARM no es realmente útil"
+
+#: config/tc-arm.c:4657 config/tc-arm.c:6508
+msgid "use of r15 in bxj is not really useful"
+msgstr "el uso de r15 en bxj no es realmente útil"
+
+#: config/tc-arm.c:4761 config/tc-arm.c:4770
+msgid "writeback of base register is UNPREDICTABLE"
+msgstr "la escritura hacia atrás del registro base es IMPREDECIBLE"
+
+#: config/tc-arm.c:4764
+msgid "writeback of base register when in register list is UNPREDICTABLE"
+msgstr "la escritura hacia atrás del registro base cuando está en la lista de registros es IMPREDECIBLE"
+
+#: config/tc-arm.c:4774
+msgid "if writeback register is in list, it must be the lowest reg in the list"
+msgstr "si el registro de escritura hacia atrás está en la lista, debe ser el registro más bajo en la lista"
 
-#: config/tc-arm.c:3734 config/tc-arm.c:3820 config/tc-arm.c:4545
-#: config/tc-arm.c:4769 config/tc-arm.c:5109 config/tc-arm.c:8198
-#: config/tc-arm.c:8233 config/tc-arm.c:8243 config/tc-z8k.c:1125
-#: config/tc-z8k.c:1137
-msgid "immediate value out of range"
-msgstr "valor inmediato fuera de rango"
+#: config/tc-arm.c:4789
+msgid "first destination register must be even"
+msgstr "el primer registro de destino debe ser par"
 
-#: config/tc-arm.c:4020
-msgid "missing endian specifier"
-msgstr "falta el especificador endian"
+#: config/tc-arm.c:4792 config/tc-arm.c:4849
+msgid "can only load two consecutive registers"
+msgstr "solamente se pueden cargar dos registros consecutivos"
 
-#: config/tc-arm.c:4029
-msgid "valid endian specifiers are be or le"
-msgstr "los especificadores endian válidos son be o le"
+#. If op 1 were present and equal to PC, this function wouldn't
+#. have been called in the first place.
+#. If op 2 were present and equal to PC, this function wouldn't
+#. have been called in the first place.
+#: config/tc-arm.c:4793 config/tc-arm.c:4852 config/tc-arm.c:5299
+#: config/tc-arm.c:6886
+msgid "r14 not allowed here"
+msgstr "no se permite r14 aquí"
 
-#: config/tc-arm.c:4096 config/tc-arm.c:4198
-msgid "missing rotation field after comma"
-msgstr "falta el campo rotation después de la coma"
+#: config/tc-arm.c:4794
+msgid "'[' expected"
+msgstr "se esperaba '['"
 
-#: config/tc-arm.c:4140 config/tc-arm.c:4243
-msgid "rotation can be 8, 16, 24 or 0 when field is ommited"
-msgstr "rotation puede ser 8, 16, 24 o 0 cuando se omite el campo"
+#: config/tc-arm.c:4807
+msgid "base register written back, and overlaps second destination register"
+msgstr "el registro base se escribió hacia atrás, y sobreescribe el segundo registro de destino"
 
-#: config/tc-arm.c:4492
-msgid "unrecognized flag"
-msgstr "opción no reconocida"
+#: config/tc-arm.c:4815
+msgid "index register overlaps destination register"
+msgstr "el registro índice sobreescribe el registro destino"
 
-#: config/tc-arm.c:4499
-msgid "no 'a', 'i', or 'f' flags for 'cps'"
-msgstr "no hay opciones 'a', 'i', o 'f' para 'cps'"
+#: config/tc-arm.c:4829 config/tc-arm.c:5272 config/tc-arm.c:6706
+#: config/tc-arm.c:7581
+msgid "instruction does not accept this addressing mode"
+msgstr "la instrucción no acepta este modo de direccionamiento"
 
-#: config/tc-arm.c:4810
-msgid "lo register required"
-msgstr "se requiere el registro lo"
+#: config/tc-arm.c:4835 config/tc-arm.c:5281
+msgid "offset must be zero in ARM encoding"
+msgstr "el desplazamiento debe ser cero en codificación ARM"
 
-#: config/tc-arm.c:4818
-msgid "hi register required"
-msgstr "se requiere el registro hi"
+#: config/tc-arm.c:4846 config/tc-arm.c:5293
+msgid "even register required"
+msgstr "se requiere un registro par"
 
-#: config/tc-arm.c:4886
-msgid "only lo regs allowed with immediate"
-msgstr "sólo se permiten registros lo con inmediatos"
+#: config/tc-arm.c:4877 config/tc-arm.c:4908
+msgid "this instruction requires a post-indexed address"
+msgstr "esta instrucción requiere una dirección post-indizada"
 
-#: config/tc-arm.c:4905 config/tc-xtensa.c:4123
-msgid "invalid immediate"
-msgstr "inmediato inválido"
+#: config/tc-arm.c:4935
+msgid "rd and rm should be different in mla"
+msgstr "rd y rm deben ser diferentes en mla"
 
-#: config/tc-arm.c:5141 config/tc-arm.c:5285
-msgid "non-word size not supported with control register"
-msgstr "un tamaño diferente de palabra no tiene soporte con un registro de control"
+#: config/tc-arm.c:4967 config/tc-arm.c:7121
+msgid "'CPSR' or 'SPSR' expected"
+msgstr "se esperaba 'CPSR' o 'SPSR'"
 
-#: config/tc-arm.c:5155
-msgid "only r15 allowed here"
-msgstr "sólo se permite r15 aquí"
+#: config/tc-arm.c:5000
+msgid "rd and rm should be different in mul"
+msgstr "rd y rm deben ser diferentes en mul"
 
-#: config/tc-arm.c:5283
-msgid "conditional execution not supported with control register"
-msgstr "la ejecución condicional no tiene soporte con un registro de control"
+#: config/tc-arm.c:5021
+msgid "rdhi, rdlo and rm must all be different"
+msgstr "rdhi, rdlo y rm deben ser todos diferentes"
 
-#: config/tc-arm.c:5493
+#: config/tc-arm.c:5083
 msgid "'[' expected after PLD mnemonic"
 msgstr "se esperaba '[' después del mnemónico PLD"
 
-#: config/tc-arm.c:5515
+#: config/tc-arm.c:5085
 msgid "post-indexed expression used in preload instruction"
 msgstr "se usó una expresión post-indizada en la instrucción de precarga"
 
-#: config/tc-arm.c:5520 config/tc-arm.c:5550
+#: config/tc-arm.c:5087
 msgid "writeback used in preload instruction"
 msgstr "se usó escritura hacia atrás en la instrucción de precarga"
 
-#: config/tc-arm.c:5591
-msgid "destination register must be even"
-msgstr "el registro de destino debe ser par"
-
-#: config/tc-arm.c:5597
-msgid "r14 not allowed here"
-msgstr "no se permite r14 aquí"
-
-#: config/tc-arm.c:5604
-msgid "pre/post-indexing used when modified address register is destination"
-msgstr "se usó pre/post-indizado cuando el registro de dirección modificado es el destino"
-
-#: config/tc-arm.c:5614
-msgid "ldrd destination registers must not overlap index register"
-msgstr "los registros destino ldrd no deben quedar sobre el registro índice"
+#: config/tc-arm.c:5089
+msgid "unindexed addressing used in preload instruction"
+msgstr "se usó un direccionamiento sin indizar en la instrucción de precarga"
 
-#: config/tc-arm.c:5874
-msgid "register or shift expression expected"
-msgstr "se esperaba un registro o una expresión de desplazamiento"
-
-#: config/tc-arm.c:5926
-msgid "invalid floating point immediate expression"
-msgstr "expresión inmediata de coma flotante inválida"
+#: config/tc-arm.c:5188 config/tc-arm.c:7492
+msgid "source1 and dest must be same register"
+msgstr "source1 y dest debe ser el mismo registro"
 
-#: config/tc-arm.c:5930
-msgid "floating point register or immediate expression expected"
-msgstr "se esperaba un registro de coma flotante o una expresión inmediata"
+#: config/tc-arm.c:5238 config/tc-arm.c:7178
+msgid "rdhi and rdlo must be different"
+msgstr "rdhi y rdlo deben ser diferentes"
 
-#: config/tc-arm.c:6076 config/tc-arm.c:6264 config/tc-arm.c:6345
-msgid "address expected"
-msgstr "se esperaba una dirección"
+#: config/tc-arm.c:5296
+msgid "can only store two consecutive registers"
+msgstr "solamente se pueden almacenar dos registros consecutivos"
 
-#: config/tc-arm.c:6106 config/tc-arm.c:6118 config/tc-arm.c:6155
-#: config/tc-arm.c:6282 config/tc-arm.c:6375 config/tc-arm.c:6389
-#: config/tc-arm.c:6426
-#, c-format
-msgid "%s register same as write-back base"
-msgstr "el registro %s es el mismo que la base de escritura-hacia-atrás"
+#: config/tc-arm.c:5391 config/tc-arm.c:5408
+msgid "only two consecutive VFP SP registers allowed here"
+msgstr "solamente se permiten dos registros SP VFP consecutivos aquí"
 
-#: config/tc-arm.c:6108 config/tc-arm.c:6120 config/tc-arm.c:6157
-#: config/tc-arm.c:6284 config/tc-arm.c:6377 config/tc-arm.c:6391
-#: config/tc-arm.c:6428
-msgid "destination"
-msgstr "destino"
+#: config/tc-arm.c:5436 config/tc-arm.c:5451
+msgid "this addressing mode requires base-register writeback"
+msgstr "este modo de direccionamiento requiere escritura hacia atrás del registro-base"
 
-#: config/tc-arm.c:6108 config/tc-arm.c:6120 config/tc-arm.c:6157
-#: config/tc-arm.c:6284 config/tc-arm.c:6377 config/tc-arm.c:6391
-#: config/tc-arm.c:6428
-msgid "source"
-msgstr "fuente"
+#: config/tc-arm.c:5529
+msgid "this instruction does not support indexing"
+msgstr "esta instrucción no tiene soporte para indizado"
 
-#: config/tc-arm.c:6167 config/tc-arm.c:6438 config/tc-arm.c:8411
-msgid "invalid pseudo operation"
-msgstr "pseudo operación inválida"
+#: config/tc-arm.c:5552
+msgid "only r15 allowed here"
+msgstr "sólo se permite r15 aquí"
 
-#: config/tc-arm.c:6219 config/tc-arm.c:6489
-msgid "literal pool insertion failed"
-msgstr "falló la inserción en el conjunto de literales"
+#: config/tc-arm.c:5757
+msgid "shift by register not allowed in thumb mode"
+msgstr "no se permite desplazar por registro en modo thumb"
 
-#: config/tc-arm.c:6312 config/tc-arm.c:6318
-msgid "post-indexed expression expected"
-msgstr "se esperaba una expresión post-indizada"
+#: config/tc-arm.c:5769 config/tc-arm.c:11339
+msgid "shift expression is too large"
+msgstr "la expresión de desplazamiento es demasiado grande"
 
-#: config/tc-arm.c:6553
-msgid "bad range in register list"
-msgstr "rango erróneo en la lista de registros"
+#: config/tc-arm.c:5795
+msgid "Thumb does not support the ldr =N pseudo-operation"
+msgstr "Thumb no tiene soporte para la pseudo-operación ldr =N"
 
-#: config/tc-arm.c:6561 config/tc-arm.c:6570 config/tc-arm.c:6612
-#, c-format
-msgid "Warning: duplicated register (r%d) in register list"
-msgstr "Aviso: registro duplicado (r%d) en la lista de registros"
+#: config/tc-arm.c:5800
+msgid "cannot use register index with PC-relative addressing"
+msgstr "no se puede usar el índice de registro con direccionamiento relativo al PC"
 
-#: config/tc-arm.c:6573
-msgid "Warning: register range not in ascending order"
-msgstr "Aviso: el rango de registros no está en orden ascendente"
+#: config/tc-arm.c:5801
+msgid "cannot use register index with this instruction"
+msgstr "no se puede usar el índice de registro con esta instrucción"
 
-#: config/tc-arm.c:6585
-msgid "missing `}'"
-msgstr "falta un `}'"
+#: config/tc-arm.c:5803
+msgid "Thumb does not support negative register indexing"
+msgstr "Thumb no tiene soporte para indizado negativo de registro"
 
-#: config/tc-arm.c:6601
-msgid "invalid register mask"
-msgstr "máscara de registro inválida"
+#: config/tc-arm.c:5805
+msgid "Thumb does not support register post-indexing"
+msgstr "Thumb no tiene soporte para post-indizado de registro"
 
-#: config/tc-arm.c:6659
-msgid "r15 not allowed as base register"
-msgstr "no se permite r15 como registro base"
+#: config/tc-arm.c:5807
+msgid "Thumb does not support register indexing with writeback"
+msgstr "Thumb no tiene soporte para indizado de registro con escritura hacia atrás"
 
-#: config/tc-arm.c:6693 config/tc-arm.c:6702
-msgid "writeback of base register is UNPREDICTABLE"
-msgstr "la escritura hacia atrás del registro base es IMPREDECIBLE"
+#: config/tc-arm.c:5809
+msgid "Thumb supports only LSL in shifted register indexing"
+msgstr "Thumb sólo da soporte a LSL en inidizado desplazado de registro"
 
-#: config/tc-arm.c:6696
-msgid "writeback of base register when in register list is UNPREDICTABLE"
-msgstr "la escritura hacia atrás del registro base cuando está en la lista de registros es IMPREDECIBLE"
+#: config/tc-arm.c:5818
+msgid "shift out of range"
+msgstr "desplazamiento fuera de rango"
 
-#: config/tc-arm.c:6706
-msgid "if writeback register is in list, it must be the lowest reg in the list"
-msgstr "si el registro de escritura hacia atrás está en la lista, debe ser el registro más bajo en la lista"
+#: config/tc-arm.c:5826
+msgid "cannot use writeback with PC-relative addressing"
+msgstr "no se puede usar escritura hacia atrás con el direccionamiento relativo al PC"
 
-#: config/tc-arm.c:6760 config/tc-arm.c:6774
-msgid "r15 not allowed in swap"
-msgstr "no se permite r15 en el intercambio"
+#: config/tc-arm.c:5828
+msgid "cannot use writeback with this instruction"
+msgstr "no se puede usar escritura hacia atrás con esta instrucción"
 
-#: config/tc-arm.c:7069
-msgid "constant value required for number of registers"
-msgstr "se requiere un valor constante para el número de registros"
+#: config/tc-arm.c:5847
+msgid "cannot use post-indexing with PC-relative addressing"
+msgstr "no se puede usar post-indizado con el direccionamiento relativo al PC"
 
-#: config/tc-arm.c:7077 config/tc-arm.c:14226
-msgid "number of registers must be in the range [1:4]"
-msgstr "el número de registros debe estar en el rango [1:4]"
+#: config/tc-arm.c:5848
+msgid "cannot use post-indexing with this instruction"
+msgstr "no se puede usar post-indizado con esta instrucción"
 
-#: config/tc-arm.c:7138
-msgid "r15 not allowed as base register with write-back"
-msgstr "no se permite r15 como registro base con escritura-hacia-atrás"
+#: config/tc-arm.c:5975
+msgid "PC not allowed as destination"
+msgstr "no se permite PC como destino"
 
-#: config/tc-arm.c:7533 config/tc-arm.c:7572 config/tc-h8300.c:1010
-#: config/tc-mips.c:9585 config/tc-mips.c:9615
-msgid "invalid register list"
-msgstr "lista de registros inválida"
+#: config/tc-arm.c:6093 config/tc-arm.c:6234 config/tc-arm.c:6326
+#: config/tc-arm.c:7092
+msgid "shift must be constant"
+msgstr "el desplazamiento debe ser constante"
 
-#: config/tc-arm.c:7539 config/tc-arm.c:14310 config/tc-arm.c:14317
-msgid "register list not in ascending order"
-msgstr "la lista de registros no está en orden ascendente"
+#: config/tc-arm.c:6120 config/tc-arm.c:6249 config/tc-arm.c:6341
+#: config/tc-arm.c:7105
+msgid "unshifted register required"
+msgstr "se requiere un registro sin desplazar"
 
-#: config/tc-arm.c:7564
-msgid "register range not in ascending order"
-msgstr "el rango de registros no está en orden ascendente"
+#: config/tc-arm.c:6135 config/tc-arm.c:6352 config/tc-arm.c:7165
+msgid "dest must overlap one source register"
+msgstr "dest debe sobreescribir un registro fuente"
 
-#: config/tc-arm.c:7597
-msgid "non-contiguous register range"
-msgstr "el rango de registro no es contiguo"
+#: config/tc-arm.c:6252
+msgid "dest and source1 must be the same register"
+msgstr "dest y source1 debe ser el mismo registro"
 
-#: config/tc-arm.c:7626 config/tc-arm.c:7663
-msgid "only two consecutive VFP SP registers allowed here"
-msgstr "solamente se permiten dos registros SP VFP consecutivos aquí"
+#: config/tc-arm.c:6537
+msgid "Thumb does not support the 2-argument form of this instruction"
+msgstr "Thumb no tiene soporte para la forma con 2 argumentos de esta instrucción"
 
-#: config/tc-arm.c:7810
-msgid "VFP system register expected"
-msgstr "se esperaba un registro de sistema VFP"
+#: config/tc-arm.c:6616
+msgid "Thumb load/store multiple does not support {reglist}^"
+msgstr "load/store Thumb múltiples no tienen soporte para {reglist}^"
 
-#: config/tc-arm.c:7921 config/tc-arm.c:7958
-msgid "this addressing mode requires base-register writeback"
-msgstr "este modo de direccionamiento requiere escritura hacia atrás del registro-base"
+#: config/tc-arm.c:6633 config/tc-arm.c:6649 config/tc-arm.c:6680
+#, c-format
+msgid "value stored for r%d is UNPREDICTABLE"
+msgstr "el valor almacenado para r%d es IMPREDECIBLE"
 
-#: config/tc-arm.c:8140 config/tc-arm.c:9219
-msgid "dest and source1 must be the same register"
-msgstr "dest y source1 debe ser el mismo registro"
+#: config/tc-arm.c:6643
+msgid "SP should not be in register list"
+msgstr "SP no debe estar en la lista de registros"
 
-#: config/tc-arm.c:8147
-msgid "subtract valid only on lo regs"
-msgstr "subtract válido sólo en registros lo"
+#: config/tc-arm.c:6647
+msgid "PC should not be in register list"
+msgstr "PC no debe estar en la lista de registros"
 
-#: config/tc-arm.c:8171
-msgid "invalid Hi register with immediate"
-msgstr "registro Hi inválido con el inmediato"
+#: config/tc-arm.c:6656 config/tc-arm.c:7311
+msgid "LR and PC should not both be in register list"
+msgstr "tanto LR como PC no deben estar en la lista de registros"
 
-#: config/tc-arm.c:8211
-msgid "invalid immediate value for stack adjust"
-msgstr "valor inmediato inválido para el ajuste de la pila"
+#: config/tc-arm.c:6659
+msgid "base register should not be in register list when written back"
+msgstr "el registro base no debe estar en la lista de registros cuando se escribe hacia atrás"
 
-#: config/tc-arm.c:8222
-msgid "invalid immediate for address calculation"
-msgstr "inmediato inválido para el cálculo de dirección"
+#: config/tc-arm.c:6677 config/tc-arm.c:6687
+msgid "this instruction will write back the base register"
+msgstr "esta instrucción escribirá hacia atrás el registro base"
 
-#: config/tc-arm.c:8307
-msgid "source1 and dest must be same register"
-msgstr "source1 y dest debe ser el mismo registro"
+#: config/tc-arm.c:6690
+msgid "this instruction will not write back the base register"
+msgstr "esta instrucción no escribirá hacia atrás el registro base"
 
-#: config/tc-arm.c:8341
-msgid "invalid immediate for shift"
-msgstr "inmediato inválido para el desplazamiento"
+#: config/tc-arm.c:6719
+msgid "r14 not allowed as first register when second register is omitted"
+msgstr "no se permite r14 como primer registro cuando se omite el segundo registro"
 
-#: config/tc-arm.c:8402
-msgid "expected ']'"
-msgstr "se esperaba ']'"
+#: config/tc-arm.c:6809 config/tc-arm.c:6822 config/tc-arm.c:6858
+msgid "Thumb does not support this addressing mode"
+msgstr "Thumb no tiene soporte para este modo de direccionamiento"
 
-#: config/tc-arm.c:8475
+#: config/tc-arm.c:6826
 msgid "byte or halfword not valid for base register"
 msgstr "byte o halfword no válido para el registro base"
 
-#: config/tc-arm.c:8480
+#: config/tc-arm.c:6829
 msgid "r15 based store not allowed"
 msgstr "no se permite el almacenamiento basado en r15"
 
-#: config/tc-arm.c:8485
+#: config/tc-arm.c:6831
 msgid "invalid base register for register offset"
 msgstr "registro base inválido para el desplazamiento del registro"
 
-#: config/tc-arm.c:8503 config/tc-arm.c:8538
-msgid "invalid offset"
-msgstr "desplazamiento inválido"
+#: config/tc-arm.c:7032
+msgid "only lo regs allowed with immediate"
+msgstr "sólo se permiten registros lo con inmediatos"
 
-#: config/tc-arm.c:8514
-msgid "invalid base register in load/store"
-msgstr "registro base inválido en carga/almacenamiento"
+#: config/tc-arm.c:7130
+msgid "Thumb encoding does not support an immediate here"
+msgstr "la codificación Thumb no tiene soporte para un inmediato aquí"
 
-#: config/tc-arm.c:8990
-msgid "expecting immediate, 7bit operand"
-msgstr "se espera un operando inmediato de 7 bits"
+#: config/tc-arm.c:7200
+msgid "Thumb does not support NOP with hints"
+msgstr "Thumb no tiene soporte para NOP con pistas"
 
-#: config/tc-arm.c:9005
-msgid "immediate out of range"
-msgstr "inmediato fuera de rango"
+#: config/tc-arm.c:7282
+msgid "push/pop do not support {reglist}^"
+msgstr "push/pop no tienen soporte para {reglist}^"
 
-#: config/tc-arm.c:9058
-msgid "offset expected"
-msgstr "se esperaba un desplazamiento"
+#: config/tc-arm.c:7301
+msgid "SP not allowed in register list"
+msgstr "no se permite SP en la lista de registros"
 
-#: config/tc-arm.c:9067 config/tc-pj.c:536 config/tc-sh.c:4107
-msgid "offset out of range"
-msgstr "desplazamiento fuera de rango"
+#: config/tc-arm.c:7305
+msgid "PC not allowed in register list"
+msgstr "no se permite PC en la lista de registros"
 
-#: config/tc-arm.c:9072
-msgid "offset not a multiple of 4"
-msgstr "el desplazamiento no es un múltiplo de 4"
+#: config/tc-arm.c:7328
+msgid "invalid register list to push/pop instruction"
+msgstr "lista de registros inválida para la instrucción push/pop"
 
-#: config/tc-arm.c:9227
-msgid "Rs and Rd must be different in MUL"
-msgstr "Rs y Rd deben ser diferentes en MUL"
+#: config/tc-arm.c:7513
+msgid "ror #imm not supported"
+msgstr "ror #imm no tiene soporte"
 
-#: config/tc-arm.c:9362
-msgid "inserted missing '!': load/store multiple always writes back base register"
-msgstr "se insertó un '!' faltante: los load/store múltiples siempre escribe hacia atrás el registro base"
+#: config/tc-arm.c:7638
+msgid "Thumb encoding does not support rotation"
+msgstr "la codificación Thumb no tiene soporte para rotación"
 
-#: config/tc-arm.c:9384
-msgid "only lo-regs valid in load/store multiple"
-msgstr "sólo los registros lo son válidos en carga/almacenamiento múltiple"
+#: config/tc-arm.c:7656
+msgid "PC is not a valid index register"
+msgstr "PC no es un registro índice válido"
 
-#: config/tc-arm.c:9426
-msgid "syntax: ldrs[b] Rd, [Rb, Ro]"
-msgstr "sintaxis: ldrs[b] Rd, [Rb, Ro]"
+#: config/tc-arm.c:7658
+msgid "instruction does not allow shifted index"
+msgstr "la instrucción no permite un índice desplazado"
 
-#: config/tc-arm.c:9486
-msgid "invalid register list to push/pop instruction"
-msgstr "lista de registros inválida para la instrucción push/pop"
+#: config/tc-arm.c:7660
+msgid "instruction requires shifted index"
+msgstr "la instrucción requiere un índice desplazado"
 
-#: config/tc-arm.c:9589 config/tc-arm.c:10966
-msgid "virtual memory exhausted"
-msgstr "memoria agotada"
+#: config/tc-arm.c:7943 config/tc-arm.c:8015
+msgid "conditional infixes are deprecated in unified syntax"
+msgstr "los infijos condicionales son obsoletos en la sintaxis unificada"
 
-#: config/tc-arm.c:9613
+#: config/tc-arm.c:8047
 #, c-format
-msgid "failed to create an alias for %s, reason: %s"
-msgstr "falló la creación de un alias para %s, razón: %s"
+msgid "bad instruction `%s'"
+msgstr "instrucción `%s' errónea"
 
-#: config/tc-arm.c:9677
+#: config/tc-arm.c:8063 config/tc-arm.c:8126
 #, c-format
-msgid "register '%s' does not exist\n"
-msgstr "el registro '%s' no existe\n"
+msgid "selected processor does not support `%s'"
+msgstr "el procesador seleccionado no tiene soporte para `%s'"
 
-#: config/tc-arm.c:9681
-#, c-format
-msgid "ignoring redefinition of register alias '%s' to non-existant register '%s'"
-msgstr "se ignora la redefinición del alias de registro '%s' al registro no existente '%s'"
+#: config/tc-arm.c:8069
+msgid "Thumb does not support conditional execution"
+msgstr "Thumb no tiene soporte para la ejecución condicional"
+
+#: config/tc-arm.c:8080
+msgid "incorrect condition in IT block"
+msgstr "condición incorrecta en el bloque IT"
+
+#: config/tc-arm.c:8088
+msgid "thumb conditional instrunction not in IT block"
+msgstr "la instrucción condicional thumb no está en el bloque IT"
 
-#: config/tc-arm.c:9690
+#: config/tc-arm.c:8108
 #, c-format
-msgid "ignoring redefinition of register alias '%s'"
-msgstr "se ignora la redefinición del alias de registro '%s'"
+msgid "cannot honor width suffix -- `%s'"
+msgstr "no se puede honrar el sufijo de anchura -- `%s'"
 
-#: config/tc-arm.c:9696
-msgid "ignoring incomplete .req pseuso op"
-msgstr "se ignora el pseudo operador incompleto .req"
+#: config/tc-arm.c:8131
+#, c-format
+msgid "width suffixes are invalid in ARM mode -- `%s'"
+msgstr "los sufijos de anchura son inválidos en modo ARM -- `%s'"
 
-#: config/tc-arm.c:10990
-msgid "use of old and new-style options to set CPU type"
-msgstr "se utilizan opciones de estilo antiguo y nuevo para establecer el tipo de CPU"
+#: config/tc-arm.c:10340
+msgid "alignments greater than 32 bytes not supported in .text sections."
+msgstr "las alineaciones más grandes que 32 bytes no tienen soporte en la sección text."
 
-#: config/tc-arm.c:11000
-msgid "use of old and new-style options to set FPU type"
-msgstr "se utilizan opciones de estilo antiguo y nuevo para establecer el tipo de FPU"
+#: config/tc-arm.c:10634
+msgid "handerdata in cantunwind frame"
+msgstr "handerdata en un marco cantunwind"
 
-#: config/tc-arm.c:11062
-msgid "hard-float conflicts with specified fpu"
-msgstr "hard-float tiene conflictos con la unidad de coma flotante (fpu) especificada"
+#: config/tc-arm.c:10651
+msgid "too many unwind opcodes for personality routine 0"
+msgstr "demasiados códigos de operación de desenredo para la rutina personality 0"
 
-#: config/tc-arm.c:11246
-msgid "bad call to MD_ATOF()"
-msgstr "llamada errónea a MD_ATOF()"
+#: config/tc-arm.c:10683
+msgid "too many unwind opcodes"
+msgstr "demasiados códigos de operación de desenredo"
 
-#: config/tc-arm.c:11402
+#: config/tc-arm.c:11085 config/tc-arm.c:11365
 #, c-format
 msgid "undefined symbol %s used as an immediate value"
 msgstr "se usa el símbolo %s indefinido como un valor inmediato"
 
-#: config/tc-arm.c:11416
+#: config/tc-arm.c:11099 config/tc-arm.c:11394
 #, c-format
 msgid "invalid constant (%lx) after fixup"
 msgstr "constante inválidoa (%lx) después de la compostura"
 
-#: config/tc-arm.c:11453
+#: config/tc-arm.c:11136
 #, c-format
 msgid "unable to compute ADRL instructions for PC offset of 0x%lx"
 msgstr "no se pueden calcular las instrucciones ADRL para el desplazamiento de PC de 0x%lx"
 
-#: config/tc-arm.c:11483
+#: config/tc-arm.c:11168 config/tc-arm.c:11193
+msgid "invalid literal constant: pool needs to be closer"
+msgstr "constante literal inválida: el conjunto necesita estar más cerca"
+
+#: config/tc-arm.c:11171 config/tc-arm.c:11209
 #, c-format
 msgid "bad immediate value for offset (%ld)"
 msgstr "valor inmediato erróneo para el desplazamiento (%ld)"
 
-#: config/tc-arm.c:11505 config/tc-arm.c:11527
-msgid "invalid literal constant: pool needs to be closer"
-msgstr "constante literal inválida: el conjunto necesita estar más cerca"
-
-#: config/tc-arm.c:11507
+#: config/tc-arm.c:11195
 #, c-format
 msgid "bad immediate value for half-word offset (%ld)"
 msgstr "valor inmediato erróneo para el desplazamiento half-word (%ld)"
 
-#: config/tc-arm.c:11544
-msgid "shift expression is too large"
-msgstr "la expresión de desplazamiento es demasiado grande"
+#: config/tc-arm.c:11250
+msgid "offset not a multiple of 4"
+msgstr "el desplazamiento no es un múltiplo de 4"
+
+#: config/tc-arm.c:11257 config/tc-arm.c:11272 config/tc-arm.c:11287
+#: config/tc-arm.c:11298 config/tc-arm.c:11321 config/tc-pj.c:499
+#: config/tc-sh.c:4084
+msgid "offset out of range"
+msgstr "desplazamiento fuera de rango"
 
-#: config/tc-arm.c:11561
-msgid "invalid smi expression"
-msgstr "expresión smi inválida"
+#: config/tc-arm.c:11410
+msgid "invalid smc expression"
+msgstr "expresión smc inválida"
 
-#: config/tc-arm.c:11572 config/tc-arm.c:11581
+#: config/tc-arm.c:11421 config/tc-arm.c:11430
 msgid "invalid swi expression"
 msgstr "expresión swi inválida"
 
-#: config/tc-arm.c:11591
+#: config/tc-arm.c:11440
 msgid "invalid expression in load/store multiple"
 msgstr "expresión inválida en load/store múltiples"
 
-#: config/tc-arm.c:11641
-msgid "GAS can't handle same-section branch dest >= 0x04000000"
-msgstr "GAS no puede manejar un destino de ramificación en la misma sección >= 0x04000000"
+#: config/tc-arm.c:11455
+msgid "misaligned branch destination"
+msgstr "destinaciones ramificadas desalineadas"
 
-#: config/tc-arm.c:11650
-msgid "out of range branch"
-msgstr "ramificación fuera de rango"
-
-#: config/tc-arm.c:11707 config/tc-arm.c:11732
+#: config/tc-arm.c:11459 config/tc-arm.c:11479 config/tc-arm.c:11497
+#: config/tc-arm.c:11510 config/tc-arm.c:11523 config/tc-arm.c:11562
+#: config/tc-arm.c:11587
 msgid "branch out of range"
 msgstr "ramificación fuera de rango"
 
-#: config/tc-arm.c:11765
-msgid "branch with link out of range"
-msgstr "ramificación con enlace fuera de rango"
+#: config/tc-arm.c:11475
+msgid "misaligned BLX destination"
+msgstr "destino BLX desalineado"
 
-#: config/tc-arm.c:11858
+#: config/tc-arm.c:11536
+msgid "conditional branch out of range"
+msgstr "ramificación condicional fuera de rango"
+
+#: config/tc-arm.c:11657
 msgid "rel31 relocation overflow"
 msgstr "desbordamiento de reubicación rel31"
 
-#: config/tc-arm.c:11874
-msgid "illegal value for co-processor offset"
-msgstr "valor ilegal para el desplazamiento del co-procesador"
-
-#: config/tc-arm.c:11886
-msgid "Illegal value for co-processor offset"
-msgstr "Valor ilegal para el desplazamiento del co-procesador"
+#: config/tc-arm.c:11669 config/tc-arm.c:11694
+msgid "co-processor offset out of range"
+msgstr "desplazamiento de coprocesador fuera de rango"
 
-#: config/tc-arm.c:11910
+#: config/tc-arm.c:11710
 #, c-format
-msgid "invalid offset, target not word aligned (0x%08X)"
-msgstr "desplazamiento inválido, el objetivo no está alineado a word (0x%08X)"
+msgid "invalid offset, target not word aligned (0x%08lX)"
+msgstr "desplazamiento inválido, el objetivo no está alineado a word (0x%08lX)"
 
-#: config/tc-arm.c:11916 config/tc-arm.c:11926 config/tc-arm.c:11934
-#: config/tc-arm.c:11942 config/tc-arm.c:11950
+#: config/tc-arm.c:11716 config/tc-arm.c:11725 config/tc-arm.c:11733
+#: config/tc-arm.c:11741 config/tc-arm.c:11749
 #, c-format
 msgid "invalid offset, value too big (0x%08lX)"
 msgstr "desplazamiento inválido, valor demasiado grande (0x%08lX)"
 
-#: config/tc-arm.c:11990
+#: config/tc-arm.c:11790
+msgid "invalid Hi register with immediate"
+msgstr "registro Hi inválido con el inmediato"
+
+#: config/tc-arm.c:11806
 msgid "invalid immediate for stack address calculation"
 msgstr "inmediato inválido para el cálculo de la dirección de la pila"
 
-#: config/tc-arm.c:11999
+#: config/tc-arm.c:11814
 #, c-format
 msgid "invalid immediate for address calculation (value = 0x%08lX)"
 msgstr "inmediato inválido para el cálculo de la dirección (valor = 0x%08lX)"
 
-#: config/tc-arm.c:12009
-msgid "invalid 8bit immediate"
-msgstr "inmediato de 8bit inválido"
-
-#: config/tc-arm.c:12017
-msgid "invalid 3bit immediate"
-msgstr "inmediato de 3bit inválido"
-
-#: config/tc-arm.c:12033
+#: config/tc-arm.c:11844
 #, c-format
 msgid "invalid immediate: %ld is too large"
 msgstr "inmediato inválido: %ld es demasiado grande"
 
-#: config/tc-arm.c:12048
+#: config/tc-arm.c:11856
 #, c-format
-msgid "illegal Thumb shift value: %ld"
-msgstr "valor de desplazamiento Thumb ilegal: %ld"
+msgid "invalid shift value: %ld"
+msgstr "valor de desplazamiento inválid: %ld"
 
-#: config/tc-arm.c:12062
+#: config/tc-arm.c:11875
 #, c-format
 msgid "bad relocation fixup type (%d)"
 msgstr "tipo de compostura de reubicación inválido (%d)"
 
-#: config/tc-arm.c:12133
+#: config/tc-arm.c:11943
 msgid "literal referenced across section boundary"
 msgstr "se referencía una literal a través de un límite de sección"
 
-#: config/tc-arm.c:12151
+#: config/tc-arm.c:11973
 msgid "internal relocation (type: IMMEDIATE) not fixed up"
 msgstr "reubicación interna (tipo: IMMEDIATE) no compuesta"
 
-#: config/tc-arm.c:12156
+#: config/tc-arm.c:11978
 msgid "ADRL used for a symbol not defined in the same file"
 msgstr "se utiliza ADRL para un símbolo que no está definido en el mismo fichero"
 
-#: config/tc-arm.c:12165
+#: config/tc-arm.c:11987
 #, c-format
 msgid "undefined local label `%s'"
 msgstr "etiqueta local `%s' sin definir"
 
-#: config/tc-arm.c:12171
+#: config/tc-arm.c:11993
 msgid "internal_relocation (type: OFFSET_IMM) not fixed up"
 msgstr "reubicación_interna (tipo OFFSET_IMM) no compuesta"
 
-#: config/tc-arm.c:12191 config/tc-cris.c:3936 config/tc-mcore.c:2053
-#: config/tc-mmix.c:2930 config/tc-ns32k.c:2393
+#: config/tc-arm.c:12014 config/tc-cris.c:3869 config/tc-mcore.c:1995
+#: config/tc-mmix.c:2888 config/tc-ns32k.c:2284
 msgid "<unknown>"
 msgstr "<desconocido>"
 
-#: config/tc-arm.c:12194 config/tc-arm.c:12215
+#: config/tc-arm.c:12017 config/tc-arm.c:12038
 #, c-format
 msgid "cannot represent %s relocation in this object file format"
 msgstr "no se puede representar la reubicación %s en este formato de fichero objeto"
 
-#: config/tc-arm.c:12342
+#: config/tc-arm.c:12254
 #, c-format
-msgid "no operator -- statement `%s'\n"
-msgstr "no hay operador -- declaración `%s'\n"
+msgid "%s: unexpected function type: %d"
+msgstr "%s: tipo de función inesperado: %d"
 
-#: config/tc-arm.c:12360 config/tc-arm.c:12386
-#, c-format
-msgid "selected processor does not support `%s'"
-msgstr "el procesador seleccionado no tiene soporte para `%s'"
+#: config/tc-arm.c:12331
+msgid "virtual memory exhausted"
+msgstr "memoria agotada"
 
-#: config/tc-arm.c:12404
-#, c-format
-msgid "bad instruction `%s'"
-msgstr "instrucción `%s' errónea"
+#: config/tc-arm.c:12357
+msgid "use of old and new-style options to set CPU type"
+msgstr "se utilizan opciones de estilo antiguo y nuevo para establecer el tipo de CPU"
+
+#: config/tc-arm.c:12367
+msgid "use of old and new-style options to set FPU type"
+msgstr "se utilizan opciones de estilo antiguo y nuevo para establecer el tipo de FPU"
 
-#: config/tc-arm.c:12505
+#: config/tc-arm.c:12441
+msgid "hard-float conflicts with specified fpu"
+msgstr "hard-float tiene conflictos con la unidad de coma flotante (fpu) especificada"
+
+#: config/tc-arm.c:12633
 msgid "generate PIC code"
 msgstr "genera código PIC"
 
-#: config/tc-arm.c:12506
+#: config/tc-arm.c:12634
 msgid "assemble Thumb code"
 msgstr "ensambla código Thumb"
 
-#: config/tc-arm.c:12507
+#: config/tc-arm.c:12635
 msgid "support ARM/Thumb interworking"
 msgstr "soporta la interoperación ARM/Thumb"
 
-#: config/tc-arm.c:12509
+#: config/tc-arm.c:12637
 msgid "code uses 32-bit program counter"
 msgstr "el código utiliza un contador de programa de 32-bit"
 
-#: config/tc-arm.c:12510
+#: config/tc-arm.c:12638
 msgid "code uses 26-bit program counter"
 msgstr "el código utiliza un contador de programa de 26-bit"
 
-#: config/tc-arm.c:12511
+#: config/tc-arm.c:12639
 msgid "floating point args are in fp regs"
 msgstr "los argumentos de coma flotante están en los registros de coma flotante"
 
-#: config/tc-arm.c:12513
+#: config/tc-arm.c:12641
 msgid "re-entrant code"
 msgstr "código reentrante"
 
-#: config/tc-arm.c:12514
+#: config/tc-arm.c:12642
 msgid "code is ATPCS conformant"
 msgstr "el código es conforme a ATPCS"
 
-#: config/tc-arm.c:12515
+#: config/tc-arm.c:12643
 msgid "assemble for big-endian"
 msgstr "ensamblar para big-endian"
 
-#: config/tc-arm.c:12516
+#: config/tc-arm.c:12644
 msgid "assemble for little-endian"
 msgstr "ensamblar para little-endian"
 
 #. These are recognized by the assembler, but have no affect on code.
-#: config/tc-arm.c:12520
+#: config/tc-arm.c:12648
 msgid "use frame pointer"
 msgstr "usar puntero de marco"
 
-#: config/tc-arm.c:12521
+#: config/tc-arm.c:12649
 msgid "use stack size checking"
 msgstr "usar revisión del tamaño de la pila"
 
 #. DON'T add any new processors to this list -- we want the whole list
 #. to go away...  Add them to the processors table instead.
-#: config/tc-arm.c:12525 config/tc-arm.c:12526
+#: config/tc-arm.c:12653 config/tc-arm.c:12654
 msgid "use -mcpu=arm1"
 msgstr "usar -mcpu=arm1"
 
-#: config/tc-arm.c:12527 config/tc-arm.c:12528
+#: config/tc-arm.c:12655 config/tc-arm.c:12656
 msgid "use -mcpu=arm2"
 msgstr "usar -mcpu=arm2"
 
-#: config/tc-arm.c:12529 config/tc-arm.c:12530
+#: config/tc-arm.c:12657 config/tc-arm.c:12658
 msgid "use -mcpu=arm250"
 msgstr "usar -mcpu=arm250"
 
-#: config/tc-arm.c:12531 config/tc-arm.c:12532
+#: config/tc-arm.c:12659 config/tc-arm.c:12660
 msgid "use -mcpu=arm3"
 msgstr "usar -mcpu=arm3"
 
-#: config/tc-arm.c:12533 config/tc-arm.c:12534
+#: config/tc-arm.c:12661 config/tc-arm.c:12662
 msgid "use -mcpu=arm6"
 msgstr "usar -mcpu=arm6"
 
-#: config/tc-arm.c:12535 config/tc-arm.c:12536
+#: config/tc-arm.c:12663 config/tc-arm.c:12664
 msgid "use -mcpu=arm600"
 msgstr "usar -mcpu=arm600"
 
-#: config/tc-arm.c:12537 config/tc-arm.c:12538
+#: config/tc-arm.c:12665 config/tc-arm.c:12666
 msgid "use -mcpu=arm610"
 msgstr "usar -mcpu=arm610"
 
-#: config/tc-arm.c:12539 config/tc-arm.c:12540
+#: config/tc-arm.c:12667 config/tc-arm.c:12668
 msgid "use -mcpu=arm620"
 msgstr "usar -mcpu=arm620"
 
-#: config/tc-arm.c:12541 config/tc-arm.c:12542
+#: config/tc-arm.c:12669 config/tc-arm.c:12670
 msgid "use -mcpu=arm7"
 msgstr "usar -mcpu=arm7"
 
-#: config/tc-arm.c:12543 config/tc-arm.c:12544
+#: config/tc-arm.c:12671 config/tc-arm.c:12672
 msgid "use -mcpu=arm70"
 msgstr "usar -mcpu=arm70"
 
-#: config/tc-arm.c:12545 config/tc-arm.c:12546
+#: config/tc-arm.c:12673 config/tc-arm.c:12674
 msgid "use -mcpu=arm700"
 msgstr "usar -mcpu=arm700"
 
-#: config/tc-arm.c:12547 config/tc-arm.c:12548
+#: config/tc-arm.c:12675 config/tc-arm.c:12676
 msgid "use -mcpu=arm700i"
 msgstr "usar -mcpu=arm700i"
 
-#: config/tc-arm.c:12549 config/tc-arm.c:12550
+#: config/tc-arm.c:12677 config/tc-arm.c:12678
 msgid "use -mcpu=arm710"
 msgstr "usar -mcpu=arm710"
 
-#: config/tc-arm.c:12551 config/tc-arm.c:12552
+#: config/tc-arm.c:12679 config/tc-arm.c:12680
 msgid "use -mcpu=arm710c"
 msgstr "usar -mcpu=arm710c"
 
-#: config/tc-arm.c:12553 config/tc-arm.c:12554
+#: config/tc-arm.c:12681 config/tc-arm.c:12682
 msgid "use -mcpu=arm720"
 msgstr "usar -mcpu=arm720"
 
-#: config/tc-arm.c:12555 config/tc-arm.c:12556
+#: config/tc-arm.c:12683 config/tc-arm.c:12684
 msgid "use -mcpu=arm7d"
 msgstr "usar -mcpu=arm7d"
 
-#: config/tc-arm.c:12557 config/tc-arm.c:12558
+#: config/tc-arm.c:12685 config/tc-arm.c:12686
 msgid "use -mcpu=arm7di"
 msgstr "usar -mcpu=arm7di"
 
-#: config/tc-arm.c:12559 config/tc-arm.c:12560
+#: config/tc-arm.c:12687 config/tc-arm.c:12688
 msgid "use -mcpu=arm7m"
 msgstr "usar -mcpu=arm7m"
 
-#: config/tc-arm.c:12561 config/tc-arm.c:12562
+#: config/tc-arm.c:12689 config/tc-arm.c:12690
 msgid "use -mcpu=arm7dm"
 msgstr "usar -mcpu=arm7dm"
 
-#: config/tc-arm.c:12563 config/tc-arm.c:12564
+#: config/tc-arm.c:12691 config/tc-arm.c:12692
 msgid "use -mcpu=arm7dmi"
 msgstr "usar -mcpu=arm7dmi"
 
-#: config/tc-arm.c:12565 config/tc-arm.c:12566
+#: config/tc-arm.c:12693 config/tc-arm.c:12694
 msgid "use -mcpu=arm7100"
 msgstr "usar -mcpu=arm7100"
 
-#: config/tc-arm.c:12567 config/tc-arm.c:12568
+#: config/tc-arm.c:12695 config/tc-arm.c:12696
 msgid "use -mcpu=arm7500"
 msgstr "usar -mcpu=arm7500"
 
-#: config/tc-arm.c:12569 config/tc-arm.c:12570
+#: config/tc-arm.c:12697 config/tc-arm.c:12698
 msgid "use -mcpu=arm7500fe"
 msgstr "usar -mcpu=arm7500fe"
 
-#: config/tc-arm.c:12571 config/tc-arm.c:12572 config/tc-arm.c:12573
-#: config/tc-arm.c:12574
+#: config/tc-arm.c:12699 config/tc-arm.c:12700 config/tc-arm.c:12701
+#: config/tc-arm.c:12702
 msgid "use -mcpu=arm7tdmi"
 msgstr "usar -mcpu=arm7tdmi"
 
-#: config/tc-arm.c:12575 config/tc-arm.c:12576
+#: config/tc-arm.c:12703 config/tc-arm.c:12704
 msgid "use -mcpu=arm710t"
 msgstr "usar -mcpu=arm710t"
 
-#: config/tc-arm.c:12577 config/tc-arm.c:12578
+#: config/tc-arm.c:12705 config/tc-arm.c:12706
 msgid "use -mcpu=arm720t"
 msgstr "usar -mcpu=arm720t"
 
-#: config/tc-arm.c:12579 config/tc-arm.c:12580
+#: config/tc-arm.c:12707 config/tc-arm.c:12708
 msgid "use -mcpu=arm740t"
 msgstr "usar -mcpu=arm740t"
 
-#: config/tc-arm.c:12581 config/tc-arm.c:12582
+#: config/tc-arm.c:12709 config/tc-arm.c:12710
 msgid "use -mcpu=arm8"
 msgstr "usar -mcpu=arm8"
 
-#: config/tc-arm.c:12583 config/tc-arm.c:12584
+#: config/tc-arm.c:12711 config/tc-arm.c:12712
 msgid "use -mcpu=arm810"
 msgstr "usar -mcpu=arm810"
 
-#: config/tc-arm.c:12585 config/tc-arm.c:12586
+#: config/tc-arm.c:12713 config/tc-arm.c:12714
 msgid "use -mcpu=arm9"
 msgstr "usar -mcpu=arm9"
 
-#: config/tc-arm.c:12587 config/tc-arm.c:12588
+#: config/tc-arm.c:12715 config/tc-arm.c:12716
 msgid "use -mcpu=arm9tdmi"
 msgstr "usar -mcpu=arm9tdmi"
 
-#: config/tc-arm.c:12589 config/tc-arm.c:12590
+#: config/tc-arm.c:12717 config/tc-arm.c:12718
 msgid "use -mcpu=arm920"
 msgstr "usar -mcpu=arm920"
 
-#: config/tc-arm.c:12591 config/tc-arm.c:12592
+#: config/tc-arm.c:12719 config/tc-arm.c:12720
 msgid "use -mcpu=arm940"
 msgstr "usar -mcpu=arm940"
 
-#: config/tc-arm.c:12593
+#: config/tc-arm.c:12721
 msgid "use -mcpu=strongarm"
 msgstr "usar -mcpu=strongarm"
 
-#: config/tc-arm.c:12595
+#: config/tc-arm.c:12723
 msgid "use -mcpu=strongarm110"
 msgstr "usar -mcpu=strongarm110"
 
-#: config/tc-arm.c:12597
+#: config/tc-arm.c:12725
 msgid "use -mcpu=strongarm1100"
 msgstr "usar -mcpu=strongarm1100"
 
-#: config/tc-arm.c:12599
+#: config/tc-arm.c:12727
 msgid "use -mcpu=strongarm1110"
 msgstr "usar -mcpu=strongarm1110"
 
-#: config/tc-arm.c:12600
+#: config/tc-arm.c:12728
 msgid "use -mcpu=xscale"
 msgstr "usar -mcpu=xscale"
 
-#: config/tc-arm.c:12601
+#: config/tc-arm.c:12729
 msgid "use -mcpu=iwmmxt"
 msgstr "usar -mcpu=iwmmxt"
 
-#: config/tc-arm.c:12602
+#: config/tc-arm.c:12730
 msgid "use -mcpu=all"
 msgstr "usar -mcpu=all"
 
 #. Architecture variants -- don't add any more to this list either.
-#: config/tc-arm.c:12605 config/tc-arm.c:12606
+#: config/tc-arm.c:12733 config/tc-arm.c:12734
 msgid "use -march=armv2"
 msgstr "usar -march=armv2"
 
-#: config/tc-arm.c:12607 config/tc-arm.c:12608
+#: config/tc-arm.c:12735 config/tc-arm.c:12736
 msgid "use -march=armv2a"
 msgstr "usar -march=armv2a"
 
-#: config/tc-arm.c:12609 config/tc-arm.c:12610
+#: config/tc-arm.c:12737 config/tc-arm.c:12738
 msgid "use -march=armv3"
 msgstr "usar -march=armv3"
 
-#: config/tc-arm.c:12611 config/tc-arm.c:12612
+#: config/tc-arm.c:12739 config/tc-arm.c:12740
 msgid "use -march=armv3m"
 msgstr "usar -march=armv3m"
 
-#: config/tc-arm.c:12613 config/tc-arm.c:12614
+#: config/tc-arm.c:12741 config/tc-arm.c:12742
 msgid "use -march=armv4"
 msgstr "usar -march=armv4"
 
-#: config/tc-arm.c:12615 config/tc-arm.c:12616
+#: config/tc-arm.c:12743 config/tc-arm.c:12744
 msgid "use -march=armv4t"
 msgstr "usar -march=armv4t"
 
-#: config/tc-arm.c:12617 config/tc-arm.c:12618
+#: config/tc-arm.c:12745 config/tc-arm.c:12746
 msgid "use -march=armv5"
 msgstr "usar -march=armv5"
 
-#: config/tc-arm.c:12619 config/tc-arm.c:12620
+#: config/tc-arm.c:12747 config/tc-arm.c:12748
 msgid "use -march=armv5t"
 msgstr "usar -march=armv5t"
 
-#: config/tc-arm.c:12621 config/tc-arm.c:12622
+#: config/tc-arm.c:12749 config/tc-arm.c:12750
 msgid "use -march=armv5te"
 msgstr "usar -march=armv5te"
 
 #. Floating point variants -- don't add any more to this list either.
-#: config/tc-arm.c:12625
+#: config/tc-arm.c:12753
 msgid "use -mfpu=fpe"
 msgstr "usar -mfpu=fpe"
 
-#: config/tc-arm.c:12626
+#: config/tc-arm.c:12754
 msgid "use -mfpu=fpa10"
 msgstr "usar -mfpu=fpa10"
 
-#: config/tc-arm.c:12627
+#: config/tc-arm.c:12755
 msgid "use -mfpu=fpa11"
 msgstr "usar -mfpu=fpa11"
 
-#: config/tc-arm.c:12629
+#: config/tc-arm.c:12757
 msgid "use either -mfpu=softfpa or -mfpu=softvfp"
 msgstr "usar -mfpu=softfpa ó -mfpu=softvfp"
 
-#: config/tc-arm.c:12862
+#: config/tc-arm.c:12986
 msgid "invalid architectural extension"
 msgstr "extensión de arquitectura inválida"
 
-#: config/tc-arm.c:12876
+#: config/tc-arm.c:13000
 msgid "missing architectural extension"
 msgstr "falta la extensión de la arquitectura"
 
-#: config/tc-arm.c:12889
+#: config/tc-arm.c:13013
 #, c-format
 msgid "unknown architectural extnsion `%s'"
 msgstr "extensión de arquitectura `%s' desconocida"
 
-#: config/tc-arm.c:12913
+#: config/tc-arm.c:13037
 #, c-format
 msgid "missing cpu name `%s'"
 msgstr "falta el nombre de cpu `%s'"
 
-#: config/tc-arm.c:12929
+#: config/tc-arm.c:13062 config/tc-arm.c:13389
 #, c-format
 msgid "unknown cpu `%s'"
 msgstr "cpu `%s' desconocido"
 
-#: config/tc-arm.c:12947
+#: config/tc-arm.c:13080
 #, c-format
 msgid "missing architecture name `%s'"
 msgstr "falta el nombre de arquitectura `%s'"
 
-#: config/tc-arm.c:12964
+#: config/tc-arm.c:13097 config/tc-arm.c:13423
 #, c-format
 msgid "unknown architecture `%s'\n"
 msgstr "arquitectura `%s' desconocida\n"
 
-#: config/tc-arm.c:12980
+#: config/tc-arm.c:13113 config/tc-arm.c:13454
 #, c-format
 msgid "unknown floating point format `%s'\n"
 msgstr "formato de coma flotante `%s' desconocido\n"
 
-#: config/tc-arm.c:12996
+#: config/tc-arm.c:13129
 #, c-format
 msgid "unknown floating point abi `%s'\n"
 msgstr "abi de coma flotante `%s' desconocida\n"
 
-#: config/tc-arm.c:13012
+#: config/tc-arm.c:13145
 #, c-format
 msgid "unknown EABI `%s'\n"
 msgstr "EABI `%s' desconocida\n"
 
-#: config/tc-arm.c:13019
-msgid "<cpu name>\t  assemble for CPU <cpu name>"
-msgstr "<nombre cpu>\t  ensamblar para el CPU <nombre cpu>"
-
-#: config/tc-arm.c:13021
-msgid "<arch name>\t  assemble for architecture <arch name>"
-msgstr "<nombre arq>\t  ensamblar para la arquitectura <nombre arq>"
-
-#: config/tc-arm.c:13023
-msgid "<fpu name>\t  assemble for FPU architecture <fpu name>"
-msgstr "<nombre fpu>\t  ensamblar para la arquitectura de Unidad de Coma Flotante <nombre fpu>"
-
-#: config/tc-arm.c:13025
-msgid "<abi>\t  assemble for floating point ABI <abi>"
-msgstr "<abi>\t  ensamblar para la ABI de coma flotante <abi>"
-
-#: config/tc-arm.c:13028
-msgid "<ver>\t  assemble for eabi version <ver>"
-msgstr "<ver>\t  ensamblar para la eabi versión <ver>"
-
-#: config/tc-arm.c:13069 config/tc-arm.c:13091
-#, c-format
-msgid "option `-%c%s' is deprecated: %s"
-msgstr "la opción `-%c%s' es obsoleta: %s"
-
-#: config/tc-arm.c:13112
-#, c-format
-msgid " ARM-specific assembler options:\n"
-msgstr "Opciones de ensamblador específicas de ARM:\n"
-
-#: config/tc-arm.c:13123
-#, c-format
-msgid "  -EB                     assemble code for a big-endian cpu\n"
-msgstr "  -EB                     ensambla código para un cpu big-endian\n"
-
-#: config/tc-arm.c:13128
-#, c-format
-msgid "  -EL                     assemble code for a little-endian cpu\n"
-msgstr "  -EL                     ensambla código para un cpu little-endian\n"
-
-#: config/tc-arm.c:13270
-#, c-format
-msgid "%s: unexpected function type: %d"
-msgstr "%s: tipo de función inesperado: %d"
-
-#: config/tc-arm.c:13540
-msgid "expected 0 or 1"
-msgstr "se esperaba 0 ó 1"
-
-#: config/tc-arm.c:13545
-msgid "missing comma"
-msgstr "falta una coma"
-
-#: config/tc-arm.c:13838
-msgid "handerdata in cantunwind frame"
-msgstr "handerdata en un marco cantunwind"
-
-#: config/tc-arm.c:13855
-msgid "too many unwind opcodes for personality routine 0"
-msgstr "demasiados códigos de operación de desenredo para la rutina personality 0"
-
-#: config/tc-arm.c:13887
-msgid "too many unwind opcodes"
-msgstr "demasiados códigos de operación de desenredo"
-
-#: config/tc-arm.c:14017
-msgid "dupicate .handlerdata directive"
-msgstr "directiva .handlerdata duplicada"
-
-#: config/tc-arm.c:14071
-msgid "personality routine specified for cantunwind frame"
-msgstr "se especificó una rutina personality para el marco cantunwind"
-
-#: config/tc-arm.c:14085
-msgid "duplicate .personalityindex directive"
-msgstr "directiva .personalityindex duplicada"
-
-#: config/tc-arm.c:14094
-msgid "bad personality routine number"
-msgstr "número de rutina personality erróneo"
-
-#: config/tc-arm.c:14113
-msgid "duplicate .personality directive"
-msgstr "directiva .personality duplicada"
-
-#: config/tc-arm.c:14139 config/tc-arm.c:14261
-msgid "expected register list"
-msgstr "se esperaba una lista de registros"
-
-#: config/tc-arm.c:14217
-msgid "expected , <constant>"
-msgstr "se esperaba , <constante>"
-
-#: config/tc-arm.c:14322
-msgid "expected wr or wcgr"
-msgstr "se esperaba wr o wcgr"
-
-#: config/tc-arm.c:14343
-msgid "bad register range"
-msgstr "rango de registro erróneo"
-
-#: config/tc-arm.c:14358
-msgid "inconsistent register types"
-msgstr "tipos de registro inconsistentes"
-
-#. TODO: Maverick registers.
-#: config/tc-arm.c:14506
-msgid "unrecognised register"
-msgstr "registro no reconocido"
-
-#: config/tc-arm.c:14529
-#, c-format
-msgid "r%d not permitted in .unwind_movsp directive"
-msgstr "no se permite r%d en la directiva .unwind_movsp"
-
-#: config/tc-arm.c:14535
-msgid "unexpected .unwind_movsp directive"
-msgstr "directiva .unwind_movsp inesperada"
-
-#: config/tc-arm.c:14567
-msgid "expected #constant"
-msgstr "se esperaba #constant"
-
-#: config/tc-arm.c:14587
-msgid "stack increment must be multiple of 4"
-msgstr "el operando de pila debe ser un múltiplo de 4"
+#: config/tc-arm.c:13152
+msgid "<cpu name>\t  assemble for CPU <cpu name>"
+msgstr "<nombre cpu>\t  ensamblar para el CPU <nombre cpu>"
 
-#: config/tc-arm.c:14616
-msgid "expected <reg>, <reg>"
-msgstr "se esperaba <reg>, <reg>"
+#: config/tc-arm.c:13154
+msgid "<arch name>\t  assemble for architecture <arch name>"
+msgstr "<nombre arq>\t  ensamblar para la arquitectura <nombre arq>"
 
-#: config/tc-arm.c:14634
-msgid "register must be either sp or set by a previousunwind_movsp directive"
-msgstr "el registro debe ser sp o establecido por una directiva previousunwind_movsp"
+#: config/tc-arm.c:13156
+msgid "<fpu name>\t  assemble for FPU architecture <fpu name>"
+msgstr "<nombre fpu>\t  ensamblar para la arquitectura de Unidad de Coma Flotante <nombre fpu>"
 
-#: config/tc-arm.c:14671
-msgid "expected <offset>, <opcode>"
-msgstr "se esperaba <desplazamiento>, <códigoop>"
+#: config/tc-arm.c:13158
+msgid "<abi>\t  assemble for floating point ABI <abi>"
+msgstr "<abi>\t  ensamblar para la ABI de coma flotante <abi>"
 
-#: config/tc-arm.c:14683
-msgid "unwind opcode too long"
-msgstr "código de operación de desenredo demasiado largo"
+#: config/tc-arm.c:13161
+msgid "<ver>\t  assemble for eabi version <ver>"
+msgstr "<ver>\t  ensamblar para la eabi versión <ver>"
 
-#: config/tc-arm.c:14688
-msgid "invalid unwind opcode"
-msgstr "código de operación de desenredo inválido"
+#: config/tc-arm.c:13202 config/tc-arm.c:13224
+#, c-format
+msgid "option `-%c%s' is deprecated: %s"
+msgstr "la opción `-%c%s' es obsoleta: %s"
 
-#: config/tc-arm.c:14783
-msgid "alignments greater than 32 bytes not supported in .text sections."
-msgstr "las alineaciones más grandes que 32 bytes no tienen soporte en la sección text."
+#: config/tc-arm.c:13245
+#, c-format
+msgid " ARM-specific assembler options:\n"
+msgstr "Opciones de ensamblador específicas de ARM:\n"
+
+#: config/tc-arm.c:13256
+#, c-format
+msgid "  -EB                     assemble code for a big-endian cpu\n"
+msgstr "  -EB                     ensambla código para un cpu big-endian\n"
 
-#: config/tc-arm.h:84
-msgid "arm convert_frag\n"
-msgstr "convert_frag de arm\n"
+#: config/tc-arm.c:13261
+#, c-format
+msgid "  -EL                     assemble code for a little-endian cpu\n"
+msgstr "  -EL                     ensambla código para un cpu little-endian\n"
 
-#: config/tc-avr.c:215
+#: config/tc-avr.c:209
 #, c-format
 msgid "Known MCU names:"
 msgstr "Nombres MCU conocidos:"
 
-#: config/tc-avr.c:284
+#: config/tc-avr.c:275
 #, c-format
 msgid ""
 "AVR options:\n"
@@ -2938,7 +2722,7 @@ msgstr ""
 "                   avr5 - ATmega161, ATmega163, ATmega32, AT94K\n"
 "                   o el nombre inmediato del microcontrolador.\n"
 
-#: config/tc-avr.c:294
+#: config/tc-avr.c:285
 #, c-format
 msgid ""
 "  -mall-opcodes    accept all AVR opcodes, even if not supported by MCU\n"
@@ -2954,413 +2738,442 @@ msgstr ""
 "  -mno-wrap        rechaza las instrucciones rjmp/rcall con envoltura de 8K\n"
 "                   (por defecto para avr3, avr5)\n"
 
-#: config/tc-avr.c:342 config/tc-msp430.c:697
+#: config/tc-avr.c:329 config/tc-msp430.c:749
 #, c-format
 msgid "unknown MCU: %s\n"
 msgstr "MCU desconocido: %s\n"
 
-#: config/tc-avr.c:351
+#: config/tc-avr.c:338
 #, c-format
 msgid "redefinition of mcu type `%s' to `%s'"
 msgstr "redefinición del tipo de mcu `%s' a `%s'"
 
-#: config/tc-avr.c:402 config/tc-crx.c:490 config/tc-d10v.c:319
-#: config/tc-d30v.c:366 config/tc-mips.c:10029 config/tc-mmix.c:2297
-#: config/tc-mn10200.c:361 config/tc-msp430.c:805 config/tc-pj.c:373
-#: config/tc-ppc.c:5192 config/tc-sh.c:2972 config/tc-v850.c:1242
+#: config/tc-avr.c:385 config/tc-crx.c:491 config/tc-d10v.c:278
+#: config/tc-d30v.c:312 config/tc-mips.c:10241 config/tc-mmix.c:2264
+#: config/tc-mn10200.c:342 config/tc-msp430.c:873 config/tc-pj.c:342
+#: config/tc-ppc.c:5211 config/tc-sh.c:2986 config/tc-v850.c:1199
 msgid "bad call to md_atof"
 msgstr "llamada errónea a md_atof"
 
-#: config/tc-avr.c:465
+#: config/tc-avr.c:447
 msgid "constant value required"
 msgstr "se requiere un valor constante"
 
-#: config/tc-avr.c:468
+#: config/tc-avr.c:450
 #, c-format
 msgid "number must be less than %d"
 msgstr "el número debe ser menor que %d"
 
-#: config/tc-avr.c:520
-msgid "`,' required"
-msgstr "se requiere `,'"
-
-#: config/tc-avr.c:539
-msgid "undefined combination of operands"
-msgstr "combinación indefinida de operandos"
-
-#: config/tc-avr.c:549
-msgid "skipping two-word instruction"
-msgstr "instrucción que salta dos palabras"
-
-#: config/tc-avr.c:582 config/tc-avr.c:1274
+#: config/tc-avr.c:476 config/tc-avr.c:583
 #, c-format
 msgid "constant out of 8-bit range: %d"
 msgstr "constante fuera del rango de 8-bit: %d"
 
-#: config/tc-avr.c:636
+#: config/tc-avr.c:488 config/tc-d10v.c:498 config/tc-d30v.c:490
+#: config/tc-h8300.c:451 config/tc-mcore.c:665 config/tc-mmix.c:489
+#: config/tc-mn10200.c:1078 config/tc-mn10300.c:1820 config/tc-msp430.c:457
+#: config/tc-or32.c:306 config/tc-ppc.c:2382 config/tc-s390.c:1220
+#: config/tc-sh64.c:2213 config/tc-sh.c:1272 config/tc-v850.c:1952
+#: config/tc-z8k.c:328
+msgid "missing operand"
+msgstr "operando faltante"
+
+#: config/tc-avr.c:536 read.c:3345
+msgid "illegal expression"
+msgstr "expresión ilegal"
+
+#: config/tc-avr.c:562 config/tc-avr.c:1282
+msgid "`)' required"
+msgstr "se requiere `)'"
+
+#: config/tc-avr.c:638
 msgid "register r16-r23 required"
 msgstr "se requiere los registros r16-r23"
 
-#: config/tc-avr.c:642
+#: config/tc-avr.c:644
 msgid "register number above 15 required"
 msgstr "se requiere un número de registro superior a 15"
 
-#: config/tc-avr.c:648
+#: config/tc-avr.c:650
 msgid "even register number required"
 msgstr "se requieren números de registro par"
 
-#: config/tc-avr.c:654
+#: config/tc-avr.c:656
 msgid "register r24, r26, r28 or r30 required"
 msgstr "se requieren los registros r24, r26, r28 o r30"
 
-#: config/tc-avr.c:660
+#: config/tc-avr.c:662
 msgid "register name or number from 0 to 31 required"
 msgstr "se requiere un nombre de registro o un número del 0 al 31"
 
-#: config/tc-avr.c:678
+#: config/tc-avr.c:680
 msgid "pointer register (X, Y or Z) required"
 msgstr "se requiere un registro puntero (X, Y o Z)"
 
-#: config/tc-avr.c:685
+#: config/tc-avr.c:687
 msgid "cannot both predecrement and postincrement"
 msgstr "no se puede predecrementar y postincrementar"
 
-#: config/tc-avr.c:693
+#: config/tc-avr.c:695
 msgid "addressing mode not supported"
 msgstr "el modo de direccionamiento no tiene soporte"
 
-#: config/tc-avr.c:699
+#: config/tc-avr.c:701
 msgid "can't predecrement"
 msgstr "no se puede predecrementar"
 
-#: config/tc-avr.c:702
+#: config/tc-avr.c:704
 msgid "pointer register Z required"
 msgstr "se requiere el registro puntero Z"
 
-#: config/tc-avr.c:720
+#: config/tc-avr.c:722
 msgid "pointer register (Y or Z) required"
 msgstr "se requiere un registro puntero (Y o Z)"
 
-#: config/tc-avr.c:824
+#: config/tc-avr.c:826
 #, c-format
 msgid "unknown constraint `%c'"
 msgstr "restricción `%c' desconocida"
 
-#: config/tc-avr.c:918 config/tc-avr.c:934 config/tc-avr.c:1056
-#: config/tc-msp430.c:1899 config/tc-msp430.c:1917
+#: config/tc-avr.c:878
+msgid "`,' required"
+msgstr "se requiere `,'"
+
+#: config/tc-avr.c:896
+msgid "undefined combination of operands"
+msgstr "combinación indefinida de operandos"
+
+#: config/tc-avr.c:905
+msgid "skipping two-word instruction"
+msgstr "instrucción que salta dos palabras"
+
+#: config/tc-avr.c:997 config/tc-avr.c:1013 config/tc-avr.c:1135
+#: config/tc-msp430.c:2012 config/tc-msp430.c:2030
 #, c-format
 msgid "odd address operand: %ld"
 msgstr "operando de direccón impar: %ld"
 
-#: config/tc-avr.c:926 config/tc-avr.c:945 config/tc-avr.c:967
-#: config/tc-avr.c:974 config/tc-avr.c:981 config/tc-d10v.c:586
-#: config/tc-d30v.c:656 config/tc-msp430.c:1907 config/tc-msp430.c:1922
-#: config/tc-msp430.c:1932
+#: config/tc-avr.c:1005 config/tc-avr.c:1024 config/tc-avr.c:1046
+#: config/tc-avr.c:1053 config/tc-avr.c:1060 config/tc-d10v.c:538
+#: config/tc-d30v.c:589 config/tc-msp430.c:2020 config/tc-msp430.c:2035
+#: config/tc-msp430.c:2045
 #, c-format
 msgid "operand out of range: %ld"
 msgstr "operando fuera de rango: %ld"
 
-#: config/tc-avr.c:1065 config/tc-d10v.c:1791 config/tc-d30v.c:1958
-#: config/tc-msp430.c:1950
+#: config/tc-avr.c:1144 config/tc-d10v.c:1622 config/tc-d30v.c:2060
+#: config/tc-msp430.c:2063
 #, c-format
 msgid "line %d: unknown relocation type: 0x%x"
 msgstr "línea %d: tipo de reubicación desconocido: 0x%x"
 
-#: config/tc-avr.c:1079
+#: config/tc-avr.c:1158
 msgid "only constant expression allowed"
 msgstr "sólo se permite una expresión constante"
 
-#: config/tc-avr.c:1115 config/tc-d10v.c:1657 config/tc-d30v.c:1791
-#: config/tc-mn10200.c:1262 config/tc-mn10300.c:2308 config/tc-msp430.c:1986
-#: config/tc-or32.c:1587 config/tc-ppc.c:6013 config/tc-v850.c:2274
+#. xgettext:c-format.
+#: config/tc-avr.c:1192 config/tc-bfin.c:689 config/tc-d10v.c:1494
+#: config/tc-d30v.c:1804 config/tc-mn10200.c:814 config/tc-mn10300.c:2308
+#: config/tc-msp430.c:2098 config/tc-or32.c:1019 config/tc-ppc.c:6064
+#: config/tc-v850.c:2190
 #, c-format
 msgid "reloc %d not supported by object file format"
 msgstr "la reubicación %d no tiene soporte por el formato del fichero objeto"
 
-#: config/tc-avr.c:1139 config/tc-d10v.c:1248 config/tc-d10v.c:1262
-#: config/tc-h8300.c:1887 config/tc-h8500.c:1106 config/tc-mcore.c:939
-#: config/tc-msp430.c:1769 config/tc-pj.c:282 config/tc-sh.c:2425
-#: config/tc-z8k.c:1200
+#: config/tc-avr.c:1215 config/tc-d10v.c:1782 config/tc-d10v.c:1796
+#: config/tc-h8300.c:1868 config/tc-mcore.c:884 config/tc-msp430.c:1862
+#: config/tc-pj.c:254 config/tc-sh.c:2457 config/tc-z8k.c:1194
 msgid "can't find opcode "
 msgstr "no se puede encontrar el código de operación "
 
-#: config/tc-avr.c:1156
+#: config/tc-avr.c:1232
 #, c-format
 msgid "illegal opcode %s for mcu %s"
 msgstr "código de operación %s ilegal para el mcu %s"
 
-#: config/tc-avr.c:1164
+#: config/tc-avr.c:1241
 msgid "garbage at end of line"
 msgstr "basura al final de la línea"
 
-#: config/tc-avr.c:1228 read.c:3203
-msgid "illegal expression"
-msgstr "expresión ilegal"
-
-#: config/tc-avr.c:1254 config/tc-avr.c:1318
-msgid "`)' required"
-msgstr "se requiere `)'"
-
-#: config/tc-avr.c:1346 config/tc-avr.c:1353
+#: config/tc-avr.c:1309 config/tc-avr.c:1316
 #, c-format
 msgid "illegal %srelocation size: %d"
 msgstr "%s ilegal tamaño de reubicación: %d"
 
-#: config/tc-cris.c:540 config/tc-m68hc11.c:2794
+#: config/tc-bfin.c:263
+#, c-format
+msgid " BFIN specific command line options:\n"
+msgstr " Opciones de línea de comando específicas de BFIN:\n"
+
+#: config/tc-bfin.c:646 config/tc-fr30.c:358 config/tc-frv.c:1600
+#: config/tc-i960.c:1756 config/tc-ip2k.c:371 config/tc-m32c.c:912
+#: config/tc-m32r.c:2143 config/tc-openrisc.c:376 config/tc-xstormy16.c:631
+msgid "Bad call to md_atof()"
+msgstr "Llamada errónea a md_atof()"
+
+#: config/tc-cris.c:532 config/tc-m68hc11.c:2794
 #, c-format
 msgid "internal inconsistency problem in %s: fr_symbol %lx"
 msgstr "problema de inconsistencia interna en %s: fr_symbol %lx"
 
-#: config/tc-cris.c:544 config/tc-m68hc11.c:2798 config/tc-msp430.c:2177
+#: config/tc-cris.c:536 config/tc-m68hc11.c:2798 config/tc-msp430.c:2289
 #, c-format
 msgid "internal inconsistency problem in %s: resolved symbol"
 msgstr "problema de inconsistencia interna en %s: símbolo resuelto"
 
-#: config/tc-cris.c:554 config/tc-m68hc11.c:2804
+#: config/tc-cris.c:546 config/tc-m68hc11.c:2804
 #, c-format
 msgid "internal inconsistency problem in %s: fr_subtype %d"
 msgstr "problema de inconsistencia interna en %s: fr_subtype %d"
 
-#: config/tc-cris.c:885
+#: config/tc-cris.c:872
 msgid "Relaxation to long branches for .arch common_v10_v32 not implemented"
 msgstr "La relajación a grandes ramificaciones para .arch common_v10_v32 no está implementada"
 
-#: config/tc-cris.c:915
+#: config/tc-cris.c:902
 msgid "Complicated LAPC target operand is not a multiple of two.  Use LAPC.D"
 msgstr "El operando de objetivo complicado LAPC no es un múltiplo de dos.  Use LAPC.D"
 
-#: config/tc-cris.c:920
+#: config/tc-cris.c:907
 #, c-format
 msgid "Internal error found in md_convert_frag: offset %ld.  Please report this."
 msgstr "Se encontró un error interno en md_convert_frag: desplazamiento %ld.  Por favor repórtelo."
 
-#: config/tc-cris.c:945
+#: config/tc-cris.c:932
 #, c-format
 msgid "internal inconsistency in %s: bdapq no symbol"
 msgstr "inconsistencia interna en %s: bdapq no es un símbolo"
 
-#: config/tc-cris.c:958
+#: config/tc-cris.c:945
 #, c-format
 msgid "internal inconsistency in %s: bdap.w with no symbol"
 msgstr "inconsistencia interna en %s: bdap.w sin algún símbolo"
 
-#: config/tc-cris.c:982
+#: config/tc-cris.c:969
 msgid "section alignment must be >= 4 bytes to check MULS/MULU safeness"
 msgstr "la alineación de la sección debe ser >= 4 bytes para revisar la seguridad de MULS/MULU"
 
-#: config/tc-cris.c:991
+#: config/tc-cris.c:978
 msgid "dangerous MULS/MULU location; give it higher alignment"
 msgstr "ubicación de MULS/MULU peligrosa; déles una alineación superior"
 
-#: config/tc-cris.c:1103
+#: config/tc-cris.c:1083
 msgid "Out-of-range .word offset handling is not implemented for .arch common_v10_v32"
 msgstr "El manejo del desplazamiento .word fuera de rango no está implementado para .arch common_v10_v32"
 
-#: config/tc-cris.c:1168 config/tc-crx.c:581 config/tc-crx.c:608
-#: config/tc-crx.c:626
+#: config/tc-cris.c:1148 config/tc-crx.c:582 config/tc-crx.c:609
+#: config/tc-crx.c:627
 msgid "Virtual memory exhausted"
 msgstr "Memoria agotada"
 
-#: config/tc-cris.c:1201 config/tc-crx.c:591
+#: config/tc-cris.c:1182 config/tc-crx.c:592
 #, c-format
 msgid "Can't hash `%s': %s\n"
 msgstr "No se puede dispersar `%s': %s\n"
 
-#: config/tc-cris.c:1202 config/tc-crx.c:592
+#: config/tc-cris.c:1183 config/tc-crx.c:593
 msgid "(unknown reason)"
 msgstr "(razón desconocida)"
 
-#: config/tc-cris.c:1206
+#: config/tc-cris.c:1187
 #, c-format
 msgid "Buggy opcode: `%s' \"%s\"\n"
 msgstr "Código de operación defectuoso: `%s' \"%s\"\n"
 
-#: config/tc-cris.c:1621
+#: config/tc-cris.c:1493 config/tc-cris.c:1501 config/tc-crx.c:2029
+#: config/tc-dlx.c:685 config/tc-hppa.c:1625 config/tc-i860.c:492
+#: config/tc-i860.c:509 config/tc-i860.c:989 config/tc-sparc.c:1417
+#: config/tc-sparc.c:1425
+#, c-format
+msgid "Unknown opcode: `%s'"
+msgstr "Código de operación desconocido: `%s'"
+
+#: config/tc-cris.c:1599
 #, c-format
 msgid "Immediate value not in 5 bit unsigned range: %ld"
 msgstr "El valor inmediato no está en el rango de 5 bit sin signo: %ld"
 
-#: config/tc-cris.c:1637
+#: config/tc-cris.c:1615
 #, c-format
 msgid "Immediate value not in 4 bit unsigned range: %ld"
 msgstr "El valor inmediato no está en el rango de 4 bit sin signo: %ld"
 
-#: config/tc-cris.c:1689
+#: config/tc-cris.c:1667
 #, c-format
 msgid "Immediate value not in 6 bit range: %ld"
 msgstr "El valor inmediato no está en el rango de 6 bit: %ld"
 
-#: config/tc-cris.c:1704
+#: config/tc-cris.c:1682
 #, c-format
 msgid "Immediate value not in 6 bit unsigned range: %ld"
 msgstr "El valor inmediato no está en el rango de 6 bit sin signo: %ld"
 
 #. Others have a generic warning.
-#: config/tc-cris.c:1812
+#: config/tc-cris.c:1790
 #, c-format
 msgid "Unimplemented register `%s' specified"
 msgstr "Se especificó el registro sin implementar `%s'"
 
 #. We've come to the end of instructions with this
 #. opcode, so it must be an error.
-#: config/tc-cris.c:2055
+#: config/tc-cris.c:2033
 msgid "Illegal operands"
 msgstr "Operandos ilegales"
 
-#: config/tc-cris.c:2096 config/tc-cris.c:2136
+#: config/tc-cris.c:2074 config/tc-cris.c:2114
 #, c-format
 msgid "Immediate value not in 8 bit range: %ld"
 msgstr "El valor inmediato no está en el rango de 8 bit: %ld"
 
-#: config/tc-cris.c:2106 config/tc-cris.c:2157
+#: config/tc-cris.c:2084 config/tc-cris.c:2135
 #, c-format
 msgid "Immediate value not in 16 bit range: %ld"
 msgstr "El valor inmediato no está en el rango de 16 bit: %ld"
 
-#: config/tc-cris.c:2141
+#: config/tc-cris.c:2119
 #, c-format
 msgid "Immediate value not in 8 bit signed range: %ld"
 msgstr "El valor inmediato no está en el rango de 8 bit con signo: %ld"
 
-#: config/tc-cris.c:2146
+#: config/tc-cris.c:2124
 #, c-format
 msgid "Immediate value not in 8 bit unsigned range: %ld"
 msgstr "El valor inmediato no está en el rango de 8 bit sin signo: %ld"
 
-#: config/tc-cris.c:2162
+#: config/tc-cris.c:2140
 #, c-format
 msgid "Immediate value not in 16 bit signed range: %ld"
 msgstr "El valor inmediato no está en el rango de 16 bit con signo: %ld"
 
-#: config/tc-cris.c:2167
+#: config/tc-cris.c:2145
 #, c-format
 msgid "Immediate value not in 16 bit unsigned range: %ld"
 msgstr "El valor inmediato no está en el rango de 16 bit sin signo: %ld"
 
-#: config/tc-cris.c:2189
+#: config/tc-cris.c:2167
 msgid "PIC relocation size does not match operand size"
 msgstr "el tamaño de la reubicación PIC no coincide con el tamaño del operando"
 
-#: config/tc-cris.c:3355
+#: config/tc-cris.c:3304
 msgid "Calling gen_cond_branch_32 for .arch common_v10_v32\n"
 msgstr "Se llama a gen_cond_branch_32 para .arch common_v10_v32\n"
 
-#: config/tc-cris.c:3359
+#: config/tc-cris.c:3308
 msgid "32-bit conditional branch generated"
 msgstr "se generó una ramificación condicional de 32-bit"
 
-#: config/tc-cris.c:3418
+#: config/tc-cris.c:3367
 msgid "Complex expression not supported"
 msgstr "Las expresiones complejas no tienen soporte"
 
 #. FIXME:  Is this function mentioned in the internals.texi manual?  If
 #. not, add it.
-#: config/tc-cris.c:3546
+#: config/tc-cris.c:3490
 msgid "Bad call to md_atof () - floating point formats are not supported"
 msgstr "Llamada errónea a md_atof () - no tienen soporte los formatos de coma flotante"
 
-#: config/tc-cris.c:3592
+#: config/tc-cris.c:3531
 msgid "PC-relative relocation must be trivially resolved"
 msgstr "La reubicación relativa al PC debe ser resuelta trivialmente"
 
-#: config/tc-cris.c:3645
+#: config/tc-cris.c:3584
 #, c-format
 msgid "Value not in 16 bit range: %ld"
 msgstr "El valor no está en el rango de 16 bit: %ld"
 
-#: config/tc-cris.c:3656
+#: config/tc-cris.c:3595
 #, c-format
 msgid "Value not in 16 bit signed range: %ld"
 msgstr "El valor no está en el rango de 16 bit con signo: %ld"
 
-#: config/tc-cris.c:3667
+#: config/tc-cris.c:3606
 #, c-format
 msgid "Value not in 8 bit range: %ld"
 msgstr "El valor no está en el rango de 8 bit: %ld"
 
-#: config/tc-cris.c:3675
+#: config/tc-cris.c:3614
 #, c-format
 msgid "Value not in 8 bit signed range: %ld"
 msgstr "El valor no está en el rango de 8 bit con signo: %ld"
 
-#: config/tc-cris.c:3686
+#: config/tc-cris.c:3625
 #, c-format
 msgid "Value not in 4 bit unsigned range: %ld"
 msgstr "El valor no está en el rango de 4 bit sin signo: %ld"
 
-#: config/tc-cris.c:3694
+#: config/tc-cris.c:3633
 #, c-format
 msgid "Value not in 5 bit unsigned range: %ld"
 msgstr "El valor no está en el rango de 5 bit sin signo: %ld"
 
-#: config/tc-cris.c:3702
+#: config/tc-cris.c:3641
 #, c-format
 msgid "Value not in 6 bit range: %ld"
 msgstr "El valor no está en el rango de 6 bit: %ld"
 
-#: config/tc-cris.c:3710
+#: config/tc-cris.c:3649
 #, c-format
 msgid "Value not in 6 bit unsigned range: %ld"
 msgstr "El valor no está en el rango de 6 bit sin signo: %ld"
 
-#: config/tc-cris.c:3758
+#: config/tc-cris.c:3695
 #, c-format
 msgid "Please use --help to see usage and options for this assembler.\n"
 msgstr "Por favor utilice --help para ver el modo de empleo y opciones para este ensamblador.\n"
 
-#: config/tc-cris.c:3770
+#: config/tc-cris.c:3707
 msgid "--no-underscore is invalid with a.out format"
 msgstr "--no-underscore es inválido con el formato a.out"
 
-#: config/tc-cris.c:3790
+#: config/tc-cris.c:3727
 #, c-format
 msgid "invalid <arch> in --march=<arch>: %s"
 msgstr "arquitectura <arq> en --march=<arq> inválida: %s"
 
-#: config/tc-cris.c:3888
+#: config/tc-cris.c:3821
 msgid "Semantics error.  This type of operand can not be relocated, it must be an assembly-time constant"
 msgstr "Error de semántica. Este tipo de operando no se puede reubicar, debe ser una constante en el momento de ensamblado"
 
-#: config/tc-cris.c:3937
+#: config/tc-cris.c:3870
 #, c-format
 msgid "Cannot generate relocation type for symbol %s, code %s"
 msgstr "No se puede generar el tipo de reubicación para el símbolo %s, código %s"
 
 #. The messages are formatted to line up with the generic options.
-#: config/tc-cris.c:3951
+#: config/tc-cris.c:3883
 #, c-format
 msgid "CRIS-specific options:\n"
 msgstr "Opciones específicas de CRIS:\n"
 
-#: config/tc-cris.c:3953
+#: config/tc-cris.c:3885
 msgid "  -h, -H                  Don't execute, print this help text.  Deprecated.\n"
 msgstr "  -h, -H                  No ejecutar, muestra este texto de ayuda.  Deprecado.\n"
 
-#: config/tc-cris.c:3955
+#: config/tc-cris.c:3887
 msgid "  -N                      Warn when branches are expanded to jumps.\n"
 msgstr "  -N                      Avisar cuando las ramificaciones se expanden a saltos.\n"
 
-#: config/tc-cris.c:3957
+#: config/tc-cris.c:3889
 msgid "  --underscore            User symbols are normally prepended with underscore.\n"
 msgstr "  --underscore            Los símbolos de usuario generalmente se preceden con subrayado.\n"
 
-#: config/tc-cris.c:3959
+#: config/tc-cris.c:3891
 msgid "                          Registers will not need any prefix.\n"
 msgstr "                          Los registros no necesitarán ningún prefijo.\n"
 
-#: config/tc-cris.c:3961
+#: config/tc-cris.c:3893
 msgid "  --no-underscore         User symbols do not have any prefix.\n"
 msgstr "  --no-underscore         Los símbolos de usuario no tienen ningún prefijo.\n"
 
-#: config/tc-cris.c:3963
+#: config/tc-cris.c:3895
 msgid "                          Registers will require a `$'-prefix.\n"
 msgstr "                          Los registros requerirán un prefijo `$'.\n"
 
-#: config/tc-cris.c:3965
+#: config/tc-cris.c:3897
 msgid "  --pic\t\t\tEnable generation of position-independent code.\n"
 msgstr "  --pic\t\t\tActiva la generación de código independiente de posición.\n"
 
-#: config/tc-cris.c:3967
+#: config/tc-cris.c:3899
 msgid ""
 "  --march=<arch>\t\tGenerate code for <arch>.  Valid choices for <arch>\n"
 "\t\t\t\tare v0_v10, v10, v32 and common_v10_v32.\n"
@@ -3368,227 +3181,227 @@ msgstr ""
 "  --march=<arq>\t\tGenera código para <arq>.  Las opciones válidas para <arq>\n"
 "\t\t\t\tson v0_v10, v10, v32 y common_v10_v32.\n"
 
-#: config/tc-cris.c:3991
+#: config/tc-cris.c:3920
 msgid "Invalid relocation"
 msgstr "Reubicación inválida"
 
-#: config/tc-cris.c:4029
+#: config/tc-cris.c:3957
 msgid "Invalid pc-relative relocation"
 msgstr "Reubicación relativa a pc inválida"
 
-#: config/tc-cris.c:4078
+#: config/tc-cris.c:4002
 #, c-format
 msgid "Adjusted signed .word (%ld) overflows: `switch'-statement too large."
 msgstr "El .word (%ld) con signo ajustado se desborda: la sentencia `switch' es demasiado grande."
 
-#: config/tc-cris.c:4105
+#: config/tc-cris.c:4032
 #, c-format
 msgid ".syntax %s requires command-line option `--underscore'"
 msgstr ".syntax %s requiere de la opción de línea de comandos `--underscore'"
 
-#: config/tc-cris.c:4114
+#: config/tc-cris.c:4041
 #, c-format
 msgid ".syntax %s requires command-line option `--no-underscore'"
 msgstr ".syntax %s requiere de la opción de línea de comandos `--no-underscore'"
 
-#: config/tc-cris.c:4152
+#: config/tc-cris.c:4078
 msgid "Unknown .syntax operand"
 msgstr "Operando .syntax inválido"
 
-#: config/tc-cris.c:4163
+#: config/tc-cris.c:4088
 msgid "Pseudodirective .file is only valid when generating ELF"
 msgstr "La pseudodirectiva .file es válida solamente cuando se genera ELF"
 
-#: config/tc-cris.c:4176
+#: config/tc-cris.c:4100
 msgid "Pseudodirective .loc is only valid when generating ELF"
 msgstr "La pseudodirectiva .loc es válida solamente cuando se genera ELF"
 
-#: config/tc-cris.c:4322
+#: config/tc-cris.c:4243
 msgid "unknown operand to .arch"
 msgstr "operando desconocido para .arch"
 
-#: config/tc-cris.c:4331
+#: config/tc-cris.c:4252
 msgid ".arch <arch> requires a matching --march=... option"
 msgstr ".arch <arq> requiere una opción --march=... coincidente"
 
-#: config/tc-crx.c:343 config/tc-mn10200.c:1249 write.c:2649
+#: config/tc-crx.c:344 config/tc-mn10200.c:801 write.c:2209
 #, c-format
 msgid "can't resolve `%s' {%s section} - `%s' {%s section}"
 msgstr "no se puede resolver `%s' {sección %s} - `%s' {sección %s}"
 
-#: config/tc-crx.c:359
+#: config/tc-crx.c:360
 #, c-format
 msgid "internal error: reloc %d (`%s') not supported by object file format"
 msgstr "error interno: la reubicación %d (`%s') no tiene soporte por el formato del fichero objeto"
 
-#: config/tc-crx.c:618 config/tc-crx.c:636 config/tc-i386.c:938
-#: config/tc-i386.c:961 config/tc-m68k.c:4193
+#: config/tc-crx.c:619 config/tc-crx.c:637 config/tc-i386.c:953
+#: config/tc-i386.c:976 config/tc-m68k.c:4149
 #, c-format
 msgid "Internal Error:  Can't hash %s: %s"
 msgstr "Error Interno:  No se puede dispersar %s: %s"
 
 #. Missing or bad expr becomes absolute 0.
-#: config/tc-crx.c:664 config/tc-i386.c:4111
+#: config/tc-crx.c:665 config/tc-i386.c:4259
 #, c-format
 msgid "missing or invalid displacement expression `%s' taken as 0"
 msgstr "la expresión de desubicación faltante o inválida `%s' se toma como 0"
 
-#: config/tc-crx.c:802 config/tc-crx.c:822 config/tc-crx.c:837
+#: config/tc-crx.c:803 config/tc-crx.c:823 config/tc-crx.c:838
 #, c-format
 msgid "Illegal register `%s' in Instruction `%s'"
 msgstr "Registro `%s' ilegal en la Instruction `%s'"
 
-#: config/tc-crx.c:865
+#: config/tc-crx.c:866
 #, c-format
 msgid "Illegal Scale - `%d'"
 msgstr "Scale ilegal - `%d'"
 
-#: config/tc-crx.c:981
+#: config/tc-crx.c:982
 #, c-format
 msgid "Illegal operands (whitespace): `%s'"
 msgstr "Operandos ilegales (espacios en blanco): `%s'"
 
-#: config/tc-crx.c:993 config/tc-crx.c:1000 config/tc-crx.c:1017
-#: config/tc-crx.c:1803
+#: config/tc-crx.c:994 config/tc-crx.c:1001 config/tc-crx.c:1018
+#: config/tc-crx.c:1804
 #, c-format
 msgid "Missing matching brackets : `%s'"
 msgstr "Faltan las llaves coincidentes : `%s'"
 
-#: config/tc-crx.c:1043
+#: config/tc-crx.c:1044
 #, c-format
 msgid "Unknown exception: `%s'"
 msgstr "Excepción desconocida: `%s'"
 
-#: config/tc-crx.c:1139
+#: config/tc-crx.c:1140
 #, c-format
 msgid "Illegal `cinv' parameter: `%c'"
 msgstr "Parámetro `cinv' ilegal: `%c'"
 
-#: config/tc-crx.c:1172
+#: config/tc-crx.c:1173
 #, c-format
 msgid "Unknown register: `%d'"
-msgstr "Registro desconicido: `%d'"
+msgstr "Registro desconocido: `%d'"
 
 #. Issue a error message when register is illegal.
-#: config/tc-crx.c:1180
+#: config/tc-crx.c:1181
 #, c-format
 msgid "Illegal register (`%s') in Instruction: `%s'"
 msgstr "Registro ilegal (`%s') en Instruction: `%s'"
 
-#: config/tc-crx.c:1309
+#: config/tc-crx.c:1310
 #, c-format
 msgid "Illegal Co-processor register in Instruction `%s' "
 msgstr "Registro de co-procesador ilegal en Instruction `%s'"
 
-#: config/tc-crx.c:1316
+#: config/tc-crx.c:1317
 #, c-format
 msgid "Illegal Co-processor special register in Instruction `%s' "
 msgstr "Registro especial de co-procesador ilegal en Instruction `%s'"
 
-#: config/tc-crx.c:1615
+#: config/tc-crx.c:1616
 msgid "Incorrect number of operands"
 msgstr "Número incorrecto de operandos"
 
-#: config/tc-crx.c:1617
+#: config/tc-crx.c:1618
 #, c-format
 msgid "Illegal type of operand (arg %d)"
 msgstr "Tipo de operando ilegal (arg %d)"
 
-#: config/tc-crx.c:1623
+#: config/tc-crx.c:1624
 #, c-format
 msgid "Operand out of range (arg %d)"
 msgstr "Operando fuera de rango (arg %d)"
 
-#: config/tc-crx.c:1626
+#: config/tc-crx.c:1627
 #, c-format
 msgid "Operand has odd displacement (arg %d)"
 msgstr "El operando tiene un desplazamiento impar (arg %d)"
 
-#: config/tc-crx.c:1629
+#: config/tc-crx.c:1630
 #, c-format
 msgid "Invalid DISPU4 operand value (arg %d)"
 msgstr "Valor de operando DISPU4 inválido (arg %d)"
 
-#: config/tc-crx.c:1632
+#: config/tc-crx.c:1633
 #, c-format
 msgid "Invalid CST4 operand value (arg %d)"
 msgstr "Valor de operando CST4 inválido (arg %d)"
 
-#: config/tc-crx.c:1635
+#: config/tc-crx.c:1636
 #, c-format
 msgid "Operand value is not within upper 64 KB (arg %d)"
 msgstr "El valor del operando no está en los 64 KB superiores (arg %d)"
 
-#: config/tc-crx.c:1639 config/tc-crx.c:1670
+#: config/tc-crx.c:1640 config/tc-crx.c:1671
 #, c-format
 msgid "Illegal operand (arg %d)"
 msgstr "Operando ilegal (arg %d)"
 
-#: config/tc-crx.c:1701 config/tc-crx.c:1718
+#: config/tc-crx.c:1702 config/tc-crx.c:1719
 #, c-format
 msgid "Same src/dest register is used (`r%d'), result is undefined"
 msgstr "Se usa el mismo registro fuente/destino (`r%d'), el resultado es indefinido"
 
-#: config/tc-crx.c:1710
+#: config/tc-crx.c:1711
 #, c-format
 msgid "`%s' has undefined result"
 msgstr "`%s' tiene un resultado indefinido"
 
-#: config/tc-crx.c:1772
+#: config/tc-crx.c:1773
 msgid "Invalid Register in Register List"
 msgstr "Registro inválido en la Lista de Registros"
 
-#: config/tc-crx.c:1826
+#: config/tc-crx.c:1827
 #, c-format
 msgid "Illegal register `%s' in cop-register list"
 msgstr "Registro ilegal `%s' en la lista de registros de coprocesador"
 
-#: config/tc-crx.c:1834
+#: config/tc-crx.c:1835
 #, c-format
 msgid "Illegal register `%s' in cop-special-register list"
 msgstr "Registro ilegal `%s' en la lista especial de registros de coprocesador"
 
-#: config/tc-crx.c:1853
+#: config/tc-crx.c:1854
 #, c-format
 msgid "Illegal register `%s' in user register list"
 msgstr "Registro ilegal `%s' en la lista de registros de usuario"
 
-#: config/tc-crx.c:1872
+#: config/tc-crx.c:1873
 #, c-format
 msgid "Illegal register `%s' in register list"
 msgstr "Registro ilegal `%s' en la lista de registros"
 
-#: config/tc-crx.c:1878
+#: config/tc-crx.c:1879
 #, c-format
 msgid "Maximum %d bits may be set in `mask16' operand"
 msgstr "Se pueden establecer %d bits como máximo en el operando mask16"
 
-#: config/tc-crx.c:1887
+#: config/tc-crx.c:1888
 #, c-format
 msgid "rest of line ignored; first ignored character is `%c'"
 msgstr "se ignora el resto de la línea; el primer carácter ignorado es `%c'"
 
-#: config/tc-crx.c:1895
+#: config/tc-crx.c:1896
 #, c-format
 msgid "Illegal `mask16' operand, operation is undefined - `%s'"
 msgstr "Operando `mask16' ilegal, la operación está indefinida - `%s'"
 
 #. HI can't be specified without LO (and vise-versa).
-#: config/tc-crx.c:1901
+#: config/tc-crx.c:1902
 msgid "HI/LO registers should be specified together"
 msgstr "Los registros HI/LO se deben especificar juntos"
 
-#: config/tc-crx.c:1907
+#: config/tc-crx.c:1908
 msgid "HI/LO registers should be specified without additional registers"
 msgstr "Los registros HI/LO se deben especificar sin registros adicionales"
 
 #. Give an error if a frag containing code is not aligned to a 2-byte
 #. boundary.
-#: config/tc-crx.c:1992 config/tc-crx.h:78
+#: config/tc-crx.c:1993 config/tc-crx.h:76
 msgid "instruction address is not a multiple of 2"
 msgstr "la dirección de la instrucción no es un múltiplo de 2"
 
-#: config/tc-d10v.c:252
+#: config/tc-d10v.c:217
 #, c-format
 msgid ""
 "D10V options:\n"
@@ -3605,140 +3418,140 @@ msgstr ""
 "--no-gstabs-packing     Si se especifica --gstabs, no empaqueta juntas\n"
 "                        las instrucciones adjacentes.\n"
 
-#: config/tc-d10v.c:543 config/tc-d30v.c:550 config/tc-mn10200.c:937
-#: config/tc-mn10300.c:1817 config/tc-ppc.c:2365 config/tc-s390.c:1216
-#: config/tc-tic80.c:276 config/tc-v850.c:2031
+#: config/tc-d10v.c:496 config/tc-d30v.c:488 config/tc-mn10200.c:1075
+#: config/tc-mn10300.c:1817 config/tc-ppc.c:2380 config/tc-s390.c:1218
+#: config/tc-v850.c:1949
 msgid "illegal operand"
 msgstr "operando ilegal"
 
-#: config/tc-d10v.c:657
+#: config/tc-d10v.c:608
 msgid "operand is not an immediate"
 msgstr "el operando no es un inmediato"
 
-#: config/tc-d10v.c:675
+#: config/tc-d10v.c:626
 #, c-format
 msgid "operand out of range: %lu"
 msgstr "operando fuera de rango: %lu"
 
-#: config/tc-d10v.c:736
+#: config/tc-d10v.c:684
 msgid "Instruction must be executed in parallel with another instruction."
 msgstr "La instrucción debe ser ejecutada en paralelo con otra instrucción."
 
-#: config/tc-d10v.c:792
+#: config/tc-d10v.c:738 config/tc-d10v.c:746
+#, c-format
+msgid "packing conflict: %s must dispatch sequentially"
+msgstr "conflicto de empaquetado: %s debe despachar secuencialmente"
+
+#: config/tc-d10v.c:845
+#, c-format
+msgid "resource conflict (R%d)"
+msgstr "conflicto de recurso (R%d)"
+
+#: config/tc-d10v.c:848
+#, c-format
+msgid "resource conflict (A%d)"
+msgstr "conflicto de recurso (A%d)"
+
+#: config/tc-d10v.c:850
+msgid "resource conflict (PSW)"
+msgstr "conflicto de recurso (PSW)"
+
+#: config/tc-d10v.c:852
+msgid "resource conflict (C flag)"
+msgstr "conflicto de recurso (opción C)"
+
+#: config/tc-d10v.c:854
+msgid "resource conflict (F flag)"
+msgstr "conflicto de recurso (opción F)"
+
+#: config/tc-d10v.c:1004
 msgid "Instruction must be executed in parallel"
 msgstr "La instrucción debe ser ejecutada en paralelo"
 
-#: config/tc-d10v.c:795
+#: config/tc-d10v.c:1007
 msgid "Long instructions may not be combined."
 msgstr "Las instrucciones long no se pueden combinar."
 
-#: config/tc-d10v.c:828
+#: config/tc-d10v.c:1040
 msgid "One of these instructions may not be executed in parallel."
 msgstr "Una de estas instrucciones no se puede ejecutar en paralelo."
 
-#: config/tc-d10v.c:832 config/tc-d30v.c:877
+#: config/tc-d10v.c:1044 config/tc-d30v.c:1071
 msgid "Two IU instructions may not be executed in parallel"
 msgstr "Dos instrucciones IU no se pueden ejecutar en paralelo"
 
-#: config/tc-d10v.c:834 config/tc-d10v.c:842 config/tc-d10v.c:856
-#: config/tc-d10v.c:871 config/tc-d30v.c:878 config/tc-d30v.c:887
+#: config/tc-d10v.c:1046 config/tc-d10v.c:1054 config/tc-d10v.c:1068
+#: config/tc-d10v.c:1083 config/tc-d30v.c:1072 config/tc-d30v.c:1081
 msgid "Swapping instruction order"
 msgstr "Intercambiando el orden de la instrucción"
 
-#: config/tc-d10v.c:840 config/tc-d30v.c:884
+#: config/tc-d10v.c:1052 config/tc-d30v.c:1078
 msgid "Two MU instructions may not be executed in parallel"
 msgstr "Dos instrucciones MU no se pueden ejecutar en paralelo"
 
-#: config/tc-d10v.c:860 config/tc-d30v.c:904
+#: config/tc-d10v.c:1072 config/tc-d30v.c:1098
 msgid "IU instruction may not be in the left container"
 msgstr "Una instrucción IU no puede estar en el contenedor izquierdo"
 
 # Parece que R es 'right' y L es 'left'. Revisar el código para comprobar
 # y mejorar esta traducción. cfuga
-#: config/tc-d10v.c:862 config/tc-d10v.c:877
+#: config/tc-d10v.c:1074 config/tc-d10v.c:1089
 msgid "Instruction in R container is squashed by flow control instruction in L container."
 msgstr "La instrucción en el contenedor R es aplastada por la instrucción de control de flujo en el contenedor L."
 
-#: config/tc-d10v.c:875 config/tc-d30v.c:915
+#: config/tc-d10v.c:1087 config/tc-d30v.c:1109
 msgid "MU instruction may not be in the right container"
 msgstr "Una instrucción MU no puede estar en el contenedor derecho"
 
-#: config/tc-d10v.c:881 config/tc-d30v.c:927
+#: config/tc-d10v.c:1093 config/tc-d30v.c:1121
 msgid "unknown execution type passed to write_2_short()"
 msgstr "tipo de ejecución desconocido pasado a write_2_short()"
 
-#: config/tc-d10v.c:1072 config/tc-d10v.c:1080
-#, c-format
-msgid "packing conflict: %s must dispatch sequentially"
-msgstr "conflicto de empaquetado: %s debe despachar secuencialmente"
-
-#: config/tc-d10v.c:1179
-#, c-format
-msgid "resource conflict (R%d)"
-msgstr "conflicto de recurso (R%d)"
-
-#: config/tc-d10v.c:1182
-#, c-format
-msgid "resource conflict (A%d)"
-msgstr "conflicto de recurso (A%d)"
-
-#: config/tc-d10v.c:1184
-msgid "resource conflict (PSW)"
-msgstr "conflicto de recurso (PSW)"
-
-#: config/tc-d10v.c:1186
-msgid "resource conflict (C flag)"
-msgstr "conflicto de recurso (opción C)"
-
-#: config/tc-d10v.c:1188
-msgid "resource conflict (F flag)"
-msgstr "conflicto de recurso (opción F)"
-
-#: config/tc-d10v.c:1276 config/tc-d10v.c:1298 config/tc-d30v.c:1408
-msgid "Unable to mix instructions as specified"
-msgstr "No se pueden mezclar las instrucciones como se especificó"
-
-#: config/tc-d10v.c:1343 config/tc-d30v.c:1538
-#, c-format
-msgid "unknown opcode: %s"
-msgstr "código de operación desconocido: %s"
-
-#: config/tc-d10v.c:1426 config/tc-d10v.c:1601
+#: config/tc-d10v.c:1221 config/tc-d10v.c:1394
 msgid "bad opcode or operands"
 msgstr "código de operación u operandos erróneos"
 
-#: config/tc-d10v.c:1501 config/tc-m68k.c:4679
+#: config/tc-d10v.c:1296 config/tc-m68k.c:4625
 msgid "value out of range"
 msgstr "valor fuera de rango"
 
-#: config/tc-d10v.c:1577
+#: config/tc-d10v.c:1370
 msgid "illegal operand - register name found where none expected"
 msgstr "operando ilegal - se encontró un nombre de registro donde no se esperaba ninguno"
 
-#: config/tc-d10v.c:1612
+#: config/tc-d10v.c:1405
 msgid "Register number must be EVEN"
 msgstr "El número de registro debe ser PAR"
 
-#: config/tc-d10v.c:1615
+#: config/tc-d10v.c:1408
 msgid "Unsupported use of sp"
 msgstr "Uso sin soporte de sp"
 
-#: config/tc-d10v.c:1634
+#: config/tc-d10v.c:1427
 #, c-format
 msgid "cr%ld is a reserved control register"
 msgstr "cr%ld es un registro de control reservado"
 
-#: config/tc-d10v.c:1771
+#: config/tc-d10v.c:1466 config/tc-d30v.c:1430
+#, c-format
+msgid "unknown opcode: %s"
+msgstr "código de operación desconocido: %s"
+
+#: config/tc-d10v.c:1602
 #, c-format
 msgid "line %d: rep or repi must include at least 4 instructions"
 msgstr "línea %d: rep o repi debe incluir por lo menos 4 instrucciones"
 
-#: config/tc-d30v.c:193
+#: config/tc-d10v.c:1810 config/tc-d10v.c:1832 config/tc-d30v.c:1777
+msgid "Unable to mix instructions as specified"
+msgstr "No se pueden mezclar las instrucciones como se especificó"
+
+#: config/tc-d30v.c:150
 #, c-format
 msgid "Register name %s conflicts with symbol of the same name"
 msgstr "El nombre de registro %s tiene conflictos con el símbolo del mismo nombre"
 
-#: config/tc-d30v.c:288
+#: config/tc-d30v.c:240
 #, c-format
 msgid ""
 "\n"
@@ -3757,195 +3570,215 @@ msgstr ""
 "-c                      Avisar sobre los símbolos cuyos nombres coincidan con nombres de registros.\n"
 "-C                      Opuesto de -C.  -c es por defecto.\n"
 
-#: config/tc-d30v.c:462
+#: config/tc-d30v.c:402
 msgid "unexpected 12-bit reloc type"
 msgstr "tipo de reubicación de 12-bit inesperado"
 
-#: config/tc-d30v.c:469
+#: config/tc-d30v.c:409
 msgid "unexpected 18-bit reloc type"
 msgstr "tipo de reubicación de 18-bit inesperado"
 
-#: config/tc-d30v.c:720
+#: config/tc-d30v.c:659
 #, c-format
 msgid "%s NOP inserted"
 msgstr "%s NOP insertados"
 
-#: config/tc-d30v.c:721
+#: config/tc-d30v.c:660
 msgid "sequential"
 msgstr "secuencial"
 
-#: config/tc-d30v.c:721
+#: config/tc-d30v.c:660
 msgid "parallel"
 msgstr "paralelo"
 
-#: config/tc-d30v.c:873
+#: config/tc-d30v.c:1067
 msgid "Instructions may not be executed in parallel"
 msgstr "Las instrucciones no se pueden ejecutar en paralelo"
 
-#: config/tc-d30v.c:886
+#: config/tc-d30v.c:1080
 #, c-format
 msgid "Executing %s in IU may not work"
 msgstr "Ejecutar %s en IU podría no funcionar"
 
-#: config/tc-d30v.c:893
+#: config/tc-d30v.c:1087
 #, c-format
 msgid "Executing %s in IU may not work in parallel execution"
 msgstr "Ejecutar %s en IU podría no funcionar en ejecución paralela"
 
-#: config/tc-d30v.c:906
+#: config/tc-d30v.c:1100
 #, c-format
 msgid "special left instruction `%s' kills instruction `%s' in right container"
 msgstr "la instrucción especial izquierda `%s' mata a la instrucción `%s' en el contenedor derecho"
 
-#: config/tc-d30v.c:917
+#: config/tc-d30v.c:1111
 #, c-format
 msgid "Executing %s in reverse serial with %s may not work"
 msgstr "Ejecutar %s en serie reversa con %s podría no funcionar"
 
-#: config/tc-d30v.c:920
+#: config/tc-d30v.c:1114
 #, c-format
 msgid "Executing %s in IU in reverse serial may not work"
 msgstr "Ejecutar %s en IU en serie reversa podría no funcionar"
 
-#: config/tc-d30v.c:1287 config/tc-d30v.c:1304
+#: config/tc-d30v.c:1303
+msgid "Odd numbered register used as target of multi-register instruction"
+msgstr "Los registros numerados nones se usan como objetivo para una instrucción multi-registro"
+
+#: config/tc-d30v.c:1367 config/tc-d30v.c:1402
+#, c-format
+msgid "unknown condition code: %s"
+msgstr "código de condición desconocido: %s"
+
+#: config/tc-d30v.c:1395
+#, c-format
+msgid "cmpu doesn't support condition code %s"
+msgstr "cmpu no tiene soporte para el código de condición %s"
+
+#: config/tc-d30v.c:1441
+#, c-format
+msgid "operands for opcode `%s' do not match any valid format"
+msgstr "los operandos para el código de operación `%s' no coincide con ningún formato válido"
+
+#: config/tc-d30v.c:1656 config/tc-d30v.c:1673
 msgid "Cannot assemble instruction"
 msgstr "No se puede ensamblar la instrucción"
 
-#: config/tc-d30v.c:1289
+#: config/tc-d30v.c:1658
 msgid "First opcode is long.  Unable to mix instructions as specified."
 msgstr "El primer código de operación es long.  No se pueden mezclar las instrucciones como se especificó."
 
-#: config/tc-d30v.c:1358
+#: config/tc-d30v.c:1727
 msgid "word of NOPs added between word multiply and load"
 msgstr "word de NOPs agregados entre múltiplos de word y load"
 
-#: config/tc-d30v.c:1360
+#: config/tc-d30v.c:1729
 msgid "word of NOPs added between word multiply and 16-bit multiply"
 msgstr "word de NOPs agregados entre múltiplos de word y múltiplos de 16-bit"
 
-#: config/tc-d30v.c:1392
+#: config/tc-d30v.c:1761
 msgid "Instruction uses long version, so it cannot be mixed as specified"
 msgstr "La instrucción usa una versión long, así que no se puede mezclar como se especificó"
 
-#: config/tc-d30v.c:1475 config/tc-d30v.c:1510
-#, c-format
-msgid "unknown condition code: %s"
-msgstr "código de condición desconocido: %s"
-
-#: config/tc-d30v.c:1503
-#, c-format
-msgid "cmpu doesn't support condition code %s"
-msgstr "cmpu no tiene soporte para el código de condición %s"
-
-#: config/tc-d30v.c:1549
+#: config/tc-d30v.c:1888
 #, c-format
-msgid "operands for opcode `%s' do not match any valid format"
-msgstr "los operandos para el código de operación `%s' no coincide con ningún formato válido"
-
-#: config/tc-d30v.c:1764
-msgid "Odd numbered register used as target of multi-register instruction"
-msgstr "Los registros numerados nones se usan como objetivo para una instrucción multi-registro"
+msgid "value too large to fit in %d bits"
+msgstr "valor demasiado grande para caber en %d bits"
 
-#: config/tc-d30v.c:1847
+#: config/tc-d30v.c:1949
 #, c-format
 msgid "line %d: unable to place address of symbol '%s' into a byte"
 msgstr "línea %d: no se puede colocar la dirección del símbolo '%s' en un byte"
 
-#: config/tc-d30v.c:1850
+#: config/tc-d30v.c:1952
 #, c-format
 msgid "line %d: unable to place value %lx into a byte"
 msgstr "línea %d: no se puede colocar el valor %lx en un byte"
 
-#: config/tc-d30v.c:1858
+#: config/tc-d30v.c:1960
 #, c-format
 msgid "line %d: unable to place address of symbol '%s' into a short"
 msgstr "línea %d: no se puede colocar la dirección del símbolo '%s' en un short"
 
-#: config/tc-d30v.c:1861
+#: config/tc-d30v.c:1963
 #, c-format
 msgid "line %d: unable to place value %lx into a short"
 msgstr "línea %d: no se puede colocar el valor %lx en un short"
 
-#: config/tc-d30v.c:1869
+#: config/tc-d30v.c:1971
 #, c-format
 msgid "line %d: unable to place address of symbol '%s' into a quad"
 msgstr "línea %d: no se puede colocar la dirección del símbolo '%s' en un quad"
 
-#: config/tc-d30v.c:2038
-#, c-format
-msgid "value too large to fit in %d bits"
-msgstr "valor demasiado grande para caber en %d bits"
-
-#: config/tc-d30v.c:2179
+#: config/tc-d30v.c:2079
 #, c-format
 msgid "Alignment too large: %d assumed"
 msgstr "Alineación demasiado grande: se asume %d"
 
-#: config/tc-dlx.c:245
+#: config/tc-dlx.c:211
 msgid "missing .proc"
 msgstr "falta un .proc"
 
-#: config/tc-dlx.c:262
+#: config/tc-dlx.c:228
 msgid ".endfunc missing for previous .proc"
 msgstr "falta un .endfunc para el .proc previo"
 
-#: config/tc-dlx.c:472
-#, c-format
-msgid "Expression Error for operand modifier %%hi/%%lo\n"
-msgstr "Error de Expresión para el modificador de operando %%hi/%%lo\n"
+#. Probably a memory allocation problem?  Give up now.
+#: config/tc-dlx.c:297 config/tc-hppa.c:1489 config/tc-mips.c:1415
+#: config/tc-mips.c:1467 config/tc-or32.c:210 config/tc-sparc.c:855
+msgid "Broken assembler.  No assembly attempted."
+msgstr "Ensamblador descompuesto.  No se intentó ensamblar."
 
-#: config/tc-dlx.c:526
+#: config/tc-dlx.c:327
 #, c-format
 msgid "Bad operand for a load instruction: <%s>"
 msgstr "Operando erróneo para una instrucción load <%s>"
 
-#: config/tc-dlx.c:641
+#: config/tc-dlx.c:441
 #, c-format
 msgid "Bad operand for a store instruction: <%s>"
 msgstr "Operando erróneo para una instrucción store <%s>"
 
-#: config/tc-dlx.c:839
+#: config/tc-dlx.c:621
+#, c-format
+msgid "Expression Error for operand modifier %%hi/%%lo\n"
+msgstr "Error de Expresión para el modificador de operando %%hi/%%lo\n"
+
+#: config/tc-dlx.c:634 config/tc-or32.c:873
+#, c-format
+msgid "Invalid expression after %%%%\n"
+msgstr "Expresión inválida después de %%%%\n"
+
+#: config/tc-dlx.c:703
+#, c-format
+msgid "Unknown opcode `%s'."
+msgstr "Código de operación desconocido `%s'."
+
+#: config/tc-dlx.c:716
 msgid "Can not set dlx_skip_hi16_flag"
 msgstr "No se puede establecer dlx_skip_hi16_flag"
 
-#: config/tc-dlx.c:853
+#: config/tc-dlx.c:730
 #, c-format
 msgid "Missing arguments for opcode <%s>."
 msgstr "Faltan argumentos para el código de operación <%s>"
 
-#: config/tc-dlx.c:924
+#: config/tc-dlx.c:764
+#, c-format
+msgid "Too many operands: %s"
+msgstr "Demasiados operandos: %s"
+
+#: config/tc-dlx.c:801
 #, c-format
 msgid "Both the_insn.HI and the_insn.LO are set : %s"
 msgstr "Tanto the_insn.HI como the_insn.LO están activados: %s"
 
-#: config/tc-dlx.c:994
+#: config/tc-dlx.c:871
 msgid "failed regnum sanity check."
 msgstr "falló la prueba de sanidad regnum."
 
-#: config/tc-dlx.c:1007
+#: config/tc-dlx.c:884
 msgid "failed general register sanity check."
 msgstr "falló la prueba de sanidad de registro general."
 
-#: config/tc-dlx.c:1292
+#: config/tc-dlx.c:1175 config/tc-or32.c:835
+#, c-format
+msgid "label \"$%d\" redefined"
+msgstr "se redefinió la etiqueta \"$%d\""
+
+#: config/tc-dlx.c:1213
 msgid "Invalid expression after # number\n"
 msgstr "Expresión inválida después de # number\n"
 
-#: config/tc-fr30.c:85
+#: config/tc-fr30.c:83
 #, c-format
 msgid " FR30 specific command line options:\n"
 msgstr " Opciones de línea de comando específicas de FR30:\n"
 
-#: config/tc-fr30.c:139
+#: config/tc-fr30.c:136
 #, c-format
 msgid "Instruction %s not allowed in a delay slot."
 msgstr "No se permite la instrucción %s en una ranura de retardo."
 
-#: config/tc-fr30.c:378 config/tc-frv.c:1600 config/tc-i960.c:798
-#: config/tc-ip2k.c:350 config/tc-m32r.c:2205 config/tc-openrisc.c:401
-#: config/tc-xstormy16.c:654
-msgid "Bad call to md_atof()"
-msgstr "Llamada errónea a md_atof()"
-
 #: config/tc-frv.c:461
 #, c-format
 msgid "FRV specific command line options:\n"
@@ -4078,1011 +3911,972 @@ msgstr "Violaci
 msgid "Relocation %s is not safe for %s"
 msgstr "La reubicación %s no es segura para %s"
 
-#: config/tc-h8300.c:82 config/tc-h8300.c:93 config/tc-h8300.c:105
-#: config/tc-h8300.c:117 config/tc-h8300.c:129 config/tc-h8300.c:142
-#: config/tc-h8300.c:213 config/tc-hppa.c:1440 config/tc-hppa.c:6925
-#: config/tc-hppa.c:6931 config/tc-hppa.c:6937 config/tc-hppa.c:6943
-#: config/tc-mn10300.c:1223 config/tc-mn10300.c:1228 config/tc-mn10300.c:2726
+#: config/tc-h8300.c:78 config/tc-h8300.c:87 config/tc-h8300.c:97
+#: config/tc-h8300.c:107 config/tc-h8300.c:117 config/tc-h8300.c:128
+#: config/tc-h8300.c:195 config/tc-hppa.c:1449 config/tc-hppa.c:6926
+#: config/tc-hppa.c:6932 config/tc-hppa.c:6938 config/tc-hppa.c:6944
+#: config/tc-mn10300.c:1223 config/tc-mn10300.c:1228 config/tc-mn10300.c:2725
 msgid "could not set architecture and machine"
 msgstr "no se pueden establecer la arquitectura y la máquina"
 
-#: config/tc-h8300.c:416 config/tc-h8300.c:424
+#: config/tc-h8300.c:397 config/tc-h8300.c:405
 msgid "Reg not valid for H8/300"
 msgstr "El registro no es válido para H8/300"
 
-#: config/tc-h8300.c:505
+#: config/tc-h8300.c:486
 msgid "invalid operand size requested"
 msgstr "se solicitó un tamaño de operando inválido"
 
-#: config/tc-h8300.c:604
+#: config/tc-h8300.c:585
 msgid "Invalid register list for ldm/stm\n"
 msgstr "Lista de registros inválida para ldm/stm\n"
 
-#: config/tc-h8300.c:630 config/tc-h8300.c:635 config/tc-h8300.c:642
+#: config/tc-h8300.c:611 config/tc-h8300.c:616 config/tc-h8300.c:623
 msgid "mismatch between register and suffix"
 msgstr "no hay coincidencia entre el registro y el sufijo"
 
-#: config/tc-h8300.c:669
+#: config/tc-h8300.c:650
 msgid "address too high for vector table jmp/jsr"
 msgstr "dirección demasiado alta para la tabla de vectores jmp/jsr"
 
-#: config/tc-h8300.c:696 config/tc-h8300.c:808 config/tc-h8300.c:818
+#: config/tc-h8300.c:677 config/tc-h8300.c:789 config/tc-h8300.c:799
 msgid "Wrong size pointer register for architecture."
 msgstr "Tamaño de puntero a registro erróneo para la arquitectura."
 
-#: config/tc-h8300.c:755 config/tc-h8300.c:763 config/tc-h8300.c:792
+#: config/tc-h8300.c:736 config/tc-h8300.c:744 config/tc-h8300.c:773
 msgid "expected @(exp, reg16)"
 msgstr "se esperaba @(exp, reg16)"
 
-#: config/tc-h8300.c:781
+#: config/tc-h8300.c:762
 msgid "expected .L, .W or .B for register in indexed addressing mode"
 msgstr "se esperaba .L, .W ó .B para el registro en modo de direccionamiento indizado"
 
-#: config/tc-h8300.c:975
+#: config/tc-h8300.c:956
 msgid "expected valid addressing mode for mova: \"@(disp, ea.sz),ERn\""
 msgstr "se pesperaba un modo de direccionamiento válido para mova: \"@(disp, ea.sz),ERn\""
 
-#: config/tc-h8300.c:993 config/tc-h8300.c:1002
+#: config/tc-h8300.c:974 config/tc-h8300.c:983
 msgid "expected register"
 msgstr "se esperaba un registro"
 
-#: config/tc-h8300.c:1018
+#: config/tc-h8300.c:999
 msgid "expected closing paren"
 msgstr "se esperaba un paréntesis que cierra"
 
-#: config/tc-h8300.c:1077
+#: config/tc-h8300.c:1058
 #, c-format
 msgid "can't use high part of register in operand %d"
 msgstr "no se puede usar la parte alta del registro en el operando %d"
 
-#: config/tc-h8300.c:1234
+#: config/tc-h8300.c:1215
 #, c-format
 msgid "Opcode `%s' with these operand types not available in %s mode"
 msgstr "El código de operación `%s' con esos tipos de operando no está disponible en el modo %s"
 
-#: config/tc-h8300.c:1243
+#: config/tc-h8300.c:1224
 msgid "mismatch between opcode size and operand size"
 msgstr "no hay coincidencia entre el tamaño del código de operación y el tamaño del operando"
 
-#: config/tc-h8300.c:1279
+#: config/tc-h8300.c:1260
 #, c-format
 msgid "operand %s0x%lx out of range."
 msgstr "operando %s0x%lx fuera de rango."
 
-#: config/tc-h8300.c:1375
+#: config/tc-h8300.c:1356
 msgid "Can't work out size of operand.\n"
 msgstr "No se puede obtener el tamaño del operando.\n"
 
-#: config/tc-h8300.c:1424
+#: config/tc-h8300.c:1405
 #, c-format
 msgid "Opcode `%s' with these operand types not available in H8/300 mode"
 msgstr "El código de operación `%s' con esos tipos de operandos no están disponibles en el modo H8/300"
 
-#: config/tc-h8300.c:1429
+#: config/tc-h8300.c:1410
 #, c-format
 msgid "Opcode `%s' with these operand types not available in H8/300H mode"
 msgstr "El código de operación `%s' con esos tipos de operandos no está disponible en el modo H8/300H"
 
-#: config/tc-h8300.c:1435
+#: config/tc-h8300.c:1416
 #, c-format
 msgid "Opcode `%s' with these operand types not available in H8/300S mode"
 msgstr "El código de operación `%s' con esos tipos de operandos no está disponible en el modo H8/300S"
 
-#: config/tc-h8300.c:1496 config/tc-h8300.c:1516
+#: config/tc-h8300.c:1477 config/tc-h8300.c:1497
 msgid "Need #1 or #2 here"
 msgstr "Se necesita #1 ó #2 aquí"
 
-#: config/tc-h8300.c:1511
+#: config/tc-h8300.c:1492
 msgid "#4 not valid on H8/300."
 msgstr "#4 no es válido en H8/300"
 
-#: config/tc-h8300.c:1617 config/tc-h8300.c:1699
+#: config/tc-h8300.c:1598 config/tc-h8300.c:1680
 #, c-format
 msgid "branch operand has odd offset (%lx)\n"
 msgstr "el operando de ramificación tiene un desplazamiento non (%lx)\n"
 
-#: config/tc-h8300.c:1737
+#: config/tc-h8300.c:1718
 msgid "destination operand must be 16 bit register"
 msgstr "el operando de destino debe ser un registro de 16 bit"
 
-#: config/tc-h8300.c:1746
+#: config/tc-h8300.c:1727
 msgid "source operand must be 8 bit register"
 msgstr "el operando de origen debe ser un registro de 8 bit"
 
-#: config/tc-h8300.c:1754
+#: config/tc-h8300.c:1735
 msgid "destination operand must be 16bit absolute address"
 msgstr "el operando de destino debe ser una dirección absoluta de 16bit"
 
-#: config/tc-h8300.c:1761
+#: config/tc-h8300.c:1742
 msgid "destination operand must be 8 bit register"
 msgstr "el operando de destino debe ser un registro de 8 bit"
 
-#: config/tc-h8300.c:1769
+#: config/tc-h8300.c:1750
 msgid "source operand must be 16bit absolute address"
 msgstr "el operando de origen debe ser una dirección absoluta de 16bit"
 
 #. This seems more sane than saying "too many operands".  We'll
 #. get here only if the trailing trash starts with a comma.
 #. Types or values of args don't match.
-#: config/tc-h8300.c:1777 config/tc-mmix.c:486 config/tc-mmix.c:498
-#: config/tc-mmix.c:2564 config/tc-mmix.c:2588 config/tc-mmix.c:2865
-#: config/tc-or32.c:636 config/tc-or32.c:846
+#: config/tc-h8300.c:1758 config/tc-mmix.c:473 config/tc-mmix.c:485
+#: config/tc-mmix.c:2526 config/tc-mmix.c:2550 config/tc-mmix.c:2823
+#: config/tc-or32.c:527
 msgid "invalid operands"
 msgstr "operandos inválidos"
 
-#: config/tc-h8300.c:1808
+#: config/tc-h8300.c:1789
 msgid "operand/size mis-match"
 msgstr "no coinciden los operandos/tamaños"
 
-#: config/tc-h8300.c:1904 config/tc-h8500.c:1112 config/tc-mips.c:9141
-#: config/tc-sh64.c:2795 config/tc-sh.c:2806 config/tc-w65.c:688
-#: config/tc-z8k.c:1210
+#: config/tc-h8300.c:1885 config/tc-mips.c:9358 config/tc-sh64.c:2795
+#: config/tc-sh.c:2838 config/tc-z8k.c:1204
 msgid "unknown opcode"
 msgstr "código de operación desconocido"
 
-#: config/tc-h8300.c:1937
+#: config/tc-h8300.c:1918
 msgid "invalid operand in ldm"
 msgstr "operando inválido en ldm"
 
-#: config/tc-h8300.c:1946
+#: config/tc-h8300.c:1927
 msgid "invalid operand in stm"
 msgstr "operando inválido en stm"
 
-#: config/tc-h8300.c:2029 config/tc-h8500.c:1139 config/tc-sh.c:2931
-#: config/tc-z8k.c:1266
-#, c-format
-msgid "call to tc_crawl_symbol_chain \n"
-msgstr "llamada a tc_crawl_symbol_chain \n"
-
-#: config/tc-h8300.c:2043 config/tc-h8500.c:1153 config/tc-sh.c:2937
-#: config/tc-z8k.c:1280
-#, c-format
-msgid "call to tc_headers_hook \n"
-msgstr "llamada a tc_headers_hook \n"
-
-#: config/tc-h8300.c:2130
+#: config/tc-h8300.c:2093
 #, c-format
 msgid "call to tc_aout_fix_to_chars \n"
 msgstr "llamada a tc_aout_fix_to_chars \n"
 
-#: config/tc-h8300.c:2144
+#: config/tc-h8300.c:2102
 #, c-format
 msgid "call to md_convert_frag \n"
 msgstr "llamada a md_convert_frag \n"
 
-#: config/tc-h8300.c:2198
+#: config/tc-h8300.c:2146
 #, c-format
 msgid "call tomd_estimate_size_before_relax \n"
 msgstr "llamada a tomd_estimate_size_before_relax \n"
 
-#: config/tc-h8300.c:2309 config/tc-mcore.c:2356 config/tc-pj.c:580
-#: config/tc-sh.c:4455
+#: config/tc-h8300.c:2197 config/tc-mcore.c:2282 config/tc-pj.c:538
+#: config/tc-sh.c:4270
 #, c-format
 msgid "Cannot represent relocation type %s"
 msgstr "No se puede representar el tipo de reubicación %s"
 
-#: config/tc-h8500.c:325
-msgid ":24 not valid for this opcode"
-msgstr ":24 no es válido para este código de operación"
-
-#: config/tc-h8500.c:332
-msgid "expect :8,:16 or :24"
-msgstr "se esperaba :8,:16 ó :24"
-
-#: config/tc-h8500.c:391
-msgid "syntax error in reg list"
-msgstr "error sintáctico en la lista de registros"
-
-#: config/tc-h8500.c:409
-msgid "missing final register in range"
-msgstr "falta el registro final en el rango"
-
-#: config/tc-h8500.c:498 config/tc-h8500.c:505 config/tc-h8500.c:511
-msgid "expected @(exp, Rn)"
-msgstr "se esperaba @(exp, Rn)"
-
-#: config/tc-h8500.c:527
-msgid "@Rn+ needs word register"
-msgstr "@Rn+ necesita un registro word"
-
-#: config/tc-h8500.c:537
-msgid "@Rn needs word register"
-msgstr "@Rn necesita un registro word"
-
-#: config/tc-h8500.c:838 config/tc-sh.c:2083
-#, c-format
-msgid "unhandled %d\n"
-msgstr "%d sin manejar\n"
-
-#: config/tc-h8500.c:868
-#, c-format
-msgid "operand must be absolute in range %d..%d"
-msgstr "el operando debe ser absoluto en el rango %d..%d"
-
-#: config/tc-h8500.c:963 config/tc-sh.c:2353
-#, c-format
-msgid "failed for %d\n"
-msgstr "falló para %d\n"
-
-#: config/tc-h8500.c:1128 config/tc-sh.c:2466 config/tc-sh.c:2862
-#: config/tc-w65.c:707
-msgid "invalid operands for opcode"
-msgstr "operandos inválidos para el código de operación"
-
 #. Simple range checking for FIELD against HIGH and LOW bounds.
 #. IGNORE is used to suppress the error message.
-#. Variant of CHECK_FIELD for use in md_apply_fix3 and other places where
+#. Variant of CHECK_FIELD for use in md_apply_fix and other places where
 #. the current file and line number are not valid.
-#: config/tc-hppa.c:1171 config/tc-hppa.c:1185
+#: config/tc-hppa.c:1176 config/tc-hppa.c:1190
 #, c-format
 msgid "Field out of range [%d..%d] (%d)."
 msgstr "Campo fuera de rango [%d..%d] (%d)."
 
 #. Simple alignment checking for FIELD against ALIGN (a power of two).
 #. IGNORE is used to suppress the error message.
-#: config/tc-hppa.c:1199
+#: config/tc-hppa.c:1204
 #, c-format
 msgid "Field not properly aligned [%d] (%d)."
 msgstr "Campo no alineado adecuadamente [%d] (%d)."
 
-#: config/tc-hppa.c:1228
+#: config/tc-hppa.c:1233
 msgid "Missing .exit\n"
 msgstr "Falta un .exit\n"
 
-#: config/tc-hppa.c:1231
+#: config/tc-hppa.c:1236
 msgid "Missing .procend\n"
 msgstr "Falta un .procend\n"
 
-#: config/tc-hppa.c:1413
+#: config/tc-hppa.c:1422
 #, c-format
 msgid "Invalid field selector.  Assuming F%%."
 msgstr "Selector de campo inválido.  Se asume F%%."
 
-#: config/tc-hppa.c:1446
+#: config/tc-hppa.c:1455
 msgid "-R option not supported on this target."
 msgstr "la opción -R no tiene soporte en este objetivo."
 
-#: config/tc-hppa.c:1462 config/tc-sparc.c:814 config/tc-sparc.c:850
+#: config/tc-hppa.c:1471 config/tc-sparc.c:811 config/tc-sparc.c:847
 #, c-format
 msgid "Internal error: can't hash `%s': %s\n"
 msgstr "Error interno: no se puede dispersar `%s': %s\n"
 
-#: config/tc-hppa.c:1470 config/tc-i860.c:238
+#: config/tc-hppa.c:1479 config/tc-i860.c:238
 #, c-format
 msgid "internal error: losing opcode: `%s' \"%s\"\n"
 msgstr "error interno: se pierde el código de operación: `%s' \"%s\"\n"
 
-#: config/tc-hppa.c:1541 config/tc-hppa.c:7064 config/tc-hppa.c:7121
+#: config/tc-hppa.c:1550 config/tc-hppa.c:7065 config/tc-hppa.c:7122
 msgid "Missing function name for .PROC (corrupted label chain)"
 msgstr "Falta el nombre de función para .PROC (cadena de etiquetas corrupta)"
 
-#: config/tc-hppa.c:1544 config/tc-hppa.c:7124
+#: config/tc-hppa.c:1553 config/tc-hppa.c:7125
 msgid "Missing function name for .PROC"
 msgstr "Falta el nombre de función para .PROC"
 
-#: config/tc-hppa.c:1651 config/tc-hppa.c:4920
-msgid "could not update architecture and machine"
-msgstr "no se puede actualizar la arquitectura y la máquina"
-
-#: config/tc-hppa.c:1859
+#: config/tc-hppa.c:1857
 msgid "Invalid Indexed Load Completer."
 msgstr "Completador de Carga Indizado Inválido."
 
-#: config/tc-hppa.c:1864
+#: config/tc-hppa.c:1862
 msgid "Invalid Indexed Load Completer Syntax."
 msgstr "Sintaxis de Completador de Carga Indizado Inválido."
 
-#: config/tc-hppa.c:1901
+#: config/tc-hppa.c:1896
 msgid "Invalid Short Load/Store Completer."
 msgstr "Completador Short de Load/Store Inválido."
 
-#: config/tc-hppa.c:1961 config/tc-hppa.c:1966
+#: config/tc-hppa.c:1956 config/tc-hppa.c:1961
 msgid "Invalid Store Bytes Short Completer"
 msgstr "Completador de Store Bytes Short Inválido."
 
-#: config/tc-hppa.c:2277 config/tc-hppa.c:2283
+#: config/tc-hppa.c:2272 config/tc-hppa.c:2278
 msgid "Invalid left/right combination completer"
 msgstr "Completador de combinación derecha/izquierda inválido"
 
-#: config/tc-hppa.c:2332 config/tc-hppa.c:2339
+#: config/tc-hppa.c:2327 config/tc-hppa.c:2334
 msgid "Invalid permutation completer"
 msgstr "Completador de permutación inválido"
 
-#: config/tc-hppa.c:2439
+#: config/tc-hppa.c:2434
 #, c-format
 msgid "Invalid Add Condition: %s"
 msgstr "Condición de Adición Inválida: %s"
 
-#: config/tc-hppa.c:2450 config/tc-hppa.c:2460
+#: config/tc-hppa.c:2445 config/tc-hppa.c:2455
 msgid "Invalid Add and Branch Condition"
 msgstr "Condición de Adición y Ramificación Inválida"
 
-#: config/tc-hppa.c:2481 config/tc-hppa.c:2618
+#: config/tc-hppa.c:2476 config/tc-hppa.c:2613
 msgid "Invalid Compare/Subtract Condition"
 msgstr "Condición de Comparación/Sustracción Inválida"
 
-#: config/tc-hppa.c:2521
+#: config/tc-hppa.c:2516
 #, c-format
 msgid "Invalid Bit Branch Condition: %c"
 msgstr "Condición de Ramificación de Bit Inválida: %c"
 
-#: config/tc-hppa.c:2606
+#: config/tc-hppa.c:2601
 #, c-format
 msgid "Invalid Compare/Subtract Condition: %s"
 msgstr "Condición de Comparación/Sustracción Inválida: %s"
 
-#: config/tc-hppa.c:2633
+#: config/tc-hppa.c:2628
 msgid "Invalid Compare and Branch Condition"
 msgstr "Condición de Comparación y Ramificación Inválida"
 
-#: config/tc-hppa.c:2729
+#: config/tc-hppa.c:2724
 msgid "Invalid Logical Instruction Condition."
 msgstr "Condición de Instrucción Lógica Inválida."
 
-#: config/tc-hppa.c:2784
+#: config/tc-hppa.c:2779
 msgid "Invalid Shift/Extract/Deposit Condition."
 msgstr "Condición Desplazar/Extraer/Depositar Inválida."
 
-#: config/tc-hppa.c:2896
+#: config/tc-hppa.c:2891
 msgid "Invalid Unit Instruction Condition."
 msgstr "Condición de Instrucción Unit Inválida."
 
-#: config/tc-hppa.c:3273 config/tc-hppa.c:3305 config/tc-hppa.c:3336
-#: config/tc-hppa.c:3366
+#: config/tc-hppa.c:3270 config/tc-hppa.c:3302 config/tc-hppa.c:3333
+#: config/tc-hppa.c:3363
 msgid "Branch to unaligned address"
 msgstr "Ramificación a dirección sin alinear"
 
-#: config/tc-hppa.c:3544
+#: config/tc-hppa.c:3541
 msgid "Invalid SFU identifier"
 msgstr "Identificador SFU inválido"
 
-#: config/tc-hppa.c:3594
+#: config/tc-hppa.c:3591
 msgid "Invalid COPR identifier"
 msgstr "Identificador COPR inválido"
 
-#: config/tc-hppa.c:3723
+#: config/tc-hppa.c:3720
 msgid "Invalid Floating Point Operand Format."
 msgstr "Formato de Operando de Coma Flotante Inválido."
 
-#: config/tc-hppa.c:3840 config/tc-hppa.c:3860 config/tc-hppa.c:3880
-#: config/tc-hppa.c:3900 config/tc-hppa.c:3920
+#: config/tc-hppa.c:3837 config/tc-hppa.c:3857 config/tc-hppa.c:3877
+#: config/tc-hppa.c:3897 config/tc-hppa.c:3917
 msgid "Invalid register for single precision fmpyadd or fmpysub"
 msgstr "Registro inválido para fmpyadd ó fmpysub de precisión simple"
 
-#: config/tc-hppa.c:3977
+#: config/tc-hppa.c:3968 config/tc-hppa.c:4928
+msgid "could not update architecture and machine"
+msgstr "no se puede actualizar la arquitectura y la máquina"
+
+#: config/tc-hppa.c:3985
 #, c-format
 msgid "Invalid operands %s"
 msgstr "Operandos inválidos %s"
 
-#: config/tc-hppa.c:4095
+#: config/tc-hppa.c:4103
 msgid "Cannot handle fixup"
 msgstr "No se puede manejar la compostura"
 
-#: config/tc-hppa.c:4396
+#: config/tc-hppa.c:4404
 #, c-format
 msgid "  -Q                      ignored\n"
 msgstr "  -Q                      ignorado\n"
 
-#: config/tc-hppa.c:4400
+#: config/tc-hppa.c:4408
 #, c-format
 msgid "  -c                      print a warning if a comment is found\n"
 msgstr "  -c                      mostrar un aviso si se encuentra un comentario\n"
 
-#: config/tc-hppa.c:4471
+#: config/tc-hppa.c:4479
 #, c-format
 msgid "no hppa_fixup entry for fixup type 0x%x"
 msgstr "no hay una entrada hppa_fixup para el tipo de compostura 0x%x"
 
-#: config/tc-hppa.c:4642
+#: config/tc-hppa.c:4650
 msgid "Unknown relocation encountered in md_apply_fix."
 msgstr "Se encontró una reubicación desconocida en md_apply_fix."
 
-#: config/tc-hppa.c:4784 config/tc-hppa.c:4809
+#: config/tc-hppa.c:4792 config/tc-hppa.c:4817
 #, c-format
 msgid "Undefined register: '%s'."
 msgstr "Registro indefinido: '%s'."
 
-#: config/tc-hppa.c:4843
+#: config/tc-hppa.c:4851
 #, c-format
 msgid "Non-absolute symbol: '%s'."
 msgstr "Símbolo no absoluto: '%s'."
 
-#: config/tc-hppa.c:4858
+#: config/tc-hppa.c:4866
 #, c-format
 msgid "Undefined absolute constant: '%s'."
 msgstr "Constante absoluta indefinida: '%s'."
 
-#: config/tc-hppa.c:4959
+#: config/tc-hppa.c:4967
 #, c-format
 msgid "Invalid FP Compare Condition: %s"
 msgstr "Condición de Comparación de FP Inválida: %s"
 
-#: config/tc-hppa.c:5015
+#: config/tc-hppa.c:5023
 #, c-format
 msgid "Invalid FTEST completer: %s"
 msgstr "Completador FTEST inválido: %s"
 
-#: config/tc-hppa.c:5082 config/tc-hppa.c:5120
+#: config/tc-hppa.c:5090 config/tc-hppa.c:5128
 #, c-format
 msgid "Invalid FP Operand Format: %3s"
 msgstr "Formato de Operando FP Inválido: %3s"
 
-#: config/tc-hppa.c:5199
+#: config/tc-hppa.c:5207
 msgid "Bad segment in expression."
 msgstr "Segmento erróneo en la expresión."
 
-#: config/tc-hppa.c:5258
+#: config/tc-hppa.c:5266
 msgid "Bad segment (should be absolute)."
 msgstr "Segmento erróneo (debe ser absoluto)."
 
-#: config/tc-hppa.c:5301
+#: config/tc-hppa.c:5309
 #, c-format
 msgid "Invalid argument location: %s\n"
 msgstr "Ubicación de argumento inválida: %s\n"
 
-#: config/tc-hppa.c:5332
+#: config/tc-hppa.c:5340
 #, c-format
 msgid "Invalid argument description: %d"
 msgstr "Descripción de argumento inválida: %d"
 
-#: config/tc-hppa.c:5355
+#: config/tc-hppa.c:5363
 #, c-format
 msgid "Invalid Nullification: (%c)"
 msgstr "Nulificación Inválida: (%c)"
 
-#: config/tc-hppa.c:6075
+#: config/tc-hppa.c:5960
+msgid "Argument to .BLOCK/.BLOCKZ must be between 0 and 0x3fffffff"
+msgstr "El argumento para .BLOCK/.BLOCKZ debe estar entre 0 y 0x3fffffff"
+
+#: config/tc-hppa.c:6076
 #, c-format
 msgid "Invalid .CALL argument: %s"
 msgstr "Argumento de .CALL inválido: %s"
 
-#: config/tc-hppa.c:6197
+#: config/tc-hppa.c:6198
 msgid ".callinfo is not within a procedure definition"
 msgstr ".callinfo no está dentro de una definición de procedimiento"
 
-#: config/tc-hppa.c:6217
+#: config/tc-hppa.c:6218
 #, c-format
 msgid "FRAME parameter must be a multiple of 8: %d\n"
 msgstr "El parámetro FRAM debe ser un múltiplo de 8: %d\n"
 
-#: config/tc-hppa.c:6236
+#: config/tc-hppa.c:6237
 msgid "Value for ENTRY_GR must be in the range 3..18\n"
 msgstr "El valor para ENTRY_GR debe estar en el rango 3..18\n"
 
-#: config/tc-hppa.c:6248
+#: config/tc-hppa.c:6249
 msgid "Value for ENTRY_FR must be in the range 12..21\n"
 msgstr "El valor para ENTRY_FR debe estar en el rango 12..21\n"
 
-#: config/tc-hppa.c:6258
+#: config/tc-hppa.c:6259
 msgid "Value for ENTRY_SR must be 3\n"
 msgstr "El valor para ENTRY_SR debe ser 3\n"
 
-#: config/tc-hppa.c:6314
+#: config/tc-hppa.c:6315
 #, c-format
 msgid "Invalid .CALLINFO argument: %s"
 msgstr "Argumento de .CALLINFO inválido: %s"
 
-#: config/tc-hppa.c:6426
+#: config/tc-hppa.c:6427
 msgid "The .ENTER pseudo-op is not supported"
 msgstr "El pseudo-operador .ENTER no tiene soporte"
 
-#: config/tc-hppa.c:6442
+#: config/tc-hppa.c:6443
 msgid "Misplaced .entry. Ignored."
 msgstr ".entry mal colocado. Ignorado."
 
-#: config/tc-hppa.c:6446
+#: config/tc-hppa.c:6447
 msgid "Missing .callinfo."
 msgstr "Falta un .callinfo."
 
-#: config/tc-hppa.c:6512
+#: config/tc-hppa.c:6513
 msgid ".REG expression must be a register"
 msgstr "la expresión .REG debe ser un registro"
 
-#: config/tc-hppa.c:6528
+#: config/tc-hppa.c:6529
 msgid "bad or irreducible absolute expression; zero assumed"
 msgstr "expresión absoluta errónea o irreducible; se asume cero"
 
-#: config/tc-hppa.c:6539
+#: config/tc-hppa.c:6540
 msgid ".REG must use a label"
 msgstr ".REG debe usar una etiqueta"
 
-#: config/tc-hppa.c:6541
+#: config/tc-hppa.c:6542
 msgid ".EQU must use a label"
 msgstr ".EQU debe usar una etiqueta"
 
-#: config/tc-hppa.c:6594
+#: config/tc-hppa.c:6595
 msgid ".EXIT must appear within a procedure"
 msgstr ".EXIT debe aparecer dentro de un procedimiento"
 
-#: config/tc-hppa.c:6598
+#: config/tc-hppa.c:6599
 msgid "Missing .callinfo"
 msgstr "Falta un .callinfo"
 
-#: config/tc-hppa.c:6602
+#: config/tc-hppa.c:6603
 msgid "No .ENTRY for this .EXIT"
 msgstr "No hay .ENTRY para este .EXIT"
 
-#: config/tc-hppa.c:6629
+#: config/tc-hppa.c:6630
 #, c-format
 msgid "Cannot define export symbol: %s\n"
 msgstr "No se puede definir el símbolo de exportación: %s\n"
 
-#: config/tc-hppa.c:6687
+#: config/tc-hppa.c:6688
 #, c-format
 msgid "Using ENTRY rather than CODE in export directive for %s"
 msgstr "Utilizando ENTRY en lugar de CODE en la directiva de exportación para %s"
 
-#: config/tc-hppa.c:6804
+#: config/tc-hppa.c:6805
 #, c-format
 msgid "Undefined .EXPORT/.IMPORT argument (ignored): %s"
 msgstr "Argumento de .EXPORT/.IMPORT indefinido (ignorado): %s"
 
-#: config/tc-hppa.c:6886
+#: config/tc-hppa.c:6887
 msgid "Missing label name on .LABEL"
 msgstr "Falta el nombre de etiqueta en .LABEL"
 
-#: config/tc-hppa.c:6891
+#: config/tc-hppa.c:6892
 msgid "extra .LABEL arguments ignored."
 msgstr "se ignoran los argumentos extra de .LABEL."
 
-#: config/tc-hppa.c:6908
+#: config/tc-hppa.c:6909
 msgid "The .LEAVE pseudo-op is not supported"
 msgstr "El pseudo-operador .LEAVE no tiene soporte"
 
-#: config/tc-hppa.c:6947
+#: config/tc-hppa.c:6948
 msgid "Unrecognized .LEVEL argument\n"
 msgstr "No se reconoce el argumento de .LEVEL\n"
 
-#: config/tc-hppa.c:6983
+#: config/tc-hppa.c:6984
 #, c-format
 msgid "Cannot define static symbol: %s\n"
 msgstr "No se puede definir el símbolo estático: %s\n"
 
-#: config/tc-hppa.c:7018
+#: config/tc-hppa.c:7019
 msgid "Nested procedures"
 msgstr "Procedimientos anidados"
 
-#: config/tc-hppa.c:7028
+#: config/tc-hppa.c:7029
 msgid "Cannot allocate unwind descriptor\n"
 msgstr "No se puede asignar un descriptor de desenredo\n"
 
-#: config/tc-hppa.c:7128
+#: config/tc-hppa.c:7129
 msgid "misplaced .procend"
 msgstr ".procend mal colocado"
 
-#: config/tc-hppa.c:7131
+#: config/tc-hppa.c:7132
 msgid "Missing .callinfo for this procedure"
 msgstr "Falta un .callinfo para este procedimiento"
 
-#: config/tc-hppa.c:7134
+#: config/tc-hppa.c:7135
 msgid "Missing .EXIT for a .ENTRY"
 msgstr "Falta un .EXIT para un .ENTRY"
 
-#: config/tc-hppa.c:7172
+#: config/tc-hppa.c:7173
 msgid "Not in a space.\n"
 msgstr "No está en un espacio.\n"
 
-#: config/tc-hppa.c:7175
+#: config/tc-hppa.c:7176
 msgid "Not in a subspace.\n"
 msgstr "No está en un subespacio.\n"
 
-#: config/tc-hppa.c:7266
+#: config/tc-hppa.c:7267
 msgid "Invalid .SPACE argument"
 msgstr "Argumento de .SPACE inválido"
 
-#: config/tc-hppa.c:7313
+#: config/tc-hppa.c:7314
 msgid "Can't change spaces within a procedure definition. Ignored"
 msgstr "No se pueden cambiar espacios dentro de una definición de procedimiento. Ignorado"
 
-#: config/tc-hppa.c:7442
+#: config/tc-hppa.c:7443
 #, c-format
 msgid "Undefined space: '%s' Assuming space number = 0."
 msgstr "Espacio indefinido: '%s' Se asume que el número de espacio = 0."
 
-#: config/tc-hppa.c:7466
+#: config/tc-hppa.c:7467
 msgid "Must be in a space before changing or declaring subspaces.\n"
 msgstr "Debe estar en un espacio antes de cambiar o declarar subespacios.\n"
 
-#: config/tc-hppa.c:7470
+#: config/tc-hppa.c:7471
 msgid "Can't change subspaces within a procedure definition. Ignored"
 msgstr "No se pueden cambiar subespacios dentro de una definición de procedimiento. Ignorado"
 
-#: config/tc-hppa.c:7506
+#: config/tc-hppa.c:7507
 msgid "Parameters of an existing subspace can't be modified"
 msgstr "No se pueden modificar los parámetros de un subespacio existente"
 
-#: config/tc-hppa.c:7558
+#: config/tc-hppa.c:7559
 msgid "Alignment must be a power of 2"
 msgstr "La alineación debe ser una potencia de 2"
 
-#: config/tc-hppa.c:7605
+#: config/tc-hppa.c:7606
 msgid "FIRST not supported as a .SUBSPACE argument"
 msgstr "FIRST no tiene soporte como un argumento de .SUBSPACE"
 
-#: config/tc-hppa.c:7607
+#: config/tc-hppa.c:7608
 msgid "Invalid .SUBSPACE argument"
 msgstr "Argumento de .SUBSPACE inválido"
 
-#: config/tc-hppa.c:7796
+#: config/tc-hppa.c:7797
 #, c-format
 msgid "Internal error: Unable to find containing space for %s."
 msgstr "Error interno: No se puede encontrar el espacio contenedor para %s."
 
-#: config/tc-hppa.c:7836
+#: config/tc-hppa.c:7837
 #, c-format
 msgid "Out of memory: could not allocate new space chain entry: %s\n"
 msgstr "Memoria agotada: no se puede asignar una nueva entrada de cadena de espacio: %s\n"
 
-#: config/tc-hppa.c:7925
+#: config/tc-hppa.c:7926
 #, c-format
 msgid "Out of memory: could not allocate new subspace chain entry: %s\n"
 msgstr "Memoria agotada: no se puede asignar una nueva entrada de cadena de subespacio: %s\n"
 
-#: config/tc-hppa.c:8661
+#: config/tc-hppa.c:8662
 #, c-format
 msgid "Symbol '%s' could not be created."
 msgstr "No se puede crear el símbolo '%s'."
 
-#: config/tc-hppa.c:8665
+#: config/tc-hppa.c:8666
 msgid "No memory for symbol name."
 msgstr "No hay memoria para el nombre del símbolo."
 
-#: config/tc-i386.c:706
+#: config/tc-i386.c:721
 #, c-format
 msgid "%s shortened to %s"
 msgstr "%s reducido a %s"
 
-#: config/tc-i386.c:762
+#: config/tc-i386.c:777
 msgid "same type of prefix used twice"
 msgstr "se utilizó dos veces el mismo tipo de prefijo"
 
-#: config/tc-i386.c:780
+#: config/tc-i386.c:795
 msgid "64bit mode not supported on this CPU."
 msgstr "el modo de 64bit no tiene soporte en este CPU."
 
-#: config/tc-i386.c:784
+#: config/tc-i386.c:799
 msgid "32bit mode not supported on this CPU."
 msgstr "el modo de 32bit no tiene soporte en este CPU."
 
-#: config/tc-i386.c:817
+#: config/tc-i386.c:832
 msgid "bad argument to syntax directive."
 msgstr "argumento erróneo para la directiva de sintaxis."
 
-#: config/tc-i386.c:869
+#: config/tc-i386.c:884
 #, c-format
 msgid "no such architecture: `%s'"
 msgstr "no hay tal arquitectura: `%s'"
 
-#: config/tc-i386.c:874
+#: config/tc-i386.c:889
 msgid "missing cpu architecture"
 msgstr "falta la arquitectura de cpu"
 
-#: config/tc-i386.c:888
+#: config/tc-i386.c:903
 #, c-format
 msgid "no such architecture modifier: `%s'"
 msgstr "no hay tal modificador de arquitectura: `%s'"
 
-#: config/tc-i386.c:904 config/tc-i386.c:5169
+#: config/tc-i386.c:919 config/tc-i386.c:5342
 msgid "Unknown architecture"
 msgstr "Arquitectura desconocida"
 
-#: config/tc-i386.c:1218
-msgid "There are no unsigned pc-relative relocations"
-msgstr "No hay reubicaciones relativas a pc sin signo"
+#: config/tc-i386.c:1247
+#, c-format
+msgid "unknown relocation (%u)"
+msgstr "reubicación desconocida (%u)"
 
-#: config/tc-i386.c:1225 config/tc-i386.c:5379
+#: config/tc-i386.c:1249
 #, c-format
-msgid "can not do %d byte pc-relative relocation"
-msgstr "no se puede hacer la reubicación relativa a pc de %d bytes"
+msgid "%u-byte relocation cannot be applied to %u-byte field"
+msgstr "la reubicación de %u-bytes no se puede aplicar al campo %u-bytes"
+
+#: config/tc-i386.c:1253
+msgid "non-pc-relative relocation for pc-relative field"
+msgstr "reubicación no relativa al para el campo relativo al pc"
+
+#: config/tc-i386.c:1258
+msgid "relocated field and relocation type differ in signedness"
+msgstr "el campo reubicado y el tipo de reubicación difieren en signo"
+
+#: config/tc-i386.c:1267
+msgid "there are no unsigned pc-relative relocations"
+msgstr "no hay reubicaciones relativas a pc sin signo"
 
-#: config/tc-i386.c:1242
+#: config/tc-i386.c:1275
 #, c-format
-msgid "can not do %s %d byte relocation"
-msgstr "no se puede hacer la reubicación %s de %d byte"
+msgid "cannot do %u byte pc-relative relocation"
+msgstr "no se puede hacer la reubicación relativa a pc de %u bytes"
 
-#: config/tc-i386.c:1438 config/tc-i386.c:2416
+#: config/tc-i386.c:1292
+#, c-format
+msgid "cannot do %s %u byte relocation"
+msgstr "no se puede hacer la reubicación %s de %u bytes"
+
+#: config/tc-i386.c:1496 config/tc-i386.c:2527
 #, c-format
 msgid "ambiguous operand size for `%s'"
 msgstr "Tamaño de operando ambiguo para `%s'"
 
-#: config/tc-i386.c:1486
+#: config/tc-i386.c:1544
 #, c-format
 msgid "can't use register '%%%s' as operand %d in '%s'."
 msgstr "no se puede utilizar el registro '%%%s' como operando %d en '%s'."
 
 #. UnixWare fsub no args is alias for fsubp, fadd -> faddp, etc.
-#: config/tc-i386.c:1515
+#: config/tc-i386.c:1573
 #, c-format
 msgid "translating to `%sp'"
 msgstr "traduciendo a `%sp'"
 
-#: config/tc-i386.c:1560
+#: config/tc-i386.c:1618
 #, c-format
 msgid "can't encode register '%%%s' in an instruction requiring REX prefix."
 msgstr "no se pueden codificar el registro '%%%s' en una instrucción que requiere el prefijo REX."
 
-#: config/tc-i386.c:1601 config/tc-i386.c:1699
+#: config/tc-i386.c:1659 config/tc-i386.c:1767
 #, c-format
 msgid "no such instruction: `%s'"
 msgstr "no hay tal instrucción: `%s'"
 
-#: config/tc-i386.c:1611 config/tc-i386.c:1731
+#: config/tc-i386.c:1670 config/tc-i386.c:1799
 #, c-format
 msgid "invalid character %s in mnemonic"
 msgstr "carácter inválido %s en el mnemónico"
 
-#: config/tc-i386.c:1618
+#: config/tc-i386.c:1677
 msgid "expecting prefix; got nothing"
 msgstr "se esperaba un prefijo; se obtuvo nada"
 
-#: config/tc-i386.c:1620
+#: config/tc-i386.c:1679
 msgid "expecting mnemonic; got nothing"
 msgstr "se esperaba un mnemónico; se obtuvo nada"
 
-#: config/tc-i386.c:1639
+#: config/tc-i386.c:1695 config/tc-i386.c:1818
 #, c-format
-msgid "redundant %s prefix"
-msgstr "prefijo %s redundante"
+msgid "`%s' is only supported in 64-bit mode"
+msgstr "`%s' sólo tiene soporte en modo de 64-bit"
 
-#: config/tc-i386.c:1749
+#: config/tc-i386.c:1696 config/tc-i386.c:1817
 #, c-format
 msgid "`%s' is not supported in 64-bit mode"
 msgstr "`%s' no tiene soporte en modo de 64-bit"
 
-#: config/tc-i386.c:1750
+#: config/tc-i386.c:1707
 #, c-format
-msgid "`%s' is only supported in 64-bit mode"
-msgstr "`%s' sólo tiene soporte en modo de 64-bit"
+msgid "redundant %s prefix"
+msgstr "prefijo %s redundante"
 
-#: config/tc-i386.c:1756
+#: config/tc-i386.c:1824
 #, c-format
 msgid "`%s' is not supported on `%s%s'"
 msgstr "`%s' no tiene soporte en `%s%s'"
 
-#: config/tc-i386.c:1763
+#: config/tc-i386.c:1831
 msgid "use .code16 to ensure correct addressing mode"
 msgstr "use .code16 para asegurar el modo de direccionamiento correcto"
 
-#: config/tc-i386.c:1770
+#: config/tc-i386.c:1844
 #, c-format
 msgid "expecting string instruction after `%s'"
 msgstr "se espera una instrucción de cadena después de `%s'"
 
-#: config/tc-i386.c:1798
+#: config/tc-i386.c:1878
 #, c-format
 msgid "invalid character %s before operand %d"
 msgstr "caracter inválido %s antes del operando %d"
 
-#: config/tc-i386.c:1812
+#: config/tc-i386.c:1892
 #, c-format
 msgid "unbalanced parenthesis in operand %d."
 msgstr "paréntesis sin balancear en el operando %d."
 
-#: config/tc-i386.c:1815
+#: config/tc-i386.c:1895
 #, c-format
 msgid "unbalanced brackets in operand %d."
 msgstr "llaves sin balancear en el operando %d."
 
-#: config/tc-i386.c:1824
+#: config/tc-i386.c:1904
 #, c-format
 msgid "invalid character %s in operand %d"
 msgstr "carácter inválido %s en el operando %d"
 
-#: config/tc-i386.c:1851
+#: config/tc-i386.c:1931
 #, c-format
 msgid "spurious operands; (%d operands/instruction max)"
 msgstr "operandos espurios; (%d operandos/instrucción máximo)"
 
-#: config/tc-i386.c:1874
+#: config/tc-i386.c:1954
 msgid "expecting operand after ','; got nothing"
 msgstr "se esperaba un operando después de ','; se obtuvo nada"
 
-#: config/tc-i386.c:1879
+#: config/tc-i386.c:1959
 msgid "expecting operand before ','; got nothing"
 msgstr "se esperaba un operando antes de ','; se obtuvo nada"
 
 #. We found no match.
-#: config/tc-i386.c:2225
+#: config/tc-i386.c:2336
 #, c-format
 msgid "suffix or operands invalid for `%s'"
 msgstr "sufijo u operandos inválidos para `%s'"
 
-#: config/tc-i386.c:2236
+#: config/tc-i386.c:2347
 #, c-format
 msgid "indirect %s without `*'"
 msgstr "%s indirecto sin `*'"
 
 #. Warn them that a data or address size prefix doesn't
 #. affect assembly of the next line of code.
-#: config/tc-i386.c:2244
+#: config/tc-i386.c:2355
 #, c-format
 msgid "stand-alone `%s' prefix"
 msgstr "prefijo `%s' por sí solo"
 
-#: config/tc-i386.c:2273 config/tc-i386.c:2288
+#: config/tc-i386.c:2384 config/tc-i386.c:2399
 #, c-format
 msgid "`%s' operand %d must use `%%es' segment"
 msgstr "`%s' operando %d debe usar el segmento `%%es'"
 
-#: config/tc-i386.c:2398
+#: config/tc-i386.c:2509
 msgid "no instruction mnemonic suffix given and no register operands; can't size instruction"
 msgstr "no se dio un sufijo mnemónico de instrucción y ningún operando de registro; no se puede determinar el tamaño de la instrucción"
 
 #. Prohibit these changes in the 64bit mode, since the
 #. lowering is more complicated.
-#: config/tc-i386.c:2499 config/tc-i386.c:2558 config/tc-i386.c:2575
-#: config/tc-i386.c:2607 config/tc-i386.c:2640
+#: config/tc-i386.c:2610 config/tc-i386.c:2669 config/tc-i386.c:2686
+#: config/tc-i386.c:2718 config/tc-i386.c:2751
 #, c-format
 msgid "Incorrect register `%%%s' used with `%c' suffix"
 msgstr "Se utilizó el registro incorrecto `%%%s' con el sufijo `%c'"
 
-#: config/tc-i386.c:2507 config/tc-i386.c:2565 config/tc-i386.c:2647
+#: config/tc-i386.c:2618 config/tc-i386.c:2676 config/tc-i386.c:2758
 #, c-format
 msgid "using `%%%s' instead of `%%%s' due to `%c' suffix"
 msgstr "utilizando `%%%s' en lugar de `%%%s' debido al sufijo `%c'"
 
-#: config/tc-i386.c:2522 config/tc-i386.c:2543 config/tc-i386.c:2594
-#: config/tc-i386.c:2625
+#: config/tc-i386.c:2633 config/tc-i386.c:2654 config/tc-i386.c:2705
+#: config/tc-i386.c:2736
 #, c-format
 msgid "`%%%s' not allowed with `%s%c'"
 msgstr "no se permite `%%%s' con `%s%c'"
 
-#: config/tc-i386.c:2688
+#: config/tc-i386.c:2799
 msgid "no instruction mnemonic suffix given; can't determine immediate size"
 msgstr "no se dio un sufijo mnemónico de instrucción; no se puede determinar el tamaño inmediato"
 
-#: config/tc-i386.c:2721
+#: config/tc-i386.c:2832
 #, c-format
 msgid "no instruction mnemonic suffix given; can't determine immediate size %x %c"
 msgstr "no se dio un sufijo mnemónico de instrucción; no se puede determinar el tamaño inmediato %x %c"
 
 #. Reversed arguments on faddp, fsubp, etc.
-#: config/tc-i386.c:2770
+#: config/tc-i386.c:2881
 #, c-format
 msgid "translating to `%s %%%s,%%%s'"
 msgstr "traduciendo a `%s %%%s,%%%s'"
 
 #. Extraneous `l' suffix on fp insn.
-#: config/tc-i386.c:2777
+#: config/tc-i386.c:2888
 #, c-format
 msgid "translating to `%s %%%s'"
 msgstr "traduciendo a `%s %%%s'"
 
-#: config/tc-i386.c:2795
+#: config/tc-i386.c:2906
 #, c-format
 msgid "you can't `pop %%cs'"
 msgstr "no se puede hacer `pop %%cs'"
 
-#. lea
-#: config/tc-i386.c:2814
-msgid "segment override on `lea' is ineffectual"
-msgstr "la anulación del segmento en `lea' no tiene efecto"
+#: config/tc-i386.c:2927
+#, c-format
+msgid "segment override on `%s' is ineffectual"
+msgstr "la anulación del segmento en `%s' no tiene efecto"
 
-#: config/tc-i386.c:3123 config/tc-i386.c:3217 config/tc-i386.c:3262
+#: config/tc-i386.c:3236 config/tc-i386.c:3330 config/tc-i386.c:3375
 msgid "skipping prefixes on this instruction"
 msgstr "saltando los prefijos en esta instrucción"
 
-#: config/tc-i386.c:3282
+#: config/tc-i386.c:3395
 msgid "16-bit jump out of range"
 msgstr "salto de 16-bit fuera de rango"
 
-#: config/tc-i386.c:3291
+#: config/tc-i386.c:3404
 #, c-format
 msgid "can't handle non absolute segment in `%s'"
 msgstr "no se puede manejar un segmento no absoluto en `%s'"
 
-#: config/tc-i386.c:3749
+#: config/tc-i386.c:3897
 #, c-format
-msgid "@%s reloc is not supported in %s bit mode"
-msgstr "las reubicaciones @%s no tienen soporte en modo de %s bits"
+msgid "@%s reloc is not supported with %d-bit output format"
+msgstr "las reubicaciones @%s no tienen soporte con el formato de salida de %d bits"
 
-#: config/tc-i386.c:3867
+#: config/tc-i386.c:3986
 msgid "only 1 or 2 immediate operands are allowed"
 msgstr "sólo se permiten 1 ó dos operandos inmediatos"
 
-#: config/tc-i386.c:3890 config/tc-i386.c:4071
+#: config/tc-i386.c:4007 config/tc-i386.c:4218
 #, c-format
 msgid "junk `%s' after expression"
 msgstr "basura `%s' después de la expresión"
 
 #. Missing or bad expr becomes absolute 0.
-#: config/tc-i386.c:3901
+#: config/tc-i386.c:4016
 #, c-format
 msgid "missing or invalid immediate expression `%s' taken as 0"
 msgstr "la expresión inmediata faltante o inválida `%s' se toma como 0"
 
-#: config/tc-i386.c:3926 config/tc-i386.c:4129
+#: config/tc-i386.c:4041 config/tc-i386.c:4277
 #, c-format
 msgid "unimplemented segment %s in operand"
 msgstr "segmento %s sin implementar en el operando"
 
-#: config/tc-i386.c:3968 config/tc-i386.c:6264
+#: config/tc-i386.c:4088
 #, c-format
 msgid "expecting scale factor of 1, 2, 4, or 8: got `%s'"
 msgstr "se esperaba un factor de escala de 1, 2, 4, u 8: se obtuvo `%s'"
 
-#: config/tc-i386.c:3975
+#: config/tc-i386.c:4097
 #, c-format
 msgid "scale factor of %d without an index register"
 msgstr "factor de escala de %d sin un registro índice"
 
-#: config/tc-i386.c:4090
+#: config/tc-i386.c:4236
 #, c-format
 msgid "bad expression used with @%s"
 msgstr "se utilizó una expresión errónea con @%s"
 
-#: config/tc-i386.c:4213
+#: config/tc-i386.c:4386
 #, c-format
 msgid "`%s' is not a valid base/index expression"
 msgstr "`%s' no es una expresión base/índice válida"
 
-#: config/tc-i386.c:4217
+#: config/tc-i386.c:4390
 #, c-format
 msgid "`%s' is not a valid %s bit base/index expression"
 msgstr "`%s' no es una expresión de %s bit base/índice válida"
 
-#: config/tc-i386.c:4291
+#: config/tc-i386.c:4464
 #, c-format
 msgid "bad memory operand `%s'"
 msgstr "operando de memoria `%s' erróneo"
 
-#: config/tc-i386.c:4306
+#: config/tc-i386.c:4479
 #, c-format
 msgid "junk `%s' after register"
 msgstr "basura `%s' después del registro"
 
-#: config/tc-i386.c:4315 config/tc-i386.c:4430 config/tc-i386.c:4468
+#: config/tc-i386.c:4488 config/tc-i386.c:4603 config/tc-i386.c:4641
 #, c-format
 msgid "bad register name `%s'"
 msgstr "nombre de registro `%s' erróneo"
 
-#: config/tc-i386.c:4323
+#: config/tc-i386.c:4496
 msgid "immediate operand illegal with absolute jump"
 msgstr "operando inmediato ilegal con salto absoluto"
 
-#: config/tc-i386.c:4345
+#: config/tc-i386.c:4518
 #, c-format
 msgid "too many memory references for `%s'"
 msgstr "demasiadas referencias a memoria para `%s'"
 
-#: config/tc-i386.c:4423
+#: config/tc-i386.c:4596
 #, c-format
 msgid "expecting `,' or `)' after index register in `%s'"
 msgstr "se esperaba `,' ó `)' después del registro índice en `%s'"
 
-#: config/tc-i386.c:4447
+#: config/tc-i386.c:4620
 #, c-format
 msgid "expecting `)' after scale factor in `%s'"
 msgstr "se esperaba `)' después del factor de escala en `%s'"
 
-#: config/tc-i386.c:4454
+#: config/tc-i386.c:4627
 #, c-format
 msgid "expecting index register or scale factor after `,'; got '%c'"
 msgstr "se esperaba un registro índice o un factor de escala después de `,'; se obtuvo '%c'"
 
-#: config/tc-i386.c:4461
+#: config/tc-i386.c:4634
 #, c-format
 msgid "expecting `,' or `)' after base register in `%s'"
 msgstr "se esperaba `,' ó `)' después del registro base en `%s'"
 
 #. It's not a memory operand; argh!
-#: config/tc-i386.c:4502
+#: config/tc-i386.c:4675
 #, c-format
 msgid "invalid char %s beginning operand %d `%s'"
 msgstr "caracter inválido %s al inicio del operando %d `%s'"
 
-#: config/tc-i386.c:4677
+#: config/tc-i386.c:4850
 msgid "long jump required"
 msgstr "se requiere un salto largo"
 
-#: config/tc-i386.c:4954
+#: config/tc-i386.c:5127
 msgid "Bad call to md_atof ()"
 msgstr "Llamada errónea a md_atof ()"
 
-#: config/tc-i386.c:5121
+#: config/tc-i386.c:5294
 msgid "No compiled in support for x86_64"
 msgstr "No se compiló el soporte para x86_64"
 
-#: config/tc-i386.c:5142
+#: config/tc-i386.c:5315
 #, c-format
 msgid ""
 "  -Q                      ignored\n"
@@ -5099,7 +4893,7 @@ msgstr ""
 "  -q                      omite algunos avisos\n"
 "  -s                      ignorado\n"
 
-#: config/tc-i386.c:5150
+#: config/tc-i386.c:5323
 #, c-format
 msgid ""
 "  -n                      Do not optimize code alignment\n"
@@ -5108,72 +4902,120 @@ msgstr ""
 "  -n                      No optimiza la alineación de código\n"
 "  -q                      omite algunos avisos\n"
 
-#: config/tc-i386.c:5250 config/tc-s390.c:1826
+#: config/tc-i386.c:5425 config/tc-s390.c:1861
 msgid "GOT already in symbol table"
 msgstr "GOT ya está en la tabla de símbolos"
 
-#: config/tc-i386.c:5394
+#: config/tc-i386.c:5568
+#, c-format
+msgid "can not do %d byte pc-relative relocation"
+msgstr "no se puede hacer la reubicación relativa a pc de %d bytes"
+
+#: config/tc-i386.c:5586
 #, c-format
 msgid "can not do %d byte relocation"
 msgstr "no se puede hacer la reubicación de %d bytes"
 
-#: config/tc-i386.c:5463 config/tc-s390.c:2272
+#: config/tc-i386.c:5657 config/tc-s390.c:2307
 #, c-format
 msgid "cannot represent relocation type %s"
 msgstr "no se puede representar el tipo de reubicación %s"
 
-#: config/tc-i386.c:5709
+#: config/tc-i386.c:5912
 #, c-format
 msgid "invalid operand for '%s' ('%s' unexpected)"
 msgstr "operando inválido para '%s' ('%s' inesperado)"
 
-#: config/tc-i386.c:5721
+#: config/tc-i386.c:5924
 #, c-format
 msgid "too many memory references for '%s'"
 msgstr "demasiadas referencias a memoria para '%s'"
 
-#: config/tc-i386.c:5996
+#. See the comments in intel_bracket_expr.
+#: config/tc-i386.c:5935
+#, c-format
+msgid "Treating `%s' as memory reference"
+msgstr "Se trata `%s' como una referencia de memoria"
+
+#: config/tc-i386.c:6247
 #, c-format
 msgid "Unknown operand modifier `%s'"
 msgstr "Modificador de operando `%s' desconocido"
 
-#: config/tc-i386.c:6006
+#: config/tc-i386.c:6262
 msgid "Conflicting operand modifiers"
 msgstr "Modificadores de operando en conflicto"
 
-#: config/tc-i386.c:6236
+#: config/tc-i386.c:6311
+msgid "Invalid operand to `OFFSET'"
+msgstr "Operando inválido para `OFFSET'"
+
+#: config/tc-i386.c:6384
+#, c-format
+msgid "`[%.*s]' taken to mean just `%.*s'"
+msgstr "se toma `[%.*s]' y sólo signifiqua `%.*s'"
+
+#: config/tc-i386.c:6474
 #, c-format
 msgid "`%s' is not a valid segment register"
 msgstr "`%s' no es un registro de segmento válido"
 
-#: config/tc-i386.c:6246 config/tc-i386.c:6373
-msgid "Register scaling only allowed in memory operands."
-msgstr "El escalamiento de registros sólo se permite en operandos de memoria."
+#: config/tc-i386.c:6478
+msgid "Extra segment override ignored"
+msgstr "Se ignora la sobreescritura de segmento extra"
 
-#: config/tc-i386.c:6277
-msgid "Too many register references in memory operand."
-msgstr "Demasiadas referencias a registros en un operando de memoria."
+#: config/tc-i386.c:6512 config/tc-i386.c:6681
+msgid "Register scaling only allowed in memory operands"
+msgstr "El escalamiento de registros sólo se permite en operandos de memoria"
 
-#: config/tc-i386.c:6352
+#: config/tc-i386.c:6534 config/tc-i386.c:6658
 #, c-format
-msgid "Syntax error. Expecting a constant. Got `%s'."
-msgstr "Error sintáctico. Se esperaba una constante. Se obtuvo `%s'."
+msgid "Syntax error: Expecting a constant, got `%s'"
+msgstr "Error sintáctico: Se esperaba una constante, se obtuvo `%s'"
 
-#: config/tc-i386.c:6422
+#: config/tc-i386.c:6562
+msgid "Too many register references in memory operand"
+msgstr "Demasiadas referencias a registros en un operando de memoria"
+
+#: config/tc-i386.c:6573
+msgid "Using register names in OFFSET expressions is deprecated"
+msgstr "El uso de nombres de registro en expresiones OFFSET es obsoleto"
+
+#: config/tc-i386.c:6586
+msgid "Invalid use of register"
+msgstr "Uso inválido de registro"
+
+#: config/tc-i386.c:6731
 #, c-format
 msgid "Unrecognized token '%s'"
 msgstr "Elemento '%s' no reconocido"
 
-#: config/tc-i386.c:6439
+#: config/tc-i386.c:6748
 #, c-format
 msgid "Unexpected token `%s'"
 msgstr "Elemento `%s' inesperado"
 
-#: config/tc-i386.c:6622
+#: config/tc-i386.c:6910
+msgid "`:' expected"
+msgstr "se esperaba `:'"
+
+#: config/tc-i386.c:6935
 #, c-format
 msgid "Unrecognized token `%s'"
 msgstr "Elemento `%s' no reconocido"
 
+#: config/tc-i386.c:7070
+msgid "Bad .section directive: want a,l,w,x,M,S,G,T in string"
+msgstr "Directiva .section errónea: se quiere a,l,w,x,M,S,G,T en la cadena"
+
+#: config/tc-i386.c:7073
+msgid "Bad .section directive: want a,w,x,M,S,G,T in string"
+msgstr "Directiva .section errónea: se quiere a,w,x,M,S,G,T en la cadena"
+
+#: config/tc-i386.c:7092
+msgid ".largecomm supported only in 64bit mode, producing .comm"
+msgstr ".largecomm sólo tiene soporte en modo de 64bit, se produce .comm"
+
 #: config/tc-i860.c:124
 msgid "Directive .dual available only with -mintel-syntax option"
 msgstr "La directiva .dual sólo está disponible con la opción -mintel-syntax"
@@ -5190,7 +5032,7 @@ msgstr "La directiva .atmp s
 msgid "Unknown temporary pseudo register"
 msgstr "Pseudo registro temporal desconocido"
 
-#: config/tc-i860.c:229 config/tc-mips.c:1149
+#: config/tc-i860.c:229 config/tc-mips.c:1412
 #, c-format
 msgid "internal error: can't hash `%s': %s\n"
 msgstr "error interno: no se puede dispersar `%s': %s\n"
@@ -5199,6 +5041,11 @@ msgstr "error interno: no se puede dispersar `%s': %s\n"
 msgid "Defective assembler.  No assembly attempted."
 msgstr "Ensamblador defectuoso.  No se intentó ensamblar."
 
+#: config/tc-i860.c:395 config/tc-i860.c:940 config/tc-m68k.c:3443
+#: config/tc-m68k.c:3475 config/tc-sparc.c:2657
+msgid "failed sanity check."
+msgstr "falló la prueba de sanidad."
+
 #: config/tc-i860.c:402
 #, c-format
 msgid "Expanded opcode after delayed branch: `%s'"
@@ -5238,10 +5085,6 @@ msgstr "'d.%s' debe estar alineado a 8-bytes"
 msgid "Prefix 'd.' invalid for instruction `%s'"
 msgstr "Prefijo 'd.' inválido para la instrucción `%s'"
 
-#: config/tc-i860.c:1005 config/tc-sparc.c:2845
-msgid "bad segment"
-msgstr "segmento erróneo"
-
 #: config/tc-i860.c:1088
 msgid "i860_estimate_size_before_relax\n"
 msgstr "i860_estimate_size_before_relax\n"
@@ -5304,46 +5147,99 @@ msgstr "Un desplazamiento de ramificaci
 msgid "Unrecognized fix-up (0x%08lx)"
 msgstr "Compostura no reconocida (0x%08lx)"
 
-#: config/tc-i860.h:80
+#: config/tc-i860.h:76
 msgid "i860_convert_frag\n"
 msgstr "i860_convert_frag\n"
 
-#: config/tc-i960.c:574
+#: config/tc-i960.c:488
 #, c-format
 msgid "Hashing returned \"%s\"."
 msgstr "La dispersión devolvió \"%s\"."
 
-#. Offset of last character in opcode mnemonic
-#: config/tc-i960.c:608
+#: config/tc-i960.c:584 config/tc-i960.c:1114
+msgid "expression syntax error"
+msgstr "error sintáctico en la expresión"
+
+#: config/tc-i960.c:620
+msgid "attempt to branch into different segment"
+msgstr "se intentó ramificar en un segmento diferente"
+
+#: config/tc-i960.c:624
+#, c-format
+msgid "target of %s instruction must be a label"
+msgstr "el objetivo de la instrucción %s debe ser una etiqueta"
+
+#: config/tc-i960.c:734
+msgid "unaligned register"
+msgstr "registro sin alinear"
+
+#: config/tc-i960.c:756
+msgid "no such sfr in this architecture"
+msgstr "no hay un sfr en esta arquitectura"
+
+#: config/tc-i960.c:794
+msgid "illegal literal"
+msgstr "literal ilegal"
+
+#: config/tc-i960.c:837
+msgid "unmatched '['"
+msgstr "'[' desemparejado"
+
+#: config/tc-i960.c:844
+msgid "garbage after index spec ignored"
+msgstr "se ignora la basura después de la especificación del índice"
+
+#: config/tc-i960.c:944
+msgid "invalid index register"
+msgstr "registro índice inválido"
+
+#: config/tc-i960.c:967
+msgid "invalid scale factor"
+msgstr "factor de escala inválido"
+
+#: config/tc-i960.c:1191
+msgid "architecture of opcode conflicts with that of earlier instruction(s)"
+msgstr "la arquitectura del código de operación tiene conflictos con alguno de una(s) instrucción(es) anterior(es)"
+
+#: config/tc-i960.c:1425 config/tc-xtensa.c:11295
+msgid "too many operands"
+msgstr "demasiados operandos"
+
+#. We never moved: there was no opcode either!
+#: config/tc-i960.c:1473
+msgid "missing opcode"
+msgstr "falta el código de operación"
+
+#: config/tc-i960.c:1613
 msgid "branch prediction invalid on this opcode"
 msgstr "predicción de ramificación inválida en este código de operación"
 
-#: config/tc-i960.c:648
+#: config/tc-i960.c:1651
 #, c-format
 msgid "invalid opcode, \"%s\"."
 msgstr "código de operación inválido, \"%s\"."
 
-#: config/tc-i960.c:653
+#: config/tc-i960.c:1653
 #, c-format
 msgid "improper number of operands.  expecting %d, got %d"
 msgstr "número impropio de operandos.  se esperaban %d, se obtuvieron %d"
 
-#: config/tc-i960.c:877
+#: config/tc-i960.c:1810
 #, c-format
 msgid "Fixup of %ld too large for field width of %d"
 msgstr "La compostura de %ld es demasiado grande para el campo de anchura %d"
 
-#: config/tc-i960.c:994
+#: config/tc-i960.c:1920
 #, c-format
 msgid "invalid architecture %s"
 msgstr "arquitectura %s inválida"
 
-#: config/tc-i960.c:1014
+#: config/tc-i960.c:1940
 #, c-format
 msgid "I960 options:\n"
 msgstr "opciones de I960:\n"
 
-#: config/tc-i960.c:1017
+#: config/tc-i960.c:1943
 #, c-format
 msgid ""
 "\n"
@@ -5362,208 +5258,153 @@ msgstr ""
 "-no-relax\t\tno alterar las instrucciones comparar-y-ramificar para\n"
 "\t\t\tdesubicaciones largas\n"
 
-#: config/tc-i960.c:1424 config/tc-xtensa.c:11516
-msgid "too many operands"
-msgstr "demasiados operandos"
-
-#: config/tc-i960.c:1482 config/tc-i960.c:1707
-msgid "expression syntax error"
-msgstr "error sintáctico en la expresión"
-
-#: config/tc-i960.c:1520
-msgid "attempt to branch into different segment"
-msgstr "se intentó ramificar en un segmento diferente"
-
-#: config/tc-i960.c:1524
-#, c-format
-msgid "target of %s instruction must be a label"
-msgstr "el objetivo de la instrucción %s debe ser una etiqueta"
-
-#: config/tc-i960.c:1562
-msgid "unmatched '['"
-msgstr "'[' desemparejado"
-
-#: config/tc-i960.c:1573
-msgid "garbage after index spec ignored"
-msgstr "se ignora la basura después de la especificación del índice"
-
-#. We never moved: there was no opcode either!
-#: config/tc-i960.c:1638
-msgid "missing opcode"
-msgstr "falta el código de operación"
-
-#: config/tc-i960.c:2051
-msgid "invalid index register"
-msgstr "registro índice inválido"
-
-#: config/tc-i960.c:2074
-msgid "invalid scale factor"
-msgstr "factor de escala inválido"
-
-#: config/tc-i960.c:2255
-msgid "unaligned register"
-msgstr "registro sin alinear"
-
-#: config/tc-i960.c:2278
-msgid "no such sfr in this architecture"
-msgstr "no hay un sfr en esta arquitectura"
-
-#: config/tc-i960.c:2316
-msgid "illegal literal"
-msgstr "literal ilegal"
-
-#. Should not happen: see block comment above
-#: config/tc-i960.c:2544
-#, c-format
-msgid "Trying to 'bal' to %s"
-msgstr "Tratando de hacer 'bal' a %s"
-
-#: config/tc-i960.c:2555
-msgid "Looks like a proc, but can't tell what kind.\n"
-msgstr "Se ve como un proc, no se puede saber de qué tipo.\n"
-
-#: config/tc-i960.c:2587
+#: config/tc-i960.c:2207
 msgid "should have 1 or 2 operands"
 msgstr "debe tener 1 o 2 operandos"
 
-#: config/tc-i960.c:2596 config/tc-i960.c:2615
+#: config/tc-i960.c:2215 config/tc-i960.c:2230
 #, c-format
 msgid "Redefining leafproc %s"
 msgstr "Redefiniendo el proceso hoja %s"
 
-#: config/tc-i960.c:2646
+#: config/tc-i960.c:2260
 msgid "should have two operands"
 msgstr "debe tener dos operandos"
 
-#: config/tc-i960.c:2656
+#: config/tc-i960.c:2270
 msgid "'entry_num' must be absolute number in [0,31]"
 msgstr "'entry_num' debe ser un número absoluto en [0,31]"
 
-#: config/tc-i960.c:2665
+#: config/tc-i960.c:2278
 #, c-format
 msgid "Redefining entrynum for sysproc %s"
 msgstr "Redefiniendo el número de entrada para el proceso del sistema %s"
 
-#: config/tc-i960.c:2769
-msgid "architecture of opcode conflicts with that of earlier instruction(s)"
-msgstr "la arquitectura del código de operación tiene conflictos con alguno de una(s) instrucción(es) anterior(es)"
+#. Should not happen: see block comment above.
+#: config/tc-i960.c:2378
+#, c-format
+msgid "Trying to 'bal' to %s"
+msgstr "Tratando de hacer 'bal' a %s"
+
+#: config/tc-i960.c:2388
+msgid "Looks like a proc, but can't tell what kind.\n"
+msgstr "Se ve como un proc, no se puede saber de qué tipo.\n"
 
-#: config/tc-i960.c:2790
+#: config/tc-i960.c:2407
 msgid "big endian mode is not supported"
 msgstr "el modo big endian no tiene soporte"
 
-#: config/tc-i960.c:2792
+#: config/tc-i960.c:2409
 #, c-format
 msgid "ignoring unrecognized .endian type `%s'"
 msgstr "se ignora el tipo .endian `%s' no reconocido"
 
-#: config/tc-i960.c:3076
-#, c-format
-msgid "leafproc symbol '%s' undefined"
-msgstr "símolo de proceso hoja '%s' indefinido"
-
-#: config/tc-i960.c:3086
-#, c-format
-msgid "Warning: making leafproc entries %s and %s both global\n"
-msgstr "Aviso: haciendo globales las entradas de proceso hoja %s y %s\n"
+#: config/tc-i960.c:2454
+msgid "can't use COBR format with external label"
+msgstr "no se puede utilizar el formato COBR con una etiqueta externa"
 
-#: config/tc-i960.c:3191
+#: config/tc-i960.c:2629
 msgid "option --link-relax is only supported in b.out format"
 msgstr "la opción --link-relax solamente tiene soporte en el formato b.out"
 
-#: config/tc-ia64.c:982
+#: config/tc-i960.c:2656
+#, c-format
+msgid "No 'bal' entry point for leafproc %s"
+msgstr "No hay un punto de entrada 'bal' para el proceso hoja %s"
+
+#: config/tc-ia64.c:1008
 msgid "Bad .section directive: want a,o,s,w,x,M,S,G,T in string"
 msgstr "Directiva .section errónea: se quiere a,o,s,w,x,M,S,G,T en la cadena"
 
-#: config/tc-ia64.c:1119
+#: config/tc-ia64.c:1151
 msgid "Unwind directive not followed by an instruction."
 msgstr "La directiva de desenredo no está seguida por una instrucción."
 
-#: config/tc-ia64.c:4930
+#: config/tc-ia64.c:5114
 msgid "Register name expected"
 msgstr "Se esperaba un nombre de registro"
 
-#: config/tc-ia64.c:4935 config/tc-ia64.c:5251
+#: config/tc-ia64.c:5119 config/tc-ia64.c:5435
 msgid "Comma expected"
 msgstr "Se esperaba una coma"
 
-#: config/tc-ia64.c:4943
+#: config/tc-ia64.c:5127
 msgid "Register value annotation ignored"
 msgstr "Se ignora la anotación del valor del registro"
 
-#: config/tc-ia64.c:4984
+#: config/tc-ia64.c:5168
 msgid "Directive invalid within a bundle"
 msgstr "Directiva inválida dentro de una agrupación"
 
-#: config/tc-ia64.c:5077
+#: config/tc-ia64.c:5261
 msgid "Missing predicate relation type"
 msgstr "Falta el tipo de relación del predicado"
 
-#: config/tc-ia64.c:5083
+#: config/tc-ia64.c:5267
 msgid "Unrecognized predicate relation type"
 msgstr "Tipo de relación de predicado no reconocido"
 
-#: config/tc-ia64.c:5130
+#: config/tc-ia64.c:5314
 msgid "Bad register range"
 msgstr "Rango de registro erróneo"
 
-#: config/tc-ia64.c:5139
+#: config/tc-ia64.c:5323
 msgid "Predicate register expected"
 msgstr "Se esperaba un registro de predicado"
 
-#: config/tc-ia64.c:5144
+#: config/tc-ia64.c:5328
 msgid "Duplicate predicate register ignored"
 msgstr "Se ignora el registro de predicado duplicado"
 
-#: config/tc-ia64.c:5162
+#: config/tc-ia64.c:5346
 msgid "Predicate source and target required"
 msgstr "Se requiere el predicado fuente y destino"
 
-#: config/tc-ia64.c:5164 config/tc-ia64.c:5176
+#: config/tc-ia64.c:5348 config/tc-ia64.c:5360
 msgid "Use of p0 is not valid in this context"
 msgstr "El uso de p0 no es válido en este contexto"
 
-#: config/tc-ia64.c:5171
+#: config/tc-ia64.c:5355
 msgid "At least two PR arguments expected"
 msgstr "Se esperaban al menos dos argumentos PR"
 
-#: config/tc-ia64.c:5185
+#: config/tc-ia64.c:5369
 msgid "At least one PR argument expected"
 msgstr "Se esperaba al menos un argumento PR"
 
-#: config/tc-ia64.c:5221
+#: config/tc-ia64.c:5405
 #, c-format
 msgid "Inserting \"%s\" into entry hint table failed: %s"
 msgstr "Falló la inserción de \"%s\" en la tabla de entrada de pistas: %s"
 
 #. FIXME -- need 62-bit relocation type
-#: config/tc-ia64.c:5697
+#: config/tc-ia64.c:5881
 msgid "62-bit relocation not yet implemented"
 msgstr "la reubicación de 62-bits aún no está implementada"
 
 #. XXX technically, this is wrong: we should not be issuing warning
 #. messages until we're sure this instruction pattern is going to
 #. be used!
-#: config/tc-ia64.c:5770
+#: config/tc-ia64.c:5954
 msgid "lower 16 bits of mask ignored"
 msgstr "se ignoran los 16 bits inferiores de la máscara"
 
-#: config/tc-ia64.c:6389
+#: config/tc-ia64.c:6569
 msgid "Value truncated to 62 bits"
 msgstr "Valor truncado a 62 bits"
 
 #. Give an error if a frag containing code is not aligned to a 16 byte
 #. boundary.
-#: config/tc-ia64.c:6527 config/tc-ia64.h:171
+#: config/tc-ia64.c:6707 config/tc-ia64.h:171
 msgid "instruction address is not a multiple of 16"
 msgstr "la dirección de la instrucción no es un múltiplo de 16"
 
-#: config/tc-ia64.c:7049
+#: config/tc-ia64.c:7249
 #, c-format
 msgid "Unrecognized option '-x%s'"
 msgstr "Opción '-x%s' no reconocida"
 
-#: config/tc-ia64.c:7077
+#: config/tc-ia64.c:7277
 msgid ""
 "IA-64 options:\n"
 "  --mconstant-gp\t  mark output file as using the constant-GP model\n"
@@ -5573,6 +5414,8 @@ msgid ""
 "\t\t\t  EF_IA_64_NOFUNCDESC_CONS_GP)\n"
 "  -milp32|-milp64|-mlp64|-mp64\tselect data model (default -mlp64)\n"
 "  -mle | -mbe\t\t  select little- or big-endian byte order (default -mle)\n"
+"  -mtune=[itanium1|itanium2]\n"
+"\t\t\t  tune for a specific CPU (default -mtune=itanium2)\n"
 "  -munwind-check=[warning|error]\n"
 "\t\t\t  unwind directive check (default -munwind-check=warning)\n"
 "  -mhint.b=[ok|warning|error]\n"
@@ -5598,6 +5441,9 @@ msgstr ""
 "                              \t(-mlp64 por defecto)\n"
 "  -mle | -mbe\t\t  selecciona el orden de bytes little- o big-endian\n"
 "             \t\t  (-mle por defecto)\n"
+"  -mtune=[itanium1|itanium2]\n"
+"\t\t\t  optimiza para un CPU específico\n"
+"\t\t\t  (por defecto -mtune=itanium2)\n"
 "  -munwind-check=[warning|error]\n"
 "\t\t\t  revisión de directiva de desenredo\n"
 "\t\t\t  (-munwind-check=warning por defecto)\n"
@@ -5614,343 +5460,349 @@ msgstr ""
 "  -xdebugx\t\t  depura el revisor de violaciones de dependencias y\n"
 "\t\t\t  activa la revisión de violaciones de dependencias\n"
 
-#: config/tc-ia64.c:7105
+#: config/tc-ia64.c:7307
 msgid "--gstabs is not supported for ia64"
 msgstr "--gstabs no tiene soporte para ia64"
 
-#: config/tc-ia64.c:7408 config/tc-mips.c:1138
+#: config/tc-ia64.c:7641 config/tc-mips.c:1401
 msgid "Could not set architecture and machine"
 msgstr "No se pueden establecer la arquitectura y la máquina"
 
-#: config/tc-ia64.c:7524
+#: config/tc-ia64.c:7767
 msgid "Explicit stops are ignored in auto mode"
 msgstr "Se ignoran las paradas explícitas en modo automático"
 
-#: config/tc-ia64.c:7576
+#: config/tc-ia64.c:7789
 msgid "Found '{' after explicit switch to automatic mode"
 msgstr "Se encontró '{' después del cambio explícito al modo automático"
 
-#: config/tc-ia64.c:8142
+#: config/tc-ia64.c:8392
 #, c-format
 msgid "Unhandled dependency %s for %s (%s), note %d"
 msgstr "Dependencia sin manejar %s para %s (%s), nota %d"
 
-#: config/tc-ia64.c:9417
+#: config/tc-ia64.c:9667
 #, c-format
 msgid "Unrecognized dependency specifier %d\n"
 msgstr "Especificador de dependencia %d no reconocido\n"
 
-#: config/tc-ia64.c:10311
+#: config/tc-ia64.c:10561
 msgid "Only the first path encountering the conflict is reported"
 msgstr "Solamente se reporta la primera ruta donde se encuentra el conflicto"
 
-#: config/tc-ia64.c:10314
+#: config/tc-ia64.c:10564
 msgid "This is the location of the conflicting usage"
 msgstr "Esta es la ubicación del uso conflictivo"
 
-#: config/tc-ia64.c:11528
+#: config/tc-ia64.c:11788
 msgid "Can't add stop bit to mark end of instruction group"
 msgstr "No se puede agregar el bit de parada para marcar el fin del grupo de instrucciones"
 
-#: config/tc-ia64.c:11628 read.c:1411 read.c:2176 read.c:2772
+#: config/tc-ia64.c:11888 read.c:1440 read.c:2206 read.c:2846 read.c:3173
+#: read.c:3204
 msgid "expected symbol name"
 msgstr "se esperaba un nombre de símbolo"
 
-#: config/tc-ia64.c:11638 read.c:2186 read.c:2782 stabs.c:471
+#: config/tc-ia64.c:11898 read.c:2216 read.c:2856 read.c:3188 stabs.c:466
 #, c-format
 msgid "expected comma after \"%s\""
 msgstr "se esperaba una coma después de \"%s\""
 
-#: config/tc-ia64.c:11680
+#: config/tc-ia64.c:11940
 #, c-format
 msgid "`%s' is already the alias of %s `%s'"
 msgstr "el símbolo `%s' ya es el alias de %s `%s'"
 
-#: config/tc-ia64.c:11690
+#: config/tc-ia64.c:11950
 #, c-format
 msgid "%s `%s' already has an alias `%s'"
 msgstr "%s `%s' ya tiene un alias `%s'"
 
-#: config/tc-ia64.c:11701
+#: config/tc-ia64.c:11961
 #, c-format
 msgid "inserting \"%s\" into %s alias hash table failed: %s"
 msgstr "falló la inserción de \"%s\" en la tabla de dispersión de alias %s: %s"
 
-#: config/tc-ia64.c:11709
+#: config/tc-ia64.c:11969
 #, c-format
 msgid "inserting \"%s\" into %s name hash table failed: %s"
 msgstr "falló la inserción de \"%s\" en la tabla de dispersión de nombres %s: %s"
 
-#: config/tc-ia64.c:11728
+#: config/tc-ia64.c:11988
 #, c-format
 msgid "symbol `%s' aliased to `%s' is not used"
 msgstr "el símbolo `%s' que es alias de `%s' no se utiliza"
 
-#: config/tc-ia64.c:11750
+#: config/tc-ia64.c:12010
 #, c-format
 msgid "section `%s' aliased to `%s' is not used"
 msgstr "la sección `%s' que es alias de `%s' no se utiliza"
 
-#: config/tc-ip2k.c:123
+#: config/tc-ip2k.c:158
 #, c-format
 msgid "IP2K specific command line options:\n"
 msgstr "Opciones de la línea de comandos específicas de IP2K:\n"
 
-#: config/tc-ip2k.c:124
+#: config/tc-ip2k.c:159
 #, c-format
 msgid "  -mip2022               restrict to IP2022 insns \n"
 msgstr "  -mip2022               restringe a insns de IP2022 \n"
 
-#: config/tc-ip2k.c:125
+#: config/tc-ip2k.c:160
 #, c-format
 msgid "  -mip2022ext            permit extended IP2022 insn\n"
 msgstr "  -mip2022ext            permite insns extendidas de IP2022\n"
 
-#: config/tc-ip2k.c:246
+#: config/tc-ip2k.c:274
 msgid "md_pcrel_from\n"
 msgstr "md_pcrel_from\n"
 
+#: config/tc-m32c.c:128
+#, c-format
+msgid " M32C specific command line options:\n"
+msgstr "Opciones de la línea de comandos específicas de M32C:\n"
+
 #. Pretend that we do not recognise this option.
-#: config/tc-m32r.c:334
+#: config/tc-m32r.c:332
 msgid "Unrecognised option: -hidden"
 msgstr "Opción no reconocida: -hidden"
 
-#: config/tc-m32r.c:361 config/tc-sparc.c:596
+#: config/tc-m32r.c:359 config/tc-sparc.c:593
 msgid "Unrecognized option following -K"
 msgstr "Opción no reconocida a continuación de -K"
 
-#: config/tc-m32r.c:377
+#: config/tc-m32r.c:374
 #, c-format
 msgid " M32R specific command line options:\n"
 msgstr "Opciones de la línea de comandos específicas de M32R:\n"
 
-#: config/tc-m32r.c:379
+#: config/tc-m32r.c:376
 #, c-format
 msgid "  -m32r                   disable support for the m32rx instruction set\n"
 msgstr "  -m32r                   desactiva el soporte para el conjunto de instrucciones m32rx\n"
 
-#: config/tc-m32r.c:381
+#: config/tc-m32r.c:378
 #, c-format
 msgid "  -m32rx                  support the extended m32rx instruction set\n"
 msgstr "  -m32rx                  da soporte al conjunto extendido de instrucciones m32rx\n"
 
-#: config/tc-m32r.c:383
+#: config/tc-m32r.c:380
 #, c-format
 msgid "  -m32r2                  support the extended m32r2 instruction set\n"
 msgstr "  -m32r2                  da soporte al conjunto extendido de instrucciones m32r2\n"
 
-#: config/tc-m32r.c:385
+#: config/tc-m32r.c:382
 #, c-format
 msgid "  -EL,-little             produce little endian code and data\n"
 msgstr "  -EL,-little             produce código y datos little endian\n"
 
-#: config/tc-m32r.c:387
+#: config/tc-m32r.c:384
 #, c-format
 msgid "  -EB,-big                produce big endian code and data\n"
 msgstr "  -EB,-big                produce código y datos big endian\n"
 
-#: config/tc-m32r.c:389
+#: config/tc-m32r.c:386
 #, c-format
 msgid "  -parallel               try to combine instructions in parallel\n"
 msgstr "  -parallel               intenta combinar instrucciones en paralelo\n"
 
-#: config/tc-m32r.c:391
+#: config/tc-m32r.c:388
 #, c-format
 msgid "  -no-parallel            disable -parallel\n"
 msgstr "  -no-parallel            desactiva -parallel.\n"
 
-#: config/tc-m32r.c:393
+#: config/tc-m32r.c:390
 #, c-format
 msgid "  -no-bitinst             disallow the M32R2's extended bit-field instructions\n"
 msgstr "  -no-bitinst             desactiva las instrucciones extendidas de campos de bit de M32R2\n"
 
-#: config/tc-m32r.c:395
+#: config/tc-m32r.c:392
 #, c-format
 msgid "  -O                      try to optimize code.  Implies -parallel\n"
 msgstr "  -O                      intenta optimizar código.  Implica -parallel\n"
 
-#: config/tc-m32r.c:398
+#: config/tc-m32r.c:395
 #, c-format
 msgid "  -warn-explicit-parallel-conflicts     warn when parallel instructions\n"
 msgstr "  -warn-explicit-parallel-conflicts     avisa cuando hay instrucciones paralelas\n"
 
-#: config/tc-m32r.c:400
+#: config/tc-m32r.c:397
 #, c-format
 msgid "                                         might violate contraints\n"
 msgstr "                                         que pueden violar las restricciones\n"
 
-#: config/tc-m32r.c:402
+#: config/tc-m32r.c:399
 #, c-format
 msgid "  -no-warn-explicit-parallel-conflicts  do not warn when parallel\n"
 msgstr "  -no-warn-explicit-parallel-conflicts  no avisa cuando las instrucciones\n"
 
-#: config/tc-m32r.c:404
+#: config/tc-m32r.c:401
 #, c-format
 msgid "                                         instructions might violate contraints\n"
 msgstr "                                         paralelas pueden violar restricciones\n"
 
-#: config/tc-m32r.c:406
+#: config/tc-m32r.c:403
 #, c-format
 msgid "  -Wp                     synonym for -warn-explicit-parallel-conflicts\n"
 msgstr "  -Wp                     sinónimo para -warn-explicit-parallel-conflicts\n"
 
-#: config/tc-m32r.c:408
+#: config/tc-m32r.c:405
 #, c-format
 msgid "  -Wnp                    synonym for -no-warn-explicit-parallel-conflicts\n"
 msgstr "  -Wnp                    sinónimo para -no-warn-explicit-parallel-conflicts\n"
 
-#: config/tc-m32r.c:410
+#: config/tc-m32r.c:407
 #, c-format
 msgid "  -ignore-parallel-conflicts            do not check parallel instructions\n"
 msgstr "  -ignore-parallel-conflicts            no revisar cuando hay instrucciones paralelas\n"
 
-#: config/tc-m32r.c:412
+#: config/tc-m32r.c:409
 #, c-format
 msgid "                                         fo contraint violations\n"
 msgstr "                                         que violan las restricciones\n"
 
-#: config/tc-m32r.c:414
+#: config/tc-m32r.c:411
 #, c-format
 msgid "  -no-ignore-parallel-conflicts         check parallel instructions for\n"
 msgstr "  -no-ignore-parallel-conflicts         revisar cuando hay instrucciones paralelas\n"
 
-#: config/tc-m32r.c:416
+#: config/tc-m32r.c:413
 #, c-format
 msgid "                                         contraint violations\n"
 msgstr "                                         que violan las restricciones\n"
 
-#: config/tc-m32r.c:418
+#: config/tc-m32r.c:415
 #, c-format
 msgid "  -Ip                     synonym for -ignore-parallel-conflicts\n"
 msgstr "  -Ip                     sinónimo para -ignore-parallel-conflicts\n"
 
-#: config/tc-m32r.c:420
+#: config/tc-m32r.c:417
 #, c-format
 msgid "  -nIp                    synonym for -no-ignore-parallel-conflicts\n"
 msgstr "  -nIp                    sinónimo para -no-ignore-parallel-conflicts\n"
 
-#: config/tc-m32r.c:423
+#: config/tc-m32r.c:420
 #, c-format
 msgid "  -warn-unmatched-high    warn when an (s)high reloc has no matching low reloc\n"
 msgstr "  -warn-unmatched-high    avisa cundo una reubicación (s)high no tiene una reubicación low correspondiente\n"
 
-#: config/tc-m32r.c:425
+#: config/tc-m32r.c:422
 #, c-format
 msgid "  -no-warn-unmatched-high do not warn about missing low relocs\n"
 msgstr "  -no-warn-unmatched-high no avisa cuando faltan reubicaciones low\n"
 
-#: config/tc-m32r.c:427
+#: config/tc-m32r.c:424
 #, c-format
 msgid "  -Wuh                    synonym for -warn-unmatched-high\n"
 msgstr "  -Wuh                    sinónimo para -warn-unmatched-high\n"
 
-#: config/tc-m32r.c:429
+#: config/tc-m32r.c:426
 #, c-format
 msgid "  -Wnuh                   synonym for -no-warn-unmatched-high\n"
 msgstr "  -Wnuh                   sinónimo para -no-warn-unmatched-high\n"
 
-#: config/tc-m32r.c:432
+#: config/tc-m32r.c:429
 #, c-format
 msgid "  -KPIC                   generate PIC\n"
 msgstr "  -KPIC                   genera PIC\n"
 
-#: config/tc-m32r.c:892
+#: config/tc-m32r.c:850
 msgid "instructions write to the same destination register."
 msgstr "las instrucciones escriben al mismo registro de destino."
 
-#: config/tc-m32r.c:900
+#: config/tc-m32r.c:858
 msgid "Instructions do not use parallel execution pipelines."
 msgstr "Las instrucciones no usan tuberías de ejecución paralela."
 
-#: config/tc-m32r.c:908
+#: config/tc-m32r.c:866
 msgid "Instructions share the same execution pipeline"
 msgstr "Las instrucciones comparten la misma tubería de ejecución"
 
-#: config/tc-m32r.c:984 config/tc-m32r.c:1098
+#: config/tc-m32r.c:931 config/tc-m32r.c:1045
 #, c-format
 msgid "not a 16 bit instruction '%s'"
 msgstr "no hay una instrucción 16 bit '%s'"
 
-#: config/tc-m32r.c:996 config/tc-m32r.c:1110 config/tc-m32r.c:1295
+#: config/tc-m32r.c:943 config/tc-m32r.c:1057 config/tc-m32r.c:1241
 #, c-format
 msgid "instruction '%s' is for the M32R2 only"
 msgstr "la instrucción '%s' sólo es para el M32R2"
 
-#: config/tc-m32r.c:1009 config/tc-m32r.c:1123 config/tc-m32r.c:1308
+#: config/tc-m32r.c:956 config/tc-m32r.c:1070 config/tc-m32r.c:1254
 #, c-format
 msgid "unknown instruction '%s'"
 msgstr "instrucción '%s' desconocida"
 
-#: config/tc-m32r.c:1018 config/tc-m32r.c:1130 config/tc-m32r.c:1315
+#: config/tc-m32r.c:965 config/tc-m32r.c:1077 config/tc-m32r.c:1261
 #, c-format
 msgid "instruction '%s' is for the M32RX only"
 msgstr "la instrucción '%s' sólo es para el M32RX"
 
-#: config/tc-m32r.c:1027 config/tc-m32r.c:1139
+#: config/tc-m32r.c:974 config/tc-m32r.c:1086
 #, c-format
 msgid "instruction '%s' cannot be executed in parallel."
 msgstr "la instrucción '%s' no se puede ejecutar en paralelo."
 
-#: config/tc-m32r.c:1082 config/tc-m32r.c:1164 config/tc-m32r.c:1372
+#: config/tc-m32r.c:1029 config/tc-m32r.c:1111 config/tc-m32r.c:1318
 msgid "internal error: lookup/get operands failed"
 msgstr "error interno: los operandos lookup/get fallaron."
 
-#: config/tc-m32r.c:1149
+#: config/tc-m32r.c:1096
 #, c-format
 msgid "'%s': only the NOP instruction can be issued in parallel on the m32r"
 msgstr "'%s': solamente las instrucciones NOP se puede ejecutar en paralelo en el m32r"
 
-#: config/tc-m32r.c:1178
+#: config/tc-m32r.c:1125
 #, c-format
 msgid "%s: output of 1st instruction is the same as an input to 2nd instruction - is this intentional ?"
 msgstr "%s: la salida de la 1a instrucción es la misma que una entrada a la 2a instrucción - ¿Esto es intencional?"
 
-#: config/tc-m32r.c:1182
+#: config/tc-m32r.c:1129
 #, c-format
 msgid "%s: output of 2nd instruction is the same as an input to 1st instruction - is this intentional ?"
 msgstr "%s: la salida de la 2a instrucción es la misma que una entrada a la 1a instrucción - ¿Esto es intencional?"
 
-#: config/tc-m32r.c:1551 config/tc-ppc.c:1758 config/tc-ppc.c:4350
+#: config/tc-m32r.c:1493 config/tc-ppc.c:1773 config/tc-ppc.c:4365
 msgid "Expected comma after symbol-name: rest of line ignored."
 msgstr "Se esperaba coma después del nombre del símbolo: se ingnora el resto de la línea."
 
-#: config/tc-m32r.c:1561
+#: config/tc-m32r.c:1503
 #, c-format
 msgid ".SCOMMon length (%ld.) <0! Ignored."
 msgstr "longitud SCOMMon (%ld.) <0!. Se ignora."
 
-#: config/tc-m32r.c:1575 config/tc-ppc.c:1780 config/tc-ppc.c:2937
-#: config/tc-ppc.c:4374
+#: config/tc-m32r.c:1517 config/tc-ppc.c:1795 config/tc-ppc.c:2952
+#: config/tc-ppc.c:4389
 msgid "ignoring bad alignment"
 msgstr "se ignora la alineación errónea"
 
-#: config/tc-m32r.c:1587 config/tc-ppc.c:1817 config/tc-v850.c:335
+#: config/tc-m32r.c:1529 config/tc-ppc.c:1832 config/tc-v850.c:323
 msgid "Common alignment not a power of 2"
 msgstr "La alineación común no es una potencia de 2"
 
-#: config/tc-m32r.c:1602 config/tc-ppc.c:1791 config/tc-ppc.c:4386
+#: config/tc-m32r.c:1544 config/tc-ppc.c:1806 config/tc-ppc.c:4401
 #, c-format
 msgid "Ignoring attempt to re-define symbol `%s'."
 msgstr "Se ignora el intento de redefinir el símbolo `%s'."
 
-#: config/tc-m32r.c:1611
+#: config/tc-m32r.c:1553
 #, c-format
 msgid "Length of .scomm \"%s\" is already %ld. Not changed to %ld."
 msgstr "La longitud de .scomm \"%s\" ya está %ld. No ha cambiado a %ld."
 
-#: config/tc-m32r.c:1839
+#: config/tc-m32r.c:1789
 msgid "Addend to unresolved symbol not on word boundary."
 msgstr "La adición para un símbolo sin resolver no está en un límite de word."
 
-#: config/tc-m32r.c:1988 config/tc-m32r.c:2038 config/tc-sh.c:747
+#: config/tc-m32r.c:1930 config/tc-m32r.c:1983 config/tc-sh.c:749
 msgid "Invalid PIC expression."
 msgstr "Expresión PIC inválida."
 
-#: config/tc-m32r.c:2129
+#: config/tc-m32r.c:2074
 msgid "Unmatched high/shigh reloc"
 msgstr "Reubicación high/shigh sin coincidencia"
 
-#: config/tc-m32r.c:2380 config/tc-sparc.c:3525
+#: config/tc-m32r.c:2334 config/tc-sparc.c:3524
 #, c-format
 msgid "internal error: can't export reloc type %d (`%s')"
 msgstr "error interno: no se puede exportar el tipo de reubicación %d (`%s')"
@@ -6310,404 +6162,400 @@ msgstr "Desplazamiento fuera del rango de 5-bit para la instrucci
 msgid "Line %d: unknown relocation type: 0x%x."
 msgstr "Línea %d: tipo de reubicación desconocido: 0x%x."
 
-#: config/tc-m68k.c:693
+#: config/tc-m68k.c:696
 msgid "no matching ColdFire architectures found"
 msgstr "no se encontraron arquitecturas ColdFire coincidentes"
 
-#: config/tc-m68k.c:707
+#: config/tc-m68k.c:710
 msgid " or "
 msgstr " o "
 
-#: config/tc-m68k.c:712
+#: config/tc-m68k.c:715
 msgid ", or "
 msgstr ", o "
 
-#: config/tc-m68k.c:729
+#: config/tc-m68k.c:732
 msgid ", or aliases"
 msgstr ", o los aliases"
 
-#: config/tc-m68k.c:753 config/tc-m68k.c:4765 config/tc-m68k.c:5156
-msgid "Tried to convert PC relative branch to absolute jump"
-msgstr "Se trató de convertir una ramificación relativa al PC a un salto absoluto"
-
-#: config/tc-m68k.c:760 config/tc-m68k.c:4755
-msgid "Tried to convert PC relative BSR to absolute JSR"
-msgstr "Se intentó convertir un BSR relativo al PC a un JSR absoluto"
-
-#: config/tc-m68k.c:765
-msgid "Unknown PC relative instruction"
-msgstr "Instrucción relativa al PC desconocida"
-
-#: config/tc-m68k.c:897
+#: config/tc-m68k.c:843
 #, c-format
 msgid "Can not do %d byte pc-relative relocation"
 msgstr "No se puede hacer la reubicación relativa al pc de %d bytes"
 
-#: config/tc-m68k.c:899
+#: config/tc-m68k.c:845
 #, c-format
 msgid "Can not do %d byte pc-relative pic relocation"
 msgstr "No se puede hacer la reubicación pic relativa al pc de %d bytes"
 
-#: config/tc-m68k.c:904
+#: config/tc-m68k.c:850
 #, c-format
 msgid "Can not do %d byte relocation"
 msgstr "No se puede hacer la reubicación de %d byres"
 
-#: config/tc-m68k.c:906
+#: config/tc-m68k.c:852
 #, c-format
 msgid "Can not do %d byte pic relocation"
 msgstr "No se puede hacer la reubicación pic de %d bytes"
 
-#: config/tc-m68k.c:971
+#: config/tc-m68k.c:915
 #, c-format
 msgid "Unable to produce reloc against symbol '%s'"
 msgstr "No se puede producir una reubicación contra el símbolo '%s'"
 
-#: config/tc-m68k.c:1015 config/tc-vax.c:3456
+#: config/tc-m68k.c:959 config/tc-vax.c:3435
 #, c-format
 msgid "Cannot make %s relocation PC relative"
 msgstr "No se puede hacer la reubicación relativa al PC %s"
 
-#: config/tc-m68k.c:1107 config/tc-tahoe.c:1495 config/tc-vax.c:1895
+#: config/tc-m68k.c:1050 config/tc-vax.c:1890
 msgid "No operator"
 msgstr "No hay operador"
 
-#: config/tc-m68k.c:1137 config/tc-tahoe.c:1512 config/tc-vax.c:1912
+#: config/tc-m68k.c:1080 config/tc-vax.c:1907
 msgid "Unknown operator"
 msgstr "Operador desconocido"
 
-#: config/tc-m68k.c:1990
+#: config/tc-m68k.c:1944
 msgid "invalid instruction for this architecture; needs "
 msgstr "instrucción inválida para esta arquitectura; necesita "
 
-#: config/tc-m68k.c:1996
+#: config/tc-m68k.c:1950
 msgid "ColdFire ISA_A"
 msgstr "ISA_A de ColdFire"
 
-#: config/tc-m68k.c:2004
+#: config/tc-m68k.c:1958
 msgid "ColdFire hardware divide"
 msgstr "divide por hardware de ColdFire"
 
-#: config/tc-m68k.c:2012
+#: config/tc-m68k.c:1966
 msgid "ColdFire ISA_A+"
 msgstr "ISA_A+ de ColdFire"
 
-#: config/tc-m68k.c:2020
+#: config/tc-m68k.c:1974
 msgid "ColdFire ISA_B"
 msgstr "ISA_B de ColdFire"
 
-#: config/tc-m68k.c:2028
+#: config/tc-m68k.c:1982
 msgid "ColdFire fpu"
 msgstr "unidad de coma flotante de ColdFire"
 
-#: config/tc-m68k.c:2035
+#: config/tc-m68k.c:1989
 msgid "fpu (68040, 68060 or 68881/68882)"
 msgstr "fpu (68040, 68060 o 68881/68882)"
 
-#: config/tc-m68k.c:2038
+#: config/tc-m68k.c:1992
 msgid "mmu (68030 or 68851)"
 msgstr "mmu (68030 o 68851)"
 
-#: config/tc-m68k.c:2041
+#: config/tc-m68k.c:1995
 msgid "68020 or higher"
 msgstr "68020 o superior"
 
-#: config/tc-m68k.c:2044
+#: config/tc-m68k.c:1998
 msgid "68000 or higher"
 msgstr "68000 o superior"
 
-#: config/tc-m68k.c:2047
+#: config/tc-m68k.c:2001
 msgid "68010 or higher"
 msgstr "68010 o superior"
 
-#: config/tc-m68k.c:2075
+#: config/tc-m68k.c:2029
 msgid "operands mismatch"
 msgstr "no coinciden los operandos"
 
-#: config/tc-m68k.c:2136 config/tc-m68k.c:2142 config/tc-m68k.c:2148
-#: config/tc-mmix.c:2526 config/tc-mmix.c:2550
+#: config/tc-m68k.c:2090 config/tc-m68k.c:2096 config/tc-m68k.c:2102
+#: config/tc-mmix.c:2488 config/tc-mmix.c:2512
 msgid "operand out of range"
 msgstr "operando fuera de rango"
 
-#: config/tc-m68k.c:2205
+#: config/tc-m68k.c:2159
 #, c-format
 msgid "Bignum too big for %c format; truncated"
 msgstr "Número grande demasiado grande para el formato %c; truncado"
 
-#: config/tc-m68k.c:2286
+#: config/tc-m68k.c:2236
 msgid "displacement too large for this architecture; needs 68020 or higher"
 msgstr "desubicación demasiado grande para esta arquitectura; necesita 68020 o superior"
 
-#: config/tc-m68k.c:2397
+#: config/tc-m68k.c:2347
 msgid "scale factor invalid on this architecture; needs cpu32 or 68020 or higher"
 msgstr "factor de escala inválido en esta arquitectura; necesita cpu32 o 68020 o superior"
 
-#: config/tc-m68k.c:2402
+#: config/tc-m68k.c:2352
 msgid "invalid index size for coldfire"
 msgstr "tamaño de índice inválido para coldfire"
 
-#: config/tc-m68k.c:2455
+#: config/tc-m68k.c:2405
 msgid "Forcing byte displacement"
 msgstr "Forzando la desubicación de byte"
 
-#: config/tc-m68k.c:2457
+#: config/tc-m68k.c:2407
 msgid "byte displacement out of range"
 msgstr "Desubicación de byte fuera de rango"
 
-#: config/tc-m68k.c:2504 config/tc-m68k.c:2542
+#: config/tc-m68k.c:2455 config/tc-m68k.c:2493
 msgid "invalid operand mode for this architecture; needs 68020 or higher"
 msgstr "modo de operando inválido para esta arquitectura; necesita 68020 o superior"
 
-#: config/tc-m68k.c:2528 config/tc-m68k.c:2562
+#: config/tc-m68k.c:2479 config/tc-m68k.c:2513
 msgid ":b not permitted; defaulting to :w"
 msgstr "no se permite :b; cambiando por defecto a :w"
 
-#: config/tc-m68k.c:2639
+#: config/tc-m68k.c:2590
 msgid "unsupported byte value; use a different suffix"
 msgstr "valor de byte sin soporte; utilice un sufijo diferente"
 
-#: config/tc-m68k.c:2654
+#: config/tc-m68k.c:2605
 msgid "unknown/incorrect operand"
 msgstr "operando desconocido/incorrecto"
 
-#: config/tc-m68k.c:2697 config/tc-m68k.c:2705 config/tc-m68k.c:2712
-#: config/tc-m68k.c:2719
+#: config/tc-m68k.c:2648 config/tc-m68k.c:2656 config/tc-m68k.c:2663
+#: config/tc-m68k.c:2670
 msgid "out of range"
 msgstr "fuera de rango"
 
-#: config/tc-m68k.c:2765
+#: config/tc-m68k.c:2716
 msgid "Can't use long branches on 68000/68010/5200"
 msgstr "No se pueden usar ramificaciones long en 68000/68010/5200"
 
-#: config/tc-m68k.c:2875
+#: config/tc-m68k.c:2833
 msgid "Expression out of range, using 0"
 msgstr "Expresión fuera de rango, utilizando 0"
 
-#: config/tc-m68k.c:3056 config/tc-m68k.c:3072
+#: config/tc-m68k.c:3014 config/tc-m68k.c:3030
 msgid "Floating point register in register list"
 msgstr "Registro de coma flotante en la lista de registros"
 
-#: config/tc-m68k.c:3062
+#: config/tc-m68k.c:3020
 msgid "Wrong register in floating-point reglist"
 msgstr "Registro erróneo en la lista de registros de coma flotante"
 
-#: config/tc-m68k.c:3078
+#: config/tc-m68k.c:3036
 msgid "incorrect register in reglist"
 msgstr "registro incorrecto en la lista de registros"
 
-#: config/tc-m68k.c:3084
+#: config/tc-m68k.c:3042
 msgid "wrong register in floating-point reglist"
 msgstr "registro erróneo en la lista de registros de coma flotante"
 
 #. ERROR.
-#: config/tc-m68k.c:3547
+#: config/tc-m68k.c:3505
 msgid "Extra )"
 msgstr ") extra"
 
 #. ERROR.
-#: config/tc-m68k.c:3558
+#: config/tc-m68k.c:3516
 msgid "Missing )"
 msgstr "Falta )"
 
-#: config/tc-m68k.c:3575
+#: config/tc-m68k.c:3533
 msgid "Missing operand"
 msgstr "Falta un operando"
 
-#: config/tc-m68k.c:3937
+#: config/tc-m68k.c:3890
 #, c-format
 msgid "%s -- statement `%s' ignored"
 msgstr "%s -- se ignora la declaración `%s'"
 
-#: config/tc-m68k.c:3986
+#: config/tc-m68k.c:3939
 #, c-format
 msgid "Don't know how to figure width of %c in md_assemble()"
 msgstr "No se sabe comó reconocer la anchura de %c en md_assemble()"
 
-#: config/tc-m68k.c:4152
+#: config/tc-m68k.c:4108
 #, c-format
 msgid "Internal Error:  Can't allocate m68k_sorted_opcodes of size %d"
 msgstr "Error Interno:  No se puede alojar m68k_sorted_opcodes de tamaño %d"
 
-#: config/tc-m68k.c:4203 config/tc-m68k.c:4242
+#: config/tc-m68k.c:4159 config/tc-m68k.c:4198
 #, c-format
 msgid "Internal Error: Can't find %s in hash table"
 msgstr "Error Interno: No se puede encontrar %s en la tabla de dispersión"
 
-#: config/tc-m68k.c:4206 config/tc-m68k.c:4245
+#: config/tc-m68k.c:4162 config/tc-m68k.c:4201
 #, c-format
 msgid "Internal Error: Can't hash %s: %s"
 msgstr "Error Interno: No se puede dispersar %s: %s"
 
-#: config/tc-m68k.c:4326
+#: config/tc-m68k.c:4282
 msgid "architecture not yet selected: defaulting to 68020"
 msgstr "no se ha seleccionado una arquitectura: cambiando por defecto a 68020"
 
-#: config/tc-m68k.c:4386
+#: config/tc-m68k.c:4342
 #, c-format
 msgid "unrecognized default cpu `%s' ???"
 msgstr "¿¿¿ cpu por defecto `%s' no reconocido ???"
 
-#: config/tc-m68k.c:4397
+#: config/tc-m68k.c:4353
 msgid "68040 and 68851 specified; mmu instructions may assemble incorrectly"
 msgstr "se especificaron 68040 y 68851; las instrucciones mmu podrían ensamblar incorrectamente"
 
-#: config/tc-m68k.c:4414
+#: config/tc-m68k.c:4370
 msgid "options for 68881 and no-68881 both given"
 msgstr "se dieron opciones para 68881 y para no-68881"
 
-#: config/tc-m68k.c:4417
+#: config/tc-m68k.c:4373
 msgid "options for 68851 and no-68851 both given"
 msgstr "se dieron opciones para 68851 y para no-68851"
 
-#: config/tc-m68k.c:4486
+#: config/tc-m68k.c:4434
 #, c-format
 msgid "text label `%s' aligned to odd boundary"
 msgstr "la etiqueta de texto `%s' está alineada a un límite impar"
 
-#: config/tc-m68k.c:4695
+#: config/tc-m68k.c:4638
 msgid "invalid byte branch offset"
 msgstr "desplazamiento de ramificación byte inválido"
 
-#: config/tc-m68k.c:4731
+#: config/tc-m68k.c:4674
 msgid "short branch with zero offset: use :w"
 msgstr "ramificación corta con desplazamiento cero: utilice :w"
 
-#: config/tc-m68k.c:4781 config/tc-m68k.c:4840 config/tc-m68k.c:4904
+#: config/tc-m68k.c:4698
+msgid "Tried to convert PC relative BSR to absolute JSR"
+msgstr "Se intentó convertir un BSR relativo al PC a un JSR absoluto"
+
+#: config/tc-m68k.c:4708 config/tc-m68k.c:5054
+msgid "Tried to convert PC relative branch to absolute jump"
+msgstr "Se trató de convertir una ramificación relativa al PC a un salto absoluto"
+
+#: config/tc-m68k.c:4724 config/tc-m68k.c:4783 config/tc-m68k.c:4847
 msgid "Tried to convert PC relative conditional branch to absolute jump"
 msgstr "Se intentó convertir una ramificación condicional relativa al PC a un salto absoluto"
 
-#: config/tc-m68k.c:4821
+#: config/tc-m68k.c:4764
 msgid "Tried to convert DBcc to absolute jump"
 msgstr "Se intentó convertir DBcc a un salto absoluto"
 
-#: config/tc-m68k.c:5200 config/tc-m68k.c:5211 config/tc-m68k.c:5252
+#: config/tc-m68k.c:5098 config/tc-m68k.c:5109 config/tc-m68k.c:5149
 msgid "expression out of range: defaulting to 1"
 msgstr "expresión fuera de rango: cambiando por defecto a 1"
 
-#: config/tc-m68k.c:5243
+#: config/tc-m68k.c:5141
 msgid "expression out of range: defaulting to 0"
 msgstr "expresión fuera de rango: cambiando por defecto a 0"
 
-#: config/tc-m68k.c:5285 config/tc-m68k.c:5297
+#: config/tc-m68k.c:5182 config/tc-m68k.c:5194
 #, c-format
 msgid "Can't deal with expression; defaulting to %ld"
 msgstr "No se puede lidiar con la expresión; cambiando por defecto a %ld"
 
-#: config/tc-m68k.c:5311
+#: config/tc-m68k.c:5208
 msgid "expression doesn't fit in BYTE"
 msgstr "la expresión no cabe en BYTE"
 
-#: config/tc-m68k.c:5315
+#: config/tc-m68k.c:5212
 msgid "expression doesn't fit in WORD"
 msgstr "la expresión no cabe en WORD"
 
-#: config/tc-m68k.c:5402
+#: config/tc-m68k.c:5299
 #, c-format
 msgid "%s: unrecognized processor name"
 msgstr "%s: nombre de procesador no reconocido"
 
-#: config/tc-m68k.c:5466
+#: config/tc-m68k.c:5363
 msgid "bad coprocessor id"
 msgstr "id de coprocesador erróneo"
 
-#: config/tc-m68k.c:5472
+#: config/tc-m68k.c:5369
 msgid "unrecognized fopt option"
 msgstr "opción fopt no reconocida"
 
-#: config/tc-m68k.c:5605
+#: config/tc-m68k.c:5502
 #, c-format
 msgid "option `%s' may not be negated"
 msgstr "la opción `%s' podría no estar negada"
 
-#: config/tc-m68k.c:5616
+#: config/tc-m68k.c:5513
 #, c-format
 msgid "option `%s' not recognized"
 msgstr "no se reconoce la opción `%s'"
 
-#: config/tc-m68k.c:5645
+#: config/tc-m68k.c:5542
 msgid "bad format of OPT NEST=depth"
 msgstr "formato erróneo de OPT NEST=profundidad"
 
-#: config/tc-m68k.c:5701
+#: config/tc-m68k.c:5598
 msgid "missing label"
 msgstr "etiqueta faltante"
 
-#: config/tc-m68k.c:5725 config/tc-m68k.c:5754
+#: config/tc-m68k.c:5622 config/tc-m68k.c:5651
 msgid "bad register list"
 msgstr "lista de registros errónea"
 
-#: config/tc-m68k.c:5727
+#: config/tc-m68k.c:5624
 #, c-format
 msgid "bad register list: %s"
 msgstr "lista de registros errónea: %s"
 
-#: config/tc-m68k.c:5825
+#: config/tc-m68k.c:5722
 msgid "restore without save"
 msgstr "restore sin save"
 
-#: config/tc-m68k.c:5979 config/tc-m68k.c:6349
+#: config/tc-m68k.c:5876 config/tc-m68k.c:6246
 msgid "syntax error in structured control directive"
 msgstr "error sintáctico en la directiva estructurada de control"
 
-#: config/tc-m68k.c:6024
+#: config/tc-m68k.c:5921
 msgid "missing condition code in structured control directive"
 msgstr "falta el código de condición en la directiva estructurada de control"
 
-#: config/tc-m68k.c:6095
+#: config/tc-m68k.c:5992
 #, c-format
 msgid "Condition <%c%c> in structured control directive can not be encoded correctly"
 msgstr "La condición <%c%c> en la directiva de contro estructurado no se puede codificar correctamente"
 
-#: config/tc-m68k.c:6391
+#: config/tc-m68k.c:6288
 msgid "missing then"
 msgstr "then faltante"
 
-#: config/tc-m68k.c:6472
+#: config/tc-m68k.c:6369
 msgid "else without matching if"
 msgstr "else sin if coincidente"
 
-#: config/tc-m68k.c:6505
+#: config/tc-m68k.c:6402
 msgid "endi without matching if"
 msgstr "endi sin if coincidente"
 
-#: config/tc-m68k.c:6545
+#: config/tc-m68k.c:6442
 msgid "break outside of structured loop"
 msgstr "break fuera de un loop estructurado"
 
-#: config/tc-m68k.c:6583
+#: config/tc-m68k.c:6480
 msgid "next outside of structured loop"
 msgstr "next fuera de un loop estructurado"
 
-#: config/tc-m68k.c:6634
+#: config/tc-m68k.c:6531
 msgid "missing ="
 msgstr "= faltante"
 
-#: config/tc-m68k.c:6672
+#: config/tc-m68k.c:6569
 msgid "missing to or downto"
 msgstr "to o downto faltante"
 
-#: config/tc-m68k.c:6708 config/tc-m68k.c:6742 config/tc-m68k.c:6956
+#: config/tc-m68k.c:6605 config/tc-m68k.c:6639 config/tc-m68k.c:6853
 msgid "missing do"
 msgstr "do faltante"
 
-#: config/tc-m68k.c:6843
+#: config/tc-m68k.c:6740
 msgid "endf without for"
 msgstr "endf sin for"
 
-#: config/tc-m68k.c:6897
+#: config/tc-m68k.c:6794
 msgid "until without repeat"
 msgstr "until sin repeat"
 
-#: config/tc-m68k.c:6991
+#: config/tc-m68k.c:6888
 msgid "endw without while"
 msgstr "endw sin while"
 
-#: config/tc-m68k.c:7153
+#: config/tc-m68k.c:7050
 #, c-format
 msgid "unrecognized architecture specification `%s'"
 msgstr "especificación de arquitectura `%s' no reconocida"
 
-#: config/tc-m68k.c:7246
+#: config/tc-m68k.c:7143
 #, c-format
 msgid ""
 "680X0 options:\n"
@@ -6732,7 +6580,7 @@ msgstr ""
 "\t\t\tel objetivo tiene un/carece de coprocesador de coma flotante\n"
 "\t\t\t[por defecto sí para 68020, 68030, y cpu32]\n"
 
-#: config/tc-m68k.c:7258
+#: config/tc-m68k.c:7155
 #, c-format
 msgid ""
 "-m68851 | -mno-68851\n"
@@ -6755,7 +6603,7 @@ msgstr ""
 "\t\t\treconoce los nombres de registro sin carácter de prefijo\n"
 "--bitwise-or\t\tno trata `|' como un carácter de comentario\n"
 
-#: config/tc-m68k.c:7268
+#: config/tc-m68k.c:7165
 #, c-format
 msgid ""
 "--base-size-default-16\tbase reg without size is 16 bits\n"
@@ -6768,222 +6616,174 @@ msgstr ""
 "--disp-size-default-16\tla desubicación de tamaño desconocido es de 16 bits\n"
 "--disp-size-default-32\tla desubicación de tamaño desconocido es de 32 bits (por defecto)\n"
 
-#: config/tc-m68k.c:7303
+#: config/tc-m68k.c:7200
 #, c-format
 msgid "Error %s in %s\n"
 msgstr "Error %s en %s\n"
 
-#: config/tc-m68k.c:7307
+#: config/tc-m68k.c:7204
 #, c-format
 msgid "Opcode(%d.%s): "
 msgstr "Código de operación(%d.%s): "
 
-#: config/tc-m88k.c:201
-#, c-format
-msgid "Can't hash instruction '%s':%s"
-msgstr "No se puede dispersar la instrucción '%s':%s"
-
-#: config/tc-m88k.c:250
-#, c-format
-msgid "Invalid mnemonic '%s'"
-msgstr "Mnemónico inválido '%s'"
-
-#: config/tc-m88k.c:268
-msgid "Parameter syntax error"
-msgstr "Error sintáctico de parámetros"
-
-#: config/tc-m88k.c:321
-msgid "Unknown relocation type"
-msgstr "Tipo de reubicación desconocido"
-
-#. Having this here repeats the warning somtimes.
-#. But can't we stand that?
-#: config/tc-m88k.c:434
-msgid "Use of obsolete instruction"
-msgstr "Uso de una instrucción obsoleta"
-
-#: config/tc-m88k.c:551
-msgid "Expression truncated to 16 bits"
-msgstr "Expresión truncada a 16 bits"
-
-#: config/tc-m88k.c:617 config/tc-m88k.c:639
-msgid "Expression truncated to 5 bits"
-msgstr "Expresión truncada a 5 bits"
-
-#: config/tc-m88k.c:856
-msgid "Expression truncated to 9 bits"
-msgstr "Expresión truncada a 9 bits"
-
-#: config/tc-m88k.c:878
-msgid "Removed lower 2 bits of expression"
-msgstr "Se borraron los 2 bits inferiores de la expresión"
-
-#: config/tc-m88k.c:1057
-msgid "Relaxation should never occur"
-msgstr "La relajación nunca debe ocurrir"
-
-#: config/tc-m88k.h:78
-msgid "m88k convert_frag\n"
-msgstr "m88k convert_frag\n"
-
-#: config/tc-mcore.c:461
+#: config/tc-mcore.c:524
 #, c-format
 msgid "register expected, but saw '%.6s'"
 msgstr "se esperaba un registro, pero se vio '%.6s'"
 
-#: config/tc-mcore.c:545
+#: config/tc-mcore.c:606
 #, c-format
 msgid "control register expected, but saw '%.6s'"
 msgstr "se esperaba un registro de control, pero se vio '%.6s'"
 
-#: config/tc-mcore.c:583
+#: config/tc-mcore.c:642
 msgid "bad/missing psr specifier"
 msgstr "especificador psr erróneo/faltante"
 
-#: config/tc-mcore.c:744
+#: config/tc-mcore.c:692
 msgid "more than 65K literal pools"
 msgstr "más de 65K de conjuntos literales"
 
-#: config/tc-mcore.c:798
+#: config/tc-mcore.c:746
 msgid "missing ']'"
 msgstr "falta un ']'"
 
-#: config/tc-mcore.c:838
+#: config/tc-mcore.c:785
 msgid "operand must be a constant"
 msgstr "el operando debe ser una constante"
 
-#: config/tc-mcore.c:840
+#: config/tc-mcore.c:787
 #, c-format
 msgid "operand must be absolute in range %u..%u, not %ld"
 msgstr "el operando debe ser un absoluto en el rango %u..%u, no %ld"
 
-#: config/tc-mcore.c:876
+#: config/tc-mcore.c:822
 msgid "operand must be a multiple of 4"
 msgstr "el operando debe ser un múltiplo de 4"
 
-#: config/tc-mcore.c:883
+#: config/tc-mcore.c:829
 msgid "operand must be a multiple of 2"
 msgstr "el operando debe ser un múltiplo de 2"
 
-#: config/tc-mcore.c:897 config/tc-mcore.c:1411 config/tc-mcore.c:1465
+#: config/tc-mcore.c:843 config/tc-mcore.c:1359 config/tc-mcore.c:1413
 msgid "base register expected"
 msgstr "se esperaba un registro base"
 
-#: config/tc-mcore.c:946
+#: config/tc-mcore.c:891
 #, c-format
 msgid "unknown opcode \"%s\""
 msgstr "código de operación \"%s\" desconocido"
 
-#: config/tc-mcore.c:989
+#: config/tc-mcore.c:934
 msgid "invalid register: r15 illegal"
 msgstr "registro inválido: r15 ilegal"
 
-#: config/tc-mcore.c:1037 config/tc-mcore.c:1615
+#: config/tc-mcore.c:983 config/tc-mcore.c:1564
 msgid "M340 specific opcode used when assembling for M210"
 msgstr "se utilizó un código de operación específico de M340 cuando se ensamblaba para M210"
 
-#: config/tc-mcore.c:1055 config/tc-mcore.c:1094 config/tc-mcore.c:1113
-#: config/tc-mcore.c:1132 config/tc-mcore.c:1159 config/tc-mcore.c:1188
-#: config/tc-mcore.c:1225 config/tc-mcore.c:1260 config/tc-mcore.c:1279
-#: config/tc-mcore.c:1298 config/tc-mcore.c:1332 config/tc-mcore.c:1357
-#: config/tc-mcore.c:1414 config/tc-mcore.c:1468 config/tc-mcore.c:1504
-#: config/tc-mcore.c:1562 config/tc-mcore.c:1584 config/tc-mcore.c:1607
+#: config/tc-mcore.c:1001 config/tc-mcore.c:1041 config/tc-mcore.c:1060
+#: config/tc-mcore.c:1079 config/tc-mcore.c:1107 config/tc-mcore.c:1136
+#: config/tc-mcore.c:1173 config/tc-mcore.c:1208 config/tc-mcore.c:1227
+#: config/tc-mcore.c:1246 config/tc-mcore.c:1280 config/tc-mcore.c:1305
+#: config/tc-mcore.c:1362 config/tc-mcore.c:1416 config/tc-mcore.c:1452
+#: config/tc-mcore.c:1511 config/tc-mcore.c:1533 config/tc-mcore.c:1556
 msgid "second operand missing"
 msgstr "falta el segundo operando"
 
-#: config/tc-mcore.c:1070
+#: config/tc-mcore.c:1017
 msgid "destination register must be r1"
 msgstr "el registro destino debe ser r1"
 
-#: config/tc-mcore.c:1091
+#: config/tc-mcore.c:1038
 msgid "source register must be r1"
 msgstr "el registro fuente debe ser r1"
 
-#: config/tc-mcore.c:1154 config/tc-mcore.c:1211
+#: config/tc-mcore.c:1102 config/tc-mcore.c:1159
 msgid "immediate is not a power of two"
 msgstr "el inmediato no es una potencia de dos"
 
-#: config/tc-mcore.c:1182
+#: config/tc-mcore.c:1130
 msgid "translating bgeni to movi"
 msgstr "traduciendo bgeni a movi"
 
-#: config/tc-mcore.c:1219
+#: config/tc-mcore.c:1167
 msgid "translating mgeni to movi"
 msgstr "traduciendo mgeni a movi"
 
-#: config/tc-mcore.c:1251
+#: config/tc-mcore.c:1199
 msgid "translating bmaski to movi"
 msgstr "traduciendo bmaski a movi"
 
-#: config/tc-mcore.c:1327
+#: config/tc-mcore.c:1275
 #, c-format
 msgid "displacement too large (%d)"
 msgstr "desubicación demasiado grande (%d)"
 
-#: config/tc-mcore.c:1341
+#: config/tc-mcore.c:1289
 msgid "Invalid register: r0 and r15 illegal"
 msgstr "Registro inválido: r0 y r15 ilegales"
 
-#: config/tc-mcore.c:1372
+#: config/tc-mcore.c:1320
 msgid "bad starting register: r0 and r15 invalid"
 msgstr "registro de inicio erróneo: r0 y r15 inválidos"
 
-#: config/tc-mcore.c:1385
+#: config/tc-mcore.c:1333
 msgid "ending register must be r15"
 msgstr "el registro final debe ser r15"
 
-#: config/tc-mcore.c:1405
+#: config/tc-mcore.c:1353
 msgid "bad base register: must be r0"
 msgstr "registro base erróneo: debe ser r0"
 
-#: config/tc-mcore.c:1423
+#: config/tc-mcore.c:1371
 msgid "first register must be r4"
 msgstr "el primer registro debe ser r4"
 
-#: config/tc-mcore.c:1434
+#: config/tc-mcore.c:1382
 msgid "last register must be r7"
 msgstr "el último registro debe ser r7"
 
-#: config/tc-mcore.c:1471
+#: config/tc-mcore.c:1419
 msgid "reg-reg expected"
 msgstr "se esperaba registro-registro"
 
-#: config/tc-mcore.c:1581
+#: config/tc-mcore.c:1530
 msgid "second operand must be 1"
 msgstr "el segundo operando debe ser 1"
 
-#: config/tc-mcore.c:1602
+#: config/tc-mcore.c:1551
 msgid "zero used as immediate value"
 msgstr "se utiliza cero como un valor inmediato"
 
-#: config/tc-mcore.c:1629
+#: config/tc-mcore.c:1578
 msgid "duplicated psr bit specifier"
 msgstr "especificador de bit psr duplicado"
 
-#: config/tc-mcore.c:1635
+#: config/tc-mcore.c:1584
 msgid "`af' must appear alone"
 msgstr "`af' debe aparecer solo"
 
-#: config/tc-mcore.c:1642
+#: config/tc-mcore.c:1591
 #, c-format
 msgid "unimplemented opcode \"%s\""
 msgstr "código de operación \"%s\" sin implementar"
 
-#: config/tc-mcore.c:1651
+#: config/tc-mcore.c:1600
 #, c-format
 msgid "ignoring operands: %s "
 msgstr "se ignoran los operandos: %s "
 
-#: config/tc-mcore.c:1719 config/tc-w65.c:769
+#: config/tc-mcore.c:1665
 msgid "Bad call to MD_NTOF()"
 msgstr "Llamada errónea a MD_NTOF()"
 
-#: config/tc-mcore.c:1789
+#: config/tc-mcore.c:1736
 #, c-format
 msgid "unrecognised cpu type '%s'"
 msgstr "tipo de cpu '%s' no reconocido"
 
-#: config/tc-mcore.c:1808
+#: config/tc-mcore.c:1754
 #, c-format
 msgid ""
 "MCORE specific options:\n"
@@ -7000,642 +6800,670 @@ msgstr ""
 "  -EB                     ensambla para un sistema big endian (por defecto)\n"
 "  -EL                     ensambla para un sistema little endian\n"
 
-#: config/tc-mcore.c:1827
+#: config/tc-mcore.c:1772
 msgid "failed sanity check: short_jump"
 msgstr "falló la prueba de sanidad: short_jump"
 
-#: config/tc-mcore.c:1838
+#: config/tc-mcore.c:1782
 msgid "failed sanity check: long_jump"
 msgstr "falló la prueba de sanidad: long_jump"
 
-#: config/tc-mcore.c:1864
+#: config/tc-mcore.c:1808
 #, c-format
 msgid "odd displacement at %x"
 msgstr "desubicación impar en %x"
 
-#: config/tc-mcore.c:2048
+#: config/tc-mcore.c:1990
 msgid "unknown"
 msgstr "desconocido"
 
-#: config/tc-mcore.c:2074
+#: config/tc-mcore.c:2017
 #, c-format
 msgid "odd distance branch (0x%lx bytes)"
 msgstr "distancia de ramificación impar (0x%lx bytes)"
 
-#: config/tc-mcore.c:2078
+#: config/tc-mcore.c:2021
 #, c-format
 msgid "pcrel for branch to %s too far (0x%lx)"
 msgstr "el pcrel para la ramificación a %s está demasiado lejos (0x%lx)"
 
-#: config/tc-mcore.c:2097
+#: config/tc-mcore.c:2041
 #, c-format
 msgid "pcrel for lrw/jmpi/jsri to %s too far (0x%lx)"
 msgstr "el pcrel para lrw/jmpi/jsri a %s está demasiado lejos (0x%lx)"
 
-#: config/tc-mcore.c:2108
+#: config/tc-mcore.c:2053
 #, c-format
 msgid "pcrel for loopt too far (0x%lx)"
 msgstr "el pcrel para loopt está demasiado lejos (0x%lx)"
 
-#: config/tc-mcore.c:2337
+#: config/tc-mcore.c:2263
 #, c-format
 msgid "Can not do %d byte %srelocation"
 msgstr "No se puede hacer la reubicación de %d byte %s"
 
-#: config/tc-mcore.c:2339
+#: config/tc-mcore.c:2265
 msgid "pc-relative"
 msgstr "relativo al pc"
 
 #. Prototypes for static functions.
-#: config/tc-mips.c:862
+#: config/tc-mips.c:957
 #, c-format
 msgid "internal Error, line %d, %s"
 msgstr "Error interno, línea %d, %s"
 
-#: config/tc-mips.c:1175
+#: config/tc-mips.c:1443
 #, c-format
 msgid "internal: can't hash `%s': %s"
 msgstr "interno: no se puede dispersar `%s': %s"
 
-#: config/tc-mips.c:1183
+#: config/tc-mips.c:1451
 #, c-format
 msgid "internal error: bad mips16 opcode: %s %s\n"
 msgstr "error interno: código de operación mips16 erróneo: %s %s\n"
 
-#: config/tc-mips.c:1376
+#: config/tc-mips.c:1652
 #, c-format
 msgid "returned from mips_ip(%s) insn_opcode = 0x%x\n"
 msgstr "devuelto de mips_ip(%s) insn_opcode = 0x%x\n"
 
-#: config/tc-mips.c:2085 config/tc-mips.c:13223
+#: config/tc-mips.c:2327 config/tc-mips.c:13480
 msgid "extended instruction in delay slot"
 msgstr "instrucción extendida en ranuta de retardo"
 
-#: config/tc-mips.c:2145 config/tc-mips.c:2155
+#: config/tc-mips.c:2391 config/tc-mips.c:2401
 #, c-format
 msgid "jump to misaligned address (0x%lx)"
 msgstr "salto a una dirección mal alineada (0x%lx)"
 
-#: config/tc-mips.c:2148 config/tc-mips.c:2158
+#: config/tc-mips.c:2394 config/tc-mips.c:2404
 #, c-format
 msgid "jump address range overflow (0x%lx)"
 msgstr "desbordamiento de rango de salto de dirección (0x%lx)"
 
-#: config/tc-mips.c:2937
+#: config/tc-mips.c:2893
 msgid "Macro instruction expanded into multiple instructions in a branch delay slot"
 msgstr "Instrucción macro expandida en instrucciones múltiples en una ranura de retraso de ramificación"
 
-#: config/tc-mips.c:2940
+#: config/tc-mips.c:2896
 msgid "Macro instruction expanded into multiple instructions"
 msgstr "Instrucción macro expandida en instrucciones múltiples"
 
-#: config/tc-mips.c:3436 config/tc-mips.c:3602 config/tc-mips.c:5891
-msgid "constant too large"
-msgstr "constante demasiado grande"
-
-#: config/tc-mips.c:3444 config/tc-mips.c:7375 config/tc-mips.c:7399
-#: config/tc-mips.c:7472 config/tc-mips.c:7495
+#: config/tc-mips.c:3414 config/tc-mips.c:7338 config/tc-mips.c:7362
+#: config/tc-mips.c:7435 config/tc-mips.c:7458
 msgid "operand overflow"
 msgstr "desbordamiento de operando"
 
-#: config/tc-mips.c:3463 config/tc-mips.c:4074 config/tc-mips.c:6765
-#: config/tc-mips.c:7562
+#: config/tc-mips.c:3433 config/tc-mips.c:4033 config/tc-mips.c:6734
+#: config/tc-mips.c:7525
 msgid "Macro used $at after \".set noat\""
 msgstr "La macro utilizó $at después de \".set noat\""
 
-#: config/tc-mips.c:3500
+#: config/tc-mips.c:3462
 msgid "unsupported large constant"
 msgstr "constante large sin soporte"
 
-#: config/tc-mips.c:3502
+#: config/tc-mips.c:3464
 #, c-format
 msgid "Instruction %s requires absolute expression"
 msgstr "La instrucción %s requiere una expresión absoluta"
 
-#: config/tc-mips.c:3637
+#: config/tc-mips.c:3597 config/tc-mips.c:5844 config/tc-mips.c:6438
 #, c-format
-msgid "Number (0x%lx) larger than 32 bits"
-msgstr "El número (0x%lx) es más grande que 32 bits"
+msgid "Number (0x%s) larger than 32 bits"
+msgstr "El número (0x%s) es más grande que 32 bits"
 
-#: config/tc-mips.c:3658
+#: config/tc-mips.c:3617
 msgid "Number larger than 64 bits"
 msgstr "El número es más grande que 64 bits"
 
-#: config/tc-mips.c:3952 config/tc-mips.c:3980 config/tc-mips.c:4018
-#: config/tc-mips.c:4063 config/tc-mips.c:6094 config/tc-mips.c:6133
-#: config/tc-mips.c:6172 config/tc-mips.c:6584 config/tc-mips.c:6636
+#: config/tc-mips.c:3911 config/tc-mips.c:3939 config/tc-mips.c:3977
+#: config/tc-mips.c:4022 config/tc-mips.c:6053 config/tc-mips.c:6092
+#: config/tc-mips.c:6131 config/tc-mips.c:6553 config/tc-mips.c:6605
 msgid "PIC code offset overflow (max 16 signed bits)"
 msgstr "Desbordamiento del desplazamiento del código PIC (máx 16 bits con signo)"
 
-#: config/tc-mips.c:4371 config/tc-mips.c:4437 config/tc-mips.c:4525
-#: config/tc-mips.c:4572 config/tc-mips.c:4633 config/tc-mips.c:4681
-#: config/tc-mips.c:7660 config/tc-mips.c:7667 config/tc-mips.c:7674
-#: config/tc-mips.c:7781
+#: config/tc-mips.c:4328 config/tc-mips.c:4394 config/tc-mips.c:4482
+#: config/tc-mips.c:4529 config/tc-mips.c:4590 config/tc-mips.c:4638
+#: config/tc-mips.c:7619 config/tc-mips.c:7626 config/tc-mips.c:7633
+#: config/tc-mips.c:7740
 msgid "Unsupported large constant"
 msgstr "Constante large sin soporte"
 
 #. result is always true
-#: config/tc-mips.c:4403
+#: config/tc-mips.c:4360
 #, c-format
 msgid "Branch %s is always true"
 msgstr "La ramificación %s es siempre verdadera"
 
-#: config/tc-mips.c:4644 config/tc-mips.c:4692 config/tc-mips.c:8106
+#: config/tc-mips.c:4601 config/tc-mips.c:4649 config/tc-mips.c:8309
 #, c-format
 msgid "Improper position (%lu)"
 msgstr "Posición impropia (%lu)"
 
-#: config/tc-mips.c:4650 config/tc-mips.c:8174
+#: config/tc-mips.c:4607 config/tc-mips.c:8376
 #, c-format
 msgid "Improper extract size (%lu, position %lu)"
 msgstr "Tamaño de extract impropio (%lu, posición %lu)"
 
-#: config/tc-mips.c:4698 config/tc-mips.c:8138
+#: config/tc-mips.c:4655 config/tc-mips.c:8340
 #, c-format
 msgid "Improper insert size (%lu, position %lu)"
 msgstr "Tamaño de insert impropio (%lu, posición %lu)"
 
-#: config/tc-mips.c:4735 config/tc-mips.c:4834
+#: config/tc-mips.c:4692 config/tc-mips.c:4789
 msgid "Divide by zero."
 msgstr "División por cero."
 
-#: config/tc-mips.c:4922
+#: config/tc-mips.c:4875
 msgid "dla used to load 32-bit register"
 msgstr "Se usa dla para cargar registros de 32-bit"
 
-#: config/tc-mips.c:4925
+#: config/tc-mips.c:4878
 msgid "la used to load 64-bit address"
 msgstr "Se usa la para cargar registros de 64-bit"
 
-#: config/tc-mips.c:5209 config/tc-mips.c:5488
+#: config/tc-mips.c:4990
+msgid "offset too large"
+msgstr "desplazamiento demasiado grande"
+
+#: config/tc-mips.c:5162 config/tc-mips.c:5441
 msgid "PIC code offset overflow (max 32 signed bits)"
 msgstr "Desbordamiento del desplazamiento del código PIC (máx 32 bits con signo)"
 
-#: config/tc-mips.c:5534
+#: config/tc-mips.c:5487
 msgid "MIPS PIC call to register other than $25"
 msgstr "Llamada PIC MIPS a un registro diferente de $25"
 
-#: config/tc-mips.c:5540 config/tc-mips.c:5551 config/tc-mips.c:5675
-#: config/tc-mips.c:5686
+#: config/tc-mips.c:5493 config/tc-mips.c:5504 config/tc-mips.c:5628
+#: config/tc-mips.c:5639
 msgid "No .cprestore pseudo-op used in PIC code"
 msgstr "No se utilizó el pseudo-operador .cprestore en el código PIC"
 
-#: config/tc-mips.c:5545 config/tc-mips.c:5680
+#: config/tc-mips.c:5498 config/tc-mips.c:5633
 msgid "No .frame pseudo-op used in PIC code"
 msgstr "No se utilizó el pseudo-operador .frame en el código PIC"
 
-#: config/tc-mips.c:5751 config/tc-mips.c:5839 config/tc-mips.c:6379
-#: config/tc-mips.c:6410 config/tc-mips.c:6428 config/tc-mips.c:7072
+#: config/tc-mips.c:5704 config/tc-mips.c:5792 config/tc-mips.c:6338
+#: config/tc-mips.c:6369 config/tc-mips.c:6387 config/tc-mips.c:7037
 msgid "opcode not supported on this processor"
 msgstr "el código de operación no tiene soporte en este procesador"
 
-#: config/tc-mips.c:6938 config/tc-mips.c:6969 config/tc-mips.c:7020
-#: config/tc-mips.c:7050
+#: config/tc-mips.c:6903 config/tc-mips.c:6934 config/tc-mips.c:6985
+#: config/tc-mips.c:7015
 msgid "Improper rotate count"
 msgstr "Cuenta de rotación impropia"
 
-#: config/tc-mips.c:7105
+#: config/tc-mips.c:7070
 #, c-format
 msgid "Instruction %s: result is always false"
 msgstr "Instrucción %s: el resultado es siempre falso"
 
-#: config/tc-mips.c:7251
+#: config/tc-mips.c:7216
 #, c-format
 msgid "Instruction %s: result is always true"
 msgstr "Instrucción %s: el resultado es siempre verdadero"
 
 #. FIXME: Check if this is one of the itbl macros, since they
 #. are added dynamically.
-#: config/tc-mips.c:7558
+#: config/tc-mips.c:7521
 #, c-format
 msgid "Macro %s not implemented yet"
 msgstr "La macro %s aún no está implementada"
 
-#: config/tc-mips.c:7812
+#: config/tc-mips.c:7771
 #, c-format
 msgid "internal: bad mips opcode (mask error): %s %s"
 msgstr "interno: código de operación mips erróneo (error de máscara): %s %s"
 
-#: config/tc-mips.c:7837 config/tc-mips.c:8200
+#: config/tc-mips.c:7799 config/tc-mips.c:8430
 #, c-format
 msgid "internal: bad mips opcode (unknown extension operand type `+%c'): %s %s"
 msgstr "interno: código de operación mips erróneo (tipo de operando `+%c' desconocido): %s %s"
 
-#: config/tc-mips.c:7898
+#: config/tc-mips.c:7876
 #, c-format
 msgid "internal: bad mips opcode (unknown operand type `%c'): %s %s"
 msgstr "interno: código de operación mips erróneo (tipo de operando `%c' desconocido): %s %s"
 
-#: config/tc-mips.c:7905
+#: config/tc-mips.c:7883
 #, c-format
 msgid "internal: bad mips opcode (bits 0x%lx undefined): %s %s"
 msgstr "interno: código de operación mips erróneo (bits 0x%lx indefinidos): %s %s"
 
-#: config/tc-mips.c:8019
+#: config/tc-mips.c:8000
 #, c-format
 msgid "opcode not supported on this processor: %s (%s)"
 msgstr "el código de operación no tiene soporte en este procesador: %s (%s)"
 
-#: config/tc-mips.c:8194 config/tc-mips.c:8684
+#: config/tc-mips.c:8031 config/tc-mips.c:8045 config/tc-mips.c:8059
+#: config/tc-mips.c:8073 config/tc-mips.c:8100 config/tc-mips.c:8147
+#, c-format
+msgid "DSP immediate not in range 0..%d (%lu)"
+msgstr "el inmediato DSP no está en el rango 0..%d (%lu)"
+
+#: config/tc-mips.c:8092 config/tc-mips.c:8120
+msgid "Invalid dsp acc register"
+msgstr "Registro acc dsc inválido"
+
+#: config/tc-mips.c:8131 config/tc-mips.c:8165 config/tc-mips.c:8184
+#, c-format
+msgid "DSP immediate not in range %ld..%ld (%ld)"
+msgstr "El inmediato DSP no está en el rango %ld..%ld (%ld)"
+
+#: config/tc-mips.c:8200 config/tc-mips.c:8214
+#, c-format
+msgid "MT immediate not in range 0..%d (%lu)"
+msgstr "El inmediato MT no está en el rango 0..%d (%lu)"
+
+#: config/tc-mips.c:8233 config/tc-mips.c:8246
+msgid "Invalid dsp/smartmips acc register"
+msgstr "Registro acc dsp/smartmips inválido"
+
+#: config/tc-mips.c:8395 config/tc-mips.c:8899
 msgid "absolute expression required"
 msgstr "se requiere una expresión absoluta"
 
-#: config/tc-mips.c:8218
+#: config/tc-mips.c:8418 config/tc-mips.c:8579
+#, c-format
+msgid "Invalid register number (%d)"
+msgstr "Número de registro inválido (%d)"
+
+#: config/tc-mips.c:8426
+msgid "Invalid coprocessor 0 register number"
+msgstr "Número de registro 0 de coprocesador inválido"
+
+#: config/tc-mips.c:8447
 #, c-format
 msgid "Improper shift amount (%lu)"
 msgstr "Cantidad de desplazamiento impropia (%lu)"
 
-#: config/tc-mips.c:8244 config/tc-mips.c:9517 config/tc-mips.c:9632
+#: config/tc-mips.c:8470 config/tc-mips.c:9731 config/tc-mips.c:9844
 #, c-format
 msgid "Invalid value for `%s' (%lu)"
 msgstr "Valor inválido para `%s' (%lu)"
 
-#: config/tc-mips.c:8262
+#: config/tc-mips.c:8485
 #, c-format
 msgid "Illegal break code (%lu)"
 msgstr "Código de interrupción ilegal (%lu)"
 
-#: config/tc-mips.c:8276
+#: config/tc-mips.c:8496
 #, c-format
 msgid "Illegal lower break code (%lu)"
 msgstr "Código de interrupción inferior ilegal (%lu)"
 
-#: config/tc-mips.c:8289
+#: config/tc-mips.c:8507
 #, c-format
 msgid "Illegal 20-bit code (%lu)"
 msgstr "Código de 20-bit ilegal (%lu)"
 
-#: config/tc-mips.c:8301
+#: config/tc-mips.c:8519
 #, c-format
 msgid "Coproccesor code > 25 bits (%lu)"
 msgstr "Código de coprocesador > 25 bits (%lu)"
 
-#: config/tc-mips.c:8314
+#: config/tc-mips.c:8532
 #, c-format
 msgid "Illegal 19-bit code (%lu)"
 msgstr "Código de 19-bit ilegal (%lu)"
 
-#: config/tc-mips.c:8326
+#: config/tc-mips.c:8543
 #, c-format
 msgid "Invalid performance register (%lu)"
 msgstr "Registro de rendimiento inválido (%lu)"
 
-#: config/tc-mips.c:8364
-#, c-format
-msgid "Invalid register number (%d)"
-msgstr "Número de registro inválido (%d)"
-
-#: config/tc-mips.c:8542
+#: config/tc-mips.c:8754
 #, c-format
 msgid "Invalid MDMX Immediate (%ld)"
 msgstr "Inmediato MDMX inválido (%ld)"
 
-#: config/tc-mips.c:8585
+#: config/tc-mips.c:8794
 #, c-format
 msgid "Invalid float register number (%d)"
 msgstr "Número de registro de coma flotante inválido (%d)"
 
-#: config/tc-mips.c:8595
+#: config/tc-mips.c:8810
 #, c-format
 msgid "Float register should be even, was %d"
 msgstr "El registro de coma flotante debería ser par, era %d"
 
-#: config/tc-mips.c:8634
+#: config/tc-mips.c:8849
 #, c-format
 msgid "Bad element selector %ld"
 msgstr "Selector de elemento %ld erróneo"
 
-#: config/tc-mips.c:8642
+#: config/tc-mips.c:8857
 #, c-format
 msgid "Expecting ']' found '%s'"
 msgstr "Se esperaba ']', se encontró '%s'"
 
-#: config/tc-mips.c:8746
+#: config/tc-mips.c:8963
 #, c-format
 msgid "Bad floating point constant: %s"
 msgstr "Constante de coma flotante errónea: %s"
 
-#: config/tc-mips.c:8867
+#: config/tc-mips.c:9084
 msgid "Can't use floating point insn in this section"
 msgstr "No se pueden utilizar instrucciones de coma flotante en esta sección"
 
-#: config/tc-mips.c:8928
+#: config/tc-mips.c:9145
 msgid "expression out of range"
 msgstr "expresión fuera de rango"
 
-#: config/tc-mips.c:8968
+#: config/tc-mips.c:9185
 msgid "lui expression not in range 0..65535"
 msgstr "la expresión de 16 bit no está en el rango 0..65535"
 
-#: config/tc-mips.c:8992
+#: config/tc-mips.c:9209
 #, c-format
 msgid "Invalid condition code register $fcc%d"
 msgstr "Registro de código de condición $fcc%d inválido"
 
-#: config/tc-mips.c:8997
+#: config/tc-mips.c:9214
 #, c-format
 msgid "Condition code register should be even for %s, was %d"
 msgstr "El registro de código de condición debería ser par para %s, era %d"
 
-#: config/tc-mips.c:9002
+#: config/tc-mips.c:9219
 #, c-format
 msgid "Condition code register should be 0 or 4 for %s, was %d"
 msgstr "El registro de código de condición debería ser 0 o 4 para %s, era %d"
 
-#: config/tc-mips.c:9028
+#: config/tc-mips.c:9245
 msgid "invalid coprocessor sub-selection value (0-7)"
 msgstr "valor de subselección de coprocesador (0-7) inválido"
 
-#: config/tc-mips.c:9040 config/tc-mips.c:9057
+#: config/tc-mips.c:9257 config/tc-mips.c:9274
 #, c-format
 msgid "bad byte vector index (%ld)"
 msgstr "índice de vector de byte erróneo (%ld)"
 
-#: config/tc-mips.c:9068
+#: config/tc-mips.c:9285
 #, c-format
 msgid "bad char = '%c'\n"
 msgstr "carácter erróneo = '%c'\n"
 
-#: config/tc-mips.c:9079 config/tc-mips.c:9084 config/tc-mips.c:9657
+#: config/tc-mips.c:9296 config/tc-mips.c:9301 config/tc-mips.c:9869
 msgid "illegal operands"
 msgstr "operandos ilegales"
 
-#: config/tc-mips.c:9150
+#: config/tc-mips.c:9367
 msgid "unrecognized opcode"
 msgstr "códigos de operación no reconocidos"
 
-#: config/tc-mips.c:9289
+#: config/tc-mips.c:9504
 #, c-format
 msgid "invalid register number (%d)"
 msgstr "número de registro inválido (%d)"
 
-#: config/tc-mips.c:9380
+#: config/tc-mips.c:9595
 msgid "used $at without \".set noat\""
 msgstr "se utilizó $at sin \".set noat\""
 
-#: config/tc-mips.c:9551
+#: config/tc-mips.c:9763
 msgid "can't parse register list"
 msgstr "no se puede decodificar la lista de registros"
 
-#: config/tc-mips.c:9775
+#: config/tc-mips.c:9987
 msgid "extended operand requested but not required"
 msgstr "se solicitó un operando extendido pero no es necesario"
 
-#: config/tc-mips.c:9777
+#: config/tc-mips.c:9989
 msgid "invalid unextended operand value"
 msgstr "valor de operando no extendido inválido"
 
-#: config/tc-mips.c:9805
+#: config/tc-mips.c:10017
 msgid "operand value out of range for instruction"
 msgstr "el valor del operando está fuera de rango por la instrucción"
 
-#: config/tc-mips.c:10245
+#: config/tc-mips.c:10469
 #, c-format
 msgid "A different %s was already specified, is now %s"
 msgstr "Ya se había especificado un %s diferente, ahora es %s"
 
-#: config/tc-mips.c:10441
+#: config/tc-mips.c:10689
 msgid "-call_shared is supported only for ELF format"
 msgstr "-call_shared sólo tiene soporte para el formato ELF"
 
-#: config/tc-mips.c:10448 config/tc-mips.c:10477 config/tc-mips.c:11571
-#: config/tc-mips.c:11805
+#: config/tc-mips.c:10696 config/tc-mips.c:10725 config/tc-mips.c:11834
+#: config/tc-mips.c:12060
 msgid "-G may not be used with SVR4 PIC code"
 msgstr "-G no se puede utilizar con código PIC de SVR4"
 
-#: config/tc-mips.c:10457
+#: config/tc-mips.c:10705
 msgid "-non_shared is supported only for ELF format"
 msgstr "-non_shared sólo tiene soporte para el formato ELF"
 
-#: config/tc-mips.c:10488
+#: config/tc-mips.c:10736
 msgid "-32 is supported for ELF format only"
 msgstr "-32 sólo tiene soporte para el formato ELF"
 
-#: config/tc-mips.c:10497
+#: config/tc-mips.c:10745
 msgid "-n32 is supported for ELF format only"
 msgstr "-n32 sólo tiene soporte para el formato ELF"
 
-#: config/tc-mips.c:10506
+#: config/tc-mips.c:10754
 msgid "-64 is supported for ELF format only"
 msgstr "-64 sólo tiene soporte para el formato ELF"
 
-#: config/tc-mips.c:10511 config/tc-mips.c:10548
+#: config/tc-mips.c:10759 config/tc-mips.c:10796
 msgid "No compiled in support for 64 bit object file format"
 msgstr "No se compiló el soporte para el formato de fichero objeto de 64 bit"
 
-#: config/tc-mips.c:10535
+#: config/tc-mips.c:10783
 msgid "-mabi is supported for ELF format only"
 msgstr "-mabi sólo tiene soporte para el formato ELF"
 
-#: config/tc-mips.c:10555
+#: config/tc-mips.c:10803
 #, c-format
 msgid "invalid abi -mabi=%s"
 msgstr "interruptor abi -mabi=%s inválido"
 
-#: config/tc-mips.c:10629
+#: config/tc-mips.c:10877
 msgid "-G not supported in this configuration."
 msgstr "-G no tiene soporte en esta configuración."
 
-#: config/tc-mips.c:10655
+#: config/tc-mips.c:10903
 #, c-format
 msgid "-%s conflicts with the other architecture options, which imply -%s"
 msgstr "-%s tiene conflictos con las otras opciones de arquitectura, las cuales implican -%s"
 
-#: config/tc-mips.c:10686
+#: config/tc-mips.c:10934
 msgid "-mgp64 used with a 32-bit processor"
 msgstr "Se utilizó -mgp64 con un procesador de 32-bit"
 
-#: config/tc-mips.c:10688
+#: config/tc-mips.c:10936
 msgid "-mgp32 used with a 64-bit ABI"
 msgstr "se utilizó -mgp32 con un ABI de 64-bit"
 
-#: config/tc-mips.c:10690
+#: config/tc-mips.c:10938
 msgid "-mgp64 used with a 32-bit ABI"
 msgstr "se utilizó -mgp64 con un ABI de 32-bit"
 
-#: config/tc-mips.c:10720
+#: config/tc-mips.c:10968
 msgid "trap exception not supported at ISA 1"
 msgstr "la excepciónd de trampa no tiene soporte en ISA 1"
 
-#: config/tc-mips.c:10974
+#: config/tc-mips.c:11229
 msgid "Cannot branch to undefined symbol."
 msgstr "No se puede ramificar hacia un símbolo indefinido."
 
-#: config/tc-mips.c:10981
+#: config/tc-mips.c:11236
 msgid "Cannot branch to symbol in another section."
 msgstr "No se puede ramificar hacia un símbolo en otra sección."
 
-#: config/tc-mips.c:10990
+#: config/tc-mips.c:11245
 msgid "Pretending global symbol used as branch target is local."
 msgstr "Pretender que se use un símbolo global como objetivo de ramificación es local."
 
-#: config/tc-mips.c:11147 config/tc-sparc.c:3230 config/tc-sparc.c:3237
-#: config/tc-sparc.c:3244 config/tc-sparc.c:3251 config/tc-sparc.c:3258
-#: config/tc-sparc.c:3267 config/tc-sparc.c:3278 config/tc-sparc.c:3300
-#: config/tc-sparc.c:3324 write.c:962 write.c:1034
+#: config/tc-mips.c:11402 config/tc-sparc.c:3229 config/tc-sparc.c:3236
+#: config/tc-sparc.c:3243 config/tc-sparc.c:3250 config/tc-sparc.c:3257
+#: config/tc-sparc.c:3266 config/tc-sparc.c:3277 config/tc-sparc.c:3299
+#: config/tc-sparc.c:3323 write.c:861 write.c:933
 msgid "relocation overflow"
 msgstr "desbordamiento de reubicación"
 
-#: config/tc-mips.c:11157
+#: config/tc-mips.c:11412
 #, c-format
 msgid "Branch to odd address (%lx)"
 msgstr "Ramificación a una dirección impar (%lx)"
 
-#: config/tc-mips.c:11206
+#: config/tc-mips.c:11461
 msgid "Branch out of range"
 msgstr "Ramificación fuera de rango"
 
-#: config/tc-mips.c:11285
+#: config/tc-mips.c:11540
 #, c-format
 msgid "Alignment too large: %d. assumed."
 msgstr "Alineación demasiado grande: se asume %d."
 
-#: config/tc-mips.c:11288
+#: config/tc-mips.c:11543
 msgid "Alignment negative: 0 assumed."
 msgstr "Alineación negativa: se asume 0."
 
-#: config/tc-mips.c:11527
+#: config/tc-mips.c:11780
 #, c-format
 msgid "%s: no such section"
 msgstr "%s: no existe la sección"
 
-#: config/tc-mips.c:11566
+#: config/tc-mips.c:11829
 #, c-format
 msgid ".option pic%d not supported"
 msgstr ".option pic%d no tiene soporte"
 
-#: config/tc-mips.c:11577
+#: config/tc-mips.c:11840
 #, c-format
 msgid "Unrecognized option \"%s\""
 msgstr "Opción \"%s\" no reconocida"
 
-#: config/tc-mips.c:11639
+#: config/tc-mips.c:11893
 msgid "`noreorder' must be set before `nomacro'"
 msgstr "se debe establecer `noreorder' antes de `nomacro'"
 
-#: config/tc-mips.c:11690
+#: config/tc-mips.c:11952
 #, c-format
 msgid "unknown architecture %s"
 msgstr "arquitectura %s desconocida"
 
-#: config/tc-mips.c:11703 config/tc-mips.c:11733
+#: config/tc-mips.c:11965 config/tc-mips.c:11995
 #, c-format
 msgid "unknown ISA level %s"
 msgstr "nivel ISA %s desconocido"
 
-#: config/tc-mips.c:11711
+#: config/tc-mips.c:11973
 #, c-format
 msgid "unknown ISA or architecture %s"
 msgstr "ISA o arquitectura %s desconocidos"
 
-#: config/tc-mips.c:11761
+#: config/tc-mips.c:12023
 msgid ".set pop with no .set push"
 msgstr ".set pop sin .set push"
 
-#: config/tc-mips.c:11789
+#: config/tc-mips.c:12044
 #, c-format
 msgid "Tried to set unrecognized symbol: %s\n"
 msgstr "Se trató de establecer el símbolo no reconocido: %s\n"
 
-#: config/tc-mips.c:11847
+#: config/tc-mips.c:12102
 msgid ".cpload not in noreorder section"
 msgstr ".cpload no está en la sección noreorder"
 
-#: config/tc-mips.c:11916 config/tc-mips.c:11935
+#: config/tc-mips.c:12171 config/tc-mips.c:12190
 msgid "missing argument separator ',' for .cpsetup"
 msgstr "falta el separador de argumentos ',' para .cpsetup"
 
-#: config/tc-mips.c:12125
+#: config/tc-mips.c:12380
 msgid "Unsupported use of .gpword"
 msgstr "Uso sin soporte de .gpword"
 
-#: config/tc-mips.c:12161
+#: config/tc-mips.c:12416
 msgid "Unsupported use of .gpdword"
 msgstr "Uso sin soporte de .gpdword"
 
-#: config/tc-mips.c:12293
+#: config/tc-mips.c:12548
 msgid "expected `$'"
 msgstr "se esperaba `$'"
 
-#: config/tc-mips.c:12301
+#: config/tc-mips.c:12556
 msgid "Bad register number"
 msgstr "Número de registro erróneo"
 
-#: config/tc-mips.c:12349
+#: config/tc-mips.c:12604
 msgid "Unrecognized register name"
 msgstr "Nombre de registro no reconocido"
 
-#: config/tc-mips.c:12582
+#: config/tc-mips.c:12837
 msgid "unsupported PC relative reference to different section"
 msgstr "referencia relativa al PC sin soporte a una sección diferente"
 
-#: config/tc-mips.c:12695 config/tc-xtensa.c:1624 config/tc-xtensa.c:1835
+#: config/tc-mips.c:12950 config/tc-xtensa.c:1593 config/tc-xtensa.c:1804
 msgid "unsupported relocation"
 msgstr "reubicación sin soporte"
 
-#: config/tc-mips.c:12901 config/tc-sh.c:4302
+#: config/tc-mips.c:13158
 #, c-format
 msgid "Can not represent %s relocation in this object file format"
 msgstr "No se puede representar la reubicación %s en este formato de fichero objeto"
 
-#: config/tc-mips.c:12987
+#: config/tc-mips.c:13244
 msgid "relaxed out-of-range branch into a jump"
 msgstr "ramificación relajada fuera de rango en un salto"
 
-#: config/tc-mips.c:13501
+#: config/tc-mips.c:13766
 msgid "missing .end at end of assembly"
 msgstr "falta un .end al final del ensamblado"
 
-#: config/tc-mips.c:13516
+#: config/tc-mips.c:13781
 msgid "expected simple number"
 msgstr "se esperaba un número simple"
 
-#: config/tc-mips.c:13542
+#: config/tc-mips.c:13807
 #, c-format
 msgid " *input_line_pointer == '%c' 0x%02x\n"
 msgstr " *input_line_pointer == '%c' 0x%02x\n"
 
-#: config/tc-mips.c:13544
+#: config/tc-mips.c:13809
 msgid "invalid number"
 msgstr "número inválido"
 
-#: config/tc-mips.c:13617
+#: config/tc-mips.c:13882
 msgid ".end not in text section"
 msgstr ".end no está en la sección text"
 
-#: config/tc-mips.c:13621
+#: config/tc-mips.c:13886
 msgid ".end directive without a preceding .ent directive."
 msgstr "directiva .end sin una directiva .ent precedente."
 
-#: config/tc-mips.c:13630
+#: config/tc-mips.c:13895
 msgid ".end symbol does not match .ent symbol."
 msgstr "el símbolo .end no coincide con el símbolo .ent."
 
-#: config/tc-mips.c:13637
+#: config/tc-mips.c:13902
 msgid ".end directive missing or unknown symbol"
 msgstr "falta la directiva .end o hay un símbolo desconocido"
 
-#: config/tc-mips.c:13713
+#: config/tc-mips.c:13978
 msgid ".ent or .aent not in text section."
 msgstr ".ent o .aent no están en la sección text."
 
-#: config/tc-mips.c:13716
+#: config/tc-mips.c:13981
 msgid "missing .end"
 msgstr "falta un .end"
 
-#: config/tc-mips.c:13768
+#: config/tc-mips.c:14033
 msgid "Bad .frame directive"
 msgstr "Directiva .frame errónea"
 
-#: config/tc-mips.c:13800
+#: config/tc-mips.c:14065
 msgid ".mask/.fmask outside of .ent"
 msgstr ".mask/.fmask fuera de .ent"
 
-#: config/tc-mips.c:13807
+#: config/tc-mips.c:14072
 msgid "Bad .mask/.fmask directive"
 msgstr "Directiva .mask/.fmask errónea"
 
-#: config/tc-mips.c:14064
+#: config/tc-mips.c:14337
 #, c-format
 msgid ""
 "MIPS options:\n"
@@ -7652,7 +7480,7 @@ msgstr ""
 "-G NUM\t\t\tpermite la referencia a objetos hasta NUM bytes\n"
 "\t\t\timplícitamente con el registro gp [por defecto 8]\n"
 
-#: config/tc-mips.c:14071
+#: config/tc-mips.c:14344
 #, c-format
 msgid ""
 "-mips1\t\t\tgenerate MIPS ISA I instructions\n"
@@ -7676,7 +7504,7 @@ msgstr ""
 "-mips64                 genera instrucciones MIPS64 ISA\n"
 "-march=CPU/-mtune=CPU\tgenera código/calendarización para el CPU, donde CPU es uno de:\n"
 
-#: config/tc-mips.c:14090
+#: config/tc-mips.c:14363
 #, c-format
 msgid ""
 "-mCPU\t\t\tequivalent to -march=CPU -mtune=CPU. Deprecated.\n"
@@ -7687,7 +7515,7 @@ msgstr ""
 "-no-mCPU\t\tno genera código específico para el CPU.\n"
 "\t\t\tPara -mCPU y -no-mCPU, CPU debe ser uno de:\n"
 
-#: config/tc-mips.c:14103
+#: config/tc-mips.c:14376
 #, c-format
 msgid ""
 "-mips16\t\t\tgenerate mips16 instructions\n"
@@ -7696,10 +7524,29 @@ msgstr ""
 "-mips16\t\t\tgenera instrucciones mips16\n"
 "-no-mips16\t\tno genera instrucciones mips16\n"
 
-#: config/tc-mips.c:14106
+#: config/tc-mips.c:14379
+#, c-format
+msgid ""
+"-mdsp\t\t\tgenerate DSP instructions\n"
+"-mno-dsp\t\tdo not generate DSP instructions\n"
+msgstr ""
+"-mdsp\t\t\tgenera instrucciones DSP\n"
+"-mno-dsp\t\tno genera instrucciones DSP\n"
+
+#: config/tc-mips.c:14382
+#, c-format
+msgid ""
+"-mmt\t\t\tgenerate MT instructions\n"
+"-mno-mt\t\t\tdo not generate MT instructions\n"
+msgstr ""
+"-mmt\t\t\tgenera instrucciones MT\n"
+"-mno-mt\t\tno genera instrucciones MT\n"
+
+#: config/tc-mips.c:14385
 #, c-format
 msgid ""
 "-mfix-vr4120\t\twork around certain VR4120 errata\n"
+"-mfix-vr4130\t\twork around VR4130 mflo/mfhi errata\n"
 "-mgp32\t\t\tuse 32-bit GPRs, regardless of the chosen ISA\n"
 "-mfp32\t\t\tuse 32-bit FPRs, regardless of the chosen ISA\n"
 "-mno-shared\t\toptimize output for executables\n"
@@ -7711,6 +7558,7 @@ msgid ""
 "--break, --no-trap\tbreak exception on div by 0 and mult overflow\n"
 msgstr ""
 "-mfix-vr4120\t\tevita ciertos errores de VR4120\n"
+"-mfix-vr4130\t\tevita los errores mflo/mfhi de VR4130\n"
 "-mgp32\t\t\tusa GPRs de 32-bit, sin importar el ISA escogido\n"
 "-mfp32\t\t\tusa FPRS de 32-bit, sin importar el ISA escogido\n"
 "-mno-shared\t\toptimiza la salida para ejecutables\n"
@@ -7721,7 +7569,7 @@ msgstr ""
 "--trap, --no-break\texcepción de trampa en div por 0 y desbordamiento de mult\n"
 "--break, --no-trap\texcepción de interrupción en div por 0 y desbordamiento de mult\n"
 
-#: config/tc-mips.c:14118
+#: config/tc-mips.c:14398
 #, c-format
 msgid ""
 "-KPIC, -call_shared\tgenerate SVR4 position independent code\n"
@@ -7740,7 +7588,7 @@ msgstr ""
 "                        código que no es compartido\n"
 "-mabi=ABI\t\tcrea un fichero objeto que cumple con el ABI para:\n"
 
-#: config/tc-mips.c:14137
+#: config/tc-mips.c:14417
 #, c-format
 msgid ""
 "-32\t\t\tcreate o32 ABI object file (default)\n"
@@ -7751,12 +7599,12 @@ msgstr ""
 "-n32\t\t\tcrea ficheros objeto ABI o32\n"
 "-64\t\t\tcrea ficheros objeto ABI 64\n"
 
-#: config/tc-mmix.c:713
+#: config/tc-mmix.c:694
 #, c-format
 msgid " MMIX-specific command line options:\n"
 msgstr "Opciones de la línea de comandos específicas de MMIX:\n"
 
-#: config/tc-mmix.c:714
+#: config/tc-mmix.c:695
 #, c-format
 msgid ""
 "  -fixed-special-register-names\n"
@@ -7765,22 +7613,22 @@ msgstr ""
 "  -fixed-special-register-names\n"
 "                          Sólo permite los nombres de registros especiales originales.\n"
 
-#: config/tc-mmix.c:717
+#: config/tc-mmix.c:698
 #, c-format
 msgid "  -globalize-symbols      Make all symbols global.\n"
 msgstr "  -globalize-symbols      Hace que todos los símbolos sean globales.\n"
 
-#: config/tc-mmix.c:719
+#: config/tc-mmix.c:700
 #, c-format
 msgid "  -gnu-syntax             Turn off mmixal syntax compatibility.\n"
 msgstr "  -gnu-syntax             Desactiva la compatibilidad con la sintaxis mmixal.\n"
 
-#: config/tc-mmix.c:721
+#: config/tc-mmix.c:702
 #, c-format
 msgid "  -relax                  Create linker relaxable code.\n"
 msgstr "  -relax                  Crea código relajable para el enlazador.\n"
 
-#: config/tc-mmix.c:723
+#: config/tc-mmix.c:704
 #, c-format
 msgid ""
 "  -no-predefined-syms     Do not provide mmixal built-in constants.\n"
@@ -7789,7 +7637,7 @@ msgstr ""
 "  -no-predefined-syms     No provee las constantes internas de mmixal.\n"
 "                          Implica -fixed-special-register-names.\n"
 
-#: config/tc-mmix.c:726
+#: config/tc-mmix.c:707
 #, c-format
 msgid ""
 "  -no-expand              Do not expand GETA, branches, PUSHJ or JUMP\n"
@@ -7798,17 +7646,17 @@ msgstr ""
 "  -no-expand              No expande GETA, ramificaciones, PUSHJ ó JUMP\n"
 "                          a instrucciones múltiples.\n"
 
-#: config/tc-mmix.c:729
+#: config/tc-mmix.c:710
 #, c-format
 msgid "  -no-merge-gregs         Do not merge GREG definitions with nearby values.\n"
 msgstr "  -no-merge-gregs         No mezcla las definiciones GREG con los valores cercanos.\n"
 
-#: config/tc-mmix.c:731
+#: config/tc-mmix.c:712
 #, c-format
 msgid "  -linker-allocated-gregs If there's no suitable GREG definition for the                          operands of an instruction, let the linker resolve.\n"
 msgstr "  -linker-allocated-gregs Si no hay una definición GREG adecuada para                          los operandos de una instrucción, dejar resolver al enlazador.\n"
 
-#: config/tc-mmix.c:734
+#: config/tc-mmix.c:715
 #, c-format
 msgid ""
 "  -x                      Do not warn when an operand to GETA, a branch,\n"
@@ -7821,185 +7669,185 @@ msgstr ""
 "                          del rango. El enlazador atrapará cualquier error.\n"
 "                          Implica -linker-allocated-gregs."
 
-#: config/tc-mmix.c:861
+#: config/tc-mmix.c:841
 #, c-format
 msgid "unknown opcode: `%s'"
 msgstr "código de operación desconocido: `%s'"
 
-#: config/tc-mmix.c:983 config/tc-mmix.c:998
+#: config/tc-mmix.c:963 config/tc-mmix.c:978
 msgid "specified location wasn't TETRA-aligned"
 msgstr "la ubicación especificada no estaba TETRA alineada"
 
-#: config/tc-mmix.c:985 config/tc-mmix.c:1000 config/tc-mmix.c:4186
-#: config/tc-mmix.c:4202
+#: config/tc-mmix.c:965 config/tc-mmix.c:980 config/tc-mmix.c:4124
+#: config/tc-mmix.c:4140
 msgid "unaligned data at an absolute location is not supported"
 msgstr "los datos sin alinear en una ubicación absoluta no tienen soporte"
 
-#: config/tc-mmix.c:1110
+#: config/tc-mmix.c:1090
 #, c-format
 msgid "invalid operand to opcode %s: `%s'"
 msgstr "operandos inválidos para el código de operación %s: `%s'"
 
-#: config/tc-mmix.c:1132 config/tc-mmix.c:1159 config/tc-mmix.c:1192
-#: config/tc-mmix.c:1200 config/tc-mmix.c:1217 config/tc-mmix.c:1245
-#: config/tc-mmix.c:1266 config/tc-mmix.c:1291 config/tc-mmix.c:1339
-#: config/tc-mmix.c:1437 config/tc-mmix.c:1462 config/tc-mmix.c:1494
-#: config/tc-mmix.c:1526 config/tc-mmix.c:1556 config/tc-mmix.c:1609
-#: config/tc-mmix.c:1626 config/tc-mmix.c:1653 config/tc-mmix.c:1681
-#: config/tc-mmix.c:1708 config/tc-mmix.c:1734 config/tc-mmix.c:1750
-#: config/tc-mmix.c:1776 config/tc-mmix.c:1792 config/tc-mmix.c:1808
-#: config/tc-mmix.c:1871 config/tc-mmix.c:1887
+#: config/tc-mmix.c:1112 config/tc-mmix.c:1139 config/tc-mmix.c:1172
+#: config/tc-mmix.c:1180 config/tc-mmix.c:1197 config/tc-mmix.c:1225
+#: config/tc-mmix.c:1246 config/tc-mmix.c:1271 config/tc-mmix.c:1319
+#: config/tc-mmix.c:1417 config/tc-mmix.c:1442 config/tc-mmix.c:1474
+#: config/tc-mmix.c:1506 config/tc-mmix.c:1536 config/tc-mmix.c:1589
+#: config/tc-mmix.c:1606 config/tc-mmix.c:1633 config/tc-mmix.c:1661
+#: config/tc-mmix.c:1688 config/tc-mmix.c:1714 config/tc-mmix.c:1730
+#: config/tc-mmix.c:1756 config/tc-mmix.c:1772 config/tc-mmix.c:1788
+#: config/tc-mmix.c:1851 config/tc-mmix.c:1867
 #, c-format
 msgid "invalid operands to opcode %s: `%s'"
 msgstr "operandos inválidos para el código de operación %s: `%s'"
 
-#: config/tc-mmix.c:1864
+#: config/tc-mmix.c:1844
 #, c-format
 msgid "unsupported operands to %s: `%s'"
 msgstr "operandos sin soporte para %s: `%s'"
 
-#: config/tc-mmix.c:1992
+#: config/tc-mmix.c:1969
 msgid "internal: mmix_prefix_name but empty prefix"
 msgstr "interno: hay un mmix_prefix_name pero es un prefijo vacío"
 
-#: config/tc-mmix.c:2037
+#: config/tc-mmix.c:2013
 #, c-format
 msgid "too many GREG registers allocated (max %d)"
 msgstr "se asignaron demasiados registros GREG (máximo %d)"
 
-#: config/tc-mmix.c:2097
+#: config/tc-mmix.c:2071
 msgid "BSPEC already active.  Nesting is not supported."
 msgstr "BSPEC ya está activo.  El anidamiento no tiene soporte."
 
-#: config/tc-mmix.c:2106
+#: config/tc-mmix.c:2080
 msgid "invalid BSPEC expression"
 msgstr "expresión BSPEC inválida"
 
-#: config/tc-mmix.c:2122
+#: config/tc-mmix.c:2096
 #, c-format
 msgid "can't create section %s"
 msgstr "no se puede crear la sección %s"
 
-#: config/tc-mmix.c:2127
+#: config/tc-mmix.c:2101
 #, c-format
 msgid "can't set section flags for section %s"
 msgstr "no se pueden establecer las opciones para la sección %s"
 
-#: config/tc-mmix.c:2149
+#: config/tc-mmix.c:2122
 msgid "ESPEC without preceding BSPEC"
 msgstr "ESPEC sin un BSPEC precedente"
 
-#: config/tc-mmix.c:2179
+#: config/tc-mmix.c:2151
 msgid "missing local expression"
 msgstr "falta una expresión local"
 
-#: config/tc-mmix.c:2424
+#: config/tc-mmix.c:2389
 msgid "operand out of range, instruction expanded"
 msgstr "el operando está fuera de rango, se expande la instrucción"
 
 #. The BFD_RELOC_MMIX_LOCAL-specific message is supposed to be
 #. user-friendly, though a little bit non-substantial.
-#: config/tc-mmix.c:2682
+#: config/tc-mmix.c:2640
 msgid "directive LOCAL must be placed in code or data"
 msgstr "la directiva LOCAL debe estar colocada en el código o en los datos"
 
-#: config/tc-mmix.c:2683
+#: config/tc-mmix.c:2641
 msgid "internal confusion: relocation in a section without contents"
 msgstr "confusión interna: reubiación en una sección sin contenido"
 
-#: config/tc-mmix.c:2797
+#: config/tc-mmix.c:2755
 msgid "internal: BFD_RELOC_MMIX_BASE_PLUS_OFFSET not resolved to section"
 msgstr "interno: BFD_RELOC_MMIX_BASE_PLUS_OFFSET no resuelve a la sección"
 
-#: config/tc-mmix.c:2845
+#: config/tc-mmix.c:2803
 msgid "no suitable GREG definition for operands"
 msgstr "no hay una definición GREG adecuada para los operandos"
 
-#: config/tc-mmix.c:2904
+#: config/tc-mmix.c:2862
 msgid "operands were not reducible at assembly-time"
 msgstr "los operandos no son reducibles en el momento del ensamblado"
 
-#: config/tc-mmix.c:2931
+#: config/tc-mmix.c:2889
 #, c-format
 msgid "cannot generate relocation type for symbol %s, code %s"
 msgstr "no se puede generar el tipo de reubicación para el símbolo %s, código %s"
 
-#: config/tc-mmix.c:2951
+#: config/tc-mmix.c:2909
 #, c-format
 msgid "internal: unhandled label %s"
 msgstr "interno: etiqueta %s sin manejar"
 
-#: config/tc-mmix.c:3005
+#: config/tc-mmix.c:2939
 msgid "[0-9]H labels may not appear alone on a line"
 msgstr "las etiquetas [0-9]H no pueden aparecer solas en una línea"
 
-#: config/tc-mmix.c:3014
+#: config/tc-mmix.c:2948
 msgid "[0-9]H labels do not mix with dot-pseudos"
 msgstr "las etiquetas [0-9]H no se mezclan con pseudo-puntos"
 
-#: config/tc-mmix.c:3078
+#: config/tc-mmix.c:3036
 msgid "invalid characters in input"
 msgstr "caracteres inválidos en la entrada"
 
-#: config/tc-mmix.c:3182
+#: config/tc-mmix.c:3140
 msgid "empty label field for IS"
 msgstr "campo de etiqueta vacío para IS"
 
-#: config/tc-mmix.c:3515
+#: config/tc-mmix.c:3466
 #, c-format
 msgid "internal: unexpected relax type %d:%d"
 msgstr "interno: tipo de relajación inesperado %d:%d"
 
-#: config/tc-mmix.c:3537
+#: config/tc-mmix.c:3488
 msgid "BSPEC without ESPEC."
 msgstr "BSPEC sin un ESPEC."
 
-#: config/tc-mmix.c:3739
+#: config/tc-mmix.c:3688
 msgid "GREG expression too complicated"
 msgstr "expresión GREG demasiado complicada"
 
-#: config/tc-mmix.c:3754
+#: config/tc-mmix.c:3703
 msgid "internal: GREG expression not resolved to section"
 msgstr "interno: la expresión GREG no resuelva a la sección"
 
-#: config/tc-mmix.c:3805
+#: config/tc-mmix.c:3752
 msgid "register section has contents\n"
 msgstr "la sección de registros tiene contenido\n"
 
-#: config/tc-mmix.c:3939
+#: config/tc-mmix.c:3879
 msgid "section change from within a BSPEC/ESPEC pair is not supported"
 msgstr "el cambio de sección desde dentro de una pareja BSPEC/ESPEC no tiene soporte"
 
-#: config/tc-mmix.c:3961
+#: config/tc-mmix.c:3900
 msgid "directive LOC from within a BSPEC/ESPEC pair is not supported"
 msgstr "una directiva LOC desde dentro de una pareja BSPEC/ESPEC no tiene soporte"
 
-#: config/tc-mmix.c:3972
+#: config/tc-mmix.c:3911
 msgid "invalid LOC expression"
 msgstr "expresión LOC inválida"
 
-#: config/tc-mmix.c:3997 config/tc-mmix.c:4023
+#: config/tc-mmix.c:3936 config/tc-mmix.c:3962
 msgid "LOC expression stepping backwards is not supported"
 msgstr "el paso hacia atrás de una expresión LOC no tiene soporte"
 
 #. We will only get here in rare cases involving #NO_APP,
 #. where the unterminated string is not recognized by the
 #. preformatting pass.
-#: config/tc-mmix.c:4107 config/tc-mmix.c:4268
+#: config/tc-mmix.c:4046 config/tc-mmix.c:4206
 msgid "unterminated string"
 msgstr "cadena sin terminar"
 
-#: config/tc-mmix.c:4124
+#: config/tc-mmix.c:4063
 msgid "BYTE expression not a pure number"
 msgstr "la expresión BYTE no es un número puro"
 
 #. Note that mmixal does not allow negative numbers in
 #. BYTE sequences, so neither should we.
-#: config/tc-mmix.c:4133
+#: config/tc-mmix.c:4072
 msgid "BYTE expression not in the range 0..255"
 msgstr "la expresión BYTE no está en el rango 0..255"
 
-#: config/tc-mmix.c:4184 config/tc-mmix.c:4200
+#: config/tc-mmix.c:4122 config/tc-mmix.c:4138
 msgid "data item with alignment larger than location"
 msgstr "elemento de datos con una alineación más grande que la ubicación"
 
@@ -8009,7 +7857,7 @@ msgstr "elemento de datos con una alineaci
 msgid "`&' serial number operator is not supported"
 msgstr "el operador de número serial `&' no tiene soporte"
 
-#: config/tc-mn10200.c:319
+#: config/tc-mn10200.c:305
 #, c-format
 msgid ""
 "MN10200 options:\n"
@@ -8018,14 +7866,14 @@ msgstr ""
 "Opciones MN10200:\n"
 "ninguna aún\n"
 
-#: config/tc-mn10200.c:793 config/tc-mn10300.c:1392 config/tc-ppc.c:2120
-#: config/tc-s390.c:1522 config/tc-v850.c:1693
+#: config/tc-mn10200.c:931 config/tc-mn10300.c:1392 config/tc-ppc.c:2135
+#: config/tc-s390.c:1557 config/tc-v850.c:1621
 #, c-format
 msgid "Unrecognized opcode: `%s'"
 msgstr "Código de operación no reconocido: `%s'"
 
-#: config/tc-mn10200.c:1036 config/tc-mn10300.c:1965 config/tc-ppc.c:2599
-#: config/tc-s390.c:1437 config/tc-v850.c:2110
+#: config/tc-mn10200.c:1174 config/tc-mn10300.c:1965 config/tc-ppc.c:2614
+#: config/tc-s390.c:1472 config/tc-v850.c:2026
 #, c-format
 msgid "junk at end of line: `%s'"
 msgstr "basura al final de la línea: `%s'"
@@ -8039,7 +7887,7 @@ msgstr ""
 "Opciones de MN10300:\n"
 "ninguna aún\n"
 
-#: config/tc-mn10300.c:1361 config/tc-sh.c:776 read.c:3729
+#: config/tc-mn10300.c:1361 config/tc-sh.c:778 read.c:3871
 #, c-format
 msgid "unsupported BFD relocation size %u"
 msgstr "tamaño de reubicación BFD %u sin soporte"
@@ -8052,43 +7900,43 @@ msgstr "C
 msgid "Invalid register specification."
 msgstr "Especificación de registro inválida."
 
-#: config/tc-mn10300.c:2519
+#: config/tc-mn10300.c:2518
 #, c-format
 msgid "Bad relocation fixup type (%d)"
 msgstr "Tipo de compostura de reubicación inválido (%d)"
 
-#: config/tc-msp430.c:502
+#: config/tc-msp430.c:552
 msgid ".profiler pseudo requires at least two operands."
 msgstr "el seudo .profiler requiere por lo menos dos operandos."
 
-#: config/tc-msp430.c:561
+#: config/tc-msp430.c:611
 msgid "unknown profiling flag - ignored."
 msgstr "opción de perfilado desconocida - se ignora."
 
-#: config/tc-msp430.c:577
+#: config/tc-msp430.c:627
 msgid "ambigious flags combination - '.profiler' directive ignored."
 msgstr "combinación de opciones ambigua - se ignora la directiva '.profiler'."
 
-#: config/tc-msp430.c:587
+#: config/tc-msp430.c:637
 msgid "profiling in absolute section? Hm..."
 msgstr "¿perfilando en la sección absoluta? Hm..."
 
-#: config/tc-msp430.c:674
+#: config/tc-msp430.c:726
 #, c-format
 msgid "Known MCU names:\n"
 msgstr "Nombres MCU conocidos:\n"
 
-#: config/tc-msp430.c:677
+#: config/tc-msp430.c:729
 #, c-format
 msgid "\t %s\n"
 msgstr "\t %s\n"
 
-#: config/tc-msp430.c:703
+#: config/tc-msp430.c:755
 #, c-format
 msgid "redefinition of mcu type %s' to %s'"
 msgstr "redefinición del tipo de mcu %s' a %s'"
 
-#: config/tc-msp430.c:733
+#: config/tc-msp430.c:798
 #, c-format
 msgid ""
 "MSP430 options:\n"
@@ -8137,170 +7985,183 @@ msgstr ""
 "                  msp430x435  msp430x436  msp430x437\n"
 "                  msp430x447  msp430x448  msp430x449\n"
 
-#: config/tc-msp430.c:943
+#: config/tc-msp430.c:821
+#, c-format
+msgid ""
+"  -mQ - enable relaxation at assembly time. DANGEROUS!\n"
+"  -mP - enable polymorph instructions\n"
+msgstr ""
+"  -mQ - permite la relajación en tiempo de ensamblado. ¡PELIGROSO!\n"
+"  -mP - permite las instrucciones polimórficas\n"
+
+#: config/tc-msp430.c:1011
 #, c-format
 msgid "value %d out of range. Use #lo() or #hi()"
 msgstr "el valor %d está fuera de rango. Utilice #lo() o #hi()"
 
-#: config/tc-msp430.c:1031
+#: config/tc-msp430.c:1099
 #, c-format
 msgid "unknown expression in operand %s. use #llo() #lhi() #hlo() #hhi() "
 msgstr "expresión desconocida en el operando %s. Utilice #llo() #lhi() #hlo() #hhi() "
 
-#: config/tc-msp430.c:1082
+#: config/tc-msp430.c:1150
 #, c-format
 msgid "Registers cannot be used within immediate expression [%s]"
 msgstr "Los registros no se pueden usar en la expresión inmediata [%s]"
 
-#: config/tc-msp430.c:1084
+#: config/tc-msp430.c:1152
 #, c-format
 msgid "unknown operand %s"
 msgstr "operando %s desconocido"
 
-#: config/tc-msp430.c:1106 config/tc-msp430.c:1241
+#: config/tc-msp430.c:1174 config/tc-msp430.c:1309
 #, c-format
 msgid "value out of range: %d"
 msgstr "valor fuera de rango: %d"
 
-#: config/tc-msp430.c:1117
+#: config/tc-msp430.c:1185
 #, c-format
 msgid "Registers cannot be used within absolute expression [%s]"
 msgstr "Los registros no se pueden usar en la expresión absoluta [%s]"
 
-#: config/tc-msp430.c:1119 config/tc-msp430.c:1262
+#: config/tc-msp430.c:1187 config/tc-msp430.c:1330
 #, c-format
 msgid "unknown expression in operand %s"
 msgstr "expresión desconocida en el operando %s"
 
-#: config/tc-msp430.c:1133 config/tc-msp430.c:1140
+#: config/tc-msp430.c:1201 config/tc-msp430.c:1208
 #, c-format
 msgid "unknown addressing mode %s"
 msgstr "modo de direccionamiento %s desconocido"
 
-#: config/tc-msp430.c:1148
+#: config/tc-msp430.c:1216
 #, c-format
 msgid "Bad register name r%s"
 msgstr "Nombre de registro r%s erróneo"
 
-#: config/tc-msp430.c:1160
+#: config/tc-msp430.c:1228
 #, c-format
 msgid "MSP430 does not have %d registers"
 msgstr "MSP430 no tiene %d registros"
 
-#: config/tc-msp430.c:1180
+#: config/tc-msp430.c:1248
 msgid "')' required"
 msgstr "se requiere ')'"
 
-#: config/tc-msp430.c:1193
+#: config/tc-msp430.c:1261
 #, c-format
 msgid "unknown operator %s. Did you mean X(Rn) or #[hl][hl][oi](CONST) ?"
 msgstr "operador %s desconocido. ¿ Quiere decir X(Rn) ó #[hl][hl][oi](CONST) ?"
 
-#: config/tc-msp430.c:1202
+#: config/tc-msp430.c:1270
 #, c-format
 msgid "unknown operator (r%s substituded as a register name"
 msgstr "operador desconocido (se sustituyó r%s como un nombre de registro"
 
-#: config/tc-msp430.c:1214 config/tc-msp430.c:1225
+#: config/tc-msp430.c:1282 config/tc-msp430.c:1293
 #, c-format
 msgid "unknown operator %s"
 msgstr "operador %s desconocido"
 
-#: config/tc-msp430.c:1219
+#: config/tc-msp430.c:1287
 msgid "r2 should not be used in indexed addressing mode"
 msgstr "no se debe usar r2 en el modo de direccionamiento indizado"
 
-#: config/tc-msp430.c:1260
+#: config/tc-msp430.c:1328
 #, c-format
 msgid "Registers cannot be used as a prefix of indexed expression [%s]"
 msgstr "Los registros no se pueden usar en la expresión indizada [%s]"
 
 #. Unreachable.
-#: config/tc-msp430.c:1309
+#: config/tc-msp430.c:1377
 #, c-format
 msgid "unknown addressing mode for operand %s"
 msgstr "modo de direccionamiento desconocido para el operando %s"
 
-#: config/tc-msp430.c:1334
+#: config/tc-msp430.c:1402
 #, c-format
 msgid "Internal bug. Try to use 0(r%d) instead of @r%d"
 msgstr "Bicho interno. Intente utilizar 0(r%d) en lugar de @r%d"
 
-#: config/tc-msp430.c:1344
+#: config/tc-msp430.c:1412
 msgid "this addressing mode is not applicable for destination operand"
 msgstr "Este modo de direccionamiento no se puede aplicar al operando destino"
 
-#: config/tc-msp430.c:1388
+#: config/tc-msp430.c:1456
 #, c-format
 msgid "instruction %s requires %d operand(s)"
 msgstr "La instrucción %s requiere de %d operando(s)"
 
-#: config/tc-msp430.c:1634
+#: config/tc-msp430.c:1709
 #, c-format
 msgid "Even number required. Rounded to %d"
 msgstr "Se requiere un número par. Se redondea a %d"
 
-#: config/tc-msp430.c:1645
+#: config/tc-msp430.c:1720
 #, c-format
 msgid "Wrong displacement  %d"
 msgstr "Desubicación errónea  %d"
 
-#: config/tc-msp430.c:1662
+#: config/tc-msp430.c:1737
 msgid "instruction requires label sans '$'"
 msgstr "la instrucción requiere una etiqueta sin '$'"
 
-#: config/tc-msp430.c:1668
+#: config/tc-msp430.c:1742
 msgid "instruction requires label or value in range -511:512"
 msgstr "la instrucción requiere una etiqueta o valor en el rango -511:512"
 
-#: config/tc-msp430.c:1674 config/tc-msp430.c:1707 config/tc-msp430.c:1739
+#: config/tc-msp430.c:1749 config/tc-msp430.c:1793 config/tc-msp430.c:1832
 msgid "instruction requires label"
 msgstr "La instrucción requiere una etiqueta"
 
-#: config/tc-msp430.c:1743
+#: config/tc-msp430.c:1757 config/tc-msp430.c:1799
+msgid "polymorphs are not enabled. Use -mP option to enable."
+msgstr "los polimórficos no están activados. Use la opción -mP para activar."
+
+#: config/tc-msp430.c:1836
 msgid "Ilegal instruction or not implmented opcode."
 msgstr "Instrucción ilegal o código de operación no implementado."
 
-#: config/tc-msp430.c:2075
+#: config/tc-msp430.c:2187
 #, c-format
 msgid "internal inconsistency problem in %s: insn %04lx"
 msgstr "problema de inconsistencia interna en %s: insn %04lx"
 
-#: config/tc-msp430.c:2105 config/tc-msp430.c:2128
+#: config/tc-msp430.c:2217 config/tc-msp430.c:2240
 #, c-format
 msgid "internal inconsistency problem in %s: ext. insn %04lx"
 msgstr "problema de inconsistencia interna en %s: ext. insn %04lx"
 
-#: config/tc-msp430.c:2140
+#: config/tc-msp430.c:2252
 #, c-format
 msgid "internal inconsistency problem in %s:  %lx"
 msgstr "problema de inconsistencia interna en %s:  %lx"
 
-#: config/tc-ns32k.c:449
+#: config/tc-ns32k.c:441
 msgid "Invalid syntax in PC-relative addressing mode"
 msgstr "Sintaxis inválida en el modo de direccionamiento relativo al PC"
 
-#: config/tc-ns32k.c:473
+#: config/tc-ns32k.c:465
 msgid "Invalid syntax in External addressing mode"
 msgstr "Sintaxis inválida en el modo de direccionamiento Externo"
 
-#: config/tc-ns32k.c:554
+#: config/tc-ns32k.c:546
 msgid "Invalid syntax in Memory Relative addressing mode"
 msgstr "Sintaxis inválida en el modo de direccionamiento Relativo a Memoria"
 
-#: config/tc-ns32k.c:621
+#: config/tc-ns32k.c:613
 msgid "Invalid scaled-indexed mode, use (b,w,d,q)"
 msgstr "Modo escalado-indizado inválido, utilice (b,w,d,q)"
 
-#: config/tc-ns32k.c:626
+#: config/tc-ns32k.c:618
 msgid "Syntax in scaled-indexed mode, use [Rn:m] where n=[0..7] m={b,w,d,q}"
 msgstr "Sintaxis en el modo escalado-indizado, utilice [Rn:m] donde n=[0..7] m={b,w,d,q}"
 
-#: config/tc-ns32k.c:631
+#: config/tc-ns32k.c:623
 msgid "Scaled-indexed addressing mode combined with scaled-index"
 msgstr "Modo de direccionamiento escalado-indizado combinado con índice-escalado"
 
-#: config/tc-ns32k.c:642
+#: config/tc-ns32k.c:634
 msgid "Invalid or illegal addressing mode combined with scaled-index"
 msgstr "Modo de direccionamiento inválido o ilegal combiando con índice-escalado"
 
@@ -8312,35 +8173,35 @@ msgstr "Fin de sufijo prematuro -- Cambiando por defecto a d"
 msgid "Bad suffix after ':' use {b|w|d} Defaulting to d"
 msgstr "Sufijo erróneo después de ':' utilice {b|w|d} Cambiando por defecto a d"
 
-#: config/tc-ns32k.c:817
+#: config/tc-ns32k.c:815
 msgid "Very short instr to option, ie you can't do it on a NULLstr"
 msgstr "Instrucción muy corta para la opción, p.e. no lo puede hacer en un NULLstr"
 
-#: config/tc-ns32k.c:870
+#: config/tc-ns32k.c:865
 msgid "No such entry in list. (cpu/mmu register)"
 msgstr "No existe esa entrada en la lista. (registros cpu/mmu)"
 
-#: config/tc-ns32k.c:915
+#: config/tc-ns32k.c:922
 msgid "Internal consistency error.  check ns32k-opcode.h"
 msgstr "Error de consistencia interno.  revise ns32k-opcode.h"
 
-#: config/tc-ns32k.c:939
+#: config/tc-ns32k.c:946
 msgid "Address of immediate operand"
 msgstr "Dirección del operando inmediato"
 
-#: config/tc-ns32k.c:940
+#: config/tc-ns32k.c:947
 msgid "Invalid immediate write operand."
 msgstr "Operando de escritura inmediato inválido."
 
-#: config/tc-ns32k.c:1070
+#: config/tc-ns32k.c:1077
 msgid "Bad opcode-table-option, check in file ns32k-opcode.h"
 msgstr "Opción-de-tabla-de-códigos-de-operación errónea, revise en el fichero ns32k-opcode.h"
 
-#: config/tc-ns32k.c:1107
+#: config/tc-ns32k.c:1110
 msgid "No such opcode"
 msgstr "No existe ese código de operación"
 
-#: config/tc-ns32k.c:1184
+#: config/tc-ns32k.c:1185
 msgid "Bad suffix, defaulting to d"
 msgstr "Sufijo erróneo, cambiando por defecto a d"
 
@@ -8349,94 +8210,94 @@ msgid "Too many operands passed to instruction"
 msgstr "Se pasaron demasiados operandos a la instrucción"
 
 #. Check error in default.
-#: config/tc-ns32k.c:1225
+#: config/tc-ns32k.c:1224
 msgid "Wrong numbers of operands in default, check ns32k-opcodes.h"
 msgstr "Número erróneo de operandos por defecto, revise ns32k-opcodes.h"
 
-#: config/tc-ns32k.c:1229
+#: config/tc-ns32k.c:1227
 msgid "Wrong number of operands"
 msgstr "Número erróneo de operandos"
 
-#: config/tc-ns32k.c:1355
-msgid "iif convert internal pcrel/binary"
-msgstr "iif convierte a pcrel/binario interno"
-
-#: config/tc-ns32k.c:1372
-msgid "Bignum too big for long"
-msgstr "Número grande demasiado grande para long"
-
-#: config/tc-ns32k.c:1451
-msgid "iif convert internal pcrel/pointer"
-msgstr "iif convierte a pcrel/puntero interno"
-
-#: config/tc-ns32k.c:1456
-msgid "Internal logic error in iif.iifP[n].type"
-msgstr "Error interno de lógica en iif.iifP[n].tipo"
-
-#. We cant relax this case.
-#: config/tc-ns32k.c:1493
-msgid "Can't relax difference"
-msgstr "No se puede relajar la diferencia"
-
-#: config/tc-ns32k.c:1541
-msgid "Displacement to large for :d"
-msgstr "Desubicación demasiado grande para :d"
-
-#: config/tc-ns32k.c:1554
-msgid "Internal logic error in iif.iifP[].type"
-msgstr "Error interno de lógica en iif.iifP[].tipo"
-
-#: config/tc-ns32k.c:1614
+#: config/tc-ns32k.c:1300
 #, c-format
 msgid "Can not do %d byte pc-relative relocation for storage type %d"
 msgstr "No se puede hacer la reubicación relativa al pc de %d byte para el tipo de almacenamiento %d"
 
-#: config/tc-ns32k.c:1617
+#: config/tc-ns32k.c:1303
 #, c-format
 msgid "Can not do %d byte relocation for storage type %d"
 msgstr "No se puede hacer la reubicación de %d byte para el tipo de almacenamiento %d"
 
-#. Fatal.
-#: config/tc-ns32k.c:1652
-#, c-format
-msgid "Can't hash %s: %s"
-msgstr "No se puede dispersar %s: %s"
-
-#: config/tc-ns32k.c:1740
+#: config/tc-ns32k.c:1395
 #, c-format
 msgid "value of %ld out of byte displacement range."
 msgstr "valor de %ld fuera del rango de desubicación de byte."
 
-#: config/tc-ns32k.c:1749
+#: config/tc-ns32k.c:1405
 #, c-format
 msgid "value of %ld out of word displacement range."
 msgstr "valor de %ld fuera del rango de desubicación de word."
 
-#: config/tc-ns32k.c:1763
+#: config/tc-ns32k.c:1420
 #, c-format
 msgid "value of %ld out of double word displacement range."
 msgstr "valor de %ld fuera del rango de desubicación de doble word."
 
-#: config/tc-ns32k.c:1783
+#: config/tc-ns32k.c:1441
 #, c-format
 msgid "Internal logic error.  line %d, file \"%s\""
 msgstr "Error lógico interno.  línea %d, fichero \"%s\""
 
-#: config/tc-ns32k.c:1831
+#: config/tc-ns32k.c:1489
 #, c-format
 msgid "Internal logic error. line %d, file \"%s\""
 msgstr "Error lógico interno. línea %d, fichero \"%s\""
 
-#: config/tc-ns32k.c:1936
+#: config/tc-ns32k.c:1590
 msgid "Bit field out of range"
 msgstr "Campo de bits fuera de rango"
 
-#: config/tc-ns32k.c:2180
+#: config/tc-ns32k.c:1690
+msgid "iif convert internal pcrel/binary"
+msgstr "iif convierte a pcrel/binario interno"
+
+#: config/tc-ns32k.c:1707
+msgid "Bignum too big for long"
+msgstr "Número grande demasiado grande para long"
+
+#: config/tc-ns32k.c:1784
+msgid "iif convert internal pcrel/pointer"
+msgstr "iif convierte a pcrel/puntero interno"
+
+#: config/tc-ns32k.c:1789
+msgid "Internal logic error in iif.iifP[n].type"
+msgstr "Error interno de lógica en iif.iifP[n].tipo"
+
+#. We cant relax this case.
+#: config/tc-ns32k.c:1825
+msgid "Can't relax difference"
+msgstr "No se puede relajar la diferencia"
+
+#: config/tc-ns32k.c:1866
+msgid "Displacement to large for :d"
+msgstr "Desubicación demasiado grande para :d"
+
+#: config/tc-ns32k.c:1879
+msgid "Internal logic error in iif.iifP[].type"
+msgstr "Error interno de lógica en iif.iifP[].tipo"
+
+#. Fatal.
+#: config/tc-ns32k.c:1911
+#, c-format
+msgid "Can't hash %s: %s"
+msgstr "No se puede dispersar %s: %s"
+
+#: config/tc-ns32k.c:2181
 #, c-format
 msgid "invalid architecture option -m%s, ignored"
 msgstr "opción de arquitectura -m%s inválida, se ignora"
 
-#: config/tc-ns32k.c:2193
+#: config/tc-ns32k.c:2194
 #, c-format
 msgid "invalid default displacement size \"%s\". Defaulting to %d."
 msgstr "tamaño de desubicación por defecto \"%s\" inválido. Cambiando a %d por defecto."
@@ -8452,70 +8313,71 @@ msgstr ""
 "-m32032 | -m32532\tselecciona la variante de la arquitectura NS32K\n"
 "--disp-size-default=<1|2|4>\n"
 
-#: config/tc-ns32k.c:2394
+#: config/tc-ns32k.c:2285
 #, c-format
 msgid "Cannot find relocation type for symbol %s, code %d"
 msgstr "No se puede encontrar el tipo de reubicación para el símbolo %s, código %d"
 
-#: config/tc-or32.c:465 config/tc-or32.c:676
+#: config/tc-or32.c:360
 #, c-format
 msgid "unknown opcode1: `%s'"
 msgstr "código de operación1 desconocido: `%s'"
 
-#: config/tc-or32.c:471 config/tc-or32.c:682
+#: config/tc-or32.c:366
 #, c-format
 msgid "unknown opcode2 `%s'."
 msgstr "código de operación2 `%s' desconocido."
 
-#: config/tc-or32.c:510 config/tc-or32.c:721
+#: config/tc-or32.c:403
 #, c-format
 msgid "instruction not allowed: %s"
 msgstr "no se permite la instrucción: %s"
 
-#: config/tc-or32.c:513 config/tc-or32.c:724
+#: config/tc-or32.c:406
 #, c-format
 msgid "too many operands: %s"
 msgstr "demasiados operandos: %s"
 
-#: config/tc-or32.c:599 config/tc-or32.c:811
+#: config/tc-or32.c:490
 msgid "call/jmp target out of range (1)"
 msgstr "objetivo call/jmp fuera de rango (1)"
 
-#: config/tc-or32.c:1004 config/tc-or32.c:1112
+#: config/tc-or32.c:674
 msgid "call/jmp target out of range (2)"
 msgstr "objetivo call/jmp fuera de rango (2)"
 
-#: config/tc-or32.c:1402
-msgid "register out of range"
-msgstr "registro fuera de rango"
+#: config/tc-or32.c:693
+#, c-format
+msgid "bad relocation type: 0x%02x"
+msgstr "tipo de reubicación erróneo: 0x%02x"
 
-#: config/tc-or32.c:1447
+#: config/tc-or32.c:885
 msgid "invalid register in & expression"
 msgstr "registro inválido en la expresión &"
 
-#: config/tc-pdp11.c:431
+#: config/tc-pdp11.c:490
 msgid "Low order bits truncated in immediate float operand"
 msgstr "Se truncaron los bits de orden inferior en el operando de coma flotante inmediato"
 
-#: config/tc-pdp11.c:620
+#: config/tc-pdp11.c:679
 #, c-format
 msgid "Unknown instruction '%s'"
 msgstr "Instrucción '%s' desconocida"
 
-#: config/tc-pj.c:83 config/tc-pj.c:91
+#: config/tc-pj.c:66 config/tc-pj.c:75
 msgid "confusing relocation expressions"
 msgstr "expresiones de reubicación confusas"
 
-#: config/tc-pj.c:182
+#: config/tc-pj.c:158
 msgid "can't have relocation for ipush"
 msgstr "no se puede tener una reubicación para ipush"
 
-#: config/tc-pj.c:289
+#: config/tc-pj.c:261
 #, c-format
 msgid "unknown opcode %s"
 msgstr "código de operación %s desconocido"
 
-#: config/tc-pj.c:438
+#: config/tc-pj.c:404
 #, c-format
 msgid ""
 "PJ options:\n"
@@ -8526,8 +8388,8 @@ msgstr ""
 "-little\t\t\tgenera código little endian\n"
 "-big\t\t\tgenera código big endian\n"
 
-#: config/tc-pj.c:468 config/tc-sh.c:3978 config/tc-sh.c:3985
-#: config/tc-sh.c:3992 config/tc-sh.c:3999
+#: config/tc-pj.c:431 config/tc-sh.c:3955 config/tc-sh.c:3962
+#: config/tc-sh.c:3969 config/tc-sh.c:3976
 msgid "pcrel too far"
 msgstr "pcrel demasiado lejos"
 
@@ -8539,17 +8401,17 @@ msgstr "convert_frag\n"
 msgid "estimate size\n"
 msgstr "tamaño estimado\n"
 
-#: config/tc-ppc.c:980
+#: config/tc-ppc.c:991
 #, c-format
 msgid "%s unsupported"
 msgstr "%s no tiene soporte"
 
-#: config/tc-ppc.c:1046 config/tc-s390.c:415 config/tc-s390.c:422
+#: config/tc-ppc.c:1057 config/tc-s390.c:417 config/tc-s390.c:424
 #, c-format
 msgid "invalid switch -m%s"
 msgstr "interruptor -m%s inválido"
 
-#: config/tc-ppc.c:1083
+#: config/tc-ppc.c:1094
 #, c-format
 msgid ""
 "PowerPC options:\n"
@@ -8579,7 +8441,7 @@ msgstr ""
 "-m7400, -m7410, -m7450, -m7455\n"
 "\t\t\tgenera código para PowerPC 7400/7410/7450/7455\n"
 
-#: config/tc-ppc.c:1097
+#: config/tc-ppc.c:1108
 #, c-format
 msgid ""
 "-mppc64, -m620\t\tgenerate code for PowerPC 620/625/630\n"
@@ -8587,6 +8449,7 @@ msgid ""
 "-mbooke64\t\tgenerate code for 64-bit PowerPC BookE\n"
 "-mbooke, mbooke32\tgenerate code for 32-bit PowerPC BookE\n"
 "-mpower4\t\tgenerate code for Power4 architecture\n"
+"-mpower5\t\tgenerate code for Power5 architecture\n"
 "-mcom\t\t\tgenerate code Power/PowerPC common instructions\n"
 "-many\t\t\tgenerate code for any architecture (PWR/PWRX/PPC)\n"
 msgstr ""
@@ -8596,25 +8459,28 @@ msgstr ""
 "-mbooke64\t\tgenera código para PowerPC BookE de 64-bit\n"
 "-mbooke, mbooke32\tgenera código para PowerPC BookE de 32-bit\n"
 "-mpower4\t\tgenera código para la arquitectura Power4\n"
+"-mpower5\t\tgenera código para la arquitectura Power5\n"
 "-mcom\t\t\tgenera código de instrucciones comunes Power/PowerPC\n"
 "-many\t\t\tgenera código para cualquier arquitectura (PWR/PWRX/PPC)\n"
 
-#: config/tc-ppc.c:1105
+#: config/tc-ppc.c:1117
 #, c-format
 msgid ""
 "-maltivec\t\tgenerate code for AltiVec\n"
+"-me300\t\t\tgenerate code for PowerPC e300 family\n"
 "-me500, -me500x2\tgenerate code for Motorola e500 core complex\n"
 "-mspe\t\t\tgenerate code for Motorola SPE instructions\n"
 "-mregnames\t\tAllow symbolic names for registers\n"
 "-mno-regnames\t\tDo not allow symbolic names for registers\n"
 msgstr ""
 "-maltivec\t\tgenera código para AltiVec\n"
+"-me300\t\t\tgenera código para la familia PowerPC e300\n"
 "-me500, -me500x2\tgenera código para el núcleo complejo Motorola e500\n"
 "-mspe\t\t\tgenera código para las instrucciones Motorola SPE\n"
 "-mregnames\t\tPermite nombres simbólicos para los registros\n"
 "-mno-regnames\t\tNo permite nombres simbólicos para los registros\n"
 
-#: config/tc-ppc.c:1112
+#: config/tc-ppc.c:1125
 #, c-format
 msgid ""
 "-mrelocatable\t\tsupport for GCC's -mrelocatble option\n"
@@ -8641,251 +8507,251 @@ msgstr ""
 "-V\t\t\tmuestra el número de versión del ensamblador\n"
 "-Qy, -Qn\t\tse ignora\n"
 
-#: config/tc-ppc.c:1154
+#: config/tc-ppc.c:1162
 #, c-format
 msgid "Unknown default cpu = %s, os = %s"
 msgstr "Cpu por defecto desconocido = %s, os = %s"
 
-#: config/tc-ppc.c:1180
+#: config/tc-ppc.c:1188
 msgid "Neither Power nor PowerPC opcodes were selected."
 msgstr "No se escogieron los códigos de operación Power ni PowerPC"
 
-#: config/tc-ppc.c:1270 config/tc-s390.c:517
+#: config/tc-ppc.c:1285 config/tc-s390.c:519
 #, c-format
 msgid "Internal assembler error for instruction %s"
 msgstr "Error interno del ensamblador para la instrucción %s"
 
-#: config/tc-ppc.c:1294
+#: config/tc-ppc.c:1309
 #, c-format
 msgid "Internal assembler error for macro %s"
 msgstr "Error interno del ensamblador para la macro %s"
 
-#: config/tc-ppc.c:1625
+#: config/tc-ppc.c:1640
 msgid "identifier+constant@got means identifier@got+constant"
 msgstr "identificador+constante@got significa identificador@got+constante"
 
-#: config/tc-ppc.c:1692
+#: config/tc-ppc.c:1707
 #, c-format
 msgid "%s relocations do not fit in %d bytes\n"
 msgstr "%s reubicaciones no caben en %d bytes\n"
 
-#: config/tc-ppc.c:1799
+#: config/tc-ppc.c:1814
 #, c-format
 msgid "Length of .lcomm \"%s\" is already %ld. Not changed to %ld."
 msgstr "La longitud de .lcomm \"%s\" ya es %ld. No se cambió a %ld."
 
-#: config/tc-ppc.c:1881
+#: config/tc-ppc.c:1896
 msgid "Relocation cannot be done when using -mrelocatable"
 msgstr "No se puede hacer la reubicación cuando se utiliza -mrelocatable"
 
-#: config/tc-ppc.c:1930
+#: config/tc-ppc.c:1945
 msgid "TOC section size exceeds 64k"
 msgstr "el tamaño de la sección TOC excede los 64k"
 
-#: config/tc-ppc.c:2012
+#: config/tc-ppc.c:2027
 #, c-format
 msgid "syntax error: invalid toc specifier `%s'"
 msgstr "error sintáctico: especificador de tabla de contenidos `%s' inválido"
 
-#: config/tc-ppc.c:2026
+#: config/tc-ppc.c:2041
 #, c-format
 msgid "syntax error: expected `]', found  `%c'"
 msgstr "error sintáctico: se esperaba `]', se obtuvo  `%c'"
 
-#: config/tc-ppc.c:2305
+#: config/tc-ppc.c:2320
 msgid "[tocv] symbol is not a toc symbol"
 msgstr "el símbolo [tocv] no es un símbolo de tabla de contenido"
 
-#: config/tc-ppc.c:2316
+#: config/tc-ppc.c:2331
 msgid "Unimplemented toc32 expression modifier"
 msgstr "Modificador de expresión toc32 sin implementar"
 
-#: config/tc-ppc.c:2321
+#: config/tc-ppc.c:2336
 msgid "Unimplemented toc64 expression modifier"
 msgstr "Modificador de expresión toc64 sin implementar"
 
-#: config/tc-ppc.c:2325
+#: config/tc-ppc.c:2340
 #, c-format
 msgid "Unexpected return value [%d] from parse_toc_entry!\n"
 msgstr "¡Valor de devolución inesperado [%d] de parse_toc_entry!\n"
 
-#: config/tc-ppc.c:2543
+#: config/tc-ppc.c:2558
 msgid "unsupported relocation for DS offset field"
 msgstr "tipo de reubicación sin soporte para el campo de desplazamiento DS"
 
-#: config/tc-ppc.c:2587
+#: config/tc-ppc.c:2602
 #, c-format
 msgid "syntax error; found `%c' but expected `%c'"
 msgstr "error sintáctico; se encontró `%c' pero se esperaba `%c'"
 
-#: config/tc-ppc.c:2630 config/tc-ppc.h:117
+#: config/tc-ppc.c:2645 config/tc-ppc.h:111
 msgid "instruction address is not a multiple of 4"
 msgstr "la dirección de la instrucción no es un múltiplo de 4"
 
-#: config/tc-ppc.c:2741
+#: config/tc-ppc.c:2756
 msgid "wrong number of operands"
 msgstr "número erróneo de operandos"
 
-#: config/tc-ppc.c:2797
+#: config/tc-ppc.c:2812
 msgid "Bad .section directive: want a,e,w,x,M,S,G,T in string"
 msgstr "Directiva .section errónea: se quiere a,e,w,x,M,S,G,T en la cadena"
 
-#: config/tc-ppc.c:2912
+#: config/tc-ppc.c:2927
 msgid "missing size"
 msgstr "falta el tamaño"
 
-#: config/tc-ppc.c:2921
+#: config/tc-ppc.c:2936
 msgid "negative size"
 msgstr "tamaño negativo"
 
-#: config/tc-ppc.c:2958
+#: config/tc-ppc.c:2973
 msgid "missing real symbol name"
 msgstr "falta el nombre real del símbolo"
 
-#: config/tc-ppc.c:2979
+#: config/tc-ppc.c:2994
 msgid "attempt to redefine symbol"
 msgstr "se intentó redefinir el símbolo"
 
-#: config/tc-ppc.c:3226
+#: config/tc-ppc.c:3241
 msgid "The XCOFF file format does not support arbitrary sections"
 msgstr "El formato del fichero XCOFF no tiene soporte para secciones arbitrarias"
 
-#: config/tc-ppc.c:3303
+#: config/tc-ppc.c:3318
 msgid "missing rename string"
 msgstr "falta la cadena para renombrar"
 
-#: config/tc-ppc.c:3334 config/tc-ppc.c:3889 read.c:3035
+#: config/tc-ppc.c:3349 config/tc-ppc.c:3904 read.c:3064
 msgid "missing value"
 msgstr "falta el valor"
 
-#: config/tc-ppc.c:3352
+#: config/tc-ppc.c:3367
 msgid "illegal .stabx expression; zero assumed"
 msgstr "expresión .stabx ilegal; se asume cero"
 
-#: config/tc-ppc.c:3384
+#: config/tc-ppc.c:3399
 msgid "missing class"
 msgstr "falta la clase"
 
-#: config/tc-ppc.c:3393
+#: config/tc-ppc.c:3408
 msgid "missing type"
 msgstr "falta el tipo"
 
-#: config/tc-ppc.c:3474
+#: config/tc-ppc.c:3489
 msgid "missing symbol name"
 msgstr "falta el nombre del símbolo"
 
-#: config/tc-ppc.c:3668
+#: config/tc-ppc.c:3683
 msgid "nested .bs blocks"
 msgstr "bloques .bs anidados"
 
-#: config/tc-ppc.c:3701
+#: config/tc-ppc.c:3716
 msgid ".es without preceding .bs"
 msgstr ".es sin un .bs precedente"
 
-#: config/tc-ppc.c:3881
+#: config/tc-ppc.c:3896
 msgid "non-constant byte count"
 msgstr "cuenta de byte no constante"
 
-#: config/tc-ppc.c:3929
+#: config/tc-ppc.c:3944
 msgid ".tc not in .toc section"
 msgstr ".tc no está en la sección .toc"
 
-#: config/tc-ppc.c:3948
+#: config/tc-ppc.c:3963
 msgid ".tc with no label"
 msgstr ".tc sin etiqueta"
 
-#: config/tc-ppc.c:4040
+#: config/tc-ppc.c:4055
 msgid ".machine stack overflow"
 msgstr "desbordamiento de pila en .machine"
 
-#: config/tc-ppc.c:4047
+#: config/tc-ppc.c:4062
 msgid ".machine stack underflow"
 msgstr "desbordamiento por debajo de la pila en .machine"
 
-#: config/tc-ppc.c:4054
+#: config/tc-ppc.c:4069
 #, c-format
 msgid "invalid machine `%s'"
 msgstr "máquina `%s' inválida"
 
-#: config/tc-ppc.c:4108
+#: config/tc-ppc.c:4123
 msgid "No previous section to return to. Directive ignored."
 msgstr "No hay sección previa a la cual regresar. Se ignora la directiva."
 
 #. Section Contents
 #. unknown
-#: config/tc-ppc.c:4525
+#: config/tc-ppc.c:4540
 msgid "Unsupported section attribute -- 'a'"
 msgstr "Atributo de sección sin soporte -- 'a'"
 
-#: config/tc-ppc.c:4714
+#: config/tc-ppc.c:4729
 msgid "bad symbol suffix"
 msgstr "sufijo de símbolo erróneo"
 
-#: config/tc-ppc.c:4807
+#: config/tc-ppc.c:4822
 msgid "Unrecognized symbol suffix"
 msgstr "sufijo de símbolo no reconocido"
 
-#: config/tc-ppc.c:4893
+#: config/tc-ppc.c:4912
 msgid "two .function pseudo-ops with no intervening .ef"
 msgstr "dos pseudo-operadores .function sin un .ef que intervenga"
 
-#: config/tc-ppc.c:4906
+#: config/tc-ppc.c:4925
 msgid ".ef with no preceding .function"
 msgstr ".ef sin un .function precedente"
 
-#: config/tc-ppc.c:5034
+#: config/tc-ppc.c:5053
 #, c-format
 msgid "warning: symbol %s has no csect"
 msgstr "aviso: el símbolo %s no tiene csect"
 
-#: config/tc-ppc.c:5338
+#: config/tc-ppc.c:5357
 msgid "symbol in .toc does not match any .tc"
 msgstr "el símbolo en .toc no coincide con ningún .tc"
 
-#: config/tc-ppc.c:5666 config/tc-s390.c:2057 config/tc-v850.c:2408
-#: config/tc-xstormy16.c:555
+#: config/tc-ppc.c:5686 config/tc-s390.c:2092 config/tc-v850.c:2314
+#: config/tc-xstormy16.c:538
 msgid "unresolved expression that must be resolved"
 msgstr "expresión sin resolver que debe ser resuelta"
 
-#: config/tc-ppc.c:5669
+#: config/tc-ppc.c:5689
 #, c-format
 msgid "unsupported relocation against %s"
 msgstr "reubicación sin soporte contra %s"
 
-#: config/tc-ppc.c:5744
+#: config/tc-ppc.c:5762
 #, c-format
 msgid "cannot emit PC relative %s relocation against %s"
 msgstr "no se puede emitir la reubicación %s relativa al PC contra %s"
 
-#: config/tc-ppc.c:5749
+#: config/tc-ppc.c:5767
 #, c-format
 msgid "cannot emit PC relative %s relocation"
 msgstr "no se puede emitir la reubicación %s relativa al PC"
 
-#: config/tc-ppc.c:5905
+#: config/tc-ppc.c:5949
 #, c-format
 msgid "Unable to handle reference to symbol %s"
 msgstr "No se puede manejar la referencia al símbolo %s"
 
-#: config/tc-ppc.c:5908
+#: config/tc-ppc.c:5952
 msgid "Unable to resolve expression"
 msgstr "No se puede resolver la expresión"
 
-#: config/tc-ppc.c:5935
+#: config/tc-ppc.c:5979
 msgid "must branch to an address a multiple of 4"
 msgstr "se debe ramificar a una dirección que sea múltiplo de 4"
 
-#: config/tc-ppc.c:5939
+#: config/tc-ppc.c:5983
 #, c-format
 msgid "@local or @plt branch destination is too far away, %ld bytes"
 msgstr "el destino de la ramificación @local o @plt está demasiado lejos, %ld bytes"
 
-#: config/tc-ppc.c:5970
+#: config/tc-ppc.c:6014
 #, c-format
 msgid "Gas failure, reloc value %d\n"
 msgstr "Falla de gas, valor de reubicación %d\n"
 
-#: config/tc-s390.c:458
+#: config/tc-s390.c:460
 #, c-format
 msgid ""
 "        S390 options:\n"
@@ -8902,7 +8768,7 @@ msgstr ""
 "        -m31              Establece el formato del fichero al formato 31 bit\n"
 "        -m64              Establece el formato del fichero al formato 64 bit\n"
 
-#: config/tc-s390.c:465
+#: config/tc-s390.c:467
 #, c-format
 msgid ""
 "        -V                print assembler version number\n"
@@ -8911,75 +8777,70 @@ msgstr ""
 "        -V                muestra el número de versión del ensamblador\n"
 "        -Qy, -Qn          se ignora\n"
 
-#: config/tc-s390.c:501
+#: config/tc-s390.c:503
 #, c-format
 msgid "Internal assembler error for instruction format %s"
 msgstr "Error interno del ensamblador para la el formato de instrucción %s"
 
-#: config/tc-s390.c:764
+#: config/tc-s390.c:766
 #, c-format
 msgid "identifier+constant@%s means identifier@%s+constant"
 msgstr "identificador+constante@%s significa identificador@%s+constante"
 
-#: config/tc-s390.c:847
+#: config/tc-s390.c:849
 msgid "Can't handle O_big in s390_exp_compare"
 msgstr "No se puede manejar O_big en s390_exp_compare"
 
-#: config/tc-s390.c:931
+#: config/tc-s390.c:933
 msgid "Invalid suffix for literal pool entry"
 msgstr "Sufijo inválido para la entrada de conjunto de literales"
 
-#: config/tc-s390.c:988
+#: config/tc-s390.c:990
 msgid "Big number is too big"
 msgstr "El número grande es demasiado grande"
 
-#: config/tc-s390.c:1126 config/tc-s390.c:1707 config/tc-xtensa.c:1632
-#, c-format
-msgid "%s relocations do not fit in %d bytes"
-msgstr "%s reubicaciones no caben en %d bytes"
-
-#: config/tc-s390.c:1136
+#: config/tc-s390.c:1138
 msgid "relocation not applicable"
 msgstr "la reubicación no es aplicable"
 
-#: config/tc-s390.c:1324
+#: config/tc-s390.c:1326
 msgid "invalid operand suffix"
 msgstr "sufijo de operando inválido"
 
-#: config/tc-s390.c:1347
+#: config/tc-s390.c:1349
 msgid "syntax error; missing '(' after displacement"
 msgstr "error sintáctico; falta un '(' después de la desubicación"
 
-#: config/tc-s390.c:1357 config/tc-s390.c:1390 config/tc-s390.c:1409
+#: config/tc-s390.c:1365 config/tc-s390.c:1409 config/tc-s390.c:1439
 msgid "syntax error; expected ,"
 msgstr "error sintáctico; se esperaba ,"
 
-#: config/tc-s390.c:1384
+#: config/tc-s390.c:1397
 msgid "syntax error; missing ')' after base register"
 msgstr "error sintáctico; falta un '(' después del registro base"
 
-#: config/tc-s390.c:1402
+#: config/tc-s390.c:1426
 msgid "syntax error; ')' not allowed here"
 msgstr "errór sintáctico; no se permite aquí un ')'"
 
-#: config/tc-s390.c:1584 config/tc-s390.c:1607 config/tc-s390.c:1620
+#: config/tc-s390.c:1619 config/tc-s390.c:1642 config/tc-s390.c:1655
 msgid "Invalid .insn format\n"
 msgstr "Formato .insn inválido\n"
 
-#: config/tc-s390.c:1592
+#: config/tc-s390.c:1627
 #, c-format
 msgid "Unrecognized opcode format: `%s'"
 msgstr "Formato de código de operación no reconocido: `%s'"
 
-#: config/tc-s390.c:1623
+#: config/tc-s390.c:1658
 msgid "second operand of .insn not a constant\n"
 msgstr "el operando de .insn no es una constante\n"
 
-#: config/tc-s390.c:1626
+#: config/tc-s390.c:1661
 msgid "missing comma after insn constant\n"
 msgstr "falta una coma después de la constante insn\n"
 
-#: config/tc-s390.c:2060
+#: config/tc-s390.c:2095
 msgid "unsupported relocation type"
 msgstr "tipo de reubicación sin soporte"
 
@@ -9160,11 +9021,11 @@ msgstr "No se permite c
 msgid "No segment info for current section"
 msgstr "No hay información de segmento para la sección actual"
 
-#: config/tc-sh64.c:3257
+#: config/tc-sh64.c:3258
 msgid "duplicate datalabel operator ignored"
 msgstr "se ignora el operador datalabel duplicado"
 
-#: config/tc-sh64.c:3327
+#: config/tc-sh64.c:3328
 msgid "Invalid DataLabel expression"
 msgstr "Expresión DataLabel inválida"
 
@@ -9176,320 +9037,335 @@ msgstr "se encontr
 msgid "directive .little encountered when option -little required"
 msgstr "se encontró una directiva .little cuando se requirió una opción -little"
 
-#: config/tc-sh.c:1245
+#: config/tc-sh.c:1277
 msgid "misplaced PIC operand"
 msgstr "operando PIC mal colocado"
 
-#: config/tc-sh.c:1283
+#: config/tc-sh.c:1315
 msgid "illegal double indirection"
 msgstr "doble indirección ilegal"
 
-#: config/tc-sh.c:1292
+#: config/tc-sh.c:1324
 msgid "illegal register after @-"
 msgstr "registro ilegal después de @-"
 
-#: config/tc-sh.c:1308
+#: config/tc-sh.c:1340
 msgid "must be @(r0,...)"
 msgstr "debe ser @(r0,...)"
 
-#: config/tc-sh.c:1332
+#: config/tc-sh.c:1364
 msgid "syntax error in @(r0,...)"
 msgstr "error sintáctico en @(r0,...)"
 
-#: config/tc-sh.c:1337
+#: config/tc-sh.c:1369
 msgid "syntax error in @(r0...)"
 msgstr "error sintáctico en @(r0...)"
 
-#: config/tc-sh.c:1382
+#: config/tc-sh.c:1414
 msgid "Deprecated syntax."
 msgstr "Sintaxis deprecada."
 
-#: config/tc-sh.c:1394 config/tc-sh.c:1399
+#: config/tc-sh.c:1426 config/tc-sh.c:1431
 msgid "syntax error in @(disp,[Rn, gbr, pc])"
 msgstr "error sintáctico en @(disp,[Rn, gbr, pc])"
 
-#: config/tc-sh.c:1404
+#: config/tc-sh.c:1436
 msgid "expecting )"
 msgstr "se esperaba )"
 
-#: config/tc-sh.c:1412
+#: config/tc-sh.c:1444
 msgid "illegal register after @"
 msgstr "registro ilegal después de @"
 
-#: config/tc-sh.c:2249
+#: config/tc-sh.c:2115
+#, c-format
+msgid "unhandled %d\n"
+msgstr "%d sin manejar\n"
+
+#: config/tc-sh.c:2281
 #, c-format
 msgid "Invalid register: 'r%d'"
 msgstr "Registro inválido: 'r%d'"
 
-#: config/tc-sh.c:2471
+#: config/tc-sh.c:2385
+#, c-format
+msgid "failed for %d\n"
+msgstr "falló para %d\n"
+
+#: config/tc-sh.c:2498 config/tc-sh.c:2894
+msgid "invalid operands for opcode"
+msgstr "operandos inválidos para el código de operación"
+
+#: config/tc-sh.c:2503
 msgid "insn can't be combined with parallel processing insn"
 msgstr "las instrucciones no se pueden combinar con instrucciones de procesamiento paralelo"
 
-#: config/tc-sh.c:2478 config/tc-sh.c:2489 config/tc-sh.c:2521
+#: config/tc-sh.c:2510 config/tc-sh.c:2521 config/tc-sh.c:2553
 msgid "multiple movx specifications"
 msgstr "especificaciones movx múltiples"
 
-#: config/tc-sh.c:2483 config/tc-sh.c:2505 config/tc-sh.c:2544
+#: config/tc-sh.c:2515 config/tc-sh.c:2537 config/tc-sh.c:2576
 msgid "multiple movy specifications"
 msgstr "especificaciones movy múltiples"
 
-#: config/tc-sh.c:2492 config/tc-sh.c:2525
+#: config/tc-sh.c:2524 config/tc-sh.c:2557
 msgid "invalid movx address register"
 msgstr "registro de dirección movx inválido"
 
-#: config/tc-sh.c:2494
+#: config/tc-sh.c:2526
 msgid "insn cannot be combined with non-nopy"
 msgstr "las instrucciones no se pueden combinar con las que no son nopy"
 
-#: config/tc-sh.c:2508 config/tc-sh.c:2564
+#: config/tc-sh.c:2540 config/tc-sh.c:2596
 msgid "invalid movy address register"
 msgstr "registro de dirección movy inválido"
 
-#: config/tc-sh.c:2510
+#: config/tc-sh.c:2542
 msgid "insn cannot be combined with non-nopx"
 msgstr "las instrucciones no se pueden combinar con las que no son nopx"
 
-#: config/tc-sh.c:2523
+#: config/tc-sh.c:2555
 msgid "previous movy requires nopx"
 msgstr "el movy previo requiere nopx"
 
-#: config/tc-sh.c:2531 config/tc-sh.c:2536
+#: config/tc-sh.c:2563 config/tc-sh.c:2568
 msgid "invalid movx dsp register"
 msgstr "registro dsp movx inválido"
 
-#: config/tc-sh.c:2546
+#: config/tc-sh.c:2578
 msgid "previous movx requires nopy"
 msgstr "el movx previo requiere nopy"
 
-#: config/tc-sh.c:2555 config/tc-sh.c:2560
+#: config/tc-sh.c:2587 config/tc-sh.c:2592
 msgid "invalid movy dsp register"
 msgstr "registro dsp movy inválido"
 
-#: config/tc-sh.c:2570
+#: config/tc-sh.c:2602
 msgid "dsp immediate shift value not constant"
 msgstr "el valor de desplazamiento inmediato dsp no es constante"
 
-#: config/tc-sh.c:2584 config/tc-sh.c:2610
+#: config/tc-sh.c:2616 config/tc-sh.c:2642
 msgid "multiple parallel processing specifications"
 msgstr "especificaciones múltiples de procesamiento paralelo"
 
-#: config/tc-sh.c:2603
+#: config/tc-sh.c:2635
 msgid "multiple condition specifications"
 msgstr "especificaciones múltiples de condición"
 
-#: config/tc-sh.c:2641
+#: config/tc-sh.c:2673
 msgid "insn cannot be combined with pmuls"
 msgstr "las instrucciones no se pueden combinar con pmuls"
 
-#: config/tc-sh.c:2657
+#: config/tc-sh.c:2689
 msgid "bad combined pmuls output operand"
 msgstr "operando de salida pmuls mal combinado"
 
-#: config/tc-sh.c:2667
+#: config/tc-sh.c:2699
 msgid "destination register is same for parallel insns"
 msgstr "el registro de destino es el mismo para instrucciones paralelas"
 
-#: config/tc-sh.c:2676
+#: config/tc-sh.c:2708
 msgid "condition not followed by conditionalizable insn"
 msgstr "la condición no está seguida por una instrucción condicionalizable"
 
-#: config/tc-sh.c:2686
+#: config/tc-sh.c:2718
 msgid "unrecognized characters at end of parallel processing insn"
 msgstr "caracteres no reconocidos al final de la instrucción de procesamiento paralelo"
 
-#: config/tc-sh.c:2802
+#: config/tc-sh.c:2834
 msgid "opcode not valid for this cpu variant"
 msgstr "el código de operación no es válido para esta variante de cpu"
 
-#: config/tc-sh.c:2835
+#: config/tc-sh.c:2867
 msgid "Delayed branches not available on SH1"
 msgstr "Las ramificaciones postergadas no están disponibles en SH1"
 
-#: config/tc-sh.c:2867
+#: config/tc-sh.c:2899
 #, c-format
 msgid "excess operands: '%s'"
 msgstr "exceso de operandos: '%s'"
 
-#: config/tc-sh.c:3012
+#: config/tc-sh.c:3026
 msgid ".uses pseudo-op seen when not relaxing"
 msgstr "se vio el pseudo-operador .uses cuando no se estaba relajando"
 
-#: config/tc-sh.c:3018
+#: config/tc-sh.c:3032
 msgid "bad .uses format"
 msgstr "formato de .uses erróneo"
 
-#: config/tc-sh.c:3104
+#: config/tc-sh.c:3130
 msgid "Invalid combination: --isa=SHcompact with --isa=SHmedia"
 msgstr "Combinación inválida: --isa=SHcompact con --isa=SHmedia"
 
-#: config/tc-sh.c:3110
+#: config/tc-sh.c:3136
 msgid "Invalid combination: --isa=SHmedia with --isa=SHcompact"
 msgstr "Combinación inválida: --isa=SHmedia con --isa=SHcompact"
 
-#: config/tc-sh.c:3112
+#: config/tc-sh.c:3138
 msgid "Invalid combination: --abi=64 with --isa=SHcompact"
 msgstr "Combinación inválida: --abi=64 con --isa=SHcompact"
 
-#: config/tc-sh.c:3152
+#: config/tc-sh.c:3179
 msgid "Invalid combination: --abi=32 with --abi=64"
 msgstr "Combinación inválida: --abi=32 con --abi=64"
 
-#: config/tc-sh.c:3158
+#: config/tc-sh.c:3185
 msgid "Invalid combination: --abi=64 with --abi=32"
 msgstr "Combinación inválida: --abi=64 con --abi=32"
 
-#: config/tc-sh.c:3160
+#: config/tc-sh.c:3187
 msgid "Invalid combination: --isa=SHcompact with --abi=64"
 msgstr "Combinación inválida: --isa=SHcompact con --abi=64"
 
-#: config/tc-sh.c:3194
+#: config/tc-sh.c:3221
 #, c-format
 msgid ""
 "SH options:\n"
-"-little\t\t\tgenerate little endian code\n"
-"-big\t\t\tgenerate big endian code\n"
-"-relax\t\t\talter jump instructions for long displacements\n"
-"-renesas\t\tdisable optimization with section symbol for\n"
+"--little\t\tgenerate little endian code\n"
+"--big\t\t\tgenerate big endian code\n"
+"--relax\t\t\talter jump instructions for long displacements\n"
+"--renesas\t\tdisable optimization with section symbol for\n"
 "\t\t\tcompatibility with Renesas assembler.\n"
-"-small\t\t\talign sections to 4 byte boundaries, not 16\n"
-"-dsp\t\t\tenable sh-dsp insns, and disable floating-point ISAs.\n"
-"-isa=[any\t\tuse most appropriate isa\n"
+"--small\t\t\talign sections to 4 byte boundaries, not 16\n"
+"--dsp\t\t\tenable sh-dsp insns, and disable floating-point ISAs.\n"
+"--allow-reg-prefix\tallow '$' as a register name prefix.\n"
+"--isa=[any\t\tuse most appropriate isa\n"
 "    | dsp               same as '-dsp'\n"
 "    | fp"
 msgstr ""
 "Opciones de SH:\n"
-"-little\t\t\tgenera código little endian\n"
-"-big\t\t\tgenera código big endian\n"
-"-relax\t\t\taltera las instrucciones de salto para\n"
-"      \t\t\t desubicaciones long\n"
-"-renesas\t\tdesactiva la optimización con símbolos de\n"
+"--little\t\t\tgenera código little endian\n"
+"--big\t\t\tgenera código big endian\n"
+"--relax\t\t\taltera las instrucciones de salto para\n"
+"\t\t\tdesubicaciones long\n"
+"--renesas\t\tdesactiva la optimización con símbolos de\n"
 "\t\t\tsección por compatibilidad con el ensamblador Renesas.\n"
-"-small\t\t\talinea las secciones a límites de 4 bytes, no 16\n"
-"-dsp\t\t\tactiva insns sh-dsp, y desactiva ISAs de coma flotante.\n"
-"-isa=[any\t\tusa la isa más apropiada\n"
+"--small\t\t\talinea las secciones a límites de 4 bytes, no 16\n"
+"--dsp\t\t\tactiva insns sh-dsp, y desactiva ISAs de coma flotante.\n"
+"--isa=[any\t\tusa la isa más apropiada\n"
 "    | dsp               igual que '-dsp'\n"
 "    | fp"
 
-#: config/tc-sh.c:3218
+#: config/tc-sh.c:3247
 #, c-format
 msgid ""
-"-isa=[shmedia\t\tset as the default instruction set for SH64\n"
+"--isa=[shmedia\t\tset as the default instruction set for SH64\n"
 "    | SHmedia\n"
 "    | shcompact\n"
 "    | SHcompact]\n"
 msgstr ""
-"-isa=[shmedia\t\testablece el conjunto de instrucciones por defecto\n"
-"             \t\tpara SH64\n"
+"--isa=[shmedia\t\testablece el conjunto de instrucciones por defecto\n"
+"              \t\tpara SH64\n"
 "    | SHmedia\n"
 "    | shcompact\n"
 "    | SHcompact]\n"
 
-#: config/tc-sh.c:3223
+#: config/tc-sh.c:3252
 #, c-format
 msgid ""
-"-abi=[32|64]\t\tset size of expanded SHmedia operands and object\n"
+"--abi=[32|64]\t\tset size of expanded SHmedia operands and object\n"
 "\t\t\tfile type\n"
-"-shcompact-const-crange\temit code-range descriptors for constants in\n"
+"--shcompact-const-crange  emit code-range descriptors for constants in\n"
 "\t\t\tSHcompact code sections\n"
-"-no-mix\t\t\tdisallow SHmedia code in the same section as\n"
+"--no-mix\t\tdisallow SHmedia code in the same section as\n"
 "\t\t\tconstants and SHcompact code\n"
-"-no-expand\t\tdo not expand MOVI, PT, PTA or PTB instructions\n"
-"-expand-pt32\t\twith -abi=64, expand PT, PTA and PTB instructions\n"
+"--no-expand\t\tdo not expand MOVI, PT, PTA or PTB instructions\n"
+"--expand-pt32\t\twith -abi=64, expand PT, PTA and PTB instructions\n"
 "\t\t\tto 32 bits only\n"
 msgstr ""
-"-abi=[32|64]\t\testablece el tamaño de los operandos SHmedia\n"
+"--abi=[32|64]\t\testablece el tamaño de los operandos SHmedia\n"
 "\t\t\texpandidos y el tipo del fichero objeto\n"
-"-shcompact-const-crange\temite descriptores de código-rango para\n"
+"--shcompact-const-crange\temite descriptores de código-rango para\n"
 "\t\t\tconstantes en las secciones de código SHcompact\n"
-"-no-mix\t\t\tdesactiva el código SHmedia en la misma sección que\n"
+"--no-mix\t\t\tdesactiva el código SHmedia en la misma sección que\n"
 "\t\t\tlas constantes y el código SHcompact\n"
-"-no-expand\t\tno expande las instrucciones MOVI, PT, PTA ó PTB\n"
-"-expand-pt32\t\tcon -abi=64, expande las instrucciones PT, PTA y PTB\n"
+"--no-expand\t\tno expande las instrucciones MOVI, PT, PTA ó PTB\n"
+"--expand-pt32\t\tcon -abi=64, expande las instrucciones PT, PTA y PTB\n"
 "\t\t\tsolamente a 32 bits\n"
 
-#: config/tc-sh.c:3311
+#: config/tc-sh.c:3336
 msgid ".uses does not refer to a local symbol in the same section"
 msgstr ".uses no se refiere a un símbolo local en la misma sección"
 
-#: config/tc-sh.c:3330
+#: config/tc-sh.c:3355
 msgid "can't find fixup pointed to by .uses"
 msgstr "no se puede encontrar la compostura señalada por .uses"
 
-#: config/tc-sh.c:3353
+#: config/tc-sh.c:3375
 msgid ".uses target does not refer to a local symbol in the same section"
 msgstr "el objetivo .uses no se refiere a un símbolo local en la misma sección"
 
-#: config/tc-sh.c:3453
+#: config/tc-sh.c:3452
 msgid "displacement overflows 12-bit field"
 msgstr "la desubicación desborda el campo de 12-bits"
 
-#: config/tc-sh.c:3456
+#: config/tc-sh.c:3455
 #, c-format
 msgid "displacement to defined symbol %s overflows 12-bit field"
 msgstr "la desubicación del símbolo definido %s desborda el campo de 12-bits"
 
-#: config/tc-sh.c:3460
+#: config/tc-sh.c:3459
 #, c-format
 msgid "displacement to undefined symbol %s overflows 12-bit field"
 msgstr "la desubicación del símbolo indefinido %s desborda el campo de 12-bits"
 
-#: config/tc-sh.c:3538
+#: config/tc-sh.c:3532
 msgid "displacement overflows 8-bit field"
 msgstr "la desubicación desborda el campo de 8-bits"
 
-#: config/tc-sh.c:3541
+#: config/tc-sh.c:3535
 #, c-format
 msgid "displacement to defined symbol %s overflows 8-bit field"
 msgstr "la desubicación del símbolo definido %s desborda el campo de 8-bits"
 
-#: config/tc-sh.c:3545
+#: config/tc-sh.c:3539
 #, c-format
 msgid "displacement to undefined symbol %s overflows 8-bit field "
 msgstr "la desubicación del símbolo indefinido %s desborda el campo de 8-bits"
 
-#: config/tc-sh.c:3562
+#: config/tc-sh.c:3556
 #, c-format
 msgid "overflow in branch to %s; converted into longer instruction sequence"
 msgstr "desbordamiento en la ramificación a %s; se convirtió en una secuencia de instrucciones más larga"
 
-#: config/tc-sh.c:3633 config/tc-sh.c:3680 config/tc-sparc.c:4237
-#: config/tc-sparc.c:4262
+#: config/tc-sh.c:3622 config/tc-sh.c:3669 config/tc-sparc.c:4234
+#: config/tc-sparc.c:4259
 msgid "misaligned data"
 msgstr "datos desalineados"
 
-#: config/tc-sh.c:4099
+#: config/tc-sh.c:4076
 msgid "misaligned offset"
 msgstr "desplazamiento desalineado"
 
-#: config/tc-sparc.c:291
+#: config/tc-sparc.c:288
 msgid "Invalid default architecture, broken assembler."
 msgstr "Arquitectura por defecto inválida, ensamblador descompuesto."
 
-#: config/tc-sparc.c:295 config/tc-sparc.c:498
+#: config/tc-sparc.c:292 config/tc-sparc.c:495
 msgid "Bad opcode table, broken assembler."
 msgstr "Tabla de códigos de operación errónea, ensamblador descompuesto."
 
-#: config/tc-sparc.c:490
+#: config/tc-sparc.c:487
 #, c-format
 msgid "invalid architecture -xarch=%s"
 msgstr "arquitectura -xarch=%s inválida"
 
-#: config/tc-sparc.c:492
+#: config/tc-sparc.c:489
 #, c-format
 msgid "invalid architecture -A%s"
 msgstr "arquitectura inválida -A%s"
 
-#: config/tc-sparc.c:559
+#: config/tc-sparc.c:556
 #, c-format
 msgid "No compiled in support for %d bit object file format"
 msgstr "No se compiló el soporte para el formato de fichero objeto de %d bit"
 
-#: config/tc-sparc.c:637
+#: config/tc-sparc.c:634
 #, c-format
 msgid "SPARC options:\n"
 msgstr "Opciones SPARC:\n"
 
-#: config/tc-sparc.c:666
+#: config/tc-sparc.c:663
 #, c-format
 msgid ""
 "\n"
@@ -9508,12 +9384,12 @@ msgstr ""
 "-relax\t\t\trelaja saltos y ramificaciones (por defecto)\n"
 "-no-relax\t\tevita cambiar cualquier salto y ramificación\n"
 
-#: config/tc-sparc.c:674
+#: config/tc-sparc.c:671
 #, c-format
 msgid "-k\t\t\tgenerate PIC\n"
 msgstr "-k\t\t\tgenera PIC\n"
 
-#: config/tc-sparc.c:678
+#: config/tc-sparc.c:675
 #, c-format
 msgid ""
 "-32\t\t\tcreate 32 bit object file\n"
@@ -9522,12 +9398,12 @@ msgstr ""
 "-32\t\t\tcrea ficheros objeto de 32 bits\n"
 "-64\t\t\tcrea ficheros objeto de 64 bits\n"
 
-#: config/tc-sparc.c:681
+#: config/tc-sparc.c:678
 #, c-format
 msgid "\t\t\t[default is %d]\n"
 msgstr "\t\t\t[por defecto es %d]\n"
 
-#: config/tc-sparc.c:683
+#: config/tc-sparc.c:680
 #, c-format
 msgid ""
 "-TSO\t\t\tuse Total Store Ordering\n"
@@ -9538,12 +9414,12 @@ msgstr ""
 "-PSO\t\t\tusa el Ordenamiento de Almacenamiento Parcial\n"
 "-RMO\t\t\tusa el Ordenamiento de Memoria Relajado\n"
 
-#: config/tc-sparc.c:687
+#: config/tc-sparc.c:684
 #, c-format
 msgid "\t\t\t[default is %s]\n"
 msgstr "\t\t\t[por defecto es %s]\n"
 
-#: config/tc-sparc.c:689
+#: config/tc-sparc.c:686
 #, c-format
 msgid ""
 "-KPIC\t\t\tgenerate PIC\n"
@@ -9566,7 +9442,7 @@ msgstr ""
 "-Qy, -Qn\t\tse ignora\n"
 "-s\t\t\tignored\n"
 
-#: config/tc-sparc.c:701
+#: config/tc-sparc.c:698
 #, c-format
 msgid ""
 "-EL\t\t\tgenerate code for a little endian machine\n"
@@ -9579,549 +9455,317 @@ msgstr ""
 "--little-endian-data\tgenera código para una máquina que tenga instrucciones\n"
 "                        big endian y datos little endian.\n"
 
-#: config/tc-sparc.c:822
+#: config/tc-sparc.c:819
 #, c-format
 msgid "Internal error: losing opcode: `%s' \"%s\"\n"
 msgstr "Error interno: se pierde el código de operación: `%s' \"%s\"\n"
 
-#: config/tc-sparc.c:841
+#: config/tc-sparc.c:838
 #, c-format
 msgid "Internal error: can't find opcode `%s' for `%s'\n"
 msgstr "Error interno: no se puede encontrar el código de operación `%s' para `%s'\n"
 
-#: config/tc-sparc.c:987
+#: config/tc-sparc.c:984
 msgid "Support for 64-bit arithmetic not compiled in."
 msgstr "No se compiló el soporte para aritmética de 64-bit."
 
-#: config/tc-sparc.c:1034
+#: config/tc-sparc.c:1031
 msgid "set: number not in 0..4294967295 range"
 msgstr "set: el número no está en el rango 0..4294967295"
 
-#: config/tc-sparc.c:1041
+#: config/tc-sparc.c:1038
 msgid "set: number not in -2147483648..4294967295 range"
 msgstr "set: el número no está en el rango -2147483648..4294967295"
 
-#: config/tc-sparc.c:1101
+#: config/tc-sparc.c:1098
 msgid "setsw: number not in -2147483648..4294967295 range"
 msgstr "setsw: el número no está en el rango -2147483648..4294967295"
 
-#: config/tc-sparc.c:1150
+#: config/tc-sparc.c:1147
 msgid "setx: temporary register same as destination register"
 msgstr "setx: el registro temporal es el mismo que el registro destino"
 
-#: config/tc-sparc.c:1221
+#: config/tc-sparc.c:1218
 msgid "setx: illegal temporary register g0"
 msgstr "setx: registro temporal ilegal g0"
 
-#: config/tc-sparc.c:1318
+#: config/tc-sparc.c:1316
 msgid "FP branch in delay slot"
 msgstr "ramificación FP en la ranura de retraso"
 
-#: config/tc-sparc.c:1334
+#: config/tc-sparc.c:1331
 msgid "FP branch preceded by FP instruction; NOP inserted"
 msgstr "ramificación FP precedida por una instrucción FP; se insertó NOP"
 
-#: config/tc-sparc.c:1374
+#: config/tc-sparc.c:1371
 msgid "failed special case insn sanity check"
 msgstr "falló la prueba de sanidad de la instrucción especial case"
 
-#: config/tc-sparc.c:1462
+#: config/tc-sparc.c:1461
 msgid ": invalid membar mask name"
 msgstr ": nombre de máscara de barra de memoria inválido"
 
-#: config/tc-sparc.c:1478
+#: config/tc-sparc.c:1477
 msgid ": invalid membar mask expression"
 msgstr ": expresión de máscara de barra de memoria inválida"
 
-#: config/tc-sparc.c:1483
+#: config/tc-sparc.c:1482
 msgid ": invalid membar mask number"
 msgstr ": número de máscara de barra de memoria inválido"
 
-#: config/tc-sparc.c:1498
+#: config/tc-sparc.c:1497
 msgid ": invalid siam mode expression"
 msgstr ": expresión de modo siam inválida"
 
-#: config/tc-sparc.c:1503
+#: config/tc-sparc.c:1502
 msgid ": invalid siam mode number"
 msgstr ": número de modi siam inválido"
 
-#: config/tc-sparc.c:1519
+#: config/tc-sparc.c:1518
 msgid ": invalid prefetch function name"
 msgstr ": nombre de función de precargado inválido"
 
-#: config/tc-sparc.c:1527
+#: config/tc-sparc.c:1526
 msgid ": invalid prefetch function expression"
 msgstr ": expresión de función de precargado inválida"
 
-#: config/tc-sparc.c:1532
+#: config/tc-sparc.c:1531
 msgid ": invalid prefetch function number"
 msgstr ": número de función de precargado inválido"
 
-#: config/tc-sparc.c:1560 config/tc-sparc.c:1572
+#: config/tc-sparc.c:1559 config/tc-sparc.c:1571
 msgid ": unrecognizable privileged register"
 msgstr ": registro privilegiado no reconocible"
 
-#: config/tc-sparc.c:1596 config/tc-sparc.c:1621
+#: config/tc-sparc.c:1595 config/tc-sparc.c:1620
 msgid ": unrecognizable v9a or v9b ancillary state register"
 msgstr ": registro de estado ancilar v9a o v9b no reconocible"
 
-#: config/tc-sparc.c:1601
+#: config/tc-sparc.c:1600
 msgid ": rd on write only ancillary state register"
 msgstr ": rd en registro de estado ancilar de sólo escritura"
 
 #. %sys_tick and %sys_tick_cmpr are v9bnotv9a
-#: config/tc-sparc.c:1609
+#: config/tc-sparc.c:1608
 msgid ": unrecognizable v9a ancillary state register"
 msgstr ": registro de estado ancilar v9a no reconocible"
 
-#: config/tc-sparc.c:1645
+#: config/tc-sparc.c:1644
 msgid ": asr number must be between 16 and 31"
 msgstr ": el número asr debe estar entre 16 y 31"
 
-#: config/tc-sparc.c:1653
+#: config/tc-sparc.c:1652
 msgid ": asr number must be between 0 and 31"
 msgstr ": el número asr debe estar entre 0 y 31"
 
-#: config/tc-sparc.c:1663
+#: config/tc-sparc.c:1662
 #, c-format
 msgid ": expecting %asrN"
 msgstr ": se esperaba %asrN"
 
-#: config/tc-sparc.c:1845 config/tc-sparc.c:1883 config/tc-sparc.c:2290
-#: config/tc-sparc.c:2326
+#: config/tc-sparc.c:1844 config/tc-sparc.c:1882 config/tc-sparc.c:2289
+#: config/tc-sparc.c:2325
 #, c-format
 msgid "Illegal operands: %%%s requires arguments in ()"
 msgstr "Operandos ilegales: %%%s requiere de argumentos en ()"
 
-#: config/tc-sparc.c:1851
+#: config/tc-sparc.c:1850
 #, c-format
 msgid "Illegal operands: %%%s cannot be used together with other relocs in the insn ()"
 msgstr "Operandos ilegales: %%%s no se puede usar junto con otras reubicaciones en la insn ()"
 
-#: config/tc-sparc.c:1862
+#: config/tc-sparc.c:1861
 #, c-format
 msgid "Illegal operands: %%%s can be only used with call __tls_get_addr"
 msgstr "Operando ilegales: %%%s sólo se puede usar con la llamada __tls_get_addr"
 
-#: config/tc-sparc.c:2069
+#: config/tc-sparc.c:2068
 msgid "detected global register use not covered by .register pseudo-op"
 msgstr "se detectó el uso de un registro global que no está cubierto por el pseudo-operador .register"
 
-#: config/tc-sparc.c:2140
+#: config/tc-sparc.c:2139
 msgid ": There are only 64 f registers; [0-63]"
 msgstr ": Solamente hay 64 registros f; [0-63]"
 
-#: config/tc-sparc.c:2142 config/tc-sparc.c:2160
+#: config/tc-sparc.c:2141 config/tc-sparc.c:2159
 msgid ": There are only 32 f registers; [0-31]"
 msgstr ": Solamente hay 32 registros f; [0-31]"
 
-#: config/tc-sparc.c:2152
+#: config/tc-sparc.c:2151
 msgid ": There are only 32 single precision f registers; [0-31]"
 msgstr ": Solamente hay 32 registros f de precisión sencilla; [0-31]"
 
-#: config/tc-sparc.c:2338
+#: config/tc-sparc.c:2337
 #, c-format
 msgid "Illegal operands: Can't do arithmetics other than + and - involving %%%s()"
 msgstr "Operandos ilegales: No se puede hacer aritmética aparte de + y - que involucre %%%s()"
 
-#: config/tc-sparc.c:2448
+#: config/tc-sparc.c:2447
 #, c-format
 msgid "Illegal operands: Can't add non-constant expression to %%%s()"
 msgstr "Operandos ilegales: No se puede agregar una expresión que no es constante a %%%s()"
 
-#: config/tc-sparc.c:2458
+#: config/tc-sparc.c:2457
 #, c-format
 msgid "Illegal operands: Can't do arithmetics involving %%%s() of a relocatable symbol"
 msgstr "Operandos ilegales: No se puede hacer aritmética que involucre a %%%s() de un símbolo reubicable"
 
-#: config/tc-sparc.c:2476
+#: config/tc-sparc.c:2475
 msgid ": PC-relative operand can't be a constant"
 msgstr ": el operando relativo al PC no puede ser una constante"
 
-#: config/tc-sparc.c:2483
+#: config/tc-sparc.c:2482
 msgid ": TLS operand can't be a constant"
 msgstr ": el operando TLS no puede ser una constante"
 
-#: config/tc-sparc.c:2516
+#: config/tc-sparc.c:2515
 msgid ": invalid ASI name"
 msgstr ": nombre ASI inválido"
 
-#: config/tc-sparc.c:2524
+#: config/tc-sparc.c:2523
 msgid ": invalid ASI expression"
 msgstr ": expresión ASI inválida"
 
-#: config/tc-sparc.c:2529
+#: config/tc-sparc.c:2528
 msgid ": invalid ASI number"
 msgstr ": número ASI inválido"
 
-#: config/tc-sparc.c:2626
+#: config/tc-sparc.c:2625
 msgid "OPF immediate operand out of range (0-0x1ff)"
 msgstr "operador inmediato OPF fuera de rango (0-0x1ff)"
 
-#: config/tc-sparc.c:2631
+#: config/tc-sparc.c:2630
 msgid "non-immediate OPF operand, ignored"
 msgstr "operando OPF que no es inmediato, se ignora"
 
-#: config/tc-sparc.c:2650
+#: config/tc-sparc.c:2649
 msgid ": invalid cpreg name"
 msgstr ": nombre cpreg inválido"
 
-#: config/tc-sparc.c:2679
+#: config/tc-sparc.c:2678
 #, c-format
 msgid "Illegal operands%s"
 msgstr "Operando%s ilegal(es)"
 
-#: config/tc-sparc.c:2713
+#: config/tc-sparc.c:2712
 #, c-format
 msgid "architecture bumped from \"%s\" to \"%s\" on \"%s\""
 msgstr "la arquitectura saltó de \"%s\" a \"%s\" en \"%s\""
 
-#: config/tc-sparc.c:2749
+#: config/tc-sparc.c:2748
 #, c-format
 msgid "Architecture mismatch on \"%s\"."
 msgstr "No hay coincidencia de arquitectura en \"%s\"."
 
-#: config/tc-sparc.c:2750
+#: config/tc-sparc.c:2749
 #, c-format
 msgid " (Requires %s; requested architecture is %s.)"
 msgstr " (Se requiere %s; la arquitectura solicitada es %s.)"
 
-#: config/tc-sparc.c:3370
+#: config/tc-sparc.c:3369
 #, c-format
 msgid "bad or unhandled relocation type: 0x%02x"
 msgstr "tipo de reubicación errónea o sin manejar: 0x%02x"
 
-#: config/tc-sparc.c:3680
+#: config/tc-sparc.c:3679
 msgid "Expected comma after name"
 msgstr "Se esperaba una coma después del nombre"
 
-#: config/tc-sparc.c:3689
+#: config/tc-sparc.c:3688
 #, c-format
 msgid "BSS length (%d.) <0! Ignored."
 msgstr "¡Longitud BSS (%d.) <0! Se ignora."
 
-#: config/tc-sparc.c:3701
+#: config/tc-sparc.c:3700
 msgid "bad .reserve segment -- expected BSS segment"
 msgstr "segmento .reserve erróneo -- se esperaba el segmento BSS"
 
-#: config/tc-sparc.c:3718
+#: config/tc-sparc.c:3717
 msgid "missing alignment"
 msgstr "falta la alineación"
 
-#: config/tc-sparc.c:3729
+#: config/tc-sparc.c:3728
 #, c-format
 msgid "alignment too large; assuming %d"
 msgstr "alineación demasiado grande; se asume %d"
 
-#: config/tc-sparc.c:3735 config/tc-sparc.c:3886
+#: config/tc-sparc.c:3734 config/tc-sparc.c:3885
 msgid "negative alignment"
 msgstr "alineación negativa"
 
-#: config/tc-sparc.c:3745 config/tc-sparc.c:3909 read.c:1284 read.c:2113
+#: config/tc-sparc.c:3744 config/tc-sparc.c:3908 read.c:1313 read.c:2143
 msgid "alignment not a power of 2"
 msgstr "la alineación no es una potencia de 2"
 
-#: config/tc-sparc.c:3823 config/tc-v850.c:233
+#: config/tc-sparc.c:3822 config/tc-v850.c:223
 msgid "Expected comma after symbol-name"
 msgstr "Se esperaba una coma después del nombre del símbolo"
 
-#: config/tc-sparc.c:3833
+#: config/tc-sparc.c:3832
 #, c-format
 msgid ".COMMon length (%lu) out of range ignored"
 msgstr "se ignora la longitud .COMMún (%lu) fuera de rango"
 
-#: config/tc-sparc.c:3866
+#: config/tc-sparc.c:3865
 msgid "Expected comma after common length"
 msgstr "Se esperaba una coma después de la longitud común"
 
-#: config/tc-sparc.c:3880
+#: config/tc-sparc.c:3879
 #, c-format
 msgid "alignment too large; assuming %ld"
 msgstr "alineación demasiado grande; se asume %ld"
 
-#: config/tc-sparc.c:4107 config/tc-sparc.c:4117
+#: config/tc-sparc.c:4025
+msgid "Unknown segment type"
+msgstr "Tipo de segmento desconocido"
+
+#: config/tc-sparc.c:4104 config/tc-sparc.c:4114
 #, c-format
 msgid "register syntax is .register %%g[2367],{#scratch|symbolname|#ignore}"
 msgstr "la sintaxis de registro es .register %%g[2367],{#scratch|nombresimbolo|#ignore}"
 
-#: config/tc-sparc.c:4135
+#: config/tc-sparc.c:4132
 msgid "redefinition of global register"
 msgstr "redefinición del registro global"
 
-#: config/tc-sparc.c:4146
+#: config/tc-sparc.c:4143
 #, c-format
 msgid "Register symbol %s already defined."
 msgstr "El símbolo de registro %s ya estaba definido."
 
-#: config/tc-sparc.c:4355
+#: config/tc-sparc.c:4352
 #, c-format
 msgid "Illegal operands: %%r_plt in %d-byte data field"
 msgstr "Operandos ilegales: %%r_plt en el campo de datos de %d-bytes"
 
-#: config/tc-sparc.c:4365
+#: config/tc-sparc.c:4362
 #, c-format
 msgid "Illegal operands: %%r_tls_dtpoff in %d-byte data field"
 msgstr "Operandos ilegales: %%r_tls_dtpoff en el campo de datos de %d-bytes"
 
-#: config/tc-sparc.c:4402
+#: config/tc-sparc.c:4399
 #, c-format
 msgid "Illegal operands: Only %%r_%s%d allowed in %d-byte data fields"
 msgstr "Operandos ilegales: Sólo se permite %%r_%s%d en campos de datos de %d-bytes"
 
-#: config/tc-sparc.c:4410 config/tc-sparc.c:4441 config/tc-sparc.c:4450
+#: config/tc-sparc.c:4407 config/tc-sparc.c:4438 config/tc-sparc.c:4447
 #, c-format
 msgid "Illegal operands: %%r_%s%d requires arguments in ()"
 msgstr "Operandos ilegales: %%r_%s%d requiere argumentos en ()"
 
-#: config/tc-sparc.c:4459
+#: config/tc-sparc.c:4456
 #, c-format
 msgid "Illegal operands: garbage after %%r_%s%d()"
 msgstr "Operandos ilegales: hay basura después de %%r_%s%d()"
 
-#: config/tc-sparc.h:48
+#: config/tc-sparc.h:46
 msgid "sparc convert_frag\n"
 msgstr "convert_frag de sparc\n"
 
-#: config/tc-sparc.h:50
+#: config/tc-sparc.h:48
 msgid "estimate_size_before_relax called"
 msgstr "se llamó a estimate_size_before_relax"
 
-#: config/tc-tahoe.c:403
-msgid "The -a option doesn't exist. (Despite what the man page says!"
-msgstr "La opción -a no existe. (¡A pesar de lo que diga la página del manual!)"
-
-#: config/tc-tahoe.c:407 config/tc-vax.c:3295
-#, c-format
-msgid "Displacement length %s ignored!"
-msgstr "¡Se ignora la longitud de desubicación %s!"
-
-#: config/tc-tahoe.c:411 config/tc-vax.c:3287
-msgid "SYMBOL TABLE not implemented"
-msgstr "SYMBOL TABLE no está implementado"
-
-#: config/tc-tahoe.c:415 config/tc-vax.c:3291
-msgid "TOKEN TRACE not implemented"
-msgstr "TOKEN TRACE no está implementado"
-
-#: config/tc-tahoe.c:419 config/tc-vax.c:3299
-#, c-format
-msgid "I don't need or use temp. file \"%s\"."
-msgstr "No se necesita o se utiliza el fichero temporal \"%s\"."
-
-#: config/tc-tahoe.c:423 config/tc-vax.c:3303
-msgid "I don't use an interpass file! -V ignored"
-msgstr "¡No se usa un fichero entre pasos! Se ignora -V"
-
-#: config/tc-tahoe.c:437
-#, c-format
-msgid ""
-"Tahoe options:\n"
-"-a\t\t\tignored\n"
-"-d LENGTH\t\tignored\n"
-"-J\t\t\tignored\n"
-"-S\t\t\tignored\n"
-"-t FILE\t\t\tignored\n"
-"-T\t\t\tignored\n"
-"-V\t\t\tignored\n"
-msgstr ""
-"Opciones de Tahoe:\n"
-"-a\t\t\tse ignora\n"
-"-d LENGTH\t\tse ignora\n"
-"-J\t\t\tse ignora\n"
-"-S\t\t\tse ignora\n"
-"-t FILE\t\t\tse ignora\n"
-"-T\t\t\tse ignora\n"
-"-V\t\t\tse ignora\n"
-
-#: config/tc-tahoe.c:1066
-msgid "Casting a branch displacement is bad form, and is ignored."
-msgstr "La conversión de una desubicación de ramificación es una forma errónea, y se ignora."
-
-#: config/tc-tahoe.c:1122
-msgid "Couldn't parse the [index] in this operand."
-msgstr "No se puede decodificar el [index] en este operando."
-
-#: config/tc-tahoe.c:1128
-msgid "Couldn't find the opening '[' for the index of this operand."
-msgstr "No se puede encontrar el '[' que abre para el índice de este operando."
-
-#: config/tc-tahoe.c:1168
-msgid "Couldn't find the opening '(' for the deref of this operand."
-msgstr "No se puede encontrar el '(' que abre para la dereferencia de este operando."
-
-#: config/tc-tahoe.c:1178
-msgid "Operand can't be both pre-inc and post-dec."
-msgstr "El operando no puede ser pre-incremento y post-decremento al mismo tiempo."
-
-#: config/tc-tahoe.c:1208
-msgid "I parsed 2 registers in this operand."
-msgstr "Se decodificaron 2 registros en este operando."
-
-#: config/tc-tahoe.c:1258
-msgid "Can't relocate expression error."
-msgstr "No se puede reubicar la expresión de error."
-
-#. This is an error. Tahoe doesn't allow any expressions
-#. bigger that a 32 bit long word. Any bigger has to be referenced
-#. by address.
-#: config/tc-tahoe.c:1265
-msgid "Expression is too large for a 32 bits."
-msgstr "La expresión es demasiado grande para 32 bits."
-
-#: config/tc-tahoe.c:1270
-msgid "Junk at end of expression."
-msgstr "Basura al final de la expresión."
-
-#: config/tc-tahoe.c:1309
-msgid "Syntax error in direct register mode."
-msgstr "Error sintáctico en el modo directo de registro."
-
-#: config/tc-tahoe.c:1311
-msgid "You can't index a register in direct register mode."
-msgstr "No se puede indizar un registro en el modo directo de registro."
-
-#: config/tc-tahoe.c:1314
-msgid "SP can't be the source operand with direct register addressing."
-msgstr "SP no puede ser el operando fuente con direccionamiento directo de registro."
-
-#: config/tc-tahoe.c:1316
-msgid "Can't take the address of a register."
-msgstr "No se puede tomar la dirección de un registro."
-
-#: config/tc-tahoe.c:1318
-msgid "Direct Register can't be used in a branch."
-msgstr "Un Registro Directo no se puede utilizar en una ramificación."
-
-#: config/tc-tahoe.c:1320
-msgid "For quad access, the register must be even and < 14."
-msgstr "Para acceso cuadrático, el registro debe ser par y < 14."
-
-#: config/tc-tahoe.c:1322
-msgid "You can't cast a direct register."
-msgstr "No se puede convertir un registro directo."
-
-# `tromp' se utiliza aquí como verbo transitivo. cfuga
-# Referencia: http://www.dictionary.com/search?q=tromp
-#: config/tc-tahoe.c:1328
-msgid "Using reg 14 for quadwords can tromp the FP register."
-msgstr "El uso del registro 14 para quadwords puede noquear el registro FP."
-
-#: config/tc-tahoe.c:1340
-msgid "Syntax error in auto-dec mode."
-msgstr "Error sintáctico en el modo auto-dec."
-
-#: config/tc-tahoe.c:1342
-msgid "You can't have an index auto dec mode."
-msgstr "No se puede tener un índice en modo auto dec"
-
-#: config/tc-tahoe.c:1344
-msgid "Auto dec mode cant be used for reading."
-msgstr "El modo auto dec no se puede usar para lectura."
-
-#: config/tc-tahoe.c:1346
-msgid "Auto dec only works of the SP register."
-msgstr "El modo auto dec solamente funciona en los registros SP."
-
-#: config/tc-tahoe.c:1348
-msgid "Auto dec can't be used in a branch."
-msgstr "No se puede utilizar auto dec en una ramificación."
-
-#: config/tc-tahoe.c:1350
-msgid "Auto dec won't work with quadwords."
-msgstr "Auto dec no funciona con quadwords."
-
-#: config/tc-tahoe.c:1357
-msgid "Syntax error in one of the auto-inc modes."
-msgstr "Error sintáctico en uno de los modos auto-inc."
-
-#: config/tc-tahoe.c:1363
-msgid "Auto inc deferred only works of the SP register."
-msgstr "El modo auto inc diferido solamente funciona en los registros SP."
-
-#: config/tc-tahoe.c:1365
-msgid "You can't have an index auto inc deferred mode."
-msgstr "No se puede tener un índice en modo auto inc diferido"
-
-#: config/tc-tahoe.c:1367 config/tc-tahoe.c:1378
-msgid "Auto inc can't be used in a branch."
-msgstr "No se puede utilizar auto inc en una ramificación."
-
-#: config/tc-tahoe.c:1374
-msgid "You can't write to an auto inc register."
-msgstr "No se puede escribir en un registro auto inc."
-
-#: config/tc-tahoe.c:1376
-msgid "Auto inc only works of the SP register."
-msgstr "El modo auto inc funciona solamente en los registros SP."
-
-#: config/tc-tahoe.c:1380
-msgid "Auto inc won't work with quadwords."
-msgstr "Auto inc no funciona con quadwords."
-
-#: config/tc-tahoe.c:1382
-msgid "You can't have an index in auto inc mode."
-msgstr "No se puede tener un índice en el modo auto inc."
-
-#: config/tc-tahoe.c:1390
-msgid "You can't index the sp register."
-msgstr "No se puede indizar el registro sp."
-
-#: config/tc-tahoe.c:1396
-msgid "Syntax error in register displaced mode."
-msgstr "Error sintáctico en el registro en modo desubicado."
-
-#: config/tc-tahoe.c:1415
-msgid "An offest is needed for this operand."
-msgstr "Se necesita un desplazamiento para este operando."
-
-#: config/tc-tahoe.c:1427
-msgid "You can't index a register in immediate mode."
-msgstr "No se puede indizar un registro en modo inmediato."
-
-#: config/tc-tahoe.c:1429
-msgid "Immediate access can't be used as an address."
-msgstr "No se puede utilizar el acceso inmediato como una dirección"
-
-#: config/tc-tahoe.c:1540
-#, c-format
-msgid "Compiler bug: ODD number of bytes in arg structure %s."
-msgstr "Bicho del compilador: número de bytes IMPAR en la estructura de argumentos %s."
-
-#: config/tc-tahoe.c:1567 config/tc-vax.c:1968
-msgid "Not enough operands"
-msgstr "No hay suficientes operandos"
-
-#: config/tc-tahoe.c:1577 config/tc-vax.c:1975
-msgid "Too many operands"
-msgstr "Demasiados operandos"
-
-#: config/tc-tahoe.c:1628 config/tc-vax.c:408
-#, c-format
-msgid "Ignoring statement due to \"%s\""
-msgstr "Se ignora la declaración debido a \"%s\""
-
-#: config/tc-tahoe.c:1723
-#, c-format
-msgid "Compliler bug: Got a case (%d) I wasn't expecting."
-msgstr "Bicho del compilador: Se obtuvo un case (%d) que no se esperaba."
-
-#: config/tc-tahoe.c:1817
-msgid "Real branch displacements must be expressions."
-msgstr "Las desubicaciones de ramificaciones reales deben ser expresiones."
-
-#: config/tc-tahoe.c:1820
-#, c-format
-msgid "Complier error: I got an unknown synthetic branch :%c"
-msgstr "Error del compilador: Se obtuvo una ramificación sintética desconocida :%c"
-
-# En México se utilizaría `guácala' por `barf', como una expresión
-# que simboliza vómito, pero no es comprensible para todos los
-# hispanoparlantes. :-)    cfuga
-#: config/tc-tahoe.c:1961
-#, c-format
-msgid "Barf, bad mode %x\n"
-msgstr "Ugh, modo erróneo %x\n"
-
 #. Only word (et al.), align, or conditionals are allowed within
 #. .struct/.union.
 #: config/tc-tic54x.c:222
@@ -10323,495 +9967,422 @@ msgstr "Versi
 msgid "Can't redirect stderr to the file '%s'"
 msgstr "No se puede redirigir la salida de error estándard al fichero '%s'"
 
-#: config/tc-tic54x.c:2828
+#: config/tc-tic54x.c:2809
 #, c-format
 msgid "Undefined substitution symbol '%s'"
 msgstr "Símbolo de sustitución '%s' indefinido"
 
-#: config/tc-tic54x.c:3485
+#: config/tc-tic54x.c:3466
 msgid "Badly formed address expression"
 msgstr "Expresión de dirección mal formada"
 
-#: config/tc-tic54x.c:3749
+#: config/tc-tic54x.c:3730
 #, c-format
 msgid "Invalid dmad syntax '%s'"
 msgstr "Sintaxis de dmad '%s' inválida"
 
-#: config/tc-tic54x.c:3815
+#: config/tc-tic54x.c:3796
 #, c-format
 msgid "Use the .mmregs directive to use memory-mapped register names such as '%s'"
 msgstr "Usa la directiva .mmregs para utilizar nombres de registro mapeados en memoria tales como '%s'"
 
-#: config/tc-tic54x.c:3868
+#: config/tc-tic54x.c:3849
 msgid "Address mode *+ARx is write-only. Results of reading are undefined."
 msgstr "El modo de dirección *+ARx es de sólo escritura. El resultado de la lectura está indefinido."
 
-#: config/tc-tic54x.c:3888
+#: config/tc-tic54x.c:3869
 #, c-format
 msgid "Unrecognized indirect address format \"%s\""
 msgstr "Formato de dirección indirecta \"%s\" no reconocido"
 
-#: config/tc-tic54x.c:3927
+#: config/tc-tic54x.c:3908
 #, c-format
 msgid "Operand '%s' out of range (%d <= x <= %d)"
 msgstr "El operando '%s' está fuera de rango (%d <= x <= %d)"
 
-#: config/tc-tic54x.c:3947
+#: config/tc-tic54x.c:3928
 msgid "Error in relocation handling"
 msgstr "Error en el manejo de la reubicación"
 
-#: config/tc-tic54x.c:3968 config/tc-tic54x.c:4032 config/tc-tic54x.c:4064
+#: config/tc-tic54x.c:3949 config/tc-tic54x.c:4013 config/tc-tic54x.c:4045
 #, c-format
 msgid "Unrecognized condition code \"%s\""
 msgstr "Código de condición \"%s\" no reconocido"
 
-#: config/tc-tic54x.c:3985
+#: config/tc-tic54x.c:3966
 #, c-format
 msgid "Condition \"%s\" does not match preceding group"
 msgstr "La condición \"%s\" no coincide con el grupo precedente"
 
-#: config/tc-tic54x.c:3993
+#: config/tc-tic54x.c:3974
 #, c-format
 msgid "Condition \"%s\" uses a different accumulator from a preceding condition"
 msgstr "La condición \"%s\" utiliza un acumulador diferente de una condición precedente"
 
-#: config/tc-tic54x.c:4000
+#: config/tc-tic54x.c:3981
 msgid "Only one comparison conditional allowed"
 msgstr "Sólo se permite una comparación condicional"
 
-#: config/tc-tic54x.c:4005
+#: config/tc-tic54x.c:3986
 msgid "Only one overflow conditional allowed"
 msgstr "Sólo se permite un desbordamiento condicional"
 
-#: config/tc-tic54x.c:4013
+#: config/tc-tic54x.c:3994
 #, c-format
 msgid "Duplicate %s conditional"
 msgstr "Condicional %s duplicado"
 
-#: config/tc-tic54x.c:4048
+#: config/tc-tic54x.c:4029
 msgid "Invalid auxiliary register (use AR0-AR7)"
 msgstr "Registro auxiliar inválido (utilice AR0-AR7)"
 
-#: config/tc-tic54x.c:4084
+#: config/tc-tic54x.c:4065
 msgid "lk addressing modes are invalid for memory-mapped register addressing"
 msgstr "Los modos de direccionamiento lk son inválidos para el direccionamiento de registros mapeados en memoria"
 
-#: config/tc-tic54x.c:4092
+#: config/tc-tic54x.c:4073
 msgid "Address mode *+ARx is not allowed in memory-mapped register addressing.  Resulting behavior is undefined."
 msgstr "El modo de dirección *+ARx no se permite en el direccionamiento de registros mapeados en memoria.  El comportamiento resultante está indefinido."
 
-#: config/tc-tic54x.c:4118
+#: config/tc-tic54x.c:4099
 msgid "Destination accumulator for each part of this parallel instruction must be different"
 msgstr "El acumulador de destino para cada parte de esta instrucción paralela debe ser diferente"
 
-#: config/tc-tic54x.c:4167
+#: config/tc-tic54x.c:4148
 #, c-format
 msgid "Memory mapped register \"%s\" out of range"
 msgstr "El registro mapeado en memoria \"%s\" está fuera de rango"
 
-#: config/tc-tic54x.c:4206
+#: config/tc-tic54x.c:4187
 msgid "Invalid operand (use 1, 2, or 3)"
 msgstr "Operando inválido (utilice 1, 2, ó 3)"
 
-#: config/tc-tic54x.c:4231
+#: config/tc-tic54x.c:4212
 msgid "A status register or status bit name is required"
 msgstr "Se requiere un registro de estado o un nombre de bit de estado"
 
-#: config/tc-tic54x.c:4241
+#: config/tc-tic54x.c:4222
 #, c-format
 msgid "Unrecognized status bit \"%s\""
 msgstr "Bit de estado \"%s\" no reconocido"
 
-#: config/tc-tic54x.c:4264
+#: config/tc-tic54x.c:4245
 #, c-format
 msgid "Invalid status register \"%s\""
 msgstr "Registro de estado \"%s\" inválido"
 
-#: config/tc-tic54x.c:4276
+#: config/tc-tic54x.c:4257
 #, c-format
 msgid "Operand \"%s\" out of range (use 1 or 2)"
 msgstr "El operando \"%s\" está fuera de rango (utilice 1 ó 2)"
 
-#: config/tc-tic54x.c:4484
+#: config/tc-tic54x.c:4465
 #, c-format
 msgid "Unrecognized instruction \"%s\""
 msgstr "Instrucción \"%s\" no reconocida"
 
-#: config/tc-tic54x.c:4513
+#: config/tc-tic54x.c:4494
 #, c-format
 msgid "Unrecognized operand list '%s' for instruction '%s'"
 msgstr "Lista de operando '%s' no reconocida para la instrucción '%s'"
 
-#: config/tc-tic54x.c:4545
+#: config/tc-tic54x.c:4526
 #, c-format
 msgid "Unrecognized parallel instruction \"%s\""
 msgstr "Instrucción paralela \"%s\" no reconocida"
 
-#: config/tc-tic54x.c:4596
+#: config/tc-tic54x.c:4577
 #, c-format
 msgid "Invalid operand (s) for parallel instruction \"%s\""
 msgstr "Operando(s) inválido(s) para la instrucción paralela \"%s\""
 
-#: config/tc-tic54x.c:4599
+#: config/tc-tic54x.c:4580
 #, c-format
 msgid "Unrecognized parallel instruction combination \"%s || %s\""
 msgstr "Combinación de instrucciones paralelas \"%s || %s\" no reconocida"
 
-#: config/tc-tic54x.c:4836
+#: config/tc-tic54x.c:4817
 #, c-format
 msgid "%s symbol recursion stopped at second appearance of '%s'"
 msgstr "La recursión del símbolo %s se detuvo en la segunda aparición de '%s'"
 
-#: config/tc-tic54x.c:4876
+#: config/tc-tic54x.c:4857
 msgid "Unrecognized substitution symbol function"
 msgstr "Función de sustitución de símbolo no reconocida"
 
-#: config/tc-tic54x.c:4881
+#: config/tc-tic54x.c:4862
 msgid "Missing '(' after substitution symbol function"
 msgstr "Falta un '(' después de la función de sustitución de símbolo"
 
-#: config/tc-tic54x.c:4895
+#: config/tc-tic54x.c:4876
 msgid "Expecting second argument"
 msgstr "Se esperaba un segundo argumento"
 
-#: config/tc-tic54x.c:4908 config/tc-tic54x.c:4958
+#: config/tc-tic54x.c:4889 config/tc-tic54x.c:4939
 msgid "Extra junk in function call, expecting ')'"
 msgstr "Basura extra en la llamada a función, se esperaba ')'"
 
-#: config/tc-tic54x.c:4934
+#: config/tc-tic54x.c:4915
 msgid "Function expects two arguments"
 msgstr "La función espera dos argumentos"
 
-#: config/tc-tic54x.c:4947
+#: config/tc-tic54x.c:4928
 msgid "Expecting character constant argument"
 msgstr "Se espera una constante de carácter como argumento"
 
-#: config/tc-tic54x.c:4953
+#: config/tc-tic54x.c:4934
 msgid "Both arguments must be substitution symbols"
 msgstr "Ambos argumentos deben ser símbolos de sustitución"
 
-#: config/tc-tic54x.c:5006
+#: config/tc-tic54x.c:4987
 #, c-format
 msgid "Invalid subscript (use 1 to %d)"
 msgstr "Subíndice inválido (utilice de 1 a %d)"
 
-#: config/tc-tic54x.c:5016
+#: config/tc-tic54x.c:4997
 #, c-format
 msgid "Invalid length (use 0 to %d"
 msgstr "Longitud inválida (utilice de 0 a %d)"
 
-#: config/tc-tic54x.c:5026
+#: config/tc-tic54x.c:5007
 msgid "Missing ')' in subscripted substitution symbol expression"
 msgstr "Falta un ')' en la expresión del símbolo de sustitución suscrito"
 
-#: config/tc-tic54x.c:5046
+#: config/tc-tic54x.c:5027
 msgid "Missing forced substitution terminator ':'"
 msgstr "Falta el terminador de sustitución forzada ':'"
 
-#: config/tc-tic54x.c:5201
+#: config/tc-tic54x.c:5182
 #, c-format
 msgid "Instruction does not fit in available delay slots (%d-word insn, %d slots left)"
 msgstr "La instrucción no cabe en las ranuras de retardo disponibles (%d instrucciones word, %d ranuras restantes)"
 
-#: config/tc-tic54x.c:5242
+#: config/tc-tic54x.c:5223
 #, c-format
 msgid "Unrecognized parallel instruction '%s'"
 msgstr "Instrucción paralela '%s' no reconocida"
 
-#: config/tc-tic54x.c:5254
+#: config/tc-tic54x.c:5235
 #, c-format
 msgid "Instruction '%s' requires an LP cpu version"
 msgstr "La instrucción '%s' requiere una versión de cpu LP"
 
-#: config/tc-tic54x.c:5261
+#: config/tc-tic54x.c:5242
 #, c-format
 msgid "Instruction '%s' requires far mode addressing"
 msgstr "La instrucción '%s' requiere el modo de direccionamiento lejano"
 
-#: config/tc-tic54x.c:5273
+#: config/tc-tic54x.c:5254
 #, c-format
 msgid "Instruction does not fit in available delay slots (%d-word insn, %d slots left). Resulting behavior is undefined."
 msgstr "La instrucción no cabe en las ranuras de retardo disponibles (%d instrucciones word, %d ranuras restantes). El comportamiento resultante está indefinida."
 
-#: config/tc-tic54x.c:5283
+#: config/tc-tic54x.c:5264
 msgid "Instructions which cause PC discontinuity are not allowed in a delay slot. Resulting behavior is undefined."
 msgstr "Las instrucciones que causan discontinuidad en el PC no se permiten en una ranura de retardo. El comportamiento resultante está indefinido."
 
-#: config/tc-tic54x.c:5294
+#: config/tc-tic54x.c:5275
 #, c-format
 msgid "'%s' is not repeatable. Resulting behavior is undefined."
 msgstr "'%s' no se puede repetir. El comportamiento resultante está indefinido."
 
-#: config/tc-tic54x.c:5298
+#: config/tc-tic54x.c:5279
 msgid "Instructions using long offset modifiers or absolute addresses are not repeatable. Resulting behavior is undefined."
 msgstr "Las instrucciones que usan modificadores de desplazamiento long o direcciones absolutas no se pueden repetir. El comportamiento resultante está indefinido."
 
-#: config/tc-tic54x.c:5478
+#: config/tc-tic54x.c:5459
 #, c-format
 msgid "Unsupported relocation size %d"
 msgstr "Tamaño de reubicación %d sin soporte"
 
-#: config/tc-tic54x.c:5632
+#: config/tc-tic54x.c:5602
 msgid "non-absolute value used with .space/.bes"
 msgstr "se utilizó un valor no absoluto con .space/.bes"
 
-#: config/tc-tic54x.c:5636
+#: config/tc-tic54x.c:5606
 #, c-format
 msgid "negative value ignored in %s"
 msgstr "se ignora el valor negativo en %s"
 
-#: config/tc-tic54x.c:5725
+#: config/tc-tic54x.c:5695
 #, c-format
 msgid "attempt to .space/.bes backwards? (%ld)"
 msgstr "¿se intentó hacer .space/.bes hacia atrás? (%ld)"
 
-#: config/tc-tic54x.c:5759
+#: config/tc-tic54x.c:5729
 #, c-format
 msgid "Invalid label '%s'"
 msgstr "Etiqueta '%s' inválida"
 
-#: config/tc-tic80.c:27
-#, c-format
-msgid "internal error:%s:%d: %s\n"
-msgstr "error interno:%s:%d: %s\n"
-
-#: config/tc-tic80.c:30
-#, c-format
-msgid "internal error:%s:%d: %s %ld\n"
-msgstr "error interno:%s:%d: %s %ld\n"
-
-#: config/tc-tic80.c:90
-msgid "Relaxation is a luxury we can't afford"
-msgstr "La relajación es un lujo que no se puede conceder"
-
-#: config/tc-tic80.c:139
-msgid "bad call to md_atof ()"
-msgstr "llamada errónea a md_atof ()"
-
-#: config/tc-tic80.c:236
-msgid "':' not followed by 'm' or 's'"
-msgstr "':' no está seguido por 'm' o 's'"
-
-#: config/tc-tic80.c:249
-msgid "paren nesting"
-msgstr "anidamiento de paréntesis"
-
-#: config/tc-tic80.c:263
-msgid "mismatched parenthesis"
-msgstr "paréntesis sin coincidencia"
-
-#: config/tc-tic80.c:461
-msgid "unhandled expression type"
-msgstr "tipo de expresión sin manejar"
-
-#: config/tc-tic80.c:592
-msgid "symbol reloc that is not PC relative or 32 bits"
-msgstr "reubicación de símbolo que no es relativo al PC o de 32 bits"
-
-#: config/tc-tic80.c:621
-msgid "unhandled operand modifier"
-msgstr "modificador de operando sin manejar"
-
-#: config/tc-tic80.c:663
-msgid "unhandled expression"
-msgstr "expresión sin manejar"
-
-#: config/tc-tic80.c:711
-#, c-format
-msgid "Invalid mnemonic: '%s'"
-msgstr "Mnemónico inválido: '%s'"
-
-#: config/tc-tic80.c:724
-#, c-format
-msgid "Invalid operands: '%s'"
-msgstr "Operandos inválidos: '%s'"
-
-#: config/tc-tic80.c:802
-msgid "unhandled predefined symbol bits"
-msgstr "bits de símbolo predefinido sin manejar"
-
-#: config/tc-tic80.c:897
-#, c-format
-msgid "PC offset 0x%lx outside range 0x%lx-0x%lx"
-msgstr "desplazamiento del PC 0x%lx fuera del rango 0x%lx-0x%lx"
-
-#: config/tc-tic80.c:912
-msgid "unhandled relocation type in fixup"
-msgstr "typo de reubicación sin manejar en la compostura"
-
-#: config/tc-tic80.c:951
-msgid "md_convert_frag() not implemented yet"
-msgstr "md_convert_frag() aún no está implementado"
-
-#: config/tc-v850.c:244
+#: config/tc-v850.c:234
 #, c-format
 msgid ".COMMon length (%d.) < 0! Ignored."
 msgstr "¡Longitud .COMMún (%d.) < 0! Se ignora."
 
-#: config/tc-v850.c:266
+#: config/tc-v850.c:255
 #, c-format
 msgid "Length of .comm \"%s\" is already %ld. Not changed to %d."
 msgstr "La longitud de .comm \"%s\" ya es %ld. No se cambia a %d."
 
-#: config/tc-v850.c:293
+#: config/tc-v850.c:281
 msgid "Common alignment negative; 0 assumed"
 msgstr "Alineación común negativa; se asume 0"
 
-#: config/tc-v850.c:976
+#: config/tc-v850.c:939
 #, c-format
 msgid "unknown operand shift: %x\n"
 msgstr "operando de desplazamiento desconocido: %x\n"
 
-#: config/tc-v850.c:977
+#: config/tc-v850.c:940
 msgid "internal failure in parse_register_list"
 msgstr "falla interna en parse_register_list"
 
-#: config/tc-v850.c:993
+#: config/tc-v850.c:956
 msgid "constant expression or register list expected"
 msgstr "se esperaba una expresión constante o una lista de registros"
 
-#: config/tc-v850.c:998 config/tc-v850.c:1011 config/tc-v850.c:1030
+#: config/tc-v850.c:961 config/tc-v850.c:974 config/tc-v850.c:993
 msgid "high bits set in register list expression"
 msgstr "se establecieron los bits altos en la expresión de lista de registros"
 
-#: config/tc-v850.c:1069 config/tc-v850.c:1132
+#: config/tc-v850.c:1032 config/tc-v850.c:1095
 msgid "illegal register included in list"
 msgstr "se incluyó un registro ilegal en la lista"
 
-#: config/tc-v850.c:1075
+#: config/tc-v850.c:1038
 msgid "system registers cannot be included in list"
 msgstr "los registros del sistema no pueden estar incluídos en la lista"
 
-#: config/tc-v850.c:1080
+#: config/tc-v850.c:1043
 msgid "PSW cannot be included in list"
 msgstr "PSW no se puede incluir en la lista"
 
-#: config/tc-v850.c:1087
+#: config/tc-v850.c:1050
 msgid "High value system registers cannot be included in list"
 msgstr "Los registros altos de valores del sistema no se pueden incluir en la lista"
 
-#: config/tc-v850.c:1111
+#: config/tc-v850.c:1074
 msgid "second register should follow dash in register list"
 msgstr "el segundo registro debe estar a continuación de un guión en la lista de registros"
 
-#: config/tc-v850.c:1156
+#: config/tc-v850.c:1119
 #, c-format
 msgid " V850 options:\n"
 msgstr "Opciones de V850:\n"
 
-#: config/tc-v850.c:1157
+#: config/tc-v850.c:1120
 #, c-format
 msgid "  -mwarn-signed-overflow    Warn if signed immediate values overflow\n"
 msgstr "  -mwarn-signed-overflow    Avisa si los valores inmediatos con signo desbordan\n"
 
-#: config/tc-v850.c:1158
+#: config/tc-v850.c:1121
 #, c-format
 msgid "  -mwarn-unsigned-overflow  Warn if unsigned immediate values overflow\n"
 msgstr "  -mwarn-unsigned-overflow  Avisa si los valores inmediato sin signo desbordan\n"
 
-#: config/tc-v850.c:1159
+#: config/tc-v850.c:1122
 #, c-format
 msgid "  -mv850                    The code is targeted at the v850\n"
 msgstr "  -mv850                    El código está destinado para el v850\n"
 
-#: config/tc-v850.c:1160
+#: config/tc-v850.c:1123
 #, c-format
 msgid "  -mv850e                   The code is targeted at the v850e\n"
 msgstr "  -mv850e                   El código está destinado para el v850e\n"
 
-#: config/tc-v850.c:1161
+#: config/tc-v850.c:1124
 #, c-format
 msgid "  -mv850e1                  The code is targeted at the v850e1\n"
 msgstr "  -mv850e1                  El código está destinado para el v850e1\n"
 
-#: config/tc-v850.c:1162
+#: config/tc-v850.c:1125
 #, c-format
 msgid "  -mv850any                 The code is generic, despite any processor specific instructions\n"
 msgstr "  -mv850any                 El código es genérico, a pesar de cualquier instrucción específica de procesador\n"
 
-#: config/tc-v850.c:1163
+#: config/tc-v850.c:1126
 #, c-format
 msgid "  -mrelax                   Enable relaxation\n"
 msgstr "  -mrelax                   Activa la relajación.\n"
 
-#: config/tc-v850.c:1354
+#: config/tc-v850.c:1308
 #, c-format
 msgid "Unable to determine default target processor from string: %s"
 msgstr "No se puede determinar el procesador objetivo por defecto de la cadena: %s"
 
-#: config/tc-v850.c:1389
+#: config/tc-v850.c:1343
 msgid "lo() relocation used on an instruction which does not support it"
 msgstr "se utilizó una reubicación lo() en una instrucción que no la soporta"
 
-#: config/tc-v850.c:1410
+#: config/tc-v850.c:1360
 msgid "ctoff() relocation used on an instruction which does not support it"
 msgstr "se utilizó una reubicación ctoff() en una instrucción que no la soporta"
 
-#: config/tc-v850.c:1436
+#: config/tc-v850.c:1382
 msgid "sdaoff() relocation used on an instruction which does not support it"
 msgstr "se utilizó una reubicación sdaoff() en una instrucción que no la soporta"
 
-#: config/tc-v850.c:1462
+#: config/tc-v850.c:1404
 msgid "zdaoff() relocation used on an instruction which does not support it"
 msgstr "se utilizó una reubicación zdaoff() en una instrucción que no la soporta"
 
-#: config/tc-v850.c:1499
+#: config/tc-v850.c:1437
 msgid "tdaoff() relocation used on an instruction which does not support it"
 msgstr "se utilizó una reubicación tdaoff() en una instrucción que no la soporta"
 
-#: config/tc-v850.c:1714
+#: config/tc-v850.c:1642
 msgid "Target processor does not support this instruction."
 msgstr "El procesador objetivo no tiene soporte para esta instrucción."
 
-#: config/tc-v850.c:1805 config/tc-v850.c:1834 config/tc-v850.c:2022
+#: config/tc-v850.c:1731 config/tc-v850.c:1760 config/tc-v850.c:1940
 msgid "immediate operand is too large"
 msgstr "el operando inmediato es demasiado grande"
 
-#: config/tc-v850.c:1816
+#: config/tc-v850.c:1742
 msgid "AAARG -> unhandled constant reloc"
 msgstr "AAARG -> reubicación de constante sin manejar"
 
-#: config/tc-v850.c:1860
+#: config/tc-v850.c:1785
 msgid "invalid register name"
 msgstr "nombre de registro inválido"
 
-#: config/tc-v850.c:1865
+#: config/tc-v850.c:1789
 msgid "register r0 cannot be used here"
 msgstr "el registro r0 no se puede usar aquí"
 
-#: config/tc-v850.c:1877
+#: config/tc-v850.c:1800
 msgid "invalid system register name"
 msgstr "nombre de registro de sistema inválido"
 
-#: config/tc-v850.c:1890
+#: config/tc-v850.c:1812
 msgid "expected EP register"
 msgstr "se esperaba el registro EP"
 
-#: config/tc-v850.c:1907
+#: config/tc-v850.c:1828
 msgid "invalid condition code name"
 msgstr "nombre de código de condición inválido"
 
-#: config/tc-v850.c:1928 config/tc-v850.c:1932
+#: config/tc-v850.c:1848 config/tc-v850.c:1852
 msgid "constant too big to fit into instruction"
 msgstr "la constante es demasiado grande para caber en la instrucción"
 
-#: config/tc-v850.c:1985
+#: config/tc-v850.c:1905
 msgid "syntax error: value is missing before the register name"
 msgstr "error sintáctico: falta el valor antes del nombre de registro"
 
-#: config/tc-v850.c:1987
+#: config/tc-v850.c:1907
 msgid "syntax error: register not expected"
 msgstr "error sintáctico: no se esperaba un registro"
 
-#: config/tc-v850.c:2001
+#: config/tc-v850.c:1920
 msgid "syntax error: system register not expected"
 msgstr "error sintáctico: no se esperaba un registro de sistema"
 
-#: config/tc-v850.c:2006
+#: config/tc-v850.c:1924
 msgid "syntax error: condition code not expected"
 msgstr "error sintáctico: no es esperaba código de condición"
 
-#: config/tc-v850.c:2040
+#: config/tc-v850.c:1958
 msgid "invalid operand"
 msgstr "operando inválido"
 
@@ -10820,179 +10391,214 @@ msgstr "operando inv
 msgid "VIP_BEGIN error:%s"
 msgstr "error VIP_BEGIN:%s"
 
-#: config/tc-vax.c:427
+#: config/tc-vax.c:461
+#, c-format
+msgid "Ignoring statement due to \"%s\""
+msgstr "Se ignora la declaración debido a \"%s\""
+
+#: config/tc-vax.c:480
 #, c-format
 msgid "Aborting because statement has \"%s\""
 msgstr "Se aborta porque la declaración tiene \"%s\""
 
-#: config/tc-vax.c:474
+#: config/tc-vax.c:527
 msgid "Can't relocate expression"
 msgstr "No se puede reubicar la expresión"
 
-#: config/tc-vax.c:577
+#: config/tc-vax.c:630
 msgid "Bignum not permitted in short literal. Immediate mode assumed."
 msgstr "No se permite un número grande en una literal short. Se asume el modo inmediato."
 
-#: config/tc-vax.c:586
+#: config/tc-vax.c:639
 msgid "Can't do flonum short literal: immediate mode used."
 msgstr "No se puede hacer una literal short de un número de coma flotante: se usa el modo inmediato."
 
-#: config/tc-vax.c:631
+#: config/tc-vax.c:684
 #, c-format
 msgid "A bignum/flonum may not be a displacement: 0x%lx used"
 msgstr "Un número grande/de coma flotante no puede ser una desubicación: se usa 0x%lx"
 
-#: config/tc-vax.c:967
+#: config/tc-vax.c:1007
 #, c-format
 msgid "Short literal overflow(%ld.), immediate mode assumed."
 msgstr "Desbordamiento de la literal short (%ld.), se asume el modo inmediato."
 
-#: config/tc-vax.c:976
+#: config/tc-vax.c:1016
 #, c-format
 msgid "Forced short literal to immediate mode. now_seg=%s to_seg=%s"
 msgstr "Se fuerza la literal short a modo inmediato. now_seg=%s to_seg=%s"
 
-#: config/tc-vax.c:1041
+#: config/tc-vax.c:1081
 msgid "Length specification ignored. Address mode 9F used"
 msgstr "Se ignora la especificación de longitud. Se usa el modo de direccionamiento 9F"
 
-#: config/tc-vax.c:1102
+#: config/tc-vax.c:1142
 msgid "Invalid operand:  immediate value used as base address."
 msgstr "Operando inválido: se utilizó un valor inmediato como dirección base."
 
-#: config/tc-vax.c:1104
+#: config/tc-vax.c:1144
 msgid "Invalid operand:  immediate value used as address."
 msgstr "Operando inválido: se utilizó un valor inmediato como dirección"
 
-#: config/tc-vax.c:1129
+#: config/tc-vax.c:1169
 msgid "Symbol used as immediate operand in PIC mode."
 msgstr "Se utiliza un símbolo como operando inmediato en modo PIC."
 
-#: config/tc-vax.c:1947
+#: config/tc-vax.c:1942
 msgid "odd number of bytes in operand description"
 msgstr "número impar de bytes en la descripción del operando"
 
-#: config/tc-vax.c:1963
+#: config/tc-vax.c:1958
 msgid "Bad operand"
 msgstr "Operando erróneo"
 
-#: config/tc-vax.c:2538
+#: config/tc-vax.c:1963
+msgid "Not enough operands"
+msgstr "No hay suficientes operandos"
+
+#: config/tc-vax.c:1970
+msgid "Too many operands"
+msgstr "Demasiados operandos"
+
+#: config/tc-vax.c:2533
 msgid "no '[' to match ']'"
 msgstr "no hay '[' que coincida con ']'"
 
-#: config/tc-vax.c:2558
+#: config/tc-vax.c:2553
 msgid "bad register in []"
 msgstr "registro erróneo en []"
 
-#: config/tc-vax.c:2560
+#: config/tc-vax.c:2555
 msgid "[PC] index banned"
 msgstr "índice [PC] prohibido"
 
-#: config/tc-vax.c:2595
+#: config/tc-vax.c:2590
 msgid "no '(' to match ')'"
 msgstr "no hay '(' que coincida con ')'"
 
-#: config/tc-vax.c:2735
+#: config/tc-vax.c:2730
 msgid "invalid branch operand"
 msgstr "operando de ramificación inválido"
 
-#: config/tc-vax.c:2764
+#: config/tc-vax.c:2759
 msgid "address prohibits @"
 msgstr "la dirección prohibe @"
 
-#: config/tc-vax.c:2766
+#: config/tc-vax.c:2761
 msgid "address prohibits #"
 msgstr "la dirección prohibe #"
 
-#: config/tc-vax.c:2770
+#: config/tc-vax.c:2765
 msgid "address prohibits -()"
 msgstr "la dirección prohibe -()"
 
-#: config/tc-vax.c:2772
+#: config/tc-vax.c:2767
 msgid "address prohibits ()+"
 msgstr "la dirección prohibe ()+"
 
-#: config/tc-vax.c:2775
+#: config/tc-vax.c:2770
 msgid "address prohibits ()"
 msgstr "la dirección prohibe ()"
 
-#: config/tc-vax.c:2777
+#: config/tc-vax.c:2772
 msgid "address prohibits []"
 msgstr "la dirección prohibe []"
 
-#: config/tc-vax.c:2779
+#: config/tc-vax.c:2774
 msgid "address prohibits register"
 msgstr "la dirección prohibe un registro"
 
-#: config/tc-vax.c:2781
+#: config/tc-vax.c:2776
 msgid "address prohibits displacement length specifier"
 msgstr "la dirección prohibe un especificador de longitud de desubicación"
 
-#: config/tc-vax.c:2811
+#: config/tc-vax.c:2806
 msgid "invalid operand of S^#"
 msgstr "operando inválido de S^#"
 
-#: config/tc-vax.c:2828
+#: config/tc-vax.c:2823
 msgid "S^# needs expression"
 msgstr "S^# necesita una expresión"
 
-#: config/tc-vax.c:2835
+#: config/tc-vax.c:2830
 msgid "S^# may only read-access"
 msgstr "S^# tal vez sea solamente para acceso por lectura"
 
-#: config/tc-vax.c:2860
+#: config/tc-vax.c:2855
 msgid "invalid operand of -()"
 msgstr "operando inválido de -()"
 
-#: config/tc-vax.c:2866
+#: config/tc-vax.c:2861
 msgid "-(PC) unpredictable"
 msgstr "-(PC) impredecible"
 
-#: config/tc-vax.c:2868
+#: config/tc-vax.c:2863
 msgid "[]index same as -()register: unpredictable"
 msgstr "[]índice igual que -()registro: impredecible"
 
-#: config/tc-vax.c:2904
+#: config/tc-vax.c:2899
 msgid "invalid operand of ()+"
 msgstr "operando inválido de ()+"
 
-#: config/tc-vax.c:2910
+#: config/tc-vax.c:2905
 msgid "(PC)+ unpredictable"
 msgstr "(PC)+ impredecible"
 
-#: config/tc-vax.c:2912
+#: config/tc-vax.c:2907
 msgid "[]index same as ()+register: unpredictable"
 msgstr "[]índice igual que ()+registro: impredecible"
 
-#: config/tc-vax.c:2937
+#: config/tc-vax.c:2932
 msgid "# conflicts length"
 msgstr "# tiene conflictos con la longitud"
 
-#: config/tc-vax.c:2939
+#: config/tc-vax.c:2934
 msgid "# bars register"
 msgstr "# prohibe el registro"
 
-#: config/tc-vax.c:2961
+#: config/tc-vax.c:2956
 msgid "writing or modifying # is unpredictable"
 msgstr "escribir o modificar # es impredecible"
 
-#: config/tc-vax.c:2991
+#: config/tc-vax.c:2986
 msgid "length not needed"
 msgstr "no se necesita la longitud"
 
-#: config/tc-vax.c:2998
+#: config/tc-vax.c:2993
 msgid "can't []index a register, because it has no address"
 msgstr "no se puede []indizar un registro, porque no tiene dirección"
 
-#: config/tc-vax.c:3000
+#: config/tc-vax.c:2995
 msgid "a register has no address"
 msgstr "un registro no tiene dirección"
 
-#: config/tc-vax.c:3011
+#: config/tc-vax.c:3006
 msgid "PC part of operand unpredictable"
 msgstr "la parte PC del operando es impredecible"
 
-#: config/tc-vax.c:3360
+#: config/tc-vax.c:3281
+msgid "SYMBOL TABLE not implemented"
+msgstr "SYMBOL TABLE no está implementado"
+
+#: config/tc-vax.c:3285
+msgid "TOKEN TRACE not implemented"
+msgstr "TOKEN TRACE no está implementado"
+
+#: config/tc-vax.c:3289
+#, c-format
+msgid "Displacement length %s ignored!"
+msgstr "¡Se ignora la longitud de desubicación %s!"
+
+#: config/tc-vax.c:3293
+#, c-format
+msgid "I don't need or use temp. file \"%s\"."
+msgstr "No se necesita o se utiliza el fichero temporal \"%s\"."
+
+#: config/tc-vax.c:3297
+msgid "I don't use an interpass file! -V ignored"
+msgstr "¡No se usa un fichero entre pasos! Se ignora -V"
+
+#: config/tc-vax.c:3354
 #, c-format
 msgid ""
 "VAX options:\n"
@@ -11011,7 +10617,7 @@ msgstr ""
 "-T\t\t\tse ignora\n"
 "-V\t\t\tse ignora\n"
 
-#: config/tc-vax.c:3369
+#: config/tc-vax.c:3363
 #, c-format
 msgid ""
 "VMS options:\n"
@@ -11030,733 +10636,720 @@ msgstr ""
 "\t\t\t0 = mayúsculas, 2 = minúsculas, 3 = preservar mayúsculas/minúsculas\n"
 "-v\"VERSION\"\t\tel código a ensamblar fue producido por el compilador \"VERSION\"\n"
 
-#: config/tc-w65.c:142
-msgid "need on or off."
-msgstr "necesita on u off."
-
-#: config/tc-w65.c:278 config/tc-w65.c:321
-msgid "syntax error after <exp"
-msgstr "error sintáctico después de <exp"
-
-#: config/tc-xstormy16.c:80
+#: config/tc-xstormy16.c:78
 #, c-format
 msgid " XSTORMY16 specific command line options:\n"
 msgstr " Opciones de línea de comando específicas de XSTROMY16:\n"
 
-#: config/tc-xstormy16.c:580
+#: config/tc-xstormy16.c:563
 #, c-format
 msgid "internal error: can't install fix for reloc type %d (`%s')"
 msgstr "error interno: no se puede instalar la compostura para el tipo de reubicación %d (`%s')"
 
-#: config/tc-xtensa.c:588
+#: config/tc-xtensa.c:590
 msgid "illegal range of target hardware versions"
 msgstr "rango ilegal de versiones de hardware objetivo"
 
-#: config/tc-xtensa.c:736
+#: config/tc-xtensa.c:738
 msgid "--density option is ignored"
 msgstr "se ignora la opción --density"
 
-#: config/tc-xtensa.c:739
+#: config/tc-xtensa.c:741
 msgid "--no-density option is ignored"
 msgstr "se ignora la opción --no-density"
 
-#: config/tc-xtensa.c:748
+#: config/tc-xtensa.c:750
 msgid "--generics is deprecated; use --transform instead"
 msgstr "--generics es obsoleto; utilice en su lugar --transform"
 
-#: config/tc-xtensa.c:751
+#: config/tc-xtensa.c:753
 msgid "--no-generics is deprecated; use --no-transform instead"
 msgstr "--no-generics es obsoleto; utilice en su lugar --no-transform"
 
-#: config/tc-xtensa.c:754
+#: config/tc-xtensa.c:756
 msgid "--relax is deprecated; use --transform instead"
 msgstr "--relax es obsoleto; utilice en su lugar --transform"
 
-#: config/tc-xtensa.c:757
+#: config/tc-xtensa.c:759
 msgid "--no-relax is deprecated; use --no-transform instead"
 msgstr "--no-relax es obsoleto; utilice en su lugar --no-transform"
 
-#: config/tc-xtensa.c:774
+#: config/tc-xtensa.c:776
 msgid "--absolute-literals option not supported in this Xtensa configuration"
 msgstr "la opción --absolute-literals no tiene soporte en esta configuración Xtensa"
 
-#: config/tc-xtensa.c:847
+#: config/tc-xtensa.c:849
 msgid "prefer-l32r conflicts with prefer-const16"
 msgstr "prefer-l32r tiene conflictos con prefer-const16"
 
-#: config/tc-xtensa.c:853
+#: config/tc-xtensa.c:855
 msgid "prefer-const16 conflicts with prefer-l32r"
 msgstr "prefer-const16 tiene conflictos con prefer-l32r"
 
-#: config/tc-xtensa.c:861 config/tc-xtensa.c:870 config/tc-xtensa.c:874
+#: config/tc-xtensa.c:863 config/tc-xtensa.c:872 config/tc-xtensa.c:876
 msgid "invalid target hardware version"
 msgstr "versión de hardware objetivo inválido"
 
-#: config/tc-xtensa.c:1086
+#: config/tc-xtensa.c:1078
 msgid "unmatched end directive"
 msgstr "directiva end sin coincidencia"
 
-#: config/tc-xtensa.c:1115
+#: config/tc-xtensa.c:1107
 msgid ".begin directive with no matching .end directive"
 msgstr "directiva .begin sin una directiva .end coincidente"
 
-#: config/tc-xtensa.c:1156
+#: config/tc-xtensa.c:1148
 msgid "[no-]generics is deprecated; use [no-]transform instead"
 msgstr "[no-]generics es obsoleto; utilice en su lugar [no-]transform"
 
-#: config/tc-xtensa.c:1161
+#: config/tc-xtensa.c:1153
 msgid "[no-]relax is deprecated; use [no-]transform instead"
 msgstr "[no-]relax es obsoleto; utilice en su lugar [no-]transform"
 
-#: config/tc-xtensa.c:1174
+#: config/tc-xtensa.c:1166
 #, c-format
 msgid "directive %s cannot be negated"
 msgstr "la directiva %s no se puede negar"
 
-#: config/tc-xtensa.c:1180
+#: config/tc-xtensa.c:1172
 msgid "unknown directive"
 msgstr "directiva desconocida"
 
-#: config/tc-xtensa.c:1202 config/tc-xtensa.c:1308 config/tc-xtensa.c:1604
-#: config/tc-xtensa.c:5552
+#: config/tc-xtensa.c:1194 config/tc-xtensa.c:1300 config/tc-xtensa.c:1573
+#: config/tc-xtensa.c:5496
 msgid "directives are not valid inside bundles"
 msgstr "las directivas no son válidas dentro de una agrupación"
 
-#: config/tc-xtensa.c:1214
+#: config/tc-xtensa.c:1206
 msgid ".begin literal is deprecated; use .literal instead"
 msgstr "El uso de .begin literal es obsoleto.  Utilice en su lugar .literal"
 
-#: config/tc-xtensa.c:1228
+#: config/tc-xtensa.c:1220
 msgid "cannot set literal_prefix inside literal fragment"
 msgstr "no se puede establecer literal_prefix dentro de un fragmento literal"
 
-#: config/tc-xtensa.c:1271
+#: config/tc-xtensa.c:1263
 msgid ".begin [no-]density is ignored"
 msgstr "se ignora .begin [no-]density"
 
-#: config/tc-xtensa.c:1278 config/tc-xtensa.c:1328
+#: config/tc-xtensa.c:1270 config/tc-xtensa.c:1320
 msgid "Xtensa absolute literals option not supported; ignored"
 msgstr "la opción de literales absolutos Xtensa no tiene soporte; se ignora"
 
-#: config/tc-xtensa.c:1321
+#: config/tc-xtensa.c:1313
 msgid ".end [no-]density is ignored"
 msgstr "se ignora .end [no-]density"
 
-#: config/tc-xtensa.c:1346
+#: config/tc-xtensa.c:1338
 #, c-format
 msgid "does not match begin %s%s at %s:%d"
 msgstr "no coincide inicio %s%s en %s:%d"
 
-#: config/tc-xtensa.c:1424
+#: config/tc-xtensa.c:1393
 msgid ".literal_position inside literal directive; ignoring"
 msgstr ".literal_position dentro de una directiva literal; se ignora"
 
-#: config/tc-xtensa.c:1444
+#: config/tc-xtensa.c:1413
 msgid ".literal not allowed inside .begin literal region"
 msgstr ".literal no se permite dentro de una región .begin literal"
 
-#: config/tc-xtensa.c:1480
+#: config/tc-xtensa.c:1449
 msgid "expected comma or colon after symbol name; rest of line ignored"
 msgstr "se esperaba coma o punto y coma después del nombre del símbolo: se ingnora el resto de la línea"
 
-#: config/tc-xtensa.c:1573
+#: config/tc-xtensa.c:1542
 msgid "fall through frequency must be greater than 0"
 msgstr "la frecuencia de caída debe ser mayor a 0"
 
-#: config/tc-xtensa.c:1581
+#: config/tc-xtensa.c:1550
 msgid "branch target frequency must be greater than 0"
 msgstr "la frecuencia de ramificación de objetivo debe ser mayor a 0"
 
-#: config/tc-xtensa.c:1629
+#: config/tc-xtensa.c:1598
 #, c-format
 msgid "opcode-specific %s relocation used outside an instruction"
 msgstr "se usó la reubicación %s específica de código de operación fuera de una instrucción"
 
-#: config/tc-xtensa.c:1782 config/tc-xtensa.c:1799
+#: config/tc-xtensa.c:1751 config/tc-xtensa.c:1768
 #, c-format
 msgid "bad register name: %s"
 msgstr "nombre de registro erróneo: %s"
 
-#: config/tc-xtensa.c:1788
+#: config/tc-xtensa.c:1757
 #, c-format
 msgid "bad register number: %s"
 msgstr "número de registro erróneo: %s"
 
-#: config/tc-xtensa.c:1867
+#: config/tc-xtensa.c:1836
 msgid "register number out of range"
 msgstr "número de registro fuera de rango"
 
-#: config/tc-xtensa.c:1951
+#: config/tc-xtensa.c:1920
 msgid "extra comma"
 msgstr "coma extra"
 
-#: config/tc-xtensa.c:1953
+#: config/tc-xtensa.c:1922
 msgid "extra colon"
 msgstr "punto y coma extra"
 
-#: config/tc-xtensa.c:1955
+#: config/tc-xtensa.c:1924
 msgid "missing argument"
 msgstr "falta el argumento"
 
-#: config/tc-xtensa.c:1957
+#: config/tc-xtensa.c:1926
 msgid "missing comma or colon"
 msgstr "falta una coma o punto y coma"
 
-#: config/tc-xtensa.c:2014
+#: config/tc-xtensa.c:1983
 msgid "incorrect register number, ignoring"
 msgstr "múmero de registro incorrecto, se ignora"
 
-#: config/tc-xtensa.c:2021
+#: config/tc-xtensa.c:1990
 msgid "too many arguments"
 msgstr "demasiados argumentos"
 
-#: config/tc-xtensa.c:2094
+#: config/tc-xtensa.c:2063
 #, c-format
 msgid "cannot encode opcode \"%s\""
 msgstr "no se puede codificar el código de operación \"%s\""
 
-#: config/tc-xtensa.c:2188
+#: config/tc-xtensa.c:2157
 #, c-format
 msgid "not enough operands (%d) for '%s'; expected %d"
 msgstr "no hay suficientes operandos (%d) para '%s'; se esperaban %d"
 
-#: config/tc-xtensa.c:2195
+#: config/tc-xtensa.c:2164
 #, c-format
 msgid "too many operands (%d) for '%s'; expected %d"
 msgstr "demasiados operandos (%d) para '%s'; se esperaban %d"
 
-#: config/tc-xtensa.c:2250
+#: config/tc-xtensa.c:2219
 #, c-format
 msgid "invalid register '%s' for '%s' instruction"
 msgstr "registros '%s' inválido para la instrucción '%s'"
 
-#: config/tc-xtensa.c:2257
+#: config/tc-xtensa.c:2226
 #, c-format
 msgid "invalid register number (%ld) for '%s' instruction"
 msgstr "número de registro (%ld) inválido para la instrucción `%s'"
 
-#: config/tc-xtensa.c:2326
+#: config/tc-xtensa.c:2295
 #, c-format
 msgid "invalid register number (%ld) for '%s'"
 msgstr "número de registro inválido (%ld) para '%s'"
 
-#: config/tc-xtensa.c:2716
+#: config/tc-xtensa.c:2685
 #, c-format
-msgid "operand %u is out of range for '%s'"
-msgstr "el operando %u está fuera de rango para '%s'"
+msgid "operand %d of '%s' has out of range value '%u'"
+msgstr "el operando %d de '%s' está el valor fuera de rango '%u'"
 
-#: config/tc-xtensa.c:2720
+#: config/tc-xtensa.c:2691
 #, c-format
-msgid "operand %u is invalid for '%s'"
-msgstr "el operando %u es inválido para '%s'"
+msgid "operand %d of '%s' has invalid value '%u'"
+msgstr "el operando %d de '%s' tiene el valor inválido '%u'"
 
-#: config/tc-xtensa.c:2766
+#: config/tc-xtensa.c:2739
 #, c-format
 msgid "internal error: unknown option name '%s'"
 msgstr "error interno: nombre de opción '%s' desconocido"
 
-#: config/tc-xtensa.c:3873
+#: config/tc-xtensa.c:3791
 msgid "INSTR_LABEL_DEF not supported yet"
 msgstr "INSTR_LABEL_DEF aún no tiene soporte"
 
-#: config/tc-xtensa.c:3902
+#: config/tc-xtensa.c:3820
 msgid "can't handle generation of literal/labels yet"
 msgstr "aún no se puede manejar la generación de literales/etiquetas"
 
-#: config/tc-xtensa.c:3906
+#: config/tc-xtensa.c:3824
 msgid "can't handle undefined OP TYPE"
 msgstr "no se puede manejar un OP TYPE indefinido"
 
-#: config/tc-xtensa.c:3966
+#: config/tc-xtensa.c:3885
 #, c-format
 msgid "found %d operands for '%s':  Expected %d"
 msgstr "se encontraron %d operandos para '%s':  Se esperaban %d"
 
-#: config/tc-xtensa.c:3973
+#: config/tc-xtensa.c:3892
 #, c-format
 msgid "found too many (%d) operands for '%s':  Expected %d"
 msgstr "se econtraron demasiados (%d) operandos para '%s':  Se esperaban %d"
 
-#: config/tc-xtensa.c:4234
+#: config/tc-xtensa.c:4029
+msgid "invalid immediate"
+msgstr "inmediato inválido"
+
+#: config/tc-xtensa.c:4140
 #, c-format
 msgid "invalid relocation for operand %i of '%s'"
 msgstr "reubicación inválida para el operando %i de '%s'"
 
-#: config/tc-xtensa.c:4244
+#: config/tc-xtensa.c:4150
 #, c-format
 msgid "invalid expression for operand %i of '%s'"
 msgstr "expresión inválida para el operando %i en '%s'"
 
-#: config/tc-xtensa.c:4254
+#: config/tc-xtensa.c:4160
 #, c-format
 msgid "invalid relocation in instruction slot %i"
 msgstr "reubicación inválida en la ranura de instrucción %i"
 
-#: config/tc-xtensa.c:4261
+#: config/tc-xtensa.c:4167
 #, c-format
 msgid "undefined symbol for opcode \"%s\""
 msgstr "símbolo indefinido para el código de operación \"%s\""
 
-#: config/tc-xtensa.c:4700
+#: config/tc-xtensa.c:4608
 msgid "opcode 'NOP.N' unavailable in this configuration"
 msgstr "el código de operación 'NOP.N' no está disponible en esta configuración"
 
-#: config/tc-xtensa.c:4759
+#: config/tc-xtensa.c:4668
 msgid "get_expanded_loop_offset: invalid opcode"
 msgstr "get_expanded_loop_offset: código de operación inválido"
 
-#: config/tc-xtensa.c:4840
+#: config/tc-xtensa.c:4751
 #, c-format
 msgid "assembly state not set for first frag in section %s"
 msgstr "no se estableció el estado de ensamblado para el primer fragmento en la sección %s"
 
-#: config/tc-xtensa.c:4889
+#: config/tc-xtensa.c:4804
 #, c-format
 msgid "unaligned branch target: %d bytes at 0x%lx"
 msgstr "ramificación de objetivo no alineada: %d bytes en 0x%lx"
 
-#: config/tc-xtensa.c:4927
+#: config/tc-xtensa.c:4843
 #, c-format
 msgid "unaligned loop: %d bytes at 0x%lx"
 msgstr "ciclo no alineado: %d bytes en 0x%lx"
 
-#: config/tc-xtensa.c:4951
+#: config/tc-xtensa.c:4867
 msgid "unexpected fix"
 msgstr "fix inesperado"
 
-#: config/tc-xtensa.c:4962 config/tc-xtensa.c:4966
+#: config/tc-xtensa.c:4878 config/tc-xtensa.c:4882
 msgid "undecodable fix"
 msgstr "fix que no se puede decodificar"
 
-#: config/tc-xtensa.c:5105
+#: config/tc-xtensa.c:5012
+msgid "labels are not valid inside bundles"
+msgstr "las etiquetas no son válidas dentro de una agrupación"
+
+#: config/tc-xtensa.c:5032
 msgid "invalid last instruction for a zero-overhead loop"
 msgstr "instrucción last inválida para un ciclo con cero adelanto"
 
-#: config/tc-xtensa.c:5176
+#: config/tc-xtensa.c:5097
 msgid "extra opening brace"
 msgstr "llave que abre extra"
 
-#: config/tc-xtensa.c:5186
+#: config/tc-xtensa.c:5107
 msgid "extra closing brace"
 msgstr "llave que cierra extra"
 
-#: config/tc-xtensa.c:5204
+#: config/tc-xtensa.c:5125
 msgid "missing closing brace"
 msgstr "falta una llave que cierra"
 
-#: config/tc-xtensa.c:5284
+#: config/tc-xtensa.c:5205
 #, c-format
 msgid "unknown opcode or format name '%s'"
 msgstr "código de operación o nombre de formato `%s' desconocido"
 
-#: config/tc-xtensa.c:5290
+#: config/tc-xtensa.c:5211
 msgid "format names only valid inside bundles"
 msgstr "los nombres de formato sólo son válidos dentro de agregados"
 
-#: config/tc-xtensa.c:5295
+#: config/tc-xtensa.c:5216
 #, c-format
 msgid "multiple formats specified for one bundle; using '%s'"
 msgstr "se especificaron múltiples formatos para un agregado; se usa '%s'"
 
-#: config/tc-xtensa.c:5351
+#: config/tc-xtensa.c:5271
 msgid "entry instruction with stack decrement < 16"
 msgstr "onstrucción entry con decremento de pila < 16"
 
-#: config/tc-xtensa.c:5355
+#: config/tc-xtensa.c:5275
 msgid "entry instruction with non-constant decrement"
 msgstr "instrucción entry con decremento que no es constante"
 
-#: config/tc-xtensa.c:5410
+#: config/tc-xtensa.c:5330
 msgid "unaligned entry instruction"
 msgstr "entrada de instrucción desalineada"
 
-#: config/tc-xtensa.c:5472
+#: config/tc-xtensa.c:5389
 msgid "bad instruction format"
 msgstr "formato de instrucción erróneo"
 
-#: config/tc-xtensa.c:5475
+#: config/tc-xtensa.c:5392
 msgid "invalid relocation"
 msgstr "reubicación inválida"
 
-#: config/tc-xtensa.c:5485
+#: config/tc-xtensa.c:5403
 #, c-format
 msgid "invalid relocation for '%s' instruction"
 msgstr "reubicación inválida para la instrucción '%s'"
 
-#: config/tc-xtensa.c:5497
+#: config/tc-xtensa.c:5415
 #, c-format
 msgid "invalid relocation for operand %d of '%s'"
 msgstr "reubicación inválida para el operando %d de '%s'"
 
-#: config/tc-xtensa.c:5611 config/tc-xtensa.c:5629
-#, c-format
-msgid "unhandled local relocation fix %s"
-msgstr "tipo de reubicación fix %s sin manejar"
-
-#: config/tc-xtensa.c:5741
+#: config/tc-xtensa.c:5572
 msgid "cannot represent subtraction with an offset"
 msgstr "no se puede representar la sustracción con un desplazamiento"
 
-#: config/tc-xtensa.c:5757
+#: config/tc-xtensa.c:5660
 #, c-format
-msgid "value of %ld too large"
-msgstr "el valor de %ld es demasiado grande"
-
-#: config/tc-xtensa.c:5819
-msgid "emitting simplification relocation"
-msgstr "emitiendo simplificación de reubicación"
-
-#: config/tc-xtensa.c:5823
-msgid "emitting unknown relocation"
-msgstr "emitiendo reubicación desconocida"
+msgid "unhandled local relocation fix %s"
+msgstr "tipo de reubicación fix %s sin manejar"
 
-#: config/tc-xtensa.c:6076
+#: config/tc-xtensa.c:5968
 msgid "couldn't find a valid instruction format"
 msgstr "no se puede encontrar un formato de instrucción válido"
 
-#: config/tc-xtensa.c:6077
+#: config/tc-xtensa.c:5969
 #, c-format
 msgid "    ops were: "
 msgstr "los ops fueron:"
 
-#: config/tc-xtensa.c:6079
+#: config/tc-xtensa.c:5971
 #, c-format
 msgid " %s;"
 msgstr " %s;"
 
-#: config/tc-xtensa.c:6082
+#: config/tc-xtensa.c:5974
 #, c-format
 msgid "\n"
 msgstr "\n"
 
-#: config/tc-xtensa.c:6090
+#: config/tc-xtensa.c:5982
 #, c-format
 msgid "format '%s' allows %d slots, but there are %d opcodes"
 msgstr "el formato '%s' permite %d ranuras, pero hay %d códigos de operación"
 
-#: config/tc-xtensa.c:6101 config/tc-xtensa.c:6197
+#: config/tc-xtensa.c:5993 config/tc-xtensa.c:6091
 msgid "illegal resource usage in bundle"
 msgstr "se incluyó un recurso ilegal en el agregado"
 
-#: config/tc-xtensa.c:6284
+#: config/tc-xtensa.c:6178
 #, c-format
 msgid "opcodes '%s' (slot %d) and '%s' (slot %d) write the same register"
 msgstr "los códigos de operación '%s' (ranura %d) y '%s' (ranura %d) escriben en el mismo registro"
 
-#: config/tc-xtensa.c:6289
+#: config/tc-xtensa.c:6183
 #, c-format
 msgid "opcodes '%s' (slot %d) and '%s' (slot %d) write the same state"
 msgstr "los códigos de operación '%s' (ranura %d) y '%s' (ranura %d) escriben en el mismo estado"
 
-#: config/tc-xtensa.c:6294
+#: config/tc-xtensa.c:6188
 #, c-format
 msgid "opcodes '%s' (slot %d) and '%s' (slot %d) write the same queue"
 msgstr "los códigos de operación '%s' (ranura %d) y '%s' (ranura %d) escriben en la misma cola"
 
-#: config/tc-xtensa.c:6299
+#: config/tc-xtensa.c:6193
 #, c-format
 msgid "opcodes '%s' (slot %d) and '%s' (slot %d) both have volatile queue accesses"
 msgstr "ambos códigos de operación '%s' (ranura %d) y '%s' (ranura %d) tienen acceso volatile a la cola"
 
-#: config/tc-xtensa.c:6315
+#: config/tc-xtensa.c:6209
 msgid "multiple branches or jumps in the same bundle"
 msgstr "múltiples ramificaciones o saltos en el mismo agregado"
 
-#: config/tc-xtensa.c:6780
+#: config/tc-xtensa.c:6664
 msgid "cannot assemble into a literal fragment"
 msgstr "no se puede ensamblar en un fragmento literal"
 
-#: config/tc-xtensa.c:6782
+#: config/tc-xtensa.c:6666
 msgid "..."
 msgstr "..."
 
-#: config/tc-xtensa.c:7336
+#: config/tc-xtensa.c:7175
 msgid "instruction sequence (write a0, branch, retw) may trigger hardware errata"
 msgstr "la secuencia de instrucción (write a0, branch, retw) puede activar errores de hardware"
 
-#: config/tc-xtensa.c:7444
+#: config/tc-xtensa.c:7285
 msgid "branching or jumping to a loop end may trigger hardware errata"
 msgstr "la ramificación o salto al final de un ciclo puede activar errores de hardware"
 
-#: config/tc-xtensa.c:7542
+#: config/tc-xtensa.c:7384
 msgid "loop end too close to another loop end may trigger hardware errata"
 msgstr "el final de un ciclo demasiado cerca a otro final de ciclo puede activar errores de hardware"
 
-#: config/tc-xtensa.c:7551
+#: config/tc-xtensa.c:7393
 #, c-format
 msgid "fr_var %lu < length %d"
 msgstr "fr_var %lu < longitud %d"
 
-#: config/tc-xtensa.c:7724
+#: config/tc-xtensa.c:7564
 msgid "loop containing less than three instructions may trigger hardware errata"
 msgstr "un ciclo que contiene menos de tres instrucciones puede activar errores de hardware"
 
-#: config/tc-xtensa.c:7795
+#: config/tc-xtensa.c:7636
 msgid "undecodable instruction in instruction frag"
 msgstr "instrucción no decodificable en la instrucción frag"
 
-#: config/tc-xtensa.c:7903
+#: config/tc-xtensa.c:7745
 msgid "invalid empty loop"
 msgstr "ciclo vacío inválido"
 
-#: config/tc-xtensa.c:7908
+#: config/tc-xtensa.c:7750
 msgid "loop target does not follow loop instruction in section"
 msgstr "el objetivo del ciclo no sigue la instrucción loop en la sección"
 
-#: config/tc-xtensa.c:8471
+#: config/tc-xtensa.c:8287
 msgid "bad relaxation state"
 msgstr "estado de relajación erróneo"
 
-#: config/tc-xtensa.c:8529
+#: config/tc-xtensa.c:8345
 #, c-format
 msgid "fr_var (%ld) < length (%d)"
 msgstr "fr_var (%ld) < longitud (%d)"
 
-#: config/tc-xtensa.c:9038
+#: config/tc-xtensa.c:8846
 msgid "internal error: relaxation failed"
 msgstr "error interno: la relajación falló"
 
-#: config/tc-xtensa.c:9044
+#: config/tc-xtensa.c:8852
 msgid "internal error: relaxation requires too many steps"
 msgstr "error interno: la relajación requiere demasiados pasos"
 
-#: config/tc-xtensa.c:9218
+#: config/tc-xtensa.c:9027
 msgid "invalid relaxation fragment result"
 msgstr "resultado de fragmento de relajación inválido"
 
-#: config/tc-xtensa.c:9300
+#: config/tc-xtensa.c:9107
 msgid "unable to widen instruction"
 msgstr "no se puede ensanchar la instrucción"
 
-#: config/tc-xtensa.c:9442
+#: config/tc-xtensa.c:9250
 msgid "multiple literals in expansion"
 msgstr "literales múltiples en la expansión"
 
-#: config/tc-xtensa.c:9446
+#: config/tc-xtensa.c:9254
 msgid "no registered fragment for literal"
 msgstr "no hay un fragmento registrado para la literal"
 
-#: config/tc-xtensa.c:9448
+#: config/tc-xtensa.c:9256
 msgid "number of literal tokens != 1"
 msgstr "número de elementos literales != 1"
 
-#: config/tc-xtensa.c:9592 config/tc-xtensa.c:9598
+#: config/tc-xtensa.c:9400 config/tc-xtensa.c:9406
 #, c-format
 msgid "unresolved loop target symbol: %s"
 msgstr "símbolo objetivo del ciclo sin resolver: %s"
 
-#: config/tc-xtensa.c:9704
+#: config/tc-xtensa.c:9512
 #, c-format
 msgid "invalid expression evaluation type %d"
 msgstr "tipo de evaluación expresión %d inválido"
 
-#: config/tc-xtensa.c:9726
+#: config/tc-xtensa.c:9534
 msgid "loop too long for LOOP instruction"
 msgstr "ciclo demasiado largo para la instrucción LOOP"
 
-#: config/tc-xtensa.c:10027
+#: config/tc-xtensa.c:9805
 #, c-format
 msgid "fixes not all moved from %s"
 msgstr "no se movieron todas las composturas de %s"
 
-#: config/tc-xtensa.c:10169
+#: config/tc-xtensa.c:9947
 msgid "literal pool location required for text-section-literals; specify with .literal_position"
 msgstr "se requiere la ubicación del conjunto de literales para text-section-literals; especifique con .literal_position"
 
-#: config/tc-xtensa.c:10678
+#: config/tc-xtensa.c:10456
 #, c-format
 msgid "could not create section %s"
 msgstr "no se puede crear la sección %s"
 
-#: config/tc-xtensa.c:10680
+#: config/tc-xtensa.c:10458
 #, c-format
 msgid "invalid flag combination on section %s"
 msgstr "combinación de opciones inválida en la sección %s"
 
-#: config/tc-xtensa.c:11066
+#: config/tc-xtensa.c:10844
 msgid "too many operands in instruction"
 msgstr "demasiados operandos en la instrucción"
 
-#: config/tc-xtensa.c:11300
+#: config/tc-xtensa.c:11078
 #, c-format
 msgid "invalid symbolic operand %d on '%s'"
 msgstr "operando simbólico %d inválido en '%s'"
 
-#: config/tc-xtensa.c:11369 config/tc-xtensa.c:11443
+#: config/tc-xtensa.c:11147 config/tc-xtensa.c:11221
 msgid "operand number mismatch"
 msgstr "no coinciden el número de operandos"
 
-#: config/tc-xtensa.c:11372
+#: config/tc-xtensa.c:11150
 msgid "cannot encode opcode"
 msgstr "no se codificar el código de operación"
 
-#: config/tc-xtensa.c:11447
+#: config/tc-xtensa.c:11225
 #, c-format
 msgid "cannot encode opcode \"%s\" in the given format \"%s\""
 msgstr "no se codificar el código de operación \"%s\" en el formato dado \"%s\""
 
-#: config/tc-xtensa.c:11471
+#: config/tc-xtensa.c:11250
 #, c-format
 msgid "xtensa-isa failure: %s"
 msgstr "fallo xtensa-isa: %s"
 
-#: config/tc-xtensa.c:11504
+#: config/tc-xtensa.c:11283
 msgid "invalid opcode"
 msgstr "código de operación inválido"
 
-#: config/tc-xtensa.c:11510
+#: config/tc-xtensa.c:11289
 msgid "too few operands"
 msgstr "muy pocos operandos"
 
-#: config/tc-xtensa.c:11637 config/tc-xtensa.c:11645
+#: config/tc-xtensa.c:11416 config/tc-xtensa.c:11424
 msgid "out of memory"
 msgstr "memoria agotada"
 
-#: config/tc-xtensa.c:11757
+#: config/tc-xtensa.c:11536
 msgid "instruction with constant operands does not fit"
 msgstr "la instrucción con operandos constantes no cabe"
 
-#: config/tc-xtensa.c:11766 config/tc-xtensa.c:11787
+#: config/tc-xtensa.c:11545 config/tc-xtensa.c:11566
 #, c-format
 msgid "invalid operand %d on '%s'"
 msgstr "operando %d inválido en '%s'"
 
-#: config/tc-xtensa.c:11778
+#: config/tc-xtensa.c:11557
 msgid "invalid subtract operand"
 msgstr "operando de sustracción inválido"
 
-#: config/tc-xtensa.c:11792
+#: config/tc-xtensa.c:11571
 #, c-format
 msgid "invalid expression for operand %d on '%s'"
 msgstr "expresión inválida para el operando %d en '%s'"
 
-#: config/tc-xtensa.c:11822
+#: config/tc-xtensa.c:11601
 msgid "cannot decode instruction format"
 msgstr "no se puede codificar el formato de instrucción"
 
-#: config/tc-xtensa.c:11981
+#: config/tc-xtensa.c:11760
 msgid "ignoring extra '-rename-section' delimiter ':'"
 msgstr "se ignora el delimitador '-rename-section' ':' extra"
 
-#: config/tc-xtensa.c:11986
+#: config/tc-xtensa.c:11765
 #, c-format
 msgid "ignoring invalid '-rename-section' specification: '%s'"
 msgstr "se ignora la especificación '-rename-section' inválida: %s"
 
-#: config/tc-xtensa.c:11997
+#: config/tc-xtensa.c:11776
 #, c-format
 msgid "section %s renamed multiple times"
 msgstr "se renombró la sección %s varias veces"
 
-#: config/tc-xtensa.c:11999
+#: config/tc-xtensa.c:11778
 #, c-format
 msgid "multiple sections remapped to output section %s"
 msgstr "secciones múltiples remapeadas a la sección de salida %s"
 
-#: config/tc-z8k.c:271
+#: config/tc-z8k.c:268
 #, c-format
 msgid "register rr%d out of range"
 msgstr "registro rr%d fuera de rango"
 
-#: config/tc-z8k.c:273
+#: config/tc-z8k.c:270
 #, c-format
 msgid "register rr%d does not exist"
 msgstr "el registro rr%d no existe"
 
-#: config/tc-z8k.c:283
+#: config/tc-z8k.c:280
 #, c-format
 msgid "register rh%d out of range"
 msgstr "registro rh%d fuera de rango"
 
-#: config/tc-z8k.c:293
+#: config/tc-z8k.c:290
 #, c-format
 msgid "register rl%d out of range"
 msgstr "registro rl%d fuera de rango"
 
-#: config/tc-z8k.c:304
+#: config/tc-z8k.c:301
 #, c-format
 msgid "register rq%d out of range"
 msgstr "registro rq%d fuera de rango"
 
-#: config/tc-z8k.c:306
+#: config/tc-z8k.c:303
 #, c-format
 msgid "register rq%d does not exist"
 msgstr "el registro rq%d no existe"
 
-#: config/tc-z8k.c:316
+#: config/tc-z8k.c:313
 #, c-format
 msgid "register r%d out of range"
 msgstr "registro r%d fuera de rango"
 
-#: config/tc-z8k.c:357
+#: config/tc-z8k.c:354
 #, c-format
 msgid "expected %c"
 msgstr "se esperaba %c"
 
-#: config/tc-z8k.c:372
+#: config/tc-z8k.c:369
 #, c-format
 msgid "register is wrong size for a word %s"
 msgstr "el registro tiene el tamaño erróneo para un word %s"
 
-#: config/tc-z8k.c:386
+#: config/tc-z8k.c:383
 #, c-format
 msgid "register is wrong size for address %s"
 msgstr "el registro tiene el tamaño erróneo para la dirección %s"
 
-#: config/tc-z8k.c:520
+#: config/tc-z8k.c:517
 #, c-format
 msgid "unknown interrupt %s"
 msgstr "opción %s desconocida"
 
 #. No interrupt type specified, opcode won't do anything.
-#: config/tc-z8k.c:543
+#: config/tc-z8k.c:540
 msgid "opcode has no effect"
 msgstr "el código de operación no tiene efecto"
 
-#: config/tc-z8k.c:654
+#: config/tc-z8k.c:651
 msgid "Missing ) in ra(rb)"
 msgstr "Falta un ) en ra(rb)"
 
-#: config/tc-z8k.c:734 config/tc-z8k.c:773
+#: config/tc-z8k.c:731 config/tc-z8k.c:770
 #, c-format
 msgid "invalid condition code '%s'"
 msgstr "código de condición '%s' inválido"
 
-#: config/tc-z8k.c:746
+#: config/tc-z8k.c:743
 #, c-format
 msgid "invalid flag '%s'"
 msgstr "etiqueta '%s' inválida"
 
-#: config/tc-z8k.c:900 config/tc-z8k.c:906
+#: config/tc-z8k.c:897 config/tc-z8k.c:903
 msgid "invalid indirect register size"
 msgstr "tamaño de registro indirecto inválido"
 
-#: config/tc-z8k.c:923 config/tc-z8k.c:1070 config/tc-z8k.c:1075
+#: config/tc-z8k.c:920 config/tc-z8k.c:1068 config/tc-z8k.c:1073
 msgid "invalid control register name"
 msgstr "nombre de registro de control inválido"
 
-#: config/tc-z8k.c:1059
+#: config/tc-z8k.c:1057
 msgid "immediate must be 1 or 2"
 msgstr "el inmediato debe ser 1 o 2"
 
-#: config/tc-z8k.c:1062
+#: config/tc-z8k.c:1060
 msgid "immediate 1 or 2 expected"
 msgstr "se esperaba un inmediato 1 o 2"
 
-#: config/tc-z8k.c:1093
+#: config/tc-z8k.c:1091
 msgid "can't use R0 here"
 msgstr "no se puede usar R0 aquí"
 
-#: config/tc-z8k.c:1255
+#: config/tc-z8k.c:1249
 msgid "Can't find opcode to match operands"
 msgstr "No se puede encontrar el código de operación que coincida con los operandos"
 
-#: config/tc-z8k.c:1366
+#: config/tc-z8k.c:1348
 #, c-format
 msgid "invalid architecture -z%s"
 msgstr "arquitectura -z%s inválida"
 
-#: config/tc-z8k.c:1386
+#: config/tc-z8k.c:1368
 #, c-format
 msgid ""
 " Z8K options:\n"
@@ -11769,42 +11362,37 @@ msgstr ""
 "  -z8002                  genera código sin segmentar\n"
 "  -linkrelax              crea código relajable por el enlazador\n"
 
-#: config/tc-z8k.c:1398
+#: config/tc-z8k.c:1380
 #, c-format
 msgid "call to md_convert_frag\n"
 msgstr "llamada a md_convert_frag\n"
 
-#: config/tc-z8k.c:1434 config/tc-z8k.c:1455 config/tc-z8k.c:1476
+#: config/tc-z8k.c:1487 config/tc-z8k.c:1527 config/tc-z8k.c:1550
 msgid "cannot branch to odd address"
 msgstr "No se puede ramificar a una dirección impar"
 
-#: config/tc-z8k.c:1438 config/tc-z8k.c:1459
+#: config/tc-z8k.c:1491 config/tc-z8k.c:1554
 msgid "relative jump out of range"
 msgstr "salto relativo fuera de rango"
 
-#: config/tc-z8k.c:1479
-msgid "relative call out of range"
-msgstr "llamada relativa fuera de rango"
-
 #: config/tc-z8k.c:1509
 msgid "relative address out of range"
 msgstr "dirección relativa fuera de rango"
 
-#: config/tc-z8k.c:1520
+#: config/tc-z8k.c:1530
+msgid "relative call out of range"
+msgstr "llamada relativa fuera de rango"
+
+#: config/tc-z8k.c:1562
 #, c-format
-msgid "md_apply_fix3: unknown r_type 0x%x\n"
-msgstr "md_apply_fix3: r_type desconocido: 0x%x\n"
+msgid "md_apply_fix: unknown r_type 0x%x\n"
+msgstr "md_apply_fix: r_type 0x%x desconocido\n"
 
-#: config/tc-z8k.c:1532
+#: config/tc-z8k.c:1574
 #, c-format
 msgid "call to md_estimate_size_before_relax\n"
 msgstr "llamada a md_estimate_size_before_relax\n"
 
-#: config/tc-z8k.c:1569
-#, c-format
-msgid "Can't subtract symbols in different sections %s %s"
-msgstr "No se pueden sustraer los símbolos en secciones diferentes %s %s"
-
 #: depend.c:193
 #, c-format
 msgid "can't open `%s' for writing"
@@ -11815,61 +11403,70 @@ msgstr "no se puede abrir `%s' para escritura"
 msgid "can't close `%s'"
 msgstr "no se puede cerrar `%s'"
 
-#: dw2gencfi.c:262
+#: dw2gencfi.c:258
 #, c-format
 msgid "register save offset not a multiple of %u"
 msgstr "el desplazamiento del registro save no es un múltiplo de %u"
 
-#: dw2gencfi.c:345
+#: dw2gencfi.c:341
 msgid "CFI state restore without previous remember"
 msgstr "se usó un state restore de CFI sin un remember previo"
 
-#: dw2gencfi.c:391
+#: dw2gencfi.c:387
 msgid "missing separator"
 msgstr "falta el separador"
 
-#: dw2gencfi.c:413 dw2gencfi.c:431
+#: dw2gencfi.c:409 dw2gencfi.c:427
 msgid "bad register expression"
 msgstr "expresión de registro inválida"
 
-#: dw2gencfi.c:453 dw2gencfi.c:554
+#: dw2gencfi.c:449 dw2gencfi.c:551
 msgid "CFI instruction used without previous .cfi_startproc"
 msgstr "se utilizó la instrucción CFI sin un .cfi_startproc precedente"
 
-#: dw2gencfi.c:586
+#: dw2gencfi.c:587
 msgid "previous CFI entry not closed (missing .cfi_endproc)"
 msgstr "la entrada CFI previa no está cerrada (falta un .cfi_endproc)"
 
-#: dw2gencfi.c:620
+#: dw2gencfi.c:622
 msgid ".cfi_endproc without corresponding .cfi_startproc"
 msgstr ".cfi_endproc sin un .cfi_startproc correspondiente"
 
-#: dw2gencfi.c:1026
+#: dw2gencfi.c:1031
 msgid "open CFI at the end of file; missing .cfi_endproc directive"
 msgstr "un CFI abierto al final del fichero; falta una directiva .cfi_endproc"
 
-#: dwarf2dbg.c:458 dwarf2dbg.c:487
+#: dwarf2dbg.c:523 dwarf2dbg.c:549
 msgid "file number less than one"
 msgstr "número de fichero menor que uno"
 
-#: dwarf2dbg.c:464
+#: dwarf2dbg.c:529
 #, c-format
 msgid "file number %ld already allocated"
 msgstr "el número de fichero %ld ya está reservado"
 
-#: dwarf2dbg.c:492 dwarf2dbg.c:1025
+#: dwarf2dbg.c:554 dwarf2dbg.c:1169
 #, c-format
 msgid "unassigned file number %ld"
 msgstr "número de fichero %ld sin asignar"
 
-#: dwarf2dbg.c:1090 dwarf2dbg.c:1281
+#: dwarf2dbg.c:622
+msgid "is_stmt value not 0 or 1"
+msgstr "el valor is_stmt no es 0 ó 1"
+
+#: dwarf2dbg.c:634
+msgid "isa number less than zero"
+msgstr "número isa menor que uno"
+
+#: dwarf2dbg.c:640
+#, c-format
+msgid "unknown .loc sub-directive `%s'"
+msgstr "sub-directiva .loc `%s' desconocida"
+
+#: dwarf2dbg.c:1234 dwarf2dbg.c:1428
 msgid "internal error: unknown dwarf2 format"
 msgstr "error interno: formato dwarf2 desconocido"
 
-#: dwarf2dbg.c:1438 dwarf2dbg.c:1446 dwarf2dbg.c:1454 dwarf2dbg.c:1475
-msgid "dwarf2 is not supported for this object file format"
-msgstr "dwarf2 no tiene soporte para este formato de fichero objeto"
-
 #: ecoff.c:1552
 #, c-format
 msgid "string too big (%lu bytes)"
@@ -12023,8 +11620,8 @@ msgstr "no es posible manejar un .file dentro de una secci
 msgid ".loc before .file"
 msgstr ".loc antes de .file"
 
-#: ecoff.c:3355 read.c:1446 read.c:1552 read.c:2226 read.c:2840 read.c:4925
-#: symbols.c:358 symbols.c:457
+#: ecoff.c:3355 read.c:1473 read.c:1579 read.c:2256 read.c:2803 symbols.c:327
+#: symbols.c:423
 #, c-format
 msgid "symbol `%s' is already defined"
 msgstr "el símbolo `%s' ya está definido"
@@ -12065,91 +11662,91 @@ msgstr "falta un .end o un .bend al final del fichero"
 msgid "GP prologue size exceeds field size, using 0 instead"
 msgstr "el tamaño del prólogo GP excede el tamaño del campo, se utiliza 0 en su lugar"
 
-#: expr.c:82 read.c:3209
+#: expr.c:82 read.c:3351
 msgid "bignum invalid"
 msgstr "bignum inválido"
 
-#: expr.c:84 read.c:3211 read.c:3552 read.c:4426
+#: expr.c:84 read.c:3353 read.c:3702 read.c:4550
 msgid "floating point number invalid"
 msgstr "número de coma flotante inválido"
 
-#: expr.c:232
+#: expr.c:203
 msgid "bad floating-point constant: exponent overflow"
 msgstr "constante de coma flotante errónea: desbordamiento del exponente"
 
-#: expr.c:236
+#: expr.c:207
 #, c-format
 msgid "bad floating-point constant: unknown error code=%d"
 msgstr "constante de coma flotante errónea: código de error desconocido=%d"
 
-#: expr.c:412
+#: expr.c:383
 msgid "a bignum with underscores may not have more than 8 hex digits in any word"
 msgstr "un número grande con subrayados no puede tener más de 8 dígitos hexadecimales en cualquier palabra"
 
-#: expr.c:435
+#: expr.c:406
 msgid "a bignum with underscores must have exactly 4 words"
 msgstr "un número grande con subrayados debe tener exactamente 4 palabras"
 
 #. Either not seen or not defined.
 #. @@ Should print out the original string instead of
 #. the parsed number.
-#: expr.c:558
+#: expr.c:529
 #, c-format
 msgid "backward ref to unknown label \"%d:\""
 msgstr "referencia hacia atrás a la etiqueta desconocida \"%d:\""
 
-#: expr.c:676
+#: expr.c:647
 msgid "character constant too large"
 msgstr "la constante de carácter es demasiado grande"
 
-#: expr.c:922
+#: expr.c:893
 #, c-format
 msgid "expr.c(operand): bad atof_generic return val %d"
 msgstr "expr.c(operando): valor de devolución %d atof_generic erróneo"
 
-#: expr.c:980
+#: expr.c:954
 #, c-format
 msgid "missing '%c'"
 msgstr "falta un '%c'"
 
-#: expr.c:991 read.c:3910
+#: expr.c:965 read.c:4034
 msgid "EBCDIC constants are not supported"
 msgstr "las constantes EBCDIC no tienen soporte"
 
-#: expr.c:1112
+#: expr.c:1082
 #, c-format
 msgid "Unary operator %c ignored because bad operand follows"
 msgstr "Se ignora el operador unario %c porque hay un operando erróneo a continuación"
 
-#: expr.c:1158 expr.c:1183
+#: expr.c:1128 expr.c:1153
 msgid "syntax error in .startof. or .sizeof."
 msgstr "error sintáctico en .startof. o .sizeof."
 
-#: expr.c:1685
+#: expr.c:1665
 msgid "missing operand; zero assumed"
 msgstr "falta un operando; se asume cero"
 
-#: expr.c:1720
+#: expr.c:1700
 msgid "left operand is a bignum; integer 0 assumed"
 msgstr "el operando izquierdo es un número grande; se asume el entero 0"
 
-#: expr.c:1722
+#: expr.c:1702
 msgid "left operand is a float; integer 0 assumed"
 msgstr "el operando izquierdo es un número de coma flotante; se asume el entero 0"
 
-#: expr.c:1731
+#: expr.c:1711
 msgid "right operand is a bignum; integer 0 assumed"
 msgstr "el operando derecho es un número grande; se asume el entero 0"
 
-#: expr.c:1733
+#: expr.c:1713
 msgid "right operand is a float; integer 0 assumed"
 msgstr "el operando derecho es un número de coma flotante; se asume el entero 0"
 
-#: expr.c:1789 symbols.c:1160
+#: expr.c:1769 symbols.c:1207
 msgid "division by zero"
 msgstr "división por cero"
 
-#: expr.c:1887
+#: expr.c:1867
 msgid "operation combines symbols in different segments"
 msgstr "la operación combina símbolos en segmentos diferentes"
 
@@ -12161,7 +11758,7 @@ msgstr "se intent
 msgid "attempt to allocate data in common section"
 msgstr "se intentó alojar datos en la sección común"
 
-#: frags.c:105
+#: frags.c:112
 #, c-format
 msgid "can't extend frag %u chars"
 msgstr "no se pueden extender %u caracteres de fragmento"
@@ -12178,30 +11775,30 @@ msgstr "no se pueden extender %u caracteres de fragmento"
 #. line here (assuming of course that we actually have a line of
 #. input to read), so that it can be displayed in the listing
 #. that is produced at the end of the assembly.
-#: input-file.c:147 input-scrub.c:239 listing.c:332
+#: input-file.c:141 input-scrub.c:238 listing.c:332
 msgid "{standard input}"
 msgstr "{entrada estándar}"
 
-#: input-file.c:155 input-file.c:166
+#: input-file.c:147 input-file.c:156
 #, c-format
 msgid "Can't open %s for reading"
 msgstr "No se puede abrir %s para lectura"
 
-#: input-file.c:231 input-file.c:260
+#: input-file.c:219 input-file.c:246
 #, c-format
 msgid "Can't read from %s"
 msgstr "No se puede leer de %s"
 
-#: input-file.c:272
+#: input-file.c:256
 #, c-format
 msgid "Can't close %s"
 msgstr "No se puede cerrar %s"
 
-#: input-scrub.c:264
+#: input-scrub.c:263
 msgid "macros nested too deeply"
 msgstr "macros anidadas con demasiada profundidad"
 
-#: input-scrub.c:366 input-scrub.c:388
+#: input-scrub.c:365 input-scrub.c:387
 msgid "partial line at end of file ignored"
 msgstr "se ignora la línea parcial al final del fichero"
 
@@ -12218,75 +11815,125 @@ msgstr "Aviso:"
 msgid "Error:"
 msgstr "Error:"
 
-#: listing.c:1092
+#: listing.c:1089
 #, c-format
 msgid "can't open list file: %s"
 msgstr "no se puede abrir el fichero de lista: %s"
 
-#: listing.c:1114
+#: listing.c:1109
 #, c-format
 msgid "error closing list file: %s"
 msgstr "error al cerrar el fichero de lista: %s"
 
-#: listing.c:1187
+#: listing.c:1182
 msgid "strange paper height, set to no form"
 msgstr "tamaño de papel extraño, se establece a sin forma"
 
-#: listing.c:1251
+#: listing.c:1246
 msgid "new line in title"
 msgstr "línea nueva en el título"
 
 #. Turns the next expression into a string.
-#: macro.c:391
+#: macro.c:436
 #, no-c-format
 msgid "% operator needs absolute expression"
 msgstr "el operador % necesita una expresión absoluta"
 
-#: macro.c:555
-msgid "unexpected end of file in macro definition"
-msgstr "fin de fichero inesperado en la definición de macro"
+#: macro.c:558
+#, c-format
+msgid "Missing parameter qualifier for `%s' in macro `%s'"
+msgstr "Falta el calificador de parámetro para `%s' en la macro `%s'"
+
+#: macro.c:568
+#, c-format
+msgid "`%s' is not a valid parameter qualifier for `%s' in macro `%s'"
+msgstr "`%s' no es un calificador de parámetro válido para `%s' en la macro `%s'"
+
+#: macro.c:585
+#, c-format
+msgid "Pointless default value for required parameter `%s' in macro `%s'"
+msgstr "Valor por defecto sin sentido para el parámetro requerido `%s' en la macro `%s'"
+
+#: macro.c:597
+#, c-format
+msgid "A parameter named `%s' already exists for macro `%s'"
+msgstr "Ya existe un parámetro llamado `%s' para la macro `%s'"
+
+#: macro.c:634
+#, c-format
+msgid "Reserved word `%s' used as parameter in macro `%s'"
+msgstr "Se usó la palabra reservada `%s' como un parámetro en la macro `%s'"
+
+#: macro.c:672
+#, c-format
+msgid "unexpected end of file in macro `%s' definition"
+msgstr "fin de fichero inesperado en la definición de macro `%s'"
 
-#: macro.c:564
-msgid "missing ) after formals"
-msgstr "falta ) después de los formales"
+#: macro.c:684
+#, c-format
+msgid "missing `)' after formals in macro definition `%s'"
+msgstr "falta `)' después de los formales en la definición de macro `%s'"
 
-#: macro.c:579
+#: macro.c:699
 msgid "Missing macro name"
 msgstr "Falta el nombre de macro"
 
-#: macro.c:588
-msgid "Bad macro parameter list"
-msgstr "Lista de parámetros de errónea"
+#: macro.c:708
+#, c-format
+msgid "Bad parameter list for macro `%s'"
+msgstr "Lista de parámetros errónea para la macro `%s'"
+
+#: macro.c:714
+#, c-format
+msgid "Macro `%s' was already defined"
+msgstr "La macro `%s' ya está definida"
 
-#: macro.c:595
-msgid "Macro with this name was already defined"
-msgstr "Ya estaba definida una macro con ese nombre"
+#: macro.c:837 macro.c:839
+msgid "missing `)'"
+msgstr "falta un `)'"
 
-#: macro.c:712
-msgid "missplaced )"
-msgstr ") mal colocado"
+#: macro.c:934
+#, c-format
+msgid "`%s' was already used as parameter (or another local) name"
+msgstr "Ya se usó `%s' como nombre (u otro local) de parámetro"
 
-#: macro.c:965
+#: macro.c:1093
 msgid "confusion in formal parameters"
 msgstr "confusión en los parámetros formales"
 
-#: macro.c:970
-msgid "macro formal argument does not exist"
-msgstr "el argumento formal de macro no existe"
+#: macro.c:1100
+#, c-format
+msgid "Parameter named `%s' does not exist for macro `%s'"
+msgstr "El parámetro nombrado '%s' no existe para la macro `%s'"
+
+#: macro.c:1108
+#, c-format
+msgid "Value for parameter `%s' of macro `%s' was already specified"
+msgstr "Ya se había especificado el valor para el parámetro `%s' de la macro `%s'"
 
-#: macro.c:985
+#: macro.c:1124
 msgid "can't mix positional and keyword arguments"
 msgstr "no se pueden mezclar argumentos posicionales y palabras clave"
 
-#: macro.c:993
+#: macro.c:1135
 msgid "too many positional arguments"
 msgstr "demasiados argumentos posicionales"
 
-#: macro.c:1153
+#: macro.c:1183
+#, c-format
+msgid "Missing value for required parameter `%s' of macro `%s'"
+msgstr "Falta el valor para el parámetro requerido `%s' de la macro `%s'"
+
+#: macro.c:1320
+#, c-format
+msgid "Attempt to purge non-existant macro `%s'"
+msgstr "se intentó purgar la macro inexistente `%s'"
+
+#: macro.c:1339
 msgid "unexpected end of file in irp or irpc"
 msgstr "fin de fichero inesperado en irp ó irpc"
 
-#: macro.c:1161
+#: macro.c:1347
 msgid "missing model parameter"
 msgstr "falta el parámetro modelo"
 
@@ -12295,435 +11942,448 @@ msgstr "falta el par
 msgid "Assembler messages:\n"
 msgstr "Mensajes del ensamblador:\n"
 
-#: messages.c:212
+#: messages.c:206
 #, c-format
 msgid "Warning: "
 msgstr "Aviso: "
 
-#: messages.c:313
+#: messages.c:307
 #, c-format
 msgid "Error: "
 msgstr "Error: "
 
-#: messages.c:408 messages.c:428
+#: messages.c:402 messages.c:422
 #, c-format
 msgid "Fatal error: "
 msgstr "Error fatal: "
 
-#: messages.c:443
+#: messages.c:437
 #, c-format
 msgid "Internal error!\n"
 msgstr "¡Error interno!\n"
 
-#: messages.c:445
+#: messages.c:439
 #, c-format
 msgid "Assertion failure in %s at %s line %d.\n"
 msgstr "Falla de afirmación en %s en %s línea %d.\n"
 
-#: messages.c:448
+#: messages.c:442
 #, c-format
 msgid "Assertion failure at %s line %d.\n"
 msgstr "Falla de afirmación en %s línea %d.\n"
 
-#: messages.c:449 messages.c:466
+#: messages.c:443 messages.c:460
 #, c-format
 msgid "Please report this bug.\n"
 msgstr "Por favor reporte este bicho.\n"
 
-#: messages.c:461
+#: messages.c:455
 #, c-format
 msgid "Internal error, aborting at %s line %d in %s\n"
 msgstr "Error interno, abortando en %s línea %d en %s\n"
 
-#: messages.c:464
+#: messages.c:458
 #, c-format
 msgid "Internal error, aborting at %s line %d\n"
 msgstr "Error interno, abortando en %s línea %d\n"
 
-#: messages.c:535
+#: messages.c:507
 #, c-format
 msgid "%s out of range (%d is not between %d and %d)"
 msgstr "%s fuera de rango (%d no está entre %d y %d)"
 
 #. xgettext:c-format.
-#: messages.c:559
+#: messages.c:530
 #, c-format
 msgid "%s out of range (0x%s is not between 0x%s and 0x%s)"
 msgstr "%s fuera de rango (0x%s no está entre 0x%s y 0x%s)"
 
-#: output-file.c:47
+#: output-file.c:39
 #, c-format
 msgid "can't open a bfd on stdout %s"
 msgstr "no se puede abrir un bfd en la salida estándar %s"
 
-#: output-file.c:52
+#: output-file.c:44
 #, c-format
 msgid "Selected target format '%s' unknown"
 msgstr "Formato de objetivo seleccionado '%s' desconocido"
 
-#: output-file.c:54 output-file.c:117
+#: output-file.c:46
 #, c-format
 msgid "FATAL: can't create %s"
 msgstr "FATAL: no se puede crear %s"
 
-#: output-file.c:74 output-file.c:81
+#: output-file.c:63
 #, c-format
 msgid "FATAL: can't close %s\n"
 msgstr "FATAL: no se puede cerrar %s\n"
 
-#: output-file.c:130
-#, c-format
-msgid "FATAL: can't close %s"
-msgstr "FATAL: no se puede cerrar %s"
-
-#: output-file.c:150
-msgid "Failed to emit an object byte"
-msgstr "Falló al emitir un byte objeto"
-
-#: output-file.c:151
-msgid "can't continue"
-msgstr "no se puede continuar"
+#: read.c:450
+msgid "bad or irreducible absolute expression"
+msgstr "expresión absoluta errónea o irreducible"
 
-#: read.c:453
+#: read.c:476
 #, c-format
 msgid "error constructing %s pseudo-op table: %s"
 msgstr "error al construir la tabla de pseudo-operadores %s: %s"
 
-#: read.c:819
+#: read.c:896
 #, c-format
 msgid "unknown pseudo-op: `%s'"
 msgstr "pseudo-operador desconocido: `%s'"
 
-#: read.c:950
+#: read.c:983
 #, c-format
 msgid "label \"%d$\" redefined"
 msgstr "etiqueta \"%d$\" redefinida"
 
-#: read.c:1181
+#: read.c:1214
 msgid ".abort detected.  Abandoning ship."
 msgstr "se detectó .abort.  Abandonando la nave."
 
-#: read.c:1199 read.c:2398
+#: read.c:1232 read.c:2406
 msgid "ignoring fill value in absolute section"
 msgstr "se ignora el valor de relleno en la sección absoluta"
 
-#: read.c:1293
+#: read.c:1322
 #, c-format
 msgid "alignment too large: %u assumed"
 msgstr "la alineación es demasiado grande: se asume %u"
 
-#: read.c:1325
+#: read.c:1354
 msgid "expected fill pattern missing"
 msgstr "falta el patrón de relleno esperado"
 
-#: read.c:1430
+#: read.c:1457
 msgid "missing size expression"
 msgstr "falta una expresión de tamaño"
 
-#: read.c:1436
+#: read.c:1463
 #, c-format
 msgid "size (%ld) out of range, ignored"
 msgstr "tamaño (%ld) fuera de rango, se ignora"
 
-#: read.c:1456
+#: read.c:1483
 #, c-format
 msgid "size of \"%s\" is already %ld; not changing to %ld"
 msgstr "la longitud de \"%s\" ya es %ld; no se cambia a %ld"
 
 #. Some of the back ends can't deal with non-positive line numbers.
-#. Besides, it's silly.
-#: read.c:1677
+#. Besides, it's silly.  GCC however will generate a line number of
+#. zero when it is pre-processing builtins for assembler-with-cpp files:
+#.
+#. # 0 "<built-in>"
+#.
+#. We do not want to barf on this, especially since such files are used
+#. in the GCC and GDB testsuites.  So we check for negative line numbers
+#. rather than non-positive line numbers.
+#: read.c:1712
 #, c-format
 msgid "line numbers must be positive; line number %d rejected"
 msgstr "los números de línea deben ser positivos; se rechazó el número de línea %d."
 
-#: read.c:1704
+#: read.c:1739
 msgid "start address not supported"
 msgstr "la dirección de inicio no tiene soporte"
 
-#: read.c:1713
+#: read.c:1748
 msgid ".err encountered"
 msgstr "se encontró .err"
 
-#: read.c:1729
+#: read.c:1764
 msgid ".error directive invoked in source file"
 msgstr "se invocó la directiva .error en el fichero fuente"
 
-#: read.c:1730
+#: read.c:1765
 msgid ".warning directive invoked in source file"
 msgstr "se invocó la directiva .warning en el fichero fuente"
 
-#: read.c:1736
+#: read.c:1771
 #, c-format
 msgid "%s argument must be a string"
 msgstr "el argumento %s debe ser una cadena"
 
-#: read.c:1768 read.c:1770
+#: read.c:1803 read.c:1805
 #, c-format
 msgid ".fail %ld encountered"
 msgstr "se encontró .fail %ld"
 
-#: read.c:1806
+#: read.c:1841
 #, c-format
 msgid ".fill size clamped to %d"
 msgstr "el tamaño de fill se restringe a %d"
 
-#: read.c:1811
+#: read.c:1846
 msgid "size negative; .fill ignored"
 msgstr "tamaño negativo; se ignora .fill"
 
-#: read.c:1817
+#: read.c:1852
 msgid "repeat < 0; .fill ignored"
 msgstr "repetición < 0; se ignora .fill"
 
-#: read.c:1974
+#: read.c:2010
 #, c-format
 msgid "unrecognized .linkonce type `%s'"
 msgstr "tipo .linkonce `%s' no reconocido"
 
-#: read.c:1987 read.c:2013
+#: read.c:2022
 msgid ".linkonce is not supported for this object file format"
 msgstr ".linkonce no tiene soporte en este formato de fichero objeto"
 
-#: read.c:2009
+#: read.c:2044
 #, c-format
 msgid "bfd_set_section_flags: %s"
 msgstr "bfd_set_section_flags: %s"
 
-#: read.c:2039
+#: read.c:2070
 #, c-format
 msgid "error setting flags for \".sbss\": %s"
 msgstr "error al establecer las opciones para \".sbss\": %s"
 
-#: read.c:2087
+#: read.c:2117
 msgid "expected alignment after size"
 msgstr "se esperaba alineación después del tamaño"
 
-#: read.c:2101
+#: read.c:2131
 msgid "alignment negative; 0 assumed"
 msgstr "alineación negativa; se asume 0"
 
-#: read.c:2332
+#: read.c:2340
 #, c-format
 msgid "attempt to redefine pseudo-op `%s' ignored"
 msgstr "se ignora el intento de redefinir el pseudo-operador `%s'"
 
-#: read.c:2393
+#: read.c:2401
 #, c-format
 msgid "invalid segment \"%s\""
 msgstr "segmento \"%s\" inválido"
 
-#: read.c:2401
+#: read.c:2409
 msgid "only constant offsets supported in absolute section"
 msgstr "sólo los desplazamientos constantes tienen soporte en la sección absoluta"
 
-#: read.c:2440
+#: read.c:2448
 msgid "MRI style ORG pseudo-op not supported"
 msgstr "el pseudo-operador ORG de estilo MRI no tiene soporte"
 
-#: read.c:2596
+#: read.c:2601
 #, c-format
 msgid "unrecognized section type `%s'"
 msgstr "tipo de sección `%s' no reconocido"
 
-#: read.c:2610
+#: read.c:2615
 msgid "absolute sections are not supported"
 msgstr "las secciones absolutas no tienen soporte"
 
-#: read.c:2625
+#: read.c:2630
 #, c-format
 msgid "unrecognized section command `%s'"
 msgstr "comando de sección `%s' no reconocido"
 
-#: read.c:2689
+#: read.c:2694
 #, c-format
 msgid ".end%c encountered without preceeding %s"
 msgstr "se encontró .end%c sin un %s precedente"
 
-#: read.c:2719
+#: read.c:2724
 #, c-format
 msgid "%s without %s"
 msgstr "%s sin %s"
 
-#: read.c:2925
+#: read.c:2951
 msgid "unsupported variable size or fill value"
 msgstr "tamaño de variable o valor de relleno sin soporte"
 
-#: read.c:2950
+#: read.c:2979
 msgid ".space repeat count is zero, ignored"
 msgstr "la cuenta de repetición .space es cero, se ignora"
 
-#: read.c:2952
+#: read.c:2981
 msgid ".space repeat count is negative, ignored"
 msgstr "la cuenta de repetición .space es negativa, se ignora"
 
-#: read.c:2981
+#: read.c:3010
 msgid "space allocation too complex in absolute section"
 msgstr "la asignación de espacio es demasiado compleja en la sección absoluta"
 
-#: read.c:2987
+#: read.c:3016
 msgid "space allocation too complex in common section"
 msgstr "la asignación de espacio es demasiado compleja en la sección común"
 
-#: read.c:3074 read.c:4152
+#: read.c:3103 read.c:4276
 #, c-format
 msgid "bad floating literal: %s"
 msgstr "literal de coma flotante errónea: %s"
 
-#: read.c:3139
+#: read.c:3243
+#, c-format
+msgid "%s: would close weakref loop: %s"
+msgstr "%s: cerraría el ciclo weakref: %s"
+
+#: read.c:3286
 #, c-format
 msgid "junk at end of line, first unrecognized character is `%c'"
 msgstr "basura al final de la línea; el primer carácter ignorado es `%c'"
 
-#: read.c:3142
+#: read.c:3289
 #, c-format
 msgid "junk at end of line, first unrecognized character valued 0x%x"
 msgstr "basura al final de la línea; el primer carácter ignorado tiene valor 0x%x"
 
-#: read.c:3205
+#: read.c:3347
 msgid "missing expression"
 msgstr "falta una expresión"
 
-#: read.c:3386
+#: read.c:3408
+#, c-format
+msgid "`%s' can't be equated to common symbol '%s'"
+msgstr "`%s' no se puede igualar al símbolo común '%s'"
+
+#: read.c:3536
 msgid "rva without symbol"
 msgstr "rva sin símbolo"
 
-#: read.c:3508
+#: read.c:3658
 msgid "attempt to store value in absolute section"
 msgstr "se intentó almacenar un valor en la sección absoluta"
 
-#: read.c:3546 read.c:4420
+#: read.c:3696 read.c:4544
 msgid "zero assumed for missing expression"
 msgstr "se asume cero para la expresión faltante"
 
-#: read.c:3558 read.c:4432 write.c:313
+#: read.c:3708 read.c:4556 write.c:265
 msgid "register value used as expression"
 msgstr "se usó un valor de registro como una expresión"
 
 #. Leading bits contain both 0s & 1s.
-#: read.c:3636
+#: read.c:3786
 #, c-format
 msgid "value 0x%lx truncated to 0x%lx"
 msgstr "el valor 0x%lx se truncó a 0x%lx"
 
-#: read.c:3652
+#: read.c:3802
 #, c-format
 msgid "bignum truncated to %d bytes"
 msgstr "se truncó el número grande a %d bytes"
 
-#: read.c:3819
+#: read.c:3943
 msgid "using a bit field width of zero"
 msgstr "se usa una anchura de campo de bit de cero"
 
-#: read.c:3827
+#: read.c:3951
 #, c-format
 msgid "field width \"%s\" too complex for a bitfield"
 msgstr "la anchura de campo \"%s\" es demasiado compleja para un campo de bits"
 
-#: read.c:3835
+#: read.c:3959
 #, c-format
 msgid "field width %lu too big to fit in %d bytes: truncated to %d bits"
 msgstr "la anchura de campo %lu es demasiado grande para caber en %d bytes: se truncó a %d bits"
 
-#: read.c:3857
+#: read.c:3981
 #, c-format
 msgid "field value \"%s\" too complex for a bitfield"
 msgstr "el valor del campo \"%s\" es demasiado complejo para un campo de bits"
 
-#: read.c:3983 read.c:4174
+#: read.c:4107 read.c:4298
 msgid "unresolvable or nonpositive repeat count; using 1"
 msgstr "cuenta de repetición sin resolver o no positiva; se utiliza 1"
 
-#: read.c:4032
+#: read.c:4156
 #, c-format
 msgid "unknown floating type type '%c'"
 msgstr "tipo de coma flotante desconocido tipo '%c'"
 
-#: read.c:4054
+#: read.c:4178
 msgid "floating point constant too large"
 msgstr "constante de coma flotante demasiado grande"
 
-#: read.c:4546
+#: read.c:4670
 msgid "strings must be placed into a section"
 msgstr "las cadenas se deben colocar en una sección"
 
-#: read.c:4596
+#: read.c:4720
 msgid "expected <nn>"
 msgstr "se esperaba <nn>"
 
 #. To be compatible with BSD 4.2 as: give the luser a linefeed!!
-#: read.c:4629 read.c:4715
+#: read.c:4753 read.c:4839
 msgid "unterminated string; newline inserted"
 msgstr "cadena sin terminar; se insertó una línea nueva"
 
-#: read.c:4723
+#: read.c:4847
 msgid "bad escaped character in string"
 msgstr "carácter escapado erróneamente en la cadena"
 
-#: read.c:4748
+#: read.c:4872
 msgid "expected address expression"
 msgstr "se esperaba una expresión de dirección"
 
-#: read.c:4767
+#: read.c:4891
 #, c-format
 msgid "symbol \"%s\" undefined; zero assumed"
 msgstr "el símbolo \"%s\" está indefinido; se asume cero"
 
-#: read.c:4770
+#: read.c:4894
 msgid "some symbol undefined; zero assumed"
 msgstr "algunos símbolos indefinidos; se asume cero"
 
-#: read.c:4786
-msgid "bad or irreducible absolute expression"
-msgstr "expresión absoluta errónea o irreducible"
-
-#: read.c:4827
+#: read.c:4930
 msgid "this string may not contain '\\0'"
 msgstr "esta cadena no puede contener '\\0'"
 
-#: read.c:4863
+#: read.c:4966
 msgid "missing string"
 msgstr "falta una cadena"
 
-#: read.c:4983
+#: read.c:5053
 #, c-format
 msgid ".incbin count zero, ignoring `%s'"
 msgstr "la cuenta .incbin es cero, se ignora `%s'"
 
-#: read.c:5009
+#: read.c:5079
 #, c-format
 msgid "file not found: %s"
 msgstr "no se encontró el fichero: %s"
 
-#: read.c:5023
+#: read.c:5093
 #, c-format
 msgid "seek to end of .incbin file failed `%s'"
 msgstr "falló la búsqueda del final del fichero .incbin `%s'"
 
-#: read.c:5034
+#: read.c:5104
 #, c-format
 msgid "skip (%ld) or count (%ld) invalid for file size (%ld)"
 msgstr "salto (%ld) o cuenta (%ld) inválidos para el tamaño del fichero (%ld)"
 
-#: read.c:5041
+#: read.c:5111
 #, c-format
 msgid "could not skip to %ld in file `%s'"
 msgstr "no se puede saltar a %ld en el fichero `%s'"
 
-#: read.c:5050
+#: read.c:5120
 #, c-format
 msgid "truncated file `%s', %ld of %ld bytes read"
 msgstr "el fichero `%s' está truncado, se leyeron %ld de %ld bytes"
 
-#: read.c:5208
+#: read.c:5278
 msgid "missing .func"
 msgstr "falta un .func"
 
-#: read.c:5225
+#: read.c:5295
 msgid ".endfunc missing for previous .func"
 msgstr "falta un .endfunc para el .func previo"
 
-#: stabs.c:215 stabs.c:223 stabs.c:231 stabs.c:250
+#: read.c:5418
+#, c-format
+msgid "missing closing `%c'"
+msgstr "falta un `%c' que cierra"
+
+#: read.c:5420
+msgid "stray `\\'"
+msgstr "`\\' basura"
+
+#: stabs.c:212 stabs.c:220 stabs.c:228 stabs.c:247
 #, c-format
 msgid ".stab%c: missing comma"
 msgstr ".stab%c: falta una coma"
@@ -12731,192 +12391,884 @@ msgstr ".stab%c: falta una coma"
 #. This could happen for example with a source file with a huge
 #. number of lines.  The only cure is to use a different debug
 #. format, probably DWARF.
-#: stabs.c:243
+#: stabs.c:240
 #, c-format
 msgid ".stab%c: description field '%x' too big, try a different debug format"
 msgstr ".stab%c: la descripción del campo '%x' es demasiado grande, intente un formato de depuración diferente"
 
-#: stabs.c:426
+#: stabs.c:421
 msgid "comma missing in .xstabs"
 msgstr "falta una coma en .xstabs"
 
-#: subsegs.c:373
-#, c-format
-msgid "attempt to switch to nonexistent segment \"%s\""
-msgstr "se intentó cambiar a un segmento \"%s\" que no existe"
-
-#: symbols.c:309
+#: symbols.c:278
 #, c-format
 msgid "cannot define symbol `%s' in absolute section"
 msgstr "no se puede definir el símbolo `%s' en la sección absoluta"
 
-#: symbols.c:443
+#: symbols.c:409
 #, c-format
 msgid "symbol `%s' is already defined as \"%s\"/%s%ld"
 msgstr "el símbolo \"%s\" ya está definido como \"%s\"/%s%ld"
 
-#: symbols.c:519 symbols.c:526
+#: symbols.c:483 symbols.c:490
 #, c-format
 msgid "inserting \"%s\" into symbol table failed: %s"
 msgstr "falló la inserción de \"%s\" en la tabla de símbolos: %s"
 
-#: symbols.c:840 symbols.c:844
+#: symbols.c:864 symbols.c:868
 #, c-format
 msgid "undefined symbol `%s' in operation"
 msgstr "símbolo indefinido `%s' en la operación"
 
-#: symbols.c:851
+#: symbols.c:875
 #, c-format
 msgid "invalid sections for operation on `%s' and `%s'"
 msgstr "secciones inválidas para la operación en `%s' y `%s'"
 
-#: symbols.c:855
+#: symbols.c:879
 #, c-format
 msgid "invalid section for operation on `%s'"
 msgstr "sección inválida para la operación en `%s'"
 
-#: symbols.c:863 symbols.c:866
+#: symbols.c:887 symbols.c:890
 #, c-format
 msgid "undefined symbol `%s' in operation setting `%s'"
 msgstr "símbolo indefinido `%s' en la operación que establece `%s'"
 
-#: symbols.c:873
+#: symbols.c:897
 #, c-format
 msgid "invalid sections for operation on `%s' and `%s' setting `%s'"
 msgstr "secciones inválidas para la operación en `%s' y `%s' que establece `%s'"
 
-#: symbols.c:877
+#: symbols.c:901
 #, c-format
 msgid "invalid section for operation on `%s' setting `%s'"
 msgstr "sección inválida para la operación en `%s' que establece `%s'"
 
-#: symbols.c:929
+#: symbols.c:951
 #, c-format
 msgid "symbol definition loop encountered at `%s'"
 msgstr "se encontró un ciclo de definición de símbolo en %s"
 
-#: symbols.c:1162
+#: symbols.c:1209
 #, c-format
 msgid "division by zero when setting `%s'"
 msgstr "división por cero al establecer `%s'"
 
-#: symbols.c:1249 write.c:1977
+#: symbols.c:1291 write.c:1545
 #, c-format
 msgid "can't resolve value for symbol `%s'"
 msgstr "no se puede resolver el valor para el símbolo `%s'"
 
-#: symbols.c:1637
+#: symbols.c:1738
 #, c-format
 msgid "\"%d\" (instance number %d of a %s label)"
 msgstr "\"%d\" (número de instancia %d de una etiqueta %s)"
 
-#: symbols.c:1673
+#: symbols.c:1775
 #, c-format
 msgid "attempt to get value of unresolved symbol `%s'"
 msgstr "se intentó obtener el valor del símbolo sin resolver `%s'"
 
-#: symbols.c:1916
+#: symbols.c:2045
 msgid "section symbols are already global"
 msgstr "los símbolos de sección ya son globales"
 
-#: symbols.c:1961
+#: symbols.c:2150
 #, c-format
 msgid "Accessing function `%s' as thread-local object"
 msgstr "Se accesa a la función `%s' como un objeto de hilo local"
 
-#: symbols.c:1965
+#: symbols.c:2154
 #, c-format
 msgid "Accessing `%s' as thread-local object"
 msgstr "Se accesa `%s' como un objeto de hilo local"
 
-#: write.c:208
+#: write.c:164
 #, c-format
 msgid "field fx_size too small to hold %d"
 msgstr "el campo fx_size es demasiado pequeño para contener %d"
 
-#: write.c:340
-msgid "rva not supported"
-msgstr "rva no tiene soporte"
-
-#: write.c:540
+#: write.c:440
 #, c-format
 msgid "attempt to .org/.space backwards? (%ld)"
 msgstr "¿se intentó hacer .org/.space hacia atrás? (%ld)"
 
-#: write.c:966 write.c:1038
+#: write.c:691
+#, c-format
+msgid "Local symbol `%s' can't be equated to undefined symbol `%s'"
+msgstr "El símbolo local `%s' no se puede igualar al símbolo sin definir `%s'"
+
+#: write.c:865 write.c:937
 msgid "relocation out of range"
 msgstr "reubicación fuera de rango"
 
-#: write.c:969 write.c:1041
+#: write.c:868 write.c:940
 #, c-format
 msgid "%s:%u: bad return from bfd_install_relocation: %x"
 msgstr "%s:%u: devolución errónea de bfd_install_relocation: %x"
 
-#: write.c:1021
+#: write.c:920
 msgid "internal error: fixup not contained within frag"
 msgstr "error interno: la compostura no está contenida en un fragmento"
 
-#: write.c:1127 write.c:1151
+#: write.c:1026 write.c:1050
 #, c-format
 msgid "FATAL: Can't write %s"
 msgstr "FATAL: No se puede escribir %s"
 
-#: write.c:1183
+#: write.c:1082
 msgid "cannot write to output file"
 msgstr "no se puede escribir al fichero de salida"
 
-#: write.c:1440
+#: write.c:1223
 #, c-format
 msgid "%d error%s, %d warning%s, generating bad object file"
 msgstr "%d error%s, %d aviso%s, se genera un fichero objeto erróneo"
 
-#: write.c:1447
+#: write.c:1230
 #, c-format
 msgid "%d error%s, %d warning%s, no object file generated"
 msgstr "%d erro%s, %d aviso%s, no se genera un fichero objeto"
 
-#: write.c:1918
+#: write.c:1464
+#, c-format
+msgid "%s: global symbols not supported in common sections"
+msgstr "%s: los símbolos globales no tienen soporte en las secciones comunes"
+
+#: write.c:1478
 #, c-format
 msgid "local label `%s' is not defined"
 msgstr "la etiqueta local `%s' no está definida"
 
-#: write.c:1931
+#: write.c:1498
 #, c-format
-msgid "`%s' can't be equated to common symbol"
-msgstr "`%s' no se puede igualar al símbolo común"
+msgid "Local symbol `%s' can't be equated to common symbol `%s'"
+msgstr "El símbolo local `%s' no se puede igualar al símbolo común `%s'"
 
-#: write.c:2209
+#: write.c:1768
 #, c-format
 msgid "alignment padding (%lu bytes) not a multiple of %ld"
 msgstr "el relleno de alineación (%lu bytes) no es un múltiplo de %ld"
 
-#: write.c:2326
+#: write.c:1900
 #, c-format
 msgid ".word %s-%s+%s didn't fit"
 msgstr ".word %s-%s+%s no cabe"
 
-#: write.c:2413
+#: write.c:1976
 msgid "attempt to move .org backwards"
 msgstr "se intentó mover .org hacia atrás"
 
-#: write.c:2441
+#: write.c:2004
 msgid ".space specifies non-absolute value"
 msgstr ".space especifica un valor no absoluto"
 
-#: write.c:2448
+#: write.c:2011
 msgid ".space or .fill with negative value, ignored"
 msgstr ".space ó .fill con valor negativo, se ignora"
 
-#: write.c:2731
+#: write.c:2067
+#, c-format
+msgid "Infinite loop encountered whilst attempting to compute the addresses of symbols in section %s"
+msgstr "Se encontró un ciclo infinito al intentar computar las direcciones de los símbolos en la sección %s"
+
+#: write.c:2289
 #, c-format
 msgid "value of %s too large for field of %d bytes at %s"
 msgstr "el valor de %s es demasiado grande para el campo de %d bytes en %s"
 
-#: write.c:2743
+#: write.c:2301
 #, c-format
 msgid "signed .word overflow; switch may be too large; %ld at 0x%lx"
 msgstr "desbordamiento con signo de .word; el interruptor puede ser demasiado grande; %ld en 0x%lx"
 
+#~ msgid "end of file in string; inserted '\"'"
+#~ msgstr "fin de fichero en la cadena; se insertó '\"'"
+
+#~ msgid "GNU assembler version %s (%s)"
+#~ msgstr "GNU ensamblador versión %s (%s)"
+
+#~ msgid "unresolved relocation"
+#~ msgstr "reubicación sin resolver"
+
+#~ msgid "bad relocation: symbol `%s' not in symbol table"
+#~ msgstr "reubicación errónea: el símbolo `%s' no está en la tabla de símbolos"
+
+#~ msgid "%s: bad type for weak symbol"
+#~ msgstr "%s: tipo erróneo para un símbolo débil"
+
+#~ msgid "Local symbol %s never defined."
+#~ msgstr "El símbolo local %s nunca se definió."
+
+#~ msgid "Local symbol %s never defined"
+#~ msgstr "El símbolo local %s nunca se definió"
+
+#~ msgid "bfd_coff_swap_scnhdr_out failed"
+#~ msgstr "falló bfd_coff_swap_scnhdr_out"
+
+#~ msgid "`.bf' symbol without preceding function\n"
+#~ msgstr "símbolo `.bf' sin una función precedente\n"
+
+#~ msgid "Too many new sections; can't add \"%s\""
+#~ msgstr "Demasiadas secciones nuevas; no se puede agregar \"%s\""
+
+#~ msgid "Negative of non-absolute symbol %s"
+#~ msgstr "Negativo de un símbolo %s que no es absoluto"
+
+#~ msgid "callj to difference of 2 symbols"
+#~ msgstr "callj para diferenciar a 2 símbolos"
+
+#~ msgid "Can't emit reloc {- %s-seg symbol \"%s\"} @ file address %ld."
+#~ msgstr "No se puede emitir la reubicación {- %s-seg símbolo \"%s\"} @ dirección del fichero %ld."
+
+#~ msgid "Value of %ld too large for field of %d bytes at 0x%lx"
+#~ msgstr "El valor de %ld es demasiado grande para el campo de %d bytes en 0x%lx"
+
+#~ msgid "Signed .word overflow; switch may be too large; %ld at 0x%lx"
+#~ msgstr "Desbordamiento con signo de .word; el interruptor puede ser demasiado grande; %ld en 0x%lx"
+
+#~ msgid "compiler emitted zero-size common symbol `%s' already defined"
+#~ msgstr "el símbolo común de tamaño cero emitido por el compilador `%s' ya está definido"
+
+#~ msgid "compiler redefined zero-size common symbol `%s'"
+#~ msgstr "símbolo común de tamaño cero `%s' redefinido por el compilador"
+
+#~ msgid "Couldn't create VMS object file \"%s\""
+#~ msgstr "No se puede crear el fichero objeto VMS \"%s\""
+
+#~ msgid "I/O error writing VMS object file (length prefix)"
+#~ msgstr "Error de E/S al escribir el fichero objeto VMS (longitud del prefijo)"
+
+#~ msgid "I/O error writing VMS object file"
+#~ msgstr "Error de E/S al escribir el fichero objeto VMS"
+
+#~ msgid "Couldn't find source file \"%s\", status=%%X%x"
+#~ msgstr "No se puede encontrar el fichero fuente \"%s\", estado=%%X%x"
+
+#~ msgid "debugger forward reference error, dbx type %d"
+#~ msgstr "error de referencia hacia adelante del depurador, tipo dbx %d"
+
+#~ msgid "Variable descriptor %d too complicated.  Defined as `void *'."
+#~ msgstr "El descriptor de variable %d es demasiado complicado.  Se define como `void *'."
+
+#~ msgid ""
+#~ "***Warning - the assembly code generated by the compiler has placed \n"
+#~ " global constant(s) in the text psect.  These will not be available to \n"
+#~ " other modules, since this is not the correct way to handle this. You \n"
+#~ " have two options: 1) get a patched compiler that does not put global \n"
+#~ " constants in the text psect, or 2) remove the 'const' keyword from \n"
+#~ " definitions of global variables in your source module(s).  Don't say \n"
+#~ " I didn't warn you! \n"
+#~ msgstr ""
+#~ "***Aviso - el código ensamblador generado por el compilador ha colocado \n"
+#~ " constante(s) global(es) en la psect de texto.  Éstas no estarán disponibles \n"
+#~ " para otros módulos, ya que no es la forma correcta de manejarlo. Tiene \n"
+#~ " dos opciones: 1) obtener un compilador parchado que no coloque constantes \n"
+#~ " globales en la psect de texto, o 2) quitar la palabra clave 'const' de \n"
+#~ " las definiciones de las variables globales en el(los) módulo(s) fuente. \n"
+#~ " ¡No diga que no se le advirtió! \n"
+
+#~ msgid "debugginer output: %d is an unknown untyped variable."
+#~ msgstr "salida del depurador: %d es una variable sin tipo desconocido."
+
+#~ msgid "debugger output: structure element `%s' has undefined type"
+#~ msgstr "salida del depurador: el elmento de la estructura `%s' tiene un tipo indefinido"
+
+#~ msgid "debugger output: %d is an unknown type of variable."
+#~ msgstr "salida del depurador: %d es un tipo desconocido de variable."
+
+#~ msgid "debugger output: Unable to resolve %d circular references."
+#~ msgstr "salida del depurador: No se pueden resolver %d referencias circulares."
+
+#~ msgid "Module name truncated: %s\n"
+#~ msgstr "Nombre de módulo truncado: %s\n"
+
+#~ msgid "Symbol %s replaced by %s\n"
+#~ msgstr "El símbolo %s se reemplazó por %s\n"
+
+#~ msgid "Unknown VMS psect type (%ld)"
+#~ msgstr "Tipo psect VMS desconocido (%ld)"
+
+#~ msgid "Globalsymbol attribute for symbol %s was unexpected."
+#~ msgstr "El atributo de globalsymbol para el símbolo %s era inesperado."
+
+#~ msgid "Invalid data type for globalvalue"
+#~ msgstr "Tipo de dato inválido para globalvalue"
+
+#~ msgid "Invalid globalvalue of %s"
+#~ msgstr "Globalvalue inválido de %s"
+
+#~ msgid "Couldn't find fixup fragment when checking for indirect reference"
+#~ msgstr "No se puede encontrar el fragmento de compostura al revisar por referencias indirectas"
+
+#~ msgid "Fixup data addsy and subsy don't have the same type"
+#~ msgstr "Los datos de compostura addsy y subsy no tienen el mismo tipo"
+
+#~ msgid "Fixup data addsy and subsy don't have an appropriate type"
+#~ msgstr "Los datos de compostura addsy y subsy no tienen un tipo apropiado"
+
+#~ msgid "Fixup data is erroneously \"pcrel\""
+#~ msgstr "Los datos de compostura son \"pcrel\" erróneamente"
+
+#~ msgid "Fixup datum is not a longword"
+#~ msgstr "El dato de compostura no es un longword"
+
+#~ msgid "Fixup datum is not \"fixP->fx_addsy\""
+#~ msgstr "El dato de compostura no es \"fixP->fx_addsy\""
+
+#~ msgid "Can't handle global xtors symbols yet."
+#~ msgstr "No se pueden manejar símbolos xtors globales aún."
+
+#~ msgid "Unknown %s"
+#~ msgstr "%s desconocido"
+
+#~ msgid "unhandled stab type %d"
+#~ msgstr "tipo de cabo %d sin manejar"
+
+#~ msgid "Immediate value of %ld is too large"
+#~ msgstr "El valor inmediato de %ld es demasiado grande"
+
+#~ msgid "need %o3\n"
+#~ msgstr "se necesita %o3\n"
+
+#~ msgid "a29k_convert_frag\n"
+#~ msgstr "a29k_convert_frag\n"
+
+#~ msgid "a29k_estimate_size_before_relax\n"
+#~ msgstr "a29k_estimate_size_before_relax\n"
+
+#~ msgid "Invalid register in & expression"
+#~ msgstr "Registro inválido en la expresión &"
+
+#~ msgid "Intel Wireless MMX technology register expected"
+#~ msgstr "se esperaba un registro de tecnología Intel Inalámbrico MMX"
+
+#~ msgid "unreq: missing hash entry for \"%s\""
+#~ msgstr "unreq: falta la entrada de hash para \"%s\""
+
+#~ msgid ".unreq: unrecognized symbol \"%s\""
+#~ msgstr ".unreq: símbolo \"%s\" no reconocido"
+
+#~ msgid "bad_segment"
+#~ msgstr "segmento_erróneo"
+
+#~ msgid "register expected, not '%.100s'"
+#~ msgstr "se esperaba un registro, no '%.100s'"
+
+#~ msgid "Intel Wireless MMX technology register expected, not '%.100s'"
+#~ msgstr "se esperaba un registro de tecnología Intel Inalámbrica MMX, no '%.100s'"
+
+#~ msgid "illegal co-processor number"
+#~ msgstr "número de co-procesador ilegal"
+
+#~ msgid "bad or missing expression"
+#~ msgstr "expresión errónea o faltante"
+
+#~ msgid "immediate co-processor expression too large"
+#~ msgstr "expresión de co-procesador inmediata demasiado grande"
+
+#~ msgid "co-processor address must be word aligned"
+#~ msgstr "la dirección del co-procesador debe ser alineada con word"
+
+#~ msgid "comma expected after closing square bracket"
+#~ msgstr "se esperaba una coma después del paréntesis cuadrado que cierra"
+
+#~ msgid "pc may not be used in post-increment"
+#~ msgstr "el pc no se puede usar en post-incremento"
+
+#~ msgid "'option' field too large"
+#~ msgstr "campo 'option' demasiado grande"
+
+#~ msgid "non-constant expressions for 'option' field not supported"
+#~ msgstr "no hay soporte para expresiones no constantes para el campo 'option'"
+
+#~ msgid "# or { expected after comma"
+#~ msgstr "se esperaba # o { después de la coma"
+
+#~ msgid "pre-indexed expression expected"
+#~ msgstr "se esperaba una expresión pre-indizada"
+
+#~ msgid "missing ]"
+#~ msgstr "falta un ]"
+
+#~ msgid "Invalid NOP hint"
+#~ msgstr "Pista NOP inválida"
+
+#~ msgid "comma expected after register name"
+#~ msgstr "se esperaba una coma después del nombre de registro"
+
+#~ msgid "comma missing after psr flags"
+#~ msgstr "falta una coma después de las opciones psr"
+
+#~ msgid "only a register or immediate value can follow a psr flag"
+#~ msgstr "sólo un registro o un valor inmediato puede seguir a una opción psr"
+
+#~ msgid "acc0 expected, not '%.100s'"
+#~ msgstr "se esperaba acc0, no '%.100s'"
+
+#~ msgid "address offset too large"
+#~ msgstr "dirección de desplazamiento demasiado grande"
+
+#~ msgid "Warning: instruction unpredictable when using r15"
+#~ msgstr "Aviso: la instrucción es impredecible cuando se utiliza r15"
+
+#~ msgid "Rd equal to Rm or Rn yields unpredictable results"
+#~ msgstr "Rd igual a Rm o Rn produce resultados impredecibles"
+
+#~ msgid "shift requires register or #expression"
+#~ msgstr "el desplazamiento requiere un registro o una #expresión"
+
+#~ msgid "shift requires #expression"
+#~ msgstr "el desplazamiento requiere una #expresión"
+
+#~ msgid "shift of 0 ignored."
+#~ msgstr "se ignora un desplazamiento de 0."
+
+#~ msgid "invalid immediate shift"
+#~ msgstr "desplazamiento inmediato inválido"
+
+#~ msgid "missing endian specifier"
+#~ msgstr "falta el especificador endian"
+
+#~ msgid "rotation can be 8, 16, 24 or 0 when field is ommited"
+#~ msgstr "rotation puede ser 8, 16, 24 o 0 cuando se omite el campo"
+
+#~ msgid "no 'a', 'i', or 'f' flags for 'cps'"
+#~ msgstr "no hay opciones 'a', 'i', o 'f' para 'cps'"
+
+#~ msgid "conditional execution not supported with control register"
+#~ msgstr "la ejecución condicional no tiene soporte con un registro de control"
+
+#~ msgid "pre/post-indexing used when modified address register is destination"
+#~ msgstr "se usó pre/post-indizado cuando el registro de dirección modificado es el destino"
+
+#~ msgid "ldrd destination registers must not overlap index register"
+#~ msgstr "los registros destino ldrd no deben quedar sobre el registro índice"
+
+#~ msgid "invalid floating point immediate expression"
+#~ msgstr "expresión inmediata de coma flotante inválida"
+
+#~ msgid "floating point register or immediate expression expected"
+#~ msgstr "se esperaba un registro de coma flotante o una expresión inmediata"
+
+#~ msgid "address expected"
+#~ msgstr "se esperaba una dirección"
+
+#~ msgid "destination"
+#~ msgstr "destino"
+
+#~ msgid "source"
+#~ msgstr "fuente"
+
+#~ msgid "post-indexed expression expected"
+#~ msgstr "se esperaba una expresión post-indizada"
+
+#~ msgid "r15 not allowed in swap"
+#~ msgstr "no se permite r15 en el intercambio"
+
+#~ msgid "constant value required for number of registers"
+#~ msgstr "se requiere un valor constante para el número de registros"
+
+#~ msgid "subtract valid only on lo regs"
+#~ msgstr "subtract válido sólo en registros lo"
+
+#~ msgid "invalid immediate value for stack adjust"
+#~ msgstr "valor inmediato inválido para el ajuste de la pila"
+
+#~ msgid "invalid immediate for address calculation"
+#~ msgstr "inmediato inválido para el cálculo de dirección"
+
+#~ msgid "invalid immediate for shift"
+#~ msgstr "inmediato inválido para el desplazamiento"
+
+#~ msgid "expected ']'"
+#~ msgstr "se esperaba ']'"
+
+#~ msgid "invalid base register in load/store"
+#~ msgstr "registro base inválido en carga/almacenamiento"
+
+#~ msgid "expecting immediate, 7bit operand"
+#~ msgstr "se espera un operando inmediato de 7 bits"
+
+#~ msgid "offset expected"
+#~ msgstr "se esperaba un desplazamiento"
+
+#~ msgid "Rs and Rd must be different in MUL"
+#~ msgstr "Rs y Rd deben ser diferentes en MUL"
+
+#~ msgid "inserted missing '!': load/store multiple always writes back base register"
+#~ msgstr "se insertó un '!' faltante: los load/store múltiples siempre escribe hacia atrás el registro base"
+
+#~ msgid "only lo-regs valid in load/store multiple"
+#~ msgstr "sólo los registros lo son válidos en carga/almacenamiento múltiple"
+
+#~ msgid "syntax: ldrs[b] Rd, [Rb, Ro]"
+#~ msgstr "sintaxis: ldrs[b] Rd, [Rb, Ro]"
+
+#~ msgid "failed to create an alias for %s, reason: %s"
+#~ msgstr "falló la creación de un alias para %s, razón: %s"
+
+#~ msgid "ignoring redefinition of register alias '%s' to non-existant register '%s'"
+#~ msgstr "se ignora la redefinición del alias de registro '%s' al registro no existente '%s'"
+
+#~ msgid "ignoring incomplete .req pseuso op"
+#~ msgstr "se ignora el pseudo operador incompleto .req"
+
+#~ msgid "GAS can't handle same-section branch dest >= 0x04000000"
+#~ msgstr "GAS no puede manejar un destino de ramificación en la misma sección >= 0x04000000"
+
+#~ msgid "out of range branch"
+#~ msgstr "ramificación fuera de rango"
+
+#~ msgid "branch with link out of range"
+#~ msgstr "ramificación con enlace fuera de rango"
+
+#~ msgid "illegal value for co-processor offset"
+#~ msgstr "valor ilegal para el desplazamiento del co-procesador"
+
+#~ msgid "Illegal value for co-processor offset"
+#~ msgstr "Valor ilegal para el desplazamiento del co-procesador"
+
+#~ msgid "invalid 8bit immediate"
+#~ msgstr "inmediato de 8bit inválido"
+
+#~ msgid "invalid 3bit immediate"
+#~ msgstr "inmediato de 3bit inválido"
+
+#~ msgid "no operator -- statement `%s'\n"
+#~ msgstr "no hay operador -- declaración `%s'\n"
+
+#~ msgid "expected wr or wcgr"
+#~ msgstr "se esperaba wr o wcgr"
+
+#~ msgid "inconsistent register types"
+#~ msgstr "tipos de registro inconsistentes"
+
+#~ msgid "unrecognised register"
+#~ msgstr "registro no reconocido"
+
+#~ msgid "arm convert_frag\n"
+#~ msgstr "convert_frag de arm\n"
+
+#~ msgid "call to tc_crawl_symbol_chain \n"
+#~ msgstr "llamada a tc_crawl_symbol_chain \n"
+
+#~ msgid "call to tc_headers_hook \n"
+#~ msgstr "llamada a tc_headers_hook \n"
+
+#~ msgid ":24 not valid for this opcode"
+#~ msgstr ":24 no es válido para este código de operación"
+
+#~ msgid "expect :8,:16 or :24"
+#~ msgstr "se esperaba :8,:16 ó :24"
+
+#~ msgid "syntax error in reg list"
+#~ msgstr "error sintáctico en la lista de registros"
+
+#~ msgid "missing final register in range"
+#~ msgstr "falta el registro final en el rango"
+
+#~ msgid "expected @(exp, Rn)"
+#~ msgstr "se esperaba @(exp, Rn)"
+
+#~ msgid "@Rn+ needs word register"
+#~ msgstr "@Rn+ necesita un registro word"
+
+#~ msgid "@Rn needs word register"
+#~ msgstr "@Rn necesita un registro word"
+
+#~ msgid "operand must be absolute in range %d..%d"
+#~ msgstr "el operando debe ser absoluto en el rango %d..%d"
+
+#~ msgid "leafproc symbol '%s' undefined"
+#~ msgstr "símolo de proceso hoja '%s' indefinido"
+
+#~ msgid "Warning: making leafproc entries %s and %s both global\n"
+#~ msgstr "Aviso: haciendo globales las entradas de proceso hoja %s y %s\n"
+
+#~ msgid "Unknown PC relative instruction"
+#~ msgstr "Instrucción relativa al PC desconocida"
+
+#~ msgid "Can't hash instruction '%s':%s"
+#~ msgstr "No se puede dispersar la instrucción '%s':%s"
+
+#~ msgid "Invalid mnemonic '%s'"
+#~ msgstr "Mnemónico inválido '%s'"
+
+#~ msgid "Parameter syntax error"
+#~ msgstr "Error sintáctico de parámetros"
+
+#~ msgid "Use of obsolete instruction"
+#~ msgstr "Uso de una instrucción obsoleta"
+
+#~ msgid "Expression truncated to 16 bits"
+#~ msgstr "Expresión truncada a 16 bits"
+
+#~ msgid "Expression truncated to 5 bits"
+#~ msgstr "Expresión truncada a 5 bits"
+
+#~ msgid "Expression truncated to 9 bits"
+#~ msgstr "Expresión truncada a 9 bits"
+
+#~ msgid "Removed lower 2 bits of expression"
+#~ msgstr "Se borraron los 2 bits inferiores de la expresión"
+
+#~ msgid "Relaxation should never occur"
+#~ msgstr "La relajación nunca debe ocurrir"
+
+#~ msgid "m88k convert_frag\n"
+#~ msgstr "m88k convert_frag\n"
+
+#~ msgid "constant too large"
+#~ msgstr "constante demasiado grande"
+
+#~ msgid "register out of range"
+#~ msgstr "registro fuera de rango"
+
+#~ msgid "The -a option doesn't exist. (Despite what the man page says!"
+#~ msgstr "La opción -a no existe. (¡A pesar de lo que diga la página del manual!)"
+
+#~ msgid ""
+#~ "Tahoe options:\n"
+#~ "-a\t\t\tignored\n"
+#~ "-d LENGTH\t\tignored\n"
+#~ "-J\t\t\tignored\n"
+#~ "-S\t\t\tignored\n"
+#~ "-t FILE\t\t\tignored\n"
+#~ "-T\t\t\tignored\n"
+#~ "-V\t\t\tignored\n"
+#~ msgstr ""
+#~ "Opciones de Tahoe:\n"
+#~ "-a\t\t\tse ignora\n"
+#~ "-d LENGTH\t\tse ignora\n"
+#~ "-J\t\t\tse ignora\n"
+#~ "-S\t\t\tse ignora\n"
+#~ "-t FILE\t\t\tse ignora\n"
+#~ "-T\t\t\tse ignora\n"
+#~ "-V\t\t\tse ignora\n"
+
+#~ msgid "Casting a branch displacement is bad form, and is ignored."
+#~ msgstr "La conversión de una desubicación de ramificación es una forma errónea, y se ignora."
+
+#~ msgid "Couldn't parse the [index] in this operand."
+#~ msgstr "No se puede decodificar el [index] en este operando."
+
+#~ msgid "Couldn't find the opening '[' for the index of this operand."
+#~ msgstr "No se puede encontrar el '[' que abre para el índice de este operando."
+
+#~ msgid "Couldn't find the opening '(' for the deref of this operand."
+#~ msgstr "No se puede encontrar el '(' que abre para la dereferencia de este operando."
+
+#~ msgid "Operand can't be both pre-inc and post-dec."
+#~ msgstr "El operando no puede ser pre-incremento y post-decremento al mismo tiempo."
+
+#~ msgid "I parsed 2 registers in this operand."
+#~ msgstr "Se decodificaron 2 registros en este operando."
+
+#~ msgid "Can't relocate expression error."
+#~ msgstr "No se puede reubicar la expresión de error."
+
+#~ msgid "Expression is too large for a 32 bits."
+#~ msgstr "La expresión es demasiado grande para 32 bits."
+
+#~ msgid "Junk at end of expression."
+#~ msgstr "Basura al final de la expresión."
+
+#~ msgid "Syntax error in direct register mode."
+#~ msgstr "Error sintáctico en el modo directo de registro."
+
+#~ msgid "You can't index a register in direct register mode."
+#~ msgstr "No se puede indizar un registro en el modo directo de registro."
+
+#~ msgid "SP can't be the source operand with direct register addressing."
+#~ msgstr "SP no puede ser el operando fuente con direccionamiento directo de registro."
+
+#~ msgid "Can't take the address of a register."
+#~ msgstr "No se puede tomar la dirección de un registro."
+
+#~ msgid "Direct Register can't be used in a branch."
+#~ msgstr "Un Registro Directo no se puede utilizar en una ramificación."
+
+#~ msgid "For quad access, the register must be even and < 14."
+#~ msgstr "Para acceso cuadrático, el registro debe ser par y < 14."
+
+#~ msgid "You can't cast a direct register."
+#~ msgstr "No se puede convertir un registro directo."
+
+# `tromp' se utiliza aquí como verbo transitivo. cfuga
+# Referencia: http://www.dictionary.com/search?q=tromp
+#~ msgid "Using reg 14 for quadwords can tromp the FP register."
+#~ msgstr "El uso del registro 14 para quadwords puede noquear el registro FP."
+
+#~ msgid "Syntax error in auto-dec mode."
+#~ msgstr "Error sintáctico en el modo auto-dec."
+
+#~ msgid "You can't have an index auto dec mode."
+#~ msgstr "No se puede tener un índice en modo auto dec"
+
+#~ msgid "Auto dec mode cant be used for reading."
+#~ msgstr "El modo auto dec no se puede usar para lectura."
+
+#~ msgid "Auto dec only works of the SP register."
+#~ msgstr "El modo auto dec solamente funciona en los registros SP."
+
+#~ msgid "Auto dec can't be used in a branch."
+#~ msgstr "No se puede utilizar auto dec en una ramificación."
+
+#~ msgid "Auto dec won't work with quadwords."
+#~ msgstr "Auto dec no funciona con quadwords."
+
+#~ msgid "Syntax error in one of the auto-inc modes."
+#~ msgstr "Error sintáctico en uno de los modos auto-inc."
+
+#~ msgid "Auto inc deferred only works of the SP register."
+#~ msgstr "El modo auto inc diferido solamente funciona en los registros SP."
+
+#~ msgid "You can't have an index auto inc deferred mode."
+#~ msgstr "No se puede tener un índice en modo auto inc diferido"
+
+#~ msgid "Auto inc can't be used in a branch."
+#~ msgstr "No se puede utilizar auto inc en una ramificación."
+
+#~ msgid "You can't write to an auto inc register."
+#~ msgstr "No se puede escribir en un registro auto inc."
+
+#~ msgid "Auto inc only works of the SP register."
+#~ msgstr "El modo auto inc funciona solamente en los registros SP."
+
+#~ msgid "Auto inc won't work with quadwords."
+#~ msgstr "Auto inc no funciona con quadwords."
+
+#~ msgid "You can't have an index in auto inc mode."
+#~ msgstr "No se puede tener un índice en el modo auto inc."
+
+#~ msgid "You can't index the sp register."
+#~ msgstr "No se puede indizar el registro sp."
+
+#~ msgid "Syntax error in register displaced mode."
+#~ msgstr "Error sintáctico en el registro en modo desubicado."
+
+#~ msgid "An offest is needed for this operand."
+#~ msgstr "Se necesita un desplazamiento para este operando."
+
+#~ msgid "You can't index a register in immediate mode."
+#~ msgstr "No se puede indizar un registro en modo inmediato."
+
+#~ msgid "Immediate access can't be used as an address."
+#~ msgstr "No se puede utilizar el acceso inmediato como una dirección"
+
+#~ msgid "Compiler bug: ODD number of bytes in arg structure %s."
+#~ msgstr "Bicho del compilador: número de bytes IMPAR en la estructura de argumentos %s."
+
+#~ msgid "Compliler bug: Got a case (%d) I wasn't expecting."
+#~ msgstr "Bicho del compilador: Se obtuvo un case (%d) que no se esperaba."
+
+#~ msgid "Real branch displacements must be expressions."
+#~ msgstr "Las desubicaciones de ramificaciones reales deben ser expresiones."
+
+#~ msgid "Complier error: I got an unknown synthetic branch :%c"
+#~ msgstr "Error del compilador: Se obtuvo una ramificación sintética desconocida :%c"
+
+# En México se utilizaría `guácala' por `barf', como una expresión
+# que simboliza vómito, pero no es comprensible para todos los
+# hispanoparlantes. :-)    cfuga
+#~ msgid "Barf, bad mode %x\n"
+#~ msgstr "Ugh, modo erróneo %x\n"
+
+#~ msgid "internal error:%s:%d: %s\n"
+#~ msgstr "error interno:%s:%d: %s\n"
+
+#~ msgid "internal error:%s:%d: %s %ld\n"
+#~ msgstr "error interno:%s:%d: %s %ld\n"
+
+#~ msgid "Relaxation is a luxury we can't afford"
+#~ msgstr "La relajación es un lujo que no se puede conceder"
+
+#~ msgid "bad call to md_atof ()"
+#~ msgstr "llamada errónea a md_atof ()"
+
+#~ msgid "':' not followed by 'm' or 's'"
+#~ msgstr "':' no está seguido por 'm' o 's'"
+
+#~ msgid "paren nesting"
+#~ msgstr "anidamiento de paréntesis"
+
+#~ msgid "mismatched parenthesis"
+#~ msgstr "paréntesis sin coincidencia"
+
+#~ msgid "unhandled expression type"
+#~ msgstr "tipo de expresión sin manejar"
+
+#~ msgid "symbol reloc that is not PC relative or 32 bits"
+#~ msgstr "reubicación de símbolo que no es relativo al PC o de 32 bits"
+
+#~ msgid "unhandled operand modifier"
+#~ msgstr "modificador de operando sin manejar"
+
+#~ msgid "unhandled expression"
+#~ msgstr "expresión sin manejar"
+
+#~ msgid "Invalid mnemonic: '%s'"
+#~ msgstr "Mnemónico inválido: '%s'"
+
+#~ msgid "Invalid operands: '%s'"
+#~ msgstr "Operandos inválidos: '%s'"
+
+#~ msgid "unhandled predefined symbol bits"
+#~ msgstr "bits de símbolo predefinido sin manejar"
+
+#~ msgid "PC offset 0x%lx outside range 0x%lx-0x%lx"
+#~ msgstr "desplazamiento del PC 0x%lx fuera del rango 0x%lx-0x%lx"
+
+#~ msgid "unhandled relocation type in fixup"
+#~ msgstr "typo de reubicación sin manejar en la compostura"
+
+#~ msgid "md_convert_frag() not implemented yet"
+#~ msgstr "md_convert_frag() aún no está implementado"
+
+#~ msgid "need on or off."
+#~ msgstr "necesita on u off."
+
+#~ msgid "syntax error after <exp"
+#~ msgstr "error sintáctico después de <exp"
+
+#~ msgid "value of %ld too large"
+#~ msgstr "el valor de %ld es demasiado grande"
+
+#~ msgid "emitting simplification relocation"
+#~ msgstr "emitiendo simplificación de reubicación"
+
+#~ msgid "emitting unknown relocation"
+#~ msgstr "emitiendo reubicación desconocida"
+
+#~ msgid "Can't subtract symbols in different sections %s %s"
+#~ msgstr "No se pueden sustraer los símbolos en secciones diferentes %s %s"
+
+#~ msgid "dwarf2 is not supported for this object file format"
+#~ msgstr "dwarf2 no tiene soporte para este formato de fichero objeto"
+
+#~ msgid "Macro with this name was already defined"
+#~ msgstr "Ya estaba definida una macro con ese nombre"
+
+#~ msgid "missplaced )"
+#~ msgstr ") mal colocado"
+
+#~ msgid "macro formal argument does not exist"
+#~ msgstr "el argumento formal de macro no existe"
+
+#~ msgid "FATAL: can't close %s"
+#~ msgstr "FATAL: no se puede cerrar %s"
+
+#~ msgid "Failed to emit an object byte"
+#~ msgstr "Falló al emitir un byte objeto"
+
+#~ msgid "can't continue"
+#~ msgstr "no se puede continuar"
+
+#~ msgid "attempt to switch to nonexistent segment \"%s\""
+#~ msgstr "se intentó cambiar a un segmento \"%s\" que no existe"
+
 #~ msgid "Can't close %s: %s"
 #~ msgstr "No se puede cerrar %s: %s"
 
@@ -12954,9 +13306,6 @@ msgstr "desbordamiento con signo de .word; el interruptor puede ser demasiado gr
 #~ msgid "File overrides no-base-register option."
 #~ msgstr "El fichero se impone a la opción no-base-register."
 
-#~ msgid "floating point register expected"
-#~ msgstr "se esperaba un registro de coma flotante"
-
 #~ msgid "immediate value cannot be used to set this field"
 #~ msgstr "no se puede usar un valor inmediato para establecer este campo"
 
@@ -12981,9 +13330,6 @@ msgstr "desbordamiento con signo de .word; el interruptor puede ser demasiado gr
 #~ msgid "  -cpu-desc              provide runtime cpu description file\n"
 #~ msgstr "  -cpu-desc              provee el fichero de descripción del cpu en tiempo de ejecución\n"
 
-#~ msgid "unrecognized option `%s'"
-#~ msgstr "opción `%s' no reconocida"
-
 #~ msgid "Branch %s is always false (nop)"
 #~ msgstr "La ramificación %s es siempre falsa (nop)"
 
@@ -13348,9 +13694,6 @@ msgstr "desbordamiento con signo de .word; el interruptor puede ser demasiado gr
 #~ msgid "AENDW without a AENDW.\n"
 #~ msgstr "AWHILE sin un AENDW.\n"
 
-#~ msgid "AREPEAT must have absolute operand.\n"
-#~ msgstr "AREPEAT debe tener un operando absoluto.\n"
-
 #~ msgid "AREPEAT without a AENDR at %d.\n"
 #~ msgstr "AREPEAT sin un AENDR en %d.\n"
 
@@ -13594,9 +13937,6 @@ msgstr "desbordamiento con signo de .word; el interruptor puede ser demasiado gr
 #~ msgid "Bad COFF debugging info"
 #~ msgstr "Información de depuración COFF errónea"
 
-#~ msgid "Ignoring attempt to redefine symbol `%s'."
-#~ msgstr "Se ignora el intento de redefinir el símbolo `%s'."
-
 #~ msgid "Missing '%c' assumed"
 #~ msgstr "Se asume que falta '%c'"
 
@@ -13609,9 +13949,6 @@ msgstr "desbordamiento con signo de .word; el interruptor puede ser demasiado gr
 #~ msgid "Alignment not a power of 2"
 #~ msgstr "La alineación no es una potencia de 2"
 
-#~ msgid "attempt to re-define symbol `%s'"
-#~ msgstr "se intentó re-definir el símbolo `%s'"
-
 #~ msgid "Missing alignment"
 #~ msgstr "Falta la alineación"
 
index e0f721c..9401d61 100644 (file)
@@ -194,7 +194,7 @@ subseg_set_rest (segT seg, subsegT subseg)
       newP->frch_next = frcP;  /* perhaps NULL */
 
       seginfo = seg_info (seg);
-      if (seginfo && seginfo->frchainP == frcP)
+      if (seginfo && (!seginfo->frchainP || seginfo->frchainP == frcP))
        seginfo->frchainP = newP;
 
       frcP = newP;
index cde2329..6637ab9 100644 (file)
@@ -1,3 +1,81 @@
+2006-06-14  Thiemo Seufer  <ths@mips.com>
+
+       * gas/mips/mips16e-jrc.d, gas/mips/mips16e-save.d,
+       gas/mips/mips32-dsp.d, gas/mips/mips32-mt.d: Explicitly specify
+       o32 ABI.
+
+2006-05-26  Richard Sandiford  <richard@codesourcery.com>
+
+       * gas/m68k/mcf-fpu.s: Add fmovemd and fmovem instructions.
+       * gas/m68k/mcf-fpu.d: Adjust accordingly.
+
+2006-05-22  Nick Clifton  <nickc@redhat.com>
+
+       * gas/mips/mips32-dsp.l: Fix expected unsigned decoding of -1 in
+       warning messages.
+       * gas/mips/mips32-mt.l: Likewise.
+
+2006-05-19  Thiemo Seufer  <ths@mips.com>
+
+       * gas/mips/vxworks1-el.d, gas/mips/vxworks1-xgot-el.d: Add little
+       endian testcases.
+       * gas/mips/vxworks1.d, gas/mips/vxworks1-xgot.d: Build as big endian.
+       * gas/mips/mips.exp: Run new testcases.
+
+2006-05-11  Thiemo Seufer  <ths@mips.com>
+
+       * gas/mips/jal-range.l: Don't check the range of j or jal
+       addresses.
+
+2006-05-04  Thiemo Seufer  <ths@mips.com>
+
+       * gas/mips/mips32-mt.d: Fix mftr argument order.
+
+2006-05-02  Joseph Myers  <joseph@codesourcery.com>
+
+       * gas/arm/iwmmxt.s: Increase offsets for wstrb and wstrh.
+       * gas/arm/iwmmxt.d: Update expected results.
+       * gas/arm/iwmmxt-bad2.s: Test wstrb, wstrh, wldrb and wldrh.
+       * gas/arm/iwmmxt-bad2.l: Update expected error messages.
+
+2006-04-16  Nick Clifton  <nickc@redhat.com>
+
+       * gas/arm/arch7.d: Skip test for non-ELF targets.
+       * gas/arm/blx-local.d: Likewise.
+       * gas/arm/svc.d: Likewise.
+       * gas/arm/thumb2_bcond.d: Likewise.
+       * gas/arm/thumb2_it_bad.d: Likewise.
+
+2006-04-07  Paul Brook  <paul@codesourcery.com>
+
+       * gas/arm/blx-local.d: New test.
+       * gas/arm/blx-local.d: New test.
+
+2006-04-07  Paul Brook  <paul@codesourcery.com>
+
+       * gas/arm/thumb2_pool.d: New test.
+       * gas/arm/thumb2_pool.s: New test.
+
+2006-04-05  Richard Sandiford  <richard@codesourcery.com>
+
+       * gas/sparc/vxworks-pic.s, gas/sparc/vxworks-pic.d: New test.
+       * gas/sparc/sparc.exp: Run it.  Remove sparc*-*-vxworks* XFAILs.
+
+2006-03-23  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * gas/i386/rep.s: Pad with .p2align.
+       * gas/i386/rep.d: Adjust.
+
+2006-03-22  Richard Sandiford  <richard@codesourcery.com>
+
+       * gas/mips/vxworks1.s, gas/mips/vxworks1.d,
+       * gas/mips/vxworks1-xgot.d: New tests.
+       * gas/mips/mips.exp: Run them.  Do not run other tests on VxWorks.
+       
+2006-03-21  Paul Brook  <paul@codesourcery.com>
+
+       * gas/arm/thumb32.d: Correct expected output.
+
 2006-03-20  Paul Brook  <paul@codesourcery.com>
 
        * gas/arm/thumb2_bcond.d: New test.
index f656340..992948b 100644 (file)
@@ -1,5 +1,6 @@
 #name: ARM V7 instructions
 #as: -march=armv7r
+#skip: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix*
 #objdump: -dr --prefix-addresses --show-raw-insn
 
 .*: +file format .*arm.*
index 697756c..fdeb930 100644 (file)
@@ -1,5 +1,6 @@
 # name: SWI/SVC instructions
 # objdump: -dr --prefix-addresses --show-raw-insn
+# skip: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix*
 
 .*: +file format .*arm.*
 
index 02903a9..e4a8798 100644 (file)
@@ -1,5 +1,6 @@
 # as:
 # objdump: -dr --prefix-addresses --show-raw-insn
+# skip: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix*
 
 .*: +file format .*arm.*
 
index 1cca8b9..f905c9f 100644 (file)
@@ -1,3 +1,4 @@
 #name: Invalid IT instructions
 #as:
+#skip: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix*
 #error-output: thumb2_it_bad.l
index 8503d23..11dfdb4 100644 (file)
@@ -19,6 +19,7 @@ Disassembly of section \.text:
 .*[    ]+R_X86_64_PC32[        ]+xtrn\+0xf+c
 .*[    ]+R_X86_64_PC32[        ]+xtrn\+0xf+c
 .*[    ]+R_X86_64_PC8[         ]+xtrn\+0xf+f
+.*[    ]+R_X86_64_GOT64[       ]+xtrn
 .*[    ]+R_X86_64_GOT32[       ]+xtrn
 .*[    ]+R_X86_64_GOT32[       ]+xtrn
 .*[    ]+R_X86_64_GOTOFF64[    ]+xtrn
@@ -26,7 +27,7 @@ Disassembly of section \.text:
 .*[    ]+R_X86_64_GOTPCREL[    ]+xtrn
 .*[    ]+R_X86_64_GOTPCREL[    ]+xtrn\+0xf+c
 .*[    ]+R_X86_64_GOTPC32[     ]+_GLOBAL_OFFSET_TABLE_\+0x0*2
-.*[    ]+R_X86_64_GOTPC32[     ]+_GLOBAL_OFFSET_TABLE_\+0xf+f
+.*[    ]+R_X86_64_GOTPC32[     ]+_GLOBAL_OFFSET_TABLE_\+0xf+c
 .*[    ]+R_X86_64_GOTPC32[     ]+_GLOBAL_OFFSET_TABLE_\+0x0*2
 .*[    ]+R_X86_64_PLT32[       ]+xtrn
 .*[    ]+R_X86_64_PLT32[       ]+xtrn
@@ -50,7 +51,9 @@ Disassembly of section \.data:
 #...
 .*[    ]+R_X86_64_64[  ]+xtrn
 .*[    ]+R_X86_64_PC64[        ]+xtrn
+.*[    ]+R_X86_64_GOT64[       ]+xtrn
 .*[    ]+R_X86_64_GOTOFF64[    ]+xtrn
+.*[    ]+R_X86_64_GOTPCREL64[  ]+xtrn
 .*[    ]+R_X86_64_DTPOFF64[    ]+xtrn
 .*[    ]+R_X86_64_TPOFF64[     ]+xtrn
 .*[    ]+R_X86_64_32[  ]+xtrn
index 62a762b..87a5c77 100644 (file)
@@ -1,6 +1,5 @@
 .*: Assembler messages:
 .*:29: Error: .*
-.*:33: Error: .*
 .*:35: Error: .*
 .*:36: Error: .*
 .*:37: Error: .*
@@ -50,8 +49,6 @@
 .*:123: Error: .*
 .*:125: Error: .*
 .*:126: Error: .*
-.*:131: Error: .*
-.*:133: Error: .*
 .*:136: Error: .*
 .*:137: Error: .*
 .*:138: Error: .*
index 1ae14dd..47ebfa8 100644 (file)
@@ -30,7 +30,7 @@ bad   mov     xtrn(%eip), %eax
        call    xtrn
        jrcxz   xtrn
 
-bad    movabs  $xtrn@got, %rax
+       movabs  $xtrn@got, %rax
        add     $xtrn@got, %rax
 bad    mov     $xtrn@got, %eax
 bad    mov     $xtrn@got, %ax
@@ -128,9 +128,9 @@ bad call    xtrn@tpoff
  .data
        .quad   xtrn
        .quad   xtrn - .
-bad    .quad   xtrn@got
+       .quad   xtrn@got
        .quad   xtrn@gotoff
-bad    .quad   xtrn@gotpcrel
+       .quad   xtrn@gotpcrel
 ill    .quad   _GLOBAL_OFFSET_TABLE_
 ill    .quad   _GLOBAL_OFFSET_TABLE_ - .
 bad    .quad   xtrn@plt
index 9c07a6f..f43cc5f 100644 (file)
@@ -48,3 +48,4 @@ Disassembly of section .text:
   6e:  f3 67 ab[       ]+rep addr16 stos %eax,%es:\(%di\)
   71:  f3 67 a7[       ]+repz addr16 cmpsl %es:\(%di\),%ds:\(%si\)
   74:  f3 67 af[       ]+repz addr16 scas %es:\(%di\),%eax
+       ...
index eb07d6c..cbda8b3 100644 (file)
@@ -48,3 +48,5 @@ _start:
        addr16 rep stosl
        addr16 repz cmpsl
        addr16 repz scasl
+
+       .p2align        4,0
index 141772f..f285fd2 100644 (file)
@@ -816,3 +816,11 @@ Disassembly of section .text:
 [ 0-9a-f]+:    f222 5838       fcmpb %a2@-,%fp0
 [ 0-9a-f]+:    f22e 5838 0008  fcmpb %fp@\(8\),%fp0
 [ 0-9a-f]+:    f23a 5838 1234  fcmpb %pc@\(.*\),%fp0
+[ 0-9a-f]+:    f22e f0f2 0008  fmovemd %fp0-%fp3/%fp6,%fp@\(8\)
+[ 0-9a-f]+:    f22e d02c 0008  fmovemd %fp@\(8\),%fp2/%fp4-%fp5
+[ 0-9a-f]+:    f22e f027 0008  fmovemd %fp2/%fp5-%fp7,%fp@\(8\)
+[ 0-9a-f]+:    f22e d0e1 0008  fmovemd %fp@\(8\),%fp0-%fp2/%fp7
+[ 0-9a-f]+:    f22e f0f2 0008  fmovemd %fp0-%fp3/%fp6,%fp@\(8\)
+[ 0-9a-f]+:    f22e d02c 0008  fmovemd %fp@\(8\),%fp2/%fp4-%fp5
+[ 0-9a-f]+:    f22e f027 0008  fmovemd %fp2/%fp5-%fp7,%fp@\(8\)
+[ 0-9a-f]+:    f22e d0e1 0008  fmovemd %fp@\(8\),%fp0-%fp2/%fp7
index b7e7687..fd2a156 100644 (file)
        fcmpb   %a2@-,%fp0
        fcmpb   %fp@(8),%fp0
        fcmpb   %pc@(.+0x1238),%fp0
+       fmovemd %fp0-%fp3/%fp6,%fp@(8)
+       fmovemd %fp@(8),%fp5/%fp4/%fp2
+       fmovemd #0x27,%fp@(8)
+       fmovemd %fp@(8),#0xe1
+       fmovem  %fp0-%fp3/%fp6,%fp@(8)
+       fmovem  %fp@(8),%fp5/%fp4/%fp2
+       fmovem  #0x27,%fp@(8)
+       fmovem  %fp@(8),#0xe1
index 3887e18..309e407 100644 (file)
@@ -1,4 +1,4 @@
 .*: Assembler messages:
 .*:4: Error: jump to misaligned address \(0x1\)
 .*:6: Error: jump to misaligned address \(0xfffffff\)
-.*:7: Error: jump address range overflow \(0x10000000\)
+.*:8: Error: jump to misaligned address \(0x10000003\)
index e52f560..cd6cde0 100644 (file)
@@ -1,7 +1,8 @@
-# Source file use to test border cases of jumps
+# Source file used to test misaligned targets of absolute jumps
 
        jal     0x0
        jal     0x1
        jal     0xffffffc
        jal     0xfffffff
        jal     0x10000000
+       jal     0x10000003
index 2599777..7843f2a 100644 (file)
@@ -383,12 +383,14 @@ mips_arch_create sb1      64      mips64  { mips3d } \
                        { -march=sb1 -mtune=sb1 } { -mmips:sb1 } \
                        { mipsisa64sb1-*-* mipsisa64sb1el-*-* }
 
-
 #
-# And now begin the actual tests!
+# And now begin the actual tests!  VxWorks uses RELA rather than REL
+# relocations, so most of the generic dump tests will not work there.
 #
-
-if { [istarget mips*-*-*] } then {
+if { [istarget mips*-*-vxworks*] } {
+    run_dump_test "vxworks1"
+    run_dump_test "vxworks1-xgot"
+} elseif { [istarget mips*-*-*] } {
     set no_mips16 0
     set elf [expr [istarget *-*-elf*] || [istarget *-*-irix5*] || [istarget *-*-irix6* ] || [istarget *-*-linux*] || [istarget *-*-netbsd*] ]
     set ecoff [expr [istarget *-*-ecoff*] || [istarget *-*-ultrix*] || [istarget *-*-irix\[1-4\]*] ]
@@ -777,4 +779,6 @@ if { [istarget mips*-*-*] } then {
         run_dump_test "mips16e-jrc"
         run_dump_test "mips16e-save"
     }
+    run_dump_test "vxworks1"
+    run_dump_test "vxworks1-xgot"
 }
index 1f34ac7..a323b31 100644 (file)
@@ -1,5 +1,5 @@
 #objdump: -dr -mmips:isa32 -mmips:16
-#as: -march=mips32 -mips16
+#as: -march=mips32 -mips16 -32
 #name: mips16e jalrc/jrc
 
 .*: +file format .*mips.*
index 7bc0b99..6e18d8c 100644 (file)
@@ -1,5 +1,5 @@
 #objdump: -dr -mmips:isa32 -mmips:16
-#as: -march=mips32 -mips16
+#as: -march=mips32 -mips16 -32
 #name: mips16e save/restore
 
 .*: +file format .*mips.*
index c1098c1..486f630 100644 (file)
@@ -1,6 +1,6 @@
 #objdump: -dr --prefix-addresses --show-raw-insn
 #name: MIPS DSP ASE for MIPS32
-#as: -mdsp
+#as: -mdsp -32
 #stderr: mips32-dsp.l
 
 # Check MIPS DSP ASE for MIPS32 Instruction Assembly
index 3250bfa..c7d3e7a 100644 (file)
@@ -1,39 +1,39 @@
 .*: Assembler messages:
-.*:39: Warning: DSP immediate not in range 0..7 \(4294967295\)
+.*:39: Warning: DSP immediate not in range 0..7 \([0-9]*\)
 .*:42: Warning: DSP immediate not in range 0..7 \(8\)
-.*:44: Warning: DSP immediate not in range 0..15 \(4294967295\)
+.*:44: Warning: DSP immediate not in range 0..15 \([0-9]*\)
 .*:47: Warning: DSP immediate not in range 0..15 \(16\)
-.*:49: Warning: DSP immediate not in range 0..15 \(4294967295\)
+.*:49: Warning: DSP immediate not in range 0..15 \([0-9]*\)
 .*:52: Warning: DSP immediate not in range 0..15 \(16\)
-.*:54: Warning: DSP immediate not in range 0..31 \(4294967295\)
+.*:54: Warning: DSP immediate not in range 0..31 \([0-9]*\)
 .*:57: Warning: DSP immediate not in range 0..31 \(32\)
-.*:59: Warning: DSP immediate not in range 0..7 \(4294967295\)
+.*:59: Warning: DSP immediate not in range 0..7 \([0-9]*\)
 .*:62: Warning: DSP immediate not in range 0..7 \(8\)
-.*:64: Warning: DSP immediate not in range 0..15 \(4294967295\)
+.*:64: Warning: DSP immediate not in range 0..15 \([0-9]*\)
 .*:67: Warning: DSP immediate not in range 0..15 \(16\)
-.*:69: Warning: DSP immediate not in range 0..15 \(4294967295\)
+.*:69: Warning: DSP immediate not in range 0..15 \([0-9]*\)
 .*:72: Warning: DSP immediate not in range 0..15 \(16\)
-.*:74: Warning: DSP immediate not in range 0..31 \(4294967295\)
+.*:74: Warning: DSP immediate not in range 0..31 \([0-9]*\)
 .*:77: Warning: DSP immediate not in range 0..31 \(32\)
-.*:99: Warning: DSP immediate not in range 0..255 \(4294967295\)
+.*:99: Warning: DSP immediate not in range 0..255 \([0-9]*\)
 .*:102: Warning: DSP immediate not in range 0..255 \(256\)
 .*:104: Warning: DSP immediate not in range -512..511 \(-513\)
 .*:107: Warning: DSP immediate not in range -512..511 \(512\)
-.*:121: Warning: DSP immediate not in range 0..31 \(4294967295\)
+.*:121: Warning: DSP immediate not in range 0..31 \([0-9]*\)
 .*:124: Warning: DSP immediate not in range 0..31 \(32\)
-.*:125: Warning: DSP immediate not in range 0..31 \(4294967295\)
+.*:125: Warning: DSP immediate not in range 0..31 \([0-9]*\)
 .*:128: Warning: DSP immediate not in range 0..31 \(32\)
-.*:129: Warning: DSP immediate not in range 0..31 \(4294967295\)
+.*:129: Warning: DSP immediate not in range 0..31 \([0-9]*\)
 .*:132: Warning: DSP immediate not in range 0..31 \(32\)
-.*:133: Warning: DSP immediate not in range 0..31 \(4294967295\)
+.*:133: Warning: DSP immediate not in range 0..31 \([0-9]*\)
 .*:136: Warning: DSP immediate not in range 0..31 \(32\)
-.*:141: Warning: DSP immediate not in range 0..31 \(4294967295\)
+.*:141: Warning: DSP immediate not in range 0..31 \([0-9]*\)
 .*:144: Warning: DSP immediate not in range 0..31 \(32\)
-.*:146: Warning: DSP immediate not in range 0..31 \(4294967295\)
+.*:146: Warning: DSP immediate not in range 0..31 \([0-9]*\)
 .*:149: Warning: DSP immediate not in range 0..31 \(32\)
 .*:151: Warning: DSP immediate not in range -32..31 \(-33\)
 .*:154: Warning: DSP immediate not in range -32..31 \(32\)
-.*:161: Warning: DSP immediate not in range 0..63 \(4294967295\)
+.*:161: Warning: DSP immediate not in range 0..63 \([0-9]*\)
 .*:164: Warning: DSP immediate not in range 0..63 \(64\)
-.*:166: Warning: DSP immediate not in range 0..63 \(4294967295\)
+.*:166: Warning: DSP immediate not in range 0..63 \([0-9]*\)
 .*:169: Warning: DSP immediate not in range 0..63 \(64\)
index b983195..ffb3e97 100644 (file)
@@ -1,6 +1,6 @@
 #objdump: -dr --prefix-addresses --show-raw-insn -M cp0-names=mips32
 #name: MIPS MT ASE for MIPS32
-#as: -mmt
+#as: -mmt -32
 #stderr: mips32-mt.l
 
 # Check MIPS MT ASE for MIPS32 Instruction Assembly
@@ -567,134 +567,134 @@ Disassembly of section .text:
 0+08b0 <[^>]*> 418a5824        mttc2   t2,\$11
 0+08b4 <[^>]*> 418b6034        mtthc2  t3,\$12
 0+08b8 <[^>]*> 418c6825        cttc2   t4,\$13
-0+08bc <[^>]*> 410d7030        mftr    t5,t6,1,0,1
-0+08c0 <[^>]*> 410d7031        mftr    t5,t6,1,1,1
-0+08c4 <[^>]*> 410d7032        mfthc1  t6,\$f13
-0+08c8 <[^>]*> 410d7033        mftr    t5,t6,1,3,1
-0+08cc <[^>]*> 410d7034        mfthc2  t6,\$13
-0+08d0 <[^>]*> 410d7035        mftr    t5,t6,1,5,1
-0+08d4 <[^>]*> 410d7036        mftr    t5,t6,1,6,1
-0+08d8 <[^>]*> 410d7037        mftr    t5,t6,1,7,1
-0+08dc <[^>]*> 410d7020        mftgpr  t6,t5
-0+08e0 <[^>]*> 410d7021        mfthi   t6,\$ac3
-0+08e4 <[^>]*> 410d7022        mftc1   t6,\$f13
-0+08e8 <[^>]*> 410d7023        cftc1   t6,\$13
-0+08ec <[^>]*> 410d7024        mftc2   t6,\$13
-0+08f0 <[^>]*> 410d7025        cftc2   t6,\$13
-0+08f4 <[^>]*> 410d7026        mftr    t5,t6,1,6,0
-0+08f8 <[^>]*> 410d7027        mftr    t5,t6,1,7,0
-0+08fc <[^>]*> 410d7030        mftr    t5,t6,1,0,1
-0+0900 <[^>]*> 410d7031        mftr    t5,t6,1,1,1
-0+0904 <[^>]*> 410d7032        mfthc1  t6,\$f13
-0+0908 <[^>]*> 410d7033        mftr    t5,t6,1,3,1
-0+090c <[^>]*> 410d7034        mfthc2  t6,\$13
-0+0910 <[^>]*> 410d7035        mftr    t5,t6,1,5,1
-0+0914 <[^>]*> 410d7036        mftr    t5,t6,1,6,1
-0+0918 <[^>]*> 410d7037        mftr    t5,t6,1,7,1
-0+091c <[^>]*> 410d7020        mftgpr  t6,t5
-0+0920 <[^>]*> 410d7021        mfthi   t6,\$ac3
-0+0924 <[^>]*> 410d7022        mftc1   t6,\$f13
-0+0928 <[^>]*> 410d7023        cftc1   t6,\$13
-0+092c <[^>]*> 410d7024        mftc2   t6,\$13
-0+0930 <[^>]*> 410d7025        cftc2   t6,\$13
-0+0934 <[^>]*> 410d7026        mftr    t5,t6,1,6,0
-0+0938 <[^>]*> 410d7027        mftr    t5,t6,1,7,0
-0+093c <[^>]*> 410d7010        mftr    t5,t6,0,0,1
-0+0940 <[^>]*> 410d7011        mftr    t5,t6,0,1,1
-0+0944 <[^>]*> 410d7012        mftr    t5,t6,0,2,1
-0+0948 <[^>]*> 410d7013        mftr    t5,t6,0,3,1
-0+094c <[^>]*> 410d7014        mftr    t5,t6,0,4,1
-0+0950 <[^>]*> 410d7015        mftr    t5,t6,0,5,1
-0+0954 <[^>]*> 410d7016        mftr    t5,t6,0,6,1
-0+0958 <[^>]*> 410d7017        mftr    t5,t6,0,7,1
-0+095c <[^>]*> 410d7000        mftc0   t6,c0_cause
-0+0960 <[^>]*> 410d7001        mftc0   t6,\$13,1
-0+0964 <[^>]*> 410d7002        mftc0   t6,\$13,2
-0+0968 <[^>]*> 410d7003        mftc0   t6,\$13,3
-0+096c <[^>]*> 410d7004        mftc0   t6,\$13,4
-0+0970 <[^>]*> 410d7005        mftc0   t6,\$13,5
-0+0974 <[^>]*> 410d7006        mftc0   t6,\$13,6
-0+0978 <[^>]*> 410d7007        mftc0   t6,\$13,7
-0+097c <[^>]*> 410d7010        mftr    t5,t6,0,0,1
-0+0980 <[^>]*> 410d7011        mftr    t5,t6,0,1,1
-0+0984 <[^>]*> 410d7012        mftr    t5,t6,0,2,1
-0+0988 <[^>]*> 410d7013        mftr    t5,t6,0,3,1
-0+098c <[^>]*> 410d7014        mftr    t5,t6,0,4,1
-0+0990 <[^>]*> 410d7015        mftr    t5,t6,0,5,1
-0+0994 <[^>]*> 410d7016        mftr    t5,t6,0,6,1
-0+0998 <[^>]*> 410d7017        mftr    t5,t6,0,7,1
-0+099c <[^>]*> 410d7000        mftc0   t6,c0_cause
-0+09a0 <[^>]*> 410d7001        mftc0   t6,\$13,1
-0+09a4 <[^>]*> 410d7002        mftc0   t6,\$13,2
-0+09a8 <[^>]*> 410d7003        mftc0   t6,\$13,3
-0+09ac <[^>]*> 410d7004        mftc0   t6,\$13,4
-0+09b0 <[^>]*> 410d7005        mftc0   t6,\$13,5
-0+09b4 <[^>]*> 410d7006        mftc0   t6,\$13,6
-0+09b8 <[^>]*> 410d7007        mftc0   t6,\$13,7
-0+09bc <[^>]*> 410d7030        mftr    t5,t6,1,0,1
-0+09c0 <[^>]*> 410d7031        mftr    t5,t6,1,1,1
-0+09c4 <[^>]*> 410d7032        mfthc1  t6,\$f13
-0+09c8 <[^>]*> 410d7033        mftr    t5,t6,1,3,1
-0+09cc <[^>]*> 410d7034        mfthc2  t6,\$13
-0+09d0 <[^>]*> 410d7035        mftr    t5,t6,1,5,1
-0+09d4 <[^>]*> 410d7036        mftr    t5,t6,1,6,1
-0+09d8 <[^>]*> 410d7037        mftr    t5,t6,1,7,1
-0+09dc <[^>]*> 410d7020        mftgpr  t6,t5
-0+09e0 <[^>]*> 410d7021        mfthi   t6,\$ac3
-0+09e4 <[^>]*> 410d7022        mftc1   t6,\$f13
-0+09e8 <[^>]*> 410d7023        cftc1   t6,\$13
-0+09ec <[^>]*> 410d7024        mftc2   t6,\$13
-0+09f0 <[^>]*> 410d7025        cftc2   t6,\$13
-0+09f4 <[^>]*> 410d7026        mftr    t5,t6,1,6,0
-0+09f8 <[^>]*> 410d7027        mftr    t5,t6,1,7,0
-0+09fc <[^>]*> 410d7030        mftr    t5,t6,1,0,1
-0+0a00 <[^>]*> 410d7031        mftr    t5,t6,1,1,1
-0+0a04 <[^>]*> 410d7032        mfthc1  t6,\$f13
-0+0a08 <[^>]*> 410d7033        mftr    t5,t6,1,3,1
-0+0a0c <[^>]*> 410d7034        mfthc2  t6,\$13
-0+0a10 <[^>]*> 410d7035        mftr    t5,t6,1,5,1
-0+0a14 <[^>]*> 410d7036        mftr    t5,t6,1,6,1
-0+0a18 <[^>]*> 410d7037        mftr    t5,t6,1,7,1
-0+0a1c <[^>]*> 410d7020        mftgpr  t6,t5
-0+0a20 <[^>]*> 410d7021        mfthi   t6,\$ac3
-0+0a24 <[^>]*> 410d7022        mftc1   t6,\$f13
-0+0a28 <[^>]*> 410d7023        cftc1   t6,\$13
-0+0a2c <[^>]*> 410d7024        mftc2   t6,\$13
-0+0a30 <[^>]*> 410d7025        cftc2   t6,\$13
-0+0a34 <[^>]*> 410d7026        mftr    t5,t6,1,6,0
-0+0a38 <[^>]*> 410d7027        mftr    t5,t6,1,7,0
-0+0a3c <[^>]*> 410d7010        mftr    t5,t6,0,0,1
-0+0a40 <[^>]*> 410d7011        mftr    t5,t6,0,1,1
-0+0a44 <[^>]*> 410d7012        mftr    t5,t6,0,2,1
-0+0a48 <[^>]*> 410d7013        mftr    t5,t6,0,3,1
-0+0a4c <[^>]*> 410d7014        mftr    t5,t6,0,4,1
-0+0a50 <[^>]*> 410d7015        mftr    t5,t6,0,5,1
-0+0a54 <[^>]*> 410d7016        mftr    t5,t6,0,6,1
-0+0a58 <[^>]*> 410d7017        mftr    t5,t6,0,7,1
-0+0a5c <[^>]*> 410d7000        mftc0   t6,c0_cause
-0+0a60 <[^>]*> 410d7001        mftc0   t6,\$13,1
-0+0a64 <[^>]*> 410d7002        mftc0   t6,\$13,2
-0+0a68 <[^>]*> 410d7003        mftc0   t6,\$13,3
-0+0a6c <[^>]*> 410d7004        mftc0   t6,\$13,4
-0+0a70 <[^>]*> 410d7005        mftc0   t6,\$13,5
-0+0a74 <[^>]*> 410d7006        mftc0   t6,\$13,6
-0+0a78 <[^>]*> 410d7007        mftc0   t6,\$13,7
-0+0a7c <[^>]*> 410d7010        mftr    t5,t6,0,0,1
-0+0a80 <[^>]*> 410d7011        mftr    t5,t6,0,1,1
-0+0a84 <[^>]*> 410d7012        mftr    t5,t6,0,2,1
-0+0a88 <[^>]*> 410d7013        mftr    t5,t6,0,3,1
-0+0a8c <[^>]*> 410d7014        mftr    t5,t6,0,4,1
-0+0a90 <[^>]*> 410d7015        mftr    t5,t6,0,5,1
-0+0a94 <[^>]*> 410d7016        mftr    t5,t6,0,6,1
-0+0a98 <[^>]*> 410d7017        mftr    t5,t6,0,7,1
-0+0a9c <[^>]*> 410d7000        mftc0   t6,c0_cause
-0+0aa0 <[^>]*> 410d7001        mftc0   t6,\$13,1
-0+0aa4 <[^>]*> 410d7002        mftc0   t6,\$13,2
-0+0aa8 <[^>]*> 410d7003        mftc0   t6,\$13,3
-0+0aac <[^>]*> 410d7004        mftc0   t6,\$13,4
-0+0ab0 <[^>]*> 410d7005        mftc0   t6,\$13,5
-0+0ab4 <[^>]*> 410d7006        mftc0   t6,\$13,6
-0+0ab8 <[^>]*> 410d7007        mftc0   t6,\$13,7
+0+08bc <[^>]*> 410e6830        mftr    t5,t6,1,0,1
+0+08c0 <[^>]*> 410e6831        mftr    t5,t6,1,1,1
+0+08c4 <[^>]*> 410e6832        mfthc1  t5,\$f14
+0+08c8 <[^>]*> 410e6833        mftr    t5,t6,1,3,1
+0+08cc <[^>]*> 410e6834        mfthc2  t5,\$14
+0+08d0 <[^>]*> 410e6835        mftr    t5,t6,1,5,1
+0+08d4 <[^>]*> 410e6836        mftr    t5,t6,1,6,1
+0+08d8 <[^>]*> 410e6837        mftr    t5,t6,1,7,1
+0+08dc <[^>]*> 410e6820        mftgpr  t5,t6
+0+08e0 <[^>]*> 410e6821        mftacx  t5,\$ac3
+0+08e4 <[^>]*> 410e6822        mftc1   t5,\$f14
+0+08e8 <[^>]*> 410e6823        cftc1   t5,\$14
+0+08ec <[^>]*> 410e6824        mftc2   t5,\$14
+0+08f0 <[^>]*> 410e6825        cftc2   t5,\$14
+0+08f4 <[^>]*> 410e6826        mftr    t5,t6,1,6,0
+0+08f8 <[^>]*> 410e6827        mftr    t5,t6,1,7,0
+0+08fc <[^>]*> 410e6830        mftr    t5,t6,1,0,1
+0+0900 <[^>]*> 410e6831        mftr    t5,t6,1,1,1
+0+0904 <[^>]*> 410e6832        mfthc1  t5,\$f14
+0+0908 <[^>]*> 410e6833        mftr    t5,t6,1,3,1
+0+090c <[^>]*> 410e6834        mfthc2  t5,\$14
+0+0910 <[^>]*> 410e6835        mftr    t5,t6,1,5,1
+0+0914 <[^>]*> 410e6836        mftr    t5,t6,1,6,1
+0+0918 <[^>]*> 410e6837        mftr    t5,t6,1,7,1
+0+091c <[^>]*> 410e6820        mftgpr  t5,t6
+0+0920 <[^>]*> 410e6821        mftacx  t5,\$ac3
+0+0924 <[^>]*> 410e6822        mftc1   t5,\$f14
+0+0928 <[^>]*> 410e6823        cftc1   t5,\$14
+0+092c <[^>]*> 410e6824        mftc2   t5,\$14
+0+0930 <[^>]*> 410e6825        cftc2   t5,\$14
+0+0934 <[^>]*> 410e6826        mftr    t5,t6,1,6,0
+0+0938 <[^>]*> 410e6827        mftr    t5,t6,1,7,0
+0+093c <[^>]*> 410e6810        mftr    t5,t6,0,0,1
+0+0940 <[^>]*> 410e6811        mftr    t5,t6,0,1,1
+0+0944 <[^>]*> 410e6812        mftr    t5,t6,0,2,1
+0+0948 <[^>]*> 410e6813        mftr    t5,t6,0,3,1
+0+094c <[^>]*> 410e6814        mftr    t5,t6,0,4,1
+0+0950 <[^>]*> 410e6815        mftr    t5,t6,0,5,1
+0+0954 <[^>]*> 410e6816        mftr    t5,t6,0,6,1
+0+0958 <[^>]*> 410e6817        mftr    t5,t6,0,7,1
+0+095c <[^>]*> 410e6800        mftc0   t5,c0_epc
+0+0960 <[^>]*> 410e6801        mftc0   t5,\$14,1
+0+0964 <[^>]*> 410e6802        mftc0   t5,\$14,2
+0+0968 <[^>]*> 410e6803        mftc0   t5,\$14,3
+0+096c <[^>]*> 410e6804        mftc0   t5,\$14,4
+0+0970 <[^>]*> 410e6805        mftc0   t5,\$14,5
+0+0974 <[^>]*> 410e6806        mftc0   t5,\$14,6
+0+0978 <[^>]*> 410e6807        mftc0   t5,\$14,7
+0+097c <[^>]*> 410e6810        mftr    t5,t6,0,0,1
+0+0980 <[^>]*> 410e6811        mftr    t5,t6,0,1,1
+0+0984 <[^>]*> 410e6812        mftr    t5,t6,0,2,1
+0+0988 <[^>]*> 410e6813        mftr    t5,t6,0,3,1
+0+098c <[^>]*> 410e6814        mftr    t5,t6,0,4,1
+0+0990 <[^>]*> 410e6815        mftr    t5,t6,0,5,1
+0+0994 <[^>]*> 410e6816        mftr    t5,t6,0,6,1
+0+0998 <[^>]*> 410e6817        mftr    t5,t6,0,7,1
+0+099c <[^>]*> 410e6800        mftc0   t5,c0_epc
+0+09a0 <[^>]*> 410e6801        mftc0   t5,\$14,1
+0+09a4 <[^>]*> 410e6802        mftc0   t5,\$14,2
+0+09a8 <[^>]*> 410e6803        mftc0   t5,\$14,3
+0+09ac <[^>]*> 410e6804        mftc0   t5,\$14,4
+0+09b0 <[^>]*> 410e6805        mftc0   t5,\$14,5
+0+09b4 <[^>]*> 410e6806        mftc0   t5,\$14,6
+0+09b8 <[^>]*> 410e6807        mftc0   t5,\$14,7
+0+09bc <[^>]*> 410e6830        mftr    t5,t6,1,0,1
+0+09c0 <[^>]*> 410e6831        mftr    t5,t6,1,1,1
+0+09c4 <[^>]*> 410e6832        mfthc1  t5,\$f14
+0+09c8 <[^>]*> 410e6833        mftr    t5,t6,1,3,1
+0+09cc <[^>]*> 410e6834        mfthc2  t5,\$14
+0+09d0 <[^>]*> 410e6835        mftr    t5,t6,1,5,1
+0+09d4 <[^>]*> 410e6836        mftr    t5,t6,1,6,1
+0+09d8 <[^>]*> 410e6837        mftr    t5,t6,1,7,1
+0+09dc <[^>]*> 410e6820        mftgpr  t5,t6
+0+09e0 <[^>]*> 410e6821        mftacx  t5,\$ac3
+0+09e4 <[^>]*> 410e6822        mftc1   t5,\$f14
+0+09e8 <[^>]*> 410e6823        cftc1   t5,\$14
+0+09ec <[^>]*> 410e6824        mftc2   t5,\$14
+0+09f0 <[^>]*> 410e6825        cftc2   t5,\$14
+0+09f4 <[^>]*> 410e6826        mftr    t5,t6,1,6,0
+0+09f8 <[^>]*> 410e6827        mftr    t5,t6,1,7,0
+0+09fc <[^>]*> 410e6830        mftr    t5,t6,1,0,1
+0+0a00 <[^>]*> 410e6831        mftr    t5,t6,1,1,1
+0+0a04 <[^>]*> 410e6832        mfthc1  t5,\$f14
+0+0a08 <[^>]*> 410e6833        mftr    t5,t6,1,3,1
+0+0a0c <[^>]*> 410e6834        mfthc2  t5,\$14
+0+0a10 <[^>]*> 410e6835        mftr    t5,t6,1,5,1
+0+0a14 <[^>]*> 410e6836        mftr    t5,t6,1,6,1
+0+0a18 <[^>]*> 410e6837        mftr    t5,t6,1,7,1
+0+0a1c <[^>]*> 410e6820        mftgpr  t5,t6
+0+0a20 <[^>]*> 410e6821        mftacx  t5,\$ac3
+0+0a24 <[^>]*> 410e6822        mftc1   t5,\$f14
+0+0a28 <[^>]*> 410e6823        cftc1   t5,\$14
+0+0a2c <[^>]*> 410e6824        mftc2   t5,\$14
+0+0a30 <[^>]*> 410e6825        cftc2   t5,\$14
+0+0a34 <[^>]*> 410e6826        mftr    t5,t6,1,6,0
+0+0a38 <[^>]*> 410e6827        mftr    t5,t6,1,7,0
+0+0a3c <[^>]*> 410e6810        mftr    t5,t6,0,0,1
+0+0a40 <[^>]*> 410e6811        mftr    t5,t6,0,1,1
+0+0a44 <[^>]*> 410e6812        mftr    t5,t6,0,2,1
+0+0a48 <[^>]*> 410e6813        mftr    t5,t6,0,3,1
+0+0a4c <[^>]*> 410e6814        mftr    t5,t6,0,4,1
+0+0a50 <[^>]*> 410e6815        mftr    t5,t6,0,5,1
+0+0a54 <[^>]*> 410e6816        mftr    t5,t6,0,6,1
+0+0a58 <[^>]*> 410e6817        mftr    t5,t6,0,7,1
+0+0a5c <[^>]*> 410e6800        mftc0   t5,c0_epc
+0+0a60 <[^>]*> 410e6801        mftc0   t5,\$14,1
+0+0a64 <[^>]*> 410e6802        mftc0   t5,\$14,2
+0+0a68 <[^>]*> 410e6803        mftc0   t5,\$14,3
+0+0a6c <[^>]*> 410e6804        mftc0   t5,\$14,4
+0+0a70 <[^>]*> 410e6805        mftc0   t5,\$14,5
+0+0a74 <[^>]*> 410e6806        mftc0   t5,\$14,6
+0+0a78 <[^>]*> 410e6807        mftc0   t5,\$14,7
+0+0a7c <[^>]*> 410e6810        mftr    t5,t6,0,0,1
+0+0a80 <[^>]*> 410e6811        mftr    t5,t6,0,1,1
+0+0a84 <[^>]*> 410e6812        mftr    t5,t6,0,2,1
+0+0a88 <[^>]*> 410e6813        mftr    t5,t6,0,3,1
+0+0a8c <[^>]*> 410e6814        mftr    t5,t6,0,4,1
+0+0a90 <[^>]*> 410e6815        mftr    t5,t6,0,5,1
+0+0a94 <[^>]*> 410e6816        mftr    t5,t6,0,6,1
+0+0a98 <[^>]*> 410e6817        mftr    t5,t6,0,7,1
+0+0a9c <[^>]*> 410e6800        mftc0   t5,c0_epc
+0+0aa0 <[^>]*> 410e6801        mftc0   t5,\$14,1
+0+0aa4 <[^>]*> 410e6802        mftc0   t5,\$14,2
+0+0aa8 <[^>]*> 410e6803        mftc0   t5,\$14,3
+0+0aac <[^>]*> 410e6804        mftc0   t5,\$14,4
+0+0ab0 <[^>]*> 410e6805        mftc0   t5,\$14,5
+0+0ab4 <[^>]*> 410e6806        mftc0   t5,\$14,6
+0+0ab8 <[^>]*> 410e6807        mftc0   t5,\$14,7
 0+0abc <[^>]*> 418d7030        mttr    t5,t6,1,0,1
 0+0ac0 <[^>]*> 418d7031        mttr    t5,t6,1,1,1
 0+0ac4 <[^>]*> 418d7032        mtthc1  t5,\$f14
@@ -823,4 +823,4 @@ Disassembly of section .text:
 0+0cb0 <[^>]*> 418d7005        mttc0   t5,\$14,5
 0+0cb4 <[^>]*> 418d7006        mttc0   t5,\$14,6
 0+0cb8 <[^>]*> 418d7007        mttc0   t5,\$14,7
-       ...
+       \.\.\.
index 965a834..a3f32f2 100644 (file)
@@ -1,60 +1,60 @@
 .*: Assembler messages:
-.*:568: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:568: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:569: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:569: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:570: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:570: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:571: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:571: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:572: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:572: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:573: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:573: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:574: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:574: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:575: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:575: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:576: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:577: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:578: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:579: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:580: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:581: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:582: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:583: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:584: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:585: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:586: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:587: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:588: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:589: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:590: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:591: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:592: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:568: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:568: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:569: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:569: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:570: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:570: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:571: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:571: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:572: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:572: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:573: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:573: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:574: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:574: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:575: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:575: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:576: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:577: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:578: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:579: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:580: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:581: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:582: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:583: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:584: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:585: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:586: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:587: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:588: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:589: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:590: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:591: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:592: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:592: Warning: MT immediate not in range 0..1 \(2\)
-.*:593: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:593: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:593: Warning: MT immediate not in range 0..1 \(2\)
-.*:594: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:594: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:594: Warning: MT immediate not in range 0..1 \(2\)
-.*:595: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:595: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:595: Warning: MT immediate not in range 0..1 \(2\)
-.*:596: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:596: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:596: Warning: MT immediate not in range 0..1 \(2\)
-.*:597: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:597: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:597: Warning: MT immediate not in range 0..1 \(2\)
-.*:598: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:598: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:598: Warning: MT immediate not in range 0..1 \(2\)
-.*:599: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:599: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:599: Warning: MT immediate not in range 0..1 \(2\)
-.*:600: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:601: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:602: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:603: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:604: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:605: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:606: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:607: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:600: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:601: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:602: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:603: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:604: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:605: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:606: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:607: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:624: Warning: MT immediate not in range 0..1 \(2\)
 .*:625: Warning: MT immediate not in range 0..1 \(2\)
 .*:626: Warning: MT immediate not in range 0..1 \(2\)
 .*:629: Warning: MT immediate not in range 0..1 \(2\)
 .*:630: Warning: MT immediate not in range 0..1 \(2\)
 .*:631: Warning: MT immediate not in range 0..1 \(2\)
-.*:632: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:633: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:634: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:635: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:636: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:637: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:638: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:639: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:632: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:633: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:634: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:635: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:636: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:637: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:638: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:639: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:656: Warning: MT immediate not in range 0..1 \(2\)
 .*:657: Warning: MT immediate not in range 0..1 \(2\)
 .*:658: Warning: MT immediate not in range 0..1 \(2\)
 .*:662: Warning: MT immediate not in range 0..1 \(2\)
 .*:663: Warning: MT immediate not in range 0..1 \(2\)
 .*:664: Warning: MT immediate not in range 0..1 \(2\)
-.*:664: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:664: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:665: Warning: MT immediate not in range 0..1 \(2\)
-.*:665: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:665: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:666: Warning: MT immediate not in range 0..1 \(2\)
-.*:666: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:666: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:667: Warning: MT immediate not in range 0..1 \(2\)
-.*:667: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:667: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:668: Warning: MT immediate not in range 0..1 \(2\)
-.*:668: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:668: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:669: Warning: MT immediate not in range 0..1 \(2\)
-.*:669: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:669: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:670: Warning: MT immediate not in range 0..1 \(2\)
-.*:670: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:670: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:671: Warning: MT immediate not in range 0..1 \(2\)
-.*:671: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:671: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:672: Warning: MT immediate not in range 0..1 \(2\)
 .*:673: Warning: MT immediate not in range 0..1 \(2\)
 .*:674: Warning: MT immediate not in range 0..1 \(2\)
 .*:694: Warning: MT immediate not in range 0..1 \(2\)
 .*:695: Warning: MT immediate not in range 0..1 \(2\)
 .*:695: Warning: MT immediate not in range 0..1 \(2\)
-.*:696: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:696: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:697: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:697: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:698: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:698: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:699: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:699: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:700: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:700: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:701: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:701: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:702: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:702: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:703: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:703: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:704: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:705: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:706: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:707: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:708: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:709: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:710: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:711: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:712: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:713: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:714: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:715: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:716: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:717: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:718: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:719: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:720: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:696: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:696: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:697: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:697: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:698: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:698: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:699: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:699: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:700: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:700: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:701: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:701: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:702: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:702: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:703: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:703: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:704: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:705: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:706: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:707: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:708: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:709: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:710: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:711: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:712: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:713: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:714: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:715: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:716: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:717: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:718: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:719: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:720: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:720: Warning: MT immediate not in range 0..1 \(2\)
-.*:721: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:721: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:721: Warning: MT immediate not in range 0..1 \(2\)
-.*:722: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:722: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:722: Warning: MT immediate not in range 0..1 \(2\)
-.*:723: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:723: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:723: Warning: MT immediate not in range 0..1 \(2\)
-.*:724: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:724: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:724: Warning: MT immediate not in range 0..1 \(2\)
-.*:725: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:725: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:725: Warning: MT immediate not in range 0..1 \(2\)
-.*:726: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:726: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:726: Warning: MT immediate not in range 0..1 \(2\)
-.*:727: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:727: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:727: Warning: MT immediate not in range 0..1 \(2\)
-.*:728: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:729: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:730: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:731: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:732: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:733: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:734: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:735: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:728: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:729: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:730: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:731: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:732: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:733: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:734: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:735: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:752: Warning: MT immediate not in range 0..1 \(2\)
 .*:753: Warning: MT immediate not in range 0..1 \(2\)
 .*:754: Warning: MT immediate not in range 0..1 \(2\)
 .*:757: Warning: MT immediate not in range 0..1 \(2\)
 .*:758: Warning: MT immediate not in range 0..1 \(2\)
 .*:759: Warning: MT immediate not in range 0..1 \(2\)
-.*:760: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:761: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:762: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:763: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:764: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:765: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:766: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:767: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:760: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:761: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:762: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:763: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:764: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:765: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:766: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:767: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:784: Warning: MT immediate not in range 0..1 \(2\)
 .*:785: Warning: MT immediate not in range 0..1 \(2\)
 .*:786: Warning: MT immediate not in range 0..1 \(2\)
 .*:790: Warning: MT immediate not in range 0..1 \(2\)
 .*:791: Warning: MT immediate not in range 0..1 \(2\)
 .*:792: Warning: MT immediate not in range 0..1 \(2\)
-.*:792: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:792: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:793: Warning: MT immediate not in range 0..1 \(2\)
-.*:793: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:793: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:794: Warning: MT immediate not in range 0..1 \(2\)
-.*:794: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:794: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:795: Warning: MT immediate not in range 0..1 \(2\)
-.*:795: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:795: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:796: Warning: MT immediate not in range 0..1 \(2\)
-.*:796: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:796: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:797: Warning: MT immediate not in range 0..1 \(2\)
-.*:797: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:797: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:798: Warning: MT immediate not in range 0..1 \(2\)
-.*:798: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:798: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:799: Warning: MT immediate not in range 0..1 \(2\)
-.*:799: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:799: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:800: Warning: MT immediate not in range 0..1 \(2\)
 .*:801: Warning: MT immediate not in range 0..1 \(2\)
 .*:802: Warning: MT immediate not in range 0..1 \(2\)
index 4189ddb..a2e362d 100644 (file)
@@ -17,7 +17,7 @@ proc gas_64_check { } {
 }
 
 proc sparc_elf_setup { } {
-    setup_xfail "sparc*-*-*aout*" "sparc*-*-sunos4*" "sparc*-*-vxworks*"
+    setup_xfail "sparc*-*-*aout*" "sparc*-*-sunos4*"
     setup_xfail "sparc*-fujitsu-none" "sparc*-*-*n*bsd*"
     setup_xfail "sparc*-*-coff" "sparc*-*-lynxos*"
     clear_xfail "sparc64*-*-*n*bsd*"
@@ -50,6 +50,10 @@ if [istarget sparc*-*-*] {
     }
 }
 
+if [istarget sparc-*-vxworks*] {
+    run_dump_test "vxworks-pic"
+}
+
 if [istarget sparclet*-*-*] {
     run_dump_test "splet"
     run_dump_test "splet-2"
index 5c336d8..9186717 100644 (file)
@@ -512,19 +512,21 @@ cvt_frag_to_fill (segT sec ATTRIBUTE_UNUSED, fragS *fragP)
 #endif
 }
 
-static void relax_seg (bfd *, asection *, PTR);
+struct relax_seg_info
+{
+  int pass;
+  int changed;
+};
 
 static void
-relax_seg (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, PTR xxx)
+relax_seg (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *xxx)
 {
   segment_info_type *seginfo = seg_info (sec);
+  struct relax_seg_info *info = (struct relax_seg_info *) xxx;
 
   if (seginfo && seginfo->frchainP
-      && relax_segment (seginfo->frchainP->frch_root, sec))
-    {
-      int *result = (int *) xxx;
-      *result = 1;
-    }
+      && relax_segment (seginfo->frchainP->frch_root, sec, info->pass))
+    info->changed = 1;
 }
 
 static void size_seg (bfd *, asection *, PTR);
@@ -1197,6 +1199,7 @@ subsegs_finish (void)
 void
 write_object_file (void)
 {
+  struct relax_seg_info rsi;
 #ifndef WORKING_DOT_WORD
   fragS *fragP;                        /* Track along all frags.  */
 #endif
@@ -1255,10 +1258,9 @@ write_object_file (void)
       merge_data_into_text ();
     }
 
+  rsi.pass = 0;
   while (1)
     {
-      int changed;
-
 #ifndef WORKING_DOT_WORD
       /* We need to reset the markers in the broken word list and
         associated frags between calls to relax_segment (via
@@ -1279,9 +1281,10 @@ write_object_file (void)
        }
 #endif
 
-      changed = 0;
-      bfd_map_over_sections (stdoutput, relax_seg, &changed);
-      if (!changed)
+      rsi.changed = 0;
+      bfd_map_over_sections (stdoutput, relax_seg, &rsi);
+      rsi.pass++;
+      if (!rsi.changed)
        break;
     }
 
@@ -1712,7 +1715,7 @@ relax_align (register relax_addressT address,     /* Address now.  */
    addresses.  */
 
 int
-relax_segment (struct frag *segment_frag_root, segT segment)
+relax_segment (struct frag *segment_frag_root, segT segment, int pass)
 {
   unsigned long frag_count;
   struct frag *fragP;
@@ -1826,6 +1829,7 @@ relax_segment (struct frag *segment_frag_root, segT segment)
     if (max_iterations < frag_count)
       max_iterations = frag_count;
 
+    ret = 0;
     do
       {
        stretch = 0;
@@ -1955,6 +1959,26 @@ relax_segment (struct frag *segment_frag_root, segT segment)
                  growth = target - after;
                  if (growth < 0)
                    {
+                     growth = 0;
+
+                     /* Don't error on first few frag relax passes.
+                        The symbol might be an expression involving
+                        symbol values from other sections.  If those
+                        sections have not yet been processed their
+                        frags will all have zero addresses, so we
+                        will calculate incorrect values for them.  The
+                        number of passes we allow before giving an
+                        error is somewhat arbitrary.  It should be at
+                        least one, with larger values requiring
+                        increasingly contrived dependencies between
+                        frags to trigger a false error.  */
+                     if (pass < 2)
+                       {
+                         /* Force another pass.  */
+                         ret = 1;
+                         break;
+                       }
+
                      /* Growth may be negative, but variable part of frag
                         cannot have fewer than 0 chars.  That is, we can't
                         .org backwards.  */
@@ -1967,7 +1991,7 @@ relax_segment (struct frag *segment_frag_root, segT segment)
                      fragP->fr_subtype = 0;
                      fragP->fr_offset = 0;
                      fragP->fr_fix = after - was_address;
-                     growth = stretch;
+                     break;
                    }
 
                  /* This is an absolute growth factor  */
@@ -1993,6 +2017,14 @@ relax_segment (struct frag *segment_frag_root, segT segment)
                      }
                    else if (amount < 0)
                      {
+                       /* Don't error on first few frag relax passes.
+                          See rs_org comment for a longer explanation.  */
+                       if (pass < 2)
+                         {
+                           ret = 1;
+                           break;
+                         }
+
                        as_warn_where (fragP->fr_file, fragP->fr_line,
                                       _(".space or .fill with negative value, ignored"));
                        fragP->fr_symbol = 0;
@@ -2054,7 +2086,6 @@ relax_segment (struct frag *segment_frag_root, segT segment)
                segment_name (segment));
   }
 
-  ret = 0;
   for (fragP = segment_frag_root; fragP; fragP = fragP->fr_next)
     if (fragP->last_fr_address != fragP->fr_address)
       {
index 77ce75e..1f9b72d 100644 (file)
@@ -1,6 +1,6 @@
 /* write.h
    Copyright 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001,
-   2002, 2003, 2005 Free Software Foundation, Inc.
+   2002, 2003, 2005, 2006 Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
 
@@ -156,7 +156,7 @@ extern int get_recorded_alignment (segT seg);
 extern void subsegs_finish (void);
 extern void write_object_file (void);
 extern long relax_frag (segT, fragS *, long);
-extern int relax_segment (struct frag * seg_frag_root, segT seg_type);
+extern int relax_segment (struct frag *, segT, int);
 extern void number_to_chars_littleendian (char *, valueT, int);
 extern void number_to_chars_bigendian (char *, valueT, int);
 extern fixS *fix_new
index 97d68b0..8768a37 100644 (file)
@@ -1,3 +1,25 @@
+2006-06-07  Joseph S. Myers  <joseph@codesourcery.com>
+
+       * po/Make-in (pdf, ps): New dummy targets.
+
+2006-05-30  Nick Clifton  <nickc@redhat.com>
+
+       * po/es.po: Updated Spanish translation.
+
+2006-04-06  Carlos O'Donell  <carlos@codesourcery.com>
+
+       * po/Make-in: Add install-html target.
+       * Makefile.am: Add install-html, install-html-am and 
+       install-html-recursive targets. 
+       * Makefile.in: Regenerate.
+       * configure.in: AC_SUBST datarootdir, docdir, htmldir.
+       * configure: Regenerate.
+
+2006-03-21  Ben Elliston  <bje@au.ibm.com>
+
+       * corefile.c (core_init): Report that the executable is not in the
+       expected executable format rather than "a.out" format.
+
 2006-03-09  Nick Clifton  <nickc@redhat.com>
 
        * po/sv.po: Updated Swedish translation.
index e02d958..a8620ef 100644 (file)
@@ -155,7 +155,7 @@ core_init (const char *aout_name)
 
   if (!bfd_check_format (core_bfd, bfd_object))
     {
-      fprintf (stderr, _("%s: %s: not in a.out format\n"), whoami, aout_name);
+      fprintf (stderr, _("%s: %s: not in executable format\n"), whoami, aout_name);
       done (1);
     }
 
index 76ba8c1..42863f2 100644 (file)
@@ -1,6 +1,6 @@
 # Makefile for program source directory in GNU NLS utilities package.
 # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
-# Copyright 2002, 2003 Free Software Foundation, Inc.
+# Copyright 2002, 2003, 2006 Free Software Foundation, Inc.
 #
 # This file may be copied and used freely without restrictions.  It can
 # be used in projects which are not available under the GNU Public License
@@ -186,7 +186,7 @@ check: all
 
 cat-id-tbl.o: ../intl/libgettext.h
 
-html dvi info tags TAGS ID:
+html dvi pdf ps info tags TAGS ID:
 
 mostlyclean:
        rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
index 0b8e6f3..d6cdc90 100644 (file)
@@ -1,13 +1,13 @@
-# Mensajes en español para gprof 2.15.96.
-# Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-# Cristian Othón Martínez Vera <cfuga@itam.mx>, 2002, 2003, 2004, 2005.
+# Mensajes en español para gprof 2.16.93.
+# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# Cristian Othón Martínez Vera <cfuga@itam.mx>, 2002, 2003, 2004, 2005, 2006.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gprof 2.15.96\n"
+"Project-Id-Version: gprof 2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-03 21:05+1030\n"
-"PO-Revision-Date: 2005-03-14 17:12-0600\n"
+"POT-Creation-Date: 2005-10-01 07:23+0930\n"
+"PO-Revision-Date: 2006-05-26 13:16-0500\n"
 "Last-Translator: Cristian Othón Martínez Vera <cfuga@itam.mx>\n"
 "Language-Team: Spanish <es@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -44,16 +44,16 @@ msgid "%s: warning: ignoring basic-block exec counts (use -l or --line)\n"
 msgstr "%s: aviso: ignorando las cuentas de ejecución de bloques básicos (use -l o --line)\n"
 
 #. FIXME: This only works if bfd_vma is unsigned long.
-#: basic_blocks.c:287 basic_blocks.c:297
+#: basic_blocks.c:289 basic_blocks.c:299
 #, c-format
 msgid "%s:%d: (%s:0x%lx) %lu executions\n"
 msgstr "%s:%d: (%s:0x%lx) %lu ejecuciones\n"
 
-#: basic_blocks.c:288 basic_blocks.c:298
+#: basic_blocks.c:290 basic_blocks.c:300
 msgid "<unknown>"
 msgstr "<desconocido>"
 
-#: basic_blocks.c:541
+#: basic_blocks.c:543
 #, c-format
 msgid ""
 "\n"
@@ -70,7 +70,7 @@ msgstr ""
 "     Línea     Cuenta\n"
 "\n"
 
-#: basic_blocks.c:565
+#: basic_blocks.c:567
 #, c-format
 msgid ""
 "\n"
@@ -81,22 +81,22 @@ msgstr ""
 "Resumen de Ejecución:\n"
 "\n"
 
-#: basic_blocks.c:566
+#: basic_blocks.c:568
 #, c-format
 msgid "%9ld   Executable lines in this file\n"
 msgstr "%9ld   Líneas ejecutables en este fichero\n"
 
-#: basic_blocks.c:568
+#: basic_blocks.c:570
 #, c-format
 msgid "%9ld   Lines executed\n"
 msgstr "%9ld   Líneas ejecutadas\n"
 
-#: basic_blocks.c:569
+#: basic_blocks.c:571
 #, c-format
 msgid "%9.2f   Percent of the file executed\n"
 msgstr "%9.2f   Porcentaje ejecutado del fichero\n"
 
-#: basic_blocks.c:573
+#: basic_blocks.c:575
 #, c-format
 msgid ""
 "\n"
@@ -105,7 +105,7 @@ msgstr ""
 "\n"
 "%9lu   Número total de ejecuciones de línea\n"
 
-#: basic_blocks.c:575
+#: basic_blocks.c:577
 #, c-format
 msgid "%9.2f   Average executions per line\n"
 msgstr "%9.2f   Ejecuciones promedio por línea\n"
@@ -241,37 +241,37 @@ msgstr "%s: no se puede abrir %s.\n"
 msgid "%s: unable to parse mapping file %s.\n"
 msgstr "%s: no se puede decodificar el fichero de mapeo %s.\n"
 
-#: corefile.c:155
+#: corefile.c:158
 #, c-format
 msgid "%s: %s: not in a.out format\n"
 msgstr "%s: %s: no está en el formato a.out\n"
 
-#: corefile.c:166
+#: corefile.c:169
 #, c-format
 msgid "%s: can't find .text section in %s\n"
 msgstr "%s: no se puede encontrar la sección .text en %s\n"
 
-#: corefile.c:224
+#: corefile.c:244
 #, c-format
 msgid "%s: ran out room for %lu bytes of text space\n"
 msgstr "%s: se terminó el espacio para %lu bytes de espacio de texto\n"
 
-#: corefile.c:238
+#: corefile.c:258
 #, c-format
 msgid "%s: can't do -c\n"
 msgstr "%s: no se puede hacer -c\n"
 
-#: corefile.c:272
+#: corefile.c:292
 #, c-format
 msgid "%s: -c not supported on architecture %s\n"
 msgstr "%s: -c no tiene soporte en la arquitectura %s\n"
 
-#: corefile.c:437
+#: corefile.c:457
 #, c-format
 msgid "%s: file `%s' has no symbols\n"
 msgstr "%s: el fichero `%s' no tiene símbolos\n"
 
-#: corefile.c:751
+#: corefile.c:771
 #, c-format
 msgid "%s: somebody miscounted: ltab.len=%d instead of %ld\n"
 msgstr "%s: alguien contó mal: ltab.len=%d en lugar de %ld\n"
@@ -281,94 +281,94 @@ msgstr "%s: alguien cont
 msgid "%s: address size has unexpected value of %u\n"
 msgstr "%s: el tamaño de la dirección tiene un valor inesperado de %u\n"
 
-#: gmon_io.c:317 gmon_io.c:413
+#: gmon_io.c:320 gmon_io.c:416
 #, c-format
 msgid "%s: file too short to be a gmon file\n"
 msgstr "%s: el fichero es muy corto para ser un fichero gmon\n"
 
-#: gmon_io.c:327 gmon_io.c:456
+#: gmon_io.c:330 gmon_io.c:459
 #, c-format
 msgid "%s: file `%s' has bad magic cookie\n"
 msgstr "%s: el fichero `%s' tiene una galleta mágica errónea\n"
 
-#: gmon_io.c:338
+#: gmon_io.c:341
 #, c-format
 msgid "%s: file `%s' has unsupported version %d\n"
 msgstr "%s: el fichero `%s' tiene la version %d que no tiene soporte\n"
 
-#: gmon_io.c:368
+#: gmon_io.c:371
 #, c-format
 msgid "%s: %s: found bad tag %d (file corrupted?)\n"
 msgstr "%s: %s: se encontró la marca errónea %d (¿fichero corrupto?)\n"
 
-#: gmon_io.c:435
+#: gmon_io.c:438
 #, c-format
 msgid "%s: profiling rate incompatible with first gmon file\n"
 msgstr "%s: tasa de análisis de perfil incompatible con el primer fichero gmon\n"
 
-#: gmon_io.c:483
+#: gmon_io.c:486
 #, c-format
 msgid "%s: incompatible with first gmon file\n"
 msgstr "%s: incompatible con el primer fichero gmon\n"
 
-#: gmon_io.c:511
+#: gmon_io.c:514
 #, c-format
 msgid "%s: file '%s' does not appear to be in gmon.out format\n"
 msgstr "%s: el fichero '%s' no parece estar en el formato gmon.out\n"
 
 # FIXME: comprobar con el código si bins es abreviatura de binarios o
 # se refiere a la denominación inglesa de 'papelera'. cfuga
-#: gmon_io.c:532
+#: gmon_io.c:535
 #, c-format
 msgid "%s: unexpected EOF after reading %d/%d bins\n"
 msgstr "%s: fin de fichero inesperado después de leer %d/%d binarios\n"
 
-#: gmon_io.c:565
+#: gmon_io.c:568
 #, c-format
 msgid "time is in ticks, not seconds\n"
 msgstr "el tiempo está en tics, no en segundos\n"
 
-#: gmon_io.c:571 gmon_io.c:747
+#: gmon_io.c:574 gmon_io.c:750
 #, c-format
 msgid "%s: don't know how to deal with file format %d\n"
 msgstr "%s: se desconoce cómo lidiar con el fichero de formato %d\n"
 
-#: gmon_io.c:578
+#: gmon_io.c:581
 #, c-format
 msgid "File `%s' (version %d) contains:\n"
 msgstr "El fichero `%s' (versión %d) contiene:\n"
 
-#: gmon_io.c:581
+#: gmon_io.c:584
 #, c-format
 msgid "\t%d histogram record\n"
 msgstr "\t%d registro de histograma\n"
 
-#: gmon_io.c:582
+#: gmon_io.c:585
 #, c-format
 msgid "\t%d histogram records\n"
 msgstr "\t%d registros de histogramas\n"
 
-#: gmon_io.c:584
+#: gmon_io.c:587
 #, c-format
 msgid "\t%d call-graph record\n"
 msgstr "\t%d registro de gráfico de llamadas\n"
 
-#: gmon_io.c:585
+#: gmon_io.c:588
 #, c-format
 msgid "\t%d call-graph records\n"
 msgstr "\t%d registros de gráficos de llamadas\n"
 
-#: gmon_io.c:587
+#: gmon_io.c:590
 #, c-format
 msgid "\t%d basic-block count record\n"
 msgstr "\t%d registro de cuenta de bloques básicos\n"
 
-#: gmon_io.c:588
+#: gmon_io.c:591
 #, c-format
 msgid "\t%d basic-block count records\n"
 msgstr "\t%d registros de cuentas de bloques básicos\n"
 
-#: gprof.c:160
+#: gprof.c:158
 #, c-format
 msgid ""
 "Usage: %s [-[abcDhilLsTvwxyz]] [-[ACeEfFJnNOpPqQZ][name]] [-I dirs]\n"
@@ -399,58 +399,58 @@ msgstr ""
 "\t[--demangle[=ESTILO]] [--no-demangle]\n"
 "\t[fichero-imagen] [fichero-perfil...]\n"
 
-#: gprof.c:176
+#: gprof.c:174
 #, c-format
 msgid "Report bugs to %s\n"
 msgstr "Reportar bichos a %s\n"
 
-#: gprof.c:248
+#: gprof.c:250
 #, c-format
 msgid "%s: debugging not supported; -d ignored\n"
 msgstr "%s: no hay soporte para depuración; se ignora -d\n"
 
-#: gprof.c:328
+#: gprof.c:330
 #, c-format
 msgid "%s: unknown file format %s\n"
 msgstr "%s: formato de fichero %s desconocido\n"
 
 #. This output is intended to follow the GNU standards document.
-#: gprof.c:412
+#: gprof.c:414
 #, c-format
 msgid "GNU gprof %s\n"
 msgstr "GNU gprof %s\n"
 
-#: gprof.c:413
+#: gprof.c:415
 #, c-format
 msgid "Based on BSD gprof, copyright 1983 Regents of the University of California.\n"
 msgstr "Basado en gprof de BSD, copyright 1983 Regents of the University of California.\n"
 
-#: gprof.c:414
+#: gprof.c:416
 #, c-format
 msgid "This program is free software.  This program has absolutely no warranty.\n"
 msgstr "Este programa es software libre.  Este programa no tiene ninguna garantía en lo absoluto.\n"
 
-#: gprof.c:455
+#: gprof.c:457
 #, c-format
 msgid "%s: unknown demangling style `%s'\n"
 msgstr "%s: estilo de desenredo desconocido `%s'\n"
 
-#: gprof.c:475
+#: gprof.c:477
 #, c-format
 msgid "%s: Only one of --function-ordering and --file-ordering may be specified.\n"
 msgstr "%s: Sólo se puede especificar uno de --function-ordering y --file-ordering.\n"
 
-#: gprof.c:525
+#: gprof.c:527
 #, c-format
 msgid "%s: sorry, file format `prof' is not yet supported\n"
 msgstr "%s: perdón, el formato de fichero `prof' aún no tiene soporte\n"
 
-#: gprof.c:574
+#: gprof.c:576
 #, c-format
 msgid "%s: gmon.out file is missing histogram\n"
 msgstr "%s: al fichero gmon.out le falta el histograma\n"
 
-#: gprof.c:581
+#: gprof.c:583
 #, c-format
 msgid "%s: gmon.out file is missing call-graph data\n"
 msgstr "%s: al fichero gmon.out le falta los datos del gráfico de llamadas\n"
index 3c6907f..0a3787a 100644 (file)
@@ -1,3 +1,22 @@
+2006-04-11  Jim Blandy  <jimb@codesourcery.com>
+
+       * libiberty.h (pex_input_file, pex_input_pipe): New declarations.
+
+2006-04-06  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * bfdlink.h (bfd_link_info): Replace need_relax_finalize with
+       relax_pass.
+
+2006-03-25  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+       * elf/bfin.h (R_BFIN_GOT17M4, R_BFIN_GOTHI, R_BFIN_GOTLO,
+       R_BFIN_FUNCDESC, R_BFIN_FUNCDESC_GOT17M4,  R_BFIN_FUNCDESC_GOTHI,
+       R_BFIN_FUNCDESC_GOTLO, R_BFIN_FUNCDESC_VALUE,
+       R_BFIN_FUNCDESC_GOTOFF17M4, R_BFIN_FUNCDESC_GOTOFFHI,
+       R_BFIN_FUNCDESC_GOTOFFLO, R_BFIN_GOTOFF17M4, R_BFIN_GOTOFFHI,
+       R_BFIN_GOTOFFLO): New relocs.
+       (EF_BFIN_PIC, EF_BFIN_FDPIC, EF_BFIN_PIC_FLAGS): New macros.
+
 2006-02-17  Shrirang Khisti  <shrirangk@kpitcummins.com>
             Anil Paranjape   <anilp1@kpitcummins.com>
             Shilin Shakti    <shilins@kpitcummins.com>
index 3c978e8..f4b7aa7 100644 (file)
@@ -301,9 +301,6 @@ struct bfd_link_info
   /* TRUE if global symbols in discarded sections should be stripped.  */
   unsigned int strip_discarded: 1;
 
-  /* TRUE if the final relax pass is needed.  */
-  unsigned int need_relax_finalize: 1;
-
   /* TRUE if generating a position independent executable.  */
   unsigned int pie: 1;
 
@@ -398,6 +395,12 @@ struct bfd_link_info
      unloaded.  */
   const char *fini_function;
 
+  /* Number of relaxation passes.  Usually only one relaxation pass
+     is needed.  But a backend can have as many relaxation passes as
+     necessary.  During bfd_relax_section call, it is set to the
+     current pass, starting from 0.  */
+  int relax_pass;
+
   /* Non-zero if auto-import thunks for DATA items in pei386 DLLs
      should be generated/linked against.  Set to 1 if this feature
      is explicitly requested by the user, -1 if enabled by default.  */
index 9d47ffb..48ce81c 100644 (file)
@@ -1,3 +1,12 @@
+2006-03-22  Richard Sandiford  <richard@codesourcery.com>
+           Daniel Jacobowitz  <dan@codesourcery.com>
+           Phil Edwards  <phil@codesourcery.com>
+           Zack Weinberg  <zack@codesourcery.com>
+           Mark Mitchell  <mark@codesourcery.com>
+           Nathan Sidwell  <nathan@codesourcery.com>
+
+       * mips.h (R_MIPS_COPY, R_MIPS_JUMP_SLOT): New relocs.
+
 2006-03-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
 
        * hppa.h (SHF_HP_TLS, SHF_HP_NEAR_SHARED, SHF_HP_FAR_SHARED,
index 09faab6..3c07cd1 100644 (file)
@@ -43,6 +43,21 @@ START_RELOC_NUMBERS (elf_bfin_reloc_type)
   RELOC_NUMBER (R_byte2_data, 0x11)     /* 0x11, 0x00) .byte2 var = symbol */
   RELOC_NUMBER (R_byte4_data, 0x12)     /* 0x12, 0x00) .byte4 var = symbol and .var var=symbol */
   RELOC_NUMBER (R_pcrel11, 0x13)        /* 0x13, 0x00) lsetup part b */
+  RELOC_NUMBER (R_BFIN_GOT17M4, 0x14)
+  RELOC_NUMBER (R_BFIN_GOTHI, 0x15)
+  RELOC_NUMBER (R_BFIN_GOTLO, 0x16)
+  RELOC_NUMBER (R_BFIN_FUNCDESC, 0x17)
+  RELOC_NUMBER (R_BFIN_FUNCDESC_GOT17M4, 0x18)
+  RELOC_NUMBER (R_BFIN_FUNCDESC_GOTHI, 0x19)
+  RELOC_NUMBER (R_BFIN_FUNCDESC_GOTLO, 0x1a)
+  RELOC_NUMBER (R_BFIN_FUNCDESC_VALUE, 0x1b)
+  RELOC_NUMBER (R_BFIN_FUNCDESC_GOTOFF17M4, 0x1c)
+  RELOC_NUMBER (R_BFIN_FUNCDESC_GOTOFFHI, 0x1d)
+  RELOC_NUMBER (R_BFIN_FUNCDESC_GOTOFFLO, 0x1e)
+  RELOC_NUMBER (R_BFIN_GOTOFF17M4, 0x1f)
+  RELOC_NUMBER (R_BFIN_GOTOFFHI, 0x20)
+  RELOC_NUMBER (R_BFIN_GOTOFFLO, 0x21)
+
   RELOC_NUMBER (R_push, 0xE0)
   RELOC_NUMBER (R_const, 0xE1)
   RELOC_NUMBER (R_add, 0xE2)
@@ -69,4 +84,9 @@ START_RELOC_NUMBERS (elf_bfin_reloc_type)
   RELOC_NUMBER (R_BFIN_GNU_VTENTRY, 0x43) /* C++, gnu only */
 END_RELOC_NUMBERS (R_max)
 
+/* Processor specific flags for the ELF header e_flags field.  */
+#define EF_BFIN_PIC            0x00000001      /* -fpic */
+#define EF_BFIN_FDPIC          0x00000002      /* -mfdpic */
+
+#define        EF_BFIN_PIC_FLAGS       (EF_BFIN_PIC | EF_BFIN_FDPIC)
 #endif /* _ELF_BFIN_H */
index 6afc12f..f22bd4d 100644 (file)
@@ -97,6 +97,9 @@ START_RELOC_NUMBERS (elf_mips_reloc_type)
   RELOC_NUMBER (R_MIPS16_HI16, 104)
   RELOC_NUMBER (R_MIPS16_LO16, 105)
   FAKE_RELOC (R_MIPS16_max, 106)
+  /* These relocations are specific to VxWorks.  */
+  RELOC_NUMBER (R_MIPS_COPY, 126)
+  RELOC_NUMBER (R_MIPS_JUMP_SLOT, 127)
   /* This was a GNU extension used by embedded-PIC.  It was co-opted by
      mips-linux for exception-handling data.  It is no longer used, but
      should continue to be supported by the linker for backward
index 74655fb..b09a558 100644 (file)
@@ -54,7 +54,16 @@ START_RELOC_NUMBERS (elf_x86_64_reloc_type)
      RELOC_NUMBER (R_X86_64_GOTOFF64, 25)     /* 64 bit offset to GOT */
      RELOC_NUMBER (R_X86_64_GOTPC32,  26)     /* 32 bit signed pc relative
                                                  offset to GOT */
-     /* 27 .. 33 */
+     RELOC_NUMBER (R_X86_64_GOT64,    27)     /* 64 bit GOT entry offset */
+     RELOC_NUMBER (R_X86_64_GOTPCREL64, 28)   /* 64 bit signed pc relative
+                                                offset to GOT entry */
+     RELOC_NUMBER (R_X86_64_GOTPC64,  29)     /* 64 bit signed pc relative
+                                                offset to GOT */
+     RELOC_NUMBER (R_X86_64_GOTPLT64, 30)     /* like GOT64, but indicates
+                                                that PLT entry is needed */
+     RELOC_NUMBER (R_X86_64_PLTOFF64, 31)     /* 64 bit GOT relative offset
+                                                to PLT entry */
+     /* 32 .. 33 */
      RELOC_NUMBER (R_X86_64_GOTPC32_TLSDESC, 34)
                                              /* 32 bit signed pc relative
                                                 offset to TLS descriptor
index 6fdc6e9..6bd318e 100644 (file)
@@ -475,6 +475,20 @@ extern const char *pex_run (struct pex_obj *obj, int flags,
 
 extern FILE *pex_write_input (struct pex_obj *obj, int binary);
 
+/* Return a stream for a temporary file to pass to the first program
+   in the pipeline as input.  The file name is chosen as for pex_run.
+   pex_run closes the file automatically; don't close it yourself.  */
+
+extern FILE *pex_input_file (struct pex_obj *obj, int flags,
+                             const char *in_name);
+
+/* Return a stream for a pipe connected to the standard input of the
+   first program in the pipeline.  You must have passed
+   `PEX_USE_PIPES' to `pex_init'.  Close the returned stream
+   yourself.  */
+
+extern FILE *pex_input_pipe (struct pex_obj *obj, int binary);
+
 /* Read the standard output of the last program to be executed.
    pex_run can not be called after this.  BINARY should be non-zero if
    the file should be opened in binary mode; this is ignored on Unix.
index 158c55c..0c67a5c 100644 (file)
@@ -1,3 +1,19 @@
+2006-05-26  Richard Sandiford  <richard@codesourcery.com>
+
+       * m68k.h (mcf_mask): Define.
+
+2006-04-07  Joerg Wunsch <j.gnu@uriah.heep.sax.de>
+
+       * avr.h (AVR_ISA_PWMx): New.
+
+2006-03-28  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * m68k.h (cpu_m68k, cpu_cf, cpu_m68000, cpu_m68008, cpu_m68010,
+       cpu_m68020, cpu_m68ec030, cpu_m68040, cpu_m68060, cpu_m68851,
+       cpu_m68881, cpu_m68882, cpu_cpu32, cpu_cf5200, cpu_cf5206e,
+       cpu_cf5208, cpu_cf521x, cpu_cf5213, cpu_cf5249, cpu_cf528x,
+       cpu_cf5307, cpu_cf5329, cpu_cf5407, cpu_cf547x, cpu_cf548x): Remove.
+
 2006-03-10  Paul Brook  <paul@codesourcery.com>
 
        * arm.h (ARM_AEXT_V7_ARM): Include v6ZK extensions.
index b7a80b0..55bb161 100644 (file)
@@ -1,6 +1,6 @@
 /* Opcode table for the Atmel AVR micro controllers.
 
-   Copyright 2000, 2001, 2004 Free Software Foundation, Inc.
+   Copyright 2000, 2001, 2004, 2006 Free Software Foundation, Inc.
    Contributed by Denis Chertykov <denisc@overta.ru>
    
    This program is free software; you can redistribute it and/or modify
@@ -17,7 +17,7 @@
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
 
-#define AVR_ISA_1200  0x0001 /* in the beginning there was ... */
+#define AVR_ISA_1200  0x0001 /* In the beginning there was ...  */
 #define AVR_ISA_LPM   0x0002 /* device has LPM */
 #define AVR_ISA_LPMX  0x0004 /* device has LPM Rd,Z[+] */
 #define AVR_ISA_SRAM  0x0008 /* device has SRAM (LD, ST, PUSH, POP, ...) */
 #define AVR_ISA_MOVW  0x1000 /* device has MOVW */
 
 #define AVR_ISA_TINY1 (AVR_ISA_1200 | AVR_ISA_LPM)
-#define AVR_ISA_2xxx (AVR_ISA_TINY1 | AVR_ISA_SRAM)
+#define AVR_ISA_PWMx  (AVR_ISA_M8   | AVR_ISA_BRK)
+#define AVR_ISA_2xxx  (AVR_ISA_TINY1 | AVR_ISA_SRAM)
 #define AVR_ISA_TINY2 (AVR_ISA_2xxx | AVR_ISA_MOVW | AVR_ISA_LPMX | \
-                       AVR_ISA_SPM | AVR_ISA_BRK)
-#define AVR_ISA_M8   (AVR_ISA_2xxx | AVR_ISA_MUL | AVR_ISA_MOVW | \
-                      AVR_ISA_LPMX | AVR_ISA_SPM)
-#define AVR_ISA_M603 (AVR_ISA_2xxx | AVR_ISA_MEGA)
-#define AVR_ISA_M103 (AVR_ISA_M603 | AVR_ISA_ELPM)
-#define AVR_ISA_M161 (AVR_ISA_M603 | AVR_ISA_MUL | AVR_ISA_MOVW | \
-                      AVR_ISA_LPMX | AVR_ISA_SPM)
-#define AVR_ISA_94K  (AVR_ISA_M603 | AVR_ISA_MUL | AVR_ISA_MOVW | AVR_ISA_LPMX)
-#define AVR_ISA_M323 (AVR_ISA_M161 | AVR_ISA_BRK)
-#define AVR_ISA_M128 (AVR_ISA_M323 | AVR_ISA_ELPM | AVR_ISA_ELPMX)
+                       AVR_ISA_SPM  | AVR_ISA_BRK)
+#define AVR_ISA_M8    (AVR_ISA_2xxx | AVR_ISA_MUL | AVR_ISA_MOVW | \
+                       AVR_ISA_LPMX | AVR_ISA_SPM)
+#define AVR_ISA_M603  (AVR_ISA_2xxx | AVR_ISA_MEGA)
+#define AVR_ISA_M103  (AVR_ISA_M603 | AVR_ISA_ELPM)
+#define AVR_ISA_M161  (AVR_ISA_M603 | AVR_ISA_MUL | AVR_ISA_MOVW | \
+                       AVR_ISA_LPMX | AVR_ISA_SPM)
+#define AVR_ISA_94K   (AVR_ISA_M603 | AVR_ISA_MUL | AVR_ISA_MOVW | AVR_ISA_LPMX)
+#define AVR_ISA_M323  (AVR_ISA_M161 | AVR_ISA_BRK)
+#define AVR_ISA_M128  (AVR_ISA_M323 | AVR_ISA_ELPM | AVR_ISA_ELPMX)
 
 #define AVR_ISA_ALL   0xFFFF
 
index 59bec96..1799509 100644 (file)
@@ -1,3 +1,8 @@
+2006-04-06  Carlos O'Donell  <carlos@codesourcery.com>
+
+       * intl/Makefile.in: Add html info and dvi and install-html to .PHONY
+       Add install-html target.
+
 2006-02-27  Carlos O'Donell  <carlos@codesourcery.com>
 
        * intl/Makefile.in: Add html target.
index 81a2bb0..ed579c7 100644 (file)
@@ -1,5 +1,5 @@
 # Makefile for directory with message catalog handling in GNU NLS Utilities.
-# Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+# Copyright (C) 1995, 1996, 1997, 1998, 2006 Free Software Foundation, Inc.
 #
 # 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
index 9005e8f..bf6fc2f 100644 (file)
@@ -1,3 +1,195 @@
+2006-06-12  Fred Fish  <fnf@specifix.com>
+
+       * emulparams/elf32bmip.sh (OTHER_SECTIONS): Keep the
+       ".mdebug.<abi>" and ".gcc_compiled_long<size>" sections
+       generated by mips gcc.
+
+2006-06-09  Alan Modra  <amodra@bigpond.net.au>
+
+       * ldlang.h (lang_input_statement_type): Use bitfields for booleans.
+       * ldlang.c (struct out_section_hash_entry): Rename from
+       output_statement_hash_entry.  Delete output_section_statement_type
+       entry.  Add statement_union_type entry.  Adjust all users.
+       (output_section_statement_table): Rename from output_statement_table.
+       Adjust all users.
+       (output_section_statement_newfunc): Rename from
+       output_statement_newfunc.  Adjust all users.
+       (output_section_statement_table_init): Rename from
+       output_statement_table_init.  Adjust all users.
+       (output_section_statement_table_free): Rename from
+       output_statement_table_free.  Adjust all users.
+
+2006-06-08  Alan Modra  <amodra@bigpond.net.au>
+
+       * emultempl/elf32.em (global_found): Make it a pointer.
+       (stat_needed, try_needed): Adjust.
+       (check_needed): Don't skip non-loaded as-needed entries.  Only
+       consider entries with both filename and the_bfd non-null.
+       (after_open): Try loading non-loaded as-needed libs to satisfy
+       DT_NEEDED libs.
+
+2006-06-07  Joseph S. Myers  <joseph@codesourcery.com>
+
+       * po/Make-in (pdf, ps): New dummy targets.
+
+2006-06-02  Joseph S. Myers  <joseph@codesourcery.com>
+
+       * Makefile.am (TEXI2DVI): Add -I $(top_srcdir)/../libiberty.
+       * Makefile.in: Regenerate.
+
+2006-05-30  Nick Clifton  <nickc@redhat.com>
+
+       * po/es.po: Updated Spanish translation.
+
+2006-05-24  Nick Clifton  <nickc@redhat.com>
+
+       * po/vi.po: Updated Vietnamese translation.
+
+2006-05-22  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * ld-mips-elf/textrel-1.d: Relax some patterns.
+
+2006-05-22  Nick Clifton  <nickc@redhat.com>
+
+       * scripttempl/elf32crx.sc (.rdata): Add .rodata.*.
+
+2006-05-05  Alan Modra  <amodra@bigpond.net.au>
+
+       * ld.texinfo: Document PowerPC and PowerPC64 options.
+       * gen-doc.texi: Enable.
+       * configdoc.texi: Regenerate.
+       * ld.info: Regenerate.
+
+2006-05-02  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * Makefile.am (AM_MAKEINFOFLAGS): Add libiberty.
+       (TEXI2POD): Use AM_MAKEINFOFLAGS.
+       (configdoc.texi): Don't set top_srcdir.
+       * ld.texinfo: Don't use top_srcdir.
+       * aclocal.m4, Makefile.in: Regenerated.
+
+2006-04-16  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * po/POTFILES.in: Regenerated.
+
+2006-04-16  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * config.in: Regenerated.
+
+2006-04-14  David Heine  <dlheine@tensilica.com>
+           Bob Wilson  <bob.wilson@acm.org>
+
+       * emultempl/xtensaelf.em (elf_xtensa_before_allocation): Call new
+       function to strip inconsistent linkonce sections.
+       (input_section_linked_worker, input_section_linked): New.
+       (is_inconsistent_linkonce_section): New.
+       (xtensa_strip_inconsistent_linkonce_sections): New.
+
+2006-04-11  Diego Pettenò  <flameeyes@gentoo.org>
+
+       * emultempl/elf32.em: Add support for elf-hints.h on FreeBSD
+       and Dragonfly targets.
+       * configure.in (AC_CHECK_HEADERS): Add elf-hints.h.
+       * Makefile.am (HFILES): Add elf-hints-local.h.
+       * elf-hints-local.h: New file.
+       * Makefile.in: Regenerate.
+       * configure: Regenerate.
+
+2006-04-07  Bernhard Fischer  <aldot@gcc.gnu.org>
+
+       * ld.texinfo: Fix typo in documentation of --check-sections.
+
+2006-04-07  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
+
+       * ldlang.c (load_symbols): Set as_needed and add_needed according
+       to the corresponding script's fields while processing it.
+
+2006-04-06  Carlos O'Donell  <carlos@codesourcery.com>
+
+       * Makefile.am: Add install-html, install-html-am, and
+       install-html-recursive targets.
+       * Makefile.in: Regenerate.
+       * configure.in: AC_SUBST datarootdir, docdir, htmldir.
+       * configure: Regenerate.
+       * po/Make-in: Add install-html target.
+
+2006-04-06  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * emultempl/ia64elf.em: Set link_info.relax_pass to 2. Remove
+       link_info.need_relax_finalize.
+
+       * ldlang.c (relax_sections): New.
+       (lang_process): Use. Call relax_sections link_info.relax_pass
+       times.
+
+       * ldmain.c (main): Set link_info.relax_pass to 1. Remove
+       link_info.need_relax_finalize.
+
+2006-04-05  Alan Modra  <amodra@bigpond.net.au>
+
+       * Makefile.am (GENSCRIPTS): Pass prefix.
+       * Makefile.in: Regenerate.
+       * genscripts.sh: Adjust for extra parameter.
+       * emultempl/elf32.em (parse_ld_so_conf): Return true iff file
+       exists.
+       (check_ld_so_conf): Use ${prefix}/etc/ld.so.conf if it exists.
+       * NEWS: Update.
+
+2006-04-05  Richard Sandiford  <richard@codesourcery.com>
+           Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * configure.tgt (sparc*-*-vxworks*): New stanza.
+       * emulparams/elf32_sparc_vxworks.sh: New file.
+       * Makefile.am (ALL_EMULATIONS): Add eelf32_sparc_vxworks.o.
+       (eelf32_sparc_vxworks.c): New rule.
+       * Makefile.in: Regenerate.
+
+2006-04-04  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * ldlang.c (lang_map): Print the list of discarded input sections.
+       (print_input_section): Change parameter and print zero-sized sections.
+       (print_statement): Adjust call to print_input_section.
+
+2006-04-01  Danny Smith  <dannysmith@users.sourceforge.net>
+
+       * deffilep.y (def_image_name): If LIBRARY or NAME statement
+       specifies an empty string, retain the name specified on command
+       line.
+       * ld.texinfo: Document above.
+
+2006-03-31  Jakub Jelinek  <jakub@redhat.com>
+
+       * ldmisc.c (vfinfo): Revert 2005-10-05 changes.  If
+       bfd_find_nearest_line succeeded for %C or %D, but filename
+       is NULL, print section+offset at the end.
+
+2006-03-25  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+       * emulparams/elf32bfinfd.sh: New file.
+       * emultempl/bfin.em: Delete.
+       * emulparams/bfin.sh: Lose reference to bfin.em.
+       * Makefile.am (eelf32bfin.c): Likewise.
+       (eelf32bfinfd.c): New.
+       * Makefile.in: Regenerate.
+       * configure.tgt (bfin-*-elf, bfin-*-uclinux): Add elf32bfinfd to
+       targ_extra_emuls.
+
+2006-03-22  Richard Sandiford  <richard@codesourcery.com>
+           Daniel Jacobowitz  <dan@codesourcery.com>
+           Phil Edwards  <phil@codesourcery.com>
+           Zack Weinberg  <zack@codesourcery.com>
+           Mark Mitchell  <mark@codesourcery.com>
+           Nathan Sidwell  <nathan@codesourcery.com>
+
+       * configure.tgt (mips*el-*-vxworks*, mips*-*-vxworks*): Use
+       separate VxWorks emulations.
+       * emulparams/elf32ebmipvxworks.sh: New file.
+       * emulparams/elf32elmipvxworks.sh: New file.
+       * Makefile.am (ALL_EMULATIONS): Add eelf32ebmipvxworks.o and
+       eelf32elmipvxworks.o.
+       (eelf32ebmipvxworks.c, eelf32elmipvxworks.c): New rules.
+       * Makefile.in: Regenerate.
+
 2006-03-16  Alan Modra  <amodra@bigpond.net.au>
 
        PR 2434
index 3f9ac29..28be7d3 100644 (file)
@@ -46,7 +46,7 @@ DOCVER = gen
 # Options to extract the man page from ld.texinfo
 MANCONF = -Dman
 
-TEXI2POD = perl $(BASEDIR)/etc/texi2pod.pl
+TEXI2POD = perl $(BASEDIR)/etc/texi2pod.pl $(AM_MAKEINFOFLAGS)
 
 POD2MAN = pod2man --center="GNU Development Tools" \
        --release="binutils-$(VERSION)" --section=1
@@ -97,8 +97,8 @@ info_TEXINFOS = ld.texinfo
 noinst_TEXINFOS = ldint.texinfo
 man_MANS = ld.1
 
-AM_MAKEINFOFLAGS = -I $(srcdir) -I $(BFDDIR)/doc
-TEXI2DVI = texi2dvi -I $(srcdir) -I $(BFDDIR)/doc
+AM_MAKEINFOFLAGS = -I $(srcdir) -I $(BFDDIR)/doc -I $(top_srcdir)/../libiberty
+TEXI2DVI = texi2dvi -I $(srcdir) -I $(BFDDIR)/doc -I $(top_srcdir)/../libiberty
 
 REPORT_BUGS_TO_s := "\"@REPORT_BUGS_TO@\""
 
@@ -152,8 +152,10 @@ ALL_EMULATIONS = \
        eelf32_i960.o \
        eelf32_i860.o \
        eelf32_sparc.o \
+       eelf32_sparc_vxworks.o \
        eelf32b4300.o \
        eelf32bfin.o \
+       eelf32bfinfd.o \
        eelf32cr16c.o \
        eelf32bmip.o \
        eelf32bmipn32.o \
@@ -163,7 +165,9 @@ ALL_EMULATIONS = \
        eelf32ltsmip.o \
        eelf32ltsmipn32.o \
        eelf32ebmip.o \
+       eelf32ebmipvxworks.o \
        eelf32elmip.o \
+       eelf32elmipvxworks.o \
        eelf32fr30.o \
        eelf32frv.o \
        eelf32i370.o \
@@ -420,7 +424,7 @@ CFILES = ldctor.c ldemul.c ldexp.c ldfile.c ldlang.c \
 
 HFILES = ld.h ldctor.h ldemul.h ldexp.h ldfile.h \
        ldlang.h ldlex.h ldmain.h ldmisc.h ldver.h \
-       ldwrite.h mri.h deffile.h pe-dll.h
+       ldwrite.h mri.h deffile.h pe-dll.h elf-hints-local.h
 
 GENERATED_CFILES = ldgram.c ldlex.c deffilep.c
 GENERATED_HFILES = ldgram.h ldemul-list.h deffilep.h
@@ -477,7 +481,7 @@ stringify.sed: ${srcdir}/emultempl/$(STRINGIFY)
 
 # These all start with e so 'make clean' can find them.
 
-GENSCRIPTS = LIB_PATH='${LIB_PATH}' $(SHELL) $(srcdir)/genscripts.sh ${srcdir} ${libdir} "${exec_prefix}" @host@ @target@ @target_alias@ "@EMULATION_LIBPATH@" "@NATIVE_LIB_DIRS@" @use_sysroot@
+GENSCRIPTS = LIB_PATH='${LIB_PATH}' $(SHELL) $(srcdir)/genscripts.sh "${srcdir}" "${libdir}" "${prefix}" "${exec_prefix}" @host@ @target@ @target_alias@ "@EMULATION_LIBPATH@" "@NATIVE_LIB_DIRS@" @use_sysroot@
 GEN_DEPENDS = $(srcdir)/genscripts.sh stringify.sed
 
 @TDIRS@
@@ -628,9 +632,13 @@ edelta68.c: $(srcdir)/emulparams/delta68.sh \
   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/delta68.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} delta68 "$(tdir_delta68)"
 eelf32bfin.c: $(srcdir)/emulparams/bfin.sh \
-  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/bfin.em \
+  $(srcdir)/emultempl/elf32.em \
   $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} elf32bfin "$(tdir_elf32bfin)" bfin
+eelf32bfinfd.c: $(srcdir)/emulparams/elf32bfinfd.sh $(srcdir)/emulparams/bfin.sh \
+  $(srcdir)/emultempl/elf32.em \
+  $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+       ${GENSCRIPTS} elf32bfinfd "$(tdir_elf32bfinfd)" elf32bfinfd
 eelf32_dlx.c: $(srcdir)/emulparams/elf32_dlx.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/dlx.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} elf32_dlx "$(tdir_elf32_dlx)"
@@ -686,6 +694,11 @@ em32rlelf_linux.c: $(srcdir)/emulparams/m32rlelf_linux.sh \
 eelf32_sparc.c: $(srcdir)/emulparams/elf32_sparc.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} elf32_sparc "$(tdir_elf32_sparc)"
+eelf32_sparc_vxworks.c: $(srcdir)/emulparams/elf32_sparc_vxworks.sh \
+  $(srcdir)/emulparams/vxworks.sh $(srcdir)/emulparams/elf32_sparc.sh \
+  $(srcdir)/emultempl/vxworks.em $(srcdir)/emultempl/elf32.em \
+  $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+       ${GENSCRIPTS} elf32_sparc_vxworks "$(tdir_elf32_sparc_vxworks)"
 eelf32_i860.c: $(srcdir)/emulparams/elf32_i860.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} elf32_i860 "$(tdir_elf32_i860)"
@@ -731,10 +744,20 @@ eelf32ebmip.c: $(srcdir)/emulparams/elf32ebmip.sh \
   $(srcdir)/emulparams/elf32bmip.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} elf32ebmip "$(tdir_elf32ebmip)"
+eelf32ebmipvxworks.c: $(srcdir)/emulparams/elf32ebmipvxworks.sh \
+  $(srcdir)/emulparams/elf32ebmip.sh $(srcdir)/emulparams/vxworks.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/vxworks.em \
+  $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+       ${GENSCRIPTS} elf32ebmipvxworks "$(tdir_elf32ebmipvxworks)"
 eelf32elmip.c: $(srcdir)/emulparams/elf32elmip.sh \
   $(srcdir)/emulparams/elf32lmip.sh $(srcdir)/emulparams/elf32bmip.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} elf32elmip "$(tdir_elf32elmip)"
+eelf32elmipvxworks.c: $(srcdir)/emulparams/elf32elmipvxworks.sh \
+  $(srcdir)/emulparams/elf32elmip.sh $(srcdir)/emulparams/vxworks.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/vxworks.em \
+  $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+       ${GENSCRIPTS} elf32elmipvxworks "$(tdir_elf32elmipvxworks)"
 eelf32bmipn32.c: $(srcdir)/emulparams/elf32bmipn32.sh \
   $(srcdir)/emultempl/irix.em \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
@@ -1688,7 +1711,6 @@ bootstrap: ld3$(EXEEXT)
 configdoc.texi:        ${DOCVER}-doc.texi
        cp ${srcdir}/${DOCVER}-doc.texi ./configdoc.texi
        chmod u+w ./configdoc.texi
-       echo "@set top_srcdir $(top_srcdir)" >> ./configdoc.texi
 
 ldver.texi: $(srcdir)/../bfd/configure
        rm -f $@
index 9de3a1f..80d27f8 100644 (file)
@@ -283,7 +283,7 @@ DOCVER = gen
 
 # Options to extract the man page from ld.texinfo
 MANCONF = -Dman
-TEXI2POD = perl $(BASEDIR)/etc/texi2pod.pl
+TEXI2POD = perl $(BASEDIR)/etc/texi2pod.pl $(AM_MAKEINFOFLAGS)
 POD2MAN = pod2man --center="GNU Development Tools" \
        --release="binutils-$(VERSION)" --section=1
 
@@ -327,8 +327,8 @@ CXX_FOR_TARGET = ` \
 info_TEXINFOS = ld.texinfo
 noinst_TEXINFOS = ldint.texinfo
 man_MANS = ld.1
-AM_MAKEINFOFLAGS = -I $(srcdir) -I $(BFDDIR)/doc
-TEXI2DVI = texi2dvi -I $(srcdir) -I $(BFDDIR)/doc
+AM_MAKEINFOFLAGS = -I $(srcdir) -I $(BFDDIR)/doc -I $(top_srcdir)/../libiberty
+TEXI2DVI = texi2dvi -I $(srcdir) -I $(BFDDIR)/doc -I $(top_srcdir)/../libiberty
 REPORT_BUGS_TO_s := "\"@REPORT_BUGS_TO@\""
 INCLUDES = -D_GNU_SOURCE -I. -I$(srcdir) -I../bfd -I$(BFDDIR) -I$(INCDIR) \
        -I$(top_srcdir)/../intl -I../intl $(HDEFINES) $(CFLAGS) \
@@ -379,8 +379,10 @@ ALL_EMULATIONS = \
        eelf32_i960.o \
        eelf32_i860.o \
        eelf32_sparc.o \
+       eelf32_sparc_vxworks.o \
        eelf32b4300.o \
        eelf32bfin.o \
+       eelf32bfinfd.o \
        eelf32cr16c.o \
        eelf32bmip.o \
        eelf32bmipn32.o \
@@ -390,7 +392,9 @@ ALL_EMULATIONS = \
        eelf32ltsmip.o \
        eelf32ltsmipn32.o \
        eelf32ebmip.o \
+       eelf32ebmipvxworks.o \
        eelf32elmip.o \
+       eelf32elmipvxworks.o \
        eelf32fr30.o \
        eelf32frv.o \
        eelf32i370.o \
@@ -647,7 +651,7 @@ CFILES = ldctor.c ldemul.c ldexp.c ldfile.c ldlang.c \
 
 HFILES = ld.h ldctor.h ldemul.h ldexp.h ldfile.h \
        ldlang.h ldlex.h ldmain.h ldmisc.h ldver.h \
-       ldwrite.h mri.h deffile.h pe-dll.h
+       ldwrite.h mri.h deffile.h pe-dll.h elf-hints-local.h
 
 GENERATED_CFILES = ldgram.c ldlex.c deffilep.c
 GENERATED_HFILES = ldgram.h ldemul-list.h deffilep.h
@@ -663,7 +667,7 @@ EMULATION_FILES = emultempl/pe.em emultempl/armcoff.em
 POTFILES = $(CFILES) $(HFILES) $(EMULATION_FILES)
 
 # These all start with e so 'make clean' can find them.
-GENSCRIPTS = LIB_PATH='${LIB_PATH}' $(SHELL) $(srcdir)/genscripts.sh ${srcdir} ${libdir} "${exec_prefix}" @host@ @target@ @target_alias@ "@EMULATION_LIBPATH@" "@NATIVE_LIB_DIRS@" @use_sysroot@
+GENSCRIPTS = LIB_PATH='${LIB_PATH}' $(SHELL) $(srcdir)/genscripts.sh "${srcdir}" "${libdir}" "${prefix}" "${exec_prefix}" @host@ @target@ @target_alias@ "@EMULATION_LIBPATH@" "@NATIVE_LIB_DIRS@" @use_sysroot@
 GEN_DEPENDS = $(srcdir)/genscripts.sh stringify.sed
 
 # We need this for automake to use YLWRAP.
@@ -1439,9 +1443,13 @@ edelta68.c: $(srcdir)/emulparams/delta68.sh \
   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/delta68.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} delta68 "$(tdir_delta68)"
 eelf32bfin.c: $(srcdir)/emulparams/bfin.sh \
-  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/bfin.em \
+  $(srcdir)/emultempl/elf32.em \
   $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} elf32bfin "$(tdir_elf32bfin)" bfin
+eelf32bfinfd.c: $(srcdir)/emulparams/elf32bfinfd.sh $(srcdir)/emulparams/bfin.sh \
+  $(srcdir)/emultempl/elf32.em \
+  $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+       ${GENSCRIPTS} elf32bfinfd "$(tdir_elf32bfinfd)" elf32bfinfd
 eelf32_dlx.c: $(srcdir)/emulparams/elf32_dlx.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/dlx.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} elf32_dlx "$(tdir_elf32_dlx)"
@@ -1497,6 +1505,11 @@ em32rlelf_linux.c: $(srcdir)/emulparams/m32rlelf_linux.sh \
 eelf32_sparc.c: $(srcdir)/emulparams/elf32_sparc.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} elf32_sparc "$(tdir_elf32_sparc)"
+eelf32_sparc_vxworks.c: $(srcdir)/emulparams/elf32_sparc_vxworks.sh \
+  $(srcdir)/emulparams/vxworks.sh $(srcdir)/emulparams/elf32_sparc.sh \
+  $(srcdir)/emultempl/vxworks.em $(srcdir)/emultempl/elf32.em \
+  $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+       ${GENSCRIPTS} elf32_sparc_vxworks "$(tdir_elf32_sparc_vxworks)"
 eelf32_i860.c: $(srcdir)/emulparams/elf32_i860.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} elf32_i860 "$(tdir_elf32_i860)"
@@ -1542,10 +1555,20 @@ eelf32ebmip.c: $(srcdir)/emulparams/elf32ebmip.sh \
   $(srcdir)/emulparams/elf32bmip.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} elf32ebmip "$(tdir_elf32ebmip)"
+eelf32ebmipvxworks.c: $(srcdir)/emulparams/elf32ebmipvxworks.sh \
+  $(srcdir)/emulparams/elf32ebmip.sh $(srcdir)/emulparams/vxworks.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/vxworks.em \
+  $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+       ${GENSCRIPTS} elf32ebmipvxworks "$(tdir_elf32ebmipvxworks)"
 eelf32elmip.c: $(srcdir)/emulparams/elf32elmip.sh \
   $(srcdir)/emulparams/elf32lmip.sh $(srcdir)/emulparams/elf32bmip.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} elf32elmip "$(tdir_elf32elmip)"
+eelf32elmipvxworks.c: $(srcdir)/emulparams/elf32elmipvxworks.sh \
+  $(srcdir)/emulparams/elf32elmip.sh $(srcdir)/emulparams/vxworks.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/vxworks.em \
+  $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+       ${GENSCRIPTS} elf32elmipvxworks "$(tdir_elf32elmipvxworks)"
 eelf32bmipn32.c: $(srcdir)/emulparams/elf32bmipn32.sh \
   $(srcdir)/emultempl/irix.em \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
@@ -2488,7 +2511,6 @@ bootstrap: ld3$(EXEEXT)
 configdoc.texi:        ${DOCVER}-doc.texi
        cp ${srcdir}/${DOCVER}-doc.texi ./configdoc.texi
        chmod u+w ./configdoc.texi
-       echo "@set top_srcdir $(top_srcdir)" >> ./configdoc.texi
 
 ldver.texi: $(srcdir)/../bfd/configure
        rm -f $@
diff --git a/ld/NEWS b/ld/NEWS
index 77659b6..27fb0ae 100644 (file)
--- a/ld/NEWS
+++ b/ld/NEWS
@@ -2,8 +2,10 @@
 
 * Support for the Infineon XC16X has been added by KPIT Cummins Infosystems.
 
-* Modify the Linux linker to seach /etc/ld.so.conf first before
-  checking default search directories for DT_NEEDED entries.
+* Modify the Linux linker search order to better match ld.so search order.
+  Look for DT_NEEDED libraries in paths specified by ld.so.conf before
+  searching the default directories, rather than vice versa.
+  Use $prefix/etc/ld.so.conf if it exists, otherwise /etc/ld.so.conf.
 
 * PE-COFF: Forward exports from DLL's can now be specified in .def files
   passed directly to ld.
index ab73c6e..fa2e69f 100644 (file)
@@ -54,6 +54,9 @@
    */
 #undef HAVE_DIRENT_H
 
+/* Define to 1 if you have the <elf-hints.h> header file. */
+#undef HAVE_ELF_HINTS_H
+
 /* Define to 1 if you have the `getcwd' function. */
 #undef HAVE_GETCWD
 
index fb4b925..9f10ff6 100755 (executable)
@@ -8626,7 +8626,8 @@ fi
 
 
 
-for ac_header in string.h strings.h stdlib.h unistd.h
+
+for ac_header in string.h strings.h stdlib.h unistd.h elf-hints.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
index 837d2e5..18245e1 100644 (file)
@@ -112,7 +112,7 @@ AC_SUBST(HOSTING_CRT0)
 AC_SUBST(HOSTING_LIBS)
 AC_SUBST(NATIVE_LIB_DIRS)
 
-AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h)
+AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h elf-hints.h)
 AC_CHECK_FUNCS(sbrk realpath glob)
 AC_HEADER_DIRENT
 
index ce7b198..a7f695e 100644 (file)
@@ -83,8 +83,8 @@ xscale-*-elf)         targ_emul=armelf
 avr-*-*)               targ_emul=avr2
                        targ_extra_emuls="avr1 avr3 avr4 avr5"
                        ;;
-bfin-*-elf)            targ_emul=elf32bfin ;;
-bfin-*-uclinux*)       targ_emul=elf32bfin ;;
+bfin-*-elf)            targ_emul=elf32bfin; targ_extra_emuls="elf32bfinfd" ;;
+bfin-*-uclinux*)       targ_emul=elf32bfin; targ_extra_emuls="elf32bfinfd" ;;
 cr16c-*-elf*)           targ_emul=elf32cr16c
                        ;;
 cris-*-*aout*)         targ_emul=crisaout
@@ -324,9 +324,10 @@ mips*vr5000-*-elf*)        targ_emul=elf32b4300 ;;
 mips*el-*-elf*)                targ_emul=elf32elmip ;;
 mips*-*-elf*)          targ_emul=elf32ebmip ;;
 mips*-*-rtems*)                targ_emul=elf32ebmip ;;
-mips*el-*-vxworks*)    targ_emul=elf32elmip ;;
-mips*-*-vxworks*)      targ_emul=elf32ebmip
-                       targ_extra_emuls="elf32elmip" ;;
+mips*el-*-vxworks*)    targ_emul=elf32elmipvxworks
+                       targ_extra_emuls="elf32ebmipvxworks" ;;
+mips*-*-vxworks*)      targ_emul=elf32ebmipvxworks
+                       targ_extra_emuls="elf32elmipvxworks" ;;
 mips*-*-windiss)       targ_emul=elf32mipswindiss ;;
 mips64*el-*-linux-*)   targ_emul=elf32ltsmipn32
                        targ_extra_emuls="elf32btsmipn32 elf32ltsmip elf32btsmip elf64ltsmip elf64btsmip"
@@ -496,6 +497,7 @@ sparc*-*-aout)              targ_emul=sparcaout ;;
 sparc*-*-coff)         targ_emul=coff_sparc ;;
 sparc*-*-elf)          targ_emul=elf32_sparc ;;
 sparc*-*-sysv4*)       targ_emul=elf32_sparc ;;
+sparc*-*-vxworks*)     targ_emul=elf32_sparc_vxworks ;;
 sparc64-*-freebsd* | sparcv9-*-freebsd* | sparc64-*-kfreebsd*-gnu | sparcv9-*-kfreebsd*-gnu)
                        targ_emul=elf64_sparc_fbsd
                        targ_extra_emuls="elf64_sparc elf32_sparc"
index 78da27a..5c699f3 100644 (file)
@@ -648,22 +648,30 @@ def_file_add_directive (def_file *my_def, const char *param, int len)
 static void
 def_image_name (const char *name, int base, int is_dll)
 {
-  const char* image_name = lbasename (name);
-  if (image_name != name)
-    einfo ("%s:%d: Warning: path components stripped from %s, '%s'\n",
-         def_filename, linenumber, is_dll ? "LIBRARY" : "NAME", name);
-  if (def->name)
-    free (def->name);
-  /* Append the default suffix, if none specified.  */ 
-   if (strchr (image_name, '.') == 0)
-     {
-        const char * suffix = is_dll ? ".dll" : ".exe";
-
-        def->name = xmalloc (strlen (image_name) + strlen (suffix) + 1);
-        sprintf (def->name, "%s%s", image_name, suffix);
-     }
-  else
-    def->name = xstrdup (image_name);
+  /* If a LIBRARY or NAME statement is specified without a name, there is nothing
+     to do here.  We retain the output filename specified on command line.  */
+  if (*name)
+    {
+      const char* image_name = lbasename (name);
+      if (image_name != name)
+       einfo ("%s:%d: Warning: path components stripped from %s, '%s'\n",
+              def_filename, linenumber, is_dll ? "LIBRARY" : "NAME",
+              name);
+      if (def->name)
+       free (def->name);
+      /* Append the default suffix, if none specified.  */ 
+      if (strchr (image_name, '.') == 0)
+       {
+         const char * suffix = is_dll ? ".dll" : ".exe";
+
+         def->name = xmalloc (strlen (image_name) + strlen (suffix) + 1);
+         sprintf (def->name, "%s%s", image_name, suffix);
+        }
+      else
+       def->name = xstrdup (image_name);
+    }
+
+  /* Honor a BASE address statement, even if LIBRARY string is empty.  */
   def->base_address = base;
   def->is_dll = is_dll;
 }
index 86d21b2..5e7adda 100755 (executable)
@@ -10,6 +10,5 @@ ENTRY=__start
 TEMPLATE_NAME=elf32
 GENERATE_SHLIB_SCRIPT=yes
 EMBEDDED=yes
-EXTRA_EM_FILE=bfin
 DATA_END_SYMBOLS="__edata = .; PROVIDE (_edata = .);"
 END_SYMBOLS="__end = .; PROVIDE (_end = .);"
index 19ec748..9047c6a 100644 (file)
@@ -1,7 +1,7 @@
 . ${srcdir}/emulparams/bfin.sh
 unset STACK_ADDR
 OUTPUT_FORMAT="elf32-bfinfdpic"
-MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
+MAXPAGESIZE=0x4000
 TEMPLATE_NAME=elf32
 GENERATE_SHLIB_SCRIPT=yes
 GENERATE_PIE_SCRIPT=yes
index 5da3049..6148565 100644 (file)
@@ -34,6 +34,14 @@ OTHER_BSS_SYMBOLS='_fbss = .;'
 OTHER_SECTIONS='
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
+  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
 '
 ARCH=mips
 MACHINE=
diff --git a/ld/emultempl/bfin.em b/ld/emultempl/bfin.em
deleted file mode 100644 (file)
index 1c1cd8d..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-# This shell script emits a C file. -*- C -*-
-#   Copyright 2000, 2001, 2003 Free Software Foundation, Inc.
-#   Written by Michael Sokolov <msokolov@ivan.Harhan.ORG>, based on armelf.em
-#
-# This file is part of GLD, the Gnu Linker.
-#
-# 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 of the License, or
-# (at your option) any later version.
-#
-# 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 this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-# This file is sourced from elf32.em, and defines some extra routines for bfin
-# embedded systems using ELF and for some other systems using bfin ELF.  While
-# it is sourced from elf32.em for all bfin ELF configurations, here we include
-# only the features we want depending on the configuration.
-
-case ${target} in
-  bfin*-*-elf)
-    echo "#define SUPPORT_EMBEDDED_RELOCS" >>e${EMULATION_NAME}.c
-    ;;
-esac
-
-cat >>e${EMULATION_NAME}.c <<EOF
-
-#ifdef SUPPORT_EMBEDDED_RELOCS
-static void check_sections (bfd *, asection *, void *);
-#endif
-
-/* This function is run after all the input files have been opened.  */
-
-static void
-bfin_elf_after_open (void)
-{
-  /* Call the standard elf routine.  */
-  gld${EMULATION_NAME}_after_open ();
-
-#ifdef SUPPORT_EMBEDDED_RELOCS
-  if (command_line.embedded_relocs
-      && (! link_info.relocatable))
-    {
-      bfd *abfd;
-
-      /* In the embedded relocs mode we create a .emreloc section for each
-        input file with a nonzero .data section.  The BFD backend will fill in
-        these sections with magic numbers which can be used to relocate the
-        data section at run time.  */
-      for (abfd = link_info.input_bfds; abfd != NULL; abfd = abfd->link_next)
-       {
-         asection *datasec;
-
-         /* As first-order business, make sure that each input BFD is either
-            COFF or ELF.  We need to call a special BFD backend function to
-            generate the embedded relocs, and we have such functions only for
-            COFF and ELF.  */
-         if (bfd_get_flavour (abfd) != bfd_target_coff_flavour
-             && bfd_get_flavour (abfd) != bfd_target_elf_flavour)
-           einfo ("%F%B: all input objects must be COFF or ELF for --embedded-relocs\n");
-
-         datasec = bfd_get_section_by_name (abfd, ".data");
-
-         /* Note that we assume that the reloc_count field has already
-            been set up.  We could call bfd_get_reloc_upper_bound, but
-            that returns the size of a memory buffer rather than a reloc
-            count.  We do not want to call bfd_canonicalize_reloc,
-            because although it would always work it would force us to
-            read in the relocs into BFD canonical form, which would waste
-            a significant amount of time and memory.  */
-         if (datasec != NULL && datasec->reloc_count > 0)
-           {
-             asection *relsec;
-
-             relsec = bfd_make_section (abfd, ".emreloc");
-             if (relsec == NULL
-                 || ! bfd_set_section_flags (abfd, relsec,
-                                             (SEC_ALLOC
-                                              | SEC_LOAD
-                                              | SEC_HAS_CONTENTS
-                                              | SEC_IN_MEMORY))
-                 || ! bfd_set_section_alignment (abfd, relsec, 2)
-                 || ! bfd_set_section_size (abfd, relsec,
-                                            datasec->reloc_count * 12))
-               einfo ("%F%B: can not create .emreloc section: %E\n");
-           }
-
-         /* Double check that all other data sections are empty, as is
-            required for embedded PIC code.  */
-         bfd_map_over_sections (abfd, check_sections, datasec);
-       }
-    }
-#endif /* SUPPORT_EMBEDDED_RELOCS */
-}
-
-#ifdef SUPPORT_EMBEDDED_RELOCS
-/* Check that of the data sections, only the .data section has
-   relocs.  This is called via bfd_map_over_sections.  */
-
-static void
-check_sections (bfd *abfd, asection *sec, void *datasec)
-{
-  if ((bfd_get_section_flags (abfd, sec) & SEC_DATA)
-      && sec != datasec
-      && sec->reloc_count != 0)
-    einfo ("%B%X: section %s has relocs; can not use --embedded-relocs\n",
-          abfd, bfd_get_section_name (abfd, sec));
-}
-
-#endif /* SUPPORT_EMBEDDED_RELOCS */
-
-/* This function is called after the section sizes and offsets have
-   been set.  */
-
-static void
-bfin_elf_after_allocation (void)
-{
-  /* Call the standard elf routine.  */
-  after_allocation_default ();
-
-#ifdef SUPPORT_EMBEDDED_RELOCS
-  if (command_line.embedded_relocs
-      && (! link_info.relocatable))
-    {
-      bfd *abfd;
-
-      /* If we are generating embedded relocs, call a special BFD backend
-        routine to do the work.  */
-      for (abfd = link_info.input_bfds; abfd != NULL; abfd = abfd->link_next)
-       {
-         asection *datasec, *relsec;
-         char *errmsg;
-
-         datasec = bfd_get_section_by_name (abfd, ".data");
-
-         if (datasec == NULL || datasec->reloc_count == 0)
-           continue;
-
-         relsec = bfd_get_section_by_name (abfd, ".emreloc");
-         ASSERT (relsec != NULL);
-
-         if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
-           {
-             if (! bfd_bfin_elf32_create_embedded_relocs (abfd, &link_info,
-                                                          datasec, relsec,
-                                                          &errmsg))
-               {
-                 if (errmsg == NULL)
-                   einfo ("%B%X: can not create runtime reloc information: %E\n",
-                          abfd);
-                 else
-                   einfo ("%X%B: can not create runtime reloc information: %s\n",
-                          abfd, errmsg);
-               }
-           }
-         else
-           abort ();
-       }
-    }
-#endif /* SUPPORT_EMBEDDED_RELOCS */
-}
-
-EOF
-
-# We have our own after_open and after_allocation functions, but they call
-# the standard routines, so give them a different name.
-LDEMUL_AFTER_OPEN=bfin_elf_after_open
-LDEMUL_AFTER_ALLOCATION=bfin_elf_after_allocation
index 048917f..1925979 100644 (file)
@@ -13,7 +13,7 @@ cat >e${EMULATION_NAME}.c <<EOF
 
 /* ${ELFSIZE} bit ELF emulation code for ${EMULATION_NAME}
    Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-   2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
    Written by Steve Chamberlain <sac@cygnus.com>
    ELF support by Ian Lance Taylor <ian@cygnus.com>
 
@@ -148,7 +148,7 @@ cat >>e${EMULATION_NAME}.c <<EOF
 
 static struct bfd_link_needed_list *global_needed;
 static struct stat global_stat;
-static bfd_boolean global_found;
+static lang_input_statement_type *global_found;
 static struct bfd_link_needed_list *global_vercheck_needed;
 static bfd_boolean global_vercheck_failed;
 
@@ -229,12 +229,14 @@ gld${EMULATION_NAME}_stat_needed (lang_input_statement_type *s)
   const char *suffix;
   const char *soname;
 
-  if (global_found)
+  if (global_found != NULL)
     return;
   if (s->the_bfd == NULL)
     return;
-  if (s->as_needed
-      && (bfd_elf_get_dyn_lib_class (s->the_bfd) & DYN_AS_NEEDED) != 0)
+
+  /* If this input file was an as-needed entry, and wasn't found to be
+     needed at the stage it was linked, then don't say we have loaded it.  */
+  if ((bfd_elf_get_dyn_lib_class (s->the_bfd) & DYN_AS_NEEDED) != 0)
     return;
 
   if (bfd_stat (s->the_bfd, &st) != 0)
@@ -254,7 +256,7 @@ gld${EMULATION_NAME}_stat_needed (lang_input_statement_type *s)
       && st.st_ino == global_stat.st_ino
       && st.st_ino != 0)
     {
-      global_found = TRUE;
+      global_found = s;
       return;
     }
 
@@ -398,9 +400,9 @@ cat >>e${EMULATION_NAME}.c <<EOF
   if (trace_file_tries)
     info_msg (_("found %s at %s\n"), soname, name);
 
-  global_found = FALSE;
+  global_found = NULL;
   lang_for_each_input_file (gld${EMULATION_NAME}_stat_needed);
-  if (global_found)
+  if (global_found != NULL)
     {
       /* Return TRUE to indicate that we found the file, even though
         we aren't going to do anything with it.  */
@@ -529,6 +531,68 @@ gld${EMULATION_NAME}_add_sysroot (const char *path)
 
 EOF
   case ${target} in
+    *-*-freebsd* | *-*-dragonfly*)
+      cat >>e${EMULATION_NAME}.c <<EOF
+/* Read the system search path the FreeBSD way rather than the Linux way.  */
+#ifdef HAVE_ELF_HINTS_H
+#include <elf-hints.h>
+#else
+#include "elf-hints-local.h"
+#endif
+
+static bfd_boolean
+gld${EMULATION_NAME}_check_ld_elf_hints (const char *name, int force)
+{
+  static bfd_boolean initialized;
+  static char *ld_elf_hints;
+  struct dt_needed needed;
+
+  if (!initialized)
+    {
+      FILE *f;
+      char *tmppath;
+
+      tmppath = concat (ld_sysroot, _PATH_ELF_HINTS, NULL);
+      f = fopen (tmppath, FOPEN_RB);
+      free (tmppath);
+      if (f != NULL)
+       {
+         struct elfhints_hdr hdr;
+
+         if (fread (&hdr, 1, sizeof (hdr), f) == sizeof (hdr)
+             && hdr.magic == ELFHINTS_MAGIC
+             && hdr.version == 1)
+           {
+             if (fseek (f, hdr.strtab + hdr.dirlist, SEEK_SET) != -1)
+               {
+                 char *b;
+
+                 b = xmalloc (hdr.dirlistlen + 1);
+                 if (fread (b, 1, hdr.dirlistlen + 1, f) ==
+                     hdr.dirlistlen + 1)
+                   ld_elf_hints = gld${EMULATION_NAME}_add_sysroot (b);
+
+                 free (b);
+               }
+           }
+         fclose (f);
+       }
+
+      initialized = TRUE;
+    }
+
+  if (ld_elf_hints == NULL)
+    return FALSE;
+
+  needed.by = NULL;
+  needed.name = name;
+  return gld${EMULATION_NAME}_search_needed (ld_elf_hints, & needed,
+                                            force);
+}
+EOF
+    # FreeBSD
+    ;;
+
     *-*-linux-* | *-*-k*bsd*-*)
       cat >>e${EMULATION_NAME}.c <<EOF
 /* For a native linker, check the file /etc/ld.so.conf for directories
@@ -541,7 +605,7 @@ struct gld${EMULATION_NAME}_ld_so_conf
   size_t len, alloc;
 };
 
-static void
+static bfd_boolean
 gld${EMULATION_NAME}_parse_ld_so_conf
      (struct gld${EMULATION_NAME}_ld_so_conf *info, const char *filename);
 
@@ -584,7 +648,7 @@ gld${EMULATION_NAME}_parse_ld_so_conf_include
     free (newp);
 }
 
-static void
+static bfd_boolean
 gld${EMULATION_NAME}_parse_ld_so_conf
      (struct gld${EMULATION_NAME}_ld_so_conf *info, const char *filename)
 {
@@ -593,7 +657,7 @@ gld${EMULATION_NAME}_parse_ld_so_conf
   size_t linelen;
 
   if (f == NULL)
-    return;
+    return FALSE;
 
   linelen = 256;
   line = xmalloc (linelen);
@@ -691,6 +755,7 @@ gld${EMULATION_NAME}_parse_ld_so_conf
   while (! feof (f));
   free (line);
   fclose (f);
+  return TRUE;
 }
 
 static bfd_boolean
@@ -705,11 +770,17 @@ gld${EMULATION_NAME}_check_ld_so_conf (const char *name, int force)
       char *tmppath;
       struct gld${EMULATION_NAME}_ld_so_conf info;
 
-      tmppath = concat (ld_sysroot, "/etc/ld.so.conf", NULL);
       info.path = NULL;
       info.len = info.alloc = 0;
-      gld${EMULATION_NAME}_parse_ld_so_conf (&info, tmppath);
+      tmppath = concat (ld_sysroot, "${prefix}/etc/ld.so.conf", NULL);
+      if (!gld${EMULATION_NAME}_parse_ld_so_conf (&info, tmppath))
+       {
+         free (tmppath);
+         tmppath = concat (ld_sysroot, "/etc/ld.so.conf", NULL);
+         gld${EMULATION_NAME}_parse_ld_so_conf (&info, tmppath);
+       }
       free (tmppath);
+
       if (info.path)
        {
          char *d = gld${EMULATION_NAME}_add_sysroot (info.path);
@@ -740,49 +811,45 @@ cat >>e${EMULATION_NAME}.c <<EOF
 static void
 gld${EMULATION_NAME}_check_needed (lang_input_statement_type *s)
 {
-  if (global_found)
+  const char *soname;
+
+  /* Stop looking if we've found a loaded lib.  */
+  if (global_found != NULL
+      && (bfd_elf_get_dyn_lib_class (global_found->the_bfd)
+         & DYN_AS_NEEDED) == 0)
     return;
 
-  /* If this input file was an as-needed entry, and wasn't found to be
-     needed at the stage it was linked, then don't say we have loaded it.  */
-  if (s->as_needed
-      && (s->the_bfd == NULL
-         || (bfd_elf_get_dyn_lib_class (s->the_bfd) & DYN_AS_NEEDED) != 0))
+  if (s->filename == NULL || s->the_bfd == NULL)
+    return;
+
+  /* Don't look for a second non-loaded as-needed lib.  */
+  if (global_found != NULL
+      && (bfd_elf_get_dyn_lib_class (s->the_bfd) & DYN_AS_NEEDED) != 0)
     return;
 
-  if (s->filename != NULL)
+  if (strcmp (s->filename, global_needed->name) == 0)
     {
-      const char *f;
+      global_found = s;
+      return;
+    }
 
-      if (strcmp (s->filename, global_needed->name) == 0)
+  if (s->search_dirs_flag)
+    {
+      const char *f = strrchr (s->filename, '/');
+      if (f != NULL
+         && strcmp (f + 1, global_needed->name) == 0)
        {
-         global_found = TRUE;
+         global_found = s;
          return;
        }
-
-      if (s->search_dirs_flag)
-       {
-         f = strrchr (s->filename, '/');
-         if (f != NULL
-             && strcmp (f + 1, global_needed->name) == 0)
-           {
-             global_found = TRUE;
-             return;
-           }
-       }
     }
 
-  if (s->the_bfd != NULL)
+  soname = bfd_elf_get_dt_soname (s->the_bfd);
+  if (soname != NULL
+      && strcmp (soname, global_needed->name) == 0)
     {
-      const char *soname;
-
-      soname = bfd_elf_get_dt_soname (s->the_bfd);
-      if (soname != NULL
-         && strcmp (soname, global_needed->name) == 0)
-       {
-         global_found = TRUE;
-         return;
-       }
+      global_found = s;
+      return;
     }
 }
 
@@ -835,9 +902,11 @@ gld${EMULATION_NAME}_after_open (void)
 
       /* See if this file was included in the link explicitly.  */
       global_needed = l;
-      global_found = FALSE;
+      global_found = NULL;
       lang_for_each_input_file (gld${EMULATION_NAME}_check_needed);
-      if (global_found)
+      if (global_found != NULL
+         && (bfd_elf_get_dyn_lib_class (global_found->the_bfd)
+             & DYN_AS_NEEDED) == 0)
        continue;
 
       n.by = l->by;
@@ -846,6 +915,15 @@ gld${EMULATION_NAME}_after_open (void)
       if (trace_file_tries)
        info_msg (_("%s needed by %B\n"), l->name, l->by);
 
+      /* As-needed libs specified on the command line (or linker script)
+        take priority over libs found in search dirs.  */
+      if (global_found != NULL)
+       {
+         nn.name = global_found->filename;
+         if (gld${EMULATION_NAME}_try_needed (&nn, TRUE))
+           continue;
+       }
+
       /* We need to find this file and include the symbol table.  We
         want to search for the file in the same way that the dynamic
         linker will search.  That means that we want to use
@@ -921,6 +999,14 @@ EOF
 fi
 if [ "x${USE_LIBPATH}" = xyes ] ; then
   case ${target} in
+    *-*-freebsd* | *-*-dragonfly*)
+      cat >>e${EMULATION_NAME}.c <<EOF
+         if (gld${EMULATION_NAME}_check_ld_elf_hints (l->name, force))
+           break;
+EOF
+    # FreeBSD
+    ;;
+
     *-*-linux-* | *-*-k*bsd*-*)
     # Linux
       cat >>e${EMULATION_NAME}.c <<EOF
@@ -1648,7 +1734,7 @@ cat >>e${EMULATION_NAME}.c <<EOF
 #define OPTION_GROUP                   (OPTION_ENABLE_NEW_DTAGS + 1)
 #define OPTION_EH_FRAME_HDR            (OPTION_GROUP + 1)
 #define OPTION_EXCLUDE_LIBS            (OPTION_EH_FRAME_HDR + 1)
-  
+
 static void
 gld${EMULATION_NAME}_add_options
   (int ns, char **shortopts, int nl, struct option **longopts,
index d41fa00..ddc5370 100644 (file)
@@ -32,7 +32,7 @@ static int itanium = 0;
 static void
 gld${EMULATION_NAME}_after_parse (void)
 {
-  link_info.need_relax_finalize = TRUE;
+  link_info.relax_pass = 2;
   bfd_elf${ELFSIZE}_ia64_after_parse (itanium);
 }
 
index 16feed1..f5d2ba9 100644 (file)
@@ -1,5 +1,5 @@
 # This shell script emits a C file. -*- C -*-
-#   Copyright 2003, 2004, 2005
+#   Copyright 2003, 2004, 2005, 2006
 #   Free Software Foundation, Inc.
 #
 # This file is part of GLD, the Gnu Linker.
@@ -32,6 +32,8 @@ cat >>e${EMULATION_NAME}.c <<EOF
 
 static void xtensa_wild_group_interleave (lang_statement_union_type *);
 static void xtensa_colocate_output_literals (lang_statement_union_type *);
+static void xtensa_strip_inconsistent_linkonce_sections
+  (lang_statement_list_type *);
 
 
 /* Flag for the emulation-specific "--no-relax" option.  */
@@ -370,6 +372,8 @@ elf_xtensa_before_allocation (void)
   if (!disable_relaxation)
     command_line.relax = TRUE;
 
+  xtensa_strip_inconsistent_linkonce_sections (stat_ptr);
+
   gld${EMULATION_NAME}_before_allocation ();
 
   xtensa_wild_group_interleave (stat_ptr->head);
@@ -1157,6 +1161,145 @@ ld_count_children (lang_statement_union_type *s)
 #endif /* EXTRA_VALIDATION */
 
 
+/* Check if a particular section is included in the link.  This will only
+   be true for one instance of a particular linkonce section.  */
+
+static bfd_boolean input_section_found = FALSE;
+static asection *input_section_target = NULL;
+
+static void
+input_section_linked_worker (lang_statement_union_type *statement)
+{
+  if ((statement->header.type == lang_input_section_enum
+       && (statement->input_section.section == input_section_target)))
+    input_section_found = TRUE;
+}
+
+static bfd_boolean
+input_section_linked (asection *sec)
+{
+  input_section_found = FALSE;
+  input_section_target = sec;
+  lang_for_each_statement_worker (input_section_linked_worker, stat_ptr->head);
+  return input_section_found;
+}
+
+
+/* Strip out any linkonce literal sections or property tables where the
+   associated linkonce text is from a different object file.  Normally,
+   a matching set of linkonce sections is taken from the same object file,
+   but sometimes the files are compiled differently so that some of the
+   linkonce sections are not present in all files.  Stripping the
+   inconsistent sections like this is not completely robust -- a much
+   better solution is to use comdat groups.  */
+
+static int linkonce_len = sizeof (".gnu.linkonce.") - 1;
+
+static bfd_boolean
+is_inconsistent_linkonce_section (asection *sec)
+{
+  bfd *abfd = sec->owner;
+  const char *sec_name = bfd_get_section_name (abfd, sec);
+  char *prop_tag = 0;
+
+  if ((bfd_get_section_flags (abfd, sec) & SEC_LINK_ONCE) == 0
+      || strncmp (sec_name, ".gnu.linkonce.", linkonce_len) != 0)
+    return FALSE;
+
+  /* Check if this is an Xtensa property section.  */
+  if (strncmp (sec_name + linkonce_len, "p.", 2) == 0)
+    prop_tag = "p.";
+  else if (strncmp (sec_name + linkonce_len, "prop.", 5) == 0)
+    prop_tag = "prop.";
+  if (prop_tag)
+    {
+      int tag_len = strlen (prop_tag);
+      char *dep_sec_name = xmalloc (strlen (sec_name));
+      asection *dep_sec;
+
+      /* Get the associated linkonce text section and check if it is
+        included in the link.  If not, this section is inconsistent
+        and should be stripped.  */
+      strcpy (dep_sec_name, ".gnu.linkonce.");
+      strcat (dep_sec_name, sec_name + linkonce_len + tag_len);
+      dep_sec = bfd_get_section_by_name (abfd, dep_sec_name);
+      if (dep_sec == NULL || ! input_section_linked (dep_sec))
+       {
+         free (dep_sec_name);
+         return TRUE;
+       }
+      free (dep_sec_name);
+    }
+
+  return FALSE;
+}
+
+
+static void
+xtensa_strip_inconsistent_linkonce_sections (lang_statement_list_type *slist)
+{
+  lang_statement_union_type **s_p = &slist->head;
+  while (*s_p)
+    {
+      lang_statement_union_type *s = *s_p;
+      lang_statement_union_type *s_next = (*s_p)->header.next;
+
+      switch (s->header.type)
+       {
+       case lang_input_section_enum:
+         if (is_inconsistent_linkonce_section (s->input_section.section))
+           {
+             *s_p = s_next;
+             continue;
+           }
+         break;
+
+       case lang_constructors_statement_enum:
+         xtensa_strip_inconsistent_linkonce_sections (&constructor_list);
+         break;
+
+       case lang_output_section_statement_enum:
+         if (s->output_section_statement.children.head)
+           xtensa_strip_inconsistent_linkonce_sections
+             (&s->output_section_statement.children);
+         break;
+
+       case lang_wild_statement_enum:
+         xtensa_strip_inconsistent_linkonce_sections
+           (&s->wild_statement.children);
+         break;
+
+       case lang_group_statement_enum:
+         xtensa_strip_inconsistent_linkonce_sections
+           (&s->group_statement.children);
+         break;
+
+       case lang_data_statement_enum:
+       case lang_reloc_statement_enum:
+       case lang_object_symbols_statement_enum:
+       case lang_output_statement_enum:
+       case lang_target_statement_enum:
+       case lang_input_statement_enum:
+       case lang_assignment_statement_enum:
+       case lang_padding_statement_enum:
+       case lang_address_statement_enum:
+       case lang_fill_statement_enum:
+         break;
+
+       default:
+         FAIL ();
+         break;
+       }
+
+      s_p = &(*s_p)->header.next;
+    }
+
+  /* Reset the tail of the list, in case the last entry was removed.  */
+  if (s_p != slist->tail)
+    slist->tail = s_p;
+}
+
+
 static void
 xtensa_wild_group_interleave_callback (lang_statement_union_type *statement)
 {
index 5add195..800f64e 100644 (file)
@@ -9,6 +9,8 @@
 @set HPPA
 @set MMIX
 @set MSP430
+@set POWERPC
+@set POWERPC64
 @set TICOFF
 @set WIN32
 @set XTENSA
index 76d5dd2..e9d4f15 100755 (executable)
@@ -4,6 +4,7 @@
 # Usage: genscripts_extra.sh \
 #          srcdir \
 #          libdir \
+#          prefix \
 #          exec_prefix \
 #          host \
 #          target \
@@ -22,6 +23,7 @@
 #    /sources/ld \
 #    /usr/local/lib \
 #    /usr/local \
+#    /usr/local \
 #    sparc-sun-sunos4.1.3 \
 #    sparc-sun-sunos4.1.3 \
 #    sparc-sun-sunos4.1.3 \
 
 srcdir=$1
 libdir=$2
-exec_prefix=$3
-host=$4
-target=$5
-target_alias=$6
-EMULATION_LIBPATH=$7
-NATIVE_LIB_DIRS=$8
-use_sysroot=$9
+prefix=$3
+exec_prefix=$4
+host=$5
+target=$6
+target_alias=$7
+EMULATION_LIBPATH=$8
+NATIVE_LIB_DIRS=$9
 shift 9
-EMULATION_NAME=$1
-TOOL_LIB=$2
-CUSTOMIZER_SCRIPT=$3
+use_sysroot=$1
+EMULATION_NAME=$2
+TOOL_LIB=$3
+CUSTOMIZER_SCRIPT=$4
 
 # Can't use ${TOOL_LIB:-$target_alias} here due to an Ultrix shell bug.
 if [ "x${TOOL_LIB}" = "x" ] ; then
index bdb9ee6..fc2413e 100644 (file)
@@ -40,6 +40,8 @@
 @set MSP430
 @set PDP11
 @set PJ
+@set POWERPC
+@set POWERPC64
 @set SH
 @set SPARC
 @set TIC54X
@@ -156,6 +158,12 @@ section entitled ``GNU Free Documentation License''.
 @ifset M68HC11
 * M68HC11/68HC12::              ld and the Motorola 68HC11 and 68HC12 families
 @end ifset
+@ifset POWERPC
+* PowerPC ELF32::               ld and PowerPC 32-bit ELF Support
+@end ifset
+@ifset POWERPC64
+* PowerPC64 ELF64::             ld and PowerPC64 64-bit ELF Support
+@end ifset
 @ifset TICOFF
 * TI COFF::                     ld and the TI COFF
 @end ifset
@@ -342,7 +350,7 @@ Here is a table of the generic command line switches accepted by the GNU
 linker:
 
 @table @gcctabopt
-@include @value{top_srcdir}/../libiberty/at-file.texi
+@include at-file.texi
 
 @kindex -a@var{keyword}
 @item -a@var{keyword}
@@ -1117,7 +1125,7 @@ platforms which support shared libraries.
 @item --check-sections
 @itemx --no-check-sections
 Asks the linker @emph{not} to check section addresses after they have
-been assigned to see if there any overlaps.  Normally the linker will
+been assigned to see if there are any overlaps.  Normally the linker will
 perform this check, and if it finds any overlaps it will produce
 suitable error messages.  The linker does know about, and does make
 allowances for sections in overlays.  The default behaviour can be
@@ -1383,6 +1391,9 @@ This option is only supported on a few targets.
 @ifset M68HC11
 @xref{M68HC11/68HC12,,@command{ld} and the 68HC11 and 68HC12}.
 @end ifset
+@ifset POWERPC
+@xref{PowerPC ELF32,,@command{ld} and PowerPC 32-bit ELF Support}.
+@end ifset
 
 On some platforms, the @samp{--relax} option performs global
 optimizations that become possible when the linker resolves addressing
@@ -5111,6 +5122,12 @@ functionality are not listed.
 @ifset M68HC11
 * M68HC11/68HC12::             @code{ld} and the Motorola 68HC11 and 68HC12 families
 @end ifset
+@ifset POWERPC
+* PowerPC ELF32::              @command{ld} and PowerPC 32-bit ELF Support
+@end ifset
+@ifset POWERPC64
+* PowerPC64 ELF64::            @command{ld} and PowerPC64 64-bit ELF Support
+@end ifset
 @ifset TICOFF
 * TI COFF::                     @command{ld} and TI COFF
 @end ifset
@@ -5502,6 +5519,183 @@ The last two sections are used by gcc.
 @end ifclear
 @end ifset
 
+@ifset POWERPC
+@ifclear GENERIC
+@raisesections
+@end ifclear
+
+@node PowerPC ELF32
+@section @command{ld} and PowerPC 32-bit ELF Support
+@cindex PowerPC long branches
+@kindex --relax on PowerPC
+Branches on PowerPC processors are limited to a signed 26-bit
+displacement, which may result in @command{ld} giving
+@samp{relocation truncated to fit} errors with very large programs.
+@samp{--relax} enables the generation of trampolines that can access
+the entire 32-bit address space.  These trampolines are inserted at
+section boundaries, so may not themselves be reachable if an input
+section exceeds 33M in size.
+
+@cindex PowerPC ELF32 options
+@table @option
+@cindex PowerPC PLT
+@kindex --bss-plt
+@item --bss-plt
+Current PowerPC GCC accepts a @samp{-msecure-plt} option that
+generates code capable of using a newer PLT and GOT layout that has
+the security advantage of no executable section ever needing to be
+writable and no writable section ever being executable.  PowerPC
+@command{ld} will generate this layout, including stubs to access the
+PLT, if all input files (including startup and static libraries) were
+compiled with @samp{-msecure-plt}.  @samp{--bss-plt} forces the old
+BSS PLT (and GOT layout) which can give slightly better performance.
+
+@cindex PowerPC GOT
+@kindex --sdata-got
+@item --sdata-got
+The new secure PLT and GOT are placed differently relative to other
+sections compared to older BSS PLT and GOT placement.  The location of
+@code{.plt} must change because the new secure PLT is an initialized
+section while the old PLT is uninitialized.  The reason for the
+@code{.got} change is more subtle:  The new placement allows
+@code{.got} to be read-only in applications linked with
+@samp{-z relro -z now}.  However, this placement means that
+@code{.sdata} cannot always be used in shared libraries, because the
+PowerPC ABI accesses @code{.sdata} in shared libraries from the GOT
+pointer.  @samp{--sdata-got} forces the old GOT placement.  PowerPC
+GCC doesn't use @code{.sdata} in shared libraries, so this option is
+really only useful for other compilers that may do so.
+
+@cindex PowerPC stub symbols
+@kindex --emit-stub-syms
+@item --emit-stub-syms
+This option causes @command{ld} to label linker stubs with a local
+symbol that encodes the stub type and destination.
+
+@cindex PowerPC TLS optimization
+@kindex --no-tls-optimize
+@item --no-tls-optimize
+PowerPC @command{ld} normally performs some optimization of code
+sequences used to access Thread-Local Storage.  Use this option to
+disable the optimization.
+@end table
+
+@ifclear GENERIC
+@lowersections
+@end ifclear
+@end ifset
+
+@ifset POWERPC64
+@ifclear GENERIC
+@raisesections
+@end ifclear
+
+@node PowerPC64 ELF64
+@section @command{ld} and PowerPC64 64-bit ELF Support
+
+@cindex PowerPC64 ELF64 options
+@table @option
+@cindex PowerPC64 stub grouping
+@kindex --stub-group-size
+@item --stub-group-size
+Long branch stubs, PLT call stubs  and TOC adjusting stubs are placed
+by @command{ld} in stub sections located between groups of input sections.
+@samp{--stub-group-size} specifies the maximum size of a group of input
+sections handled by one stub section.  Since branch offsets are signed,
+a stub section may serve two groups of input sections, one group before
+the stub section, and one group after it.  However, when using
+conditional branches that require stubs, it may be better (for branch
+prediction) that stub sections only serve one group of input sections.
+A negative value for @samp{N} chooses this scheme, ensuring that
+branches to stubs always use a negative offset.  Two special values of
+@samp{N} are recognized, @samp{1} and @samp{-1}.  These both instruct
+@command{ld} to automatically size input section groups for the branch types
+detected, with the same behaviour regarding stub placement as other
+positive or negative values of @samp{N} respectively.
+
+Note that @samp{--stub-group-size} does not split input sections.  A
+single input section larger than the group size specified will of course
+create a larger group (of one section).  If input sections are too
+large, it may not be possible for a branch to reach its stub.
+
+@cindex PowerPC64 stub symbols
+@kindex --emit-stub-syms
+@item --emit-stub-syms
+This option causes @command{ld} to label linker stubs with a local
+symbol that encodes the stub type and destination.
+
+@cindex PowerPC64 dot symbols
+@kindex --dotsyms
+@kindex --no-dotsyms
+@item --dotsyms, --no-dotsyms
+These two options control how @command{ld} interprets version patterns
+in a version script.  Older PowerPC64 compilers emitted both a
+function descriptor symbol with the same name as the function, and a
+code entry symbol with the name prefixed by a dot (@samp{.}).  To
+properly version a function @samp{foo}, the version script thus needs
+to control both @samp{foo} and @samp{.foo}.  The option
+@samp{--dotsyms}, on by default, automatically adds the required
+dot-prefixed patterns.  Use @samp{--no-dotsyms} to disable this
+feature.
+
+@cindex PowerPC64 TLS optimization
+@kindex --no-tls-optimize
+@item --no-tls-optimize
+PowerPC64 @command{ld} normally performs some optimization of code
+sequences used to access Thread-Local Storage.  Use this option to
+disable the optimization.
+
+@cindex PowerPC64 OPD optimization
+@kindex --no-opd-optimize
+@item --no-opd-optimize
+PowerPC64 @command{ld} normally removes @code{.opd} section entries
+corresponding to deleted link-once functions, or functions removed by
+the action of @samp{--gc-sections} or linker scrip @code{/DISCARD/}.
+Use this option to disable @code{.opd} optimization.
+
+@cindex PowerPC64 OPD spacing
+@kindex --non-overlapping-opd
+@item --non-overlapping-opd
+Some PowerPC64 compilers have an option to generate compressed
+@code{.opd} entries spaced 16 bytes apart, overlapping the third word,
+the static chain pointer (unused in C) with the first word of the next
+entry.  This option expands such entries to the full 24 bytes.
+
+@cindex PowerPC64 TOC optimization
+@kindex --no-toc-optimize
+@item --no-toc-optimize
+PowerPC64 @command{ld} normally removes unused @code{.toc} section
+entries.  Such entries are detected by examining relocations that
+reference the TOC in code sections.  A reloc in a deleted code section
+marks a TOC word as unneeded, while a reloc in a kept code section
+marks a TOC word as needed.  Since the TOC may reference itself, TOC
+relocs are also examined.  TOC words marked as both needed and
+unneeded will of course be kept.  TOC words without any referencing
+reloc are assumed to be part of a multi-word entry, and are kept or
+discarded as per the nearest marked preceding word.  This works
+reliably for compiler generated code, but may be incorrect if assembly
+code is used to insert TOC entries.  Use this option to disable the
+optimization.
+
+@cindex PowerPC64 multi-TOC
+@kindex --no-multi-toc
+@item --no-multi-toc
+By default, PowerPC64 GCC generates code for a TOC model where TOC
+entries are accessed with a 16-bit offset from r2.  This limits the
+total TOC size to 64K.  PowerPC64 @command{ld} extends this limit by
+grouping code sections such that each group uses less than 64K for its
+TOC entries, then inserts r2 adjusting stubs between inter-group
+calls.  @command{ld} does not split apart input sections, so cannot
+help if a single input file has a @code{.toc} section that exceeds
+64K, most likely from linking multiple files with @command{ld -r}.
+Use this option to turn off this feature.
+@end table
+
+@ifclear GENERIC
+@lowersections
+@end ifclear
+@end ifset
+
 @ifset TICOFF
 @ifclear GENERIC
 @raisesections
@@ -5618,7 +5812,8 @@ specification @code{BASE = <number>} may be used to specify a
 non-default base address for the image. 
 
 If neither @code{LIBRARY <name>} nor  @code{NAME <name>} is specified,
-the internal name is the same as the filename specified on the command line. 
+or they specify an empty string, the internal name is the same as the
+filename specified on the command line.
 
 The complete specification of an export symbol is:
 
index a9b325d..8764a70 100644 (file)
@@ -81,6 +81,7 @@ static void print_statement (lang_statement_union_type *,
 static void print_statement_list (lang_statement_union_type *,
                                  lang_output_section_statement_type *);
 static void print_statements (void);
+static void print_input_section (asection *);
 static bfd_boolean lang_one_common (struct bfd_link_hash_entry *, void *);
 static void lang_record_phdrs (void);
 static void lang_do_version_exports_section (void);
@@ -869,26 +870,26 @@ lang_add_input_file (const char *name,
   return new_afile (name, file_type, target, TRUE);
 }
 
-struct output_statement_hash_entry
+struct out_section_hash_entry
 {
   struct bfd_hash_entry root;
-  lang_output_section_statement_type os;
+  lang_statement_union_type s;
 };
 
 /* The hash table.  */
 
-static struct bfd_hash_table output_statement_table;
+static struct bfd_hash_table output_section_statement_table;
 
 /* Support routines for the hash table used by lang_output_section_find,
    initialize the table, fill in an entry and remove the table.  */
 
 static struct bfd_hash_entry *
-output_statement_newfunc (struct bfd_hash_entry *entry, 
-                         struct bfd_hash_table *table,
-                         const char *string)
+output_section_statement_newfunc (struct bfd_hash_entry *entry, 
+                                 struct bfd_hash_table *table,
+                                 const char *string)
 {
   lang_output_section_statement_type **nextp;
-  struct output_statement_hash_entry *ret;
+  struct out_section_hash_entry *ret;
 
   if (entry == NULL)
     {
@@ -901,49 +902,48 @@ output_statement_newfunc (struct bfd_hash_entry *entry,
   if (entry == NULL)
     return entry;
 
-  ret = (struct output_statement_hash_entry *) entry;
-  memset (&ret->os, 0, sizeof (ret->os));
-  ret->os.header.type = lang_output_section_statement_enum;
-  ret->os.subsection_alignment = -1;
-  ret->os.section_alignment = -1;
-  ret->os.block_value = 1;
-  lang_list_init (&ret->os.children);
-  lang_statement_append (stat_ptr,
-                        (lang_statement_union_type *) &ret->os,
-                        &ret->os.header.next);
+  ret = (struct out_section_hash_entry *) entry;
+  memset (&ret->s, 0, sizeof (ret->s));
+  ret->s.header.type = lang_output_section_statement_enum;
+  ret->s.output_section_statement.subsection_alignment = -1;
+  ret->s.output_section_statement.section_alignment = -1;
+  ret->s.output_section_statement.block_value = 1;
+  lang_list_init (&ret->s.output_section_statement.children);
+  lang_statement_append (stat_ptr, &ret->s, &ret->s.header.next);
 
   /* For every output section statement added to the list, except the
      first one, lang_output_section_statement.tail points to the "next"
      field of the last element of the list.  */
   if (lang_output_section_statement.head != NULL)
-    ret->os.prev = (lang_output_section_statement_type *)
-      ((char *) lang_output_section_statement.tail
-       - offsetof (lang_output_section_statement_type, next));
+    ret->s.output_section_statement.prev
+      = ((lang_output_section_statement_type *)
+        ((char *) lang_output_section_statement.tail
+         - offsetof (lang_output_section_statement_type, next)));
 
   /* GCC's strict aliasing rules prevent us from just casting the
      address, so we store the pointer in a variable and cast that
      instead.  */
-  nextp = &ret->os.next;
+  nextp = &ret->s.output_section_statement.next;
   lang_statement_append (&lang_output_section_statement,
-                        (lang_statement_union_type *) &ret->os,
+                        &ret->s,
                         (lang_statement_union_type **) nextp);
   return &ret->root;
 }
 
 static void
-output_statement_table_init (void)
+output_section_statement_table_init (void)
 {
-  if (!bfd_hash_table_init_n (&output_statement_table,
-                             output_statement_newfunc,
-                             sizeof (struct output_statement_hash_entry),
+  if (!bfd_hash_table_init_n (&output_section_statement_table,
+                             output_section_statement_newfunc,
+                             sizeof (struct out_section_hash_entry),
                              61))
     einfo (_("%P%F: can not create hash table: %E\n"));
 }
 
 static void
-output_statement_table_free (void)
+output_section_statement_table_free (void)
 {
-  bfd_hash_table_free (&output_statement_table);
+  bfd_hash_table_free (&output_section_statement_table);
 }
 
 /* Build enough state so that the parser can build its tree.  */
@@ -955,7 +955,7 @@ lang_init (void)
 
   stat_ptr = &statement_list;
 
-  output_statement_table_init ();
+  output_section_statement_table_init ();
 
   lang_list_init (stat_ptr);
 
@@ -985,7 +985,7 @@ lang_init (void)
 void
 lang_finish (void)
 {
-  output_statement_table_free ();
+  output_section_statement_table_free ();
 }
 
 /*----------------------------------------------------------------------
@@ -1072,24 +1072,25 @@ lang_memory_default (asection *section)
 lang_output_section_statement_type *
 lang_output_section_find (const char *const name)
 {
-  struct output_statement_hash_entry *entry;
+  struct out_section_hash_entry *entry;
   unsigned long hash;
 
-  entry = ((struct output_statement_hash_entry *)
-          bfd_hash_lookup (&output_statement_table, name, FALSE, FALSE));
+  entry = ((struct out_section_hash_entry *)
+          bfd_hash_lookup (&output_section_statement_table, name,
+                           FALSE, FALSE));
   if (entry == NULL)
     return NULL;
 
   hash = entry->root.hash;
   do
     {
-      if (entry->os.constraint != -1)
-       return &entry->os;
-      entry = (struct output_statement_hash_entry *) entry->root.next;
+      if (entry->s.output_section_statement.constraint != -1)
+       return &entry->s.output_section_statement;
+      entry = (struct out_section_hash_entry *) entry->root.next;
     }
   while (entry != NULL
         && entry->root.hash == hash
-        && strcmp (name, entry->os.name) == 0);
+        && strcmp (name, entry->s.output_section_statement.name) == 0);
 
   return NULL;
 }
@@ -1097,39 +1098,43 @@ lang_output_section_find (const char *const name)
 static lang_output_section_statement_type *
 lang_output_section_statement_lookup_1 (const char *const name, int constraint)
 {
-  struct output_statement_hash_entry *entry;
-  struct output_statement_hash_entry *last_ent;
+  struct out_section_hash_entry *entry;
+  struct out_section_hash_entry *last_ent;
   unsigned long hash;
 
-  entry = ((struct output_statement_hash_entry *)
-          bfd_hash_lookup (&output_statement_table, name, TRUE, FALSE));
+  entry = ((struct out_section_hash_entry *)
+          bfd_hash_lookup (&output_section_statement_table, name,
+                           TRUE, FALSE));
   if (entry == NULL)
     {
       einfo (_("%P%F: failed creating section `%s': %E\n"), name);
       return NULL;
     }
 
-  if (entry->os.name != NULL)
+  if (entry->s.output_section_statement.name != NULL)
     {
       /* We have a section of this name, but it might not have the correct
         constraint.  */
       hash = entry->root.hash;
       do
        {
-         if (entry->os.constraint != -1
+         if (entry->s.output_section_statement.constraint != -1
              && (constraint == 0
-                 || (constraint == entry->os.constraint
+                 || (constraint == entry->s.output_section_statement.constraint
                      && constraint != SPECIAL)))
-           return &entry->os;
+           return &entry->s.output_section_statement;
          last_ent = entry;
-         entry = (struct output_statement_hash_entry *) entry->root.next;
+         entry = (struct out_section_hash_entry *) entry->root.next;
        }
       while (entry != NULL
             && entry->root.hash == hash
-            && strcmp (name, entry->os.name) == 0);
+            && strcmp (name, entry->s.output_section_statement.name) == 0);
 
-      entry = ((struct output_statement_hash_entry *)
-              output_statement_newfunc (NULL, &output_statement_table, name));
+      entry
+       = ((struct out_section_hash_entry *)
+          output_section_statement_newfunc (NULL,
+                                            &output_section_statement_table,
+                                            name));
       if (entry == NULL)
        {
          einfo (_("%P%F: failed creating section `%s': %E\n"), name);
@@ -1139,9 +1144,9 @@ lang_output_section_statement_lookup_1 (const char *const name, int constraint)
       last_ent->root.next = &entry->root;
     }
 
-  entry->os.name = name;
-  entry->os.constraint = constraint;
-  return &entry->os;
+  entry->s.output_section_statement.name = name;
+  entry->s.output_section_statement.constraint = constraint;
+  return &entry->s.output_section_statement;
 }
 
 lang_output_section_statement_type *
@@ -1607,8 +1612,31 @@ void
 lang_map (void)
 {
   lang_memory_region_type *m;
+  bfd_boolean dis_header_printed = FALSE;
   bfd *p;
 
+  LANG_FOR_EACH_INPUT_STATEMENT (file)
+    {
+      asection *s;
+
+      if ((file->the_bfd->flags & (BFD_LINKER_CREATED | DYNAMIC)) != 0
+         || file->just_syms_flag)
+       continue;
+
+      for (s = file->the_bfd->sections; s != NULL; s = s->next)
+       if (s->output_section == NULL
+           || s->output_section->owner != output_bfd)
+         {
+           if (! dis_header_printed)
+             {
+               fprintf (config.map_file, _("\nDiscarded input sections\n\n"));
+               dis_header_printed = TRUE;
+             }
+
+           print_input_section (s);
+         }
+    }
+
   minfo (_("\nMemory Configuration\n\n"));
   fprintf (config.map_file, "%-16s %-18s %-18s %s\n",
           _("Name"), _("Origin"), _("Length"), _("Attributes"));
@@ -2310,6 +2338,7 @@ load_symbols (lang_input_statement_type *entry,
       lang_statement_list_type *hold;
       bfd_boolean bad_load = TRUE;
       bfd_boolean save_ldlang_sysrooted_script;
+      bfd_boolean save_as_needed, save_add_needed;
 
       err = bfd_get_error ();
 
@@ -2343,6 +2372,10 @@ load_symbols (lang_input_statement_type *entry,
       stat_ptr = place;
       save_ldlang_sysrooted_script = ldlang_sysrooted_script;
       ldlang_sysrooted_script = entry->sysrooted;
+      save_as_needed = as_needed;
+      as_needed = entry->as_needed;
+      save_add_needed = add_needed;
+      add_needed = entry->add_needed;
 
       ldfile_assumed_script = TRUE;
       parser_input = input_script;
@@ -2353,6 +2386,8 @@ load_symbols (lang_input_statement_type *entry,
       ldfile_assumed_script = FALSE;
 
       ldlang_sysrooted_script = save_ldlang_sysrooted_script;
+      as_needed = save_as_needed;
+      add_needed = save_add_needed;
       stat_ptr = hold;
 
       return ! bad_load;
@@ -3486,13 +3521,12 @@ print_all_symbols (sec)
 /* Print information about an input section to the map file.  */
 
 static void
-print_input_section (lang_input_section_type *in)
+print_input_section (asection *i)
 {
-  asection *i = in->section;
   bfd_size_type size = i->size;
 
   init_opb ();
-  if (size != 0)
+
     {
       int len;
       bfd_vma addr;
@@ -3512,7 +3546,7 @@ print_input_section (lang_input_section_type *in)
          ++len;
        }
 
-      if (i->output_section != NULL && (i->flags & SEC_EXCLUDE) == 0)
+      if (i->output_section != NULL && i->output_section->owner == output_bfd)
        addr = i->output_section->vma + i->output_offset;
       else
        {
@@ -3539,7 +3573,7 @@ print_input_section (lang_input_section_type *in)
          minfo (_("%W (size before relaxing)\n"), i->rawsize);
        }
 
-      if (i->output_section != NULL && (i->flags & SEC_EXCLUDE) == 0)
+      if (i->output_section != NULL && i->output_section->owner == output_bfd)
        {
          if (command_line.reduce_memory_overheads)
            bfd_link_hash_traverse (link_info.hash, print_one_symbol, i);
@@ -3808,7 +3842,7 @@ print_statement (lang_statement_union_type *s,
       print_reloc_statement (&s->reloc_statement);
       break;
     case lang_input_section_enum:
-      print_input_section (&s->input_section);
+      print_input_section (s->input_section.section);
       break;
     case lang_padding_statement_enum:
       print_padding_statement (&s->padding_statement);
@@ -5399,6 +5433,37 @@ lang_gc_sections (void)
     bfd_gc_sections (output_bfd, &link_info);
 }
 
+/* Relax all sections until bfd_relax_section gives up.  */
+
+static void
+relax_sections (void)
+{
+  /* Keep relaxing until bfd_relax_section gives up.  */
+  bfd_boolean relax_again;
+
+  do
+    {
+      relax_again = FALSE; 
+
+      /* Note: pe-dll.c does something like this also.  If you find
+        you need to change this code, you probably need to change
+        pe-dll.c also.  DJ  */
+
+      /* Do all the assignments with our current guesses as to
+        section sizes.  */
+      lang_do_assignments ();
+
+      /* We must do this after lang_do_assignments, because it uses
+        size.  */
+      lang_reset_memory_regions ();
+
+      /* Perform another relax pass - this time we know where the
+        globals are, so can make a better guess.  */
+      lang_size_sections (&relax_again, FALSE);
+    }
+  while (relax_again);
+}
+
 void
 lang_process (void)
 {
@@ -5495,38 +5560,17 @@ lang_process (void)
   /* Now run around and relax if we can.  */
   if (command_line.relax)
     {
-      /* Keep relaxing until bfd_relax_section gives up.  */
-      bfd_boolean relax_again;
+      /* We may need more than one relaxation pass.  */
+      int i = link_info.relax_pass;
 
-      do
-       {
-         relax_again = FALSE;
-
-         /* Note: pe-dll.c does something like this also.  If you find
-            you need to change this code, you probably need to change
-            pe-dll.c also.  DJ  */
-
-         /* Do all the assignments with our current guesses as to
-            section sizes.  */
-         lang_do_assignments ();
-
-         /* We must do this after lang_do_assignments, because it uses
-            size.  */
-         lang_reset_memory_regions ();
+      /* The backend can use it to determine the current pass.  */
+      link_info.relax_pass = 0;
 
-         /* Perform another relax pass - this time we know where the
-            globals are, so can make a better guess.  */
-         lang_size_sections (&relax_again, FALSE);
-
-         /* If the normal relax is done and the relax finalize pass
-            is not performed yet, we perform another relax pass.  */
-         if (!relax_again && link_info.need_relax_finalize)
-           {
-             link_info.need_relax_finalize = FALSE;
-             relax_again = TRUE;
-           }
+      while (i--)
+       {
+         relax_sections ();
+         link_info.relax_pass++;
        }
-      while (relax_again);
 
       /* Final extra sizing to report errors.  */
       lang_do_assignments ();
index cf5b01f..8b0d492 100644 (file)
@@ -231,7 +231,6 @@ typedef struct lang_input_statement_struct
 
   bfd *the_bfd;
 
-  bfd_boolean closed;
   file_ptr passive_position;
 
   /* Symbol table of the file.  */
@@ -245,40 +244,42 @@ typedef struct lang_input_statement_struct
   /* Point to the next file, but skips archive contents.  */
   union lang_statement_union *next_real_file;
 
-  bfd_boolean is_archive;
+  const char *target;
+
+  unsigned int closed : 1;
+  unsigned int is_archive : 1;
 
   /* 1 means search a set of directories for this file.  */
-  bfd_boolean search_dirs_flag;
+  unsigned int search_dirs_flag : 1;
 
   /* 1 means this was found in a search directory marked as sysrooted,
      if search_dirs_flag is false, otherwise, that it should be
      searched in ld_sysroot before any other location, as long as it
      starts with a slash.  */
-  bfd_boolean sysrooted;
+  unsigned int sysrooted : 1;
 
   /* 1 means this is base file of incremental load.
      Do not load this file's text or data.
      Also default text_start to after this file's bss.  */
-  bfd_boolean just_syms_flag;
+  unsigned int just_syms_flag : 1;
 
   /* Whether to search for this entry as a dynamic archive.  */
-  bfd_boolean dynamic;
+  unsigned int dynamic : 1;
 
   /* Whether DT_NEEDED tags should be added for dynamic libraries in
      DT_NEEDED tags from this entry.  */
-  bfd_boolean add_needed;
+  unsigned int add_needed : 1;
 
   /* Whether this entry should cause a DT_NEEDED tag only when
      satisfying references from regular files, or always.  */
-  bfd_boolean as_needed;
+  unsigned int as_needed : 1;
 
   /* Whether to include the entire contents of an archive.  */
-  bfd_boolean whole_archive;
+  unsigned int whole_archive : 1;
 
-  bfd_boolean loaded;
+  unsigned int loaded : 1;
 
-  const char *target;
-  bfd_boolean real;
+  unsigned int real : 1;
 } lang_input_statement_type;
 
 typedef struct
index 3093bdb..db87a40 100644 (file)
@@ -313,7 +313,7 @@ main (int argc, char **argv)
   link_info.spare_dynamic_tags = 5;
   link_info.flags = 0;
   link_info.flags_1 = 0;
-  link_info.need_relax_finalize = FALSE;
+  link_info.relax_pass = 1;
   link_info.warn_shared_textrel = FALSE;
   link_info.gc_sections = FALSE;
 
index 3decff9..dcd8cba 100644 (file)
@@ -1,6 +1,6 @@
 # Makefile for program source directory in GNU NLS utilities package.
 # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
-# Copyright 2003 Free Software Foundation, Inc.
+# Copyright 2003, 2006 Free Software Foundation, Inc.
 #
 # This file may be copied and used freely without restrictions.  It can
 # be used in projects which are not available under the GNU Public License
@@ -186,7 +186,7 @@ check: all
 
 cat-id-tbl.o: ../intl/libgettext.h
 
-html dvi info tags TAGS ID:
+html dvi pdf ps info tags TAGS ID:
 
 mostlyclean:
        rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
index 55ae6ff..5bb2e11 100644 (file)
@@ -1,4 +1,5 @@
 deffile.h
+elf-hints-local.h
 emultempl/armcoff.em
 emultempl/pe.em
 ldcref.c
index 2aad547..64c51a7 100644 (file)
@@ -1,13 +1,13 @@
-# Mensajes en español para ld 2.15.96.
-# Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-# Cristian Othón Martínez Vera <cfuga@itam.mx>, 2002, 2003, 2004, 2005.
+# Mensajes en español para ld 2.16.93.
+# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# Cristian Othón Martínez Vera <cfuga@itam.mx>, 2002, 2003, 2004, 2005, 2006.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: ld 2.15.96\n"
+"Project-Id-Version: ld 2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-03 21:05+1030\n"
-"PO-Revision-Date: 2005-03-14 17:12-0600\n"
+"POT-Creation-Date: 2006-03-25 18:36+0100\n"
+"PO-Revision-Date: 2006-05-26 16:31-0500\n"
 "Last-Translator: Cristian Othón Martínez Vera <cfuga@itam.mx>\n"
 "Language-Team: Spanish <es@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -29,15 +29,15 @@ msgstr "  --thumb-entry=<sim>  Establece el punto de entrada para el s
 msgid "Errors encountered processing file %s"
 msgstr "Errores encontrados al procesar el fichero %s"
 
-#: emultempl/armcoff.em:188 emultempl/pe.em:1455
+#: emultempl/armcoff.em:190 emultempl/pe.em:1460
 msgid "%P: warning: '--thumb-entry %s' is overriding '-e %s'\n"
 msgstr "%P: aviso: '--thumb-entry %s' se impone a '-e %s'\n"
 
-#: emultempl/armcoff.em:193 emultempl/pe.em:1460
+#: emultempl/armcoff.em:195 emultempl/pe.em:1465
 msgid "%P: warning: connot find thumb start symbol %s\n"
 msgstr "%P: aviso: no se puede encontrar el símbolo de inicio thumb %s\n"
 
-#: emultempl/pe.em:301
+#: emultempl/pe.em:304
 #, c-format
 msgid "  --base_file <basefile>             Generate a base file for relocatable DLLs\n"
 msgstr "  --base_file <ficherobase>          Genera un fichero base para DLLs reubicables\n"
@@ -45,132 +45,132 @@ msgstr "  --base_file <ficherobase>          Genera un fichero base para DLLs re
 # DLL son las siglas en inglés de `Biblioteca de Enlace Dinámico'.
 # El problema es que las siglas en español (BED) no están muy extendidas.
 # Se dejó `DLL' sin traducir en todas las ocasiones. cfuga
-#: emultempl/pe.em:302
+#: emultempl/pe.em:305
 #, c-format
 msgid "  --dll                              Set image base to the default for DLLs\n"
 msgstr "  --dll                              Establece la imagen base por defecto para las DLLs\n"
 
-#: emultempl/pe.em:303
+#: emultempl/pe.em:306
 #, c-format
 msgid "  --file-alignment <size>            Set file alignment\n"
 msgstr "  --file-alignment <tamaño>          Establece el fichero de alineación\n"
 
-#: emultempl/pe.em:304
+#: emultempl/pe.em:307
 #, c-format
 msgid "  --heap <size>                      Set initial size of the heap\n"
 msgstr "  --heap <tamaño>                    Establece el tamaño inicial del montón\n"
 
-#: emultempl/pe.em:305
+#: emultempl/pe.em:308
 #, c-format
 msgid "  --image-base <address>             Set start address of the executable\n"
 msgstr "  --image-base <dirección>           Establece la dirección de inicio del ejecutable\n"
 
-#: emultempl/pe.em:306
+#: emultempl/pe.em:309
 #, c-format
 msgid "  --major-image-version <number>     Set version number of the executable\n"
 msgstr "  --major-image-version <número>     Establece el número de versión del ejecutable\n"
 
-#: emultempl/pe.em:307
+#: emultempl/pe.em:310
 #, c-format
 msgid "  --major-os-version <number>        Set minimum required OS version\n"
 msgstr "  --major-os-version <número>        Establece la versión mínima requerida del SO\n"
 
-#: emultempl/pe.em:308
+#: emultempl/pe.em:311
 #, c-format
 msgid "  --major-subsystem-version <number> Set minimum required OS subsystem version\n"
 msgstr "  --major-subsystem-version <número> Establece la versión mínima requerida del subsistema del SO\n"
 
-#: emultempl/pe.em:309
+#: emultempl/pe.em:312
 #, c-format
 msgid "  --minor-image-version <number>     Set revision number of the executable\n"
 msgstr "  --minor-image-version <número>     Establece el número de revisión del ejecutable\n"
 
-#: emultempl/pe.em:310
+#: emultempl/pe.em:313
 #, c-format
 msgid "  --minor-os-version <number>        Set minimum required OS revision\n"
 msgstr "  --minor-os-version <número>        Establece la revisión mínima requerida del SO\n"
 
-#: emultempl/pe.em:311
+#: emultempl/pe.em:314
 #, c-format
 msgid "  --minor-subsystem-version <number> Set minimum required OS subsystem revision\n"
 msgstr "  --minor-subsystem-version <número> Establece la revisión mínima requerida del subsistema del SO\n"
 
-#: emultempl/pe.em:312
+#: emultempl/pe.em:315
 #, c-format
 msgid "  --section-alignment <size>         Set section alignment\n"
 msgstr "  --section-alignment <tamaño>       Establece la alineación de la sección\n"
 
-#: emultempl/pe.em:313
+#: emultempl/pe.em:316
 #, c-format
 msgid "  --stack <size>                     Set size of the initial stack\n"
 msgstr "  --stack <size>                     Establece el tamaño de la pila inicial\n"
 
-#: emultempl/pe.em:314
+#: emultempl/pe.em:317
 #, c-format
 msgid "  --subsystem <name>[:<version>]     Set required OS subsystem [& version]\n"
 msgstr "  --subsystem <nombre>[:<versión>]   Establece el subsistema [y versión] requeridos del SO\n"
 
-#: emultempl/pe.em:315
+#: emultempl/pe.em:318
 #, c-format
 msgid "  --support-old-code                 Support interworking with old code\n"
 msgstr "  --support-old-code                 Soporte para interoperar con código antiguo\n"
 
-#: emultempl/pe.em:316
+#: emultempl/pe.em:319
 #, c-format
 msgid "  --thumb-entry=<symbol>             Set the entry point to be Thumb <symbol>\n"
 msgstr "  --thumb-entry=<símbolo>            Establece el punto de entrada para el símbolo Thumb <símbolo>\n"
 
-#: emultempl/pe.em:318
+#: emultempl/pe.em:321
 #, c-format
 msgid "  --add-stdcall-alias                Export symbols with and without @nn\n"
 msgstr "  --add-stdcall-alias                Exportar símbolos con y sin @nn\n"
 
-#: emultempl/pe.em:319
+#: emultempl/pe.em:322
 #, c-format
 msgid "  --disable-stdcall-fixup            Don't link _sym to _sym@nn\n"
 msgstr "  --disable-stdcall-fixup            No enlazar _sym con _sym@nn\n"
 
-#: emultempl/pe.em:320
+#: emultempl/pe.em:323
 #, c-format
 msgid "  --enable-stdcall-fixup             Link _sym to _sym@nn without warnings\n"
 msgstr "  --enable-stdcall-fixup             Enlazar _sym con _sym@nn sin avisos\n"
 
-#: emultempl/pe.em:321
+#: emultempl/pe.em:324
 #, c-format
 msgid "  --exclude-symbols sym,sym,...      Exclude symbols from automatic export\n"
 msgstr "  --exclude-symbols sim,sim,...      Excluye los símbolos de la exportación automática\n"
 
-#: emultempl/pe.em:322
+#: emultempl/pe.em:325
 #, c-format
 msgid "  --exclude-libs lib,lib,...         Exclude libraries from automatic export\n"
 msgstr "  --exclude-libs bib,bib,...         Excluye las bibliotecas de la exportación automática\n"
 
-#: emultempl/pe.em:323
+#: emultempl/pe.em:326
 #, c-format
 msgid "  --export-all-symbols               Automatically export all globals to DLL\n"
 msgstr "  --export-all-symbols               Exporta automáticamente todos los globales a la DLL\n"
 
-#: emultempl/pe.em:324
+#: emultempl/pe.em:327
 #, c-format
 msgid "  --kill-at                          Remove @nn from exported symbols\n"
 msgstr "  --kill-at                          Elimina @nn de los símbolos exportados\n"
 
-#: emultempl/pe.em:325
+#: emultempl/pe.em:328
 #, c-format
 msgid "  --out-implib <file>                Generate import library\n"
 msgstr "  --out-implib <fichero>             Generar una biblioteca de importación\n"
 
-#: emultempl/pe.em:326
+#: emultempl/pe.em:329
 #, c-format
 msgid "  --output-def <file>                Generate a .DEF file for the built DLL\n"
 msgstr "  --output-def <fichero>             Generar un fichero .DEF para la DLL construida\n"
 
-#: emultempl/pe.em:327
+#: emultempl/pe.em:330
 #, c-format
 msgid "  --warn-duplicate-exports           Warn about duplicate exports.\n"
 msgstr "  --warn-duplicate-exports           Avisar sobre exportaciones duplicadas.\n"
 
-#: emultempl/pe.em:328
+#: emultempl/pe.em:331
 #, c-format
 msgid ""
 "  --compat-implib                    Create backward compatible import libs;\n"
@@ -179,7 +179,7 @@ msgstr ""
 "  --compat-implib                    Crear bibliotecas de importación compatibles hacia atrás;\n"
 "                                       cerar además __imp_<SÍMBOLO>.\n"
 
-#: emultempl/pe.em:330
+#: emultempl/pe.em:333
 #, c-format
 msgid ""
 "  --enable-auto-image-base           Automatically choose image base for DLLs\n"
@@ -188,12 +188,12 @@ msgstr ""
 "  --enable-auto-image-base           Escoger automáticamente la imagen base para las DLLs\n"
 "                                       a menos que el usuario especifique una\n"
 
-#: emultempl/pe.em:332
+#: emultempl/pe.em:335
 #, c-format
 msgid "  --disable-auto-image-base          Do not auto-choose image base. (default)\n"
 msgstr "  --disable-auto-image-base          No escoger automáticamente una imagen base. (por defecto)\n"
 
-#: emultempl/pe.em:333
+#: emultempl/pe.em:336
 #, c-format
 msgid ""
 "  --dll-search-prefix=<string>       When linking dynamically to a dll without\n"
@@ -204,7 +204,7 @@ msgstr ""
 "                                       biblioteca de importación, usar <cadena><nombrebase>.dll \n"
 "                                       en lugar de lib<nombrebase>.dll \n"
 
-#: emultempl/pe.em:336
+#: emultempl/pe.em:339
 #, c-format
 msgid ""
 "  --enable-auto-import               Do sophistcated linking of _sym to\n"
@@ -213,12 +213,12 @@ msgstr ""
 "  --enable-auto-import               Hacer enlazado sofisticado de _sym a\n"
 "                                       __imp_sym para las referencias DATA\n"
 
-#: emultempl/pe.em:338
+#: emultempl/pe.em:341
 #, c-format
 msgid "  --disable-auto-import              Do not auto-import DATA items from DLLs\n"
 msgstr "  --disable-auto-import              No importar automáticamente elementos DATA de las DLLs\n"
 
-#: emultempl/pe.em:339
+#: emultempl/pe.em:342
 #, c-format
 msgid ""
 "  --enable-runtime-pseudo-reloc      Work around auto-import limitations by\n"
@@ -229,7 +229,7 @@ msgstr ""
 "                                       agregando pseudo-reubicaciones resueltas\n"
 "                                       al momento de ejecución.\n"
 
-#: emultempl/pe.em:342
+#: emultempl/pe.em:345
 #, c-format
 msgid ""
 "  --disable-runtime-pseudo-reloc     Do not add runtime pseudo-relocations for\n"
@@ -238,7 +238,7 @@ msgstr ""
 "  --disable-runtime-pseudo-reloc     No agregar pseudo-reubicaciones al momento\n"
 "                                       de ejecución para DATOS autoimportados.\n"
 
-#: emultempl/pe.em:344
+#: emultempl/pe.em:347
 #, c-format
 msgid ""
 "  --enable-extra-pe-debug            Enable verbose debug output when building\n"
@@ -247,7 +247,7 @@ msgstr ""
 "  --enable-extra-pe-debug            Activa la salida de depuración detallada al construir\n"
 "                                       o enlazar a DLLs (en part. con auto-importación)\n"
 
-#: emultempl/pe.em:347
+#: emultempl/pe.em:350
 #, c-format
 msgid ""
 "  --large-address-aware              Executable supports virtual addresses\n"
@@ -256,82 +256,82 @@ msgstr ""
 "  --large-address-aware              El ejecutable tiene soporte para direcciones\n"
 "                                       virtuales mayores a 2 gigabytes\n"
 
-#: emultempl/pe.em:414
+#: emultempl/pe.em:417
 msgid "%P: warning: bad version number in -subsystem option\n"
 msgstr "%P: aviso: número de versión erróneo en la opción -subsystem\n"
 
-#: emultempl/pe.em:445
+#: emultempl/pe.em:448
 msgid "%P%F: invalid subsystem type %s\n"
 msgstr "%P%F: tipo de subsistema %s inválido\n"
 
-#: emultempl/pe.em:484
+#: emultempl/pe.em:487
 msgid "%P%F: invalid hex number for PE parameter '%s'\n"
 msgstr "%P%F: número hexadecimal inválido para el parámetro PE '%s'\n"
 
-#: emultempl/pe.em:501
+#: emultempl/pe.em:504
 msgid "%P%F: strange hex info for PE parameter '%s'\n"
 msgstr "%P%F: información hexadecimal extraña para el parámetro PE '%s'\n"
 
-#: emultempl/pe.em:518
+#: emultempl/pe.em:521
 #, c-format
 msgid "%s: Can't open base file %s\n"
 msgstr "%s: No se puede abrir el fichero base %s\n"
 
-#: emultempl/pe.em:734
+#: emultempl/pe.em:737
 msgid "%P: warning, file alignment > section alignment.\n"
 msgstr "%P: aviso, alineación del fichero > alineación de la sección.\n"
 
-#: emultempl/pe.em:821 emultempl/pe.em:848
+#: emultempl/pe.em:824 emultempl/pe.em:851
 #, c-format
 msgid "Warning: resolving %s by linking to %s\n"
 msgstr "Aviso: resolviendo %s al enlazar con %s\n"
 
-#: emultempl/pe.em:826 emultempl/pe.em:853
+#: emultempl/pe.em:829 emultempl/pe.em:856
 msgid "Use --enable-stdcall-fixup to disable these warnings\n"
 msgstr "Use --enable-stdcall-fixup para desactivar estos avisos\n"
 
-#: emultempl/pe.em:827 emultempl/pe.em:854
+#: emultempl/pe.em:830 emultempl/pe.em:857
 msgid "Use --disable-stdcall-fixup to disable these fixups\n"
 msgstr "Use --disable-stdcall-fixup para desactivar estas composturas\n"
 
-#: emultempl/pe.em:873
+#: emultempl/pe.em:876
 #, c-format
 msgid "%C: Cannot get section contents - auto-import exception\n"
 msgstr "%C: No se puede obtener el contenido de la sección - excepción de auto-importación\n"
 
-#: emultempl/pe.em:910
+#: emultempl/pe.em:913
 #, c-format
 msgid "Info: resolving %s by linking to %s (auto-import)\n"
 msgstr "Información: resolviendo %s al enlazar con %s (auto-importación)\n"
 
-#: emultempl/pe.em:983
+#: emultempl/pe.em:986
 msgid "%F%P: PE operations on non PE file.\n"
 msgstr "%F%P: operaciones PE en un fichero que no es PE.\n"
 
-#: emultempl/pe.em:1258
+#: emultempl/pe.em:1261
 #, c-format
 msgid "Errors encountered processing file %s\n"
 msgstr "Se encontraron errores al procesar el fichero %s\n"
 
-#: emultempl/pe.em:1281
+#: emultempl/pe.em:1284
 #, c-format
 msgid "Errors encountered processing file %s for interworking"
 msgstr "Se encontraron errores el procesar el fichero %s para interoperabilidad"
 
-#: emultempl/pe.em:1340 ldexp.c:570 ldlang.c:2408 ldlang.c:5135 ldlang.c:5166
-#: ldmain.c:1161
+#: emultempl/pe.em:1345 ldexp.c:522 ldlang.c:2946 ldlang.c:5800 ldlang.c:5831
+#: ldmain.c:1167
 msgid "%P%F: bfd_link_hash_lookup failed: %E\n"
 msgstr "%P%F: falló bfd_link_hash_lookup: %E\n"
 
-#: ldcref.c:153
+#: ldcref.c:154
 msgid "%X%P: bfd_hash_table_init of cref table failed: %E\n"
 msgstr "%X%P: falló bfd_hash_table_init de la tabla cref: %E\n"
 
-#: ldcref.c:159
+#: ldcref.c:160
 msgid "%X%P: cref_hash_lookup failed: %E\n"
 msgstr "%X%P: falló cref_hash_lookup: %E\n"
 
-#: ldcref.c:225
+#: ldcref.c:226
 #, c-format
 msgid ""
 "\n"
@@ -342,33 +342,33 @@ msgstr ""
 "Tabla de Referencias Cruzadas\n"
 "\n"
 
-#: ldcref.c:226
+#: ldcref.c:227
 msgid "Symbol"
 msgstr "Símbolo"
 
-#: ldcref.c:234
+#: ldcref.c:235
 #, c-format
 msgid "File\n"
 msgstr "Fichero\n"
 
-#: ldcref.c:238
+#: ldcref.c:239
 #, c-format
 msgid "No symbols\n"
 msgstr "No hay símbolos\n"
 
-#: ldcref.c:359 ldcref.c:478
+#: ldcref.c:360 ldcref.c:482
 msgid "%B%F: could not read symbols; %E\n"
 msgstr "%B%F: no se pueden leer símbolos; %E\n"
 
-#: ldcref.c:363 ldcref.c:482 ldmain.c:1226 ldmain.c:1230
+#: ldcref.c:364 ldcref.c:486 ldmain.c:1232 ldmain.c:1236
 msgid "%B%F: could not read symbols: %E\n"
 msgstr "%B%F: no se pueden leer símbolos: %E\n"
 
-#: ldcref.c:414
+#: ldcref.c:415
 msgid "%P: symbol `%T' missing from main hash table\n"
 msgstr "%P: falta el símbolo `%T' de la tabla principal de dispersión\n"
 
-#: ldcref.c:547 ldcref.c:554 ldmain.c:1273 ldmain.c:1280
+#: ldcref.c:557 ldcref.c:564 ldmain.c:1279 ldmain.c:1286
 msgid "%B%F: could not read relocs: %E\n"
 msgstr "%B%F: no se pueden leer las reubicaciones: %E\n"
 
@@ -376,7 +376,7 @@ msgstr "%B%F: no se pueden leer las reubicaciones: %E\n"
 #. in OUTSECNAME.  This reloc is from a section which is
 #. mapped into a section from which references to OUTSECNAME
 #. are prohibited.  We must report an error.
-#: ldcref.c:573
+#: ldcref.c:591
 msgid "%X%C: prohibited cross reference from %s to `%T' in %s\n"
 msgstr "%X%C: referencia cruzada prohibida de %s a `%T' en %s\n"
 
@@ -406,83 +406,83 @@ msgstr ""
 "Conjunto            Símbolo\n"
 "\n"
 
-#: ldemul.c:227
+#: ldemul.c:236
 #, c-format
 msgid "%S SYSLIB ignored\n"
 msgstr "%S se ignora SYSLIB\n"
 
-#: ldemul.c:233
+#: ldemul.c:242
 #, c-format
 msgid "%S HLL ignored\n"
 msgstr "%S se ignora HLL\n"
 
-#: ldemul.c:253
+#: ldemul.c:262
 msgid "%P: unrecognised emulation mode: %s\n"
 msgstr "%P: no se reconoce el modo de emulación: %s\n"
 
-#: ldemul.c:254
+#: ldemul.c:263
 msgid "Supported emulations: "
 msgstr "Emulaciones con soporte: "
 
-#: ldemul.c:296
+#: ldemul.c:305
 #, c-format
 msgid "  no emulation specific options.\n"
 msgstr "  no hay opciones específicas de emulación.\n"
 
-#: ldexp.c:379
+#: ldexp.c:338
 #, c-format
 msgid "%F%S %% by zero\n"
 msgstr "%F%S %% por cero\n"
 
-#: ldexp.c:386
+#: ldexp.c:346
 #, c-format
 msgid "%F%S / by zero\n"
 msgstr "%F%S / por cero\n"
 
-#: ldexp.c:583
+#: ldexp.c:536
 #, c-format
 msgid "%X%S: unresolvable symbol `%s' referenced in expression\n"
 msgstr "%X%S: símbolo `%s' sin resolución referenciado en la expresión\n"
 
-#: ldexp.c:604
+#: ldexp.c:547
 #, c-format
 msgid "%F%S: undefined symbol `%s' referenced in expression\n"
 msgstr "%F%S: símbolo `%s' indefinido referenciado en la expresión\n"
 
-#: ldexp.c:665 ldexp.c:678
+#: ldexp.c:608 ldexp.c:621
 #, c-format
 msgid "%F%S: undefined MEMORY region `%s' referenced in expression\n"
 msgstr "%F%S: región MEMORY `%s' indefinida referenciada en la expresión\n"
 
-#: ldexp.c:757
+#: ldexp.c:683
 #, c-format
 msgid "%F%S can not PROVIDE assignment to location counter\n"
 msgstr "%F%S no puede hacer una asignación PROVIDE al contador de ubicación\n"
 
-#: ldexp.c:770
+#: ldexp.c:697
 #, c-format
 msgid "%F%S invalid assignment to location counter\n"
 msgstr "%F%S asignación inválida al contador de ubicación\n"
 
-#: ldexp.c:774
+#: ldexp.c:700
 #, c-format
 msgid "%F%S assignment to location counter invalid outside of SECTION\n"
 msgstr "%F%S asignación al contador de ubicación es inválida fuera de SECTION\n"
 
-#: ldexp.c:783
+#: ldexp.c:709
 msgid "%F%S cannot move location counter backwards (from %V to %V)\n"
 msgstr "%F%S no se puede mover el contador de ubicación hacia atrás (de %V a %V)\n"
 
-#: ldexp.c:810
+#: ldexp.c:748
 msgid "%P%F:%s: hash creation failed\n"
 msgstr "%P%F:%s: falló la creación de la dispersión\n"
 
-#: ldexp.c:1077 ldexp.c:1109
+#: ldexp.c:1000 ldexp.c:1025
 #, c-format
 msgid "%F%S nonconstant expression for %s\n"
 msgstr "%F%S expresión no constante para %s\n"
 
-#: ldexp.c:1163
+#: ldexp.c:1082
 #, c-format
 msgid "%F%S non constant expression for %s\n"
 msgstr "%F%S expresión no constante para %s\n"
@@ -543,19 +543,23 @@ msgstr "%P%F: no se puede abrir el fichero de gui
 msgid "%P%F: cannot represent machine `%s'\n"
 msgstr "%P%F: no se puede representar la máquina `%s'\n"
 
-#: ldlang.c:511
-msgid "%P%F: out of memory during initialization"
-msgstr "%P%F: memoria agotada durante la inicialización"
+#: ldlang.c:940 ldlang.c:982 ldlang.c:2695
+msgid "%P%F: can not create hash table: %E\n"
+msgstr "%P%F: no se puede crear la tabla de dispersión: %E\n"
 
-#: ldlang.c:551
+#: ldlang.c:1025
 msgid "%P:%S: warning: redeclaration of memory region '%s'\n"
 msgstr "%P:%S: aviso: redeclaración de la región de memoria '%s'\n"
 
-#: ldlang.c:557
+#: ldlang.c:1031
 msgid "%P:%S: warning: memory region %s not declared\n"
 msgstr "%P:%S: aviso: no se declaró la región %s\n"
 
-#: ldlang.c:1073
+#: ldlang.c:1108 ldlang.c:1135
+msgid "%P%F: failed creating section `%s': %E\n"
+msgstr "%P%F: falló la creación de la sección `%s': %E\n"
+
+#: ldlang.c:1601
 msgid ""
 "\n"
 "Memory Configuration\n"
@@ -565,23 +569,23 @@ msgstr ""
 "Configuración de la Memoria\n"
 "\n"
 
-#: ldlang.c:1075
+#: ldlang.c:1603
 msgid "Name"
 msgstr "Nombre"
 
-#: ldlang.c:1075
+#: ldlang.c:1603
 msgid "Origin"
 msgstr "Origen"
 
-#: ldlang.c:1075
+#: ldlang.c:1603
 msgid "Length"
 msgstr "Longitud"
 
-#: ldlang.c:1075
+#: ldlang.c:1603
 msgid "Attributes"
 msgstr "Atributos"
 
-#: ldlang.c:1115
+#: ldlang.c:1643
 #, c-format
 msgid ""
 "\n"
@@ -592,158 +596,154 @@ msgstr ""
 "Guión del enlazador y mapa de memoria\n"
 "\n"
 
-#: ldlang.c:1183
+#: ldlang.c:1709
 msgid "%P%F: Illegal use of `%s' section\n"
 msgstr "%P%F: Uso ilegal de la sección `%s'\n"
 
-#: ldlang.c:1193
+#: ldlang.c:1716
 msgid "%P%F: output format %s cannot represent section called %s\n"
 msgstr "%P%F: el formato de salida %s no puede representar la sección llamada %s\n"
 
-#: ldlang.c:1775
+#: ldlang.c:2313
 msgid "%B: file not recognized: %E\n"
 msgstr "%B: fichero no reconocido: %E\n"
 
-#: ldlang.c:1776
+#: ldlang.c:2314
 msgid "%B: matching formats:"
 msgstr "%B: formatos coincidentes:"
 
-#: ldlang.c:1783
+#: ldlang.c:2321
 msgid "%F%B: file not recognized: %E\n"
 msgstr "%F%B: fichero no reconocido: %E\n"
 
-#: ldlang.c:1847
+#: ldlang.c:2385
 msgid "%F%B: member %B in archive is not an object\n"
 msgstr "%F%B: el miembro %B en el archivo no es un objeto\n"
 
-#: ldlang.c:1858 ldlang.c:1872
+#: ldlang.c:2396 ldlang.c:2410
 msgid "%F%B: could not read symbols: %E\n"
 msgstr "%F%B: no se puede leer símbolos: %E\n"
 
-#: ldlang.c:2127
+#: ldlang.c:2665
 msgid "%P: warning: could not find any targets that match endianness requirement\n"
 msgstr "%P: aviso: no se puede encontrar ningún objetivo que coincida con los requerimientos de endianess\n"
 
-#: ldlang.c:2141
+#: ldlang.c:2679
 msgid "%P%F: target %s not found\n"
 msgstr "%P%F: no se encuentra el objetivo %s\n"
 
-#: ldlang.c:2143
+#: ldlang.c:2681
 msgid "%P%F: cannot open output file %s: %E\n"
 msgstr "%P%F: no se puede abrir el fichero de salida %s: %E\n"
 
-#: ldlang.c:2149
+#: ldlang.c:2687
 msgid "%P%F:%s: can not make object file: %E\n"
 msgstr "%P%F:%s: no se puede hacer el fichero objeto: %E\n"
 
-#: ldlang.c:2153
+#: ldlang.c:2691
 msgid "%P%F:%s: can not set architecture: %E\n"
 msgstr "%P%F:%s: no se puede establecer la arquitectura: %E\n"
 
-#: ldlang.c:2157
-msgid "%P%F: can not create link hash table: %E\n"
-msgstr "%P%F: no se puede crear la tabla de dispersión de enlace: %E\n"
-
-#: ldlang.c:2301
+#: ldlang.c:2839
 msgid "%P%F: bfd_hash_lookup failed creating symbol %s\n"
 msgstr "%P%F: falló bfd_hash_lookup al crear el símbolo %s\n"
 
-#: ldlang.c:2319
+#: ldlang.c:2857
 msgid "%P%F: bfd_hash_allocate failed creating symbol %s\n"
 msgstr "%P%F: falló bfd_hash_allocate al crear el símbolo %s\n"
 
-#: ldlang.c:2710
+#: ldlang.c:3288
 msgid " load address 0x%V"
 msgstr " cargar la dirección 0x%V"
 
-#: ldlang.c:2874
+#: ldlang.c:3528
 msgid "%W (size before relaxing)\n"
 msgstr "%W (tamaño antes de la relajación)\n"
 
-#: ldlang.c:2961
+#: ldlang.c:3615
 #, c-format
 msgid "Address of section %s set to "
 msgstr "La dirección de la sección %s se estableció a "
 
-#: ldlang.c:3114
+#: ldlang.c:3768
 #, c-format
 msgid "Fail with %d\n"
 msgstr "Falló con %d\n"
 
-#: ldlang.c:3351
+#: ldlang.c:4040
 msgid "%X%P: section %s [%V -> %V] overlaps section %s [%V -> %V]\n"
 msgstr "%X%P: la sección %s [%V -> %V] sobreescribe a la sección %s [%V -> %V]\n"
 
-#: ldlang.c:3379
+#: ldlang.c:4065
 msgid "%X%P: address 0x%v of %B section %s is not within region %s\n"
 msgstr "%X%P: la dirección 0x%v de %B sección %s no está dentro de la región %s\n"
 
-#: ldlang.c:3388
+#: ldlang.c:4074
 msgid "%X%P: region %s is full (%B section %s)\n"
 msgstr "%X%P: la región %s está llena (%B sección %s)\n"
 
-#: ldlang.c:3439
+#: ldlang.c:4114
+#, c-format
+msgid "%F%S: non constant or forward reference address expression for section %s\n"
+msgstr "%F%S: expresión de dirección de referencia hacia adelante o no constante para la sección %s\n"
+
+#: ldlang.c:4139
 msgid "%P%X: Internal error on COFF shared library section %s\n"
 msgstr "%P%X: Error interno en la sección %s de biblioteca compartida COFF\n"
 
-#: ldlang.c:3493
+#: ldlang.c:4197
 msgid "%P%F: error: no memory region specified for loadable section `%s'\n"
 msgstr "%P%F: aviso: no se especificó una región de memoria para la sección cargable `%s'\n"
 
-#: ldlang.c:3498
+#: ldlang.c:4202
 msgid "%P: warning: no memory region specified for loadable section `%s'\n"
 msgstr "%P: aviso: no se especificó una región de memoria para la sección cargable `%s'\n"
 
-#: ldlang.c:3515
-msgid "%P: warning: changing start of section %s by %u bytes\n"
-msgstr "%P: aviso: cambiando el inicio de la sección %s por %u bytes\n"
-
-#: ldlang.c:3532
-#, c-format
-msgid "%F%S: non constant or forward reference address expression for section %s\n"
-msgstr "%F%S: expresión de dirección de referencia hacia adelante o no constante para la sección %s\n"
+#: ldlang.c:4224
+msgid "%P: warning: changing start of section %s by %lu bytes\n"
+msgstr "%P: aviso: cambiando el inicio de la sección %s por %lu bytes\n"
 
-#: ldlang.c:3703
+#: ldlang.c:4388
 msgid "%P%F: can't relax section: %E\n"
 msgstr "%P%F: no se puede relajar la sección: %E\n"
 
-#: ldlang.c:3960
+#: ldlang.c:4636
 msgid "%F%P: invalid data statement\n"
 msgstr "%F%P: declaración inválida de datos\n"
 
-#: ldlang.c:3999
+#: ldlang.c:4669
 msgid "%F%P: invalid reloc statement\n"
 msgstr "%F%P: declaración inválida de reubicación\n"
 
-#: ldlang.c:4141
+#: ldlang.c:4802
 msgid "%P%F:%s: can't set start address\n"
 msgstr "%P%F:%s: no se puede establecer la dirección de inicio\n"
 
-#: ldlang.c:4154 ldlang.c:4173
+#: ldlang.c:4815 ldlang.c:4834
 msgid "%P%F: can't set start address\n"
 msgstr "%P%F: no se puede establecer la dirección de inicio\n"
 
-#: ldlang.c:4166
+#: ldlang.c:4827
 msgid "%P: warning: cannot find entry symbol %s; defaulting to %V\n"
 msgstr "%P: aviso: no se puede encontrar el símbolo de entrada %s; usando por defecto %V\n"
 
-#: ldlang.c:4178
+#: ldlang.c:4839
 msgid "%P: warning: cannot find entry symbol %s; not setting start address\n"
 msgstr "%P: aviso: no se puede encontrar el símbolo de entrada %s; no se establece la dirección de inicio\n"
 
-#: ldlang.c:4227
+#: ldlang.c:4888
 msgid "%P%F: Relocatable linking with relocations from format %s (%B) to format %s (%B) is not supported\n"
 msgstr "%P%F: No tiene soporte el enlazado reubicable con reubicaciones del formato %s (%B) al formato %s (%B)\n"
 
-#: ldlang.c:4237
+#: ldlang.c:4898
 msgid "%P: warning: %s architecture of input file `%B' is incompatible with %s output\n"
 msgstr "%P: aviso: la arquitectura %s del fichero de entrada `%B' es incompatible con la salida %s\n"
 
-#: ldlang.c:4259
+#: ldlang.c:4920
 msgid "%P%X: failed to merge target specific data of file %B\n"
 msgstr "%P%X: falló la mezcla de datos específicos de objetivo del fichero %B\n"
 
-#: ldlang.c:4343
+#: ldlang.c:5004
 msgid ""
 "\n"
 "Allocating common symbols\n"
@@ -751,7 +751,7 @@ msgstr ""
 "\n"
 "Asignando símbolos comunes\n"
 
-#: ldlang.c:4344
+#: ldlang.c:5005
 msgid ""
 "Common symbol       size              file\n"
 "\n"
@@ -759,158 +759,154 @@ msgstr ""
 "Símbolo común       tamaño            fichero\n"
 "\n"
 
-#: ldlang.c:4470
+#: ldlang.c:5131
 msgid "%P%F: invalid syntax in flags\n"
 msgstr "%P%F: sintaxis inválida en los interruptores\n"
 
-#: ldlang.c:4740
+#: ldlang.c:5406
 msgid "%P%F: Failed to create hash table\n"
 msgstr "%P%F: Falló al crear la tabla de dispersión\n"
 
-#: ldlang.c:5057
-msgid "%P%Fmultiple STARTUP files\n"
-msgstr "%P%Fficheros STARTUP múltiples\n"
+#: ldlang.c:5722
+msgid "%P%Fmultiple STARTUP files\n"
+msgstr "%P%Fficheros STARTUP múltiples\n"
 
-#: ldlang.c:5105
+#: ldlang.c:5770
 msgid "%X%P:%S: section has both a load address and a load region\n"
 msgstr "%X%P:%S: la sección tiene tanto una dirección de carga como una región de carga\n"
 
-#: ldlang.c:5345
+#: ldlang.c:6007
 msgid "%F%P: bfd_record_phdr failed: %E\n"
 msgstr "%F%P: falló bfd_record_phdr: %E\n"
 
-#: ldlang.c:5365
+#: ldlang.c:6027
 msgid "%X%P: section `%s' assigned to non-existent phdr `%s'\n"
 msgstr "%X%P: se asignó la sección `%s' al phdr no existente `%s'\n"
 
-#: ldlang.c:5751
+#: ldlang.c:6418
 msgid "%X%P: unknown language `%s' in version information\n"
 msgstr "%X%P: lenguaje `%s' desconocido en la información de la versión\n"
 
-#: ldlang.c:5893
+#: ldlang.c:6560
 msgid "%X%P: anonymous version tag cannot be combined with other version tags\n"
 msgstr "%X%P: la marca de versión anónima no se puede combinar con otras marcas de versión\n"
 
-#: ldlang.c:5902
+#: ldlang.c:6569
 msgid "%X%P: duplicate version tag `%s'\n"
 msgstr "%X%P: marca de versión `%s' duplicada\n"
 
-#: ldlang.c:5922 ldlang.c:5931 ldlang.c:5948 ldlang.c:5958
+#: ldlang.c:6589 ldlang.c:6598 ldlang.c:6615 ldlang.c:6625
 msgid "%X%P: duplicate expression `%s' in version information\n"
 msgstr "%X%P: expresión `%s' duplicada en la información de la versión\n"
 
-#: ldlang.c:5998
+#: ldlang.c:6665
 msgid "%X%P: unable to find version dependency `%s'\n"
 msgstr "%X%P: no se puede encontrar la dependencia de versión `%s'\n"
 
-#: ldlang.c:6020
+#: ldlang.c:6687
 msgid "%X%P: unable to read .exports section contents\n"
 msgstr "%X%P: no se pueden leer los contenidos de la sección .exports\n"
 
-#: ldmain.c:229
+#: ldmain.c:232
 msgid "%X%P: can't set BFD default target to `%s': %E\n"
 msgstr "%X%P: no se puede establecer el objetivo BFD por defecto a `%s': %E\n"
 
-#: ldmain.c:341
+#: ldmain.c:345
 msgid "%P%F: --relax and -r may not be used together\n"
 msgstr "%P%F: no se pueden usar juntos -relax y -r\n"
 
-#: ldmain.c:343
+#: ldmain.c:347
 msgid "%P%F: -r and -shared may not be used together\n"
 msgstr "%P%F: no se pueden usar juntos -r y -shared\n"
 
-#: ldmain.c:347
-msgid "%P%F: -static and -shared may not be used together\n"
-msgstr "%P%F: no se pueden usar juntos -static y -shared\n"
-
-#: ldmain.c:352
+#: ldmain.c:353
 msgid "%P%F: -F may not be used without -shared\n"
 msgstr "%P%F: no se puede usar -F sin -shared\n"
 
-#: ldmain.c:354
+#: ldmain.c:355
 msgid "%P%F: -f may not be used without -shared\n"
 msgstr "%P%F: no se puede usar -f sin -shared\n"
 
-#: ldmain.c:396
+#: ldmain.c:397
 msgid "using external linker script:"
 msgstr "usando el guión externo del enlazador:"
 
-#: ldmain.c:398
+#: ldmain.c:399
 msgid "using internal linker script:"
 msgstr "usando el guión interno del enlazador:"
 
-#: ldmain.c:432
+#: ldmain.c:433
 msgid "%P%F: no input files\n"
 msgstr "%P%F: no hay ficheros de entrada\n"
 
-#: ldmain.c:436
+#: ldmain.c:437
 msgid "%P: mode %s\n"
 msgstr "%P: modo %s\n"
 
-#: ldmain.c:452
+#: ldmain.c:453
 msgid "%P%F: cannot open map file %s: %E\n"
 msgstr "%P%F: no se puede encontrar el fichero de mapeo %s: %E\n"
 
-#: ldmain.c:482
+#: ldmain.c:485
 msgid "%P: link errors found, deleting executable `%s'\n"
 msgstr "%P: se encontraron errores de enlace, borrando el ejecutable `%s'\n"
 
-#: ldmain.c:491
+#: ldmain.c:494
 msgid "%F%B: final close failed: %E\n"
 msgstr "%F%B: falló el cerrado final: %E\n"
 
-#: ldmain.c:517
+#: ldmain.c:520
 msgid "%X%P: unable to open for source of copy `%s'\n"
 msgstr "%X%P: no se puede abrir para la fuente de la copia `%s'\n"
 
-#: ldmain.c:520
+#: ldmain.c:523
 msgid "%X%P: unable to open for destination of copy `%s'\n"
 msgstr "%X%P: no se puede abrir para el destino de la copia `%s'\n"
 
-#: ldmain.c:527
+#: ldmain.c:530
 msgid "%P: Error writing file `%s'\n"
 msgstr "%P: Error al escribir el fichero `%s'\n"
 
-#: ldmain.c:532 pe-dll.c:1447
+#: ldmain.c:535 pe-dll.c:1494
 #, c-format
 msgid "%P: Error closing file `%s'\n"
 msgstr "%P: Error al cerrar el fichero `%s'\n"
 
-#: ldmain.c:548
+#: ldmain.c:551
 #, c-format
 msgid "%s: total time in link: %ld.%06ld\n"
 msgstr "%s: tiempo total en el enlazado: %ld.%06ld\n"
 
-#: ldmain.c:551
+#: ldmain.c:554
 #, c-format
 msgid "%s: data size %ld\n"
 msgstr "%s: tamaño de los datos %ld\n"
 
-#: ldmain.c:634
+#: ldmain.c:637
 msgid "%P%F: missing argument to -m\n"
 msgstr "%P%F: falta el argumento para -m\n"
 
-#: ldmain.c:780 ldmain.c:798 ldmain.c:828
+#: ldmain.c:784 ldmain.c:803 ldmain.c:834
 msgid "%P%F: bfd_hash_table_init failed: %E\n"
 msgstr "%P%F: falló bfd_hash_table_init: %E\n"
 
-#: ldmain.c:784 ldmain.c:802
+#: ldmain.c:788 ldmain.c:807
 msgid "%P%F: bfd_hash_lookup failed: %E\n"
 msgstr "%P%F: falló bfd_hash_lookup: %E\n"
 
-#: ldmain.c:816
+#: ldmain.c:821
 msgid "%X%P: error: duplicate retain-symbols-file\n"
 msgstr "%X%P: error: fichero de símbolos a retener duplicado\n"
 
-#: ldmain.c:858
+#: ldmain.c:864
 msgid "%P%F: bfd_hash_lookup for insertion failed: %E\n"
 msgstr "%P%F: falló bfd_hash_lookup para la inserción: %E\n"
 
-#: ldmain.c:863
+#: ldmain.c:869
 msgid "%P: `-retain-symbols-file' overrides `-s' and `-S'\n"
 msgstr "%P `-retain-symbols-file' se impone a `-s' y `-S'\n"
 
-#: ldmain.c:938
+#: ldmain.c:944
 #, c-format
 msgid ""
 "Archive member included because of file (symbol)\n"
@@ -919,173 +915,169 @@ msgstr ""
 "Se incluyó el miembro del archivo debido al fichero (símbolo)\n"
 "\n"
 
-#: ldmain.c:1008
+#: ldmain.c:1014
 msgid "%X%C: multiple definition of `%T'\n"
 msgstr "%X%C: definiciones múltiples de `%T'\n"
 
-#: ldmain.c:1011
+#: ldmain.c:1017
 msgid "%D: first defined here\n"
 msgstr "%D: primero se definió aquí\n"
 
-#: ldmain.c:1015
+#: ldmain.c:1021
 msgid "%P: Disabling relaxation: it will not work with multiple definitions\n"
 msgstr "%P: Desactivandola la relajación: no trabajará con definiciones múltiples\n"
 
 # FIXME: Revisar en el código fuente si `common' se refiere a una orden o
 # se puede sustituir por `común'. cfuga
-#: ldmain.c:1045
+#: ldmain.c:1051
 msgid "%B: warning: definition of `%T' overriding common\n"
 msgstr "%B: aviso: la definición de `%T' se impone a common\n"
 
-#: ldmain.c:1048
+#: ldmain.c:1054
 msgid "%B: warning: common is here\n"
 msgstr "%B: aviso: common está aquí\n"
 
-#: ldmain.c:1055
+#: ldmain.c:1061
 msgid "%B: warning: common of `%T' overridden by definition\n"
 msgstr "%B: aviso: el common de `%T' es sobrepasado por definición\n"
 
-#: ldmain.c:1058
+#: ldmain.c:1064
 msgid "%B: warning: defined here\n"
 msgstr "%B: aviso: definido aquí\n"
 
-#: ldmain.c:1065
+#: ldmain.c:1071
 msgid "%B: warning: common of `%T' overridden by larger common\n"
 msgstr "%B: aviso: el common de `%T' es sobrepasado por un common más grande\n"
 
-#: ldmain.c:1068
+#: ldmain.c:1074
 msgid "%B: warning: larger common is here\n"
 msgstr "%B: aviso: el common más grande está aquí\n"
 
-#: ldmain.c:1072
+#: ldmain.c:1078
 msgid "%B: warning: common of `%T' overriding smaller common\n"
 msgstr "%B: aviso: el common de `%T' es sobrepasado por un common más pequeño\n"
 
-#: ldmain.c:1075
+#: ldmain.c:1081
 msgid "%B: warning: smaller common is here\n"
 msgstr "%B: aviso: el common más pequeño está aquí\n"
 
-#: ldmain.c:1079
+#: ldmain.c:1085
 msgid "%B: warning: multiple common of `%T'\n"
 msgstr "%B: aviso: common múltiple de `%T'\n"
 
-#: ldmain.c:1081
+#: ldmain.c:1087
 msgid "%B: warning: previous common is here\n"
 msgstr "%B: aviso: el common previo está aquí\n"
 
-#: ldmain.c:1101 ldmain.c:1139
+#: ldmain.c:1107 ldmain.c:1145
 msgid "%P: warning: global constructor %s used\n"
 msgstr "%P: aviso: se usó el constructor global %s\n"
 
-#: ldmain.c:1149
+#: ldmain.c:1155
 msgid "%P%F: BFD backend error: BFD_RELOC_CTOR unsupported\n"
 msgstr "%P%F: error del frente trasero de BFD: BFD_RELOC_CTOR sin soporte\n"
 
 #. We found a reloc for the symbol we are looking for.
-#: ldmain.c:1203 ldmain.c:1205 ldmain.c:1207 ldmain.c:1245 ldmain.c:1293
+#: ldmain.c:1209 ldmain.c:1211 ldmain.c:1213 ldmain.c:1251 ldmain.c:1299
 msgid "warning: "
 msgstr "aviso: "
 
-#: ldmain.c:1327
+#: ldmain.c:1334
 msgid "%F%P: bfd_hash_table_init failed: %E\n"
 msgstr "%F%P: falló bfd_hash_table_init: %E\n"
 
-#: ldmain.c:1334
+#: ldmain.c:1341
 msgid "%F%P: bfd_hash_lookup failed: %E\n"
 msgstr "%F%P: falló bfd_hash_lookup: %E\n"
 
-#: ldmain.c:1355
+#: ldmain.c:1362
 msgid "%X%C: undefined reference to `%T'\n"
 msgstr "%X%C: referencia a `%T' sin definir\n"
 
-#: ldmain.c:1358
+#: ldmain.c:1365
 msgid "%C: warning: undefined reference to `%T'\n"
 msgstr "%C: aviso: referencia a `%T' sin definir\n"
 
-#: ldmain.c:1364
+#: ldmain.c:1371
 msgid "%X%D: more undefined references to `%T' follow\n"
 msgstr "%X%D: más referencias a `%T' sin definir a continuación\n"
 
-#: ldmain.c:1367
+#: ldmain.c:1374
 msgid "%D: warning: more undefined references to `%T' follow\n"
 msgstr "%D: aviso: más referencias a `%T' sin definir a continuación\n"
 
-#: ldmain.c:1378
+#: ldmain.c:1385
 msgid "%X%B: undefined reference to `%T'\n"
 msgstr "%X%B: referencia a `%T' sin definir\n"
 
-#: ldmain.c:1381
+#: ldmain.c:1388
 msgid "%B: warning: undefined reference to `%T'\n"
 msgstr "%B: aviso: referencia a `%T' sin definir\n"
 
-#: ldmain.c:1387
+#: ldmain.c:1394
 msgid "%X%B: more undefined references to `%T' follow\n"
 msgstr "%X%B: más referencias a `%T' sin definir a continuación\n"
 
-#: ldmain.c:1390
+#: ldmain.c:1397
 msgid "%B: warning: more undefined references to `%T' follow\n"
 msgstr "%B: aviso: más referencias a `%T' sin definir a continuación\n"
 
-#: ldmain.c:1425 ldmain.c:1478 ldmain.c:1496
-msgid "%P%X: generated"
-msgstr "%P%X: generado"
-
-#: ldmain.c:1432
+#: ldmain.c:1436
 msgid " additional relocation overflows omitted from the output\n"
 msgstr " se omitieron desbordamientos de reubicación adicionales de la salida\n"
 
-#: ldmain.c:1445
+#: ldmain.c:1449
 msgid " relocation truncated to fit: %s against undefined symbol `%T'"
 msgstr " reubicación truncada para ajustar: %s contra el símbolo `%T' sin definir"
 
-#: ldmain.c:1450
+#: ldmain.c:1454
 msgid " relocation truncated to fit: %s against symbol `%T' defined in %A section in %B"
 msgstr " reubicación truncada para ajustar: %s contra el símbolo `%T' definido en la sección %A en %B"
 
-#: ldmain.c:1460
+#: ldmain.c:1466
 msgid " relocation truncated to fit: %s against `%T'"
 msgstr " reubicación truncada para ajustar: %s contra `%T'"
 
-#: ldmain.c:1481
+#: ldmain.c:1483
 #, c-format
-msgid "dangerous relocation: %s\n"
-msgstr "reubicación peligrosa: %s\n"
+msgid "%X%C: dangerous relocation: %s\n"
+msgstr "%X%C: reubicación peligrosa: %s\n"
 
-#: ldmain.c:1499
-msgid " reloc refers to symbol `%T' which is not being output\n"
-msgstr " la reubicación se refiere al símbolo `%T' el cual no se muestra\n"
+#: ldmain.c:1498
+msgid "%X%C: reloc refers to symbol `%T' which is not being output\n"
+msgstr "%X%C: la reubicación se refiere al símbolo `%T' el cual no se muestra\n"
 
-#: ldmisc.c:149
+#: ldmisc.c:147
 #, c-format
 msgid "no symbol"
 msgstr "no hay símbolo"
 
-#: ldmisc.c:240
+#: ldmisc.c:238
 #, c-format
 msgid "built in linker script:%u"
 msgstr "guión interno del enlazador:%u"
 
-#: ldmisc.c:289 ldmisc.c:293
+#: ldmisc.c:294 ldmisc.c:298
 msgid "%B%F: could not read symbols\n"
 msgstr "%B%F: no se pueden leer los símbolos\n"
 
-#: ldmisc.c:329
-msgid "%B: In function `%T':\n"
-msgstr "%B: En la función `%T':\n"
+#: ldmisc.c:340
+msgid "%B: In function `%T'"
+msgstr "%B: En la función `%T'"
 
-#: ldmisc.c:480
+#: ldmisc.c:510
 msgid "%F%P: internal error %s %d\n"
 msgstr "%F%P: error interno %s %d\n"
 
-#: ldmisc.c:526
+#: ldmisc.c:556
 msgid "%P: internal error: aborting at %s line %d in %s\n"
 msgstr "%P: error interno: abortando en %s línea %d en %s\n"
 
-#: ldmisc.c:529
+#: ldmisc.c:559
 msgid "%P: internal error: aborting at %s line %d\n"
 msgstr "%P: error interno: abortando en %s línea %d\n"
 
-#: ldmisc.c:531
+#: ldmisc.c:561
 msgid "%P%F: please report this bug\n"
 msgstr "%P%F: por favor reporte este bicho\n"
 
@@ -1119,278 +1111,278 @@ msgstr "  Emulaciones con soporte:\n"
 msgid "%P%F: bfd_new_link_order failed\n"
 msgstr "%P%F: falló bfd_new_link_order\n"
 
-#: ldwrite.c:341
+#: ldwrite.c:344
 msgid "%F%P: cannot create split section name for %s\n"
 msgstr "%F%P: no se puede crear la tabla de división de secciones para %s\n"
 
-#: ldwrite.c:353
+#: ldwrite.c:356
 msgid "%F%P: clone section failed: %E\n"
 msgstr "%F%P: falló la clonación de la sección: %E\n"
 
-#: ldwrite.c:391
+#: ldwrite.c:394
 #, c-format
 msgid "%8x something else\n"
 msgstr "%8x algo más\n"
 
-#: ldwrite.c:561
+#: ldwrite.c:564
 msgid "%F%P: final link failed: %E\n"
 msgstr "%F%P: falló el enlace final: %E\n"
 
-#: lexsup.c:195 lexsup.c:327
+#: lexsup.c:196 lexsup.c:328
 msgid "KEYWORD"
 msgstr "PALABRA CLAVE"
 
-#: lexsup.c:195
+#: lexsup.c:196
 msgid "Shared library control for HP/UX compatibility"
 msgstr "Control de biblioteca compartida para compatibilidad con HP/UX"
 
-#: lexsup.c:198
+#: lexsup.c:199
 msgid "ARCH"
 msgstr "ARQ"
 
-#: lexsup.c:198
+#: lexsup.c:199
 msgid "Set architecture"
 msgstr "Establecer la arquitectura"
 
-#: lexsup.c:200 lexsup.c:421
+#: lexsup.c:201 lexsup.c:422
 msgid "TARGET"
 msgstr "OBJETIVO"
 
-#: lexsup.c:200
+#: lexsup.c:201
 msgid "Specify target for following input files"
 msgstr "Especificar el objetivo para los siguientes ficheros de entrada"
 
-#: lexsup.c:203 lexsup.c:252 lexsup.c:264 lexsup.c:277 lexsup.c:380
-#: lexsup.c:433 lexsup.c:490
+#: lexsup.c:204 lexsup.c:253 lexsup.c:265 lexsup.c:278 lexsup.c:381
+#: lexsup.c:434 lexsup.c:491
 msgid "FILE"
 msgstr "FICHERO"
 
-#: lexsup.c:203
+#: lexsup.c:204
 msgid "Read MRI format linker script"
 msgstr "Leer el guión del enlazador de formato MRI"
 
-#: lexsup.c:205
+#: lexsup.c:206
 msgid "Force common symbols to be defined"
 msgstr "Forzar que los símbolos comunes sean definidos"
 
-#: lexsup.c:209 lexsup.c:475 lexsup.c:477 lexsup.c:479
+#: lexsup.c:210 lexsup.c:476 lexsup.c:478 lexsup.c:480
 msgid "ADDRESS"
 msgstr "DIRECCIÓN"
 
-#: lexsup.c:209
+#: lexsup.c:210
 msgid "Set start address"
 msgstr "Establecer la dirección de inicio"
 
-#: lexsup.c:211
+#: lexsup.c:212
 msgid "Export all dynamic symbols"
 msgstr "Exportar todos los símbolos dinámicos"
 
-#: lexsup.c:213
+#: lexsup.c:214
 msgid "Link big-endian objects"
 msgstr "Enlazar objetos big-endian"
 
-#: lexsup.c:215
+#: lexsup.c:216
 msgid "Link little-endian objects"
 msgstr "Enlazar objetos little-endian"
 
-#: lexsup.c:217 lexsup.c:220
+#: lexsup.c:218 lexsup.c:221
 msgid "SHLIB"
 msgstr "BIBCOMP"
 
-#: lexsup.c:217
+#: lexsup.c:218
 msgid "Auxiliary filter for shared object symbol table"
 msgstr "Filtro auxiliar para la tabla de símbolos de objetos compartidos"
 
-#: lexsup.c:220
+#: lexsup.c:221
 msgid "Filter for shared object symbol table"
 msgstr "Filtro para la tabla de símbolos de objetos compartidos"
 
-#: lexsup.c:223
+#: lexsup.c:224
 msgid "Ignored"
 msgstr "Ignorado"
 
-#: lexsup.c:225
+#: lexsup.c:226
 msgid "SIZE"
 msgstr "TAMAÑO"
 
-#: lexsup.c:225
+#: lexsup.c:226
 msgid "Small data size (if no size, same as --shared)"
 msgstr "Tamaño de los datos small (si no se especifica, es el mismo que --shared)"
 
-#: lexsup.c:228
+#: lexsup.c:229
 msgid "FILENAME"
 msgstr "FICHERO"
 
-#: lexsup.c:228
+#: lexsup.c:229
 msgid "Set internal name of shared library"
 msgstr "Establecer el nombre interno de la biblioteca compartida"
 
-#: lexsup.c:230
+#: lexsup.c:231
 msgid "PROGRAM"
 msgstr "PROGRAMA"
 
-#: lexsup.c:230
+#: lexsup.c:231
 msgid "Set PROGRAM as the dynamic linker to use"
 msgstr "Establece el PROGRAMA como el enlazador dinámico a utilizar"
 
-#: lexsup.c:233
+#: lexsup.c:234
 msgid "LIBNAME"
 msgstr "NOMBREBIB"
 
-#: lexsup.c:233
+#: lexsup.c:234
 msgid "Search for library LIBNAME"
 msgstr "Buscar la biblioteca NOMBREBIB"
 
-#: lexsup.c:235
+#: lexsup.c:236
 msgid "DIRECTORY"
 msgstr "DIRECTORIO"
 
-#: lexsup.c:235
+#: lexsup.c:236
 msgid "Add DIRECTORY to library search path"
 msgstr "Agregar el DIRECTORIO a la ruta de búsqueda de bibliotecas"
 
-#: lexsup.c:238
+#: lexsup.c:239
 msgid "Override the default sysroot location"
 msgstr "Sobreescribir la ubicación de sysroot por defecto"
 
-#: lexsup.c:240
+#: lexsup.c:241
 msgid "EMULATION"
 msgstr "EMULACIÓN"
 
-#: lexsup.c:240
+#: lexsup.c:241
 msgid "Set emulation"
 msgstr "Establecer la emulación"
 
-#: lexsup.c:242
+#: lexsup.c:243
 msgid "Print map file on standard output"
 msgstr "Imprimir el fichero mapa en la salida estándar"
 
-#: lexsup.c:244
+#: lexsup.c:245
 msgid "Do not page align data"
 msgstr "No paginar los datos alineados"
 
-#: lexsup.c:246
+#: lexsup.c:247
 msgid "Do not page align data, do not make text readonly"
 msgstr "No paginar los datos alineados, no hacer el texto de sólo lectura"
 
-#: lexsup.c:249
+#: lexsup.c:250
 msgid "Page align data, make text readonly"
 msgstr "Paginar los datos alineados, hacer el texto de sólo lectura"
 
-#: lexsup.c:252
+#: lexsup.c:253
 msgid "Set output file name"
 msgstr "Establecer el nombre del fichero de salida"
 
-#: lexsup.c:254
+#: lexsup.c:255
 msgid "Optimize output file"
 msgstr "Optimizar la salida del fichero"
 
-#: lexsup.c:256
+#: lexsup.c:257
 msgid "Ignored for SVR4 compatibility"
 msgstr "Ignorado por compatibilidad con SVR4"
 
-#: lexsup.c:260
+#: lexsup.c:261
 msgid "Generate relocatable output"
 msgstr "Generar salida reubicable"
 
-#: lexsup.c:264
+#: lexsup.c:265
 msgid "Just link symbols (if directory, same as --rpath)"
 msgstr "Sólo enlazar símbolos (si es un directorio, es igual que --rpath)"
 
-#: lexsup.c:267
+#: lexsup.c:268
 msgid "Strip all symbols"
 msgstr "Descartar todos los símbolos"
 
-#: lexsup.c:269
+#: lexsup.c:270
 msgid "Strip debugging symbols"
 msgstr "Descartar los símbolos de depuración"
 
-#: lexsup.c:271
+#: lexsup.c:272
 msgid "Strip symbols in discarded sections"
 msgstr "Descartar símbolos en las secciones descartadas"
 
-#: lexsup.c:273
+#: lexsup.c:274
 msgid "Do not strip symbols in discarded sections"
 msgstr "No descartar símbolos en las secciones descartadas"
 
-#: lexsup.c:275
+#: lexsup.c:276
 msgid "Trace file opens"
 msgstr "Rastrear la apertura de ficheros"
 
-#: lexsup.c:277
+#: lexsup.c:278
 msgid "Read linker script"
 msgstr "Leer el guión del enlazador"
 
-#: lexsup.c:279 lexsup.c:297 lexsup.c:363 lexsup.c:378 lexsup.c:468
-#: lexsup.c:493 lexsup.c:520
+#: lexsup.c:280 lexsup.c:298 lexsup.c:364 lexsup.c:379 lexsup.c:469
+#: lexsup.c:494 lexsup.c:521
 msgid "SYMBOL"
 msgstr "SÍMBOLO"
 
-#: lexsup.c:279
+#: lexsup.c:280
 msgid "Start with undefined reference to SYMBOL"
 msgstr "Iniciar con una referencia sin definir hacia el SÍMBOLO"
 
-#: lexsup.c:282
+#: lexsup.c:283
 msgid "[=SECTION]"
 msgstr "[=SECCIóN]"
 
-#: lexsup.c:283
+#: lexsup.c:284
 msgid "Don't merge input [SECTION | orphan] sections"
 msgstr "No mezclar secciones de entrada [SECCIÓN | huérfanas]"
 
-#: lexsup.c:285
+#: lexsup.c:286
 msgid "Build global constructor/destructor tables"
 msgstr "Construir tablas globales de constructores/destructores"
 
-#: lexsup.c:287
+#: lexsup.c:288
 msgid "Print version information"
 msgstr "Mostrar la información de la versión"
 
-#: lexsup.c:289
+#: lexsup.c:290
 msgid "Print version and emulation information"
 msgstr "Mostrar la información de la versión y la emulación"
 
-#: lexsup.c:291
+#: lexsup.c:292
 msgid "Discard all local symbols"
 msgstr "Descartar todos los símbolos locales"
 
-#: lexsup.c:293
+#: lexsup.c:294
 msgid "Discard temporary local symbols (default)"
 msgstr "Descartar los símbolos locales temporales (por defecto)"
 
-#: lexsup.c:295
+#: lexsup.c:296
 msgid "Don't discard any local symbols"
 msgstr "No descartar ningún símbolo local"
 
-#: lexsup.c:297
+#: lexsup.c:298
 msgid "Trace mentions of SYMBOL"
 msgstr "Rastrear las menciones del SÍMBOLO"
 
-#: lexsup.c:299 lexsup.c:435 lexsup.c:437
+#: lexsup.c:300 lexsup.c:436 lexsup.c:438
 msgid "PATH"
 msgstr "RUTA"
 
-#: lexsup.c:299
+#: lexsup.c:300
 msgid "Default search path for Solaris compatibility"
 msgstr "Ruta de búsqueda por defecto para compatibilidad con Solaris"
 
-#: lexsup.c:302
+#: lexsup.c:303
 msgid "Start a group"
 msgstr "Iniciar un grupo"
 
-#: lexsup.c:304
+#: lexsup.c:305
 msgid "End a group"
 msgstr "Terminar un grupo"
 
-#: lexsup.c:308
+#: lexsup.c:309
 msgid "Accept input files whose architecture cannot be determined"
 msgstr "Aceptar ficheros de entrada cuya arquitectura no se pueda determinar"
 
-#: lexsup.c:312
+#: lexsup.c:313
 msgid "Reject input files whose architecture is unknown"
 msgstr "Rechazar ficheros de entrada cuya arquitectura es desconocida"
 
-#: lexsup.c:315
+#: lexsup.c:316
 msgid ""
 "Set DT_NEEDED tags for DT_NEEDED entries in\n"
 "\t\t\t\tfollowing dynamic libs"
@@ -1398,7 +1390,7 @@ msgstr ""
 "Establece las marcas DT_NEEDED para las entradas DT_NEEDED en\n"
 "\t\t\t\tlas bibliotecas dinámicas a continuación"
 
-#: lexsup.c:318
+#: lexsup.c:319
 msgid ""
 "Do not set DT_NEEDED tags for DT_NEEDED entries\n"
 "\t\t\t\tin following dynamic libs"
@@ -1406,152 +1398,152 @@ msgstr ""
 "No establece las marcas DT_NEEDED para las entradas DT_NEEDED en\n"
 "\t\t\t\tlas bibliotecas dinámicas a continuación"
 
-#: lexsup.c:321
+#: lexsup.c:322
 msgid "Only set DT_NEEDED for following dynamic libs if used"
 msgstr "Sólo establece DT_NEEDED para las siguientes bibliotecas dinámicas si se usan"
 
-#: lexsup.c:324
+#: lexsup.c:325
 msgid "Always set DT_NEEDED for following dynamic libs"
 msgstr "Siempre establece DT_NEEDED para las siguientes bibliotecas dinámicas"
 
-#: lexsup.c:327
+#: lexsup.c:328
 msgid "Ignored for SunOS compatibility"
 msgstr "Ignorado por compatibilidad con SunOS"
 
-#: lexsup.c:329
+#: lexsup.c:330
 msgid "Link against shared libraries"
 msgstr "Enlazar contra bibliotecas compartidas"
 
-#: lexsup.c:335
+#: lexsup.c:336
 msgid "Do not link against shared libraries"
 msgstr "No enlazar contra bibliotecas compartidas"
 
-#: lexsup.c:343
+#: lexsup.c:344
 msgid "Bind global references locally"
 msgstr "Asociar localmente las referencias globlales"
 
-#: lexsup.c:345
+#: lexsup.c:346
 msgid "Check section addresses for overlaps (default)"
 msgstr "Revisar las direcciones de las secciones por traslapes (por defecto)"
 
-#: lexsup.c:348
+#: lexsup.c:349
 msgid "Do not check section addresses for overlaps"
 msgstr "No revisar las direcciones de las secciones por traslapes"
 
-#: lexsup.c:351
+#: lexsup.c:352
 msgid "Output cross reference table"
 msgstr "Mostrar la tabla de referencias cruzadas"
 
-#: lexsup.c:353
+#: lexsup.c:354
 msgid "SYMBOL=EXPRESSION"
 msgstr "SÍMBOLO=EXPRESIÓN"
 
-#: lexsup.c:353
+#: lexsup.c:354
 msgid "Define a symbol"
 msgstr "Define un símbolo"
 
-#: lexsup.c:355
+#: lexsup.c:356
 msgid "[=STYLE]"
 msgstr "[=ESTILO]"
 
-#: lexsup.c:355
+#: lexsup.c:356
 msgid "Demangle symbol names [using STYLE]"
 msgstr "Desenreda los nombres de los símbolos [utilizando el ESTILO]"
 
 # No me convence mucho la traducción de `embedded' por imbuído. cfuga
-#: lexsup.c:358
+#: lexsup.c:359
 msgid "Generate embedded relocs"
 msgstr "Genera reubicaciones imbuídas"
 
-#: lexsup.c:360
+#: lexsup.c:361
 msgid "Treat warnings as errors"
 msgstr "Tratar los avisos como errores"
 
-#: lexsup.c:363
+#: lexsup.c:364
 msgid "Call SYMBOL at unload-time"
 msgstr "Llamar al SÍMBOLO al momento de descargar"
 
-#: lexsup.c:365
+#: lexsup.c:366
 msgid "Force generation of file with .exe suffix"
 msgstr "Forzar la generación del fichero con sufijo .exe"
 
-#: lexsup.c:367
+#: lexsup.c:368
 msgid "Remove unused sections (on some targets)"
 msgstr "Eliminar las secciones sin uso (en algunos objetivos)"
 
-#: lexsup.c:370
+#: lexsup.c:371
 msgid "Don't remove unused sections (default)"
 msgstr "No eliminar las secciones sin uso (por defecto)"
 
-#: lexsup.c:373
+#: lexsup.c:374
 msgid "Set default hash table size close to <NUMBER>"
 msgstr "Establece el tamaño de de la tabla de dispersión cercano al <NÚMERO>"
 
-#: lexsup.c:376
+#: lexsup.c:377
 msgid "Print option help"
 msgstr "Muestra la ayuda de opciones"
 
-#: lexsup.c:378
+#: lexsup.c:379
 msgid "Call SYMBOL at load-time"
 msgstr "Llamar al SÍMBOLO al momento de cargar"
 
-#: lexsup.c:380
+#: lexsup.c:381
 msgid "Write a map file"
 msgstr "Escribir un fichero mapa"
 
-#: lexsup.c:382
+#: lexsup.c:383
 msgid "Do not define Common storage"
 msgstr "No definir almacenamiento Common"
 
-#: lexsup.c:384
+#: lexsup.c:385
 msgid "Do not demangle symbol names"
 msgstr "No desenredar los nombres de los símbolos"
 
-#: lexsup.c:386
+#: lexsup.c:387
 msgid "Use less memory and more disk I/O"
 msgstr "Usar menos memoria y más E/S de disco"
 
-#: lexsup.c:388
+#: lexsup.c:389
 msgid "Do not allow unresolved references in object files"
 msgstr "No permitir referencias sin resolver en ficheros objeto"
 
-#: lexsup.c:391
+#: lexsup.c:392
 msgid "Allow unresolved references in shared libaries"
 msgstr "Permitir referencias sin resolver en bibliotecas compartidas"
 
-#: lexsup.c:395
+#: lexsup.c:396
 msgid "Do not allow unresolved references in shared libs"
 msgstr "No permitir referencias sin resolver en bibliotecas compartidas"
 
-#: lexsup.c:399
+#: lexsup.c:400
 msgid "Allow multiple definitions"
 msgstr "Permitir definiciones múltiples"
 
-#: lexsup.c:401
+#: lexsup.c:402
 msgid "Disallow undefined version"
 msgstr "No permitir versiones sin definir"
 
-#: lexsup.c:403
+#: lexsup.c:404
 msgid "Create default symbol version"
 msgstr "Crear la versión de símbolo por defecto"
 
-#: lexsup.c:406
+#: lexsup.c:407
 msgid "Create default symbol version for imported symbols"
 msgstr "Crear la versión de símbolo por defecto para símbolos importados"
 
-#: lexsup.c:409
+#: lexsup.c:410
 msgid "Don't warn about mismatched input files"
 msgstr "No avisar sobre ficheros de entrada sin coincidencia"
 
-#: lexsup.c:411
+#: lexsup.c:412
 msgid "Turn off --whole-archive"
 msgstr "Apagar --whole-archive"
 
-#: lexsup.c:413
+#: lexsup.c:414
 msgid "Create an output file even if errors occur"
 msgstr "Crear un fichero de salida aún si ocurren errores"
 
-#: lexsup.c:418
+#: lexsup.c:419
 msgid ""
 "Only use library directories specified on\n"
 "\t\t\t\tthe command line"
@@ -1559,115 +1551,115 @@ msgstr ""
 "Utilizar solamente los directorios de bibliotecas\n"
 "\t\t\t\tespecificados en la línea de comandos"
 
-#: lexsup.c:421
+#: lexsup.c:422
 msgid "Specify target of output file"
 msgstr "Especificar el objetivo del fichero de salida"
 
-#: lexsup.c:424
+#: lexsup.c:425
 msgid "Ignored for Linux compatibility"
 msgstr "Ignorado por compatibilidad con Linux"
 
-#: lexsup.c:427
+#: lexsup.c:428
 msgid "Reduce memory overheads, possibly taking much longer"
 msgstr "Reducir las saturaciones de memoria, tal vez tomando más tiempo"
 
-#: lexsup.c:430
+#: lexsup.c:431
 msgid "Relax branches on certain targets"
 msgstr "Relajar ramificaciones en ciertos objetivos"
 
-#: lexsup.c:433
+#: lexsup.c:434
 msgid "Keep only symbols listed in FILE"
 msgstr "Conservar solamente los símbolos enlistados en el FICHERO"
 
-#: lexsup.c:435
+#: lexsup.c:436
 msgid "Set runtime shared library search path"
 msgstr "Establecer la rúta de búsqueda de bibliotecas compartidas en tiempo de ejecución"
 
-#: lexsup.c:437
+#: lexsup.c:438
 msgid "Set link time shared library search path"
 msgstr "Establecer la rúta de búsqueda de bibliotecas compartidas en tiempo de enlace"
 
-#: lexsup.c:440
+#: lexsup.c:441
 msgid "Create a shared library"
 msgstr "Crear una biblioteca compartida"
 
-#: lexsup.c:444
+#: lexsup.c:445
 msgid "Create a position independent executable"
 msgstr "Crear un ejecutable independiente de posición"
 
-#: lexsup.c:448
+#: lexsup.c:449
 msgid "Sort common symbols by size"
 msgstr "Ordenar los símbolos comunes por tamaño"
 
-#: lexsup.c:452
+#: lexsup.c:453
 msgid "name|alignment"
 msgstr "nombre|alineación"
 
-#: lexsup.c:453
+#: lexsup.c:454
 msgid "Sort sections by name or maximum alignment"
 msgstr "Ordenar secciones por nombre o alineación máxima"
 
-#: lexsup.c:455
+#: lexsup.c:456
 msgid "COUNT"
 msgstr "CUENTA"
 
-#: lexsup.c:455
+#: lexsup.c:456
 msgid "How many tags to reserve in .dynamic section"
 msgstr "Cúantas marcas reservar en la sección .dynamic"
 
-#: lexsup.c:458
+#: lexsup.c:459
 msgid "[=SIZE]"
 msgstr "[=TAMAÑO]"
 
-#: lexsup.c:458
+#: lexsup.c:459
 msgid "Split output sections every SIZE octets"
 msgstr "Dividir las secciones de salida cada TAMAÑO octetos"
 
-#: lexsup.c:461
+#: lexsup.c:462
 msgid "[=COUNT]"
 msgstr "[=CUENTA]"
 
-#: lexsup.c:461
+#: lexsup.c:462
 msgid "Split output sections every COUNT relocs"
 msgstr "Dividir las secciones de salida cada CUENTA reubicaciones"
 
-#: lexsup.c:464
+#: lexsup.c:465
 msgid "Print memory usage statistics"
 msgstr "Mostrar las estadísticas de uso de memoria"
 
-#: lexsup.c:466
+#: lexsup.c:467
 msgid "Display target specific options"
 msgstr "Mostrar las opciones específicas del objetivo"
 
-#: lexsup.c:468
+#: lexsup.c:469
 msgid "Do task level linking"
 msgstr "Enlazar a nivel de tarea"
 
-#: lexsup.c:470
+#: lexsup.c:471
 msgid "Use same format as native linker"
 msgstr "Usar el mismo formato que el enlazador nativo"
 
-#: lexsup.c:472
+#: lexsup.c:473
 msgid "SECTION=ADDRESS"
 msgstr "SECCIÓN=DIRECCIÓN"
 
-#: lexsup.c:472
+#: lexsup.c:473
 msgid "Set address of named section"
 msgstr "Establecer la dirección de la sección nombrada"
 
-#: lexsup.c:475
+#: lexsup.c:476
 msgid "Set address of .bss section"
 msgstr "Establecer la dirección de la sección .bss"
 
-#: lexsup.c:477
+#: lexsup.c:478
 msgid "Set address of .data section"
 msgstr "Establecer la dirección de la sección .data"
 
-#: lexsup.c:479
+#: lexsup.c:480
 msgid "Set address of .text section"
 msgstr "Establecer la dirección de la sección .text"
 
-#: lexsup.c:482
+#: lexsup.c:483
 msgid ""
 "How to handle unresolved symbols.  <method> is:\n"
 "\t\t\t\tignore-all, report-all, ignore-in-object-files,\n"
@@ -1677,15 +1669,15 @@ msgstr ""
 "\t\t\t\tignore-all, report-all, ignore-in-object-files,\n"
 "\t\t\t\tignore-in-shared-libs"
 
-#: lexsup.c:486
+#: lexsup.c:487
 msgid "Output lots of information during link"
 msgstr "Mostrar mucha información durante el enlace"
 
-#: lexsup.c:490
+#: lexsup.c:491
 msgid "Read version information script"
 msgstr "Leer la información de la versión del guión"
 
-#: lexsup.c:493
+#: lexsup.c:494
 msgid ""
 "Take export symbols list from .exports, using\n"
 "\t\t\t\tSYMBOL as the version."
@@ -1693,71 +1685,71 @@ msgstr ""
 "Tomar la lista de exportación de símbolos de .exports, usando\n"
 "\t\t\tel SÍMBOLO como la versión."
 
-#: lexsup.c:496
+#: lexsup.c:497
 msgid "Warn about duplicate common symbols"
 msgstr "Avisar sobre símbolos comunes duplicados"
 
-#: lexsup.c:498
+#: lexsup.c:499
 msgid "Warn if global constructors/destructors are seen"
 msgstr "Avisar si se ven constructores/destructores globales"
 
-#: lexsup.c:501
+#: lexsup.c:502
 msgid "Warn if the multiple GP values are used"
 msgstr "Avisar si se usan los valores múltiples GP"
 
-#: lexsup.c:503
+#: lexsup.c:504
 msgid "Warn only once per undefined symbol"
 msgstr "Avisar sólo una vez por cada símbolo sin definir"
 
-#: lexsup.c:505
+#: lexsup.c:506
 msgid "Warn if start of section changes due to alignment"
 msgstr "Avisar si el inicio de la sección cambia debido a la alineación"
 
-#: lexsup.c:508
+#: lexsup.c:509
 msgid "Warn if shared object has DT_TEXTREL"
 msgstr "Avisar si el objeto compartido tiene DT_TEXTREL"
 
-#: lexsup.c:512
+#: lexsup.c:513
 msgid "Report unresolved symbols as warnings"
 msgstr "Reportar símbolos sin resolver como avisos"
 
-#: lexsup.c:515
+#: lexsup.c:516
 msgid "Report unresolved symbols as errors"
 msgstr "Reportar símbolos sin resolver como errores"
 
-#: lexsup.c:517
+#: lexsup.c:518
 msgid "Include all objects from following archives"
 msgstr "Incluir todos los objetos de los siguientes ficheros"
 
-#: lexsup.c:520
+#: lexsup.c:521
 msgid "Use wrapper functions for SYMBOL"
 msgstr "Usar funciones de envoltura para el SÍMBOLO"
 
-#: lexsup.c:667
+#: lexsup.c:668
 msgid "%P: unrecognized option '%s'\n"
 msgstr "%P: opción `%s' no reconocida\n"
 
-#: lexsup.c:669
+#: lexsup.c:670
 msgid "%P%F: use the --help option for usage information\n"
 msgstr "%P%F: use la opción --help para información de modo de empleo\n"
 
-#: lexsup.c:687
+#: lexsup.c:688
 msgid "%P%F: unrecognized -a option `%s'\n"
 msgstr "%P%F: opción -a `%s' no reconocida\n"
 
-#: lexsup.c:700
+#: lexsup.c:701
 msgid "%P%F: unrecognized -assert option `%s'\n"
 msgstr "%P%F: opción -assert `%s' no reconocida\n"
 
-#: lexsup.c:743
+#: lexsup.c:744
 msgid "%F%P: unknown demangling style `%s'"
 msgstr "%F%P: estilo de desenredo `%s' desconocido"
 
-#: lexsup.c:805
+#: lexsup.c:806
 msgid "%P%F: invalid number `%s'\n"
 msgstr "%P%F: número `%s' inválido\n"
 
-#: lexsup.c:897
+#: lexsup.c:898
 msgid "%P%F: bad --unresolved-symbols option: %s\n"
 msgstr "%P%F: opción --unresolved-symbols no reconocida: %s\n"
 
@@ -1769,82 +1761,92 @@ msgstr "%P%F: opci
 #. an error message here.  We cannot just make this a warning,
 #. increment optind, and continue because getopt is too confused
 #. and will seg-fault the next time around.
-#: lexsup.c:968
+#: lexsup.c:969
 msgid "%P%F: bad -rpath option\n"
 msgstr "%P%F: opción -rpath errónea\n"
 
-#: lexsup.c:1080
+#: lexsup.c:1081
 msgid "%P%F: -shared not supported\n"
 msgstr "%P%F: -shared no tiene soporte\n"
 
-#: lexsup.c:1089
+#: lexsup.c:1090
 msgid "%P%F: -pie not supported\n"
 msgstr "%P%F: -pie no tiene soporte\n"
 
-#: lexsup.c:1099
+#: lexsup.c:1100
 msgid "name"
 msgstr "nombre"
 
-#: lexsup.c:1101
+#: lexsup.c:1102
 msgid "alignment"
 msgstr "alineación"
 
-#: lexsup.c:1104
+#: lexsup.c:1105
 msgid "%P%F: invalid section sorting option: %s\n"
 msgstr "%P%F: opción de ordenado de sección inválida: %s\n"
 
-#: lexsup.c:1130
+#: lexsup.c:1131
 msgid "%P%F: invalid argument to option \"--section-start\"\n"
 msgstr "%P%F: argumento inválido para la opción \"--section-start\"\n"
 
-#: lexsup.c:1137
+#: lexsup.c:1138
 msgid "%P%F: missing argument(s) to option \"--section-start\"\n"
 msgstr "%P%F: falta(n) argumento(s) para la opción \"--section-start\"\n"
 
-#: lexsup.c:1311
+#: lexsup.c:1312
 msgid "%P%F: may not nest groups (--help for usage)\n"
 msgstr "%P%F: no se pueden anidar grupos (--help para modo de empleo)\n"
 
-#: lexsup.c:1318
+#: lexsup.c:1319
 msgid "%P%F: group ended before it began (--help for usage)\n"
 msgstr "%P%F: el grupo terminó antes de empezar (--help para modo de empleo)\n"
 
-#: lexsup.c:1346
+#: lexsup.c:1347
 msgid "%P%X: --hash-size needs a numeric argument\n"
 msgstr "%P%X: --hash-size necesita un argumento numérico\n"
 
-#: lexsup.c:1397 lexsup.c:1410
+#: lexsup.c:1398 lexsup.c:1411
 msgid "%P%F: invalid hex number `%s'\n"
 msgstr "%P%F: número hexadecimal `%s' inválido\n"
 
-#: lexsup.c:1445
+#: lexsup.c:1447
 #, c-format
 msgid "Usage: %s [options] file...\n"
 msgstr "Modo de empleo: %s [opciones] fichero...\n"
 
-#: lexsup.c:1447
+#: lexsup.c:1449
 #, c-format
 msgid "Options:\n"
 msgstr "Opciones:\n"
 
+#: lexsup.c:1527
+#, c-format
+msgid "  @FILE"
+msgstr "  @FICHERO"
+
+#: lexsup.c:1530
+#, c-format
+msgid "Read options from FILE\n"
+msgstr "Lee opciones del FICHERO\n"
+
 #. Note: Various tools (such as libtool) depend upon the
 #. format of the listings below - do not change them.
-#: lexsup.c:1530
+#: lexsup.c:1535
 #, c-format
 msgid "%s: supported targets:"
 msgstr "%s: objetivos con soporte:"
 
-#: lexsup.c:1538
+#: lexsup.c:1543
 #, c-format
 msgid "%s: supported emulations: "
 msgstr "%s: emulaciones con soporte: "
 
-#: lexsup.c:1543
+#: lexsup.c:1548
 #, c-format
 msgid "%s: emulation specific options:\n"
 msgstr "%s: opciones específicas de emulación:\n"
 
-#: lexsup.c:1547
+#: lexsup.c:1552
 #, c-format
 msgid "Report bugs to %s\n"
 msgstr "Reportar bichos a %s\n"
@@ -1858,65 +1860,79 @@ msgstr "%P%F: tipo de formato %s desconocido\n"
 msgid "%XUnsupported PEI architecture: %s\n"
 msgstr "%XArquitectura PEI sin soporte: %s\n"
 
-#: pe-dll.c:652
+#: pe-dll.c:604
+#, c-format
+msgid "%XCannot export %s: invalid export name\n"
+msgstr "%XNo se puede exportar %s: nombre de exportación inválido\n"
+
+#: pe-dll.c:657
 #, c-format
 msgid "%XError, duplicate EXPORT with ordinals: %s (%d vs %d)\n"
 msgstr "%XError, EXPORT duplicado con ordinales: %s (%d vs %d)\n"
 
-#: pe-dll.c:659
+#: pe-dll.c:664
 #, c-format
 msgid "Warning, duplicate EXPORT: %s\n"
 msgstr "Aviso, EXPORT duplicado: %s\n"
 
-#: pe-dll.c:725
+#: pe-dll.c:751
 #, c-format
 msgid "%XCannot export %s: symbol not defined\n"
 msgstr "%XNo se puede exportar %s: símbolo no definido\n"
 
-#: pe-dll.c:731
+#: pe-dll.c:757
 #, c-format
 msgid "%XCannot export %s: symbol wrong type (%d vs %d)\n"
 msgstr "%XNo se puede exportar %s: tipo erróneo del símbolo (%d vs %d)\n"
 
-#: pe-dll.c:738
+#: pe-dll.c:764
 #, c-format
 msgid "%XCannot export %s: symbol not found\n"
 msgstr "%XNo se puede exportar %s: no se encuentra el símbolo\n"
 
-#: pe-dll.c:850
+#: pe-dll.c:877
 #, c-format
 msgid "%XError, ordinal used twice: %d (%s vs %s)\n"
 msgstr "%XError, ordinal utilizado dos veces: %d (%s vs %s)\n"
 
-#: pe-dll.c:1172
+#: pe-dll.c:1219
 #, c-format
 msgid "%XError: %d-bit reloc in dll\n"
 msgstr "%XError: reubicación de %d-bit en la dll\n"
 
-#: pe-dll.c:1300
+#: pe-dll.c:1347
 #, c-format
 msgid "%s: Can't open output def file %s\n"
 msgstr "%s: No se puede abrir el fichero por defecto de salida %s\n"
 
-#: pe-dll.c:1443
+#: pe-dll.c:1490
 #, c-format
 msgid "; no contents available\n"
 msgstr "; no hay contenido disponible\n"
 
-#: pe-dll.c:2205
+#: pe-dll.c:2252
 msgid "%C: variable '%T' can't be auto-imported. Please read the documentation for ld's --enable-auto-import for details.\n"
 msgstr "%C: no se puede auto-importar la variable '%T'. Por favor lea la documentación para --enable-auto-import de ld para más detalles.\n"
 
-#: pe-dll.c:2235
+#: pe-dll.c:2282
 #, c-format
 msgid "%XCan't open .lib file: %s\n"
 msgstr "%XNo se puede abrir el fichero .lib: %s\n"
 
-#: pe-dll.c:2240
+#: pe-dll.c:2287
 #, c-format
 msgid "Creating library file: %s\n"
 msgstr "Creando el fichero de biblioteca: %s\n"
 
+#~ msgid "%P%F: out of memory during initialization"
+#~ msgstr "%P%F: memoria agotada durante la inicialización"
+
+#~ msgid "%P%F: -static and -shared may not be used together\n"
+#~ msgstr "%P%F: no se pueden usar juntos -static y -shared\n"
+
+#~ msgid "%P%X: generated"
+#~ msgstr "%P%X: generado"
+
 #~ msgid "%F%P: %s uses undefined section %s\n"
 #~ msgstr "%F%P: %s usa la sección sin definir %s\n"
 
index 567d0e5..549ecf4 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-10-24 11:45+0930\n"
+"POT-Creation-Date: 2006-03-25 18:36+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -333,20 +333,20 @@ msgstr ""
 msgid "Errors encountered processing file %s for interworking"
 msgstr ""
 
-#: emultempl/pe.em:1345 ldexp.c:522 ldlang.c:2928 ldlang.c:5785 ldlang.c:5816
-#: ldmain.c:1164
+#: emultempl/pe.em:1345 ldexp.c:522 ldlang.c:2946 ldlang.c:5800 ldlang.c:5831
+#: ldmain.c:1167
 msgid "%P%F: bfd_link_hash_lookup failed: %E\n"
 msgstr ""
 
-#: ldcref.c:153
+#: ldcref.c:154
 msgid "%X%P: bfd_hash_table_init of cref table failed: %E\n"
 msgstr ""
 
-#: ldcref.c:159
+#: ldcref.c:160
 msgid "%X%P: cref_hash_lookup failed: %E\n"
 msgstr ""
 
-#: ldcref.c:225
+#: ldcref.c:226
 #, c-format
 msgid ""
 "\n"
@@ -354,33 +354,33 @@ msgid ""
 "\n"
 msgstr ""
 
-#: ldcref.c:226
+#: ldcref.c:227
 msgid "Symbol"
 msgstr ""
 
-#: ldcref.c:234
+#: ldcref.c:235
 #, c-format
 msgid "File\n"
 msgstr ""
 
-#: ldcref.c:238
+#: ldcref.c:239
 #, c-format
 msgid "No symbols\n"
 msgstr ""
 
-#: ldcref.c:359 ldcref.c:481
+#: ldcref.c:360 ldcref.c:482
 msgid "%B%F: could not read symbols; %E\n"
 msgstr ""
 
-#: ldcref.c:363 ldcref.c:485 ldmain.c:1229 ldmain.c:1233
+#: ldcref.c:364 ldcref.c:486 ldmain.c:1232 ldmain.c:1236
 msgid "%B%F: could not read symbols: %E\n"
 msgstr ""
 
-#: ldcref.c:414
+#: ldcref.c:415
 msgid "%P: symbol `%T' missing from main hash table\n"
 msgstr ""
 
-#: ldcref.c:556 ldcref.c:563 ldmain.c:1276 ldmain.c:1283
+#: ldcref.c:557 ldcref.c:564 ldmain.c:1279 ldmain.c:1286
 msgid "%B%F: could not read relocs: %E\n"
 msgstr ""
 
@@ -388,7 +388,7 @@ msgstr ""
 #. in OUTSECNAME.  This reloc is from a section which is
 #. mapped into a section from which references to OUTSECNAME
 #. are prohibited.  We must report an error.
-#: ldcref.c:590
+#: ldcref.c:591
 msgid "%X%C: prohibited cross reference from %s to `%T' in %s\n"
 msgstr ""
 
@@ -482,16 +482,16 @@ msgstr ""
 msgid "%F%S cannot move location counter backwards (from %V to %V)\n"
 msgstr ""
 
-#: ldexp.c:750
+#: ldexp.c:748
 msgid "%P%F:%s: hash creation failed\n"
 msgstr ""
 
-#: ldexp.c:1002 ldexp.c:1027
+#: ldexp.c:1000 ldexp.c:1025
 #, c-format
 msgid "%F%S nonconstant expression for %s\n"
 msgstr ""
 
-#: ldexp.c:1084
+#: ldexp.c:1082
 #, c-format
 msgid "%F%S non constant expression for %s\n"
 msgstr ""
@@ -552,50 +552,46 @@ msgstr ""
 msgid "%P%F: cannot represent machine `%s'\n"
 msgstr ""
 
-#: ldlang.c:901 ldlang.c:5388
-msgid "%P%F: Failed to create hash table\n"
-msgstr ""
-
-#: ldlang.c:941
-msgid "%P%F: out of memory during initialization"
+#: ldlang.c:940 ldlang.c:982 ldlang.c:2695
+msgid "%P%F: can not create hash table: %E\n"
 msgstr ""
 
-#: ldlang.c:984
+#: ldlang.c:1025
 msgid "%P:%S: warning: redeclaration of memory region '%s'\n"
 msgstr ""
 
-#: ldlang.c:990
+#: ldlang.c:1031
 msgid "%P:%S: warning: memory region %s not declared\n"
 msgstr ""
 
-#: ldlang.c:1107
-msgid "%P%F: bfd_hash_lookup failed creating section `%s'\n"
+#: ldlang.c:1108 ldlang.c:1135
+msgid "%P%F: failed creating section `%s': %E\n"
 msgstr ""
 
-#: ldlang.c:1575
+#: ldlang.c:1601
 msgid ""
 "\n"
 "Memory Configuration\n"
 "\n"
 msgstr ""
 
-#: ldlang.c:1577
+#: ldlang.c:1603
 msgid "Name"
 msgstr ""
 
-#: ldlang.c:1577
+#: ldlang.c:1603
 msgid "Origin"
 msgstr ""
 
-#: ldlang.c:1577
+#: ldlang.c:1603
 msgid "Length"
 msgstr ""
 
-#: ldlang.c:1577
+#: ldlang.c:1603
 msgid "Attributes"
 msgstr ""
 
-#: ldlang.c:1617
+#: ldlang.c:1643
 #, c-format
 msgid ""
 "\n"
@@ -603,217 +599,217 @@ msgid ""
 "\n"
 msgstr ""
 
-#: ldlang.c:1683
+#: ldlang.c:1709
 msgid "%P%F: Illegal use of `%s' section\n"
 msgstr ""
 
-#: ldlang.c:1690
+#: ldlang.c:1716
 msgid "%P%F: output format %s cannot represent section called %s\n"
 msgstr ""
 
-#: ldlang.c:2295
+#: ldlang.c:2313
 msgid "%B: file not recognized: %E\n"
 msgstr ""
 
-#: ldlang.c:2296
+#: ldlang.c:2314
 msgid "%B: matching formats:"
 msgstr ""
 
-#: ldlang.c:2303
+#: ldlang.c:2321
 msgid "%F%B: file not recognized: %E\n"
 msgstr ""
 
-#: ldlang.c:2367
+#: ldlang.c:2385
 msgid "%F%B: member %B in archive is not an object\n"
 msgstr ""
 
-#: ldlang.c:2378 ldlang.c:2392
+#: ldlang.c:2396 ldlang.c:2410
 msgid "%F%B: could not read symbols: %E\n"
 msgstr ""
 
-#: ldlang.c:2647
+#: ldlang.c:2665
 msgid ""
 "%P: warning: could not find any targets that match endianness requirement\n"
 msgstr ""
 
-#: ldlang.c:2661
+#: ldlang.c:2679
 msgid "%P%F: target %s not found\n"
 msgstr ""
 
-#: ldlang.c:2663
+#: ldlang.c:2681
 msgid "%P%F: cannot open output file %s: %E\n"
 msgstr ""
 
-#: ldlang.c:2669
+#: ldlang.c:2687
 msgid "%P%F:%s: can not make object file: %E\n"
 msgstr ""
 
-#: ldlang.c:2673
+#: ldlang.c:2691
 msgid "%P%F:%s: can not set architecture: %E\n"
 msgstr ""
 
-#: ldlang.c:2677
-msgid "%P%F: can not create link hash table: %E\n"
-msgstr ""
-
-#: ldlang.c:2821
+#: ldlang.c:2839
 msgid "%P%F: bfd_hash_lookup failed creating symbol %s\n"
 msgstr ""
 
-#: ldlang.c:2839
+#: ldlang.c:2857
 msgid "%P%F: bfd_hash_allocate failed creating symbol %s\n"
 msgstr ""
 
-#: ldlang.c:3270
+#: ldlang.c:3288
 msgid " load address 0x%V"
 msgstr ""
 
-#: ldlang.c:3510
+#: ldlang.c:3528
 msgid "%W (size before relaxing)\n"
 msgstr ""
 
-#: ldlang.c:3597
+#: ldlang.c:3615
 #, c-format
 msgid "Address of section %s set to "
 msgstr ""
 
-#: ldlang.c:3750
+#: ldlang.c:3768
 #, c-format
 msgid "Fail with %d\n"
 msgstr ""
 
-#: ldlang.c:4021
+#: ldlang.c:4040
 msgid "%X%P: section %s [%V -> %V] overlaps section %s [%V -> %V]\n"
 msgstr ""
 
-#: ldlang.c:4046
+#: ldlang.c:4065
 msgid "%X%P: address 0x%v of %B section %s is not within region %s\n"
 msgstr ""
 
-#: ldlang.c:4055
+#: ldlang.c:4074
 msgid "%X%P: region %s is full (%B section %s)\n"
 msgstr ""
 
-#: ldlang.c:4095
+#: ldlang.c:4114
 #, c-format
 msgid ""
 "%F%S: non constant or forward reference address expression for section %s\n"
 msgstr ""
 
-#: ldlang.c:4120
+#: ldlang.c:4139
 msgid "%P%X: Internal error on COFF shared library section %s\n"
 msgstr ""
 
-#: ldlang.c:4176
+#: ldlang.c:4197
 msgid "%P%F: error: no memory region specified for loadable section `%s'\n"
 msgstr ""
 
-#: ldlang.c:4181
+#: ldlang.c:4202
 msgid "%P: warning: no memory region specified for loadable section `%s'\n"
 msgstr ""
 
-#: ldlang.c:4198
+#: ldlang.c:4224
 msgid "%P: warning: changing start of section %s by %lu bytes\n"
 msgstr ""
 
-#: ldlang.c:4369
+#: ldlang.c:4388
 msgid "%P%F: can't relax section: %E\n"
 msgstr ""
 
-#: ldlang.c:4617
+#: ldlang.c:4636
 msgid "%F%P: invalid data statement\n"
 msgstr ""
 
-#: ldlang.c:4650
+#: ldlang.c:4669
 msgid "%F%P: invalid reloc statement\n"
 msgstr ""
 
-#: ldlang.c:4783
+#: ldlang.c:4802
 msgid "%P%F:%s: can't set start address\n"
 msgstr ""
 
-#: ldlang.c:4796 ldlang.c:4815
+#: ldlang.c:4815 ldlang.c:4834
 msgid "%P%F: can't set start address\n"
 msgstr ""
 
-#: ldlang.c:4808
+#: ldlang.c:4827
 msgid "%P: warning: cannot find entry symbol %s; defaulting to %V\n"
 msgstr ""
 
-#: ldlang.c:4820
+#: ldlang.c:4839
 msgid "%P: warning: cannot find entry symbol %s; not setting start address\n"
 msgstr ""
 
-#: ldlang.c:4869
+#: ldlang.c:4888
 msgid ""
 "%P%F: Relocatable linking with relocations from format %s (%B) to format %s "
 "(%B) is not supported\n"
 msgstr ""
 
-#: ldlang.c:4879
+#: ldlang.c:4898
 msgid ""
 "%P: warning: %s architecture of input file `%B' is incompatible with %s "
 "output\n"
 msgstr ""
 
-#: ldlang.c:4901
+#: ldlang.c:4920
 msgid "%P%X: failed to merge target specific data of file %B\n"
 msgstr ""
 
-#: ldlang.c:4985
+#: ldlang.c:5004
 msgid ""
 "\n"
 "Allocating common symbols\n"
 msgstr ""
 
-#: ldlang.c:4986
+#: ldlang.c:5005
 msgid ""
 "Common symbol       size              file\n"
 "\n"
 msgstr ""
 
-#: ldlang.c:5112
+#: ldlang.c:5131
 msgid "%P%F: invalid syntax in flags\n"
 msgstr ""
 
-#: ldlang.c:5707
+#: ldlang.c:5406
+msgid "%P%F: Failed to create hash table\n"
+msgstr ""
+
+#: ldlang.c:5722
 msgid "%P%F: multiple STARTUP files\n"
 msgstr ""
 
-#: ldlang.c:5755
+#: ldlang.c:5770
 msgid "%X%P:%S: section has both a load address and a load region\n"
 msgstr ""
 
-#: ldlang.c:5992
+#: ldlang.c:6007
 msgid "%F%P: bfd_record_phdr failed: %E\n"
 msgstr ""
 
-#: ldlang.c:6012
+#: ldlang.c:6027
 msgid "%X%P: section `%s' assigned to non-existent phdr `%s'\n"
 msgstr ""
 
-#: ldlang.c:6403
+#: ldlang.c:6418
 msgid "%X%P: unknown language `%s' in version information\n"
 msgstr ""
 
-#: ldlang.c:6545
+#: ldlang.c:6560
 msgid ""
 "%X%P: anonymous version tag cannot be combined with other version tags\n"
 msgstr ""
 
-#: ldlang.c:6554
+#: ldlang.c:6569
 msgid "%X%P: duplicate version tag `%s'\n"
 msgstr ""
 
-#: ldlang.c:6574 ldlang.c:6583 ldlang.c:6600 ldlang.c:6610
+#: ldlang.c:6589 ldlang.c:6598 ldlang.c:6615 ldlang.c:6625
 msgid "%X%P: duplicate expression `%s' in version information\n"
 msgstr ""
 
-#: ldlang.c:6650
+#: ldlang.c:6665
 msgid "%X%P: unable to find version dependency `%s'\n"
 msgstr ""
 
-#: ldlang.c:6672
+#: ldlang.c:6687
 msgid "%X%P: unable to read .exports section contents\n"
 msgstr ""
 
@@ -877,7 +873,7 @@ msgstr ""
 msgid "%P: Error writing file `%s'\n"
 msgstr ""
 
-#: ldmain.c:535 pe-dll.c:1447
+#: ldmain.c:535 pe-dll.c:1494
 #, c-format
 msgid "%P: Error closing file `%s'\n"
 msgstr ""
@@ -896,196 +892,196 @@ msgstr ""
 msgid "%P%F: missing argument to -m\n"
 msgstr ""
 
-#: ldmain.c:783 ldmain.c:801 ldmain.c:831
+#: ldmain.c:784 ldmain.c:803 ldmain.c:834
 msgid "%P%F: bfd_hash_table_init failed: %E\n"
 msgstr ""
 
-#: ldmain.c:787 ldmain.c:805
+#: ldmain.c:788 ldmain.c:807
 msgid "%P%F: bfd_hash_lookup failed: %E\n"
 msgstr ""
 
-#: ldmain.c:819
+#: ldmain.c:821
 msgid "%X%P: error: duplicate retain-symbols-file\n"
 msgstr ""
 
-#: ldmain.c:861
+#: ldmain.c:864
 msgid "%P%F: bfd_hash_lookup for insertion failed: %E\n"
 msgstr ""
 
-#: ldmain.c:866
+#: ldmain.c:869
 msgid "%P: `-retain-symbols-file' overrides `-s' and `-S'\n"
 msgstr ""
 
-#: ldmain.c:941
+#: ldmain.c:944
 #, c-format
 msgid ""
 "Archive member included because of file (symbol)\n"
 "\n"
 msgstr ""
 
-#: ldmain.c:1011
+#: ldmain.c:1014
 msgid "%X%C: multiple definition of `%T'\n"
 msgstr ""
 
-#: ldmain.c:1014
+#: ldmain.c:1017
 msgid "%D: first defined here\n"
 msgstr ""
 
-#: ldmain.c:1018
+#: ldmain.c:1021
 msgid "%P: Disabling relaxation: it will not work with multiple definitions\n"
 msgstr ""
 
-#: ldmain.c:1048
+#: ldmain.c:1051
 msgid "%B: warning: definition of `%T' overriding common\n"
 msgstr ""
 
-#: ldmain.c:1051
+#: ldmain.c:1054
 msgid "%B: warning: common is here\n"
 msgstr ""
 
-#: ldmain.c:1058
+#: ldmain.c:1061
 msgid "%B: warning: common of `%T' overridden by definition\n"
 msgstr ""
 
-#: ldmain.c:1061
+#: ldmain.c:1064
 msgid "%B: warning: defined here\n"
 msgstr ""
 
-#: ldmain.c:1068
+#: ldmain.c:1071
 msgid "%B: warning: common of `%T' overridden by larger common\n"
 msgstr ""
 
-#: ldmain.c:1071
+#: ldmain.c:1074
 msgid "%B: warning: larger common is here\n"
 msgstr ""
 
-#: ldmain.c:1075
+#: ldmain.c:1078
 msgid "%B: warning: common of `%T' overriding smaller common\n"
 msgstr ""
 
-#: ldmain.c:1078
+#: ldmain.c:1081
 msgid "%B: warning: smaller common is here\n"
 msgstr ""
 
-#: ldmain.c:1082
+#: ldmain.c:1085
 msgid "%B: warning: multiple common of `%T'\n"
 msgstr ""
 
-#: ldmain.c:1084
+#: ldmain.c:1087
 msgid "%B: warning: previous common is here\n"
 msgstr ""
 
-#: ldmain.c:1104 ldmain.c:1142
+#: ldmain.c:1107 ldmain.c:1145
 msgid "%P: warning: global constructor %s used\n"
 msgstr ""
 
-#: ldmain.c:1152
+#: ldmain.c:1155
 msgid "%P%F: BFD backend error: BFD_RELOC_CTOR unsupported\n"
 msgstr ""
 
 #. We found a reloc for the symbol we are looking for.
-#: ldmain.c:1206 ldmain.c:1208 ldmain.c:1210 ldmain.c:1248 ldmain.c:1296
+#: ldmain.c:1209 ldmain.c:1211 ldmain.c:1213 ldmain.c:1251 ldmain.c:1299
 msgid "warning: "
 msgstr ""
 
-#: ldmain.c:1330
+#: ldmain.c:1334
 msgid "%F%P: bfd_hash_table_init failed: %E\n"
 msgstr ""
 
-#: ldmain.c:1337
+#: ldmain.c:1341
 msgid "%F%P: bfd_hash_lookup failed: %E\n"
 msgstr ""
 
-#: ldmain.c:1358
+#: ldmain.c:1362
 msgid "%X%C: undefined reference to `%T'\n"
 msgstr ""
 
-#: ldmain.c:1361
+#: ldmain.c:1365
 msgid "%C: warning: undefined reference to `%T'\n"
 msgstr ""
 
-#: ldmain.c:1367
+#: ldmain.c:1371
 msgid "%X%D: more undefined references to `%T' follow\n"
 msgstr ""
 
-#: ldmain.c:1370
+#: ldmain.c:1374
 msgid "%D: warning: more undefined references to `%T' follow\n"
 msgstr ""
 
-#: ldmain.c:1381
+#: ldmain.c:1385
 msgid "%X%B: undefined reference to `%T'\n"
 msgstr ""
 
-#: ldmain.c:1384
+#: ldmain.c:1388
 msgid "%B: warning: undefined reference to `%T'\n"
 msgstr ""
 
-#: ldmain.c:1390
+#: ldmain.c:1394
 msgid "%X%B: more undefined references to `%T' follow\n"
 msgstr ""
 
-#: ldmain.c:1393
+#: ldmain.c:1397
 msgid "%B: warning: more undefined references to `%T' follow\n"
 msgstr ""
 
-#: ldmain.c:1432
+#: ldmain.c:1436
 msgid " additional relocation overflows omitted from the output\n"
 msgstr ""
 
-#: ldmain.c:1445
+#: ldmain.c:1449
 msgid " relocation truncated to fit: %s against undefined symbol `%T'"
 msgstr ""
 
-#: ldmain.c:1450
+#: ldmain.c:1454
 msgid ""
 " relocation truncated to fit: %s against symbol `%T' defined in %A section "
 "in %B"
 msgstr ""
 
-#: ldmain.c:1462
+#: ldmain.c:1466
 msgid " relocation truncated to fit: %s against `%T'"
 msgstr ""
 
-#: ldmain.c:1479
+#: ldmain.c:1483
 #, c-format
 msgid "%X%C: dangerous relocation: %s\n"
 msgstr ""
 
-#: ldmain.c:1494
+#: ldmain.c:1498
 msgid "%X%C: reloc refers to symbol `%T' which is not being output\n"
 msgstr ""
 
-#: ldmisc.c:149
+#: ldmisc.c:147
 #, c-format
 msgid "no symbol"
 msgstr ""
 
-#: ldmisc.c:240
+#: ldmisc.c:238
 #, c-format
 msgid "built in linker script:%u"
 msgstr ""
 
-#: ldmisc.c:296 ldmisc.c:300
+#: ldmisc.c:294 ldmisc.c:298
 msgid "%B%F: could not read symbols\n"
 msgstr ""
 
-#: ldmisc.c:342
+#: ldmisc.c:340
 msgid "%B: In function `%T'"
 msgstr ""
 
-#: ldmisc.c:493
+#: ldmisc.c:510
 msgid "%F%P: internal error %s %d\n"
 msgstr ""
 
-#: ldmisc.c:539
+#: ldmisc.c:556
 msgid "%P: internal error: aborting at %s line %d in %s\n"
 msgstr ""
 
-#: ldmisc.c:542
+#: ldmisc.c:559
 msgid "%P: internal error: aborting at %s line %d\n"
 msgstr ""
 
-#: ldmisc.c:544
+#: ldmisc.c:561
 msgid "%P%F: please report this bug\n"
 msgstr ""
 
@@ -1116,20 +1112,20 @@ msgstr ""
 msgid "%P%F: bfd_new_link_order failed\n"
 msgstr ""
 
-#: ldwrite.c:341
+#: ldwrite.c:344
 msgid "%F%P: cannot create split section name for %s\n"
 msgstr ""
 
-#: ldwrite.c:353
+#: ldwrite.c:356
 msgid "%F%P: clone section failed: %E\n"
 msgstr ""
 
-#: ldwrite.c:391
+#: ldwrite.c:394
 #, c-format
 msgid "%8x something else\n"
 msgstr ""
 
-#: ldwrite.c:561
+#: ldwrite.c:564
 msgid "%F%P: final link failed: %E\n"
 msgstr ""
 
@@ -1802,34 +1798,44 @@ msgstr ""
 msgid "%P%F: invalid hex number `%s'\n"
 msgstr ""
 
-#: lexsup.c:1446
+#: lexsup.c:1447
 #, c-format
 msgid "Usage: %s [options] file...\n"
 msgstr ""
 
-#: lexsup.c:1448
+#: lexsup.c:1449
 #, c-format
 msgid "Options:\n"
 msgstr ""
 
+#: lexsup.c:1527
+#, c-format
+msgid "  @FILE"
+msgstr ""
+
+#: lexsup.c:1530
+#, c-format
+msgid "Read options from FILE\n"
+msgstr ""
+
 #. Note: Various tools (such as libtool) depend upon the
 #. format of the listings below - do not change them.
-#: lexsup.c:1531
+#: lexsup.c:1535
 #, c-format
 msgid "%s: supported targets:"
 msgstr ""
 
-#: lexsup.c:1539
+#: lexsup.c:1543
 #, c-format
 msgid "%s: supported emulations: "
 msgstr ""
 
-#: lexsup.c:1544
+#: lexsup.c:1548
 #, c-format
 msgid "%s: emulation specific options:\n"
 msgstr ""
 
-#: lexsup.c:1548
+#: lexsup.c:1552
 #, c-format
 msgid "Report bugs to %s\n"
 msgstr ""
@@ -1843,63 +1849,68 @@ msgstr ""
 msgid "%XUnsupported PEI architecture: %s\n"
 msgstr ""
 
-#: pe-dll.c:652
+#: pe-dll.c:604
+#, c-format
+msgid "%XCannot export %s: invalid export name\n"
+msgstr ""
+
+#: pe-dll.c:657
 #, c-format
 msgid "%XError, duplicate EXPORT with ordinals: %s (%d vs %d)\n"
 msgstr ""
 
-#: pe-dll.c:659
+#: pe-dll.c:664
 #, c-format
 msgid "Warning, duplicate EXPORT: %s\n"
 msgstr ""
 
-#: pe-dll.c:725
+#: pe-dll.c:751
 #, c-format
 msgid "%XCannot export %s: symbol not defined\n"
 msgstr ""
 
-#: pe-dll.c:731
+#: pe-dll.c:757
 #, c-format
 msgid "%XCannot export %s: symbol wrong type (%d vs %d)\n"
 msgstr ""
 
-#: pe-dll.c:738
+#: pe-dll.c:764
 #, c-format
 msgid "%XCannot export %s: symbol not found\n"
 msgstr ""
 
-#: pe-dll.c:850
+#: pe-dll.c:877
 #, c-format
 msgid "%XError, ordinal used twice: %d (%s vs %s)\n"
 msgstr ""
 
-#: pe-dll.c:1172
+#: pe-dll.c:1219
 #, c-format
 msgid "%XError: %d-bit reloc in dll\n"
 msgstr ""
 
-#: pe-dll.c:1300
+#: pe-dll.c:1347
 #, c-format
 msgid "%s: Can't open output def file %s\n"
 msgstr ""
 
-#: pe-dll.c:1443
+#: pe-dll.c:1490
 #, c-format
 msgid "; no contents available\n"
 msgstr ""
 
-#: pe-dll.c:2205
+#: pe-dll.c:2252
 msgid ""
 "%C: variable '%T' can't be auto-imported. Please read the documentation for "
 "ld's --enable-auto-import for details.\n"
 msgstr ""
 
-#: pe-dll.c:2235
+#: pe-dll.c:2282
 #, c-format
 msgid "%XCan't open .lib file: %s\n"
 msgstr ""
 
-#: pe-dll.c:2240
+#: pe-dll.c:2287
 #, c-format
 msgid "Creating library file: %s\n"
 msgstr ""
index 54a5e26..08d08b8 100644 (file)
@@ -1,20 +1,20 @@
 # Vietnamese translation for LD.
-# Copyright © 2005 Free Software Foundation, Inc.
-# Clytie Siddall <clytie@riverland.net.au>, 2005.
+# Copyright © 2006 Free Software Foundation, Inc.
+# Clytie Siddall <clytie@riverland.net.au>, 2005-2006.
 # 
 msgid ""
 msgstr ""
-"Project-Id-Version: ld-2.15.96\n"
+"Project-Id-Version: ld-2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-03 21:05+1030\n"
-"PO-Revision-Date: 2005-12-24 14:47+1030\n"
+"POT-Creation-Date: 2006-03-25 18:36+0100\n"
+"PO-Revision-Date: 2006-05-23 21:31+0930\n"
 "Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
 "Language-Team: Vietnamese <gnomevi-list@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0\n"
-"X-Generator: LocFactoryEditor 1.5.1b\n"
+"X-Generator: LocFactoryEditor 1.6b34\n"
 
 #: emultempl/armcoff.em:72
 #, c-format
@@ -31,163 +31,163 @@ msgstr "  --thumb-entry=<ký_hiệu>  Lập điểm _vào_ là ký hiệu _Hình
 msgid "Errors encountered processing file %s"
 msgstr "Gặp lỗi khi xử lý tập tin %s"
 
-#: emultempl/armcoff.em:188 emultempl/pe.em:1455
+#: emultempl/armcoff.em:190 emultempl/pe.em:1460
 msgid "%P: warning: '--thumb-entry %s' is overriding '-e %s'\n"
 msgstr "%P: cảnh báo: « --thumb-entry %s » đang lấy quyền cao hơn « -e %s »\n"
 
-#: emultempl/armcoff.em:193 emultempl/pe.em:1460
+#: emultempl/armcoff.em:195 emultempl/pe.em:1465
 msgid "%P: warning: connot find thumb start symbol %s\n"
-msgstr "%P: warning: connot find thumb start symbol %s\n"
+msgstr "%P: cảnh báo : không tìm thấy ký hiệu bắt đầu thumb %s\n"
 
-#: emultempl/pe.em:301
+#: emultempl/pe.em:304
 #, c-format
 msgid "  --base_file <basefile>             Generate a base file for relocatable DLLs\n"
 msgstr ""
-"  --base_file <tập_tinbasefile>     Tạo ra một _tập tin cơ bản_ choocác ata\n"
-"\t\t\t\t\t\t\tcó thể định vị lạile DLLs\n"
+"  --base_file <tập_tinbasefile>\n"
+"\tTạo ra một _tập tin cơ bản_ cho các DLL có khả năng định vị lại\n"
 
-#: emultempl/pe.em:302
+#: emultempl/pe.em:305
 #, c-format
 msgid "  --dll                              Set image base to the default for DLLs\n"
 msgstr "  --dll                              Lập cơ bản ảnh là mặc định cho các DLL\n"
 
-#: emultempl/pe.em:303
+#: emultempl/pe.em:306
 #, c-format
 msgid "  --file-alignment <size>            Set file alignment\n"
 msgstr "  --file-alignment <kích_cỡ>            Lập cách _canh lề tập tin_\n"
 
-#: emultempl/pe.em:304
+#: emultempl/pe.em:307
 #, c-format
 msgid "  --heap <size>                      Set initial size of the heap\n"
 msgstr "  --heap <kích_cỡ>                      Lập kích cỡ _miền nhớ_ ban đầu\n"
 
-#: emultempl/pe.em:305
+#: emultempl/pe.em:308
 #, c-format
 msgid "  --image-base <address>             Set start address of the executable\n"
 msgstr ""
 "  --image-base <địa_chỉ>            Lập địa chỉ bắt đầu của ứng dụng chạy được\n"
 "\t\t\t\t\t\t\t\t (_cơ bản ảnh_)\n"
 
-#: emultempl/pe.em:306
+#: emultempl/pe.em:309
 #, c-format
 msgid "  --major-image-version <number>     Set version number of the executable\n"
 msgstr ""
 "  --major-image-version <số>     \tLập số thứ tự _phiên bản_\n"
 "\t\t\t\t\tcủa ứng dụng chạy được (_ảnh lớn_)\n"
 
-#: emultempl/pe.em:307
+#: emultempl/pe.em:310
 #, c-format
 msgid "  --major-os-version <number>        Set minimum required OS version\n"
 msgstr ""
 "  --major-os-version <số>        \t\tLập số thứ tự _phiên bản\n"
 "\t\t\t\thệ điều hành_ tối thiểu cần thiết (_lớn_)\n"
 
-#: emultempl/pe.em:308
+#: emultempl/pe.em:311
 #, c-format
 msgid "  --major-subsystem-version <number> Set minimum required OS subsystem version\n"
 msgstr ""
 "  --major-subsystem-version <số> \t   Lập số thứ tự _phiên bản\n"
 "\t\t\t\thệ điều hành con_ tối thiểu cần thiết (_lớn_)\n"
 
-#: emultempl/pe.em:309
+#: emultempl/pe.em:312
 #, c-format
 msgid "  --minor-image-version <number>     Set revision number of the executable\n"
 msgstr ""
 "  --minor-image-version <số>     \tLập số thứ tự bản sửa đổi\n"
 "\tcủa ứng dụng chạy được (_phiên bản ảnh nhỏ_)\n"
 
-#: emultempl/pe.em:310
+#: emultempl/pe.em:313
 #, c-format
 msgid "  --minor-os-version <number>        Set minimum required OS revision\n"
 msgstr ""
 "  --minor-os-version <số>        \t\tLập số thứ tự bản sửa đổi\n"
 "\t\tcủa hệ điều hành cần thiết (_phiên bản hệ điều hành nhỏ_)\n"
 
-#: emultempl/pe.em:311
+#: emultempl/pe.em:314
 #, c-format
 msgid "  --minor-subsystem-version <number> Set minimum required OS subsystem revision\n"
 msgstr ""
 "  --minor-subsystem-version <số> \t   Lập số thứ tự bản sửa đổi\n"
 "\t\tcủa hệ điều hành con cần thiết (_phiên bản hệ điều hành con nhỏ_)\n"
 
-#: emultempl/pe.em:312
+#: emultempl/pe.em:315
 #, c-format
 msgid "  --section-alignment <size>         Set section alignment\n"
 msgstr "  --section-alignment <kích_cỡ>         Lập cách _canh lề phần_\n"
 
-#: emultempl/pe.em:313
+#: emultempl/pe.em:316
 #, c-format
 msgid "  --stack <size>                     Set size of the initial stack\n"
 msgstr "  --stack <kích_cỡ>                    Lập kích cỡ của _đống_ ban đầu\n"
 
-#: emultempl/pe.em:314
+#: emultempl/pe.em:317
 #, c-format
 msgid "  --subsystem <name>[:<version>]     Set required OS subsystem [& version]\n"
 msgstr "  --subsystem <tên>[:<phiên_bản>]     Lập _hệ điều hành con_ [và phiên bản] cần thiết\n"
 
-#: emultempl/pe.em:315
+#: emultempl/pe.em:318
 #, c-format
 msgid "  --support-old-code                 Support interworking with old code\n"
 msgstr "  --support-old-code                 _Hỗ trợ_ dệt vào với _mã cũ_\n"
 
-#: emultempl/pe.em:316
+#: emultempl/pe.em:319
 #, c-format
 msgid "  --thumb-entry=<symbol>             Set the entry point to be Thumb <symbol>\n"
-msgstr "  --thumb-entry=<ký_hiệu>  Lập điểm _vào_ là ký hiệu _Hình Nhỏ_ này\n"
+msgstr "  --thumb-entry=<ký_hiệu>  Lập điểm _vào_ là ký hiệu _Thumb_ này\n"
 
-#: emultempl/pe.em:318
+#: emultempl/pe.em:321
 #, c-format
 msgid "  --add-stdcall-alias                Export symbols with and without @nn\n"
 msgstr "  --add-stdcall-alias           Xuất ký hiệu với và không với « @nn » (_thêm bí danh gọi chuẩn_)\n"
 
-#: emultempl/pe.em:319
+#: emultempl/pe.em:322
 #, c-format
 msgid "  --disable-stdcall-fixup            Don't link _sym to _sym@nn\n"
 msgstr "  --disable-stdcall-fixup            Đừng liên kết « _sym » đến « _sym@nn » (_tắt sửa gọi chuẩn_)\n"
 
-#: emultempl/pe.em:320
+#: emultempl/pe.em:323
 #, c-format
 msgid "  --enable-stdcall-fixup             Link _sym to _sym@nn without warnings\n"
 msgstr ""
 "  --enable-stdcall-fixup             Liên kết « _sym » đến « _sym@nn », không có cảnh báo\n"
 " \t\t\t\t\t\t\t(_bật sửa gọi chuẩn_)\n"
 
-#: emultempl/pe.em:321
+#: emultempl/pe.em:324
 #, c-format
 msgid "  --exclude-symbols sym,sym,...      Exclude symbols from automatic export\n"
 msgstr "  --exclude-symbols ký_hiệu,ký_hiệu,...      _Loại trừ những ký hiệu_ này ra việc xuất tự động\n"
 
-#: emultempl/pe.em:322
+#: emultempl/pe.em:325
 #, c-format
 msgid "  --exclude-libs lib,lib,...         Exclude libraries from automatic export\n"
 msgstr "  --exclude-libs thư_viên,thư_viên,...         _Loại trừ những thư viên_ này ra việc xuất tự động\n"
 
-#: emultempl/pe.em:323
+#: emultempl/pe.em:326
 #, c-format
 msgid "  --export-all-symbols               Automatically export all globals to DLL\n"
 msgstr "  --export-all-symbols               Tự động _xuất mọi_ điều toàn cục vào DLL (_ký hiệu_)\n"
 
-#: emultempl/pe.em:324
+#: emultempl/pe.em:327
 #, c-format
 msgid "  --kill-at                          Remove @nn from exported symbols\n"
 msgstr "  --kill-at                          Gỡ bỏ « @nn » ra những ký hiệu đã xuất (_buộc kết thức tại_)\n"
 
-#: emultempl/pe.em:325
+#: emultempl/pe.em:328
 #, c-format
 msgid "  --out-implib <file>                Generate import library\n"
 msgstr "  --out-implib <tập_tin>                Tạo _ra thư viên nhập_\n"
 
-#: emultempl/pe.em:326
+#: emultempl/pe.em:329
 #, c-format
 msgid "  --output-def <file>                Generate a .DEF file for the built DLL\n"
 msgstr "  --output-def <tập_tin>                Tạo _ra_ một tập tin .DEF cho DLL đã xây dụng\n"
 
-#: emultempl/pe.em:327
+#: emultempl/pe.em:330
 #, c-format
 msgid "  --warn-duplicate-exports           Warn about duplicate exports.\n"
 msgstr "  --warn-duplicate-exports           _Cảnh báo_ về _việc xuất trùng_ nào.\n"
 
-#: emultempl/pe.em:328
+#: emultempl/pe.em:331
 #, c-format
 msgid ""
 "  --compat-implib                    Create backward compatible import libs;\n"
@@ -196,7 +196,7 @@ msgstr ""
 "  --compat-implib                    Tạo các _thư viên nhập tương thích_ ngược;\n"
 "\t\t\t\t\tcũng tạo « __imp_<KÝ_HIỆU> ».\n"
 
-#: emultempl/pe.em:330
+#: emultempl/pe.em:333
 #, c-format
 msgid ""
 "  --enable-auto-image-base           Automatically choose image base for DLLs\n"
@@ -205,12 +205,12 @@ msgstr ""
 "  --enable-auto-image-base           Tự động chọn cơ bản ảnh cho mọi DLL\n"
 "\t\t\t\t\t\t\ttrừ khi người dùng gõ nó\n"
 
-#: emultempl/pe.em:332
+#: emultempl/pe.em:335
 #, c-format
 msgid "  --disable-auto-image-base          Do not auto-choose image base. (default)\n"
 msgstr "  --disable-auto-image-base          Đừng _tự động_ chọn _cơ bản ảnh_ (mặc định) (_tắt_)\n"
 
-#: emultempl/pe.em:333
+#: emultempl/pe.em:336
 #, c-format
 msgid ""
 "  --dll-search-prefix=<string>       When linking dynamically to a dll without\n"
@@ -221,7 +221,7 @@ msgstr ""
 "\thãy dùng « <chuỗi><tên_cơ_bản>.dll » hơn « <tên_cơ_bản>.dll »\n"
 "\t(_tiền_tố_tìm_kiếm_)\n"
 
-#: emultempl/pe.em:336
+#: emultempl/pe.em:339
 #, c-format
 msgid ""
 "  --enable-auto-import               Do sophistcated linking of _sym to\n"
@@ -231,12 +231,12 @@ msgstr ""
 "\t« _sym » đến « __imp_sym » cho các tham chiếu DATA (dữ liệu)\n"
 "\t(_bật nhập tự động)\n"
 
-#: emultempl/pe.em:338
+#: emultempl/pe.em:341
 #, c-format
 msgid "  --disable-auto-import              Do not auto-import DATA items from DLLs\n"
 msgstr "  --disable-auto-import       Đừng _tự động nhập_ mục DATA từ DLL (_tắt_)\n"
 
-#: emultempl/pe.em:339
+#: emultempl/pe.em:342
 #, c-format
 msgid ""
 "  --enable-runtime-pseudo-reloc      Work around auto-import limitations by\n"
@@ -246,7 +246,7 @@ msgstr ""
 "  --enable-runtime-pseudo-reloc      Chỉnh sửa các hạn chế nhập tự động,\n"
 "\tbằng cách thêm các việc _định vị lại giả_ được tháo gỡ vào _lúc chạy_. (_bật_)\n"
 
-#: emultempl/pe.em:342
+#: emultempl/pe.em:345
 #, c-format
 msgid ""
 "  --disable-runtime-pseudo-reloc     Do not add runtime pseudo-relocations for\n"
@@ -255,7 +255,7 @@ msgstr ""
 "  --disable-runtime-pseudo-reloc        Đừng thêm việc _định vị lại giả_\n"
 "\tvào _lúc chạy_ cho DATA (dữ liệu) được nhập tự động. (_tắt_)\n"
 
-#: emultempl/pe.em:344
+#: emultempl/pe.em:347
 #, c-format
 msgid ""
 "  --enable-extra-pe-debug            Enable verbose debug output when building\n"
@@ -264,7 +264,7 @@ msgstr ""
 "  --enable-extra-pe-debug            _Bật_ xuất dữ liệu _gỡ lỗi_ chi tiết\n"
 "\ttrong khi xây dụng hay liên kết đến DLL nào (nhất là việc tự động nhập) (_thêm_)\n"
 
-#: emultempl/pe.em:347
+#: emultempl/pe.em:350
 #, c-format
 msgid ""
 "  --large-address-aware              Executable supports virtual addresses\n"
@@ -273,82 +273,82 @@ msgstr ""
 "  --large-address-aware         Ứng dụng chạy có hỗ trợ _địa chỉ_ ảo _lớn_ hơn 2 GB\n"
 "\t\t\t\t\t\t\t(_kiến thức_)\n"
 
-#: emultempl/pe.em:414
+#: emultempl/pe.em:417
 msgid "%P: warning: bad version number in -subsystem option\n"
 msgstr "%P: cảnh báo: gặp số thứ tự phiên bản sai trong tùy chọn « -subsystem » (hệ thống con)\n"
 
-#: emultempl/pe.em:445
+#: emultempl/pe.em:448
 msgid "%P%F: invalid subsystem type %s\n"
-msgstr "%P%F: invalid subsystem type %s\n"
+msgstr "%P%F: kiểu hệ thống con không hợp lệ %s\n"
 
-#: emultempl/pe.em:484
+#: emultempl/pe.em:487
 msgid "%P%F: invalid hex number for PE parameter '%s'\n"
-msgstr "%P%F: invalid hex number for PE parameter '%s'\n"
+msgstr "%P%F: số thập lục không hợp lệ cho tham số « %s »\n"
 
-#: emultempl/pe.em:501
+#: emultempl/pe.em:504
 msgid "%P%F: strange hex info for PE parameter '%s'\n"
-msgstr "%P%F: thông tin thập lục lạ cho tham sốstr « %s »or PE parameter '%s'\n"
+msgstr "%P%F: thông tin thập lục lạ cho tham số PE « %s »\n"
 
-#: emultempl/pe.em:518
+#: emultempl/pe.em:521
 #, c-format
 msgid "%s: Can't open base file %s\n"
 msgstr "%s: Không thể mở tập tin cơ bản %s\n"
 
-#: emultempl/pe.em:734
+#: emultempl/pe.em:737
 msgid "%P: warning, file alignment > section alignment.\n"
 msgstr "%P: cảnh báo, canh lề tập tin > canh lề phần.\n"
 
-#: emultempl/pe.em:821 emultempl/pe.em:848
+#: emultempl/pe.em:824 emultempl/pe.em:851
 #, c-format
 msgid "Warning: resolving %s by linking to %s\n"
 msgstr "Cảnh báo: đang tháo gỡ %s bằng cách liên kết đến %s\n"
 
-#: emultempl/pe.em:826 emultempl/pe.em:853
+#: emultempl/pe.em:829 emultempl/pe.em:856
 msgid "Use --enable-stdcall-fixup to disable these warnings\n"
 msgstr "Hãy dùng « --enable-stdcall-fixup » (bật sửa gọi chuẩn) để tắt các cảnh báo này\n"
 
-#: emultempl/pe.em:827 emultempl/pe.em:854
+#: emultempl/pe.em:830 emultempl/pe.em:857
 msgid "Use --disable-stdcall-fixup to disable these fixups\n"
 msgstr "Hãy dùng « --disable-stdcall-fixup » (tắt sửa gọi chuẩn) để tắt các việc sửa này\n"
 
-#: emultempl/pe.em:873
+#: emultempl/pe.em:876
 #, c-format
 msgid "%C: Cannot get section contents - auto-import exception\n"
 msgstr "%C: Không thể lấy nội dung phần: ngoài lệ nhập tự động\n"
 
-#: emultempl/pe.em:910
+#: emultempl/pe.em:913
 #, c-format
 msgid "Info: resolving %s by linking to %s (auto-import)\n"
 msgstr "Thông tin: đang tháo gỡ %s bằng cách liên kết đến %s (tự động nhập)\n"
 
-#: emultempl/pe.em:983
+#: emultempl/pe.em:986
 msgid "%F%P: PE operations on non PE file.\n"
 msgstr "%F%P: thao tác PE với tập tin không phải PE.\n"
 
-#: emultempl/pe.em:1258
+#: emultempl/pe.em:1261
 #, c-format
 msgid "Errors encountered processing file %s\n"
 msgstr "Gặp lỗi trong khi xử lý tập tin %s\n"
 
-#: emultempl/pe.em:1281
+#: emultempl/pe.em:1284
 #, c-format
 msgid "Errors encountered processing file %s for interworking"
 msgstr "Gặp lỗi trong khi xử lý tập tin %s để dệt vào với nhau"
 
-#: emultempl/pe.em:1340 ldexp.c:570 ldlang.c:2408 ldlang.c:5135 ldlang.c:5166
-#: ldmain.c:1161
+#: emultempl/pe.em:1345 ldexp.c:522 ldlang.c:2946 ldlang.c:5800 ldlang.c:5831
+#: ldmain.c:1167
 msgid "%P%F: bfd_link_hash_lookup failed: %E\n"
 msgstr "%P%F: « bfd_link_hash_lookup » (bfd liên kết băm tra cứu) thất bại: %E\n"
 
-#: ldcref.c:153
+#: ldcref.c:154
 msgid "%X%P: bfd_hash_table_init of cref table failed: %E\n"
 msgstr "%X%P: « bfd_hash_table_init » (bfd băm bảng khởi động) với bảng cref thất bại: %E\n"
 
-#: ldcref.c:159
+#: ldcref.c:160
 msgid "%X%P: cref_hash_lookup failed: %E\n"
-msgstr "%X%P: cref_hash_lookup failed: %E\n"
+msgstr "%X%P: việc « cref_hash_lookup » bị lỗi: %E\n"
 
-#: ldcref.c:225
+#: ldcref.c:226
 #, c-format
 msgid ""
 "\n"
@@ -359,47 +359,47 @@ msgstr ""
 "Bảng Tham Chiếu Chéo\n"
 "\n"
 
-#: ldcref.c:226
+#: ldcref.c:227
 msgid "Symbol"
 msgstr "Ký hiệu"
 
-#: ldcref.c:234
+#: ldcref.c:235
 #, c-format
 msgid "File\n"
 msgstr "Tập tin\n"
 
-#: ldcref.c:238
+#: ldcref.c:239
 #, c-format
 msgid "No symbols\n"
 msgstr "Không có ký hiệu\n"
 
-#: ldcref.c:359 ldcref.c:478
+#: ldcref.c:360 ldcref.c:482
 msgid "%B%F: could not read symbols; %E\n"
-msgstr "%B%F: could not read symbols; %E\n"
+msgstr "%B%F: không thể đọc các ký hiệu ; %E\n"
 
-#: ldcref.c:363 ldcref.c:482 ldmain.c:1226 ldmain.c:1230
+#: ldcref.c:364 ldcref.c:486 ldmain.c:1232 ldmain.c:1236
 msgid "%B%F: could not read symbols: %E\n"
-msgstr "%B%F: could not read symbols: %E\n"
+msgstr "%B%F: không thể đọc các ký hiệu : %E\n"
 
-#: ldcref.c:414
+#: ldcref.c:415
 msgid "%P: symbol `%T' missing from main hash table\n"
-msgstr "%P: thiếu ký hiệus« mb »ltrong bảng băm chính table\n"
+msgstr "%P: thiếu ký hiệu « %T » trong bảng băm chính\n"
 
-#: ldcref.c:547 ldcref.c:554 ldmain.c:1273 ldmain.c:1280
+#: ldcref.c:557 ldcref.c:564 ldmain.c:1279 ldmain.c:1286
 msgid "%B%F: could not read relocs: %E\n"
-msgstr "%B%F: could not read relocs: %E\n"
+msgstr "%B%F: không thể đọc các điều định vị lại : %E\n"
 
 #. We found a reloc for the symbol.  The symbol is defined
 #. in OUTSECNAME.  This reloc is from a section which is
 #. mapped into a section from which references to OUTSECNAME
 #. are prohibited.  We must report an error.
-#: ldcref.c:573
+#: ldcref.c:591
 msgid "%X%C: prohibited cross reference from %s to `%T' in %s\n"
-msgstr "%X%C: không cho phép tham chiếu chéo từprohđếni« ed »ctrongss reference from %s to `%T' in %s\n"
+msgstr "%X%C: không cho phép tham chiếu chéo từ %s đến « %T » trong %s\n"
 
 #: ldctor.c:84
 msgid "%P%X: Different relocs used in set %s\n"
-msgstr "%P%X: Sử dụng sự định vị lại khác nhau trong tập hợpDifferent relocs used in set %s\n"
+msgstr "%P%X: Sử dụng sự định vị lại khác nhau trong tập hợp %s\n"
 
 #: ldctor.c:102
 msgid "%P%X: Different object file formats composing set %s\n"
@@ -411,7 +411,7 @@ msgstr "%P%X: %s không hỗ trợ định vị lại %s cho tập hợp %s\n"
 
 #: ldctor.c:316
 msgid "%P%X: Unsupported size %d for set %s\n"
-msgstr "%P%X: Unsupported size %d for set %s\n"
+msgstr "%P%X: Không hỗ trợ kích cỡ %d cho tập hợp %s\n"
 
 #: ldctor.c:337
 msgid ""
@@ -420,86 +420,86 @@ msgid ""
 "\n"
 msgstr ""
 "\n"
-"Set                 Symbol\n"
+"Tập hợp                 Ký hiệu\n"
 "\n"
 
-#: ldemul.c:227
+#: ldemul.c:236
 #, c-format
 msgid "%S SYSLIB ignored\n"
-msgstr "%S SYSLIB bị bỏ quaignored\n"
+msgstr "%S SYSLIB bị bỏ qua\n"
 
-#: ldemul.c:233
+#: ldemul.c:242
 #, c-format
 msgid "%S HLL ignored\n"
 msgstr "%S HLL bị bỏ qua\n"
 
-#: ldemul.c:253
+#: ldemul.c:262
 msgid "%P: unrecognised emulation mode: %s\n"
-msgstr "%P: unrecognised emulation mode: %s\n"
+msgstr "%P: không nhận ra chế độ mô phỏng: %s\n"
 
-#: ldemul.c:254
+#: ldemul.c:263
 msgid "Supported emulations: "
-msgstr "Mô phỏngHđã àm hỗ  trợ:"
+msgstr "Mô phỏng đã hỗ trợ : "
 
-#: ldemul.c:296
+#: ldemul.c:305
 #, c-format
 msgid "  no emulation specific options.\n"
 msgstr "  không có tùy chọn đặc trưng cho mô phỏng.\n"
 
-#: ldexp.c:379
+#: ldexp.c:338
 #, c-format
 msgid "%F%S %% by zero\n"
 msgstr "%F%S %% cho số không\n"
 
-#: ldexp.c:386
+#: ldexp.c:346
 #, c-format
 msgid "%F%S / by zero\n"
 msgstr "%F%S / cho số không\n"
 
-#: ldexp.c:583
+#: ldexp.c:536
 #, c-format
 msgid "%X%S: unresolvable symbol `%s' referenced in expression\n"
 msgstr "%X%S: ký hiệu không tháo gỡ được « %s » được tham chiếu trong biểu thức\n"
 
-#: ldexp.c:604
+#: ldexp.c:547
 #, c-format
 msgid "%F%S: undefined symbol `%s' referenced in expression\n"
 msgstr "%F%S: ký hiệu chưa định nghĩa « %s » được tham chiếu trong biểu thức\n"
 
-#: ldexp.c:665 ldexp.c:678
+#: ldexp.c:608 ldexp.c:621
 #, c-format
 msgid "%F%S: undefined MEMORY region `%s' referenced in expression\n"
 msgstr "%F%S: miền MEMORY (nhớ) chưa định nghĩa « %s » được tham chiếu trong biểu thức\n"
 
-#: ldexp.c:757
+#: ldexp.c:683
 #, c-format
 msgid "%F%S can not PROVIDE assignment to location counter\n"
 msgstr "%F%S không thể PROVIDE (cung cấp) việc gán cho bộ đếm địa điểm\n"
 
-#: ldexp.c:770
+#: ldexp.c:697
 #, c-format
 msgid "%F%S invalid assignment to location counter\n"
 msgstr "%F%S việc gán không hợp lệ cho bộ đếm địa điểm\n"
 
-#: ldexp.c:774
+#: ldexp.c:700
 #, c-format
 msgid "%F%S assignment to location counter invalid outside of SECTION\n"
 msgstr "%F%S việc gán cho bộ đếm địa điểm không phải hợp lệ bên ngoài SECTION (phần)\n"
 
-#: ldexp.c:783
+#: ldexp.c:709
 msgid "%F%S cannot move location counter backwards (from %V to %V)\n"
 msgstr "%F%S không thể chạy ngược bộ đếm địa điểm (từ %V về %V)\n"
 
-#: ldexp.c:810
+#: ldexp.c:748
 msgid "%P%F:%s: hash creation failed\n"
-msgstr "%P%F:%s: hash creation failed\n"
+msgstr "%P%F:%s: việc tạo băm bị lỗi\n"
 
-#: ldexp.c:1077 ldexp.c:1109
+#: ldexp.c:1000 ldexp.c:1025
 #, c-format
 msgid "%F%S nonconstant expression for %s\n"
-msgstr "%F%S biểu thức thay đổi chononconstant expression for %s\n"
+msgstr "%F%S biểu thức thay đổi cho %s\n"
 
-#: ldexp.c:1163
+#: ldexp.c:1082
 #, c-format
 msgid "%F%S non constant expression for %s\n"
 msgstr "%F%S biểu thức thay đổi cho %s\n"
@@ -512,15 +512,15 @@ msgstr "việc cố mở %s bị lỗi\n"
 #: ldfile.c:141
 #, c-format
 msgid "attempt to open %s succeeded\n"
-msgstr "%s đã được mở\n"
+msgstr "việc cố mở %s đã thành công\n"
 
 #: ldfile.c:147
 msgid "%F%P: invalid BFD target `%s'\n"
-msgstr "%F%P: invalid BFD target `%s'\n"
+msgstr "%F%P: đích BFD không hợp lệ « %s »\n"
 
 #: ldfile.c:255 ldfile.c:282
 msgid "%P: skipping incompatible %s when searching for %s\n"
-msgstr "%P: đang nhảy quaskipkhông tương thích trong khi tìm kiếm%s when searching for %s\n"
+msgstr "%P: đang nhảy qua %s không tương thích trong khi tìm kiếm %s\n"
 
 #: ldfile.c:267
 msgid "%F%P: attempted static link of dynamic object `%s'\n"
@@ -532,15 +532,15 @@ msgstr "%F%P: %s (%s): Không có tập tin như vậy: %E\n"
 
 #: ldfile.c:387
 msgid "%F%P: %s: No such file: %E\n"
-msgstr "%F%P: %s: No such file: %E\n"
+msgstr "%F%P: %s: Không có tập tin như vậy: %E\n"
 
 #: ldfile.c:417
 msgid "%F%P: cannot find %s inside %s\n"
-msgstr "%F%P: cannot find %s inside %s\n"
+msgstr "%F%P: không tìm thấy được %s ở trong %s\n"
 
 #: ldfile.c:420
 msgid "%F%P: cannot find %s\n"
-msgstr "%F%P: cannot find %s\n"
+msgstr "%F%P: không tìm thấy được %s\n"
 
 #: ldfile.c:437 ldfile.c:453
 #, c-format
@@ -554,51 +554,55 @@ msgstr "đã mở tập tin tập lệnh %s\n"
 
 #: ldfile.c:499
 msgid "%P%F: cannot open linker script file %s: %E\n"
-msgstr "%P%F: cannot open linker script file %s: %E\n"
+msgstr "%P%F: không thể mở tập tin tập lệnh liên kết %s: %E\n"
 
 #: ldfile.c:546
 msgid "%P%F: cannot represent machine `%s'\n"
-msgstr "%P%F: cannot represent machine `%s'\n"
+msgstr "%P%F: không thể miêu tả máy « %s »\n"
 
-#: ldlang.c:511
-msgid "%P%F: out of memory during initialization"
-msgstr "%P%F: out of memory during initialization"
+#: ldlang.c:940 ldlang.c:982 ldlang.c:2695
+msgid "%P%F: can not create hash table: %E\n"
+msgstr "%P%F: không thể tạo bảng băm: %E\n"
 
-#: ldlang.c:551
+#: ldlang.c:1025
 msgid "%P:%S: warning: redeclaration of memory region '%s'\n"
-msgstr "%P:%S: warning: redeclaration of memory region '%s'\n"
+msgstr "%P:%S: cảnh báo : miền nhớ « %s » được khai báo lại\n"
 
-#: ldlang.c:557
+#: ldlang.c:1031
 msgid "%P:%S: warning: memory region %s not declared\n"
-msgstr "%P:%S: cảnh báowachưa tuyên bố miền bộ nhớ reeclared\n"
+msgstr "%P:%S: cảnh báo : chưa khai báo miền bộ nhớ %s\n"
 
-#: ldlang.c:1073
+#: ldlang.c:1108 ldlang.c:1135
+msgid "%P%F: failed creating section `%s': %E\n"
+msgstr "%P%F: lỗi tạo phần « %s »: %E\n"
+
+#: ldlang.c:1601
 msgid ""
 "\n"
 "Memory Configuration\n"
 "\n"
 msgstr ""
 "\n"
-"Memory Configuration\n"
+"Cấu hình\n"
 "\n"
 
-#: ldlang.c:1075
+#: ldlang.c:1603
 msgid "Name"
 msgstr "Tên"
 
-#: ldlang.c:1075
+#: ldlang.c:1603
 msgid "Origin"
 msgstr "Gốc"
 
-#: ldlang.c:1075
+#: ldlang.c:1603
 msgid "Length"
 msgstr "Độ dài"
 
-#: ldlang.c:1075
+#: ldlang.c:1603
 msgid "Attributes"
 msgstr "Thuộc tính"
 
-#: ldlang.c:1115
+#: ldlang.c:1643
 #, c-format
 msgid ""
 "\n"
@@ -606,161 +610,157 @@ msgid ""
 "\n"
 msgstr ""
 "\n"
-"Tập lệnh liên kết được và bản đồ bộ nhớLinker script and memory map\n"
+"Tập lệnh liên kết và bản đồ bộ nhớ\n"
 "\n"
 
-#: ldlang.c:1183
+#: ldlang.c:1709
 msgid "%P%F: Illegal use of `%s' section\n"
 msgstr "%P%F: Không cho phép cách sử dụng phần « %s »\n"
 
-#: ldlang.c:1193
+#: ldlang.c:1716
 msgid "%P%F: output format %s cannot represent section called %s\n"
 msgstr "%P%F: khuôn dạng %s không thể miêu tả phần được gọi là %s\n"
 
-#: ldlang.c:1775
+#: ldlang.c:2313
 msgid "%B: file not recognized: %E\n"
-msgstr "%B: file not recognized: %E\n"
+msgstr "%B: không nhận ra tập tin: %E\n"
 
-#: ldlang.c:1776
+#: ldlang.c:2314
 msgid "%B: matching formats:"
-msgstr "%B: matching formats:"
+msgstr "%B: các dạng thức khớp với nhau :"
 
-#: ldlang.c:1783
+#: ldlang.c:2321
 msgid "%F%B: file not recognized: %E\n"
-msgstr "%F%B: file not recognized: %E\n"
+msgstr "%F%B: không nhận ra tập tin: %E\n"
 
-#: ldlang.c:1847
+#: ldlang.c:2385
 msgid "%F%B: member %B in archive is not an object\n"
-msgstr "%F%B: bộ phạnmembtrong kho không phải là đối tượngobject\n"
+msgstr "%F%B: bộ phạn kho %B không phải là đối tượng\n"
 
-#: ldlang.c:1858 ldlang.c:1872
+#: ldlang.c:2396 ldlang.c:2410
 msgid "%F%B: could not read symbols: %E\n"
-msgstr "%F%B: could not read symbols: %E\n"
+msgstr "%F%B: không thể đọc các ký hiệu: %E\n"
 
-#: ldlang.c:2127
+#: ldlang.c:2665
 msgid "%P: warning: could not find any targets that match endianness requirement\n"
-msgstr "%P: cảnh báowakhông tìm thấy đích nào khớp vớitkiểu endian đã cần thiếtirement\n"
+msgstr "%P: cảnh báo : không tìm thấy đích nào khớp với kiểu endian đã cần thiết\n"
 
-#: ldlang.c:2141
+#: ldlang.c:2679
 msgid "%P%F: target %s not found\n"
-msgstr "%P%F: target %s not found\n"
+msgstr "%P%F: không tìm thấy đích %s\n"
 
-#: ldlang.c:2143
+#: ldlang.c:2681
 msgid "%P%F: cannot open output file %s: %E\n"
-msgstr "%P%F: cannot open output file %s: %E\n"
+msgstr "%P%F: không thể mở tập tin xuất %s: %E\n"
 
-#: ldlang.c:2149
+#: ldlang.c:2687
 msgid "%P%F:%s: can not make object file: %E\n"
-msgstr "%P%F:%s: can not make object file: %E\n"
+msgstr "%P%F:%s: không thể tạo tập tin đối tượng: %E\n"
 
-#: ldlang.c:2153
+#: ldlang.c:2691
 msgid "%P%F:%s: can not set architecture: %E\n"
-msgstr "%P%F:%s: can not set architecture: %E\n"
+msgstr "%P%F:%s: không thể lập kiến trúc: %E\n"
 
-#: ldlang.c:2157
-msgid "%P%F: can not create link hash table: %E\n"
-msgstr "%P%F: can not create link hash table: %E\n"
-
-#: ldlang.c:2301
+#: ldlang.c:2839
 msgid "%P%F: bfd_hash_lookup failed creating symbol %s\n"
 msgstr "%P%F: « bfd_hash_lookup » (bfd băm tra cứu) thất bại, tạo ký hiệu %s\n"
 
-#: ldlang.c:2319
+#: ldlang.c:2857
 msgid "%P%F: bfd_hash_allocate failed creating symbol %s\n"
-msgstr "%P%F: « bfd_hash_allocate » (bfd băm cấp cho) thất bại, tạo ký hiệu %s\n"
+msgstr "%P%F: việc « bfd_hash_lookup » (bfd băm tra cứu) bị lỗi, tạo ký hiệu %s\n"
 
-#: ldlang.c:2710
+#: ldlang.c:3288
 msgid " load address 0x%V"
-msgstr " load address 0x%V"
+msgstr " tải địa chỉ 0x%V"
 
-#: ldlang.c:2874
+#: ldlang.c:3528
 msgid "%W (size before relaxing)\n"
-msgstr "%W (kích cỡ trước khi lơi rasize before relaxing)\n"
+msgstr "%W (kích cỡ trước khi lơi ra)\n"
 
-#: ldlang.c:2961
+#: ldlang.c:3615
 #, c-format
 msgid "Address of section %s set to "
-msgstr "Địa chỉ của phần %s được lập  "
+msgstr "Địa chỉ của phần %s được lập thành "
 
-#: ldlang.c:3114
+#: ldlang.c:3768
 #, c-format
 msgid "Fail with %d\n"
 msgstr "Thất bại với %d\n"
 
-#: ldlang.c:3351
+#: ldlang.c:4040
 msgid "%X%P: section %s [%V -> %V] overlaps section %s [%V -> %V]\n"
 msgstr "%X%P: phần %s [%V → %V] đè lên phần %s [%V → %V]\n"
 
-#: ldlang.c:3379
+#: ldlang.c:4065
 msgid "%X%P: address 0x%v of %B section %s is not within region %s\n"
 msgstr "%X%P: địa chỉ 0x%v cửa %B phần %s không phải ở trong miền %s\n"
 
-#: ldlang.c:3388
+#: ldlang.c:4074
 msgid "%X%P: region %s is full (%B section %s)\n"
 msgstr "%X%P: miền %s đầy (%B phần %s)\n"
 
-#: ldlang.c:3439
+#: ldlang.c:4114
+#, c-format
+msgid "%F%S: non constant or forward reference address expression for section %s\n"
+msgstr "%F%S: biểu thức địa chỉ tham chiếu thay đổi hay tiếp lên %s\n"
+
+#: ldlang.c:4139
 msgid "%P%X: Internal error on COFF shared library section %s\n"
 msgstr "%P%X: Lỗi nội bộ trên phần thư viên dùng chung COFF %s\n"
 
-#: ldlang.c:3493
+#: ldlang.c:4197
 msgid "%P%F: error: no memory region specified for loadable section `%s'\n"
 msgstr "%P%F: lỗi: chưa ghi rõ miền bộ nhớ cho phần tải được « %s »\n"
 
-#: ldlang.c:3498
+#: ldlang.c:4202
 msgid "%P: warning: no memory region specified for loadable section `%s'\n"
 msgstr "%P: lỗi: chưa ghi rõ miền bộ nhớ cho phần tải được « %s »\n"
 
-#: ldlang.c:3515
-msgid "%P: warning: changing start of section %s by %u bytes\n"
-msgstr "%P: cảnh báo: đang thay đổi đầu phần %s bằng %u byte\n"
+#: ldlang.c:4224
+msgid "%P: warning: changing start of section %s by %lu bytes\n"
+msgstr "%P: cảnh báo : đang thay đổi đầu phần %s bằng %lu byte\n"
 
-#: ldlang.c:3532
-#, c-format
-msgid "%F%S: non constant or forward reference address expression for section %s\n"
-msgstr "%F%S: biểu thức địa chỉ tham chiếu thay đổi hay tiếp lên %s\n"
-
-#: ldlang.c:3703
+#: ldlang.c:4388
 msgid "%P%F: can't relax section: %E\n"
-msgstr "%P%F: can't relax section: %E\n"
+msgstr "%P%F: không thể lơi ra phần: %E\n"
 
-#: ldlang.c:3960
+#: ldlang.c:4636
 msgid "%F%P: invalid data statement\n"
-msgstr "%F%P: invalid data statement\n"
+msgstr "%F%P: câu dữ liệu không hợp lệ\n"
 
-#: ldlang.c:3999
+#: ldlang.c:4669
 msgid "%F%P: invalid reloc statement\n"
-msgstr "%F%P: invalid reloc statement\n"
+msgstr "%F%P: câu định vị lại không hợp lệ\n"
 
-#: ldlang.c:4141
+#: ldlang.c:4802
 msgid "%P%F:%s: can't set start address\n"
-msgstr "%P%F:%s: can't set start address\n"
+msgstr "%P%F:%s: không thể lập địa chỉ đầu\n"
 
-#: ldlang.c:4154 ldlang.c:4173
+#: ldlang.c:4815 ldlang.c:4834
 msgid "%P%F: can't set start address\n"
-msgstr "%P%F: can't set start address\n"
+msgstr "%P%F: không thể lập địa chỉ đầu\n"
 
-#: ldlang.c:4166
+#: ldlang.c:4827
 msgid "%P: warning: cannot find entry symbol %s; defaulting to %V\n"
-msgstr "%P: warning: cannot find entry symbol %s; defaulting to %V\n"
+msgstr "%P: cảnh báo : không tìm thấy được ký hiệu vào %s; nên dùng mặc định %V\n"
 
-#: ldlang.c:4178
+#: ldlang.c:4839
 msgid "%P: warning: cannot find entry symbol %s; not setting start address\n"
-msgstr "%P: cảnh báo: không tìm thấy ký hiệu vào %s;wnên không lập địa chỉ bắt đầu symbol %s; not setting start address\n"
+msgstr "%P: cảnh báo: không tìm thấy ký hiệu vào %s; nên không lập địa chỉ bắt đầu\n"
 
-#: ldlang.c:4227
+#: ldlang.c:4888
 msgid "%P%F: Relocatable linking with relocations from format %s (%B) to format %s (%B) is not supported\n"
 msgstr "%P%F: Không hỗ trợ liên kết định vị lại đưọc có định vị lại từ khuôn dạng %s (%B) sang khuôn dạng %s (%B)\n"
 
-#: ldlang.c:4237
+#: ldlang.c:4898
 msgid "%P: warning: %s architecture of input file `%B' is incompatible with %s output\n"
 msgstr "%P: cảnh báo: kiến trức %s của tập tin nhập « %B » không tương thích với dữ liệu xuất %s\n"
 
-#: ldlang.c:4259
+#: ldlang.c:4920
 msgid "%P%X: failed to merge target specific data of file %B\n"
 msgstr "%P%X: lỗi hợp nhất dữ liệu đặc trưng cho dữ liệu của tập tin %B\n"
 
-#: ldlang.c:4343
+#: ldlang.c:5004
 msgid ""
 "\n"
 "Allocating common symbols\n"
@@ -768,168 +768,164 @@ msgstr ""
 "\n"
 "Đang cấp phát các ký hiệu dùng chung\n"
 
-#: ldlang.c:4344
+#: ldlang.c:5005
 msgid ""
 "Common symbol       size              file\n"
 "\n"
 msgstr ""
-"Common symbol       size              file\n"
+"Ký hiệu cùng dùng      cỡ              tập tin\n"
 "\n"
 
-#: ldlang.c:4470
+#: ldlang.c:5131
 msgid "%P%F: invalid syntax in flags\n"
-msgstr "%P%F: invalid syntax in flags\n"
+msgstr "%P%F: cụ pháp không hợp lệ trong các cờ\n"
 
 # Type: error
 # Description
-#: ldlang.c:4740
+#: ldlang.c:5406
 msgid "%P%F: Failed to create hash table\n"
-msgstr "%P%F: Failed to create hash table\n"
+msgstr "%P%F: Việc tạo bảng băm bị lỗi\n"
 
-#: ldlang.c:5057
-msgid "%P%Fmultiple STARTUP files\n"
-msgstr "%P%Fmultiple STARTUP files\n"
+#: ldlang.c:5722
+msgid "%P%Fmultiple STARTUP files\n"
+msgstr "%P%F: có nhiều tập tin STARTUP (khởi chạy)\n"
 
-#: ldlang.c:5105
+#: ldlang.c:5770
 msgid "%X%P:%S: section has both a load address and a load region\n"
-msgstr "%X%P:%S: phần có cả địa chỉ tải lẫn miền tải đềusection has both a load address and a load region\n"
+msgstr "%X%P:%S: phần có cả địa chỉ tải lẫn miền tải đều\n"
 
-#: ldlang.c:5345
+#: ldlang.c:6007
 msgid "%F%P: bfd_record_phdr failed: %E\n"
-msgstr "%F%P: « bfd_record_phdr » thất bại: %E\n"
+msgstr "%F%P: việc « bfd_record_phdr » bị lỗi: %E\n"
 
-#: ldlang.c:5365
+#: ldlang.c:6027
 msgid "%X%P: section `%s' assigned to non-existent phdr `%s'\n"
-msgstr "%X%P: phần « %s » được cấp cho phdr không có « %s »\n"
+msgstr "%X%P: phần « %s » được gán cho phdr không có « %s »\n"
 
-#: ldlang.c:5751
+#: ldlang.c:6418
 msgid "%X%P: unknown language `%s' in version information\n"
 msgstr "%X%P: không biết ngôn ngữ « %s » trong thông tin phiên bản\n"
 
-#: ldlang.c:5893
+#: ldlang.c:6560
 msgid "%X%P: anonymous version tag cannot be combined with other version tags\n"
 msgstr "%X%P: thẻ phiên bản vô danh không kết hợp được với thẻ phiên bản khác\n"
 
-#: ldlang.c:5902
+#: ldlang.c:6569
 msgid "%X%P: duplicate version tag `%s'\n"
-msgstr "%X%P: duplicate version tag `%s'\n"
+msgstr "%X%P: thẻ phiên bản trùng « %s »\n"
 
-#: ldlang.c:5922 ldlang.c:5931 ldlang.c:5948 ldlang.c:5958
+#: ldlang.c:6589 ldlang.c:6598 ldlang.c:6615 ldlang.c:6625
 msgid "%X%P: duplicate expression `%s' in version information\n"
-msgstr "%X%P: biểu thức trùng « %s » trong thông tin phiên bảnduplicate expression `%s' in version information\n"
+msgstr "%X%P: biểu thức trùng « %s » trong thông tin phiên bản\n"
 
-#: ldlang.c:5998
+#: ldlang.c:6665
 msgid "%X%P: unable to find version dependency `%s'\n"
-msgstr "%X%P: unable to find version dependency `%s'\n"
+msgstr "%X%P: không tìm thấy được cách phục thuộc vào phiên bản « %s »\n"
 
-#: ldlang.c:6020
+#: ldlang.c:6687
 msgid "%X%P: unable to read .exports section contents\n"
-msgstr "%X%P: unable to read .exports section contents\n"
+msgstr "%X%P: không thể đọc nội dung của phần « .exports » (xuất)\n"
 
-#: ldmain.c:229
+#: ldmain.c:232
 msgid "%X%P: can't set BFD default target to `%s': %E\n"
-msgstr "%X%P: không thể lập đích can'mặc định là « %s »:t to `%s': %E\n"
+msgstr "%X%P: không thể lập đích mặc định BFD thành « %s »: %E\n"
 
-#: ldmain.c:341
+#: ldmain.c:345
 msgid "%P%F: --relax and -r may not be used together\n"
 msgstr "%P%F: không cho phép sử dụng hai tùy chọn « --relax » (lơi ra) và « -r » với nhau \n"
 
-#: ldmain.c:343
-msgid "%P%F: -r and -shared may not be used together\n"
-msgstr "%P%F: -r and -shared may not be used together\n"
-
 #: ldmain.c:347
-msgid "%P%F: -static and -shared may not be used together\n"
-msgstr "%P%F: -static and -shared may not be used together\n"
+msgid "%P%F: -r and -shared may not be used together\n"
+msgstr "%P%F: không thể sử dụng cả « -r » lẫn « -shared » (dùng chung) đều\n"
 
-#: ldmain.c:352
+#: ldmain.c:353
 msgid "%P%F: -F may not be used without -shared\n"
 msgstr "%P%F: không thể sử dụng tùy chọn « -F » khi không có tùy chọn « -shared » (dùng chung)\n"
 
-#: ldmain.c:354
+#: ldmain.c:355
 msgid "%P%F: -f may not be used without -shared\n"
 msgstr "%P%F: không thể sử dụng tùy chọn « -f » khi không có tùy chọn « -shared » (dùng chung)\n"
 
-#: ldmain.c:396
+#: ldmain.c:397
 msgid "using external linker script:"
 msgstr "đang dùng tập lệnh liên kết bên ngoài:"
 
-#: ldmain.c:398
+#: ldmain.c:399
 msgid "using internal linker script:"
 msgstr "đang dùng tập lệnh liên kết bên trong:"
 
-#: ldmain.c:432
+#: ldmain.c:433
 msgid "%P%F: no input files\n"
 msgstr "%P%F: không có tập tin nhập nào\n"
 
-#: ldmain.c:436
+#: ldmain.c:437
 msgid "%P: mode %s\n"
 msgstr "%P: chế độ %s\n"
 
-#: ldmain.c:452
+#: ldmain.c:453
 msgid "%P%F: cannot open map file %s: %E\n"
-msgstr "%P%F: cannot open map file %s: %E\n"
+msgstr "%P%F: không thể mở tập tin bản đồ %s: %E\n"
 
-#: ldmain.c:482
+#: ldmain.c:485
 msgid "%P: link errors found, deleting executable `%s'\n"
-msgstr "%P: link errors found, deleting executable `%s'\n"
+msgstr "%P: tìm thấy một số lỗi liên kết nên xoá bỏ tập tin chạy được « %s »\n"
 
-#: ldmain.c:491
+#: ldmain.c:494
 msgid "%F%B: final close failed: %E\n"
-msgstr "%F%B: final close failed: %E\n"
+msgstr "%F%B: việc đóng cuối cùng bị lỗi: %E\n"
 
-#: ldmain.c:517
+#: ldmain.c:520
 msgid "%X%P: unable to open for source of copy `%s'\n"
-msgstr "%X%P: unable to open for source of copy `%s'\n"
+msgstr "%X%P: không thể mở cho nguồn của bản sao « %s »\n"
 
-#: ldmain.c:520
+#: ldmain.c:523
 msgid "%X%P: unable to open for destination of copy `%s'\n"
-msgstr "%X%P: unable to open for destination of copy `%s'\n"
+msgstr "%X%P: không thể mở cho đích của bản sao « %s »\n"
 
-#: ldmain.c:527
+#: ldmain.c:530
 msgid "%P: Error writing file `%s'\n"
-msgstr "%P: Error writing file `%s'\n"
+msgstr "%P: Gặp lỗi khi ghi tập tin « %s »\n"
 
-#: ldmain.c:532 pe-dll.c:1447
+#: ldmain.c:535 pe-dll.c:1494
 #, c-format
 msgid "%P: Error closing file `%s'\n"
 msgstr "%P: Gặp lỗi khi đóng tập tin « %s »\n"
 
-#: ldmain.c:548
+#: ldmain.c:551
 #, c-format
 msgid "%s: total time in link: %ld.%06ld\n"
 msgstr "%s: thời gian tổng trong liên kết: %ld.%06ld\n"
 
-#: ldmain.c:551
+#: ldmain.c:554
 #, c-format
 msgid "%s: data size %ld\n"
 msgstr "%s: kích cỡ dữ liệu %ld\n"
 
-#: ldmain.c:634
+#: ldmain.c:637
 msgid "%P%F: missing argument to -m\n"
-msgstr "%P%F: missing argument to -m\n"
+msgstr "%P%F: thiếu đối số tới « -m »\n"
 
-#: ldmain.c:780 ldmain.c:798 ldmain.c:828
+#: ldmain.c:784 ldmain.c:803 ldmain.c:834
 msgid "%P%F: bfd_hash_table_init failed: %E\n"
-msgstr "%P%F: « bfd_hash_table_init » (bfd băm bảng khởi động) thất bại: %E\n"
+msgstr "%P%F: việc « bfd_hash_table_init » (bfd băm bảng khởi động) bị lỗi: %E\n"
 
-#: ldmain.c:784 ldmain.c:802
+#: ldmain.c:788 ldmain.c:807
 msgid "%P%F: bfd_hash_lookup failed: %E\n"
-msgstr "%P%F: bfd_hash_lookup failed: %E\n"
+msgstr "%P%F: việc « bfd_hash_lookup » (tra tìm băm BFD) bị lỗi: %E\n"
 
-#: ldmain.c:816
+#: ldmain.c:821
 msgid "%X%P: error: duplicate retain-symbols-file\n"
-msgstr "%X%P: lỗieicate retain-symbols (giữ lại tập tin ký hiệu) trùng-file\n"
+msgstr "%X%P: lỗi: « retain-symbols-file » (giữ lại tập tin ký hiệu) trùng\n"
 
-#: ldmain.c:858
+#: ldmain.c:864
 msgid "%P%F: bfd_hash_lookup for insertion failed: %E\n"
-msgstr "%P%F: « bfd_hash_lookup » (bfd băm tra cứu) cho sự chèn đã thất bại: %E\n"
+msgstr "%P%F: việc « bfd_hash_lookup » (bfd băm tra cứu) cho sự chèn bị lỗi: %E\n"
 
-#: ldmain.c:863
+#: ldmain.c:869
 msgid "%P: `-retain-symbols-file' overrides `-s' and `-S'\n"
-msgstr "%P: tùy chọn « -retain-symbols-file » (giữ lại tập tin ký hiệu) đè lên « -s » và « -S »\n"
+msgstr "%P: tùy chọn « -retain-symbols-file » (giữ lại tập tin ký hiệu) có quyền cao hơn « -s » và « -S »\n"
 
-#: ldmain.c:938
+#: ldmain.c:944
 #, c-format
 msgid ""
 "Archive member included because of file (symbol)\n"
@@ -938,175 +934,169 @@ msgstr ""
 "Gồm bộ phạn kho vì tập tin (ký hiệu)\n"
 "\n"
 
-#: ldmain.c:1008
+#: ldmain.c:1014
 msgid "%X%C: multiple definition of `%T'\n"
-msgstr "%X%C: multiple definition of `%T'\n"
+msgstr "%X%C: « %T » đã được định nghĩa nhiều lần\n"
 
-#: ldmain.c:1011
+#: ldmain.c:1017
 msgid "%D: first defined here\n"
-msgstr "%D: first defined here\n"
+msgstr "%D: fiđã được định nghĩa đầu tiên ở đây\n"
 
-#: ldmain.c:1015
+#: ldmain.c:1021
 msgid "%P: Disabling relaxation: it will not work with multiple definitions\n"
-msgstr "%P: Tắt khả năng lơi ra: nó sẽ không hoạt động với nhiều lời định nghĩaisabling relaxation: it will not work with multiple definitions\n"
+msgstr "%P: Tắt khả năng lơi ra: nó sẽ không hoạt động với nhiều lời định nghĩa\n"
 
-#: ldmain.c:1045
+#: ldmain.c:1051
 msgid "%B: warning: definition of `%T' overriding common\n"
 msgstr "%B: cảnh báo: lời định nghĩa « %T » đè lên điều dùng chung\n"
 
-#: ldmain.c:1048
+#: ldmain.c:1054
 msgid "%B: warning: common is here\n"
-msgstr "%B: warning: common is here\n"
+msgstr "%B: cảnh báo : common (cùng dùng) là đây\n"
 
-#: ldmain.c:1055
+#: ldmain.c:1061
 msgid "%B: warning: common of `%T' overridden by definition\n"
-msgstr "%B: cảnh báowalời định nghĩa đè lên điềum« on » dùng chunginition\n"
+msgstr "%B: cảnh báo : điều cùng dùng lớn hơn có đè lên điều cùng dùng « %T »\n"
 
-#: ldmain.c:1058
+#: ldmain.c:1064
 msgid "%B: warning: defined here\n"
-msgstr "%B: warning: defined here\n"
+msgstr "%B: cảnh báo : điều dùng chung lớn hơn tại đây\n"
 
-#: ldmain.c:1065
+#: ldmain.c:1071
 msgid "%B: warning: common of `%T' overridden by larger common\n"
-msgstr ""
-"%B: cảnh báowađiều dùng chung lớn hơn có đè lên điềum« %T » dùng chung\n"
-"ommon\n"
+msgstr "%B: cảnh báo : điều « %T » dùng chung có đè lên điều dùng chung nhỏ hơn\n"
 
-#: ldmain.c:1068
+#: ldmain.c:1074
 msgid "%B: warning: larger common is here\n"
 msgstr "%B: cảnh báo: điều dùng chung lớn hơn tại đây\n"
 
-#: ldmain.c:1072
+#: ldmain.c:1078
 msgid "%B: warning: common of `%T' overriding smaller common\n"
 msgstr "%B: cảnh báo: điều « %T » dùng chung có đè lên điều dùng chung nhỏ hơn\n"
 
-#: ldmain.c:1075
+#: ldmain.c:1081
 msgid "%B: warning: smaller common is here\n"
-msgstr "%B: warning: smaller common is here\n"
+msgstr "%B: cảnh báo : điều cùng dùng nhỏ hơn ở đây\n"
 
-#: ldmain.c:1079
+#: ldmain.c:1085
 msgid "%B: warning: multiple common of `%T'\n"
-msgstr "%B: warning: multiple common of `%T'\n"
+msgstr "%B: cảnh báo : nhiều điều cùng dùng của « %T »\n"
 
-#: ldmain.c:1081
+#: ldmain.c:1087
 msgid "%B: warning: previous common is here\n"
-msgstr "%B: warning: previous common is here\n"
+msgstr "%B: cảnh báo : điều cùng dùng trước ở đây\n"
 
-#: ldmain.c:1101 ldmain.c:1139
+#: ldmain.c:1107 ldmain.c:1145
 msgid "%P: warning: global constructor %s used\n"
-msgstr "%P: warning: global constructor %s used\n"
+msgstr "%P: cảnh báo : bộ cấu trúc toàn cục %s được dùng\n"
 
-#: ldmain.c:1149
+#: ldmain.c:1155
 msgid "%P%F: BFD backend error: BFD_RELOC_CTOR unsupported\n"
-msgstr "%P%F: lỗi hậu phương BFDbakhông hỗ trợ « ckend error: B »R unsupported\n"
+msgstr "%P%F: lỗi hậu phương: « BFD_RELOC_CTOR » không được hỗ trợ\n"
 
 #. We found a reloc for the symbol we are looking for.
-#: ldmain.c:1203 ldmain.c:1205 ldmain.c:1207 ldmain.c:1245 ldmain.c:1293
+#: ldmain.c:1209 ldmain.c:1211 ldmain.c:1213 ldmain.c:1251 ldmain.c:1299
 msgid "warning: "
 msgstr "cảnh báo: "
 
-#: ldmain.c:1327
+#: ldmain.c:1334
 msgid "%F%P: bfd_hash_table_init failed: %E\n"
-msgstr "%F%P: « bfd_hash_table_init » (bfd băm bảng khởi động) thất bại: %E\n"
+msgstr "%F%P: việc « bfd_hash_table_init » (bfd băm bảng khởi động) bị lỗi: %E\n"
 
-#: ldmain.c:1334
+#: ldmain.c:1341
 msgid "%F%P: bfd_hash_lookup failed: %E\n"
-msgstr "%F%P: bfd_hash_lookup failed: %E\n"
+msgstr "%F%P: việc « bfd_hash_lookup » (tra tìm băm BFD) bị lỗi: %E\n"
 
-#: ldmain.c:1355
+#: ldmain.c:1362
 msgid "%X%C: undefined reference to `%T'\n"
-msgstr "%X%C: undefined reference to `%T'\n"
+msgstr "%X%C: tham chiếu chưa định nghĩa đến « %T »\n"
 
-#: ldmain.c:1358
+#: ldmain.c:1365
 msgid "%C: warning: undefined reference to `%T'\n"
-msgstr "%C: warning: undefined reference to `%T'\n"
+msgstr "%C: cảnh báo : tham chiếu chưa định nghĩa đến « %T »\n"
 
-#: ldmain.c:1364
+#: ldmain.c:1371
 msgid "%X%D: more undefined references to `%T' follow\n"
 msgstr "%X%D: more undefined references to `%T' follow\n"
 
-#: ldmain.c:1367
+#: ldmain.c:1374
 msgid "%D: warning: more undefined references to `%T' follow\n"
 msgstr "%D: chưa định nghĩa lời tham chiếu đến « %T » tại nhiều nơi nữa theo đây\n"
 
-#: ldmain.c:1378
+#: ldmain.c:1385
 msgid "%X%B: undefined reference to `%T'\n"
-msgstr "%X%B: undefined reference to `%T'\n"
+msgstr "%X%B: tham chiếu chưa định nghĩa đến « %T »\n"
 
-#: ldmain.c:1381
+#: ldmain.c:1388
 msgid "%B: warning: undefined reference to `%T'\n"
 msgstr "%B: cảnh báo: chưa định nghĩa lời tham chiếu đến « %T »\n"
 
-#: ldmain.c:1387
+#: ldmain.c:1394
 msgid "%X%B: more undefined references to `%T' follow\n"
-msgstr "%X%B: more undefined references to `%T' follow\n"
+msgstr "%X%B: có tham chiếu chưa định nghĩa đến « %T » thêm nữa theo sau\n"
 
-#: ldmain.c:1390
+#: ldmain.c:1397
 msgid "%B: warning: more undefined references to `%T' follow\n"
 msgstr "%B: cảnh báo: chưa định nghĩa lời tham chiếu đến « %T » tại nhiều nơi nữa theo đây\n"
 
-#: ldmain.c:1425 ldmain.c:1478 ldmain.c:1496
-msgid "%P%X: generated"
-msgstr "%P%X: generated"
-
-#: ldmain.c:1432
+#: ldmain.c:1436
 msgid " additional relocation overflows omitted from the output\n"
-msgstr "tràn định vị lại thêm bị bỏ đi khỏi dữ liệu xuấtdditional relocation overflows omitted from the output\n"
+msgstr " tràn định vị lại thêm bị bỏ đi khỏi dữ liệu xuất\n"
 
-#: ldmain.c:1445
+#: ldmain.c:1449
 msgid " relocation truncated to fit: %s against undefined symbol `%T'"
 msgstr " sự định vị lại bị cắt xém để vừa: %s đối với ký hiệu chưa định nghĩa « %T »"
 
-#: ldmain.c:1450
+#: ldmain.c:1454
 msgid " relocation truncated to fit: %s against symbol `%T' defined in %A section in %B"
 msgstr " sự định vị lại bị cắt xém để vừa: %s đối với ký hiệu « %T » đã định nghĩa trong phần %A trong %B"
 
-#: ldmain.c:1460
+#: ldmain.c:1466
 msgid " relocation truncated to fit: %s against `%T'"
-msgstr "sự định vị lại bị cắt xém để vừa: %s đối với « %T »"
+msgstr " sự định vị lại bị cắt xém để vừa: %s đối với « %T »"
 
-#: ldmain.c:1481
+#: ldmain.c:1483
 #, c-format
-msgid "dangerous relocation: %s\n"
-msgstr "sự định vị lại nguy hiểm: %s\n"
+msgid "%X%C: dangerous relocation: %s\n"
+msgstr "%X%C: việc định vị lại nguy hiểm: %s\n"
 
-#: ldmain.c:1499
-msgid " reloc refers to symbol `%T' which is not being output\n"
-msgstr " sự định vị lại tham chiếu đến ký hiệu « %T » mà không còn được xuất lại\n"
+#: ldmain.c:1498
+msgid "%X%C: reloc refers to symbol `%T' which is not being output\n"
+msgstr "%X%C: việc định vị lại tham chiếu đến ký hiệu « %T » mà không đang được xuất\n"
 
-#: ldmisc.c:149
+#: ldmisc.c:147
 #, c-format
 msgid "no symbol"
 msgstr "không có ký hiệu"
 
-#: ldmisc.c:240
+#: ldmisc.c:238
 #, c-format
 msgid "built in linker script:%u"
 msgstr "tập lệnh liên kết có sẵn:%u"
 
-#: ldmisc.c:289 ldmisc.c:293
+#: ldmisc.c:294 ldmisc.c:298
 msgid "%B%F: could not read symbols\n"
-msgstr "%B%F: could not read symbols\n"
+msgstr "%B%F: không thể đọc các ký hiệu\n"
 
-#: ldmisc.c:329
-msgid "%B: In function `%T':\n"
-msgstr "%B: In function `%T':\n"
+#: ldmisc.c:340
+msgid "%B: In function `%T'"
+msgstr "%B: trong hàm « %T »"
 
-#: ldmisc.c:480
+#: ldmisc.c:510
 msgid "%F%P: internal error %s %d\n"
-msgstr "%F%P: internal error %s %d\n"
+msgstr "%F%P: lỗi nội bộ %s %d\n"
 
-#: ldmisc.c:526
+#: ldmisc.c:556
 msgid "%P: internal error: aborting at %s line %d in %s\n"
-msgstr "%P: internal error: aborting at %s line %d in %s\n"
+msgstr "%P: lỗi nội bộ : đang hủy bỏ tại %s dòng %d trong %s\n"
 
-#: ldmisc.c:529
+#: ldmisc.c:559
 msgid "%P: internal error: aborting at %s line %d\n"
-msgstr "%P: internal error: aborting at %s line %d\n"
+msgstr "%P: lỗi nội bộ : đang hủy bỏ tại %s dòng %d\n"
 
-#: ldmisc.c:531
+#: ldmisc.c:561
 msgid "%P%F: please report this bug\n"
-msgstr "%P%F: vui lòng thông báo lỗi nàyplease report this bug\n"
+msgstr "%P%F: vui lòng thông báo lỗi này\n"
 
 #. Output for noisy == 2 is intended to follow the GNU standards.
 #: ldver.c:38
@@ -1135,280 +1125,280 @@ msgstr "  Mô phỏng đã hỗ trợ :\n"
 
 #: ldwrite.c:55 ldwrite.c:191
 msgid "%P%F: bfd_new_link_order failed\n"
-msgstr "%P%F: « bfd_new_link_order » (bfd mới liên kết thứ tự) thất bại\n"
+msgstr "%P%F: việc « bfd_new_link_order » (bfd mới liên kết thứ tự) bị lỗi\n"
 
-#: ldwrite.c:341
+#: ldwrite.c:344
 msgid "%F%P: cannot create split section name for %s\n"
-msgstr "%F%P: cannot create split section name for %s\n"
+msgstr "%F%P: không thể tạo tên phần đã chia tách cho %s\n"
 
-#: ldwrite.c:353
+#: ldwrite.c:356
 msgid "%F%P: clone section failed: %E\n"
-msgstr "%F%P: clone section failed: %E\n"
+msgstr "%F%P: việc bắt chước phần bị lỗi: %E\n"
 
-#: ldwrite.c:391
+#: ldwrite.c:394
 #, c-format
 msgid "%8x something else\n"
-msgstr "%8x cái gì khácsomething else\n"
+msgstr "%8x cái gì khác\n"
 
-#: ldwrite.c:561
+#: ldwrite.c:564
 msgid "%F%P: final link failed: %E\n"
-msgstr "%F%P: final link failed: %E\n"
+msgstr "%F%P: liên kết cuối cùng bị lỗi: %E\n"
 
-#: lexsup.c:195 lexsup.c:327
+#: lexsup.c:196 lexsup.c:328
 msgid "KEYWORD"
-msgstr "TỪ_KHÓAÊN_BÀN_PHÍM"
+msgstr "TỪ_KH"
 
-#: lexsup.c:195
+#: lexsup.c:196
 msgid "Shared library control for HP/UX compatibility"
 msgstr "Điều khiển thư viên dùng chung để tương thích với HP/UX"
 
-#: lexsup.c:198
+#: lexsup.c:199
 msgid "ARCH"
 msgstr "ARCH"
 
-#: lexsup.c:198
+#: lexsup.c:199
 msgid "Set architecture"
 msgstr "Lập kiến trúc"
 
-#: lexsup.c:200 lexsup.c:421
+#: lexsup.c:201 lexsup.c:422
 msgid "TARGET"
 msgstr "ĐÍCH"
 
-#: lexsup.c:200
+#: lexsup.c:201
 msgid "Specify target for following input files"
 msgstr "Ghi rõ đích cho những tập tin nhập theo đây"
 
-#: lexsup.c:203 lexsup.c:252 lexsup.c:264 lexsup.c:277 lexsup.c:380
-#: lexsup.c:433 lexsup.c:490
+#: lexsup.c:204 lexsup.c:253 lexsup.c:265 lexsup.c:278 lexsup.c:381
+#: lexsup.c:434 lexsup.c:491
 msgid "FILE"
 msgstr "TẬP TIN"
 
-#: lexsup.c:203
+#: lexsup.c:204
 msgid "Read MRI format linker script"
 msgstr "Đọc tập lệnh liên kết khuôn dạng MRI"
 
-#: lexsup.c:205
+#: lexsup.c:206
 msgid "Force common symbols to be defined"
 msgstr "Ép buộc định nghĩa mọi ký hiệu dùng chung"
 
-#: lexsup.c:209 lexsup.c:475 lexsup.c:477 lexsup.c:479
+#: lexsup.c:210 lexsup.c:476 lexsup.c:478 lexsup.c:480
 msgid "ADDRESS"
 msgstr "ĐỊA CHỈ"
 
-#: lexsup.c:209
+#: lexsup.c:210
 msgid "Set start address"
 msgstr "Lập địa chỉ bắt đầu"
 
-#: lexsup.c:211
+#: lexsup.c:212
 msgid "Export all dynamic symbols"
 msgstr "Xuất mọi ký hiệu động"
 
-#: lexsup.c:213
+#: lexsup.c:214
 msgid "Link big-endian objects"
 msgstr "Liên kết mọi đối tượng big-endian (cuối lớn)"
 
-#: lexsup.c:215
+#: lexsup.c:216
 msgid "Link little-endian objects"
 msgstr "Liên kết mọi đối tượng little-endian (cuối nhỏ)"
 
-#: lexsup.c:217 lexsup.c:220
+#: lexsup.c:218 lexsup.c:221
 msgid "SHLIB"
 msgstr "SHLIB"
 
-#: lexsup.c:217
+#: lexsup.c:218
 msgid "Auxiliary filter for shared object symbol table"
 msgstr "Bộ lọc phụ cho bảng ký hiệu đối tượng dùng chung"
 
-#: lexsup.c:220
+#: lexsup.c:221
 msgid "Filter for shared object symbol table"
 msgstr "Bộ lọc cho bảng ký hiệu đối tượng dùng chung"
 
-#: lexsup.c:223
+#: lexsup.c:224
 msgid "Ignored"
-msgstr "Ignored"
+msgstr "Bị bỏ qua"
 
-#: lexsup.c:225
+#: lexsup.c:226
 msgid "SIZE"
 msgstr "CỠ"
 
-#: lexsup.c:225
+#: lexsup.c:226
 msgid "Small data size (if no size, same as --shared)"
 msgstr "Kích cỡ dữ liệu nhỏ (nếu không có, nó bằng tùy chọn « --shared »)"
 
-#: lexsup.c:228
+#: lexsup.c:229
 msgid "FILENAME"
 msgstr "TÊN TẬP TIN"
 
-#: lexsup.c:228
+#: lexsup.c:229
 msgid "Set internal name of shared library"
 msgstr "Lập tên nội bộ của thư viên dùng chung"
 
-#: lexsup.c:230
+#: lexsup.c:231
 msgid "PROGRAM"
 msgstr "CHƯƠNG TRÌNH"
 
-#: lexsup.c:230
+#: lexsup.c:231
 msgid "Set PROGRAM as the dynamic linker to use"
 msgstr "Lập CHƯƠNG TRÌNH là bộ liên kết động cần dùng"
 
-#: lexsup.c:233
+#: lexsup.c:234
 msgid "LIBNAME"
 msgstr "TÊN THƯ VIÊN"
 
-#: lexsup.c:233
+#: lexsup.c:234
 msgid "Search for library LIBNAME"
 msgstr "Tìm kiếm thư viên TÊN THƯ VIÊN"
 
-#: lexsup.c:235
+#: lexsup.c:236
 msgid "DIRECTORY"
 msgstr "THƯ MỤC"
 
-#: lexsup.c:235
+#: lexsup.c:236
 msgid "Add DIRECTORY to library search path"
 msgstr "Thêm THƯ MỤC vào đường dẫn tìm kiếm thư viên"
 
-#: lexsup.c:238
+#: lexsup.c:239
 msgid "Override the default sysroot location"
 msgstr "Đè lên địa điểm sysroot (gốc hệ thống) mặc định"
 
-#: lexsup.c:240
+#: lexsup.c:241
 msgid "EMULATION"
 msgstr "MÔ PHỎNG"
 
-#: lexsup.c:240
+#: lexsup.c:241
 msgid "Set emulation"
 msgstr "Lập cách mô phỏng"
 
-#: lexsup.c:242
+#: lexsup.c:243
 msgid "Print map file on standard output"
 msgstr "In tập tin bản đồ ra thiết bị xuất chuẩn"
 
-#: lexsup.c:244
+#: lexsup.c:245
 msgid "Do not page align data"
 msgstr "Đừng canh lề trang dữ liệu"
 
-#: lexsup.c:246
+#: lexsup.c:247
 msgid "Do not page align data, do not make text readonly"
 msgstr "Đừng canh lề trang dữ liệu, đừng lập văn bản là chỉ đọc"
 
-#: lexsup.c:249
+#: lexsup.c:250
 msgid "Page align data, make text readonly"
 msgstr "Canh lề trang dữ liệu, lập văn bản là chỉ đọc"
 
-#: lexsup.c:252
+#: lexsup.c:253
 msgid "Set output file name"
 msgstr "Lập tên tập tin xuất"
 
-#: lexsup.c:254
+#: lexsup.c:255
 msgid "Optimize output file"
 msgstr "Ưu tiên hóa tập tin xuất"
 
-#: lexsup.c:256
+#: lexsup.c:257
 msgid "Ignored for SVR4 compatibility"
 msgstr "Bị bỏ qua để tương thích với SVR4"
 
-#: lexsup.c:260
+#: lexsup.c:261
 msgid "Generate relocatable output"
 msgstr "Tạo ra dữ liệu có thể định vị lại"
 
-#: lexsup.c:264
+#: lexsup.c:265
 msgid "Just link symbols (if directory, same as --rpath)"
 msgstr "Chỉ liên kết ký hiệu (nếu thư mục, bằng tùy chọn « --rpath »)"
 
-#: lexsup.c:267
+#: lexsup.c:268
 msgid "Strip all symbols"
 msgstr "Tước mọi ký hiệu"
 
-#: lexsup.c:269
+#: lexsup.c:270
 msgid "Strip debugging symbols"
 msgstr "Tước ký hiệu gỡ lối"
 
-#: lexsup.c:271
+#: lexsup.c:272
 msgid "Strip symbols in discarded sections"
 msgstr "Tước ký hiệu trong phần bị hủy"
 
-#: lexsup.c:273
+#: lexsup.c:274
 msgid "Do not strip symbols in discarded sections"
 msgstr "Đừng tước ký hiệu trong phần bị hủy"
 
-#: lexsup.c:275
+#: lexsup.c:276
 msgid "Trace file opens"
 msgstr "Tập tin vết có mở"
 
-#: lexsup.c:277
+#: lexsup.c:278
 msgid "Read linker script"
-msgstr "Read linker script"
+msgstr "Đọc tập lệnh liên kết"
 
-#: lexsup.c:279 lexsup.c:297 lexsup.c:363 lexsup.c:378 lexsup.c:468
-#: lexsup.c:493 lexsup.c:520
+#: lexsup.c:280 lexsup.c:298 lexsup.c:364 lexsup.c:379 lexsup.c:469
+#: lexsup.c:494 lexsup.c:521
 msgid "SYMBOL"
-msgstr "KÝ HIỆUSMB"
+msgstr "KÝ HIỆU"
 
-#: lexsup.c:279
+#: lexsup.c:280
 msgid "Start with undefined reference to SYMBOL"
 msgstr "Bắt đầu với tham chiệu gạch chân đến KÝ HIỆU"
 
-#: lexsup.c:282
+#: lexsup.c:283
 msgid "[=SECTION]"
 msgstr "[=PHẦN]"
 
-#: lexsup.c:283
+#: lexsup.c:284
 msgid "Don't merge input [SECTION | orphan] sections"
 msgstr "Đừng kết hợp phần nhập [PHẦN | mồ côi]"
 
-#: lexsup.c:285
+#: lexsup.c:286
 msgid "Build global constructor/destructor tables"
 msgstr "Xây dụng bảng cấu tạo/phá toàn cục"
 
-#: lexsup.c:287
+#: lexsup.c:288
 msgid "Print version information"
 msgstr "In ra thông tin phiên bản"
 
-#: lexsup.c:289
+#: lexsup.c:290
 msgid "Print version and emulation information"
 msgstr "In ra thông tin phiên bản và mô phỏng"
 
-#: lexsup.c:291
+#: lexsup.c:292
 msgid "Discard all local symbols"
-msgstr "Discard all local symbols"
+msgstr "Hủy mọi ký hiệu cục bộ"
 
-#: lexsup.c:293
+#: lexsup.c:294
 msgid "Discard temporary local symbols (default)"
-msgstr "Hủy ký hiệu địa phương tạm (mặc định)"
+msgstr "Hủy mọi ký hiệu cục bộ tạm thời (mặc định)"
 
-#: lexsup.c:295
+#: lexsup.c:296
 msgid "Don't discard any local symbols"
-msgstr "Đừng hủy ký hiệu địa phương nào"
+msgstr "Đừng hủy ký hiệu cục bộ nào"
 
-#: lexsup.c:297
+#: lexsup.c:298
 msgid "Trace mentions of SYMBOL"
 msgstr "Vết nơi ghi KÝ HIỆU"
 
-#: lexsup.c:299 lexsup.c:435 lexsup.c:437
+#: lexsup.c:300 lexsup.c:436 lexsup.c:438
 msgid "PATH"
 msgstr "ĐƯỜNG DẪN"
 
-#: lexsup.c:299
+#: lexsup.c:300
 msgid "Default search path for Solaris compatibility"
 msgstr "Đường dẫn tìm kiếm để tương thích với Solaris"
 
-#: lexsup.c:302
+#: lexsup.c:303
 msgid "Start a group"
 msgstr "Bắt đầu nhóm"
 
-#: lexsup.c:304
+#: lexsup.c:305
 msgid "End a group"
 msgstr "Kết thức nhóm"
 
-#: lexsup.c:308
+#: lexsup.c:309
 msgid "Accept input files whose architecture cannot be determined"
 msgstr "Chấp nhận tập tin nhập có kiến trức không thể được tháo gỡ"
 
-#: lexsup.c:312
+#: lexsup.c:313
 msgid "Reject input files whose architecture is unknown"
 msgstr "Từ chối tập tin nhập có kiến trức lạ"
 
-#: lexsup.c:315
+#: lexsup.c:316
 msgid ""
 "Set DT_NEEDED tags for DT_NEEDED entries in\n"
 "\t\t\t\tfollowing dynamic libs"
@@ -1417,7 +1407,7 @@ msgstr ""
 "\tcho mục nhập « DT_NEEDED »\n"
 "\ttrong những thư viên động theo đây"
 
-#: lexsup.c:318
+#: lexsup.c:319
 msgid ""
 "Do not set DT_NEEDED tags for DT_NEEDED entries\n"
 "\t\t\t\tin following dynamic libs"
@@ -1426,155 +1416,155 @@ msgstr ""
 "\tcho mục nhập « DT_NEEDED »\n"
 "\ttrong những thư viên động theo đây"
 
-#: lexsup.c:321
+#: lexsup.c:322
 msgid "Only set DT_NEEDED for following dynamic libs if used"
 msgstr ""
 "Chỉ lập thẻ « DT_NEEDED » (cần thiết DT)\n"
 "\tcho những thư viên động theo đây nếu được dùng"
 
-#: lexsup.c:324
+#: lexsup.c:325
 msgid "Always set DT_NEEDED for following dynamic libs"
 msgstr ""
 "Luôn lập thẻ « DT_NEEDED » (cần thiết DT)\n"
 "\tcho những thư viên động theo đây"
 
-#: lexsup.c:327
+#: lexsup.c:328
 msgid "Ignored for SunOS compatibility"
 msgstr "Bị bỏ qua để tương thích với SunOS"
 
-#: lexsup.c:329
+#: lexsup.c:330
 msgid "Link against shared libraries"
 msgstr "Liên kết đối với thư viên dùng chung"
 
-#: lexsup.c:335
+#: lexsup.c:336
 msgid "Do not link against shared libraries"
 msgstr "Đừng liên kết đối với thư viên dùng chung"
 
-#: lexsup.c:343
+#: lexsup.c:344
 msgid "Bind global references locally"
-msgstr "Đóng kết tham chiếu toàn cục một cách địa phương"
+msgstr "Đóng kết tham chiếu toàn cục một cách cục bộ"
 
-#: lexsup.c:345
+#: lexsup.c:346
 msgid "Check section addresses for overlaps (default)"
 msgstr "Kiểm tra địa chỉ phần có chồng chéo (mặc định)"
 
-#: lexsup.c:348
+#: lexsup.c:349
 msgid "Do not check section addresses for overlaps"
 msgstr "Đừng kiểm tra địa chỉ phần có chồng chéo"
 
-#: lexsup.c:351
+#: lexsup.c:352
 msgid "Output cross reference table"
 msgstr "Xuất bảng tham chiếu chéo"
 
-#: lexsup.c:353
+#: lexsup.c:354
 msgid "SYMBOL=EXPRESSION"
-msgstr "BIỂU THỨC=BIỂU THỨC"
+msgstr "KÝ HIỆU=BIỂU THỨC"
 
-#: lexsup.c:353
+#: lexsup.c:354
 msgid "Define a symbol"
 msgstr "Định nghĩa ký hiệu"
 
-#: lexsup.c:355
+#: lexsup.c:356
 msgid "[=STYLE]"
 msgstr "[=KIỂU DÁNG]"
 
-#: lexsup.c:355
+#: lexsup.c:356
 msgid "Demangle symbol names [using STYLE]"
 msgstr "Tháo gỡ tên ký hiệu [bằng KIỂU DÁNG]"
 
-#: lexsup.c:358
+#: lexsup.c:359
 msgid "Generate embedded relocs"
 msgstr "Tạo ra sự định vị lại nhúng"
 
-#: lexsup.c:360
+#: lexsup.c:361
 msgid "Treat warnings as errors"
 msgstr "Xử lý cảnh báo là lỗi"
 
-#: lexsup.c:363
+#: lexsup.c:364
 msgid "Call SYMBOL at unload-time"
 msgstr "Gọi KÝ HIỆU vào lúc bỏ tải"
 
-#: lexsup.c:365
+#: lexsup.c:366
 msgid "Force generation of file with .exe suffix"
 msgstr "Ép buộc tạo ra tập tin có hậu tố « .exe »"
 
-#: lexsup.c:367
+#: lexsup.c:368
 msgid "Remove unused sections (on some targets)"
 msgstr "Gỡ bỏ phần không dùng (trên một số đích)"
 
-#: lexsup.c:370
+#: lexsup.c:371
 msgid "Don't remove unused sections (default)"
 msgstr "Đừng gỡ bỏ phần không dùng (mặc định)"
 
-#: lexsup.c:373
+#: lexsup.c:374
 msgid "Set default hash table size close to <NUMBER>"
 msgstr "Lập kích cỡ bảng băm mặc định là gần <SỐ>"
 
-#: lexsup.c:376
+#: lexsup.c:377
 msgid "Print option help"
 msgstr "In ra trợ giúp về tùy chọn"
 
-#: lexsup.c:378
+#: lexsup.c:379
 msgid "Call SYMBOL at load-time"
 msgstr "Gọi KÝ HIỆU vào lúc tải"
 
-#: lexsup.c:380
+#: lexsup.c:381
 msgid "Write a map file"
 msgstr "Ghi tập tin bản đồ"
 
-#: lexsup.c:382
+#: lexsup.c:383
 msgid "Do not define Common storage"
 msgstr "Đừng định nghĩa kho dùng chung"
 
-#: lexsup.c:384
+#: lexsup.c:385
 msgid "Do not demangle symbol names"
 msgstr "Đừng tháo gỡ tên ký hiệu"
 
-#: lexsup.c:386
+#: lexsup.c:387
 msgid "Use less memory and more disk I/O"
 msgstr "Chiếm ít bộ nhớ hơn, và nhiều nhập/xuất đĩa hơn"
 
-#: lexsup.c:388
+#: lexsup.c:389
 msgid "Do not allow unresolved references in object files"
 msgstr "Đừng cho phép tham chiệu chưa tháo gỡ trong tập tin đối tượng"
 
-#: lexsup.c:391
+#: lexsup.c:392
 msgid "Allow unresolved references in shared libaries"
 msgstr "Cho phép tham chiệu chưa tháo gỡ trong thư viên dùng chung"
 
-#: lexsup.c:395
+#: lexsup.c:396
 msgid "Do not allow unresolved references in shared libs"
 msgstr "Đừng cho phép tham chiệu chưa tháo gỡ trong thư viên dùng chung"
 
-#: lexsup.c:399
+#: lexsup.c:400
 msgid "Allow multiple definitions"
 msgstr "Cho phép nhiều lời định nghĩa"
 
-#: lexsup.c:401
+#: lexsup.c:402
 msgid "Disallow undefined version"
 msgstr "Bỏ cho phép phiên bản chưa định nghĩa"
 
-#: lexsup.c:403
+#: lexsup.c:404
 msgid "Create default symbol version"
 msgstr "Tạo phiên bản ký hiệu mặc định"
 
-#: lexsup.c:406
+#: lexsup.c:407
 msgid "Create default symbol version for imported symbols"
 msgstr "Tạo phiên bản ký hiệu mặc định cho ký hiệu đã nhập"
 
-#: lexsup.c:409
+#: lexsup.c:410
 msgid "Don't warn about mismatched input files"
 msgstr "Đừng cảnh báo về tập tin nhập không khớp với nhau"
 
-#: lexsup.c:411
+#: lexsup.c:412
 msgid "Turn off --whole-archive"
 msgstr "Tắt tùy chọn « --whole-archive » (toàn kho)"
 
-#: lexsup.c:413
+#: lexsup.c:414
 msgid "Create an output file even if errors occur"
 msgstr "Tạo tập tin xuất dù gặp lỗi"
 
-#: lexsup.c:418
+#: lexsup.c:419
 msgid ""
 "Only use library directories specified on\n"
 "\t\t\t\tthe command line"
@@ -1582,115 +1572,115 @@ msgstr ""
 "Chỉ dùng thư mục thư viên\n"
 "\tđược ghi rõ trên dòng lệnh"
 
-#: lexsup.c:421
+#: lexsup.c:422
 msgid "Specify target of output file"
 msgstr "Ghi rõ đích của tập tin xuất"
 
-#: lexsup.c:424
+#: lexsup.c:425
 msgid "Ignored for Linux compatibility"
 msgstr "Bị bỏ qua để tương thích với Linux"
 
-#: lexsup.c:427
+#: lexsup.c:428
 msgid "Reduce memory overheads, possibly taking much longer"
 msgstr "Giảm bộ nhớ duy tu, có thể mất rất nhiều thời gian hơn"
 
-#: lexsup.c:430
+#: lexsup.c:431
 msgid "Relax branches on certain targets"
 msgstr "Lơi ra nhánh trên một số đích nào đó"
 
-#: lexsup.c:433
+#: lexsup.c:434
 msgid "Keep only symbols listed in FILE"
 msgstr "Giữ chỉ những ký hiệu được liệt kê trong TẬP TIN"
 
-#: lexsup.c:435
+#: lexsup.c:436
 msgid "Set runtime shared library search path"
 msgstr "Lập đường dẫn tìm kiếm thư viên dùng chung vào lúc chạy"
 
-#: lexsup.c:437
+#: lexsup.c:438
 msgid "Set link time shared library search path"
 msgstr "Lập đường dẫn tìm kiếm thư viên dùng chung vào lúc liên kết"
 
-#: lexsup.c:440
+#: lexsup.c:441
 msgid "Create a shared library"
 msgstr "Tạo thư viên dùng chung"
 
-#: lexsup.c:444
+#: lexsup.c:445
 msgid "Create a position independent executable"
 msgstr "Tạo ứng dụng chạy được không phụ thuộc vào vị trí"
 
-#: lexsup.c:448
+#: lexsup.c:449
 msgid "Sort common symbols by size"
 msgstr "Sắp xếp ký hiệu dùng chung theo kích cỡ"
 
-#: lexsup.c:452
+#: lexsup.c:453
 msgid "name|alignment"
 msgstr "tên|canh_hàng"
 
-#: lexsup.c:453
+#: lexsup.c:454
 msgid "Sort sections by name or maximum alignment"
 msgstr "Sắp xếp phần theo tên hay canh lề tối đa"
 
-#: lexsup.c:455
+#: lexsup.c:456
 msgid "COUNT"
 msgstr "SỐ_ĐẾM"
 
-#: lexsup.c:455
+#: lexsup.c:456
 msgid "How many tags to reserve in .dynamic section"
 msgstr "Số thẻ cần giữ lại trong phần « .dynamic » (động)"
 
-#: lexsup.c:458
+#: lexsup.c:459
 msgid "[=SIZE]"
-msgstr "[=SIZE]"
+msgstr "[=CỠ]"
 
-#: lexsup.c:458
+#: lexsup.c:459
 msgid "Split output sections every SIZE octets"
-msgstr "Chia tách phần xuất tại mỗi CỠ octet"
+msgstr "Chia tách phần xuất tại mỗi CỠ bộ tám"
 
-#: lexsup.c:461
+#: lexsup.c:462
 msgid "[=COUNT]"
 msgstr "[=SỐ_ĐẾM]"
 
-#: lexsup.c:461
+#: lexsup.c:462
 msgid "Split output sections every COUNT relocs"
 msgstr "Chia tách phần xuất tại mỗi SỐ_ĐẾM việc định vị lại"
 
-#: lexsup.c:464
+#: lexsup.c:465
 msgid "Print memory usage statistics"
 msgstr "In ra thống kê cách sử dụng bộ nhớ"
 
-#: lexsup.c:466
+#: lexsup.c:467
 msgid "Display target specific options"
 msgstr "Hiển thị tùy chọn đặc trưng cho đích"
 
-#: lexsup.c:468
+#: lexsup.c:469
 msgid "Do task level linking"
 msgstr "Liên kết trong lớp tác vụ"
 
-#: lexsup.c:470
+#: lexsup.c:471
 msgid "Use same format as native linker"
 msgstr "Dùng cùng khuôn dạng với bộ liên kết sở hữu"
 
-#: lexsup.c:472
+#: lexsup.c:473
 msgid "SECTION=ADDRESS"
 msgstr "PHẦN=ĐỊA CHỈ"
 
-#: lexsup.c:472
+#: lexsup.c:473
 msgid "Set address of named section"
 msgstr "Lập địa chỉ của phần có tên"
 
-#: lexsup.c:475
+#: lexsup.c:476
 msgid "Set address of .bss section"
 msgstr "Lập địa chỉ của phần « .bss »"
 
-#: lexsup.c:477
+#: lexsup.c:478
 msgid "Set address of .data section"
 msgstr "Lập địa chỉ của phần « .data » (dữ liệu)"
 
-#: lexsup.c:479
+#: lexsup.c:480
 msgid "Set address of .text section"
 msgstr "Lập địa chỉ của phần « .text » (văn bản)"
 
-#: lexsup.c:482
+#: lexsup.c:483
 msgid ""
 "How to handle unresolved symbols.  <method> is:\n"
 "\t\t\t\tignore-all, report-all, ignore-in-object-files,\n"
@@ -1703,15 +1693,15 @@ msgstr ""
 " • ignore-in-object-files\tbỏ qua trong tập tin đối tượng\n"
 " • ignore-in-shared-libs\tbỏ qua trong thư viên dùng chung"
 
-#: lexsup.c:486
+#: lexsup.c:487
 msgid "Output lots of information during link"
 msgstr "Xuất nhiều thông tin trong khi liên kết"
 
-#: lexsup.c:490
+#: lexsup.c:491
 msgid "Read version information script"
 msgstr "Đọc tập lệnh thông tin phiên bản"
 
-#: lexsup.c:493
+#: lexsup.c:494
 msgid ""
 "Take export symbols list from .exports, using\n"
 "\t\t\t\tSYMBOL as the version."
@@ -1719,73 +1709,73 @@ msgstr ""
 "Lấy danh sách ký hiệu xuất từ « .exports » (xuất),\n"
 "\t\tvới phiên bản là KÝ HIỆU"
 
-#: lexsup.c:496
+#: lexsup.c:497
 msgid "Warn about duplicate common symbols"
 msgstr "Cảnh báo về ký hiệu dùng chung trùng"
 
-#: lexsup.c:498
+#: lexsup.c:499
 msgid "Warn if global constructors/destructors are seen"
 msgstr "Cảnh báo nếu gặp bộ cấu tạo/phá toàn cục"
 
-#: lexsup.c:501
+#: lexsup.c:502
 msgid "Warn if the multiple GP values are used"
 msgstr "Cảnh báo nếu sử dụng nhiều giá trị GP"
 
-#: lexsup.c:503
+#: lexsup.c:504
 msgid "Warn only once per undefined symbol"
 msgstr "Cảnh báo chỉ một lần về mỗi ký hiệu chưa định nghĩa"
 
-#: lexsup.c:505
+#: lexsup.c:506
 msgid "Warn if start of section changes due to alignment"
 msgstr "Cảnh báo nếu đầu phần thay đổi vì canh lề"
 
-#: lexsup.c:508
+#: lexsup.c:509
 msgid "Warn if shared object has DT_TEXTREL"
 msgstr "Cảnh báo nếu đối tượng dùng chung có « DT_TEXTREL »"
 
-#: lexsup.c:512
+#: lexsup.c:513
 msgid "Report unresolved symbols as warnings"
 msgstr "Thông báo ký hiệu chưa tháo gỡ là cảnh báo"
 
-#: lexsup.c:515
+#: lexsup.c:516
 msgid "Report unresolved symbols as errors"
 msgstr "Thông báo ký hiệu chưa tháo gỡ là lỗi"
 
-#: lexsup.c:517
+#: lexsup.c:518
 msgid "Include all objects from following archives"
 msgstr "Gồm mọi đối tượng từ những kho theo đây"
 
-#: lexsup.c:520
+#: lexsup.c:521
 msgid "Use wrapper functions for SYMBOL"
 msgstr "Sử dụng hàm cuốn cho KÝ HIỆU"
 
-#: lexsup.c:667
+#: lexsup.c:668
 msgid "%P: unrecognized option '%s'\n"
-msgstr "%P: unrecognized option '%s'\n"
+msgstr "%P: không nhận ra tùy chọn « %s »\n"
 
-#: lexsup.c:669
+#: lexsup.c:670
 msgid "%P%F: use the --help option for usage information\n"
-msgstr "%P%F: use the --help option for usage information\n"
+msgstr "%P%F: hãy sử dụng tùy chọn « --help » để xem thông tin về cách sử dụng\n"
 
-#: lexsup.c:687
+#: lexsup.c:688
 msgid "%P%F: unrecognized -a option `%s'\n"
-msgstr "%P%F: unrecognized -a option `%s'\n"
+msgstr "%P%F: không nhận ra tùy chọn kiểu « -a » là « %s »\n"
 
-#: lexsup.c:700
+#: lexsup.c:701
 msgid "%P%F: unrecognized -assert option `%s'\n"
-msgstr "%P%F: unrecognized -assert option `%s'\n"
+msgstr "%P%F: không nhận ra tùy chọn kiểu « -assert » (khẳng định) là « %s »\n"
 
-#: lexsup.c:743
+#: lexsup.c:744
 msgid "%F%P: unknown demangling style `%s'"
-msgstr "%F%Ps:không biết  kiểu dáng tháo gõ (demangle « %s »n"
+msgstr "%F%Ps: không biết kiểu dáng tháo gõ « %s »"
 
-#: lexsup.c:805
+#: lexsup.c:806
 msgid "%P%F: invalid number `%s'\n"
-msgstr "%P%F: invalid number `%s'\n"
+msgstr "%P%F: số không hợp lệ « %s »\n"
 
-#: lexsup.c:897
+#: lexsup.c:898
 msgid "%P%F: bad --unresolved-symbols option: %s\n"
-msgstr "%P%F: tùy chọnb« ad --unresolved-symbo» (ký hiệu chưa tháo gỡ) saiion: %s\n"
+msgstr "%P%F: tùy chọn « --unresolved-symbols » (các ký hiệu chưa tháo gỡ) sai : %s\n"
 
 #. This can happen if the user put "-rpath,a" on the command
 #. line.  (Or something similar.  The comma is important).
@@ -1795,82 +1785,92 @@ msgstr "%P%F: tùy chọnb« ad --unresolved-symbo» (ký hiệu chưa tháo g
 #. an error message here.  We cannot just make this a warning,
 #. increment optind, and continue because getopt is too confused
 #. and will seg-fault the next time around.
-#: lexsup.c:968
+#: lexsup.c:969
 msgid "%P%F: bad -rpath option\n"
 msgstr "%P%F: tùy chọn « -rpath » (đường dẫn r) sai\n"
 
-#: lexsup.c:1080
+#: lexsup.c:1081
 msgid "%P%F: -shared not supported\n"
-msgstr "%P%F: -shared not supported\n"
+msgstr "%P%F: không hỗ trợ tùy chọn « -shared » (dùng chung)\n"
 
-#: lexsup.c:1089
+#: lexsup.c:1090
 msgid "%P%F: -pie not supported\n"
 msgstr "%P%F: không hỗ trợ tùy chọn « -pie » (bánh)\n"
 
-#: lexsup.c:1099
+#: lexsup.c:1100
 msgid "name"
 msgstr "tên"
 
-#: lexsup.c:1101
+#: lexsup.c:1102
 msgid "alignment"
 msgstr "canh lề"
 
-#: lexsup.c:1104
+#: lexsup.c:1105
 msgid "%P%F: invalid section sorting option: %s\n"
-msgstr "%P%F: invalid section sorting option: %s\n"
+msgstr "%P%F: tùy chọn sắp xếp phần không hợp lệ: %s\n"
 
-#: lexsup.c:1130
+#: lexsup.c:1131
 msgid "%P%F: invalid argument to option \"--section-start\"\n"
-msgstr "%P%F: đối số không hợp lệ đối với tùy chọni« alid argument t » (bắt đầu phần)option \"--section-start\"\n"
+msgstr "%P%F: đối số không hợp lệ đối với tùy chọn « --section-start »\n"
 
-#: lexsup.c:1137
+#: lexsup.c:1138
 msgid "%P%F: missing argument(s) to option \"--section-start\"\n"
 msgstr "%P%F: thiếu đối số đối với tùy chọn « --section-start » (bắt đầu phần)\n"
 
-#: lexsup.c:1311
+#: lexsup.c:1312
 msgid "%P%F: may not nest groups (--help for usage)\n"
 msgstr "%P%F: không cho phép lồng nhóm với nhau (« --help » để xem cách sử dụng đúng)\n"
 
-#: lexsup.c:1318
+#: lexsup.c:1319
 msgid "%P%F: group ended before it began (--help for usage)\n"
 msgstr "%P%F: nhóm kết thức trước bắt đầu (« --help » để xem cách sử dụng đúng)\n"
 
-#: lexsup.c:1346
+#: lexsup.c:1347
 msgid "%P%X: --hash-size needs a numeric argument\n"
-msgstr "%P%X: --hash-size needs a numeric argument\n"
+msgstr "%P%X: tùy chọn « --hash-size » (kích cỡ băm) cần thiết đối số thuộc số\n"
 
-#: lexsup.c:1397 lexsup.c:1410
+#: lexsup.c:1398 lexsup.c:1411
 msgid "%P%F: invalid hex number `%s'\n"
-msgstr "%P%F: invalid hex number `%s'\n"
+msgstr "%P%F: số thập lục không hợp lệ « %s »\n"
 
-#: lexsup.c:1445
+#: lexsup.c:1447
 #, c-format
 msgid "Usage: %s [options] file...\n"
 msgstr "Cách sử dụng: %s <tùy_chọn> tập_tin...\n"
 
-#: lexsup.c:1447
+#: lexsup.c:1449
 #, c-format
 msgid "Options:\n"
 msgstr "Tùy chọn:\n"
 
+#: lexsup.c:1527
+#, c-format
+msgid "  @FILE"
+msgstr "  @TẬP_TIN"
+
+#: lexsup.c:1530
+#, c-format
+msgid "Read options from FILE\n"
+msgstr "Đọc các tùy chọn từ TẬP_TIN\n"
+
 #. Note: Various tools (such as libtool) depend upon the
 #. format of the listings below - do not change them.
-#: lexsup.c:1530
+#: lexsup.c:1535
 #, c-format
 msgid "%s: supported targets:"
 msgstr "%s: đích hỗ trợ :"
 
-#: lexsup.c:1538
+#: lexsup.c:1543
 #, c-format
 msgid "%s: supported emulations: "
-msgstr "%s: mô phỏng hỗ trợ :"
+msgstr "%s: mô phỏng hỗ trợ : "
 
-#: lexsup.c:1543
+#: lexsup.c:1548
 #, c-format
 msgid "%s: emulation specific options:\n"
 msgstr "%s: tùy chọn đặc trưng cho mô phỏng:\n"
 
-#: lexsup.c:1547
+#: lexsup.c:1552
 #, c-format
 msgid "Report bugs to %s\n"
 msgstr "Hãy thông báo lỗi nào cho %s\n"
@@ -1884,61 +1884,75 @@ msgstr "%P%F: không biết kiểu khuôn dạng %s\n"
 msgid "%XUnsupported PEI architecture: %s\n"
 msgstr "%XChưa hỗ trợ kiến trúc PEI: %s\n"
 
-#: pe-dll.c:652
+#: pe-dll.c:604
+#, c-format
+msgid "%XCannot export %s: invalid export name\n"
+msgstr "%XKhông thể xuất %s: tên xuất không hợp lệ\n"
+
+#: pe-dll.c:657
 #, c-format
 msgid "%XError, duplicate EXPORT with ordinals: %s (%d vs %d)\n"
 msgstr "%XLỗi: XUẤT trùng với điều thứ tự : %s (%d so với %d)\n"
 
-#: pe-dll.c:659
+#: pe-dll.c:664
 #, c-format
 msgid "Warning, duplicate EXPORT: %s\n"
 msgstr "Cảnh báo, XUẤT trùng: %s\n"
 
-#: pe-dll.c:725
+#: pe-dll.c:751
 #, c-format
 msgid "%XCannot export %s: symbol not defined\n"
 msgstr "%XKhông thể xuất %s: chưa định nghĩa ký hiệu\n"
 
-#: pe-dll.c:731
+#: pe-dll.c:757
 #, c-format
 msgid "%XCannot export %s: symbol wrong type (%d vs %d)\n"
 msgstr "%XKhông thể xuất %s: ký hiệu sai kiểu (%d so với %d)\n"
 
-#: pe-dll.c:738
+#: pe-dll.c:764
 #, c-format
 msgid "%XCannot export %s: symbol not found\n"
 msgstr "%XKhông thể xuất %s: không tìm thấy ký hiệu\n"
 
-#: pe-dll.c:850
+#: pe-dll.c:877
 #, c-format
 msgid "%XError, ordinal used twice: %d (%s vs %s)\n"
 msgstr "%XLỗi, điều thứ tự được dùng hai lần: %d (%s so với %s)\n"
 
-#: pe-dll.c:1172
+#: pe-dll.c:1219
 #, c-format
 msgid "%XError: %d-bit reloc in dll\n"
-msgstr "%xLỗi: định vị lại %d-bit trong DLL\n"
+msgstr "%XLỗi: việc định vị lại %d-bit trong dll\n"
 
-#: pe-dll.c:1300
+#: pe-dll.c:1347
 #, c-format
 msgid "%s: Can't open output def file %s\n"
 msgstr "%s: Không thể mở tập tin xuất def (định nghĩa) %s\n"
 
-#: pe-dll.c:1443
+#: pe-dll.c:1490
 #, c-format
 msgid "; no contents available\n"
 msgstr "; không có nội dung sẵn sàng\n"
 
-#: pe-dll.c:2205
+#: pe-dll.c:2252
 msgid "%C: variable '%T' can't be auto-imported. Please read the documentation for ld's --enable-auto-import for details.\n"
 msgstr "%C: không thể tự động nhập biến « %T ». Hãy đọc tài liệu hướng dẫn về tùy chọn « --enable-auto-import » (bật nhập tự động) của trình ld, để xem chi tiết.\n"
 
-#: pe-dll.c:2235
+#: pe-dll.c:2282
 #, c-format
 msgid "%XCan't open .lib file: %s\n"
 msgstr "%XKhông thể mở tập tin « .lib » (thư viên): %s\n"
 
-#: pe-dll.c:2240
+#: pe-dll.c:2287
 #, c-format
 msgid "Creating library file: %s\n"
 msgstr "Đang tạo tập tin thư viên: %s\n"
+
+#~ msgid "%P%F: out of memory during initialization"
+#~ msgstr "%P%F: hết bộ nhớ trong khi cài đặt"
+
+#~ msgid "%P%F: -static and -shared may not be used together\n"
+#~ msgstr "%P%F: không thể sử dụng cả « -static » (tĩnh) lẫn « -shared » (dùng chung) đều\n"
+
+#~ msgid "%P%X: generated"
+#~ msgstr "%P%X: đã tạo ra"
index 67488ae..63401fe 100644 (file)
@@ -73,7 +73,7 @@ SECTIONS
   .rdata :
   {
     __RDATA_START = .;
-    *(.rdata_4) *(.rdata_2) *(.rdata_1) *(.rdata.*) *(.gnu.linkonce.r.*)
+    *(.rdata_4) *(.rdata_2) *(.rdata_1) *(.rdata.*) *(.gnu.linkonce.r.*) *(.rodata.*)
     __RDATA_END = .;
   } > rom
 
index f968b4c..5f30043 100644 (file)
@@ -1,3 +1,115 @@
+2006-06-12  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       Backport:
+       2006-04-29  H.J. Lu  <hongjiu.lu@intel.com>
+       * ld-elfvers/vers.exp: Xfail vers7a, vers7, vers23a, vers23b,
+       vers23c, vers23d, vers23, vers25a, vers25b1, vers25b2, vers27a,
+       vers27b, vers27c1, vers27c2, vers27d4 and vers27d5 if PIC is
+       required.
+
+2006-06-11  Richard Sandiford  <richard@codesourcery.com>
+
+       * ld-mips-elf/stub-dynsym-1.s,
+       * ld-mips-elf/stub-dynsym-1.ld,
+       * ld-mips-elf/stub-dynsym-1-7fff.d,
+       * ld-mips-elf/stub-dynsym-1-8000.d,
+       * ld-mips-elf/stub-dynsym-1-fff0.d,
+       * ld-mips-elf/stub-dynsym-1-10000.d,
+       * ld-mips-elf/stub-dynsym-1-2fe80.d: New test.
+       * ld-mips-elf/mips-elf.exp: Run it.
+
+2006-06-01  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       Backport:
+       2006-05-23  H.J. Lu  <hongjiu.lu@intel.com>
+       PR ld/2655
+       PR ld/2657
+       * ld-elf/eh1.d: New file.
+       * ld-elf/eh1.s: Likewise.
+       * ld-elf/eh1a.s: Likewise.
+       * ld-elf/eh2.d: Likewise.
+       * ld-elf/eh2a.s: Likewise.
+       * ld-elf/eh3.d: Likewise.
+       * ld-elf/eh3.s: Likewise.
+       * ld-elf/eh3a.s: Likewise.
+
+2006-05-22  Nick Clifton  <nickc@redhat.com>
+
+       * ld-elf/start.s (start): Add this symbol for SH targets.
+       (main): Add this symbol for HPPA targets.
+
+2006-05-17  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       Backport:
+       2006-05-02  H.J. Lu  <hongjiu.lu@intel.com>
+       * ld-cdtest/cdtest-foo.cc (Foo::Foo): Add const to char *.
+       * ld-cdtest/cdtest-foo.h (Foo::Foo): Likewise.
+       * ld-srec/sr3.cc (Foo::Foo): Likewise.
+
+2006-05-17  Thiemo Seufer  <ths@mips.com>
+
+       * ld-elfweak/size2.d, ld-elfweak/size2a.s, ld-elfweak/size2b.s:
+       Add __start as entry symbol.
+
+2006-05-16  Thiemo Seufer  <ths@mips.com>
+
+       * ld-elf/orphan.ld: Add placement for MIPS .reginfo section.
+
+2006-05-10  Thiemo Seufer  <ths@debian.org>
+
+       * ld-elf/sec64k.exp: Extend for MIPS ELF.
+
+2006-05-10  Alan Modra  <amodra@bigpond.net.au>
+
+       * ld-powerpc/tlsexetoc.r: Update for correction to tls optimization.
+       * ld-powerpc/tlsexetoc.g: Likewise.
+
+2006-05-02  Paul Brook  <paul@codesourcery.com>
+
+       * ld-arm/arm-elf.exp: Add thumb-rel32.
+       * ld-arm/thumb-rel32.d: New test.
+       * ld-arm/thumb-rel32.s: New test.
+
+2006-04-05  Richard Sandiford  <richard@codesourcery.com>
+
+       * ld-sparc/vxworks1.dd, ld-sparc/vxworks1.ld, ld-sparc/vxworks1-lib.dd,
+       * ld-sparc/vxworks1-lib.nd, ld-sparc/vxworks1-lib.rd,
+       * ld-sparc/vxworks1-lib.s, ld-sparc/vxworks1.rd, ld-sparc/vxworks1.s,
+       * ld-sparc/vxworks1-static.d, ld-sparc/vxworks2.s,
+       * ld-sparc/vxworks2.sd, ld-sparc/vxworks2-static.sd: New tests.
+       * ld-sparc/sparc.exp: Run them.
+
+2006-04-05  Ben Elliston  <bje@au.ibm.com>
+
+       * lib/ld-lib.exp: Comment cleanups.
+
+2006-03-27  Richard Sandiford  <richard@codesourcery.com>
+
+       * ld-mips-elf/tls-hidden3a.s, ld-mips-elf/tls-hidden3b.s,
+       * ld-mips-elf/tls-hidden3.d, ld-mips-elf/tls-hidden3.got,
+       * ld-mips-elf/tls-hidden3.ld, ld-mips-elf/tls-hidden3.r,
+       * ld-mips-elf/tls-hidden4a.s, ld-mips-elf/tls-hidden4b.s,
+       * ld-mips-elf/tls-hidden4.got, ld-mips-elf/tls-hidden4.r: New tests.
+       * ld-mips-elf/mips-elf.exp: Run them.
+
+2006-03-25  Richard Sandiford  <richard@codesourcery.com>
+
+       * ld-m68k/merge-error-1a.s, ld-m68k/merge-error-1b.s,
+       * ld-m68k/merge-error-1a.d, ld-m68k/merge-error-1b.d,
+       * ld-m68k/merge-error-1c.d, ld-m68k/merge-error-1d.d,
+       * ld-m68k/merge-error-1e.d, ld-m68k/merge-ok-1a.d,
+       * ld-m68k/merge-ok-1b.d: New tests.
+       * ld-m68k/m68k.exp: Run them.
+
+2006-03-22  Richard Sandiford  <richard@codesourcery.com>
+
+       * ld-mips/vxworks1.dd, ld-mips/vxworks1.ld, ld-mips/vxworks1-lib.dd,
+       * ld-mips/vxworks1-lib.nd, ld-mips/vxworks1-lib.rd,
+       * ld-mips/vxworks1-lib.s, ld-mips/vxworks1.rd, ld-mips/vxworks1.s,
+       * ld-mips/vxworks1-static.d, ld-mips/vxworks2.s, ld-mips/vxworks2.sd,
+       * ld-mips/vxworks2-static.sd: New tests.
+       * ld-mips/mips-elf.exp: Run them.
+
 2006-03-17  Alexandre Oliva  <aoliva@redhat.com>
 
        * ld-powerpc/tls32.s: Verify that +32768 @plt addend is
index c7d41a9..db76b02 100644 (file)
@@ -38,7 +38,7 @@ Foo::Foo ()
 #endif
 }
 
-Foo::Foo (char* msg)
+Foo::Foo (const char* msg)
 {
     i = ++foos;
     strncpy( message, msg, len);
index 0afe52a..f36efb7 100644 (file)
@@ -17,7 +17,7 @@ public:
     static void init_foo ();
     static int nb_foos() { return foos; }
     Foo();
-    Foo( char* message);
+    Foo(const char* message);
     Foo(const Foo&);
     Foo & operator= (const Foo&);
     ~Foo ();
index d7a5b15..897955b 100644 (file)
@@ -22,11 +22,11 @@ The section .eh_frame contains:
   DW_CFA_nop
   DW_CFA_nop
 
-00000018 0000001c 0000001c FDE cie=00000000 pc=00400078..00400078
-  DW_CFA_advance_loc: 0 to 00400078
+00000018 0000001c 0000001c FDE cie=00000000 pc=004000b0..004000b0
+  DW_CFA_advance_loc: 0 to 004000b0
   DW_CFA_def_cfa_offset: 16
   DW_CFA_offset: r6 at cfa-16
-  DW_CFA_advance_loc: 0 to 00400078
+  DW_CFA_advance_loc: 0 to 004000b0
   DW_CFA_def_cfa_reg: r6
 
 00000038 ZERO terminator
index c1ef399..6f4f2c5 100644 (file)
@@ -22,11 +22,11 @@ The section .eh_frame contains:
   DW_CFA_nop
   DW_CFA_nop
 
-00000018 0000001c 0000001c FDE cie=00000000 pc=00400078..00400078
-  DW_CFA_advance_loc: 0 to 00400078
+00000018 0000001c 0000001c FDE cie=00000000 pc=004000b0..004000b0
+  DW_CFA_advance_loc: 0 to 004000b0
   DW_CFA_def_cfa_offset: 16
   DW_CFA_offset: r6 at cfa-16
-  DW_CFA_advance_loc: 0 to 00400078
+  DW_CFA_advance_loc: 0 to 004000b0
   DW_CFA_def_cfa_reg: r6
 
 00000038 ZERO terminator
index f1d2a52..492c877 100644 (file)
@@ -22,11 +22,11 @@ The section .eh_frame contains:
   DW_CFA_nop
   DW_CFA_nop
 
-00000018 0000001c 0000001c FDE cie=00000000 pc=00400078..00400078
-  DW_CFA_advance_loc: 0 to 00400078
+00000018 0000001c 0000001c FDE cie=00000000 pc=004000b0..004000b0
+  DW_CFA_advance_loc: 0 to 004000b0
   DW_CFA_def_cfa_offset: 16
   DW_CFA_offset: r6 at cfa-16
-  DW_CFA_advance_loc: 0 to 00400078
+  DW_CFA_advance_loc: 0 to 004000b0
   DW_CFA_def_cfa_reg: r6
 
 00000038 ZERO terminator
index e3d7303..8ce83f1 100644 (file)
@@ -4,4 +4,5 @@ SECTIONS
   .data : { *(.data) }
   .bss : { *(.bss) *(COMMON) }
   .note : { *(.note) }
+  .reginfo : { *(.reginfo) }
 }
index b4a88a0..bd66c1c 100644 (file)
@@ -51,7 +51,9 @@ for { set i 0 } { $i < $max_sec / $secs_per_file } { incr i } {
 
     if { $i == 0 } {
        puts $ofd " .global _start"
+       puts $ofd " .global __start"
        puts $ofd "_start:"
+       puts $ofd "__start:"
        puts $ofd " .global foo_0"
        puts $ofd "foo_0: .long 0"
     }
@@ -101,7 +103,7 @@ puts $ofd "  \\\[65536\\\] (.rel\[a\]?)?\\.foo\\.\[0-9\]+ .*"
 puts $ofd "#..."
 puts $ofd " 680..: 0+\[ \]+0\[ \]+SECTION\[ \]+LOCAL\[ \]+DEFAULT\[ \]+68... "
 puts $ofd "#..."
-puts $ofd " 680..: 0+4\[ \]+0\[ \]+NOTYPE\[ \]+LOCAL\[ \]+DEFAULT\[ \]+2 bar_1"
+puts $ofd " 680..: 0+4\[ \]+0\[ \]+NOTYPE\[ \]+LOCAL\[ \]+DEFAULT\[ \]+\[23\] bar_1"
 puts $ofd "#..."
 puts $ofd ".* bar_34000"
 puts $ofd "#..."
index 86fc17c..9cbf231 100644 (file)
@@ -3,4 +3,8 @@
 _start:
        .global __start
 __start:
+       .global start   /* Used by SH targets.  */
+start:
+       .global main    /* Used by HPPA targets.  */
+main:
        .long 0
index 3426137..6bb77a7 100644 (file)
@@ -830,9 +830,14 @@ build_exec "vers6" vers6.c vers6 "" vers1.so vers6.ver vers6.dsym vers6.sym
 # Another test to verify that something made local via 'local' is truly not
 # accessible.
 #
-build_vers_lib_no_pic "vers7a" vers7a.c vers7a "" vers7.map vers7a.ver vers7a.dsym vers7a.sym
+if [string match "yes" $pic] then {
+    xfail "vers7a"
+    xfail "vers7"
+} else {
+    build_vers_lib_no_pic "vers7a" vers7a.c vers7a "" vers7.map vers7a.ver vers7a.dsym vers7a.sym
 
-test_ldfail "vers7" "" vers7.c vers7 vers7a.so "" "undefined reference to hide_a"
+    test_ldfail "vers7" "" vers7.c vers7 vers7a.so "" "undefined reference to hide_a"
+}
 
 
 #
@@ -906,11 +911,19 @@ build_vers_lib_pic "vers22b" vers22b.c vers22b "" vers22.map vers22b.ver vers22b
 build_vers_lib_pic "vers22" vers22.c vers22 "vers22a.so vers22b.so" "" vers22.ver vers22.dsym ""
 
 # Test versioned definitions in different files.
-build_vers_lib_no_pic "vers23a" vers23a.c vers23a "" vers23a.map vers23a.ver vers23a.dsym vers23a.sym
-build_vers_lib_no_pic "vers23b" vers23b.c vers23b "" vers23b.map vers23b.ver vers23b.dsym ""
-build_vers_lib_no_pic "vers23c" vers23b.c vers23c "vers23a.so" vers23b.map vers23c.ver vers23b.dsym ""
-build_exec "vers23d" vers23.c vers23d "tmpdir/vers23a.so tmpdir/vers23c.so" "" vers23.ver vers23d.dsym ""
-build_exec "vers23" vers23.c vers23 "tmpdir/vers23a.so tmpdir/vers23b.o tmpdir/vers23b.so" "" vers23.ver vers23.dsym ""
+if [string match "yes" $pic] then {
+    xfail "vers23a" 
+    xfail "vers23b"
+    xfail "vers23c"
+    xfail "vers23d"
+    xfail "vers23"
+} else {
+    build_vers_lib_no_pic "vers23a" vers23a.c vers23a "" vers23a.map vers23a.ver vers23a.dsym vers23a.sym
+    build_vers_lib_no_pic "vers23b" vers23b.c vers23b "" vers23b.map vers23b.ver vers23b.dsym ""
+    build_vers_lib_no_pic "vers23c" vers23b.c vers23c "vers23a.so" vers23b.map vers23c.ver vers23b.dsym ""
+    build_exec "vers23d" vers23.c vers23d "tmpdir/vers23a.so tmpdir/vers23c.so" "" vers23.ver vers23d.dsym ""
+    build_exec "vers23" vers23.c vers23 "tmpdir/vers23a.so tmpdir/vers23b.o tmpdir/vers23b.so" "" vers23.ver vers23.dsym ""
+}
 
 # Test .symver x,x@VERS.0
 set as_pic_flags ""
@@ -931,9 +944,16 @@ run_ld_link_tests [list "\"vers24c\"
                         \"libvers24c.so\" \"-fpic\""]
 
 # Test versioned definition vs. normal definition in different files.
-build_vers_lib_no_pic "vers25a" vers25a.c vers25a "" vers25a.map vers25a.ver vers25a.dsym ""
-build_vers_lib_no_pic "vers25b1" vers25b.c vers25b1 "vers25a.o vers25a.so" "" vers25b.ver vers25b.dsym ""
-build_vers_lib_no_pic "vers25b2" vers25b.c vers25b2 "vers25a.so vers25a.o" "" vers25b.ver vers25b.dsym ""
+if [string match "yes" $pic] then {
+    xfail "vers25a"
+    xfail "vers25b1"
+    xfail "vers25b2"
+} else {
+    build_vers_lib_no_pic "vers25a" vers25a.c vers25a "" vers25a.map vers25a.ver vers25a.dsym ""
+    build_vers_lib_no_pic "vers25b1" vers25b.c vers25b1 "vers25a.o vers25a.so" "" vers25b.ver vers25b.dsym ""
+    build_vers_lib_no_pic "vers25b2" vers25b.c vers25b2 "vers25a.so vers25a.o" "" vers25b.ver vers25b.dsym ""
+}
+
 build_vers_lib_pic "vers26a" vers26a.c vers26a "" vers26a.map vers26a.ver vers26a.dsym ""
 build_vers_lib_pic "vers26b1" vers26b.c vers26b1 "" "" vers26b.ver vers26b.dsym ""
 build_vers_lib_pic "vers26b2" vers26b.c vers26b2 "vers26a.so vers26b1.so vers26a.o" "" vers26b.ver vers26b.dsym ""
@@ -944,15 +964,27 @@ if [string match "yes" $pic] then {
 }
 
 # Test versioned definition vs. hidden definition in different files.
-build_vers_lib_no_pic "vers27a" vers27a.c vers27a "" vers27a.map vers27a.ver vers27a.dsym ""
-build_vers_lib_no_pic "vers27b" vers27b.c vers27b "" "" vers27b.ver vers27b.dsym ""
-build_vers_lib_no_pic "vers27c1" vers27c.c vers27c1 "vers27b.o vers27a.so" "" vers27c.ver vers27c.dsym ""
-build_vers_lib_no_pic "vers27c2" vers27c.c vers27c2 "vers27a.so vers27b.o" "" vers27c.ver vers27c.dsym ""
-build_vers_lib_pic "vers27d1" vers27d1.c vers27d1 "" vers27a.map vers27d.ver vers27d.dsym vers27d.sym
-build_vers_lib_pic "vers27d2" vers27d2.c vers27d2 "" "" vers27b.ver vers27b.dsym ""
-build_executable "vers27d3" vers27d3.c vers27d3 "vers27b.o vers27d2.so vers27d1.so" "" vers27b.ver vers27b.dsym ""
-build_vers_lib_pic "vers27d4" vers27d2.c vers27d4 "vers27a.so" "" vers27d4.ver vers27d4.dsym ""
-build_executable "vers27d5" vers27d3.c vers27d5 "vers27d4.so vers27b.o vers27a.so" "" vers27b.ver vers27b.dsym ""
+if [string match "yes" $pic] then {
+    xfail "vers27a"
+    xfail "vers27b"
+    xfail "vers27c1"
+    xfail "vers27c2"
+    xfail "vers27d1"
+    xfail "vers27d2"
+    xfail "vers27d3"
+    xfail "vers27d4"
+    xfail "vers27d5"
+} else {
+    build_vers_lib_no_pic "vers27a" vers27a.c vers27a "" vers27a.map vers27a.ver vers27a.dsym ""
+    build_vers_lib_no_pic "vers27b" vers27b.c vers27b "" "" vers27b.ver vers27b.dsym ""
+    build_vers_lib_no_pic "vers27c1" vers27c.c vers27c1 "vers27b.o vers27a.so" "" vers27c.ver vers27c.dsym ""
+    build_vers_lib_no_pic "vers27c2" vers27c.c vers27c2 "vers27a.so vers27b.o" "" vers27c.ver vers27c.dsym ""
+    build_vers_lib_pic "vers27d1" vers27d1.c vers27d1 "" vers27a.map vers27d.ver vers27d.dsym vers27d.sym
+   build_vers_lib_pic "vers27d2" vers27d2.c vers27d2 "" "" vers27b.ver vers27b.dsym ""
+    build_executable "vers27d3" vers27d3.c vers27d3 "vers27b.o vers27d2.so vers27d1.so" "" vers27b.ver vers27b.dsym ""
+    build_vers_lib_pic "vers27d4" vers27d2.c vers27d4 "vers27a.so" "" vers27d4.ver vers27d4.dsym ""
+    build_executable "vers27d5" vers27d3.c vers27d5 "vers27d4.so vers27b.o vers27a.so" "" vers27b.ver vers27b.dsym ""
+}
 
 # Test weak versioned definition vs. strong definition in different
 # files.
index 3000512..4468dda 100644 (file)
@@ -4,7 +4,7 @@
 #readelf: -s
 Symbol table '.symtab' contains .* entries:
 #...
-    .*: [0-9a-f]* +1 +FUNC +GLOBAL +DEFAULT +[0-9] +_start
+    .*: [0-9a-f]* +1 +FUNC +GLOBAL +DEFAULT +[0-9] +__?start
 #...
     .*: [0-9a-f]* +1 +FUNC +WEAK +DEFAULT +[0-9] +foo
 #...
index 66b6d17..c9ad914 100644 (file)
@@ -1,9 +1,13 @@
        .text
        .global _start
+       .global __start
        .type _start, "function"
+       .type __start, "function"
 _start:
+__start:
        .byte 0
        .size _start, 1
+       .size __start, 1
 
        .weak foo
        .type foo, "function"
index 27b89db..946c838 100644 (file)
@@ -1,10 +1,14 @@
        .text
        .weak _start
+       .weak __start
        .type _start, "function"
+       .type __start, "function"
 _start:
+__start:
        .byte 0
        .byte 0
        .size _start, 2
+       .size __start, 2
 
        .weak foo
        .type foo, "function"
index aac3418..b5ddaef 100644 (file)
 # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
 #
 
+if {[istarget "mips*-*-vxworks"]} {
+    set mipsvxtests {
+       {"VxWorks shared library test 1" "-shared -Tvxworks1.ld"
+        "-mips2" {vxworks1-lib.s}
+        {{readelf --relocs vxworks1-lib.rd} {objdump -dr vxworks1-lib.dd}
+         {readelf --symbols vxworks1-lib.nd}}
+        "libvxworks1.so"}
+       {"VxWorks executable test 1 (dynamic)" \
+        "tmpdir/libvxworks1.so -Tvxworks1.ld -q --force-dynamic"
+        "-mips2" {vxworks1.s}
+        {{readelf --relocs vxworks1.rd} {objdump -dr vxworks1.dd}}
+        "vxworks1"}
+       {"VxWorks executable test 2 (dynamic)" \
+        "-Tvxworks1.ld -q --force-dynamic"
+        "-mips2" {vxworks2.s}
+        {{readelf --segments vxworks2.sd}}
+        "vxworks2"}
+       {"VxWorks executable test 2 (static)"
+        "-Tvxworks1.ld"
+        "-mips2" {vxworks2.s}
+        {{readelf --segments vxworks2-static.sd}}
+        "vxworks2"}
+    }
+    run_ld_link_tests $mipsvxtests
+    run_dump_test "vxworks1-static"
+    return
+}
+
 if {![istarget mips*-*-*] || ![is_elf_format]} {
     return
 }
@@ -109,6 +137,33 @@ if $has_newabi {
     run_dump_test "emit-relocs-1"
 }
 
+if {[istarget mips*-*-linux*]} {
+     # The number of symbols that are always included in the symbol table
+     # for these tests.  The 5 are:
+     #
+     #     the null symbol entry
+     #     the .MIPS.stubs section symbol
+     #     the .text section symbol
+     #     _gp
+     #     _GLOBAL_OFFSET_TABLE_
+     set base_syms 5
+     foreach dynsym { 7fff 8000 fff0 10000 2fe80 } {
+        run_ld_link_tests \
+            [list [list \
+                       "Stub for dynsym 0x$dynsym" \
+                       "-shared -melf32btsmip -T stub-dynsym-1.ld" \
+                       [concat \
+                            "-EB -march=mips1 -32 -KPIC" \
+                            "--defsym base_syms=$base_syms" \
+                            "--defsym dynsym=0x$dynsym"] \
+                       [list "stub-dynsym-1.s"] \
+                       [list [list \
+                                  "objdump" "-dz" \
+                                  "stub-dynsym-1-$dynsym.d"]] \
+                       "stub-dynsym-1-$dynsym"]]
+     }
+ }
+
 # For tests which may involve multiple files, use run_ld_link_tests.
 
 # List contains test-items with 3 items followed by 2 lists:
@@ -171,6 +226,17 @@ set mips_tls_tests {
      "-EB -march=mips1 -32 -KPIC" {tls-hidden2a.s tls-hidden2b.s}
      {{objdump -drj.text tls-hidden2.d} {objdump -sj.got tls-hidden2-got.d}}
      "tls-hidden2.so"}
+    {"Shared library with TLS and hidden symbols (3)"
+     "-shared -melf32btsmip -T tls-hidden3.ld"
+     "-EB -march=mips2 -32 -KPIC" {tls-hidden3a.s tls-hidden3b.s}
+     {{objdump -dj.text tls-hidden3.d} {objdump -sj.got tls-hidden3.got}
+      {readelf --relocs tls-hidden3.r}}
+     "tls-hidden3.so"}
+    {"Shared library with TLS and hidden symbols (4)"
+     "-shared -melf32btsmip -T tls-hidden3.ld"
+     "-EB -march=mips2 -32 -KPIC" {tls-hidden4a.s tls-hidden4b.s}
+     {{objdump -sj.got tls-hidden4.got} {readelf --relocs tls-hidden4.r}}
+     "tls-hidden4.so"}
 }
 
 if {[istarget mips*-*-linux*]} {
index 29a166d..7172bb7 100644 (file)
@@ -6,21 +6,21 @@
 
 Dynamic section at offset 0xb4 contains 18 entries:
   Tag        Type                         Name/Value
- 0x00000004 \(HASH\)                       0x16c
- 0x00000005 \(STRTAB\)                     0x30c
- 0x00000006 \(SYMTAB\)                     0x1fc
- 0x0000000a \(STRSZ\)                      84 \(bytes\)
+ 0x00000004 \(HASH\)                       0x[0-9a-f]*
+ 0x00000005 \(STRTAB\)                     0x[0-9a-f]*
+ 0x00000006 \(SYMTAB\)                     0x[0-9a-f]*
+ 0x0000000a \(STRSZ\)                      [0-9]* \(bytes\)
  0x0000000b \(SYMENT\)                     16 \(bytes\)
  0x00000015 \(DEBUG\)                      0x0
- 0x00000003 \(PLTGOT\)                     0x1003e0
- 0x00000011 \(REL\)                        0x360
+ 0x00000003 \(PLTGOT\)                     0x[0-9a-f]*
+ 0x00000011 \(REL\)                        0x[0-9a-f]*
  0x00000012 \(RELSZ\)                      8 \(bytes\)
  0x00000013 \(RELENT\)                     8 \(bytes\)
  0x70000001 \(MIPS_RLD_VERSION\)           1
  0x70000005 \(MIPS_FLAGS\)                 NOTPOT
  0x70000006 \(MIPS_BASE_ADDRESS\)          0
- 0x7000000a \(MIPS_LOCAL_GOTNO\)           7
- 0x70000011 \(MIPS_SYMTABNO\)              17
- 0x70000012 \(MIPS_UNREFEXTNO\)            12
- 0x70000013 \(MIPS_GOTSYM\)                0x11
+ 0x7000000a \(MIPS_LOCAL_GOTNO\)           [0-9]*
+ 0x70000011 \(MIPS_SYMTABNO\)              [0-9]*
+ 0x70000012 \(MIPS_UNREFEXTNO\)            [0-9]*
+ 0x70000013 \(MIPS_GOTSYM\)                0x[0-9a-f]*
  0x00000000 \(NULL\)                       0x0
index 00dc0fe..06be9d1 100644 (file)
@@ -7,7 +7,7 @@
 .*: +file format elf64-powerpc
 
 Contents of section \.got:
-.* 00000000 10018558 00000000 00000000  .*
+.* 00000000 10018570 00000000 00000000  .*
 .* 00000000 00000000 00000000 00000000  .*
 .* 00000000 00000000 00000000 00000001  .*
 .* 00000000 00000000 00000000 00000001  .*
index d6664cd..98eda7e 100644 (file)
@@ -51,9 +51,10 @@ Program Headers:
  +04 +\.dynamic 
  +05 +\.tdata \.tbss 
 
-Relocation section '\.rela\.dyn' at offset .* contains 2 entries:
+Relocation section '\.rela\.dyn' at offset .* contains 3 entries:
  +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
-[0-9a-f ]+R_PPC64_TPREL64 +0+ gd \+ 0
+[0-9a-f ]+R_PPC64_DTPMOD64 +0+ gd \+ 0
+[0-9a-f ]+R_PPC64_DTPREL64 +0+ gd \+ 0
 [0-9a-f ]+R_PPC64_DTPMOD64 +0+ ld \+ 0
 
 Relocation section '\.rela\.plt' at offset .* contains 1 entries:
index aa4c869..6e7e95c 100644 (file)
 # Test SPARC linking; all types of relocs.  This tests the assembler and
 # tools like objdump as well as the linker.
 
+if {[istarget "sparc-*-vxworks"]} {
+    set sparcvxworkstests {
+       {"VxWorks shared library test 1" "-shared -Tvxworks1.ld"
+        "-KPIC" {vxworks1-lib.s}
+        {{readelf --relocs vxworks1-lib.rd} {objdump -dr vxworks1-lib.dd}
+         {readelf --symbols vxworks1-lib.nd}}
+        "libvxworks1.so"}
+       {"VxWorks executable test 1 (dynamic)" \
+        "tmpdir/libvxworks1.so -Tvxworks1.ld -q --force-dynamic"
+        "" {vxworks1.s}
+        {{readelf --relocs vxworks1.rd} {objdump -dr vxworks1.dd}}
+        "vxworks1"}
+       {"VxWorks executable test 2 (dynamic)" \
+        "-Tvxworks1.ld -q --force-dynamic"
+        "" {vxworks2.s}
+        {{readelf --segments vxworks2.sd}}
+        "vxworks2"}
+       {"VxWorks executable test 2 (static)"
+        "-Tvxworks1.ld"
+        "" {vxworks2.s}
+        {{readelf --segments vxworks2-static.sd}}
+        "vxworks2"}
+    }
+    run_ld_link_tests $sparcvxworkstests
+    run_dump_test "vxworks1-static"
+}
+
 if { !([istarget "sparc*-*-elf*"]
        || [istarget "sparc*-sun-solaris*"]
        || ([istarget "sparc*-*-linux*"]
index 283245d..0b5fa7e 100644 (file)
@@ -11,7 +11,7 @@ public:
     static void init_foo ();
     static int nb_foos() { return foos; }
     Foo();
-    Foo( char* message);
+    Foo(const char* message);
     Foo(const Foo&);
     Foo & operator= (const Foo&);
     ~Foo ();
@@ -93,7 +93,7 @@ Foo::Foo ()
   i = ++foos;
 }
 
-Foo::Foo (char*)
+Foo::Foo (const char*)
 {
   i = ++foos;
 }
index 2cf6dab..a0e734e 100644 (file)
@@ -1,6 +1,6 @@
 # Support routines for LD testsuite.
 #   Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-#    2004, 2005 Free Software Foundation, Inc.
+#    2004, 2005, 2006 Free Software Foundation, Inc.
 #
 # This file is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
-#
-#
-# default_ld_version
-#      extract and print the version number of ld
+
+# Extract and print the version number of ld.
 #
 proc default_ld_version { ld } {
     global host_triplet
@@ -36,9 +34,7 @@ proc default_ld_version { ld } {
     }
 }
 
-#
-# default_ld_relocate
-#      link an object using relocation
+# Link an object using relocation.
 #
 proc default_ld_relocate { ld target objects } {
     global HOSTING_EMU
@@ -62,7 +58,7 @@ proc default_ld_relocate { ld target objects } {
 }
 
 # Check to see if ld is being invoked with a non-endian output format
-
+#
 proc is_endian_output_format { object_flags } {
 
     if {[string match "*-oformat binary*" $object_flags] ||      \
@@ -86,7 +82,7 @@ proc is_endian_output_format { object_flags } {
 # the site.exp file will include the switch "-mbig-endian"
 # (rather than "big-endian") which is not detected by proc
 # process_multilib_options.
-
+#
 proc big_or_little_endian {} {
 
     if [board_info [target_info name] exists multilib_flags] {
@@ -110,9 +106,7 @@ proc big_or_little_endian {} {
     return $flags
 }
 
-#
-# default_ld_link
-#      link a program using ld
+# Link a program using ld.
 #
 proc default_ld_link { ld target objects } {
     global HOSTING_EMU
@@ -147,9 +141,7 @@ proc default_ld_link { ld target objects } {
     }
 }
 
-#
-# default_ld_simple_link
-#      link a program using ld, without including any libraries
+# Link a program using ld, without including any libraries.
 #
 proc default_ld_simple_link { ld target objects } {
     global host_triplet
@@ -197,9 +189,7 @@ proc default_ld_simple_link { ld target objects } {
     }
 }
 
-#
-# default_ld_compile
-#      compile an object using cc
+# Compile an object using cc.
 #
 proc default_ld_compile { cc source object } {
     global CFLAGS
@@ -272,9 +262,7 @@ proc default_ld_compile { cc source object } {
     }
 }
 
-#
-# default_ld_assemble
-#      assemble a file
+# Assemble a file.
 #
 proc default_ld_assemble { as source object } {
     global ASFLAGS
@@ -302,9 +290,7 @@ proc default_ld_assemble { as source object } {
     }
 }
 
-#
-# default_ld_nm
-#      run nm on a file, putting the result in the array nm_output
+# Run nm on a file, putting the result in the array nm_output.
 #
 proc default_ld_nm { nm nmflags object } {
     global NMFLAGS
@@ -355,9 +341,7 @@ proc default_ld_nm { nm nmflags object } {
     }
 }
 
-#
-# is_elf_format
-#      true if the object format is known to be ELF
+# True if the object format is known to be ELF.
 #
 proc is_elf_format {} {
     if { ![istarget *-*-sysv4*] \
@@ -393,9 +377,8 @@ proc is_elf_format {} {
     return 1
 }
 
+# True if the object format is known to be 64-bit ELF.
 #
-# is_elf64
-#      true if the object format is known to be 64bit ELF
 proc is_elf64 { binary_file } {
     global READELF
     global READELFFLAGS
@@ -419,9 +402,8 @@ proc is_elf64 { binary_file } {
     return 0
 }
 
+# True if the object format is known to be a.out.
 #
-# is_aout_format
-#      true if the object format is known to be aout
 proc is_aout_format {} {
     if { [istarget *-*-*\[ab\]out*] \
             || [istarget *-*-linux*oldld*] \
@@ -449,9 +431,7 @@ proc is_aout_format {} {
     return 0
 }
 
-#
-# is_pecoff_format
-#      true if the object format is known to be PECOFF
+# True if the object format is known to be PE COFF.
 #
 proc is_pecoff_format {} {
     if { ![istarget *-*-mingw32*] \
@@ -463,11 +443,9 @@ proc is_pecoff_format {} {
     return 1
 }
 
-#
-# simple_diff
-#      compares two files line-by-line
-#      returns differences if exist
-#      returns null if file(s) cannot be opened
+# Compares two files line-by-line.
+#   Returns differences if exist.
+#   Returns null if file(s) cannot be opened.
 #
 proc simple_diff { file_1 file_2 } {
     global target
@@ -630,7 +608,7 @@ proc simple_diff { file_1 file_2 } {
 # `regexp_diff' to compare the output of the dumping tool against the
 # regexps in FILE.d.  `regexp_diff' is defined later in this file; see
 # further comments there.
-
+#
 proc run_dump_test { name } {
     global subdir srcdir
     global OBJDUMP NM AS OBJCOPY READELF LD
@@ -851,7 +829,7 @@ proc run_dump_test { name } {
            # redirected, exec *always* returns failure, regardless of the
            # program exit code.  Thankfully, we can retrieve the true
            # return status from a special variable.  Redirection would
-           # cause a tcl-specific message to be appended, and we'd rather
+           # cause a Tcl-specific message to be appended, and we'd rather
            # not deal with that if we can help it.
            global errorCode
            if { [lindex $errorCode 0] == "NONE" } {
@@ -1099,12 +1077,12 @@ proc file_contents { filename } {
 # 0:name 1:ld options 2:assembler options
 # 3:filenames of assembler files 4: action and options. 5: name of output file
 # 6:compiler flags (optional)
-
+#
 # Actions:
 # objdump: Apply objdump options on result.  Compare with regex (last arg).
 # nm: Apply nm options on result.  Compare with regex (last arg).
 # readelf: Apply readelf options on result.  Compare with regex (last arg).
-
+#
 proc run_ld_link_tests { ldtests } {
     global ld
     global as
index 68f6f38..fb328da 100644 (file)
@@ -1,3 +1,51 @@
+2006-03-29  Jim Blandy  <jimb@codesourcery.com>
+
+       * pex-common.c (pex_input_file, pex_input_pipe): New functions.
+       (pex_init_common): Initialize obj->input_file.
+       (pex_run): Close any file opened by pex_input_file.
+       * pexecute.txh (pex_input_file, pex_input_pipe): New docs.
+       * pex-common.h (struct pex_obj): New field input_file.
+       (struct pex_funcs): New function ptr fdopenw.
+       * pex-unix.c (pex_unix_fdopenw): New function.
+       (funcs): List it as our fdopenw function.
+       * pex-win32.c (pex_win32_fdopenw): New function.
+       (funcs): List it as our fdopenw function.
+       * pex-djgpp.c (funcs): Leave fdopenw null.
+       * pex-msdos (funcs): Same.
+       * functions.texi: Regenerated.
+
+2006-04-10  Jim Blandy  <jimb@codesourcery.com>
+
+       * pex-common.c (temp_file): New function, containing guts of
+       pex-style temporary file name generation.
+       (pex_run): Use it.
+
+2006-04-06  Carlos O'Donell  <carlos@codesourcery.com>
+
+       * Makefile.in: Add install-html, install-html-am, and
+       install-html-recursive targets. Define mkdir_p and 
+       NORMAL_INSTALL. 
+       * configure.ac: AC_SUBST datarootdir, docdir, htmldir.
+       * configure: Regenerate.
+       * testsuite/Makefile.in: Add install-html and html targets.
+
+2006-03-31  Mark Mitchell  <mark@codesourcery.com>
+
+       * pex-win32.c (<errno.h>): Include.
+       (fix_argv): Remove.
+       (argv_to_cmdline): New function.
+       (std_suffixes): New variable.
+       (no_suffixes): Likewise.
+       (find_executable): New function.
+       (win32_spawn): Likewise.
+       (spawn_script): Use win32_spawn instead of _spawnv[p].
+       (pex_win32_exec_child): Replace MSVCRT calls with Win32 API calls.
+       (pex_win32_wait): Likewise.
+
+2006-03-24  Jim Blandy  <jimb@codesourcery.com>
+
+       * pex-common.c (pex_run): Simplify output name handling.
+
 2006-03-12  Jim Blandy  <jimb@red-bean.com>
 
        * pex-common.h (struct pex_obj): Doc fixes.
index a708da3..448986a 100644 (file)
@@ -1,6 +1,6 @@
 #
 # Makefile
-#   Copyright (C) 1990, 91-99, 2000, 2001, 2002, 2003, 2004, 2005
+#   Copyright (C) 1990, 91-99, 2000, 2001, 2002, 2003, 2004, 2005, 2006
 #   Free Software Foundation
 #
 # This file is part of the libiberty library.
index af03e93..9696df3 100644 (file)
@@ -234,26 +234,6 @@ operating system to free the memory when the program exits.
 
 @end deftypefn
 
-@c argv.c:293
-@deftypefn Extension void expandargv (int *@var{argcp}, char ***@var{argvp})
-
-The @var{argcp} and @code{argvp} arguments are pointers to the usual
-@code{argc} and @code{argv} arguments to @code{main}.  This function
-looks for arguments that begin with the character @samp{@@}.  Any such
-arguments are interpreted as ``response files''.  The contents of the
-response file are interpreted as additional command line options.  In
-particular, the file is separated into whitespace-separated strings;
-each such string is taken as a command-line option.  The new options
-are inserted in place of the option naming the response file, and
-@code{*argcp} and @code{*argvp} will be updated.  If the value of
-@code{*argvp} is modified by this function, then the new value has
-been dynamically allocated and can be deallocated by the caller with
-@code{freeargv}.  However, most callers will simply call
-@code{expandargv} near the beginning of @code{main} and allow the
-operating system to free the memory when the program exits.
-
-@end deftypefn
-
 @c fdmatch.c:23
 @deftypefn Extension int fdmatch (int @var{fd1}, int @var{fd2})
 
@@ -688,14 +668,14 @@ reading and writing.
 
 @end deftypefn
 
-@c pexecute.txh:198
+@c pexecute.txh:259
 @deftypefn Extension void pex_free (struct pex_obj @var{obj})
 
 Clean up and free all data associated with @var{obj}.
 
 @end deftypefn
 
-@c pexecute.txh:173
+@c pexecute.txh:234
 @deftypefn Extension int pex_get_status (struct pex_obj *@var{obj}, int @var{count}, int *@var{vector})
 
 Returns the exit status of all programs run using @var{obj}.
@@ -705,7 +685,7 @@ to @code{pex_run}.  Returns 0 on error, 1 on success.
 
 @end deftypefn
 
-@c pexecute.txh:182
+@c pexecute.txh:243
 @deftypefn Extension int pex_get_times (struct pex_obj *@var{obj}, int @var{count}, struct pex_time *@var{vector})
 
 Returns the process execution times of all programs run using
@@ -754,7 +734,70 @@ temporary files; it may be @code{NULL} to use a randomly chosen name.
 
 @end deftypefn
 
-@c pexecute.txh:204
+@c pexecute.txh:161
+@deftypefn Extension {FILE *} pex_input_file (struct pex_obj *@var{obj}, int @var{flags}, const char *@var{in_name})
+
+Return a stream for a temporary file to pass to the first program in
+the pipeline as input.
+
+The name of the input file is chosen according to the same rules
+@code{pex_run} uses to choose output file names, based on
+@var{in_name}, @var{obj} and the @code{PEX_SUFFIX} bit in @var{flags}.
+
+Don't call @code{fclose} on the returned stream; the first call to
+@code{pex_run} closes it automatically.
+
+If @var{flags} includes @code{PEX_BINARY_OUTPUT}, open the stream in
+binary mode; otherwise, open it in the default mode.  Including
+@code{PEX_BINARY_OUTPUT} in @var{flags} has no effect on Unix.
+@end deftypefn
+
+@c pexecute.txh:178
+@deftypefn Extension {FILE *} pex_input_pipe (struct pex_obj *@var{obj}, int @var{binary})
+
+Return a stream @var{fp} for a pipe connected to the standard input of
+the first program in the pipeline; @var{fp} is opened for writing.
+You must have passed @code{PEX_USE_PIPES} to the @code{pex_init} call
+that returned @var{obj}.
+
+You must close @var{fp} using @code{fclose} yourself when you have
+finished writing data to the pipeline.
+
+The file descriptor underlying @var{fp} is marked not to be inherited
+by child processes.
+
+On systems that do not support pipes, this function returns
+@code{NULL}, and sets @code{errno} to @code{EINVAL}.  If you would
+like to write code that is portable to all systems the @code{pex}
+functions support, consider using @code{pex_input_file} instead.
+
+There are two opportunities for deadlock using
+@code{pex_input_pipe}:
+
+@itemize @bullet
+@item
+Most systems' pipes can buffer only a fixed amount of data; a process
+that writes to a full pipe blocks.  Thus, if you write to @file{fp}
+before starting the first process, you run the risk of blocking when
+there is no child process yet to read the data and allow you to
+continue.  @code{pex_input_pipe} makes no promises about the
+size of the pipe's buffer, so if you need to write any data at all
+before starting the first process in the pipeline, consider using
+@code{pex_input_file} instead.
+
+@item
+Using @code{pex_input_pipe} and @code{pex_read_output} together
+may also cause deadlock.  If the output pipe fills up, so that each
+program in the pipeline is waiting for the next to read more data, and
+you fill the input pipe by writing more data to @var{fp}, then there
+is no way to make progress: the only process that could read data from
+the output pipe is you, but you are blocked on the input pipe.
+
+@end itemize
+
+@end deftypefn
+
+@c pexecute.txh:265
 @deftypefn Extension {const char *} pex_one (int @var{flags}, const char *@var{executable}, char * const *@var{argv}, const char *@var{pname}, const char *@var{outname}, const char *@var{errname}, int *@var{status}, int *@var{err})
 
 An interface to permit the easy execution of a
@@ -767,7 +810,7 @@ be set to the exit status of the program.
 
 @end deftypefn
 
-@c pexecute.txh:161
+@c pexecute.txh:222
 @deftypefn Extension {FILE *} pex_read_output (struct pex_obj *@var{obj}, int @var{binary})
 
 Returns a @code{FILE} pointer which may be used to read the standard
@@ -910,7 +953,7 @@ the output pipe is you, but you are blocked on the input pipe.
 
 @end deftypefn
 
-@c pexecute.txh:216
+@c pexecute.txh:277
 @deftypefn Extension int pexecute (const char *@var{program}, char * const *@var{argv}, const char *@var{this_pname}, const char *@var{temp_base}, char **@var{errmsg_fmt}, char **@var{errmsg_arg}, int flags)
 
 This is the old interface to execute one or more programs.  It is
@@ -938,7 +981,7 @@ name is unset/removed.
 
 @end deftypefn
 
-@c pexecute.txh:224
+@c pexecute.txh:285
 @deftypefn Extension int pwait (int @var{pid}, int *@var{status}, int @var{flags})
 
 Another part of the old execution interface.
index fd0c6b2..bce2c3b 100644 (file)
@@ -67,6 +67,7 @@ pex_init_common (int flags, const char *pname, const char *tempbase,
   obj->status = NULL;
   obj->time = NULL;
   obj->number_waited = 0;
+  obj->input_file = NULL;
   obj->read_output = NULL;
   obj->remove_count = 0;
   obj->remove = NULL;
@@ -91,6 +92,56 @@ pex_add_remove (struct pex_obj *obj, const char *name, int allocated)
   obj->remove[obj->remove_count - 1] = add;
 }
 
+/* Generate a temporary file name based on OBJ, FLAGS, and NAME.
+   Return NULL if we were unable to reserve a temporary filename.
+
+   If non-NULL, the result is either allocated with malloc, or the
+   same pointer as NAME.  */
+static char *
+temp_file (struct pex_obj *obj, int flags, char *name)
+{
+  if (name == NULL)
+    {
+      if (obj->tempbase == NULL)
+        {
+          name = make_temp_file (NULL);
+        }
+      else
+        {
+          int len = strlen (obj->tempbase);
+          int out;
+
+          if (len >= 6
+              && strcmp (obj->tempbase + len - 6, "XXXXXX") == 0)
+            name = xstrdup (obj->tempbase);
+          else
+            name = concat (obj->tempbase, "XXXXXX", NULL);
+
+          out = mkstemps (name, 0);
+          if (out < 0)
+            {
+              free (name);
+              return NULL;
+            }
+
+          /* This isn't obj->funcs->close because we got the
+             descriptor from mkstemps, not from a function in
+             obj->funcs.  Calling close here is just like what
+             make_temp_file does.  */
+          close (out);
+        }
+    }
+  else if ((flags & PEX_SUFFIX) != 0)
+    {
+      if (obj->tempbase == NULL)
+        name = make_temp_file (name);
+      else
+        name = concat (obj->tempbase, name, NULL);
+    }
+
+  return name;
+}
+
 /* Run a program.  */
 
 const char *
@@ -113,6 +164,17 @@ pex_run (struct pex_obj *obj, int flags, const char *executable,
   outname = (char *) orig_outname;
   outname_allocated = 0;
 
+  /* If the user called pex_input_file, close the file now.  */
+  if (obj->input_file)
+    {
+      if (fclose (obj->input_file) == EOF)
+        {
+          errmsg = "closing pipeline input file";
+          goto error_exit;
+        }
+      obj->input_file = NULL;
+    }
+
   /* Set IN.  */
 
   if (obj->next_input_name != NULL)
@@ -163,49 +225,16 @@ pex_run (struct pex_obj *obj, int flags, const char *executable,
     }
   else if ((obj->flags & PEX_USE_PIPES) == 0)
     {
-      if (outname == NULL)
-       {
-         if (obj->tempbase == NULL)
-           {
-             outname = make_temp_file (NULL);
-             outname_allocated = 1;
-           }
-         else
-           {
-             int len = strlen (obj->tempbase);
-
-             if (len >= 6
-                 && strcmp (obj->tempbase + len - 6, "XXXXXX") == 0)
-               outname = xstrdup (obj->tempbase);
-             else
-               outname = concat (obj->tempbase, "XXXXXX", NULL);
-
-             outname_allocated = 1;
-
-             out = mkstemps (outname, 0);
-             if (out < 0)
-               {
-                 *err = 0;
-                 errmsg = "could not create temporary output file";
-                 goto error_exit;
-               }
-
-             /* This isn't obj->funcs->close because we got the
-                descriptor from mkstemps, not from a function in
-                obj->funcs.  Calling close here is just like what
-                make_temp_file does.  */
-             close (out);
-             out = -1;
-           }
-       }
-      else if ((flags & PEX_SUFFIX) != 0)
-       {
-         if (obj->tempbase == NULL)
-           outname = make_temp_file (outname);
-         else
-           outname = concat (obj->tempbase, outname, NULL);
-         outname_allocated = 1;
-       }
+      outname = temp_file (obj, flags, outname);
+      if (! outname)
+        {
+          *err = 0;
+          errmsg = "could not create temporary file";
+          goto error_exit;
+        }
+
+      if (outname != orig_outname)
+        outname_allocated = 1;
 
       if ((obj->flags & PEX_SAVE_TEMPS) == 0)
        {
@@ -213,17 +242,10 @@ pex_run (struct pex_obj *obj, int flags, const char *executable,
          outname_allocated = 0;
        }
 
-      if (!outname_allocated)
-       {
-         obj->next_input_name = outname;
-         obj->next_input_name_allocated = 0;
-       }
-      else
-       {
-         obj->next_input_name = outname;
-         outname_allocated = 0;
-         obj->next_input_name_allocated = 1;
-       }
+      /* Hand off ownership of outname to the next stage.  */
+      obj->next_input_name = outname;
+      obj->next_input_name_allocated = outname_allocated;
+      outname_allocated = 0;
     }
   else
     {
@@ -347,6 +369,87 @@ pex_write_input (struct pex_obj *obj, int binary)
   return NULL;
 }
 
+/* Return a FILE pointer for a temporary file to fill with input for
+   the pipeline.  */
+FILE *
+pex_input_file (struct pex_obj *obj, int flags, const char *in_name)
+{
+  char *name = (char *) in_name;
+  FILE *f;
+
+  /* This must be called before the first pipeline stage is run, and
+     there must not have been any other input selected.  */
+  if (obj->count != 0
+      || (obj->next_input >= 0 && obj->next_input != STDIN_FILE_NO)
+      || obj->next_input_name)
+    {
+      errno = EINVAL;
+      return NULL;
+    }
+
+  name = temp_file (obj, flags, name);
+  if (! name)
+    return NULL;
+
+  f = fopen (name, (flags & PEX_BINARY_OUTPUT) ? "wb" : "w");
+  if (! f)
+    {
+      free (name);
+      return NULL;
+    }
+
+  obj->input_file = f;
+  obj->next_input_name = name;
+  obj->next_input_name_allocated = (name != in_name);
+
+  return f;
+}
+
+/* Return a stream for a pipe connected to the standard input of the
+   first stage of the pipeline.  */
+FILE *
+pex_input_pipe (struct pex_obj *obj, int binary)
+{
+  int p[2];
+  FILE *f;
+
+  /* You must call pex_input_pipe before the first pex_run or pex_one.  */
+  if (obj->count > 0)
+    goto usage_error;
+
+  /* You must be using pipes.  Implementations that don't support
+     pipes clear this flag before calling pex_init_common.  */
+  if (! (obj->flags & PEX_USE_PIPES))
+    goto usage_error;
+
+  /* If we have somehow already selected other input, that's a
+     mistake.  */
+  if ((obj->next_input >= 0 && obj->next_input != STDIN_FILE_NO)
+      || obj->next_input_name)
+    goto usage_error;
+
+  if (obj->funcs->pipe (obj, p, binary != 0) < 0)
+    return NULL;
+
+  f = obj->funcs->fdopenw (obj, p[WRITE_PORT], binary != 0);
+  if (! f)
+    {
+      int saved_errno = errno;
+      obj->funcs->close (obj, p[READ_PORT]);
+      obj->funcs->close (obj, p[WRITE_PORT]);
+      errno = saved_errno;
+      return NULL;
+    }
+
+  obj->next_input = p[READ_PORT];
+
+  return f;
+
+ usage_error:
+  errno = EINVAL;
+  return NULL;
+}
+
 /* Return a FILE pointer for the output of the last program
    executed.  */
 
index 13ec981..8ded138 100644 (file)
@@ -69,6 +69,8 @@ struct pex_obj
   struct pex_time *time;
   /* Number of children we have already waited for.  */
   int number_waited;
+  /* FILE created by pex_input_file.  */
+  FILE *input_file;
   /* FILE created by pex_read_output.  */
   FILE *read_output;
   /* Number of temporary files to remove.  */
index 2bfad0c..e3f1248 100644 (file)
@@ -158,6 +158,67 @@ the output pipe is you, but you are blocked on the input pipe.
 
 @end deftypefn
 
+@deftypefn Extension {FILE *} pex_input_file (struct pex_obj *@var{obj}, int @var{flags}, const char *@var{in_name})
+
+Return a stream for a temporary file to pass to the first program in
+the pipeline as input.
+
+The name of the input file is chosen according to the same rules
+@code{pex_run} uses to choose output file names, based on
+@var{in_name}, @var{obj} and the @code{PEX_SUFFIX} bit in @var{flags}.
+
+Don't call @code{fclose} on the returned stream; the first call to
+@code{pex_run} closes it automatically.
+
+If @var{flags} includes @code{PEX_BINARY_OUTPUT}, open the stream in
+binary mode; otherwise, open it in the default mode.  Including
+@code{PEX_BINARY_OUTPUT} in @var{flags} has no effect on Unix.
+@end deftypefn
+
+@deftypefn Extension {FILE *} pex_input_pipe (struct pex_obj *@var{obj}, int @var{binary})
+
+Return a stream @var{fp} for a pipe connected to the standard input of
+the first program in the pipeline; @var{fp} is opened for writing.
+You must have passed @code{PEX_USE_PIPES} to the @code{pex_init} call
+that returned @var{obj}.
+
+You must close @var{fp} using @code{fclose} yourself when you have
+finished writing data to the pipeline.
+
+The file descriptor underlying @var{fp} is marked not to be inherited
+by child processes.
+
+On systems that do not support pipes, this function returns
+@code{NULL}, and sets @code{errno} to @code{EINVAL}.  If you would
+like to write code that is portable to all systems the @code{pex}
+functions support, consider using @code{pex_input_file} instead.
+
+There are two opportunities for deadlock using
+@code{pex_input_pipe}:
+
+@itemize @bullet
+@item
+Most systems' pipes can buffer only a fixed amount of data; a process
+that writes to a full pipe blocks.  Thus, if you write to @file{fp}
+before starting the first process, you run the risk of blocking when
+there is no child process yet to read the data and allow you to
+continue.  @code{pex_input_pipe} makes no promises about the
+size of the pipe's buffer, so if you need to write any data at all
+before starting the first process in the pipeline, consider using
+@code{pex_input_file} instead.
+
+@item
+Using @code{pex_input_pipe} and @code{pex_read_output} together
+may also cause deadlock.  If the output pipe fills up, so that each
+program in the pipeline is waiting for the next to read more data, and
+you fill the input pipe by writing more data to @var{fp}, then there
+is no way to make progress: the only process that could read data from
+the output pipe is you, but you are blocked on the input pipe.
+
+@end itemize
+
+@end deftypefn
+
 @deftypefn Extension {FILE *} pex_read_output (struct pex_obj *@var{obj}, int @var{binary})
 
 Returns a @code{FILE} pointer which may be used to read the standard
index 732523c..534626e 100644 (file)
@@ -1,6 +1,6 @@
 #
 # Makefile
-#   Copyright (C) 1999, 2002
+#   Copyright (C) 1999, 2002, 2006
 #   Free Software Foundation
 #
 # This file is part of the libiberty library.
index ae0eb64..aa7e202 100644 (file)
@@ -1,3 +1,74 @@
+2006-06-09  Nick Clifton  <nickc@redhat.com>
+
+       * po/fi.po: Updated Finnish translation.
+
+2006-06-07  Joseph S. Myers  <joseph@codesourcery.com>
+
+       * po/Make-in (pdf, ps): New dummy targets.
+
+2006-05-30  Nick Clifton  <nickc@redhat.com>
+
+       * po/es.po: Updated Spanish translation.
+
+2006-05-26  Richard Sandiford  <richard@codesourcery.com>
+
+       * m68k-opc.c (m68k_opcodes): Fix the masks of the Coldfire fmovemd
+       and fmovem entries.  Put register list entries before immediate
+       mask entries.  Use "l" rather than "L" in the fmovem entries.
+       * m68k-dis.c (match_insn_m68k): Remove the PRIV argument and work it
+       out from INFO.
+       (m68k_scan_mask): New function, split out from...
+       (print_insn_m68k): ...here.  If no architecture has been set,
+       first try printing an m680x0 instruction, then try a Coldfire one.
+
+2006-05-24  Nick Clifton  <nickc@redhat.com>
+
+       * po/ga.po: Updated Irish translation.
+
+2006-05-22  Nick Clifton  <nickc@redhat.com>
+
+       * crx-dis.c (EXTRACT): Make macro work on 64-bit hosts.
+
+2006-05-22  Nick Clifton  <nickc@redhat.com>
+
+       * po/nl.po: Updated translation.
+
+2006-05-18  Alan Modra  <amodra@bigpond.net.au>
+
+       * avr-dis.c (avr_operand): Warning fix.
+
+2006-05-04  Thiemo Seufer  <ths@mips.com>
+
+       * mips-opc.c (mips_builtin_opcodes): Fix mftr argument order.
+
+2006-04-16  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * po/POTFILES.in: Regenerated.
+
+2006-04-12   Hochstein  <hochstein@algo.informatik.tu-darmstadt.de>
+
+       PR binutils/2454
+       * avr-dis.c (avr_operand): Arrange for a comment to appear before
+       the symolic form of an address, so that the output of objdump -d
+       can be reassembled.
+
+2006-04-10  DJ Delorie  <dj@redhat.com>
+
+       * m32c-asm.c: Regenerate.
+
+2006-04-06  Carlos O'Donell  <carlos@codesourcery.com>
+
+       * Makefile.am: Add install-html target.
+       * Makefile.in: Regenerate.
+
+2006-04-06  Nick Clifton  <nickc@redhat.com>
+
+       * po/vi/po: Updated Vietnamese translation.
+
+2006-03-31  Paul Koning  <ni1d@arrl.net>
+
+       * pdp11-opc.c (pdp11_opcodes): Fix opcode for SEC instruction.
+
 2006-03-16  Bernd Schmidt  <bernd.schmidt@analog.com>
 
        * bfin-dis.c (decode_dsp32shiftimm_0): Simplify and correct the
        New cases '$' and '%' for read/write hyperprivileged register.
        * sparc-opc.c (sparc_opcodes): Add new entries for UA2005
        window handling and rdhpr/wrhpr instructions.
-       
+
 2006-02-24  DJ Delorie  <dj@redhat.com>
 
        * m32c-desc.c: Regenerate with linker relaxation attributes.
 
        * xc16x-desc.h: New file
        * xc16x-desc.c: New file
-       * xc16x-opc.h: New file 
+       * xc16x-opc.h: New file
        * xc16x-opc.c: New file
        * xc16x-ibld.c: New file
        * xc16x-asm.c: New file
        * xc16x-dis.c: New file
-       * Makefile.am: Entries for xc16x 
-       * Makefile.in: Regenerate 
+       * Makefile.am: Entries for xc16x
+       * Makefile.in: Regenerate
        * cofigure.in: Add xc16x target information.
        * configure: Regenerate.
        * disassemble.c: Add xc16x target information.
 
        * z80-dis.c (struct buffer, prt_d, prt_d_n, arit_d, ld_r_d,
        ld_d_r, pref_xd_cb): Use signed char to hold data to be
-       disassembled.   
+       disassembled.
        * z80-dis.c (TXTSIZ): Increase buffer size to 24, this fixes
        buffer overflows when disassembling instructions like
        ld (ix+123),0x23
index 1530084..7e792c9 100644 (file)
@@ -1,5 +1,6 @@
 /* Disassemble AVR instructions.
-   Copyright 1999, 2000, 2002, 2004, 2005 Free Software Foundation, Inc.
+   Copyright 1999, 2000, 2002, 2004, 2005, 2006
+   Free Software Foundation, Inc.
 
    Contributed by Denis Chertykov <denisc@overta.ru>
 
@@ -139,7 +140,12 @@ avr_operand (unsigned int insn, unsigned int insn2, unsigned int pc, int constra
     case 'h':
       *sym = 1;
       *sym_addr = ((((insn & 1) | ((insn & 0x1f0) >> 3)) << 16) | insn2) * 2;
-      sprintf (buf, "0x");
+      /* See PR binutils/2545.  Ideally we would like to display the hex
+        value of the address only once, but this would mean recoding
+        objdump_print_address() which would affect many targets.  */
+      sprintf (buf, "%#lx", (unsigned long) *sym_addr);      
+      sprintf (comment, "0x");
+
       break;
       
     case 'L':
index 8f14e8b..8d51c75 100644 (file)
@@ -30,7 +30,7 @@
 
 /* Extract 'n_bits' from 'a' starting from offset 'offs'.  */
 #define EXTRACT(a, offs, n_bits)           \
-  (n_bits == 32 ? (((a) >> (offs)) & ~0L)   \
+  (n_bits == 32 ? (((a) >> (offs)) & 0xffffffffL)   \
   : (((a) >> (offs)) & ((1 << (n_bits)) -1)))
 
 /* Set Bit Mask - a mask to set all bits starting from offset 'offs'.  */
index 9407ed8..5af5d75 100644 (file)
@@ -578,13 +578,14 @@ parse_Bitno16R (CGEN_CPU_DESC cd, const char **strp,
 static const char *
 parse_unsigned_bitbase (CGEN_CPU_DESC cd, const char **strp,
                        int opindex, unsigned long *valuep,
-                       unsigned bits)
+                       unsigned bits, int allow_syms)
 {
   const char *errmsg = 0;
   unsigned long bit;
   unsigned long base;
   const char *newp = *strp;
   unsigned long long bitbase;
+  long have_zero = 0;
 
   errmsg = cgen_parse_unsigned_integer (cd, & newp, opindex, & bit);
   if (errmsg)
@@ -594,6 +595,11 @@ parse_unsigned_bitbase (CGEN_CPU_DESC cd, const char **strp,
     return "Missing base for bit,base:8";
 
   ++newp;
+
+  if (strncmp (newp, "0x0", 3) == 0 
+      || (newp[0] == '0' && newp[1] != 'x'))
+    have_zero = 1;
+
   errmsg = cgen_parse_unsigned_integer (cd, & newp, opindex, & base);
   if (errmsg)
     return errmsg;
@@ -603,6 +609,21 @@ parse_unsigned_bitbase (CGEN_CPU_DESC cd, const char **strp,
   if (bitbase >= (1ull << bits))
     return _("bit,base is out of range");
 
+  /* If this field may require a relocation then use larger displacement.  */
+  if (! have_zero && base == 0)
+    {
+      switch (allow_syms) {
+      case 0:
+       return _("bit,base out of range for symbol");
+      case 1:
+       break;
+      case 2:
+       if (strncmp (newp, "[sb]", 4) != 0)
+         return _("bit,base out of range for symbol");
+       break;
+      }
+    }
+
   *valuep = bitbase;
   *strp = newp;
   return 0;
@@ -611,7 +632,7 @@ parse_unsigned_bitbase (CGEN_CPU_DESC cd, const char **strp,
 static const char *
 parse_signed_bitbase (CGEN_CPU_DESC cd, const char **strp,
                      int opindex, signed long *valuep,
-                     unsigned bits)
+                     unsigned bits, int allow_syms)
 {
   const char *errmsg = 0;
   unsigned long bit;
@@ -619,6 +640,7 @@ parse_signed_bitbase (CGEN_CPU_DESC cd, const char **strp,
   const char *newp = *strp;
   long long bitbase;
   long long limit;
+  long have_zero = 0;
 
   errmsg = cgen_parse_unsigned_integer (cd, & newp, opindex, & bit);
   if (errmsg)
@@ -628,6 +650,11 @@ parse_signed_bitbase (CGEN_CPU_DESC cd, const char **strp,
     return "Missing base for bit,base:8";
 
   ++newp;
+
+  if (strncmp (newp, "0x0", 3) == 0 
+      || (newp[0] == '0' && newp[1] != 'x'))
+    have_zero = 1;
+
   errmsg = cgen_parse_signed_integer (cd, & newp, opindex, & base);
   if (errmsg)
     return errmsg;
@@ -638,6 +665,10 @@ parse_signed_bitbase (CGEN_CPU_DESC cd, const char **strp,
   if (bitbase < -limit || bitbase >= limit)
     return _("bit,base is out of range");
 
+  /* If this field may require a relocation then use larger displacement.  */
+  if (! have_zero && base == 0 && ! allow_syms)
+    return _("bit,base out of range for symbol");
+
   *valuep = bitbase;
   *strp = newp;
   return 0;
@@ -647,56 +678,56 @@ static const char *
 parse_unsigned_bitbase8 (CGEN_CPU_DESC cd, const char **strp,
                         int opindex, unsigned long *valuep)
 {
-  return parse_unsigned_bitbase (cd, strp, opindex, valuep, 8);
+  return parse_unsigned_bitbase (cd, strp, opindex, valuep, 8, 0);
 }
 
 static const char *
 parse_unsigned_bitbase11 (CGEN_CPU_DESC cd, const char **strp,
                         int opindex, unsigned long *valuep)
 {
-  return parse_unsigned_bitbase (cd, strp, opindex, valuep, 11);
+  return parse_unsigned_bitbase (cd, strp, opindex, valuep, 11, 0);
 }
 
 static const char *
 parse_unsigned_bitbase16 (CGEN_CPU_DESC cd, const char **strp,
                          int opindex, unsigned long *valuep)
 {
-  return parse_unsigned_bitbase (cd, strp, opindex, valuep, 16);
+  return parse_unsigned_bitbase (cd, strp, opindex, valuep, 16, 1);
 }
 
 static const char *
 parse_unsigned_bitbase19 (CGEN_CPU_DESC cd, const char **strp,
                         int opindex, unsigned long *valuep)
 {
-  return parse_unsigned_bitbase (cd, strp, opindex, valuep, 19);
+  return parse_unsigned_bitbase (cd, strp, opindex, valuep, 19, 2);
 }
 
 static const char *
 parse_unsigned_bitbase27 (CGEN_CPU_DESC cd, const char **strp,
                         int opindex, unsigned long *valuep)
 {
-  return parse_unsigned_bitbase (cd, strp, opindex, valuep, 27);
+  return parse_unsigned_bitbase (cd, strp, opindex, valuep, 27, 1);
 }
 
 static const char *
 parse_signed_bitbase8 (CGEN_CPU_DESC cd, const char **strp,
                       int opindex, signed long *valuep)
 {
-  return parse_signed_bitbase (cd, strp, opindex, valuep, 8);
+  return parse_signed_bitbase (cd, strp, opindex, valuep, 8, 1);
 }
 
 static const char *
 parse_signed_bitbase11 (CGEN_CPU_DESC cd, const char **strp,
                       int opindex, signed long *valuep)
 {
-  return parse_signed_bitbase (cd, strp, opindex, valuep, 11);
+  return parse_signed_bitbase (cd, strp, opindex, valuep, 11, 0);
 }
 
 static const char *
 parse_signed_bitbase19 (CGEN_CPU_DESC cd, const char **strp,
                       int opindex, signed long *valuep)
 {
-  return parse_signed_bitbase (cd, strp, opindex, valuep, 19);
+  return parse_signed_bitbase (cd, strp, opindex, valuep, 19, 1);
 }
 
 /* Parse the suffix as :<char> or as nothing followed by a whitespace.  */
index fa29dd3..42fb145 100644 (file)
@@ -1341,8 +1341,10 @@ match_insn_m68k (bfd_vma memaddr,
   return p - buffer;
 }
 
-/* Like print_m68k_insn, but restrict the opcode search to the features
-   specified by ARCH_MASK.  */
+/* Try to interpret the instruction at address MEMADDR as one that
+   can execute on a processor with the features given by ARCH_MASK.
+   If successful, print the instruction to INFO->STREAM and return
+   its length in bytes.  Return 0 otherwise.  */
 
 static int
 m68k_scan_mask (bfd_vma memaddr, disassemble_info *info,
index 42da748..cd92a9f 100644 (file)
@@ -787,7 +787,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
 {"mfthi",   "d,*",     0x41010021, 0xfff307ff, TRAP|WR_d|RD_a,         0,              MT32    },
 {"mftlo",   "d",       0x41000021, 0xffff07ff, TRAP|WR_d|RD_a,         0,              MT32    },
 {"mftlo",   "d,*",     0x41000021, 0xfff307ff, TRAP|WR_d|RD_a,         0,              MT32    },
-{"mftr",    "t,d,!,H,$", 0x41000000, 0xffe007c8, TRAP|WR_d,            0,              MT32    },
+{"mftr",    "d,t,!,H,$", 0x41000000, 0xffe007c8, TRAP|WR_d,            0,              MT32    },
 {"mfc0",    "t,G",     0x40000000, 0xffe007ff, LCD|WR_t|RD_C0,         0,              I1      },
 {"mfc0",    "t,+D",     0x40000000, 0xffe007f8, LCD|WR_t|RD_C0,        0,              I32     },
 {"mfc0",    "t,G,H",    0x40000000, 0xffe007f8, LCD|WR_t|RD_C0,        0,              I32     },
index 8b96e78..5fdb084 100644 (file)
@@ -1,5 +1,5 @@
 /* Opcode table for PDP-11.
-   Copyright 2001, 2002 Free Software Foundation, Inc.
+   Copyright 2001, 2002, 2006 Free Software Foundation, Inc.
 
 This file is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -50,7 +50,7 @@ const struct pdp11_opcode pdp11_opcodes[] =
   { "cl_e",    0x00ae, 0xffff, PDP11_OPCODE_NO_OPS,    PDP11_BASIC },
   { "ccc",     0x00af, 0xffff, PDP11_OPCODE_NO_OPS,    PDP11_BASIC },
   { "se_0",    0x00b0, 0xffff, PDP11_OPCODE_NO_OPS,    PDP11_BASIC },
-  { "sec",     0x00a1, 0xffff, PDP11_OPCODE_NO_OPS,    PDP11_BASIC },
+  { "sec",     0x00b1, 0xffff, PDP11_OPCODE_NO_OPS,    PDP11_BASIC },
   { "sev",     0x00b2, 0xffff, PDP11_OPCODE_NO_OPS,    PDP11_BASIC },
   { "se_3",    0x00b3, 0xffff, PDP11_OPCODE_NO_OPS,    PDP11_BASIC },
   { "sez",     0x00b4, 0xffff, PDP11_OPCODE_NO_OPS,    PDP11_BASIC },
index 0cd0c1c..199100d 100644 (file)
@@ -1,6 +1,6 @@
 # Makefile for program source directory in GNU NLS utilities package.
 # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
-# Copyright (C) 2003 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2006 Free Software Foundation, Inc.
 #
 # This file may be copied and used freely without restrictions.  It can
 # be used in projects which are not available under the GNU Public License
@@ -186,7 +186,7 @@ check: all
 
 cat-id-tbl.o: ../intl/libgettext.h
 
-html dvi info tags TAGS ID:
+html dvi pdf ps info tags TAGS ID:
 
 mostlyclean:
        rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
index ddb7f95..67e98c4 100644 (file)
@@ -150,6 +150,13 @@ v850-opc.c
 vax-dis.c
 w65-dis.c
 w65-opc.h
+xc16x-asm.c
+xc16x-desc.c
+xc16x-desc.h
+xc16x-dis.c
+xc16x-ibld.c
+xc16x-opc.c
+xc16x-opc.h
 xstormy16-asm.c
 xstormy16-desc.c
 xstormy16-desc.h
index c8c5f10..ace1099 100644 (file)
-# Mensajes en español para opcodes-2.15.96.
-# Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-# Cristian Othón Martínez Vera <cfuga@itam.mx>, 2002, 2003, 2004, 2005.
+# Mensajes en español para opcodes-2.16.93.
+# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# Cristian Othón Martínez Vera <cfuga@itam.mx>, 2002, 2003, 2004, 2005, 2006.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: opcodes 2.15.96\n"
+"Project-Id-Version: opcodes 2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-05 20:32+1030\n"
-"PO-Revision-Date: 2005-03-14 17:13-0600\n"
+"POT-Creation-Date: 2005-10-25 10:50+0930\n"
+"PO-Revision-Date: 2006-05-26 16:09-0500\n"
 "Last-Translator: Cristian Othón Martínez Vera <cfuga@itam.mx>\n"
 "Language-Team: Spanish <es@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: alpha-opc.c:331
+#: alpha-opc.c:155
 msgid "branch operand unaligned"
 msgstr "operando de ramificación sin alinear"
 
-#: alpha-opc.c:353 alpha-opc.c:374
+#: alpha-opc.c:171 alpha-opc.c:187
 msgid "jump hint unaligned"
 msgstr "pista de salto sin alinear"
 
-#: arc-dis.c:76
+#: arc-dis.c:75
 msgid "Illegal limm reference in last instruction!\n"
 msgstr "¡Referencia limm ilegal en la última instrucción!\n"
 
-#: arm-dis.c:1267
+#: arc-opc.c:384
+msgid "unable to fit different valued constants into instruction"
+msgstr "no se pueden ajustar las constantes de valores diferentes en la instrucción"
+
+#: arc-opc.c:393
+msgid "auxiliary register not allowed here"
+msgstr "no se permite un registro auxiliar aquí"
+
+#: arc-opc.c:399 arc-opc.c:416
+msgid "attempt to set readonly register"
+msgstr "se intentó cambiar un registro de sólo lectura"
+
+#: arc-opc.c:404 arc-opc.c:421
+msgid "attempt to read writeonly register"
+msgstr "se intentó leer un registro de sólo escritura"
+
+#: arc-opc.c:426
+#, c-format
+msgid "invalid register number `%d'"
+msgstr "número de registro `%d' inválido"
+
+#: arc-opc.c:592 arc-opc.c:643 arc-opc.c:671
+msgid "too many long constants"
+msgstr "demasiadas constantes long"
+
+#: arc-opc.c:666
+msgid "to many shimms in load"
+msgstr "demasiados shimms en load"
+
+#. Do we have a limm already?
+#: arc-opc.c:779
+msgid "impossible store"
+msgstr "almacenamiento imposible"
+
+#: arc-opc.c:812
+msgid "st operand error"
+msgstr "error de operando st"
+
+#: arc-opc.c:816 arc-opc.c:858
+msgid "address writeback not allowed"
+msgstr "no se permite la escritura hacia atrás de dirección"
+
+#: arc-opc.c:820
+msgid "store value must be zero"
+msgstr "el valor de almacenamiento debe ser cero"
+
+#: arc-opc.c:845
+msgid "invalid load/shimm insn"
+msgstr "instrucción load/shimm inválida"
+
+#: arc-opc.c:854
+msgid "ld operand error"
+msgstr "error de operando ld"
+
+#: arc-opc.c:941
+msgid "jump flags, but no .f seen"
+msgstr "opciones de salto, pero no se ve .f"
+
+#: arc-opc.c:944
+msgid "jump flags, but no limm addr"
+msgstr "opciones de salto, pero no hay una dirección limm"
+
+#: arc-opc.c:947
+msgid "flag bits of jump address limm lost"
+msgstr "bits bandera de dirección de salto limm perdidos"
+
+#: arc-opc.c:950
+msgid "attempt to set HR bits"
+msgstr "se intentó cambiar los bits HR"
+
+#: arc-opc.c:953
+msgid "bad jump flags value"
+msgstr "valor de opciones de salto erróneo"
+
+#: arc-opc.c:986
+msgid "branch address not on 4 byte boundary"
+msgstr "la dirección de ramificación no está en un límite de 4 bytes"
+
+#: arc-opc.c:1022
+msgid "must specify .jd or no nullify suffix"
+msgstr "se debe especificar un sufijo .jd o no nullify"
+
+#: arm-dis.c:1302
 msgid "<illegal precision>"
 msgstr "<precisión ilegal>"
 
 #. XXX - should break 'option' at following delimiter.
-#: arm-dis.c:1912
+#: arm-dis.c:2746
 #, c-format
 msgid "Unrecognised register name set: %s\n"
 msgstr "Conjunto de nombres de registro no reconocido: %s\n"
 
 #. XXX - should break 'option' at following delimiter.
-#: arm-dis.c:1920
+#: arm-dis.c:2754
 #, c-format
 msgid "Unrecognised disassembler option: %s\n"
 msgstr "Opción de desensamblador no reconocida: %s\n"
 
-#: arm-dis.c:2093
+#: arm-dis.c:2916
 #, c-format
 msgid ""
 "\n"
@@ -53,23 +135,24 @@ msgstr ""
 "Las siguientes opciones de desensamblador específicas de ARM tienen soporte\n"
 "para su uso con el interruptor -M:\n"
 
-#: avr-dis.c:112 avr-dis.c:122
+#: avr-dis.c:109 avr-dis.c:119
 #, c-format
 msgid "undefined"
 msgstr "sin definir"
 
-#: avr-dis.c:179
+#: avr-dis.c:176
 #, c-format
 msgid "Internal disassembler error"
 msgstr "Error interno del desensamblador"
 
-#: avr-dis.c:227
+#: avr-dis.c:225
 #, c-format
 msgid "unknown constraint `%c'"
 msgstr "restricción `%c' desconocida"
 
-#: cgen-asm.c:336 fr30-ibld.c:197 frv-ibld.c:197 ip2k-ibld.c:197
-#: iq2000-ibld.c:197 m32r-ibld.c:197 openrisc-ibld.c:197 xstormy16-ibld.c:197
+#: cgen-asm.c:336 fr30-ibld.c:192 frv-ibld.c:192 ip2k-ibld.c:192
+#: iq2000-ibld.c:192 m32c-ibld.c:192 m32r-ibld.c:192 ms1-ibld.c:192
+#: openrisc-ibld.c:192 xstormy16-ibld.c:192
 #, c-format
 msgid "operand out of range (%ld not between %ld and %ld)"
 msgstr "operando fuera de rango (%ld no está entre %ld y %ld)"
@@ -79,7 +162,7 @@ msgstr "operando fuera de rango (%ld no est
 msgid "operand out of range (%lu not between %lu and %lu)"
 msgstr "operando fuera de rango (%lu no está entre %lu y %lu)"
 
-#: d30v-dis.c:312
+#: d30v-dis.c:252
 #, c-format
 msgid "<unknown register %d>"
 msgstr "<registro %d desconocido>"
@@ -95,148 +178,202 @@ msgstr "Error desconocido %d\n"
 msgid "Address 0x%s is out of bounds.\n"
 msgstr "La dirección 0x%s está fuera de los límites.\n"
 
-#: fr30-asm.c:323 frv-asm.c:1298 ip2k-asm.c:530 iq2000-asm.c:465
-#: m32r-asm.c:338 openrisc-asm.c:252 xstormy16-asm.c:284
+#: fr30-asm.c:92 m32c-asm.c:782 m32c-asm.c:789
+msgid "Register number is not valid"
+msgstr "El número de registro no es válido"
+
+#: fr30-asm.c:94
+msgid "Register must be between r0 and r7"
+msgstr "El registro debe estar entre r0 y r7"
+
+#: fr30-asm.c:96
+msgid "Register must be between r8 and r15"
+msgstr "El registro debe estar entre r8 y r15"
+
+#: fr30-asm.c:115 m32c-asm.c:820
+msgid "Register list is not valid"
+msgstr "La lista de registros no es válida"
+
+#: fr30-asm.c:309 frv-asm.c:1262 ip2k-asm.c:510 iq2000-asm.c:456
+#: m32c-asm.c:1476 m32r-asm.c:323 ms1-asm.c:546 openrisc-asm.c:240
+#: xstormy16-asm.c:275
 #, c-format
 msgid "Unrecognized field %d while parsing.\n"
 msgstr "No se reconoció el campo %d durante la decodificación.\n"
 
-#: fr30-asm.c:372 frv-asm.c:1347 ip2k-asm.c:579 iq2000-asm.c:514
-#: m32r-asm.c:387 openrisc-asm.c:301 xstormy16-asm.c:333
+#: fr30-asm.c:357 frv-asm.c:1310 ip2k-asm.c:558 iq2000-asm.c:504
+#: m32c-asm.c:1524 m32r-asm.c:371 ms1-asm.c:594 openrisc-asm.c:288
+#: xstormy16-asm.c:323
 msgid "missing mnemonic in syntax string"
 msgstr "falta el mnemónico en la cadena sintáctica"
 
 #. We couldn't parse it.
-#: fr30-asm.c:507 fr30-asm.c:511 fr30-asm.c:598 fr30-asm.c:699 frv-asm.c:1482
-#: frv-asm.c:1486 frv-asm.c:1573 frv-asm.c:1674 ip2k-asm.c:714 ip2k-asm.c:718
-#: ip2k-asm.c:805 ip2k-asm.c:906 iq2000-asm.c:649 iq2000-asm.c:653
-#: iq2000-asm.c:740 iq2000-asm.c:841 m32r-asm.c:522 m32r-asm.c:526
-#: m32r-asm.c:613 m32r-asm.c:714 openrisc-asm.c:436 openrisc-asm.c:440
-#: openrisc-asm.c:527 openrisc-asm.c:628 xstormy16-asm.c:468
-#: xstormy16-asm.c:472 xstormy16-asm.c:559 xstormy16-asm.c:660
+#: fr30-asm.c:492 fr30-asm.c:496 fr30-asm.c:583 fr30-asm.c:684 frv-asm.c:1445
+#: frv-asm.c:1449 frv-asm.c:1536 frv-asm.c:1637 ip2k-asm.c:693 ip2k-asm.c:697
+#: ip2k-asm.c:784 ip2k-asm.c:885 iq2000-asm.c:639 iq2000-asm.c:643
+#: iq2000-asm.c:730 iq2000-asm.c:831 m32c-asm.c:1659 m32c-asm.c:1663
+#: m32c-asm.c:1750 m32c-asm.c:1851 m32r-asm.c:506 m32r-asm.c:510
+#: m32r-asm.c:597 m32r-asm.c:698 ms1-asm.c:729 ms1-asm.c:733 ms1-asm.c:820
+#: ms1-asm.c:921 openrisc-asm.c:423 openrisc-asm.c:427 openrisc-asm.c:514
+#: openrisc-asm.c:615 xstormy16-asm.c:458 xstormy16-asm.c:462
+#: xstormy16-asm.c:549 xstormy16-asm.c:650
 msgid "unrecognized instruction"
 msgstr "instrucción no reconocida"
 
-#: fr30-asm.c:554 frv-asm.c:1529 ip2k-asm.c:761 iq2000-asm.c:696
-#: m32r-asm.c:569 openrisc-asm.c:483 xstormy16-asm.c:515
+#: fr30-asm.c:539 frv-asm.c:1492 ip2k-asm.c:740 iq2000-asm.c:686
+#: m32c-asm.c:1706 m32r-asm.c:553 ms1-asm.c:776 openrisc-asm.c:470
+#: xstormy16-asm.c:505
 #, c-format
 msgid "syntax error (expected char `%c', found `%c')"
 msgstr "error sintáctico (se esperaba el carácter `%c', se encontró `%c')"
 
-#: fr30-asm.c:564 frv-asm.c:1539 ip2k-asm.c:771 iq2000-asm.c:706
-#: m32r-asm.c:579 openrisc-asm.c:493 xstormy16-asm.c:525
+#: fr30-asm.c:549 frv-asm.c:1502 ip2k-asm.c:750 iq2000-asm.c:696
+#: m32c-asm.c:1716 m32r-asm.c:563 ms1-asm.c:786 openrisc-asm.c:480
+#: xstormy16-asm.c:515
 #, c-format
 msgid "syntax error (expected char `%c', found end of instruction)"
 msgstr "error sintáctico (se esperaba el carácter `%c', se encontró el final de la instrucción)"
 
-#: fr30-asm.c:592 frv-asm.c:1567 ip2k-asm.c:799 iq2000-asm.c:734
-#: m32r-asm.c:607 openrisc-asm.c:521 xstormy16-asm.c:553
+#: fr30-asm.c:577 frv-asm.c:1530 ip2k-asm.c:778 iq2000-asm.c:724
+#: m32c-asm.c:1744 m32r-asm.c:591 ms1-asm.c:814 openrisc-asm.c:508
+#: xstormy16-asm.c:543
 msgid "junk at end of line"
 msgstr "basura al final de la línea"
 
-#: fr30-asm.c:698 frv-asm.c:1673 ip2k-asm.c:905 iq2000-asm.c:840
-#: m32r-asm.c:713 openrisc-asm.c:627 xstormy16-asm.c:659
+#: fr30-asm.c:683 frv-asm.c:1636 ip2k-asm.c:884 iq2000-asm.c:830
+#: m32c-asm.c:1850 m32r-asm.c:697 ms1-asm.c:920 openrisc-asm.c:614
+#: xstormy16-asm.c:649
 msgid "unrecognized form of instruction"
 msgstr "forma de instrucción no reconocida"
 
-#: fr30-asm.c:710 frv-asm.c:1685 ip2k-asm.c:917 iq2000-asm.c:852
-#: m32r-asm.c:725 openrisc-asm.c:639 xstormy16-asm.c:671
+#: fr30-asm.c:695 frv-asm.c:1648 ip2k-asm.c:896 iq2000-asm.c:842
+#: m32c-asm.c:1862 m32r-asm.c:709 ms1-asm.c:932 openrisc-asm.c:626
+#: xstormy16-asm.c:661
 #, c-format
 msgid "bad instruction `%.50s...'"
 msgstr "instrucción errónea `%.50s...'"
 
-#: fr30-asm.c:713 frv-asm.c:1688 ip2k-asm.c:920 iq2000-asm.c:855
-#: m32r-asm.c:728 openrisc-asm.c:642 xstormy16-asm.c:674
+#: fr30-asm.c:698 frv-asm.c:1651 ip2k-asm.c:899 iq2000-asm.c:845
+#: m32c-asm.c:1865 m32r-asm.c:712 ms1-asm.c:935 openrisc-asm.c:629
+#: xstormy16-asm.c:664
 #, c-format
 msgid "bad instruction `%.50s'"
 msgstr "instrucción errónea `%.50s'"
 
 #. Default text to print if an instruction isn't recognized.
-#: fr30-dis.c:41 frv-dis.c:41 ip2k-dis.c:41 iq2000-dis.c:41 m32r-dis.c:41
-#: mmix-dis.c:284 openrisc-dis.c:41 xstormy16-dis.c:41
+#: fr30-dis.c:41 frv-dis.c:41 ip2k-dis.c:41 iq2000-dis.c:41 m32c-dis.c:41
+#: m32r-dis.c:41 mmix-dis.c:278 ms1-dis.c:41 openrisc-dis.c:41
+#: xstormy16-dis.c:41
 msgid "*unknown*"
 msgstr "*desconocida*"
 
-#: fr30-dis.c:319 frv-dis.c:410 ip2k-dis.c:313 iq2000-dis.c:191 m32r-dis.c:262
-#: openrisc-dis.c:137 xstormy16-dis.c:170
+#: fr30-dis.c:299 frv-dis.c:396 ip2k-dis.c:288 iq2000-dis.c:189 m32c-dis.c:860
+#: m32r-dis.c:256 ms1-dis.c:258 openrisc-dis.c:135 xstormy16-dis.c:168
 #, c-format
 msgid "Unrecognized field %d while printing insn.\n"
 msgstr "No se reconoció el campo %d al mostrar insn.\n"
 
-#: fr30-ibld.c:168 frv-ibld.c:168 ip2k-ibld.c:168 iq2000-ibld.c:168
-#: m32r-ibld.c:168 openrisc-ibld.c:168 xstormy16-ibld.c:168
+#: fr30-ibld.c:163 frv-ibld.c:163 ip2k-ibld.c:163 iq2000-ibld.c:163
+#: m32c-ibld.c:163 m32r-ibld.c:163 ms1-ibld.c:163 openrisc-ibld.c:163
+#: xstormy16-ibld.c:163
 #, c-format
 msgid "operand out of range (%ld not between %ld and %lu)"
 msgstr "operando fuera de rango (%ld no está entre %ld y %lu)"
 
-#: fr30-ibld.c:181 frv-ibld.c:181 ip2k-ibld.c:181 iq2000-ibld.c:181
-#: m32r-ibld.c:181 openrisc-ibld.c:181 xstormy16-ibld.c:181
+#: fr30-ibld.c:176 frv-ibld.c:176 ip2k-ibld.c:176 iq2000-ibld.c:176
+#: m32c-ibld.c:176 m32r-ibld.c:176 ms1-ibld.c:176 openrisc-ibld.c:176
+#: xstormy16-ibld.c:176
 #, c-format
 msgid "operand out of range (%lu not between 0 and %lu)"
 msgstr "operando fuera de rango (%lu no está entre 0 y %lu)"
 
-#: fr30-ibld.c:732 frv-ibld.c:858 ip2k-ibld.c:609 iq2000-ibld.c:715
-#: m32r-ibld.c:667 openrisc-ibld.c:635 xstormy16-ibld.c:680
+#: fr30-ibld.c:719 frv-ibld.c:845 ip2k-ibld.c:596 iq2000-ibld.c:702
+#: m32c-ibld.c:1668 m32r-ibld.c:654 ms1-ibld.c:713 openrisc-ibld.c:622
+#: xstormy16-ibld.c:667
 #, c-format
 msgid "Unrecognized field %d while building insn.\n"
 msgstr "No se reconoció el campo %d al construir insn.\n"
 
-#: fr30-ibld.c:939 frv-ibld.c:1177 ip2k-ibld.c:686 iq2000-ibld.c:892
-#: m32r-ibld.c:806 openrisc-ibld.c:737 xstormy16-ibld.c:828
+#: fr30-ibld.c:924 frv-ibld.c:1162 ip2k-ibld.c:671 iq2000-ibld.c:877
+#: m32c-ibld.c:2780 m32r-ibld.c:791 ms1-ibld.c:907 openrisc-ibld.c:722
+#: xstormy16-ibld.c:813
 #, c-format
 msgid "Unrecognized field %d while decoding insn.\n"
 msgstr "No se reconoció el campo %d al decodificar insn.\n"
 
-#: fr30-ibld.c:1088 frv-ibld.c:1458 ip2k-ibld.c:763 iq2000-ibld.c:1026
-#: m32r-ibld.c:922 openrisc-ibld.c:817 xstormy16-ibld.c:941
+#: fr30-ibld.c:1070 frv-ibld.c:1440 ip2k-ibld.c:745 iq2000-ibld.c:1008
+#: m32c-ibld.c:3379 m32r-ibld.c:904 ms1-ibld.c:1086 openrisc-ibld.c:799
+#: xstormy16-ibld.c:923
 #, c-format
 msgid "Unrecognized field %d while getting int operand.\n"
 msgstr "No se reconoció el campo %d al obtener el operando int.\n"
 
-#: fr30-ibld.c:1217 frv-ibld.c:1719 ip2k-ibld.c:820 iq2000-ibld.c:1140
-#: m32r-ibld.c:1018 openrisc-ibld.c:877 xstormy16-ibld.c:1034
+#: fr30-ibld.c:1198 frv-ibld.c:1700 ip2k-ibld.c:801 iq2000-ibld.c:1121
+#: m32c-ibld.c:3960 m32r-ibld.c:999 ms1-ibld.c:1247 openrisc-ibld.c:858
+#: xstormy16-ibld.c:1015
 #, c-format
 msgid "Unrecognized field %d while getting vma operand.\n"
 msgstr "No se reconoció el campo %d al obtener el operando vma.\n"
 
-#: fr30-ibld.c:1351 frv-ibld.c:1989 ip2k-ibld.c:882 iq2000-ibld.c:1263
-#: m32r-ibld.c:1122 openrisc-ibld.c:946 xstormy16-ibld.c:1136
+#: fr30-ibld.c:1329 frv-ibld.c:1967 ip2k-ibld.c:860 iq2000-ibld.c:1241
+#: m32c-ibld.c:4529 m32r-ibld.c:1100 ms1-ibld.c:1415 openrisc-ibld.c:924
+#: xstormy16-ibld.c:1114
 #, c-format
 msgid "Unrecognized field %d while setting int operand.\n"
 msgstr "No se reconoció el campo %d al establecer el operando int.\n"
 
-#: fr30-ibld.c:1473 frv-ibld.c:2247 ip2k-ibld.c:932 iq2000-ibld.c:1374
-#: m32r-ibld.c:1214 openrisc-ibld.c:1003 xstormy16-ibld.c:1226
+#: fr30-ibld.c:1450 frv-ibld.c:2224 ip2k-ibld.c:909 iq2000-ibld.c:1351
+#: m32c-ibld.c:5088 m32r-ibld.c:1191 ms1-ibld.c:1573 openrisc-ibld.c:980
+#: xstormy16-ibld.c:1203
 #, c-format
 msgid "Unrecognized field %d while setting vma operand.\n"
 msgstr "No se reconoció el campo %d al establecer el operando vma.\n"
 
-#: frv-asm.c:978
+#: frv-asm.c:607
+msgid "missing `]'"
+msgstr "falta un `]'"
+
+#: frv-asm.c:610 frv-asm.c:620
+msgid "Special purpose register number is out of range"
+msgstr "El número de registro de propósito especial está fuera de rango"
+
+#: frv-asm.c:907
+msgid "Value of A operand must be 0 or 1"
+msgstr "El valor del operando A debe ser 0 o 1"
+
+#: frv-asm.c:943
 msgid "register number must be even"
 msgstr "el número de registro debe ser par"
 
-#: h8300-dis.c:358
+#. -- assembler routines inserted here.
+#. -- asm.c
+#: frv-asm.c:971 iq2000-asm.c:55 m32c-asm.c:140 m32c-asm.c:211 m32c-asm.c:253
+#: m32c-asm.c:312 m32c-asm.c:334 m32r-asm.c:52 openrisc-asm.c:53
+msgid "missing `)'"
+msgstr "falta un `)'"
+
+#: h8300-dis.c:325
 #, c-format
 msgid "Hmmmm 0x%x"
 msgstr "Hmmmm 0x%x"
 
-#: h8300-dis.c:744
+#: h8300-dis.c:706
 #, c-format
 msgid "Don't understand 0x%x \n"
 msgstr "No se entiende 0x%x \n"
 
-#: h8500-dis.c:143
+#: h8500-dis.c:122
 #, c-format
 msgid "can't cope with insert %d\n"
 msgstr "no se puede lidiar con insert %d\n"
 
 #. Couldn't understand anything.
-#: h8500-dis.c:342
+#: h8500-dis.c:322
 #, c-format
 msgid "%02x\t\t*unknown*"
 msgstr "%02x\t\t*desconocido*"
 
-#: i386-dis.c:1733
+#: i386-dis.c:1742
 msgid "<internal disassembler error>"
 msgstr "<error interno del desensamblador>"
 
@@ -350,124 +487,175 @@ msgstr "no se puede cambiar el directorio a \"%s\", errno = %s\n"
 
 #. We've been passed a w.  Return with an error message so that
 #. cgen will try the next parsing option.
-#: ip2k-asm.c:92
+#: ip2k-asm.c:80
 msgid "W keyword invalid in FR operand slot."
 msgstr "la palabra clave W es inválida en la ranura del operando FR."
 
 #. Invalid offset present.
-#: ip2k-asm.c:117
+#: ip2k-asm.c:105
 msgid "offset(IP) is not a valid form"
 msgstr "el desplazamiento(IP) no es una forma válida"
 
 #. Found something there in front of (DP) but it's out
 #. of range.
-#: ip2k-asm.c:165
+#: ip2k-asm.c:153
 msgid "(DP) offset out of range."
 msgstr "desplazamiento (DP) fuera de rango."
 
 #. Found something there in front of (SP) but it's out
 #. of range.
-#: ip2k-asm.c:206
+#: ip2k-asm.c:194
 msgid "(SP) offset out of range."
 msgstr "desplazamiento (SP) fuera de rango."
 
-#: ip2k-asm.c:222
+#: ip2k-asm.c:210
 msgid "illegal use of parentheses"
 msgstr "uso ilegal de paréntesis"
 
-#: ip2k-asm.c:229
+#: ip2k-asm.c:217
 msgid "operand out of range (not between 1 and 255)"
 msgstr "operando fuera de rango (no está entre 1 y 255)"
 
 #. Something is very wrong. opindex has to be one of the above.
-#: ip2k-asm.c:254
+#: ip2k-asm.c:241
 msgid "parse_addr16: invalid opindex."
 msgstr "parse_addr16: índice de operador inválido."
 
-#: ip2k-asm.c:309
+#: ip2k-asm.c:295
 msgid "Byte address required. - must be even."
 msgstr "Se requiere una dirección de byte. - debe ser par."
 
-#: ip2k-asm.c:318
+#: ip2k-asm.c:304
 msgid "cgen_parse_address returned a symbol. Literal required."
 msgstr "cgen_parse_address devolvió un símbolo. Se requiere una literal."
 
-#: ip2k-asm.c:376
-#, c-format
-msgid "%operator operand is not a symbol"
-msgstr "el operando %operator no es un símbolo"
+#: ip2k-asm.c:359
+msgid "percent-operator operand is not a symbol"
+msgstr "el operando operador-porcentaje no es un símbolo"
 
-#: ip2k-asm.c:430
+#: ip2k-asm.c:412
 msgid "Attempt to find bit index of 0"
 msgstr "Se intentó encontrar un índice de bit de 0"
 
-#: iq2000-asm.c:115 iq2000-asm.c:146
+#: iq2000-asm.c:111 iq2000-asm.c:141
 msgid "immediate value cannot be register"
 msgstr "el valor inmediato no puede ser un registro"
 
-#: iq2000-asm.c:126 iq2000-asm.c:156
+#: iq2000-asm.c:122 iq2000-asm.c:152
 msgid "immediate value out of range"
 msgstr "el valor inmediato está fuera de rango"
 
-#: iq2000-asm.c:185
+#: iq2000-asm.c:181
 msgid "21-bit offset out of range"
 msgstr "desplazamiento de 21-bit fuera de rango"
 
-#: iq2000-asm.c:210 iq2000-asm.c:240 iq2000-asm.c:277 iq2000-asm.c:310
-#: openrisc-asm.c:90 openrisc-asm.c:144
-msgid "missing `)'"
-msgstr "falta un `)'"
-
-#: m10200-dis.c:199
-#, c-format
-msgid "unknown\t0x%02x"
-msgstr "desconocido\t0x%02x"
-
-#: m10200-dis.c:339
+#: m10200-dis.c:156 m10300-dis.c:580
 #, c-format
 msgid "unknown\t0x%04lx"
 msgstr "desconocido\t0x%04lx"
 
-#: m10300-dis.c:767
+#: m10200-dis.c:326
 #, c-format
-msgid "unknown\t0x%04x"
-msgstr "desconocido\t0x%04x"
+msgid "unknown\t0x%02lx"
+msgstr "desconocido\t0x%02lx"
+
+#: m32c-asm.c:116
+msgid "imm:6 immediate is out of range"
+msgstr "el inmediato imm:6 está fuera de rango"
 
-#: m68k-dis.c:295
+#: m32c-asm.c:146
 #, c-format
-msgid "<internal error in opcode table: %s %s>\n"
-msgstr "<error interno en la tabla de códigos de operación: %s %s>\n"
+msgid "%dsp8() takes a symbolic address, not a number"
+msgstr "%dsp8() toma una dirección simbólica, no un número"
 
-#: m68k-dis.c:1089
+#: m32c-asm.c:159 m32c-asm.c:163 m32c-asm.c:229
+msgid "dsp:8 immediate is out of range"
+msgstr "el inmediato dsp:8 está fuera de rango"
+
+#: m32c-asm.c:184 m32c-asm.c:188
+msgid "Immediate is out of range -8 to 7"
+msgstr "El inmediato está fuera del rango -8 a 7"
+
+#: m32c-asm.c:259
+#, c-format
+msgid "%dsp16() takes a symbolic address, not a number"
+msgstr "%dsp16() toma una dirección simbólica, no un número"
+
+#: m32c-asm.c:282 m32c-asm.c:289 m32c-asm.c:352
+msgid "dsp:16 immediate is out of range"
+msgstr "el inmediato dsp:16 está fuera de rango"
+
+#: m32c-asm.c:378
+msgid "dsp:20 immediate is out of range"
+msgstr "el inmediato dsp:20 está fuera de rango"
+
+#: m32c-asm.c:404
+msgid "dsp:24 immediate is out of range"
+msgstr "el inmediato dsp:24 está fuera de rango"
+
+#: m32c-asm.c:437
+msgid "immediate is out of range 1-2"
+msgstr "el inmediato está fuera del rango 1-2"
+
+#: m32c-asm.c:455
+msgid "immediate is out of range 1-8"
+msgstr "el inmediato está fuera del rango 1-8"
+
+#: m32c-asm.c:491
+msgid "immediate is out of range 2-9"
+msgstr "el inmediato está fuera del rango 2-9"
+
+#: m32c-asm.c:509
+msgid "Bit number for indexing general register is out of range 0-15"
+msgstr "El número de bit para el registro general de indización está fuera del rango 0-15"
+
+#: m32c-asm.c:541 m32c-asm.c:576
+msgid "bit,base is out of range"
+msgstr "bit,base está fuera de rango"
+
+#: m32c-asm.c:712
+msgid "not a valid r0l/r0h pair"
+msgstr "no es un par r0l/r0h válido"
+
+#: m32c-asm.c:742
+msgid "Invalid size specifier"
+msgstr "Especificador de tamaño inválido"
+
+#: m68k-dis.c:1162
 #, c-format
 msgid "<function code %d>"
 msgstr "<código de función %d>"
 
-#: m88k-dis.c:746
+#: m68k-dis.c:1313
+#, c-format
+msgid "<internal error in opcode table: %s %s>\n"
+msgstr "<error interno en la tabla de códigos de operación: %s %s>\n"
+
+#: m88k-dis.c:679
 #, c-format
-msgid "# <dis error: %08x>"
-msgstr "# <error de desensamblador: %08x>"
+msgid "# <dis error: %08lx>"
+msgstr "# <error de desensamblador: %08lx>"
 
-#: mips-dis.c:720
+#: mips-dis.c:718
 msgid "# internal error, incomplete extension sequence (+)"
 msgstr "# error interno, secuencia de extensión incompleta (+)"
 
-#: mips-dis.c:779
+#: mips-dis.c:805
 #, c-format
 msgid "# internal error, undefined extension sequence (+%c)"
 msgstr "# error interno, secuencia de extensión sin definir (+%c)"
 
-#: mips-dis.c:1037
+#: mips-dis.c:1153
 #, c-format
 msgid "# internal error, undefined modifier(%c)"
 msgstr "# error interno, modificador(%c) sin definir"
 
-#: mips-dis.c:1793
+#: mips-dis.c:1663
 #, c-format
 msgid "# internal disassembler error, unrecognised modifier (%c)"
 msgstr "# error interno del desensamblador, modificador (%c) no reconocido"
 
-#: mips-dis.c:1805
+#: mips-dis.c:1894
 #, c-format
 msgid ""
 "\n"
@@ -478,7 +666,7 @@ msgstr ""
 "Las siguientes opciones de desensamblador específicas de MIPS tienen soporte\n"
 "para su uso con el interruptor -M (las opciones múltiples se deben separar con comas):\n"
 
-#: mips-dis.c:1809
+#: mips-dis.c:1898
 #, c-format
 msgid ""
 "\n"
@@ -489,7 +677,7 @@ msgstr ""
 "  gpr-names=ABI            Muestra los nombres GPR de acuerdo a la ABI especificada.\n"
 "                           Por defecto: basado en el binario a desensamblar.\n"
 
-#: mips-dis.c:1813
+#: mips-dis.c:1902
 #, c-format
 msgid ""
 "\n"
@@ -500,7 +688,7 @@ msgstr ""
 "  fpr-names=ABI            Muestra los nombres FPR de acuerdo a la ABI especificada.\n"
 "                           Por defecto: numérico.\n"
 
-#: mips-dis.c:1817
+#: mips-dis.c:1906
 #, c-format
 msgid ""
 "\n"
@@ -513,7 +701,7 @@ msgstr ""
 "                           la arquitectura especificada.\n"
 "                           Por defecto: basado en el binario a desensamblar.\n"
 
-#: mips-dis.c:1822
+#: mips-dis.c:1911
 #, c-format
 msgid ""
 "\n"
@@ -526,7 +714,7 @@ msgstr ""
 "                           especificada.\n"
 "                           Por defecto: basado en el binario a desensamblar.\n"
 
-#: mips-dis.c:1827
+#: mips-dis.c:1916
 #, c-format
 msgid ""
 "\n"
@@ -537,7 +725,7 @@ msgstr ""
 "  reg-names=ABI            Muestra los nombres GPR y FPR de acuerdo a\n"
 "                           la ABI especificada.\n"
 
-#: mips-dis.c:1831
+#: mips-dis.c:1920
 #, c-format
 msgid ""
 "\n"
@@ -548,7 +736,7 @@ msgstr ""
 "  reg-names=ARCH           Muestra el registro CP0 y los nombres HWR de acuerdo a\n"
 "                           la arquitectura especificada.\n"
 
-#: mips-dis.c:1835
+#: mips-dis.c:1924
 #, c-format
 msgid ""
 "\n"
@@ -559,12 +747,12 @@ msgstr ""
 "  Para las opciones anteriores, se da soporte a los siguientes valores de \"ABI\":\n"
 "   "
 
-#: mips-dis.c:1840 mips-dis.c:1848 mips-dis.c:1850
+#: mips-dis.c:1929 mips-dis.c:1937 mips-dis.c:1939
 #, c-format
 msgid "\n"
 msgstr "\n"
 
-#: mips-dis.c:1842
+#: mips-dis.c:1931
 #, c-format
 msgid ""
 "\n"
@@ -575,146 +763,166 @@ msgstr ""
 "  Para las opciones anteriores, se da soporte a los siguientes valores de \"ARCH\":\n"
 "   "
 
-#: mmix-dis.c:34
+#: mmix-dis.c:35
 #, c-format
 msgid "Bad case %d (%s) in %s:%d\n"
 msgstr "Case %d erróneo (%s) en %s:%d\n"
 
-#: mmix-dis.c:44
+#: mmix-dis.c:45
 #, c-format
 msgid "Internal: Non-debugged code (test-case missing): %s:%d"
 msgstr "Interno: Código no depurado (falta el caso de prueba): %s:%d"
 
-#: mmix-dis.c:53
+#: mmix-dis.c:54
 msgid "(unknown)"
 msgstr "(desconocido)"
 
-#: mmix-dis.c:519
+#: mmix-dis.c:513
 #, c-format
 msgid "*unknown operands type: %d*"
 msgstr "*tipo de operandos operandos desconocido: %d*"
 
+#: ms1-asm.c:84 ms1-asm.c:162
+msgid "Operand out of range. Must be between -32768 and 32767."
+msgstr "Operando fuera de rango. Debe estar entre -32768 y 32767."
+
+#: ms1-asm.c:121
+msgid "Biiiig Trouble in parse_imm16!"
+msgstr "¡Graaaan Problema en parse_imm16!"
+
+#: ms1-asm.c:129
+#, c-format
+msgid "%operator operand is not a symbol"
+msgstr "el operando %operator no es un símbolo"
+
+#: ms1-asm.c:367
+msgid "invalid operand.  type may have values 0,1,2 only."
+msgstr "operando inválid.  El tipo sólo puede tener valores 0,1,2."
+
 #. I and Z are output operands and can`t be immediate
-#. * A is an address and we can`t have the address of
-#. * an immediate either. We don't know how much to increase
-#. * aoffsetp by since whatever generated this is broken
-#. * anyway!
-#.
-#: ns32k-dis.c:631
+#. A is an address and we can`t have the address of
+#. an immediate either. We don't know how much to increase
+#. aoffsetp by since whatever generated this is broken
+#. anyway!
+#: ns32k-dis.c:535
 #, c-format
 msgid "$<undefined>"
 msgstr "$<sin definir>"
 
-#: ppc-opc.c:794 ppc-opc.c:822
+#: ppc-opc.c:800 ppc-opc.c:828
 msgid "invalid conditional option"
 msgstr "opción condicional inválida"
 
-#: ppc-opc.c:824
+#: ppc-opc.c:830
 msgid "attempt to set y bit when using + or - modifier"
 msgstr "intento de establecer el bit y cuando se usaba el modificador + ó -"
 
-#: ppc-opc.c:852
+#: ppc-opc.c:858
 msgid "offset not a multiple of 16"
 msgstr "el desplazamiento no es un múltiplo de 16"
 
-#: ppc-opc.c:871
+#: ppc-opc.c:877
 msgid "offset not a multiple of 2"
 msgstr "el desplazamiento no es un múltiplo de 2"
 
-#: ppc-opc.c:873
+#: ppc-opc.c:879
 msgid "offset greater than 62"
 msgstr "el desplazamiento es mayor que 62"
 
-#: ppc-opc.c:892 ppc-opc.c:937 ppc-opc.c:981
+#: ppc-opc.c:898 ppc-opc.c:943 ppc-opc.c:987
 msgid "offset not a multiple of 4"
 msgstr "el desplazamiento no es un múltiplo de 4"
 
-#: ppc-opc.c:894
+#: ppc-opc.c:900
 msgid "offset greater than 124"
 msgstr "el desplazamiento es mayor que 124"
 
-#: ppc-opc.c:913
+#: ppc-opc.c:919
 msgid "offset not a multiple of 8"
 msgstr "el desplazamiento no es un múltiplo de 8"
 
-#: ppc-opc.c:915
+#: ppc-opc.c:921
 msgid "offset greater than 248"
 msgstr "el desplazamiento es mayor que 248"
 
-#: ppc-opc.c:958
+#: ppc-opc.c:964
 msgid "offset not between -2048 and 2047"
 msgstr "el desplazamiento no está entre -2048 y 2047"
 
-#: ppc-opc.c:979
+#: ppc-opc.c:985
 msgid "offset not between -8192 and 8191"
 msgstr "el desplazamiento no está entre -8192 y 8191"
 
-#: ppc-opc.c:1007
+#: ppc-opc.c:1013
 msgid "invalid mask field"
 msgstr "campo de máscara inválido"
 
-#: ppc-opc.c:1033
+#: ppc-opc.c:1039
 msgid "ignoring invalid mfcr mask"
 msgstr "se ignora la máscara mfcr inválida"
 
-#: ppc-opc.c:1075
+#: ppc-opc.c:1081
 msgid "ignoring least significant bits in branch offset"
 msgstr "ignorando los bits menos significativos en el desplazamiento de la rama"
 
-#: ppc-opc.c:1105 ppc-opc.c:1140
+#: ppc-opc.c:1111 ppc-opc.c:1146
 msgid "illegal bitmask"
 msgstr "máscara de bits ilegal"
 
-#: ppc-opc.c:1205
+#: ppc-opc.c:1211
 msgid "value out of range"
 msgstr "valor fuera de rango"
 
-#: ppc-opc.c:1273
+#: ppc-opc.c:1279
 msgid "index register in load range"
 msgstr "registro índice en el rango de carga"
 
-#: ppc-opc.c:1289
+#: ppc-opc.c:1295
 msgid "source and target register operands must be different"
 msgstr "los operandos de registros fuente y objetivo deben ser diferentes"
 
-#: ppc-opc.c:1304
+#: ppc-opc.c:1310
 msgid "invalid register operand when updating"
 msgstr "operando de registro inválido mientras se actualizaba"
 
-#: ppc-opc.c:1343
+#: ppc-opc.c:1349
 msgid "target register operand must be even"
 msgstr "el operando de registro objetivo debe ser par"
 
-#: ppc-opc.c:1357
+#: ppc-opc.c:1363
 msgid "source register operand must be even"
 msgstr "el operando de registro fuente debe ser par"
 
-#. Mark as non-valid instruction.
-#: sparc-dis.c:760
-msgid "unknown"
-msgstr "desconocida"
+#: ppc-opc.c:1420
+msgid "invalid sprg number"
+msgstr "número sprg inválido"
 
-#: sparc-dis.c:835
+#: sparc-dis.c:269
 #, c-format
 msgid "Internal error:  bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
 msgstr "Error interno:  sparc-opcode.h erróneo: \"%s\", %#.8lx, %#.8lx\n"
 
-#: sparc-dis.c:846
+#: sparc-dis.c:280
 #, c-format
 msgid "Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
 msgstr "Error interno: sparc-opcode.h erróneo: \"%s\", %#.8lx, %#.8lx\n"
 
-#: sparc-dis.c:895
+#: sparc-dis.c:330
 #, c-format
 msgid "Internal error: bad sparc-opcode.h: \"%s\" == \"%s\"\n"
 msgstr "Error interno: sparc-opcode.h erróneo: \"%s\" == \"%s\"\n"
 
-#: v850-dis.c:225
+#. Mark as non-valid instruction.
+#: sparc-dis.c:984
+msgid "unknown"
+msgstr "desconocida"
+
+#: v850-dis.c:237
 #, c-format
 msgid "unknown operand shift: %x\n"
 msgstr "operando de desplazamiento desconocido: %x\n"
 
-#: v850-dis.c:237
+#: v850-dis.c:251
 #, c-format
 msgid "unknown pop reg: %d\n"
 msgstr "registro pop desconocido: %d\n"
@@ -724,89 +932,92 @@ msgstr "registro pop desconocido: %d\n"
 #. v850_insert_operand() in gas/config/tc-v850.c.  Error messages
 #. containing the string 'out of range' will be ignored unless a
 #. specific command line option is given to GAS.
-#: v850-opc.c:69
+#: v850-opc.c:46
 msgid "displacement value is not in range and is not aligned"
 msgstr "el valor de desubicación no está en el rango y no está alineado"
 
-#: v850-opc.c:70
+#: v850-opc.c:47
 msgid "displacement value is out of range"
 msgstr "el valor de desubicación está fuera de rango"
 
-#: v850-opc.c:71
+#: v850-opc.c:48
 msgid "displacement value is not aligned"
 msgstr "el valor de desubicación no está alineado"
 
-#: v850-opc.c:73
+#: v850-opc.c:50
 msgid "immediate value is out of range"
 msgstr "el valor inmediato está fuera de rango"
 
-#: v850-opc.c:84
+#: v850-opc.c:58
 msgid "branch value not in range and to odd offset"
 msgstr "el valor de ramificación no está en rango e indica un desplazamiento impar"
 
-#: v850-opc.c:86 v850-opc.c:118
+#: v850-opc.c:60 v850-opc.c:87
 msgid "branch value out of range"
 msgstr "el valor de ramificación está fuera de rango"
 
-#: v850-opc.c:89 v850-opc.c:121
+#: v850-opc.c:63 v850-opc.c:90
 msgid "branch to odd offset"
 msgstr "ramificación a un desplazamiento impar"
 
-#: v850-opc.c:116
+#: v850-opc.c:85
 msgid "branch value not in range and to an odd offset"
 msgstr "el valor de ramificación no está en rango e indica un desplazamiento impar"
 
-#: v850-opc.c:347
+#: v850-opc.c:277
 msgid "invalid register for stack adjustment"
 msgstr "registro inválido para el ajuste de la pila"
 
-#: v850-opc.c:371
+#: v850-opc.c:297
 msgid "immediate value not in range and not even"
 msgstr "el valor inmediato no está en rango y no es par"
 
-#: v850-opc.c:376
+#: v850-opc.c:302
 msgid "immediate value must be even"
 msgstr "el valor inmediato debe ser par"
 
-#: xstormy16-asm.c:76
+#: xstormy16-asm.c:70
 msgid "Bad register in preincrement"
 msgstr "Registro erróneo en el preincremento"
 
-#: xstormy16-asm.c:81
+#: xstormy16-asm.c:75
 msgid "Bad register in postincrement"
 msgstr "Registro erróneo en el postincremento"
 
-#: xstormy16-asm.c:83
+#: xstormy16-asm.c:77
 msgid "Bad register name"
 msgstr "Nombre de registro erróneo"
 
-#: xstormy16-asm.c:87
+#: xstormy16-asm.c:81
 msgid "Label conflicts with register name"
 msgstr "La etiqueta tiene conflictos con el nombre de registro"
 
-#: xstormy16-asm.c:91
+#: xstormy16-asm.c:85
 msgid "Label conflicts with `Rx'"
 msgstr "La etiqueta tiene conflictos con `Rx'"
 
-#: xstormy16-asm.c:93
+#: xstormy16-asm.c:87
 msgid "Bad immediate expression"
 msgstr "Expresión inmediata errónea"
 
-#: xstormy16-asm.c:115
+#: xstormy16-asm.c:108
 msgid "No relocation for small immediate"
 msgstr "No hay reubicaciones para inmediatos small"
 
-#: xstormy16-asm.c:125
+#: xstormy16-asm.c:118
 msgid "Small operand was not an immediate number"
 msgstr "El operando small no era un número inmediato"
 
-#: xstormy16-asm.c:164
+#: xstormy16-asm.c:156
 msgid "Operand is not a symbol"
 msgstr "El operando no es un símbolo"
 
-#: xstormy16-asm.c:172
+#: xstormy16-asm.c:164
 msgid "Syntax error: No trailing ')'"
 msgstr "Error sintáctico: No hay ')' al final"
 
+#~ msgid "unknown\t0x%04x"
+#~ msgstr "desconocido\t0x%04x"
+
 #~ msgid "unrecognized keyword/register name"
 #~ msgstr "nombre clave/de registro no reconocido"
index 956ec8e..9441fad 100644 (file)
 # translation of opcodes-2.15.96.fi.po to Finnish
-# translation of opcodes-2.15.96.fi.po to suomi
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the binutils package.
 # Copyright (C) 2005 Free Software Foundation, Inc.
-# Jorma Karvonen <karvjorm@users.sourceforge.net>, 2005
+# Jorma Karvonen <karvjorm@users.sourceforge.net>, 2006
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: opcodes 2.15.96\n"
+"Project-Id-Version: opcodes 2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-05 20:32+1030\n"
-"PO-Revision-Date: 2005-04-13 19:40+03:00\n"
+"POT-Creation-Date: 2005-10-25 10:50+0930\n"
+"PO-Revision-Date: 2006-06-09 12:16+0200\n"
 "Last-Translator: Jorma Karvonen <karvjorm@users.sourceforge.net>\n"
 "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: KBabel 1.0.1\n"
+"X-Poedit-Language: Finnish\n"
+"X-Poedit-Country: FINLAND\n"
+"X-Poedit-SourceCharset: utf-8\n"
 
-#: alpha-opc.c:331
+#: alpha-opc.c:155
 msgid "branch operand unaligned"
 msgstr "haaroituskohdemuuttuja ei ole tasarajalla"
 
-#: alpha-opc.c:353 alpha-opc.c:374
+#: alpha-opc.c:171 alpha-opc.c:187
 msgid "jump hint unaligned"
 msgstr "hyppyvihje ei ole tasarajalla"
 
-#: arc-dis.c:76
+#: arc-dis.c:75
 msgid "Illegal limm reference in last instruction!\n"
-msgstr "Viimeisimmän käskyn virheellinen limm-viittaus!\n"
+msgstr "Viimeisimmän käskyn virheellinen long-tyyppinen suora muistiosoiteviittaus!\n"
 
-#: arm-dis.c:1267
+#: arc-opc.c:384
+msgid "unable to fit different valued constants into instruction"
+msgstr "Eriarvoiset vakiot eivät sovi käskyyn"
+
+#: arc-opc.c:393
+msgid "auxiliary register not allowed here"
+msgstr "apurekisteriä ei sallita tässä"
+
+#: arc-opc.c:399 arc-opc.c:416
+msgid "attempt to set readonly register"
+msgstr "yritettiin asettaa kirjoittamiselta suojattua rekisteriä"
+
+#: arc-opc.c:404 arc-opc.c:421
+msgid "attempt to read writeonly register"
+msgstr "yritettiin lukea lukemiselta suojattua rekisteriä"
+
+#: arc-opc.c:426
+#, c-format
+msgid "invalid register number `%d'"
+msgstr "Väärä rekisterinimi \"%d\""
+
+#: arc-opc.c:592 arc-opc.c:643 arc-opc.c:671
+msgid "too many long constants"
+msgstr "liian monta pitkää vakiota"
+
+#  otaksun: to many -> too many ...
+#: arc-opc.c:666
+msgid "to many shimms in load"
+msgstr "liian monta short-tyyppistä suoraa muistiosoitetta ladattavana"
+
+#. Do we have a limm already?
+#: arc-opc.c:779
+msgid "impossible store"
+msgstr "mahdotonta tallentaa"
+
+#: arc-opc.c:812
+msgid "st operand error"
+msgstr "st-kohdemuuttujavirhe"
+
+#: arc-opc.c:816 arc-opc.c:858
+msgid "address writeback not allowed"
+msgstr "osoitteen kirjoitus takaisin ei ole sallittu"
+
+#: arc-opc.c:820
+msgid "store value must be zero"
+msgstr "tallennettavan arvon on oltava nolla"
+
+#: arc-opc.c:845
+msgid "invalid load/shimm insn"
+msgstr "virheellinen lataus/short-tyyppinen suora muistiosoitekäsky"
+
+#: arc-opc.c:854
+msgid "ld operand error"
+msgstr "ld-käskyn kohdemuuttujan virhe"
+
+#: arc-opc.c:941
+msgid "jump flags, but no .f seen"
+msgstr "hyppyliput, mutta .f-määritettä ei ole"
+
+#: arc-opc.c:944
+msgid "jump flags, but no limm addr"
+msgstr "hyppyliput, mutta long-tyyppistä suoraa muistiosoitetta ei ole"
+
+#: arc-opc.c:947
+msgid "flag bits of jump address limm lost"
+msgstr "long-tyyppisen suoran muistiosoituksen hyppyosoitteen lippubitit puuttuvat"
+
+#: arc-opc.c:950
+msgid "attempt to set HR bits"
+msgstr "yritettiin asettaa HR-bitit"
+
+#: arc-opc.c:953
+msgid "bad jump flags value"
+msgstr "virheellinen hyppylippujen arvo"
+
+#: arc-opc.c:986
+msgid "branch address not on 4 byte boundary"
+msgstr "haaroitusosoite ei ole 4-tavurajalla"
+
+#: arc-opc.c:1022
+msgid "must specify .jd or no nullify suffix"
+msgstr "on määriteltävä .jd tai nollattava suffiksi"
+
+#: arm-dis.c:1302
 msgid "<illegal precision>"
 msgstr "<virheellinen tarkkuus>"
 
 #. XXX - should break 'option' at following delimiter.
-#: arm-dis.c:1912
+#: arm-dis.c:2746
 #, c-format
 msgid "Unrecognised register name set: %s\n"
 msgstr "Tuntematon rekisterinimijoukko: %s\n"
 
 #. XXX - should break 'option' at following delimiter.
-#: arm-dis.c:1920
+#: arm-dis.c:2754
 #, c-format
 msgid "Unrecognised disassembler option: %s\n"
 msgstr "Tunnistamaton disassembler-valinta: %s\n"
 
-#: arm-dis.c:2093
+#: arm-dis.c:2916
 #, c-format
 msgid ""
 "\n"
@@ -56,23 +141,24 @@ msgstr ""
 "Seuraavia ARM-kohtaisia disassembler-valintoja tuetaan käytössä\n"
 "-M -valinnan kanssa:\n"
 
-#: avr-dis.c:112 avr-dis.c:122
+#: avr-dis.c:109 avr-dis.c:119
 #, c-format
 msgid "undefined"
 msgstr "määrittelemätön"
 
-#: avr-dis.c:179
+#: avr-dis.c:176
 #, c-format
 msgid "Internal disassembler error"
 msgstr "Sisäinen disassembler-virhe"
 
-#: avr-dis.c:227
+#: avr-dis.c:225
 #, c-format
 msgid "unknown constraint `%c'"
 msgstr "tuntematon rajoite \"%c\""
 
-#: cgen-asm.c:336 fr30-ibld.c:197 frv-ibld.c:197 ip2k-ibld.c:197
-#: iq2000-ibld.c:197 m32r-ibld.c:197 openrisc-ibld.c:197 xstormy16-ibld.c:197
+#: cgen-asm.c:336 fr30-ibld.c:192 frv-ibld.c:192 ip2k-ibld.c:192
+#: iq2000-ibld.c:192 m32c-ibld.c:192 m32r-ibld.c:192 ms1-ibld.c:192
+#: openrisc-ibld.c:192 xstormy16-ibld.c:192
 #, c-format
 msgid "operand out of range (%ld not between %ld and %ld)"
 msgstr "kohdemuuttuja ei ole rajojen sisällä (%ld ei ole %ld:n ja %ld:n välillä)"
@@ -82,7 +168,7 @@ msgstr "kohdemuuttuja ei ole rajojen sisällä (%ld ei ole %ld:n ja %ld:n välil
 msgid "operand out of range (%lu not between %lu and %lu)"
 msgstr "kohdemuuttuja ei ole rajojen sisällä (%lu ei ole %lu:n ja %lu:n välillä)"
 
-#: d30v-dis.c:312
+#: d30v-dis.c:252
 #, c-format
 msgid "<unknown register %d>"
 msgstr "<tuntematon rekisteri %d>"
@@ -98,148 +184,202 @@ msgstr "Tuntematon virhe %d\n"
 msgid "Address 0x%s is out of bounds.\n"
 msgstr "Osoite 0x%s ei ole sallittujen rajojen sisällä.\n"
 
-#: fr30-asm.c:323 frv-asm.c:1298 ip2k-asm.c:530 iq2000-asm.c:465
-#: m32r-asm.c:338 openrisc-asm.c:252 xstormy16-asm.c:284
+#: fr30-asm.c:92 m32c-asm.c:782 m32c-asm.c:789
+msgid "Register number is not valid"
+msgstr "Rekisterinumero ei ole oikea"
+
+#: fr30-asm.c:94
+msgid "Register must be between r0 and r7"
+msgstr "Rekisterin on oltava r0:n ja r7:n välillä"
+
+#: fr30-asm.c:96
+msgid "Register must be between r8 and r15"
+msgstr "Rekisterin on oltava r8:n ja r15:n välillä"
+
+#: fr30-asm.c:115 m32c-asm.c:820
+msgid "Register list is not valid"
+msgstr "Rekisteriluettelo ei ole oikea"
+
+#: fr30-asm.c:309 frv-asm.c:1262 ip2k-asm.c:510 iq2000-asm.c:456
+#: m32c-asm.c:1476 m32r-asm.c:323 ms1-asm.c:546 openrisc-asm.c:240
+#: xstormy16-asm.c:275
 #, c-format
 msgid "Unrecognized field %d while parsing.\n"
 msgstr "Tunnistamaton kenttä %d jäsentämisen aikana.\n"
 
-#: fr30-asm.c:372 frv-asm.c:1347 ip2k-asm.c:579 iq2000-asm.c:514
-#: m32r-asm.c:387 openrisc-asm.c:301 xstormy16-asm.c:333
+#: fr30-asm.c:357 frv-asm.c:1310 ip2k-asm.c:558 iq2000-asm.c:504
+#: m32c-asm.c:1524 m32r-asm.c:371 ms1-asm.c:594 openrisc-asm.c:288
+#: xstormy16-asm.c:323
 msgid "missing mnemonic in syntax string"
 msgstr "syntaksimerkkijonosta puuttuu muistikas"
 
 #. We couldn't parse it.
-#: fr30-asm.c:507 fr30-asm.c:511 fr30-asm.c:598 fr30-asm.c:699 frv-asm.c:1482
-#: frv-asm.c:1486 frv-asm.c:1573 frv-asm.c:1674 ip2k-asm.c:714 ip2k-asm.c:718
-#: ip2k-asm.c:805 ip2k-asm.c:906 iq2000-asm.c:649 iq2000-asm.c:653
-#: iq2000-asm.c:740 iq2000-asm.c:841 m32r-asm.c:522 m32r-asm.c:526
-#: m32r-asm.c:613 m32r-asm.c:714 openrisc-asm.c:436 openrisc-asm.c:440
-#: openrisc-asm.c:527 openrisc-asm.c:628 xstormy16-asm.c:468
-#: xstormy16-asm.c:472 xstormy16-asm.c:559 xstormy16-asm.c:660
+#: fr30-asm.c:492 fr30-asm.c:496 fr30-asm.c:583 fr30-asm.c:684 frv-asm.c:1445
+#: frv-asm.c:1449 frv-asm.c:1536 frv-asm.c:1637 ip2k-asm.c:693 ip2k-asm.c:697
+#: ip2k-asm.c:784 ip2k-asm.c:885 iq2000-asm.c:639 iq2000-asm.c:643
+#: iq2000-asm.c:730 iq2000-asm.c:831 m32c-asm.c:1659 m32c-asm.c:1663
+#: m32c-asm.c:1750 m32c-asm.c:1851 m32r-asm.c:506 m32r-asm.c:510
+#: m32r-asm.c:597 m32r-asm.c:698 ms1-asm.c:729 ms1-asm.c:733 ms1-asm.c:820
+#: ms1-asm.c:921 openrisc-asm.c:423 openrisc-asm.c:427 openrisc-asm.c:514
+#: openrisc-asm.c:615 xstormy16-asm.c:458 xstormy16-asm.c:462
+#: xstormy16-asm.c:549 xstormy16-asm.c:650
 msgid "unrecognized instruction"
 msgstr "tunnistamaton käsky"
 
-#: fr30-asm.c:554 frv-asm.c:1529 ip2k-asm.c:761 iq2000-asm.c:696
-#: m32r-asm.c:569 openrisc-asm.c:483 xstormy16-asm.c:515
+#: fr30-asm.c:539 frv-asm.c:1492 ip2k-asm.c:740 iq2000-asm.c:686
+#: m32c-asm.c:1706 m32r-asm.c:553 ms1-asm.c:776 openrisc-asm.c:470
+#: xstormy16-asm.c:505
 #, c-format
 msgid "syntax error (expected char `%c', found `%c')"
 msgstr "syntaksivirhe (odotettiin merkkiä \"%c\", löydettiin \"%c\")"
 
-#: fr30-asm.c:564 frv-asm.c:1539 ip2k-asm.c:771 iq2000-asm.c:706
-#: m32r-asm.c:579 openrisc-asm.c:493 xstormy16-asm.c:525
+#: fr30-asm.c:549 frv-asm.c:1502 ip2k-asm.c:750 iq2000-asm.c:696
+#: m32c-asm.c:1716 m32r-asm.c:563 ms1-asm.c:786 openrisc-asm.c:480
+#: xstormy16-asm.c:515
 #, c-format
 msgid "syntax error (expected char `%c', found end of instruction)"
 msgstr "syntaksivirhe (odotettiin merkkiä \"%c\", löydettiin käskyn loppu)"
 
-#: fr30-asm.c:592 frv-asm.c:1567 ip2k-asm.c:799 iq2000-asm.c:734
-#: m32r-asm.c:607 openrisc-asm.c:521 xstormy16-asm.c:553
+#: fr30-asm.c:577 frv-asm.c:1530 ip2k-asm.c:778 iq2000-asm.c:724
+#: m32c-asm.c:1744 m32r-asm.c:591 ms1-asm.c:814 openrisc-asm.c:508
+#: xstormy16-asm.c:543
 msgid "junk at end of line"
 msgstr "roskaa rivin lopussa"
 
-#: fr30-asm.c:698 frv-asm.c:1673 ip2k-asm.c:905 iq2000-asm.c:840
-#: m32r-asm.c:713 openrisc-asm.c:627 xstormy16-asm.c:659
+#: fr30-asm.c:683 frv-asm.c:1636 ip2k-asm.c:884 iq2000-asm.c:830
+#: m32c-asm.c:1850 m32r-asm.c:697 ms1-asm.c:920 openrisc-asm.c:614
+#: xstormy16-asm.c:649
 msgid "unrecognized form of instruction"
 msgstr "käskyn muoto tunnistamaton"
 
-#: fr30-asm.c:710 frv-asm.c:1685 ip2k-asm.c:917 iq2000-asm.c:852
-#: m32r-asm.c:725 openrisc-asm.c:639 xstormy16-asm.c:671
+#: fr30-asm.c:695 frv-asm.c:1648 ip2k-asm.c:896 iq2000-asm.c:842
+#: m32c-asm.c:1862 m32r-asm.c:709 ms1-asm.c:932 openrisc-asm.c:626
+#: xstormy16-asm.c:661
 #, c-format
 msgid "bad instruction `%.50s...'"
 msgstr "väärä käsky \"%.50s...\""
 
-#: fr30-asm.c:713 frv-asm.c:1688 ip2k-asm.c:920 iq2000-asm.c:855
-#: m32r-asm.c:728 openrisc-asm.c:642 xstormy16-asm.c:674
+#: fr30-asm.c:698 frv-asm.c:1651 ip2k-asm.c:899 iq2000-asm.c:845
+#: m32c-asm.c:1865 m32r-asm.c:712 ms1-asm.c:935 openrisc-asm.c:629
+#: xstormy16-asm.c:664
 #, c-format
 msgid "bad instruction `%.50s'"
 msgstr "väärä käsky \"%.50s\""
 
 #. Default text to print if an instruction isn't recognized.
-#: fr30-dis.c:41 frv-dis.c:41 ip2k-dis.c:41 iq2000-dis.c:41 m32r-dis.c:41
-#: mmix-dis.c:284 openrisc-dis.c:41 xstormy16-dis.c:41
+#: fr30-dis.c:41 frv-dis.c:41 ip2k-dis.c:41 iq2000-dis.c:41 m32c-dis.c:41
+#: m32r-dis.c:41 mmix-dis.c:278 ms1-dis.c:41 openrisc-dis.c:41
+#: xstormy16-dis.c:41
 msgid "*unknown*"
 msgstr "*tuntematon*"
 
-#: fr30-dis.c:319 frv-dis.c:410 ip2k-dis.c:313 iq2000-dis.c:191 m32r-dis.c:262
-#: openrisc-dis.c:137 xstormy16-dis.c:170
+#: fr30-dis.c:299 frv-dis.c:396 ip2k-dis.c:288 iq2000-dis.c:189 m32c-dis.c:860
+#: m32r-dis.c:256 ms1-dis.c:258 openrisc-dis.c:135 xstormy16-dis.c:168
 #, c-format
 msgid "Unrecognized field %d while printing insn.\n"
 msgstr "Tunnistamaton kenttä %d käskyä tulostettaessa.\n"
 
-#: fr30-ibld.c:168 frv-ibld.c:168 ip2k-ibld.c:168 iq2000-ibld.c:168
-#: m32r-ibld.c:168 openrisc-ibld.c:168 xstormy16-ibld.c:168
+#: fr30-ibld.c:163 frv-ibld.c:163 ip2k-ibld.c:163 iq2000-ibld.c:163
+#: m32c-ibld.c:163 m32r-ibld.c:163 ms1-ibld.c:163 openrisc-ibld.c:163
+#: xstormy16-ibld.c:163
 #, c-format
 msgid "operand out of range (%ld not between %ld and %lu)"
 msgstr "kohdemuuttuja ei ole rajojen sisällä (%ld ei ole %ld:n ja %lu:n välillä)"
 
-#: fr30-ibld.c:181 frv-ibld.c:181 ip2k-ibld.c:181 iq2000-ibld.c:181
-#: m32r-ibld.c:181 openrisc-ibld.c:181 xstormy16-ibld.c:181
+#: fr30-ibld.c:176 frv-ibld.c:176 ip2k-ibld.c:176 iq2000-ibld.c:176
+#: m32c-ibld.c:176 m32r-ibld.c:176 ms1-ibld.c:176 openrisc-ibld.c:176
+#: xstormy16-ibld.c:176
 #, c-format
 msgid "operand out of range (%lu not between 0 and %lu)"
 msgstr "kohdemuuttuja ei ole rajojen sisällä (%lu ei ole 0:n ja %lu:n välillä)"
 
-#: fr30-ibld.c:732 frv-ibld.c:858 ip2k-ibld.c:609 iq2000-ibld.c:715
-#: m32r-ibld.c:667 openrisc-ibld.c:635 xstormy16-ibld.c:680
+#: fr30-ibld.c:719 frv-ibld.c:845 ip2k-ibld.c:596 iq2000-ibld.c:702
+#: m32c-ibld.c:1668 m32r-ibld.c:654 ms1-ibld.c:713 openrisc-ibld.c:622
+#: xstormy16-ibld.c:667
 #, c-format
 msgid "Unrecognized field %d while building insn.\n"
 msgstr "Tunnistamaton kenttä %d käskyä muodostettaessa.\n"
 
-#: fr30-ibld.c:939 frv-ibld.c:1177 ip2k-ibld.c:686 iq2000-ibld.c:892
-#: m32r-ibld.c:806 openrisc-ibld.c:737 xstormy16-ibld.c:828
+#: fr30-ibld.c:924 frv-ibld.c:1162 ip2k-ibld.c:671 iq2000-ibld.c:877
+#: m32c-ibld.c:2780 m32r-ibld.c:791 ms1-ibld.c:907 openrisc-ibld.c:722
+#: xstormy16-ibld.c:813
 #, c-format
 msgid "Unrecognized field %d while decoding insn.\n"
 msgstr "Tunnistamaton kenttä %d käskyä dekoodattaessa.\n"
 
-#: fr30-ibld.c:1088 frv-ibld.c:1458 ip2k-ibld.c:763 iq2000-ibld.c:1026
-#: m32r-ibld.c:922 openrisc-ibld.c:817 xstormy16-ibld.c:941
+#: fr30-ibld.c:1070 frv-ibld.c:1440 ip2k-ibld.c:745 iq2000-ibld.c:1008
+#: m32c-ibld.c:3379 m32r-ibld.c:904 ms1-ibld.c:1086 openrisc-ibld.c:799
+#: xstormy16-ibld.c:923
 #, c-format
 msgid "Unrecognized field %d while getting int operand.\n"
 msgstr "Tunnistamaton kenttä %d kokonaislukukohdemuuttujaa haettaessa.\n"
 
-#: fr30-ibld.c:1217 frv-ibld.c:1719 ip2k-ibld.c:820 iq2000-ibld.c:1140
-#: m32r-ibld.c:1018 openrisc-ibld.c:877 xstormy16-ibld.c:1034
+#: fr30-ibld.c:1198 frv-ibld.c:1700 ip2k-ibld.c:801 iq2000-ibld.c:1121
+#: m32c-ibld.c:3960 m32r-ibld.c:999 ms1-ibld.c:1247 openrisc-ibld.c:858
+#: xstormy16-ibld.c:1015
 #, c-format
 msgid "Unrecognized field %d while getting vma operand.\n"
 msgstr "Tunnistamaton kenttä %d vma-kohdemuuttujaa haettaessa.\n"
 
-#: fr30-ibld.c:1351 frv-ibld.c:1989 ip2k-ibld.c:882 iq2000-ibld.c:1263
-#: m32r-ibld.c:1122 openrisc-ibld.c:946 xstormy16-ibld.c:1136
+#: fr30-ibld.c:1329 frv-ibld.c:1967 ip2k-ibld.c:860 iq2000-ibld.c:1241
+#: m32c-ibld.c:4529 m32r-ibld.c:1100 ms1-ibld.c:1415 openrisc-ibld.c:924
+#: xstormy16-ibld.c:1114
 #, c-format
 msgid "Unrecognized field %d while setting int operand.\n"
 msgstr "Tunnistamaton kenttä %d kokonaislukukohdemuuttujaa asetettaessa.\n"
 
-#: fr30-ibld.c:1473 frv-ibld.c:2247 ip2k-ibld.c:932 iq2000-ibld.c:1374
-#: m32r-ibld.c:1214 openrisc-ibld.c:1003 xstormy16-ibld.c:1226
+#: fr30-ibld.c:1450 frv-ibld.c:2224 ip2k-ibld.c:909 iq2000-ibld.c:1351
+#: m32c-ibld.c:5088 m32r-ibld.c:1191 ms1-ibld.c:1573 openrisc-ibld.c:980
+#: xstormy16-ibld.c:1203
 #, c-format
 msgid "Unrecognized field %d while setting vma operand.\n"
 msgstr "Tunnistamaton kenttä %d vma-kohdemuuttujaa asetettaessa.\n"
 
-#: frv-asm.c:978
+#: frv-asm.c:607
+msgid "missing `]'"
+msgstr "\"]\" puuttuu"
+
+#: frv-asm.c:610 frv-asm.c:620
+msgid "Special purpose register number is out of range"
+msgstr "Erityiskäyttörekisterin numero ei ole rajojen sisällä"
+
+#: frv-asm.c:907
+msgid "Value of A operand must be 0 or 1"
+msgstr "A-kohdemuuttujan arvon on oltava 0 tai 1"
+
+#: frv-asm.c:943
 msgid "register number must be even"
 msgstr "rekisterinumeron on oltava parillinen"
 
-#: h8300-dis.c:358
+#. -- assembler routines inserted here.
+#. -- asm.c
+#: frv-asm.c:971 iq2000-asm.c:55 m32c-asm.c:140 m32c-asm.c:211 m32c-asm.c:253
+#: m32c-asm.c:312 m32c-asm.c:334 m32r-asm.c:52 openrisc-asm.c:53
+msgid "missing `)'"
+msgstr "\")\" puuttuu"
+
+#: h8300-dis.c:325
 #, c-format
 msgid "Hmmmm 0x%x"
 msgstr "Hmmmm 0x%x"
 
-#: h8300-dis.c:744
+#: h8300-dis.c:706
 #, c-format
 msgid "Don't understand 0x%x \n"
 msgstr "0x%x ei ole ymmärrettävä \n"
 
-#: h8500-dis.c:143
+#: h8500-dis.c:122
 #, c-format
 msgid "can't cope with insert %d\n"
 msgstr "kohteen %d sijoittamisesta ei selviydytty\n"
 
 #. Couldn't understand anything.
-#: h8500-dis.c:342
+#: h8500-dis.c:322
 #, c-format
 msgid "%02x\t\t*unknown*"
 msgstr "%02x\t\t*tuntematon*"
 
-#: i386-dis.c:1733
+#: i386-dis.c:1742
 msgid "<internal disassembler error>"
 msgstr "<sisäinen disassembler-virhe>"
 
@@ -353,124 +493,175 @@ msgstr "vaihtaminen hakemistoon \"%s\" ei onnistu, virhenumero = %s\n"
 
 #. We've been passed a w.  Return with an error message so that
 #. cgen will try the next parsing option.
-#: ip2k-asm.c:92
+#: ip2k-asm.c:80
 msgid "W keyword invalid in FR operand slot."
 msgstr "avainsana W virheellinen FR-kohdemuuttujavälissä."
 
 #. Invalid offset present.
-#: ip2k-asm.c:117
+#: ip2k-asm.c:105
 msgid "offset(IP) is not a valid form"
 msgstr "siirros(IP) ei ole virheetön muoto"
 
 #. Found something there in front of (DP) but it's out
 #. of range.
-#: ip2k-asm.c:165
+#: ip2k-asm.c:153
 msgid "(DP) offset out of range."
 msgstr "(DP)-siirros ei ole rajojen sisällä."
 
 #. Found something there in front of (SP) but it's out
 #. of range.
-#: ip2k-asm.c:206
+#: ip2k-asm.c:194
 msgid "(SP) offset out of range."
 msgstr "(SP)-siirros ei ole rajojen sisällä."
 
-#: ip2k-asm.c:222
+#: ip2k-asm.c:210
 msgid "illegal use of parentheses"
 msgstr "sulkeiden virheellinen käyttö"
 
-#: ip2k-asm.c:229
+#: ip2k-asm.c:217
 msgid "operand out of range (not between 1 and 255)"
-msgstr "kohdemuuttuja ei ole rajojen sisällä (ei välillä 1 ja 255)"
+msgstr "kohdemuuttuja ei ole rajojen sisällä (ei 1:n ja 255:n välillä)"
 
 #. Something is very wrong. opindex has to be one of the above.
-#: ip2k-asm.c:254
+#: ip2k-asm.c:241
 msgid "parse_addr16: invalid opindex."
 msgstr "parse_addr16: virheellinen käskyindeksi"
 
-#: ip2k-asm.c:309
+#: ip2k-asm.c:295
 msgid "Byte address required. - must be even."
 msgstr "Vaaditaan tavuosoite - täytyy olla parillinen."
 
-#: ip2k-asm.c:318
+#: ip2k-asm.c:304
 msgid "cgen_parse_address returned a symbol. Literal required."
 msgstr "cgen_parse_address palautti symbolin. Vaaditaan literaali."
 
-#: ip2k-asm.c:376
-#, c-format
-msgid "%operator operand is not a symbol"
-msgstr "%operaattori-kohdemuuttuja ei ole symboli."
+#: ip2k-asm.c:359
+msgid "percent-operator operand is not a symbol"
+msgstr "prosenttioperaattori-kohdemuuttuja ei ole symboli."
 
-#: ip2k-asm.c:430
+#: ip2k-asm.c:412
 msgid "Attempt to find bit index of 0"
 msgstr "Yritettiin löytää 0-bitti-indeksi"
 
-#: iq2000-asm.c:115 iq2000-asm.c:146
+#: iq2000-asm.c:111 iq2000-asm.c:141
 msgid "immediate value cannot be register"
 msgstr "suoraan muistiosoitettu arvo ei voi olla rekisteri"
 
-#: iq2000-asm.c:126 iq2000-asm.c:156
+#: iq2000-asm.c:122 iq2000-asm.c:152
 msgid "immediate value out of range"
 msgstr "suoraan muistiosoitettu arvo ei ole rajojen sisällä"
 
-#: iq2000-asm.c:185
+#: iq2000-asm.c:181
 msgid "21-bit offset out of range"
 msgstr "21-bittinen siirros ei ole rajojen sisällä"
 
-#: iq2000-asm.c:210 iq2000-asm.c:240 iq2000-asm.c:277 iq2000-asm.c:310
-#: openrisc-asm.c:90 openrisc-asm.c:144
-msgid "missing `)'"
-msgstr "\")\" puuttuu"
-
-#: m10200-dis.c:199
-#, c-format
-msgid "unknown\t0x%02x"
-msgstr "tuntematon\t0x%02x"
-
-#: m10200-dis.c:339
+#: m10200-dis.c:156 m10300-dis.c:580
 #, c-format
 msgid "unknown\t0x%04lx"
 msgstr "tuntematon\t0x%04lx"
 
-#: m10300-dis.c:767
+#: m10200-dis.c:326
 #, c-format
-msgid "unknown\t0x%04x"
-msgstr "tuntematon\t0x%04x"
+msgid "unknown\t0x%02lx"
+msgstr "tuntematon\t0x%02lx"
+
+#: m32c-asm.c:116
+msgid "imm:6 immediate is out of range"
+msgstr "suora muistiosoitusarvo imm:6 ei ole rajojen sisällä"
 
-#: m68k-dis.c:295
+#: m32c-asm.c:146
 #, c-format
-msgid "<internal error in opcode table: %s %s>\n"
-msgstr "<sisäinen virhe käskytaulukossa: %s %s>\n"
+msgid "%dsp8() takes a symbolic address, not a number"
+msgstr "%dsp8() hyväksyy symbolisen osoitteen, ei numeroa"
 
-#: m68k-dis.c:1089
+#: m32c-asm.c:159 m32c-asm.c:163 m32c-asm.c:229
+msgid "dsp:8 immediate is out of range"
+msgstr "suora muistiosoitusarvo dsp:8 ei ole rajojen sisällä"
+
+#: m32c-asm.c:184 m32c-asm.c:188
+msgid "Immediate is out of range -8 to 7"
+msgstr "suora muistiosoitusarvo ei ole rajojen -8 ... 7 sisällä"
+
+#: m32c-asm.c:259
+#, c-format
+msgid "%dsp16() takes a symbolic address, not a number"
+msgstr "%dsp16() hyväksyy symbolisen osoitteen, ei numeroa"
+
+#: m32c-asm.c:282 m32c-asm.c:289 m32c-asm.c:352
+msgid "dsp:16 immediate is out of range"
+msgstr "suora muistiosoitusarvo dsp:16 ei ole rajojen sisällä"
+
+#: m32c-asm.c:378
+msgid "dsp:20 immediate is out of range"
+msgstr "suora muistiosoitusarvo dsp:20 ei ole rajojen sisällä"
+
+#: m32c-asm.c:404
+msgid "dsp:24 immediate is out of range"
+msgstr "suora muistiosoitusarvo dsp:24 ei ole rajojen sisällä"
+
+#: m32c-asm.c:437
+msgid "immediate is out of range 1-2"
+msgstr "suora muistiosoitusarvo ei ole rajojen 1-2 sisällä"
+
+#: m32c-asm.c:455
+msgid "immediate is out of range 1-8"
+msgstr "suora muistiosoitusarvo ei ole rajojen 1-8 sisällä"
+
+#: m32c-asm.c:491
+msgid "immediate is out of range 2-9"
+msgstr "suora muistiosoitusarvo ei ole rajojen 2-9 sisällä"
+
+#: m32c-asm.c:509
+msgid "Bit number for indexing general register is out of range 0-15"
+msgstr "Indeksoivan yleisrekisterin bittinumero ei ole alueella 0-15"
+
+#: m32c-asm.c:541 m32c-asm.c:576
+msgid "bit,base is out of range"
+msgstr "bitti, kanta ei ole rajojen sisällä"
+
+#: m32c-asm.c:712
+msgid "not a valid r0l/r0h pair"
+msgstr "r0l/r0h-pari ei ole oikea"
+
+#: m32c-asm.c:742
+msgid "Invalid size specifier"
+msgstr "Virheellinen kokomäärite"
+
+#: m68k-dis.c:1162
 #, c-format
 msgid "<function code %d>"
 msgstr "<toimintakoodi %d>"
 
-#: m88k-dis.c:746
+#: m68k-dis.c:1313
+#, c-format
+msgid "<internal error in opcode table: %s %s>\n"
+msgstr "<sisäinen virhe käskytaulukossa: %s %s>\n"
+
+#: m88k-dis.c:679
 #, c-format
-msgid "# <dis error: %08x>"
-msgstr "# <disassembler-virhe: %08x>"
+msgid "# <dis error: %08lx>"
+msgstr "# <disassembler-virhe: %08lx>"
 
-#: mips-dis.c:720
+#: mips-dis.c:718
 msgid "# internal error, incomplete extension sequence (+)"
 msgstr "# sisäinen virhe, epätäydellinen laajennussekvenssi (+)"
 
-#: mips-dis.c:779
+#: mips-dis.c:805
 #, c-format
 msgid "# internal error, undefined extension sequence (+%c)"
 msgstr "# sisäinen virhe, määrittelemätön laajennussekvenssi (+%c)"
 
-#: mips-dis.c:1037
+#: mips-dis.c:1153
 #, c-format
 msgid "# internal error, undefined modifier(%c)"
 msgstr "# sisäinen virhe, määrittelemätön määrite(%c)"
 
-#: mips-dis.c:1793
+#: mips-dis.c:1663
 #, c-format
 msgid "# internal disassembler error, unrecognised modifier (%c)"
 msgstr "# sisäinen disassembler-virhe, tunnistamaton määrite (%c)"
 
-#: mips-dis.c:1805
+#: mips-dis.c:1894
 #, c-format
 msgid ""
 "\n"
@@ -481,7 +672,7 @@ msgstr ""
 "Seuraavat MIPS-kohtaiset disassembler-valinnat ovat tuettuja käyttöön\n"
 "-M -valinnan kanssa (monivalinnat pitää erottaa pilkulla):\n"
 
-#: mips-dis.c:1809
+#: mips-dis.c:1898
 #, c-format
 msgid ""
 "\n"
@@ -492,7 +683,7 @@ msgstr ""
 "  gpr-names=ABI            Tulosta GPR-nimet määritellyn ABI:n mukaisesti.\n"
 "                           Oletus: perustuu disassembloitavaan binääritiedostoon.\n"
 
-#: mips-dis.c:1813
+#: mips-dis.c:1902
 #, c-format
 msgid ""
 "\n"
@@ -503,7 +694,7 @@ msgstr ""
 "  fpr-names=ABI            Tulosta FPR-nimet määritellyn ABI:n mukaisesti.\n"
 "                           Oletus: numeerinen.\n"
 
-#: mips-dis.c:1817
+#: mips-dis.c:1906
 #, c-format
 msgid ""
 "\n"
@@ -516,7 +707,7 @@ msgstr ""
 "                           määritellyn arkkitehtuurin mukaisesti.\n"
 "                           Oletus: perustuu disassemloitavaan binääritiedostoon.\n"
 
-#: mips-dis.c:1822
+#: mips-dis.c:1911
 #, c-format
 msgid ""
 "\n"
@@ -529,7 +720,7 @@ msgstr ""
 "\t\t\t   arkkitehtuurin mukaisesti.\n"
 "                           Oletus: perustuu disassembloitavaan binääritiedostoon.\n"
 
-#: mips-dis.c:1827
+#: mips-dis.c:1916
 #, c-format
 msgid ""
 "\n"
@@ -540,7 +731,7 @@ msgstr ""
 "  reg-names=ABI            Tulosta GPR- ja FPR-nimet määritellyn\n"
 "                           ABI:n mukaisesti.\n"
 
-#: mips-dis.c:1831
+#: mips-dis.c:1920
 #, c-format
 msgid ""
 "\n"
@@ -551,7 +742,7 @@ msgstr ""
 "  reg-names=ARCH           Tulosta CP0-rekisteri ja HWR-nimet määritellyn\n"
 "                           arkkitehtuurin mukaisesti.\n"
 
-#: mips-dis.c:1835
+#: mips-dis.c:1924
 #, c-format
 msgid ""
 "\n"
@@ -562,12 +753,12 @@ msgstr ""
 "  Ylläolevista valinnoista \"ABI\" tukee seuraavia arvoja:\n"
 "   "
 
-#: mips-dis.c:1840 mips-dis.c:1848 mips-dis.c:1850
+#: mips-dis.c:1929 mips-dis.c:1937 mips-dis.c:1939
 #, c-format
 msgid "\n"
 msgstr "\n"
 
-#: mips-dis.c:1842
+#: mips-dis.c:1931
 #, c-format
 msgid ""
 "\n"
@@ -578,146 +769,166 @@ msgstr ""
 "  Ylläolevista valinnoista \"ARCH\" tukee seuraavia arvoja:\n"
 "   "
 
-#: mmix-dis.c:34
+#: mmix-dis.c:35
 #, c-format
 msgid "Bad case %d (%s) in %s:%d\n"
 msgstr "%d (%s) on virheellinen tapaus kohteessa %s:%d\n"
 
-#: mmix-dis.c:44
+#: mmix-dis.c:45
 #, c-format
 msgid "Internal: Non-debugged code (test-case missing): %s:%d"
 msgstr "Sisäinen: Debuggaamaton koodi (testitapaus puuttuu): %s:%d"
 
-#: mmix-dis.c:53
+#: mmix-dis.c:54
 msgid "(unknown)"
 msgstr "(tuntematon)"
 
-#: mmix-dis.c:519
+#: mmix-dis.c:513
 #, c-format
 msgid "*unknown operands type: %d*"
 msgstr "*tuntematon kohdemuuttujatyyppi: %d*"
 
+#: ms1-asm.c:84 ms1-asm.c:162
+msgid "Operand out of range. Must be between -32768 and 32767."
+msgstr "Kohdemuuttuja ei ole rajojen sisällä. Täytyy olla -32768:n ja 32767:n välillä."
+
+#: ms1-asm.c:121
+msgid "Biiiig Trouble in parse_imm16!"
+msgstr "Iso pulma parse_imm16-käskyssä!"
+
+#: ms1-asm.c:129
+#, c-format
+msgid "%operator operand is not a symbol"
+msgstr "%operaattori-kohdemuuttuja ei ole symboli."
+
+#: ms1-asm.c:367
+msgid "invalid operand.  type may have values 0,1,2 only."
+msgstr "virheellinen kohdemuuttuja. tyypin arvo saa olla vain 0,1 ta 2."
+
 #. I and Z are output operands and can`t be immediate
-#. * A is an address and we can`t have the address of
-#. * an immediate either. We don't know how much to increase
-#. * aoffsetp by since whatever generated this is broken
-#. * anyway!
-#.
-#: ns32k-dis.c:631
+#. A is an address and we can`t have the address of
+#. an immediate either. We don't know how much to increase
+#. aoffsetp by since whatever generated this is broken
+#. anyway!
+#: ns32k-dis.c:535
 #, c-format
 msgid "$<undefined>"
 msgstr "$<määrittelemätön>"
 
-#: ppc-opc.c:794 ppc-opc.c:822
+#: ppc-opc.c:800 ppc-opc.c:828
 msgid "invalid conditional option"
 msgstr "virheellinen ehdollinen valinta"
 
-#: ppc-opc.c:824
+#: ppc-opc.c:830
 msgid "attempt to set y bit when using + or - modifier"
 msgstr "yritys asettaa y-bitti kun käytetään + tai - määritettä"
 
-#: ppc-opc.c:852
+#: ppc-opc.c:858
 msgid "offset not a multiple of 16"
 msgstr "siirros ei ole 16:n monikerta"
 
-#: ppc-opc.c:871
+#: ppc-opc.c:877
 msgid "offset not a multiple of 2"
 msgstr "siirros ei ole 2:n monikerta"
 
-#: ppc-opc.c:873
+#: ppc-opc.c:879
 msgid "offset greater than 62"
 msgstr "siirros suurempi kuin 62"
 
-#: ppc-opc.c:892 ppc-opc.c:937 ppc-opc.c:981
+#: ppc-opc.c:898 ppc-opc.c:943 ppc-opc.c:987
 msgid "offset not a multiple of 4"
 msgstr "siirros ei ole 4:n monikerta"
 
-#: ppc-opc.c:894
+#: ppc-opc.c:900
 msgid "offset greater than 124"
 msgstr "siirros suurempi kuin 124"
 
-#: ppc-opc.c:913
+#: ppc-opc.c:919
 msgid "offset not a multiple of 8"
 msgstr "siirros ei ole 8:n monikerta"
 
-#: ppc-opc.c:915
+#: ppc-opc.c:921
 msgid "offset greater than 248"
 msgstr "siirros suurempi kuin 248"
 
-#: ppc-opc.c:958
+#: ppc-opc.c:964
 msgid "offset not between -2048 and 2047"
 msgstr "siirros ei ole -2048:n ja 2047:n välillä"
 
-#: ppc-opc.c:979
+#: ppc-opc.c:985
 msgid "offset not between -8192 and 8191"
 msgstr "siirros ei ole -8192:n ja 8191:n välillä"
 
-#: ppc-opc.c:1007
+#: ppc-opc.c:1013
 msgid "invalid mask field"
 msgstr "virheellinen maskikenttä"
 
-#: ppc-opc.c:1033
+#: ppc-opc.c:1039
 msgid "ignoring invalid mfcr mask"
 msgstr "virheellistä mfcr-maskia ei oteta huomioon"
 
-#: ppc-opc.c:1075
+#: ppc-opc.c:1081
 msgid "ignoring least significant bits in branch offset"
 msgstr "vähinten merkitseviä bittejä ei oteta huomioon haaroitussiirrossa"
 
-#: ppc-opc.c:1105 ppc-opc.c:1140
+#: ppc-opc.c:1111 ppc-opc.c:1146
 msgid "illegal bitmask"
 msgstr "virheellinen bittimaski"
 
-#: ppc-opc.c:1205
+#: ppc-opc.c:1211
 msgid "value out of range"
 msgstr "arvo ei ole rajojen sisällä"
 
-#: ppc-opc.c:1273
+#: ppc-opc.c:1279
 msgid "index register in load range"
 msgstr "indeksirekisteri on latauslukurajojen sisällä"
 
-#: ppc-opc.c:1289
+#: ppc-opc.c:1295
 msgid "source and target register operands must be different"
 msgstr "lähde- ja kohderekisterin kohdemuuttujien on oltava erilaiset"
 
-#: ppc-opc.c:1304
+#: ppc-opc.c:1310
 msgid "invalid register operand when updating"
 msgstr "rekisterin kohdemuuttuja virheellinen päivitettäessä"
 
-#: ppc-opc.c:1343
+#: ppc-opc.c:1349
 msgid "target register operand must be even"
 msgstr "kohderekisterin kohdemuuttujan täytyy olla parillinen"
 
-#: ppc-opc.c:1357
+#: ppc-opc.c:1363
 msgid "source register operand must be even"
 msgstr "lähderekisterin kohdemuuttujan täytyy olla parillinen"
 
-#. Mark as non-valid instruction.
-#: sparc-dis.c:760
-msgid "unknown"
-msgstr "tuntematon"
+#: ppc-opc.c:1420
+msgid "invalid sprg number"
+msgstr "virheellinen sprg-numero"
 
-#: sparc-dis.c:835
+#: sparc-dis.c:269
 #, c-format
 msgid "Internal error:  bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
 msgstr "Sisäinen virhe:  virheellinen sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
 
-#: sparc-dis.c:846
+#: sparc-dis.c:280
 #, c-format
 msgid "Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
 msgstr "Sisäinen virhe: virheellinen sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
 
-#: sparc-dis.c:895
+#: sparc-dis.c:330
 #, c-format
 msgid "Internal error: bad sparc-opcode.h: \"%s\" == \"%s\"\n"
 msgstr "Sisäinen virhe: virheellinen sparc-opcode.h: \"%s\" == \"%s\"\n"
 
-#: v850-dis.c:225
+#. Mark as non-valid instruction.
+#: sparc-dis.c:984
+msgid "unknown"
+msgstr "tuntematon"
+
+#: v850-dis.c:237
 #, c-format
 msgid "unknown operand shift: %x\n"
 msgstr "tuntematon kohdemuuttujan siirto: %x\n"
 
-#: v850-dis.c:237
+#: v850-dis.c:251
 #, c-format
 msgid "unknown pop reg: %d\n"
 msgstr "tuntematon pop-rekisteri: %d\n"
@@ -727,86 +938,89 @@ msgstr "tuntematon pop-rekisteri: %d\n"
 #. v850_insert_operand() in gas/config/tc-v850.c.  Error messages
 #. containing the string 'out of range' will be ignored unless a
 #. specific command line option is given to GAS.
-#: v850-opc.c:69
+#: v850-opc.c:46
 msgid "displacement value is not in range and is not aligned"
 msgstr "Uudelleensijoitusarvo ei ole rajojen sisällä eikä sijaitse tasarajalla"
 
-#: v850-opc.c:70
+#: v850-opc.c:47
 msgid "displacement value is out of range"
 msgstr "uudelleensijoitusarvo ei ole rajojen sisällä"
 
-#: v850-opc.c:71
+#: v850-opc.c:48
 msgid "displacement value is not aligned"
 msgstr "uudelleensijoitusarvo ei ole tasarajalla"
 
-#: v850-opc.c:73
+#: v850-opc.c:50
 msgid "immediate value is out of range"
 msgstr "suora muistiosoitusarvo ei ole rajojen sisällä"
 
-#: v850-opc.c:84
+#: v850-opc.c:58
 msgid "branch value not in range and to odd offset"
 msgstr "haaroitusarvo ei ole rajojen sisällä ja kohdistuu parittomaan siirrososoitteeseen"
 
-#: v850-opc.c:86 v850-opc.c:118
+#: v850-opc.c:60 v850-opc.c:87
 msgid "branch value out of range"
 msgstr "haaroitusarvo ei ole rajojen sisällä"
 
-#: v850-opc.c:89 v850-opc.c:121
+#: v850-opc.c:63 v850-opc.c:90
 msgid "branch to odd offset"
 msgstr "haaroitus parittomaan siirrososoitteeseen"
 
-#: v850-opc.c:116
+#: v850-opc.c:85
 msgid "branch value not in range and to an odd offset"
 msgstr "haaroitusarvo ei ole rajojen sisällä ja sijaitsee parittomassa siirrososoitteessa"
 
-#: v850-opc.c:347
+#: v850-opc.c:277
 msgid "invalid register for stack adjustment"
 msgstr "virheellinen rekisteri pinosäädössä"
 
-#: v850-opc.c:371
+#: v850-opc.c:297
 msgid "immediate value not in range and not even"
 msgstr "suora muistiosoitusarvo ei ole rajojen sisällä eikä ole parillinen"
 
-#: v850-opc.c:376
+#: v850-opc.c:302
 msgid "immediate value must be even"
 msgstr "Suoran muistiosoitusarvon täytyy olla parillinen"
 
-#: xstormy16-asm.c:76
+#: xstormy16-asm.c:70
 msgid "Bad register in preincrement"
 msgstr "Väärä rekisteri ennakkokasvatuksessa"
 
-#: xstormy16-asm.c:81
+#: xstormy16-asm.c:75
 msgid "Bad register in postincrement"
 msgstr "Väärä rekisteri jälkikasvatuksessa"
 
-#: xstormy16-asm.c:83
+#: xstormy16-asm.c:77
 msgid "Bad register name"
 msgstr "Väärä rekisterinimi"
 
-#: xstormy16-asm.c:87
+#: xstormy16-asm.c:81
 msgid "Label conflicts with register name"
 msgstr "Otsikko ristiriidassa rekisterin nimen kanssa"
 
-#: xstormy16-asm.c:91
+#: xstormy16-asm.c:85
 msgid "Label conflicts with `Rx'"
 msgstr "Otsikko ristiriidassa kohteen \"Rx\" kanssa"
 
-#: xstormy16-asm.c:93
+#: xstormy16-asm.c:87
 msgid "Bad immediate expression"
 msgstr "Virheellinen suora muistiosoituslauseke"
 
-#: xstormy16-asm.c:115
+#: xstormy16-asm.c:108
 msgid "No relocation for small immediate"
-msgstr "Ei uudelleensijoitusta pienikokoiselle suoralle muistiosoitukselle"
+msgstr "Ei sijoitusta pienikokoiselle suoralle muistiosoitukselle"
 
-#: xstormy16-asm.c:125
+#: xstormy16-asm.c:118
 msgid "Small operand was not an immediate number"
 msgstr "Pieni kohdemuuttuja ei ollut suora muistiosoitusnumero"
 
-#: xstormy16-asm.c:164
+#: xstormy16-asm.c:156
 msgid "Operand is not a symbol"
 msgstr "Kohdemuuttuja ei ole symboli"
 
-#: xstormy16-asm.c:172
+#: xstormy16-asm.c:164
 msgid "Syntax error: No trailing ')'"
 msgstr "Syntaksivirhe: loppukaarisulku \")\" puuttuu"
+
+#~ msgid "unknown\t0x%04x"
+#~ msgstr "tuntematon\t0x%04x"
index a8ad054..e6f42eb 100644 (file)
 # Irish translations for opcodes.
 # Copyright (C) 2005 Free Software Foundation, Inc.
 # This file is distributed under the same license as the opcodes package.
-# Kevin Patrick Scannell <scannell@SLU.EDU>, 2005.
+# Kevin Patrick Scannell <scannell@SLU.EDU>, 2005, 2006.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: opcodes 2.15.96\n"
+"Project-Id-Version: opcodes 2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-05 20:32+1030\n"
-"PO-Revision-Date: 2005-09-13 18:42-0500\n"
+"POT-Creation-Date: 2005-10-25 10:50+0930\n"
+"PO-Revision-Date: 2006-05-22 18:42-0500\n"
 "Last-Translator: Kevin Patrick Scannell <scannell@SLU.EDU>\n"
-"Language-Team: Irish <ga@li.org>\n"
+"Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: alpha-opc.c:331
+#: alpha-opc.c:155
 msgid "branch operand unaligned"
 msgstr "oibreann brainse gan ailíniú"
 
-#: alpha-opc.c:353 alpha-opc.c:374
+#: alpha-opc.c:171 alpha-opc.c:187
 msgid "jump hint unaligned"
 msgstr "leid léime gan ailíniú"
 
-#: arc-dis.c:76
+#: arc-dis.c:75
 msgid "Illegal limm reference in last instruction!\n"
 msgstr "Tagairt neamhcheadaithe limm sa treoir is déanaí!\n"
 
-#: arm-dis.c:1267
+#: arc-opc.c:384
+msgid "unable to fit different valued constants into instruction"
+msgstr "ní féidir tairisigh le luachanna difriúla a chur isteach sa treoir"
+
+#: arc-opc.c:393
+msgid "auxiliary register not allowed here"
+msgstr "ní cheadaítear tabhall cúntach anseo"
+
+#: arc-opc.c:399 arc-opc.c:416
+msgid "attempt to set readonly register"
+msgstr "rinneadh iarracht ar thabhall léimh-amháin a shocrú"
+
+#: arc-opc.c:404 arc-opc.c:421
+msgid "attempt to read writeonly register"
+msgstr "rinneadh iarracht ar thabhall scríofa-amháin a léamh"
+
+#: arc-opc.c:426
+#, c-format
+msgid "invalid register number `%d'"
+msgstr "uimhir neamhbhailí `%d' ar thabhall"
+
+#: arc-opc.c:592 arc-opc.c:643 arc-opc.c:671
+msgid "too many long constants"
+msgstr "an iomarca tairiseach fada"
+
+#: arc-opc.c:666
+msgid "to many shimms in load"
+msgstr "an iomarca shimmeanna le linn luchtaithe"
+
+#. Do we have a limm already?
+#: arc-opc.c:779
+msgid "impossible store"
+msgstr "stóráil dhodhéanta"
+
+#: arc-opc.c:812
+msgid "st operand error"
+msgstr "earráid le hoibreann st"
+
+#: arc-opc.c:816 arc-opc.c:858
+msgid "address writeback not allowed"
+msgstr "ní cheadaítear ais-scríobh an tseolta"
+
+#: arc-opc.c:820
+msgid "store value must be zero"
+msgstr "caithfidh luach an stóir a bheith nialas"
+
+#: arc-opc.c:845
+msgid "invalid load/shimm insn"
+msgstr "insn luchtaithe/shimm neamhbhailí"
+
+#: arc-opc.c:854
+msgid "ld operand error"
+msgstr "earráid le hoibreann ld"
+
+#: arc-opc.c:941
+msgid "jump flags, but no .f seen"
+msgstr "bratacha léime, ach ní fhacthas .f ar bith"
+
+#: arc-opc.c:944
+msgid "jump flags, but no limm addr"
+msgstr "bratacha léime, ach gan seoladh limm"
+
+#: arc-opc.c:947
+msgid "flag bits of jump address limm lost"
+msgstr "cailleadh giotáin bhrataí den seoladh léime limm"
+
+#: arc-opc.c:950
+msgid "attempt to set HR bits"
+msgstr "rinneadh iarracht giotáin HR a shocrú"
+
+#: arc-opc.c:953
+msgid "bad jump flags value"
+msgstr "luach neamhbhailí ar bhratacha léime"
+
+#: arc-opc.c:986
+msgid "branch address not on 4 byte boundary"
+msgstr "seoladh brainse gan a bheith ar theorainn 4 bheart"
+
+#: arc-opc.c:1022
+msgid "must specify .jd or no nullify suffix"
+msgstr "ní mór duit .jd nó iarmhír gan neamhniú a shonrú"
+
+#: arm-dis.c:1302
 msgid "<illegal precision>"
 msgstr "<beachtas neamhcheadaithe>"
 
 #. XXX - should break 'option' at following delimiter.
-#: arm-dis.c:1912
+#: arm-dis.c:2746
 #, c-format
 msgid "Unrecognised register name set: %s\n"
 msgstr "Tacar anaithnid d'ainmneacha taibhle: %s\n"
 
 #. XXX - should break 'option' at following delimiter.
-#: arm-dis.c:1920
+#: arm-dis.c:2754
 #, c-format
 msgid "Unrecognised disassembler option: %s\n"
 msgstr "Rogha anaithnid dídhíolamóra: %s\n"
 
-#: arm-dis.c:2093
+#: arm-dis.c:2916
 #, c-format
 msgid ""
 "\n"
@@ -54,23 +136,24 @@ msgstr ""
 "Tacaítear leis na roghanna a leanas, atá sainiúil do ARM agus le húsáid in éineacht\n"
 "leis an rogha -M:\n"
 
-#: avr-dis.c:112 avr-dis.c:122
+#: avr-dis.c:109 avr-dis.c:119
 #, c-format
 msgid "undefined"
 msgstr "gan sainmhíniú"
 
-#: avr-dis.c:179
+#: avr-dis.c:176
 #, c-format
 msgid "Internal disassembler error"
 msgstr "Earráid inmheánach dídhíolamóra"
 
-#: avr-dis.c:227
+#: avr-dis.c:225
 #, c-format
 msgid "unknown constraint `%c'"
 msgstr "iallach anaithnid `%c'"
 
-#: cgen-asm.c:336 fr30-ibld.c:197 frv-ibld.c:197 ip2k-ibld.c:197
-#: iq2000-ibld.c:197 m32r-ibld.c:197 openrisc-ibld.c:197 xstormy16-ibld.c:197
+#: cgen-asm.c:336 fr30-ibld.c:192 frv-ibld.c:192 ip2k-ibld.c:192
+#: iq2000-ibld.c:192 m32c-ibld.c:192 m32r-ibld.c:192 ms1-ibld.c:192
+#: openrisc-ibld.c:192 xstormy16-ibld.c:192
 #, c-format
 msgid "operand out of range (%ld not between %ld and %ld)"
 msgstr "oibreann as raon (níl %ld idir %ld agus %ld)"
@@ -80,7 +163,7 @@ msgstr "oibreann as raon (n
 msgid "operand out of range (%lu not between %lu and %lu)"
 msgstr "oibreann as raon (níl %lu idir %lu agus %lu)"
 
-#: d30v-dis.c:312
+#: d30v-dis.c:252
 #, c-format
 msgid "<unknown register %d>"
 msgstr "<tabhall anaithnid %d>"
@@ -96,148 +179,202 @@ msgstr "Earr
 msgid "Address 0x%s is out of bounds.\n"
 msgstr "Tá an seoladh 0x%s thar teorainn.\n"
 
-#: fr30-asm.c:323 frv-asm.c:1298 ip2k-asm.c:530 iq2000-asm.c:465
-#: m32r-asm.c:338 openrisc-asm.c:252 xstormy16-asm.c:284
+#: fr30-asm.c:92 m32c-asm.c:782 m32c-asm.c:789
+msgid "Register number is not valid"
+msgstr "uimhir neamhbhailí ar an tabhall"
+
+#: fr30-asm.c:94
+msgid "Register must be between r0 and r7"
+msgstr "Caithfidh an tabhall a bheith idir r0 agus r7"
+
+#: fr30-asm.c:96
+msgid "Register must be between r8 and r15"
+msgstr "Caithfidh an tabhall a bheith idir r8 agus r15"
+
+#: fr30-asm.c:115 m32c-asm.c:820
+msgid "Register list is not valid"
+msgstr "Níl liosta na dtaibhle bailí"
+
+#: fr30-asm.c:309 frv-asm.c:1262 ip2k-asm.c:510 iq2000-asm.c:456
+#: m32c-asm.c:1476 m32r-asm.c:323 ms1-asm.c:546 openrisc-asm.c:240
+#: xstormy16-asm.c:275
 #, c-format
 msgid "Unrecognized field %d while parsing.\n"
 msgstr "Réimse anaithnid %d le linn parsála.\n"
 
-#: fr30-asm.c:372 frv-asm.c:1347 ip2k-asm.c:579 iq2000-asm.c:514
-#: m32r-asm.c:387 openrisc-asm.c:301 xstormy16-asm.c:333
+#: fr30-asm.c:357 frv-asm.c:1310 ip2k-asm.c:558 iq2000-asm.c:504
+#: m32c-asm.c:1524 m32r-asm.c:371 ms1-asm.c:594 openrisc-asm.c:288
+#: xstormy16-asm.c:323
 msgid "missing mnemonic in syntax string"
 msgstr "cuimhneolaíoch ar iarraidh i dteaghrán comhréire"
 
 #. We couldn't parse it.
-#: fr30-asm.c:507 fr30-asm.c:511 fr30-asm.c:598 fr30-asm.c:699 frv-asm.c:1482
-#: frv-asm.c:1486 frv-asm.c:1573 frv-asm.c:1674 ip2k-asm.c:714 ip2k-asm.c:718
-#: ip2k-asm.c:805 ip2k-asm.c:906 iq2000-asm.c:649 iq2000-asm.c:653
-#: iq2000-asm.c:740 iq2000-asm.c:841 m32r-asm.c:522 m32r-asm.c:526
-#: m32r-asm.c:613 m32r-asm.c:714 openrisc-asm.c:436 openrisc-asm.c:440
-#: openrisc-asm.c:527 openrisc-asm.c:628 xstormy16-asm.c:468
-#: xstormy16-asm.c:472 xstormy16-asm.c:559 xstormy16-asm.c:660
+#: fr30-asm.c:492 fr30-asm.c:496 fr30-asm.c:583 fr30-asm.c:684 frv-asm.c:1445
+#: frv-asm.c:1449 frv-asm.c:1536 frv-asm.c:1637 ip2k-asm.c:693 ip2k-asm.c:697
+#: ip2k-asm.c:784 ip2k-asm.c:885 iq2000-asm.c:639 iq2000-asm.c:643
+#: iq2000-asm.c:730 iq2000-asm.c:831 m32c-asm.c:1659 m32c-asm.c:1663
+#: m32c-asm.c:1750 m32c-asm.c:1851 m32r-asm.c:506 m32r-asm.c:510
+#: m32r-asm.c:597 m32r-asm.c:698 ms1-asm.c:729 ms1-asm.c:733 ms1-asm.c:820
+#: ms1-asm.c:921 openrisc-asm.c:423 openrisc-asm.c:427 openrisc-asm.c:514
+#: openrisc-asm.c:615 xstormy16-asm.c:458 xstormy16-asm.c:462
+#: xstormy16-asm.c:549 xstormy16-asm.c:650
 msgid "unrecognized instruction"
 msgstr "treoir anaithnid"
 
-#: fr30-asm.c:554 frv-asm.c:1529 ip2k-asm.c:761 iq2000-asm.c:696
-#: m32r-asm.c:569 openrisc-asm.c:483 xstormy16-asm.c:515
+#: fr30-asm.c:539 frv-asm.c:1492 ip2k-asm.c:740 iq2000-asm.c:686
+#: m32c-asm.c:1706 m32r-asm.c:553 ms1-asm.c:776 openrisc-asm.c:470
+#: xstormy16-asm.c:505
 #, c-format
 msgid "syntax error (expected char `%c', found `%c')"
 msgstr "earráid chomhréire (bhíothas ag súil le `%c', fuarthas `%c')"
 
-#: fr30-asm.c:564 frv-asm.c:1539 ip2k-asm.c:771 iq2000-asm.c:706
-#: m32r-asm.c:579 openrisc-asm.c:493 xstormy16-asm.c:525
+#: fr30-asm.c:549 frv-asm.c:1502 ip2k-asm.c:750 iq2000-asm.c:696
+#: m32c-asm.c:1716 m32r-asm.c:563 ms1-asm.c:786 openrisc-asm.c:480
+#: xstormy16-asm.c:515
 #, c-format
 msgid "syntax error (expected char `%c', found end of instruction)"
 msgstr "earráid chomhréire (bhíothas ag súil le `%c', fuarthas deireadh na treorach)"
 
-#: fr30-asm.c:592 frv-asm.c:1567 ip2k-asm.c:799 iq2000-asm.c:734
-#: m32r-asm.c:607 openrisc-asm.c:521 xstormy16-asm.c:553
+#: fr30-asm.c:577 frv-asm.c:1530 ip2k-asm.c:778 iq2000-asm.c:724
+#: m32c-asm.c:1744 m32r-asm.c:591 ms1-asm.c:814 openrisc-asm.c:508
+#: xstormy16-asm.c:543
 msgid "junk at end of line"
 msgstr "bruscar ag deireadh na líne"
 
-#: fr30-asm.c:698 frv-asm.c:1673 ip2k-asm.c:905 iq2000-asm.c:840
-#: m32r-asm.c:713 openrisc-asm.c:627 xstormy16-asm.c:659
+#: fr30-asm.c:683 frv-asm.c:1636 ip2k-asm.c:884 iq2000-asm.c:830
+#: m32c-asm.c:1850 m32r-asm.c:697 ms1-asm.c:920 openrisc-asm.c:614
+#: xstormy16-asm.c:649
 msgid "unrecognized form of instruction"
 msgstr "foirm anaithnid de threoir"
 
-#: fr30-asm.c:710 frv-asm.c:1685 ip2k-asm.c:917 iq2000-asm.c:852
-#: m32r-asm.c:725 openrisc-asm.c:639 xstormy16-asm.c:671
+#: fr30-asm.c:695 frv-asm.c:1648 ip2k-asm.c:896 iq2000-asm.c:842
+#: m32c-asm.c:1862 m32r-asm.c:709 ms1-asm.c:932 openrisc-asm.c:626
+#: xstormy16-asm.c:661
 #, c-format
 msgid "bad instruction `%.50s...'"
 msgstr "drochthreoir `%.50s...'"
 
-#: fr30-asm.c:713 frv-asm.c:1688 ip2k-asm.c:920 iq2000-asm.c:855
-#: m32r-asm.c:728 openrisc-asm.c:642 xstormy16-asm.c:674
+#: fr30-asm.c:698 frv-asm.c:1651 ip2k-asm.c:899 iq2000-asm.c:845
+#: m32c-asm.c:1865 m32r-asm.c:712 ms1-asm.c:935 openrisc-asm.c:629
+#: xstormy16-asm.c:664
 #, c-format
 msgid "bad instruction `%.50s'"
 msgstr "drochthreoir `%.50s'"
 
 #. Default text to print if an instruction isn't recognized.
-#: fr30-dis.c:41 frv-dis.c:41 ip2k-dis.c:41 iq2000-dis.c:41 m32r-dis.c:41
-#: mmix-dis.c:284 openrisc-dis.c:41 xstormy16-dis.c:41
+#: fr30-dis.c:41 frv-dis.c:41 ip2k-dis.c:41 iq2000-dis.c:41 m32c-dis.c:41
+#: m32r-dis.c:41 mmix-dis.c:278 ms1-dis.c:41 openrisc-dis.c:41
+#: xstormy16-dis.c:41
 msgid "*unknown*"
 msgstr "*anaithnid*"
 
-#: fr30-dis.c:319 frv-dis.c:410 ip2k-dis.c:313 iq2000-dis.c:191 m32r-dis.c:262
-#: openrisc-dis.c:137 xstormy16-dis.c:170
+#: fr30-dis.c:299 frv-dis.c:396 ip2k-dis.c:288 iq2000-dis.c:189 m32c-dis.c:860
+#: m32r-dis.c:256 ms1-dis.c:258 openrisc-dis.c:135 xstormy16-dis.c:168
 #, c-format
 msgid "Unrecognized field %d while printing insn.\n"
 msgstr "Réimse anaithnid %d le linn priontála insn.\n"
 
-#: fr30-ibld.c:168 frv-ibld.c:168 ip2k-ibld.c:168 iq2000-ibld.c:168
-#: m32r-ibld.c:168 openrisc-ibld.c:168 xstormy16-ibld.c:168
+#: fr30-ibld.c:163 frv-ibld.c:163 ip2k-ibld.c:163 iq2000-ibld.c:163
+#: m32c-ibld.c:163 m32r-ibld.c:163 ms1-ibld.c:163 openrisc-ibld.c:163
+#: xstormy16-ibld.c:163
 #, c-format
 msgid "operand out of range (%ld not between %ld and %lu)"
 msgstr "oibreann as raon (níl %ld idir %ld agus %lu)"
 
-#: fr30-ibld.c:181 frv-ibld.c:181 ip2k-ibld.c:181 iq2000-ibld.c:181
-#: m32r-ibld.c:181 openrisc-ibld.c:181 xstormy16-ibld.c:181
+#: fr30-ibld.c:176 frv-ibld.c:176 ip2k-ibld.c:176 iq2000-ibld.c:176
+#: m32c-ibld.c:176 m32r-ibld.c:176 ms1-ibld.c:176 openrisc-ibld.c:176
+#: xstormy16-ibld.c:176
 #, c-format
 msgid "operand out of range (%lu not between 0 and %lu)"
 msgstr "oibreann as raon (níl %lu idir 0 agus %lu)"
 
-#: fr30-ibld.c:732 frv-ibld.c:858 ip2k-ibld.c:609 iq2000-ibld.c:715
-#: m32r-ibld.c:667 openrisc-ibld.c:635 xstormy16-ibld.c:680
+#: fr30-ibld.c:719 frv-ibld.c:845 ip2k-ibld.c:596 iq2000-ibld.c:702
+#: m32c-ibld.c:1668 m32r-ibld.c:654 ms1-ibld.c:713 openrisc-ibld.c:622
+#: xstormy16-ibld.c:667
 #, c-format
 msgid "Unrecognized field %d while building insn.\n"
 msgstr "Réimse anaithnid %d le linn tógála insn.\n"
 
-#: fr30-ibld.c:939 frv-ibld.c:1177 ip2k-ibld.c:686 iq2000-ibld.c:892
-#: m32r-ibld.c:806 openrisc-ibld.c:737 xstormy16-ibld.c:828
+#: fr30-ibld.c:924 frv-ibld.c:1162 ip2k-ibld.c:671 iq2000-ibld.c:877
+#: m32c-ibld.c:2780 m32r-ibld.c:791 ms1-ibld.c:907 openrisc-ibld.c:722
+#: xstormy16-ibld.c:813
 #, c-format
 msgid "Unrecognized field %d while decoding insn.\n"
 msgstr "Réimse anaithnid %d le linn díchódaithe insn.\n"
 
-#: fr30-ibld.c:1088 frv-ibld.c:1458 ip2k-ibld.c:763 iq2000-ibld.c:1026
-#: m32r-ibld.c:922 openrisc-ibld.c:817 xstormy16-ibld.c:941
+#: fr30-ibld.c:1070 frv-ibld.c:1440 ip2k-ibld.c:745 iq2000-ibld.c:1008
+#: m32c-ibld.c:3379 m32r-ibld.c:904 ms1-ibld.c:1086 openrisc-ibld.c:799
+#: xstormy16-ibld.c:923
 #, c-format
 msgid "Unrecognized field %d while getting int operand.\n"
 msgstr "Réimse anaithnid %d agus oibreann slánuimhriúil á fháil.\n"
 
-#: fr30-ibld.c:1217 frv-ibld.c:1719 ip2k-ibld.c:820 iq2000-ibld.c:1140
-#: m32r-ibld.c:1018 openrisc-ibld.c:877 xstormy16-ibld.c:1034
+#: fr30-ibld.c:1198 frv-ibld.c:1700 ip2k-ibld.c:801 iq2000-ibld.c:1121
+#: m32c-ibld.c:3960 m32r-ibld.c:999 ms1-ibld.c:1247 openrisc-ibld.c:858
+#: xstormy16-ibld.c:1015
 #, c-format
 msgid "Unrecognized field %d while getting vma operand.\n"
 msgstr "Réimse anaithnid %d agus oibreann vma á fháil.\n"
 
-#: fr30-ibld.c:1351 frv-ibld.c:1989 ip2k-ibld.c:882 iq2000-ibld.c:1263
-#: m32r-ibld.c:1122 openrisc-ibld.c:946 xstormy16-ibld.c:1136
+#: fr30-ibld.c:1329 frv-ibld.c:1967 ip2k-ibld.c:860 iq2000-ibld.c:1241
+#: m32c-ibld.c:4529 m32r-ibld.c:1100 ms1-ibld.c:1415 openrisc-ibld.c:924
+#: xstormy16-ibld.c:1114
 #, c-format
 msgid "Unrecognized field %d while setting int operand.\n"
 msgstr "Réimse anaithnid %d agus oibreann slánuimhriúil á shocrú.\n"
 
-#: fr30-ibld.c:1473 frv-ibld.c:2247 ip2k-ibld.c:932 iq2000-ibld.c:1374
-#: m32r-ibld.c:1214 openrisc-ibld.c:1003 xstormy16-ibld.c:1226
+#: fr30-ibld.c:1450 frv-ibld.c:2224 ip2k-ibld.c:909 iq2000-ibld.c:1351
+#: m32c-ibld.c:5088 m32r-ibld.c:1191 ms1-ibld.c:1573 openrisc-ibld.c:980
+#: xstormy16-ibld.c:1203
 #, c-format
 msgid "Unrecognized field %d while setting vma operand.\n"
 msgstr "Réimse anaithnid %d agus oibreann vma á shocrú.\n"
 
-#: frv-asm.c:978
+#: frv-asm.c:607
+msgid "missing `]'"
+msgstr "`]' ar iarraidh"
+
+#: frv-asm.c:610 frv-asm.c:620
+msgid "Special purpose register number is out of range"
+msgstr "Uimhir thabhall sainchuspóirigh as raon"
+
+#: frv-asm.c:907
+msgid "Value of A operand must be 0 or 1"
+msgstr "caithfidh luach an oibrinn A a bheith 0 nó 1"
+
+#: frv-asm.c:943
 msgid "register number must be even"
 msgstr "caithfidh uimhir an tabhaill a bheith cothrom"
 
-#: h8300-dis.c:358
+#. -- assembler routines inserted here.
+#. -- asm.c
+#: frv-asm.c:971 iq2000-asm.c:55 m32c-asm.c:140 m32c-asm.c:211 m32c-asm.c:253
+#: m32c-asm.c:312 m32c-asm.c:334 m32r-asm.c:52 openrisc-asm.c:53
+msgid "missing `)'"
+msgstr "`)' ar iarraidh"
+
+#: h8300-dis.c:325
 #, c-format
 msgid "Hmmmm 0x%x"
 msgstr "Hmmmm 0x%x"
 
-#: h8300-dis.c:744
+#: h8300-dis.c:706
 #, c-format
 msgid "Don't understand 0x%x \n"
 msgstr "Ní thuigim 0x%x \n"
 
-#: h8500-dis.c:143
+#: h8500-dis.c:122
 #, c-format
 msgid "can't cope with insert %d\n"
 msgstr "ní féidir déileáil le hionsá %d\n"
 
 #. Couldn't understand anything.
-#: h8500-dis.c:342
+#: h8500-dis.c:322
 #, c-format
 msgid "%02x\t\t*unknown*"
 msgstr "%02x\t\t*anaithnid*"
 
-#: i386-dis.c:1733
+#: i386-dis.c:1742
 msgid "<internal disassembler error>"
 msgstr "<earráid inmheánach dídhíolamóra>"
 
@@ -351,124 +488,175 @@ msgstr "n
 
 #. We've been passed a w.  Return with an error message so that
 #. cgen will try the next parsing option.
-#: ip2k-asm.c:92
+#: ip2k-asm.c:80
 msgid "W keyword invalid in FR operand slot."
-msgstr "is neamhbhailí é eochairfhocal W i sliotán oibrinn FR."
+msgstr "is neamhbhailí é lorgfhocal W i sliotán oibrinn FR."
 
 #. Invalid offset present.
-#: ip2k-asm.c:117
+#: ip2k-asm.c:105
 msgid "offset(IP) is not a valid form"
 msgstr "is neamhbhailí é an fhoirm fritháireamh(IP)"
 
 #. Found something there in front of (DP) but it's out
 #. of range.
-#: ip2k-asm.c:165
+#: ip2k-asm.c:153
 msgid "(DP) offset out of range."
 msgstr "fritháireamh (DP) as raon."
 
 #. Found something there in front of (SP) but it's out
 #. of range.
-#: ip2k-asm.c:206
+#: ip2k-asm.c:194
 msgid "(SP) offset out of range."
 msgstr "fritháireamh (SP) as raon."
 
-#: ip2k-asm.c:222
+#: ip2k-asm.c:210
 msgid "illegal use of parentheses"
 msgstr "úsáid neamhcheadaithe de lúibíní"
 
-#: ip2k-asm.c:229
+#: ip2k-asm.c:217
 msgid "operand out of range (not between 1 and 255)"
 msgstr "oibreann as raon (ní idir 1 agus 255"
 
 #. Something is very wrong. opindex has to be one of the above.
-#: ip2k-asm.c:254
+#: ip2k-asm.c:241
 msgid "parse_addr16: invalid opindex."
 msgstr "parse_addr16: innéacs neamhbhailí oibrinn."
 
-#: ip2k-asm.c:309
+#: ip2k-asm.c:295
 msgid "Byte address required. - must be even."
 msgstr "Seoladh birt de dhíth. - ní mór dó a bheith cothrom."
 
-#: ip2k-asm.c:318
+#: ip2k-asm.c:304
 msgid "cgen_parse_address returned a symbol. Literal required."
 msgstr "d'fhill cgen_parse_address siombail. Tá gá le teaghrán litriúil."
 
-#: ip2k-asm.c:376
-#, c-format
-msgid "%operator operand is not a symbol"
-msgstr "ní siombail é oibreann an %oibreora\""
+#: ip2k-asm.c:359
+msgid "percent-operator operand is not a symbol"
+msgstr "níl an t-oibreann céatadáin ina shiombail"
 
-#: ip2k-asm.c:430
+#: ip2k-asm.c:412
 msgid "Attempt to find bit index of 0"
 msgstr "Rinneadh iarracht innéacs giotáin 0 a aimsiú"
 
-#: iq2000-asm.c:115 iq2000-asm.c:146
+#: iq2000-asm.c:111 iq2000-asm.c:141
 msgid "immediate value cannot be register"
 msgstr "ní féidir an luach láithreach a bheith tabhall"
 
-#: iq2000-asm.c:126 iq2000-asm.c:156
+#: iq2000-asm.c:122 iq2000-asm.c:152
 msgid "immediate value out of range"
 msgstr "luach láithreach as raon"
 
-#: iq2000-asm.c:185
+#: iq2000-asm.c:181
 msgid "21-bit offset out of range"
 msgstr "fritháireamh 21-giotán as raon"
 
-#: iq2000-asm.c:210 iq2000-asm.c:240 iq2000-asm.c:277 iq2000-asm.c:310
-#: openrisc-asm.c:90 openrisc-asm.c:144
-msgid "missing `)'"
-msgstr "`)' ar iarraidh"
-
-#: m10200-dis.c:199
-#, c-format
-msgid "unknown\t0x%02x"
-msgstr "anaithnid\t0x%02x"
-
-#: m10200-dis.c:339
+#: m10200-dis.c:156 m10300-dis.c:580
 #, c-format
 msgid "unknown\t0x%04lx"
 msgstr "anaithnid\t0x%04lx"
 
-#: m10300-dis.c:767
+#: m10200-dis.c:326
 #, c-format
-msgid "unknown\t0x%04x"
-msgstr "anaithnid\t0x%04x"
+msgid "unknown\t0x%02lx"
+msgstr "anaithnid\t0x%02lx"
+
+#: m32c-asm.c:116
+msgid "imm:6 immediate is out of range"
+msgstr "luach láithreach imm:6 as raon"
 
-#: m68k-dis.c:295
+#: m32c-asm.c:146
 #, c-format
-msgid "<internal error in opcode table: %s %s>\n"
-msgstr "<earráid inmheánach sa tábla de chóid oibríochta: %s %s>\n"
+msgid "%dsp8() takes a symbolic address, not a number"
+msgstr "glacann %dsp8() le seoladh siombalach, ní ghlacann sé le huimhir"
 
-#: m68k-dis.c:1089
+#: m32c-asm.c:159 m32c-asm.c:163 m32c-asm.c:229
+msgid "dsp:8 immediate is out of range"
+msgstr "luach láithreach dsp:8 as raon"
+
+#: m32c-asm.c:184 m32c-asm.c:188
+msgid "Immediate is out of range -8 to 7"
+msgstr "Luach láithreach as raon -8 go dtí 7"
+
+#: m32c-asm.c:259
+#, c-format
+msgid "%dsp16() takes a symbolic address, not a number"
+msgstr "glacann %dsp16() le seoladh siombalach, ní ghlacann sé le huimhir"
+
+#: m32c-asm.c:282 m32c-asm.c:289 m32c-asm.c:352
+msgid "dsp:16 immediate is out of range"
+msgstr "luach láithreach dsp:16 as raon"
+
+#: m32c-asm.c:378
+msgid "dsp:20 immediate is out of range"
+msgstr "luach láithreach dsp:20 as raon"
+
+#: m32c-asm.c:404
+msgid "dsp:24 immediate is out of range"
+msgstr "luach láithreach dsp:24 as raon"
+
+#: m32c-asm.c:437
+msgid "immediate is out of range 1-2"
+msgstr "luach láithreach as raon 1-2"
+
+#: m32c-asm.c:455
+msgid "immediate is out of range 1-8"
+msgstr "luach láithreach as raon 1-8"
+
+#: m32c-asm.c:491
+msgid "immediate is out of range 2-9"
+msgstr "luach láithreach as raon 2-9"
+
+#: m32c-asm.c:509
+msgid "Bit number for indexing general register is out of range 0-15"
+msgstr "Uimhir ghiotáin le haghaidh innéacsú tabhall ginearálta as raon 0-15"
+
+#: m32c-asm.c:541 m32c-asm.c:576
+msgid "bit,base is out of range"
+msgstr "giotán,bunuimhir as raon"
+
+#: m32c-asm.c:712
+msgid "not a valid r0l/r0h pair"
+msgstr "cúpla neamhbhailí r0l/r0h"
+
+#: m32c-asm.c:742
+msgid "Invalid size specifier"
+msgstr "Sonraitheoir neamhbhailí méide"
+
+#: m68k-dis.c:1162
 #, c-format
 msgid "<function code %d>"
 msgstr "<cód feidhme %d>"
 
-#: m88k-dis.c:746
+#: m68k-dis.c:1313
+#, c-format
+msgid "<internal error in opcode table: %s %s>\n"
+msgstr "<earráid inmheánach sa tábla de chóid oibríochta: %s %s>\n"
+
+#: m88k-dis.c:679
 #, c-format
-msgid "# <dis error: %08x>"
-msgstr "# <earráid dídhíolama: %08x>"
+msgid "# <dis error: %08lx>"
+msgstr "# <earráid dis: %08lx>"
 
-#: mips-dis.c:720
+#: mips-dis.c:718
 msgid "# internal error, incomplete extension sequence (+)"
 msgstr "# earráid inmheánach, seicheamh neamhiomlán sínte (+)"
 
-#: mips-dis.c:779
+#: mips-dis.c:805
 #, c-format
 msgid "# internal error, undefined extension sequence (+%c)"
 msgstr "# earráid inmheánach, seicheamh sínte gan sainmhíniú (+%c)"
 
-#: mips-dis.c:1037
+#: mips-dis.c:1153
 #, c-format
 msgid "# internal error, undefined modifier(%c)"
 msgstr "# earráid inmheánach, mionathraitheoir gan sainmhíniú(%c)"
 
-#: mips-dis.c:1793
+#: mips-dis.c:1663
 #, c-format
 msgid "# internal disassembler error, unrecognised modifier (%c)"
 msgstr "# earráid inmheánach dídhíolamóra, mionathraitheoir anaithnid (%c)"
 
-#: mips-dis.c:1805
+#: mips-dis.c:1894
 #, c-format
 msgid ""
 "\n"
@@ -480,7 +668,7 @@ msgstr ""
 "agus le húsáid in éineacht leis an rogha -M (ba chóir roghanna iomadúla\n"
 "a bheith scartha le camóga):\n"
 
-#: mips-dis.c:1809
+#: mips-dis.c:1898
 #, c-format
 msgid ""
 "\n"
@@ -491,7 +679,7 @@ msgstr ""
 "  gpr-names=ABI          Taispeáin ainmneacha GPR de réir an ABI sonraithe.\n"
 "                         Réamhshocrú: bunaithe ar chlár dénártha díolaimithe.\n"
 
-#: mips-dis.c:1813
+#: mips-dis.c:1902
 #, c-format
 msgid ""
 "\n"
@@ -502,7 +690,7 @@ msgstr ""
 "  fpr-names=ABI          Taispeáin ainmneacha FPR de réir an ABI sonraithe.\n"
 "                         Réamhshocrú: uimhriúil.\n"
 
-#: mips-dis.c:1817
+#: mips-dis.c:1906
 #, c-format
 msgid ""
 "\n"
@@ -515,7 +703,7 @@ msgstr ""
 "                         hailtireachta sonraithe.\n"
 "                         Réamhshocrú: bunaithe ar chlár dénártha díolaimithe.\n"
 
-#: mips-dis.c:1822
+#: mips-dis.c:1911
 #, c-format
 msgid ""
 "\n"
@@ -528,7 +716,7 @@ msgstr ""
 "                         hailtireachta sonraithe.\n"
 "                         Réamhshocrú: bunaithe ar chlár dénártha díolaimithe.\n"
 
-#: mips-dis.c:1827
+#: mips-dis.c:1916
 #, c-format
 msgid ""
 "\n"
@@ -539,7 +727,7 @@ msgstr ""
 "  reg-names=ABI          Taispeáin ainmneacha GPR agus FPR de réir an\n"
 "                         ABI sonraithe.\n"
 
-#: mips-dis.c:1831
+#: mips-dis.c:1920
 #, c-format
 msgid ""
 "\n"
@@ -550,7 +738,7 @@ msgstr ""
 "  reg-names=AILTIREACHT  Taispeáin ainmneacha HWR agus ainmneacha na dtaibhle\n"
 "                         CP0 de réir na hailtireachta sonraithe.\n"
 
-#: mips-dis.c:1835
+#: mips-dis.c:1924
 #, c-format
 msgid ""
 "\n"
@@ -561,12 +749,12 @@ msgstr ""
 "  Le haghaidh na roghanna thuas, tacaítear leis na luachanna a leanas ar \"ABI\":\n"
 "   "
 
-#: mips-dis.c:1840 mips-dis.c:1848 mips-dis.c:1850
+#: mips-dis.c:1929 mips-dis.c:1937 mips-dis.c:1939
 #, c-format
 msgid "\n"
 msgstr "\n"
 
-#: mips-dis.c:1842
+#: mips-dis.c:1931
 #, c-format
 msgid ""
 "\n"
@@ -577,146 +765,166 @@ msgstr ""
 "  Le haghaidh na roghanna thuas, tacaítear leis na luachanna a leanas ar \"ARCH\":\n"
 "   "
 
-#: mmix-dis.c:34
+#: mmix-dis.c:35
 #, c-format
 msgid "Bad case %d (%s) in %s:%d\n"
 msgstr "Droch-chás %d (%s) i %s:%d\n"
 
-#: mmix-dis.c:44
+#: mmix-dis.c:45
 #, c-format
 msgid "Internal: Non-debugged code (test-case missing): %s:%d"
 msgstr "Inmheánach: cód gan dífhabhtú (cás tástála ar iarraidh): %s:%d"
 
-#: mmix-dis.c:53
+#: mmix-dis.c:54
 msgid "(unknown)"
 msgstr "(anaithnid)"
 
-#: mmix-dis.c:519
+#: mmix-dis.c:513
 #, c-format
 msgid "*unknown operands type: %d*"
 msgstr "*cineál anaithnid oibrinn: %d*"
 
+#: ms1-asm.c:84 ms1-asm.c:162
+msgid "Operand out of range. Must be between -32768 and 32767."
+msgstr "Oibreann as raon. Caithfidh sé a bheith idir -32768 agus 32767."
+
+#: ms1-asm.c:121
+msgid "Biiiig Trouble in parse_imm16!"
+msgstr "Trioblóid An-An-Mhór i parse_imm16!"
+
+#: ms1-asm.c:129
+#, c-format
+msgid "%operator operand is not a symbol"
+msgstr "ní siombail é oibreann an %oibreora\""
+
+#: ms1-asm.c:367
+msgid "invalid operand.  type may have values 0,1,2 only."
+msgstr "oibreann neamhbhailí.  ní cheadaítear ach na luachanna 0,1,2."
+
 #. I and Z are output operands and can`t be immediate
-#. * A is an address and we can`t have the address of
-#. * an immediate either. We don't know how much to increase
-#. * aoffsetp by since whatever generated this is broken
-#. * anyway!
-#.
-#: ns32k-dis.c:631
+#. A is an address and we can`t have the address of
+#. an immediate either. We don't know how much to increase
+#. aoffsetp by since whatever generated this is broken
+#. anyway!
+#: ns32k-dis.c:535
 #, c-format
 msgid "$<undefined>"
 msgstr "$<gan sainmhíniú>"
 
-#: ppc-opc.c:794 ppc-opc.c:822
+#: ppc-opc.c:800 ppc-opc.c:828
 msgid "invalid conditional option"
 msgstr "rogha neamhbhailí choinníollach"
 
-#: ppc-opc.c:824
+#: ppc-opc.c:830
 msgid "attempt to set y bit when using + or - modifier"
 msgstr "rinneadh iarracht y-giotán a shocrú agus mionathraitheoir + nó - in úsáid"
 
-#: ppc-opc.c:852
+#: ppc-opc.c:858
 msgid "offset not a multiple of 16"
 msgstr "ní iolraí de 16 é an fritháireamh"
 
-#: ppc-opc.c:871
+#: ppc-opc.c:877
 msgid "offset not a multiple of 2"
 msgstr "ní cothrom é an fritháireamh"
 
-#: ppc-opc.c:873
+#: ppc-opc.c:879
 msgid "offset greater than 62"
 msgstr "is níos mó ná 62 é an fritháireamh"
 
-#: ppc-opc.c:892 ppc-opc.c:937 ppc-opc.c:981
+#: ppc-opc.c:898 ppc-opc.c:943 ppc-opc.c:987
 msgid "offset not a multiple of 4"
 msgstr "ní iolraí de 4 é an fritháireamh"
 
-#: ppc-opc.c:894
+#: ppc-opc.c:900
 msgid "offset greater than 124"
 msgstr "is níos mó ná 124 é an fritháireamh"
 
-#: ppc-opc.c:913
+#: ppc-opc.c:919
 msgid "offset not a multiple of 8"
 msgstr "ní iolraí de 8 é an fritháireamh"
 
-#: ppc-opc.c:915
+#: ppc-opc.c:921
 msgid "offset greater than 248"
 msgstr "is níos mó ná 248 é an fritháireamh"
 
-#: ppc-opc.c:958
+#: ppc-opc.c:964
 msgid "offset not between -2048 and 2047"
 msgstr "ní idir -2048 agus 2047 é an fritháireamh"
 
-#: ppc-opc.c:979
+#: ppc-opc.c:985
 msgid "offset not between -8192 and 8191"
 msgstr "ní idir -8192 agus 8191 é an fritháireamh"
 
-#: ppc-opc.c:1007
+#: ppc-opc.c:1013
 msgid "invalid mask field"
 msgstr "réimse neamhbhailí maisc"
 
-#: ppc-opc.c:1033
+#: ppc-opc.c:1039
 msgid "ignoring invalid mfcr mask"
 msgstr "ag déanamh neamhshuim ar mhasc neamhbhailí mfcr"
 
-#: ppc-opc.c:1075
+#: ppc-opc.c:1081
 msgid "ignoring least significant bits in branch offset"
 msgstr "ag déanamh neamhshuim ar na giotáin is lú suntas i bhfritháireamh brainse"
 
-#: ppc-opc.c:1105 ppc-opc.c:1140
+#: ppc-opc.c:1111 ppc-opc.c:1146
 msgid "illegal bitmask"
 msgstr "giotánmhasc neamhcheadaithe"
 
-#: ppc-opc.c:1205
+#: ppc-opc.c:1211
 msgid "value out of range"
 msgstr "luach as raon"
 
-#: ppc-opc.c:1273
+#: ppc-opc.c:1279
 msgid "index register in load range"
 msgstr "tabhall innéacs i raon luchtaithe"
 
-#: ppc-opc.c:1289
+#: ppc-opc.c:1295
 msgid "source and target register operands must be different"
 msgstr "caithfidh oibreann an tabhaill foinsigh agus oibreann an spriocthabhaill a bheith difriúil"
 
-#: ppc-opc.c:1304
+#: ppc-opc.c:1310
 msgid "invalid register operand when updating"
 msgstr "oibreann neamhbhailí tabhaill le linn nuashonraithe"
 
-#: ppc-opc.c:1343
+#: ppc-opc.c:1349
 msgid "target register operand must be even"
 msgstr "caithfidh oibreann an spriocthabhaill a bheith cothrom"
 
-#: ppc-opc.c:1357
+#: ppc-opc.c:1363
 msgid "source register operand must be even"
 msgstr "caithfidh oibreann an tabhaill foinsigh a bheith cothrom"
 
-#. Mark as non-valid instruction.
-#: sparc-dis.c:760
-msgid "unknown"
-msgstr "anaithnid"
+#: ppc-opc.c:1420
+msgid "invalid sprg number"
+msgstr "uimhir neamhbhailí sprg"
 
-#: sparc-dis.c:835
+#: sparc-dis.c:269
 #, c-format
 msgid "Internal error:  bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
 msgstr "Earráid inmheánach:  sparc-opcode.h go holc: \"%s\", %#.8lx, %#.8lx\n"
 
-#: sparc-dis.c:846
+#: sparc-dis.c:280
 #, c-format
 msgid "Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
 msgstr "Earráid inmheánach: sparc-opcode.h go holc: \"%s\", %#.8lx, %#.8lx\n"
 
-#: sparc-dis.c:895
+#: sparc-dis.c:330
 #, c-format
 msgid "Internal error: bad sparc-opcode.h: \"%s\" == \"%s\"\n"
 msgstr "Earráid inmheánach: sparc-opcode.h go holc: \"%s\" == \"%s\"\n"
 
-#: v850-dis.c:225
+#. Mark as non-valid instruction.
+#: sparc-dis.c:984
+msgid "unknown"
+msgstr "anaithnid"
+
+#: v850-dis.c:237
 #, c-format
 msgid "unknown operand shift: %x\n"
 msgstr "iomlaoid anaithnid oibrinn: %x\n"
 
-#: v850-dis.c:237
+#: v850-dis.c:251
 #, c-format
 msgid "unknown pop reg: %d\n"
 msgstr "tabhall anaithnid plobtha: %d\n"
@@ -726,86 +934,89 @@ msgstr "tabhall anaithnid plobtha: %d\n"
 #. v850_insert_operand() in gas/config/tc-v850.c.  Error messages
 #. containing the string 'out of range' will be ignored unless a
 #. specific command line option is given to GAS.
-#: v850-opc.c:69
+#: v850-opc.c:46
 msgid "displacement value is not in range and is not aligned"
 msgstr "tá an luach díláithrithe as raon, agus ní ailínithe é"
 
-#: v850-opc.c:70
+#: v850-opc.c:47
 msgid "displacement value is out of range"
 msgstr "luach díláithrithe as raon"
 
-#: v850-opc.c:71
+#: v850-opc.c:48
 msgid "displacement value is not aligned"
 msgstr "luach díláithrithe gan ailíniú"
 
-#: v850-opc.c:73
+#: v850-opc.c:50
 msgid "immediate value is out of range"
 msgstr "luach láithreach as raon"
 
-#: v850-opc.c:84
+#: v850-opc.c:58
 msgid "branch value not in range and to odd offset"
 msgstr "luach brainse as raon, agus brainse go dtí fritháireamh corr"
 
-#: v850-opc.c:86 v850-opc.c:118
+#: v850-opc.c:60 v850-opc.c:87
 msgid "branch value out of range"
 msgstr "luach an bhrainse as raon"
 
-#: v850-opc.c:89 v850-opc.c:121
+#: v850-opc.c:63 v850-opc.c:90
 msgid "branch to odd offset"
 msgstr "brainse go dtí fritháireamh corr"
 
-#: v850-opc.c:116
+#: v850-opc.c:85
 msgid "branch value not in range and to an odd offset"
 msgstr "luach brainse as raon agus brainse go dtí fritháireamh corr"
 
-#: v850-opc.c:347
+#: v850-opc.c:277
 msgid "invalid register for stack adjustment"
 msgstr "tabhall neamhbhailí le haghaidh coigeartaithe na cruaiche"
 
-#: v850-opc.c:371
+#: v850-opc.c:297
 msgid "immediate value not in range and not even"
 msgstr "luach láithreach as raon, agus ní cothrom é"
 
-#: v850-opc.c:376
+#: v850-opc.c:302
 msgid "immediate value must be even"
 msgstr "caithfidh luach láithreach a bheith cothrom"
 
-#: xstormy16-asm.c:76
+#: xstormy16-asm.c:70
 msgid "Bad register in preincrement"
 msgstr "Drochthabhall i réamhincrimint"
 
-#: xstormy16-asm.c:81
+#: xstormy16-asm.c:75
 msgid "Bad register in postincrement"
 msgstr "Drochthabhall i iarincrimint"
 
-#: xstormy16-asm.c:83
+#: xstormy16-asm.c:77
 msgid "Bad register name"
 msgstr "Drochainm ar thabhall"
 
-#: xstormy16-asm.c:87
+#: xstormy16-asm.c:81
 msgid "Label conflicts with register name"
 msgstr "Lipéad i gcoinbhleacht le hainm tabhaill"
 
-#: xstormy16-asm.c:91
+#: xstormy16-asm.c:85
 msgid "Label conflicts with `Rx'"
 msgstr "Lipéad i gcoinbhleacht le `Rx'"
 
-#: xstormy16-asm.c:93
+#: xstormy16-asm.c:87
 msgid "Bad immediate expression"
 msgstr "Drochshlonn láithreach"
 
-#: xstormy16-asm.c:115
+#: xstormy16-asm.c:108
 msgid "No relocation for small immediate"
 msgstr "Luach beag láithreach gan athshuí"
 
-#: xstormy16-asm.c:125
+#: xstormy16-asm.c:118
 msgid "Small operand was not an immediate number"
 msgstr "Ní uimhir láithreach é an t-oibreann beag"
 
-#: xstormy16-asm.c:164
+#: xstormy16-asm.c:156
 msgid "Operand is not a symbol"
 msgstr "Ní siombail é an t-oibreann"
 
-#: xstormy16-asm.c:172
+#: xstormy16-asm.c:164
 msgid "Syntax error: No trailing ')'"
 msgstr "Earráid chomhréire: gan ')' chun deiridh"
+
+#~ msgid "unknown\t0x%04x"
+#~ msgstr "anaithnid\t0x%04x"
index ff7dbb7..9db8290 100644 (file)
 # Dutch messages for the Opcodes Library.
-# Copyright (C) 1999, 2002, 2003, 2005 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
 # This file is distributed under the same license as the Opcodes package.
-# Tim Van Holder <tim.van.holder@pandora.be>, 1999, 2002, 2003, 2005.
-#
+# Tim Van Holder <tim.van.holder@telenet.be>, 1999, 2002, 2003, 2005, 2006.
+# 
 msgid ""
 msgstr ""
-"Project-Id-Version: opcodes 2.15.96\n"
+"Project-Id-Version: opcodes 2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-05 20:32+1030\n"
-"PO-Revision-Date: 2005-05-05 23:36+0200\n"
-"Last-Translator: Tim Van Holder <tim.van.holder@pandora.be>\n"
+"POT-Creation-Date: 2005-10-25 10:50+0930\n"
+"PO-Revision-Date: 2006-05-21 20:56+0200\n"
+"Last-Translator: Tim Van Holder <tim.van.holder@telenet.be>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=iso-8859-1\n"
 "Content-Transfer-Encoding: 8-bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-# misschien 'branch' vertalen (vertakking?)
+# misschien 'branch' vertalen (vertakking? aftakking?)
 # en unaligned vertalen als 'niet uitgelijnd'?
-#: alpha-opc.c:331
+#: alpha-opc.c:155
 msgid "branch operand unaligned"
 msgstr "branch-operand niet uitgelijnd"
 
-#: alpha-opc.c:353 alpha-opc.c:374
+#: alpha-opc.c:171 alpha-opc.c:187
 msgid "jump hint unaligned"
 msgstr "jump-hint niet uitgelijnd"
 
-#: arc-dis.c:76
+#: arc-dis.c:75
 msgid "Illegal limm reference in last instruction!\n"
 msgstr "Ongeldige limm-verwijzing in de laatste instructie!\n"
 
-#: arm-dis.c:1267
+# klinkt niet echt geweldig...
+#: arc-opc.c:384
+msgid "unable to fit different valued constants into instruction"
+msgstr "kan constantes met verschillende waarden niet in instructie inpassen"
+
+#: arc-opc.c:393
+msgid "auxiliary register not allowed here"
+msgstr "hulpregister hier niet toegestaan"
+
+#: arc-opc.c:399 arc-opc.c:416
+msgid "attempt to set readonly register"
+msgstr "poging tot het instellen van een alleen-lezen register"
+
+#: arc-opc.c:404 arc-opc.c:421
+msgid "attempt to read writeonly register"
+msgstr "poging tot uitlezen van alleen-schrijven register"
+
+#: arc-opc.c:426
+#, c-format
+msgid "invalid register number `%d'"
+msgstr "Ongeldig registernummer `%d'"
+
+#: arc-opc.c:592 arc-opc.c:643 arc-opc.c:671
+msgid "too many long constants"
+msgstr "te veel lange constantes"
+
+# of "bij opladen" ipv "in load"?
+#: arc-opc.c:666
+msgid "to many shimms in load"
+msgstr "te veel shimms in load"
+
+#. Do we have a limm already?
+#: arc-opc.c:779
+msgid "impossible store"
+msgstr "onmogelijke store"
+
+#: arc-opc.c:812
+msgid "st operand error"
+msgstr "st operand-fout"
+
+# of "terugschrijven van adres"?
+#: arc-opc.c:816 arc-opc.c:858
+msgid "address writeback not allowed"
+msgstr "address writeback niet toegestaan"
+
+# of beter 'store-waarde'?
+#: arc-opc.c:820
+msgid "store value must be zero"
+msgstr "opslagwaarde moet nul zijn"
+
+#: arc-opc.c:845
+msgid "invalid load/shimm insn"
+msgstr "ongeldige load/shimm insn"
+
+#: arc-opc.c:854
+msgid "ld operand error"
+msgstr "ld operand-fout"
+
+#: arc-opc.c:941
+msgid "jump flags, but no .f seen"
+msgstr "jump-vlaggen, maar geen .f gezien"
+
+#: arc-opc.c:944
+msgid "jump flags, but no limm addr"
+msgstr "jump-vlaggen, maar geen limm addr"
+
+#: arc-opc.c:947
+msgid "flag bits of jump address limm lost"
+msgstr "vlagbits van jump-adres limm gaan verloren"
+
+#: arc-opc.c:950
+msgid "attempt to set HR bits"
+msgstr "poging tot instellen van HR bits"
+
+#: arc-opc.c:953
+msgid "bad jump flags value"
+msgstr "slechte waarde van de jump-vlaggen"
+
+#: arc-opc.c:986
+msgid "branch address not on 4 byte boundary"
+msgstr "branch-adres niet op 4-byte grens"
+
+# klinkt wankel...
+#: arc-opc.c:1022
+msgid "must specify .jd or no nullify suffix"
+msgstr "moet .jd of geen nullify-suffix opgeven"
+
+#: arm-dis.c:1302
 msgid "<illegal precision>"
 msgstr "<ongeldige precisie>"
 
-# Hoort set bij 'name', of bij 'register name'?
+# Hoort set bij 'name', of bij 'register name' - of is het een voltood deelwoord?
 #. XXX - should break 'option' at following delimiter.
-#: arm-dis.c:1912
+#: arm-dis.c:2746
 #, c-format
 msgid "Unrecognised register name set: %s\n"
 msgstr "Registernaam-verzameling niet herkend: %s\n"
 
 #. XXX - should break 'option' at following delimiter.
-#: arm-dis.c:1920
+#: arm-dis.c:2754
 #, c-format
 msgid "Unrecognised disassembler option: %s\n"
 msgstr "Disassembler-optie niet herkend: %s\n"
 
-#: arm-dis.c:2093
+#: arm-dis.c:2916
 #, c-format
 msgid ""
 "\n"
@@ -58,24 +145,25 @@ msgstr ""
 "De volgende ARM-specifieke disassembler-opties worden ondersteund voor gebruik\n"
 "via de -M optie:\n"
 
-#: avr-dis.c:112 avr-dis.c:122
+#: avr-dis.c:109 avr-dis.c:119
 #, c-format
 msgid "undefined"
 msgstr "niet gedefinieerd"
 
-#: avr-dis.c:179
+#: avr-dis.c:176
 #, c-format
 msgid "Internal disassembler error"
 msgstr "Interne fout in de disassembler"
 
 # Vertaling voor constraint? 'begrenzing' misschien?
-#: avr-dis.c:227
+#: avr-dis.c:225
 #, c-format
 msgid "unknown constraint `%c'"
 msgstr "onbekende constraint `%c'"
 
-#: cgen-asm.c:336 fr30-ibld.c:197 frv-ibld.c:197 ip2k-ibld.c:197
-#: iq2000-ibld.c:197 m32r-ibld.c:197 openrisc-ibld.c:197 xstormy16-ibld.c:197
+#: cgen-asm.c:336 fr30-ibld.c:192 frv-ibld.c:192 ip2k-ibld.c:192
+#: iq2000-ibld.c:192 m32c-ibld.c:192 m32r-ibld.c:192 ms1-ibld.c:192
+#: openrisc-ibld.c:192 xstormy16-ibld.c:192
 #, c-format
 msgid "operand out of range (%ld not between %ld and %ld)"
 msgstr "operand buiten bereik (%ld niet tussen %ld en %ld)"
@@ -85,7 +173,7 @@ msgstr "operand buiten bereik (%ld niet tussen %ld en %ld)"
 msgid "operand out of range (%lu not between %lu and %lu)"
 msgstr "operand buiten bereik (%lu niet tussen %lu en %lu)"
 
-#: d30v-dis.c:312
+#: d30v-dis.c:252
 #, c-format
 msgid "<unknown register %d>"
 msgstr "<onbekend register %d>"
@@ -102,150 +190,204 @@ msgstr "Onbekende fout %d\n"
 msgid "Address 0x%s is out of bounds.\n"
 msgstr "Adres 0x%s is buiten de perken.\n"
 
+#: fr30-asm.c:92 m32c-asm.c:782 m32c-asm.c:789
+msgid "Register number is not valid"
+msgstr "Registernummer is ongeldig"
+
+#: fr30-asm.c:94
+msgid "Register must be between r0 and r7"
+msgstr "Register moet tussen r0 en r7 liggen"
+
+#: fr30-asm.c:96
+msgid "Register must be between r8 and r15"
+msgstr "Register moet tussen r8 en r15 liggen"
+
+#: fr30-asm.c:115 m32c-asm.c:820
+msgid "Register list is not valid"
+msgstr "Regijsterlijst is ongeldig"
+
 # Betere vertaling voor 'parsing'?
-#: fr30-asm.c:323 frv-asm.c:1298 ip2k-asm.c:530 iq2000-asm.c:465
-#: m32r-asm.c:338 openrisc-asm.c:252 xstormy16-asm.c:284
+#: fr30-asm.c:309 frv-asm.c:1262 ip2k-asm.c:510 iq2000-asm.c:456
+#: m32c-asm.c:1476 m32r-asm.c:323 ms1-asm.c:546 openrisc-asm.c:240
+#: xstormy16-asm.c:275
 #, c-format
 msgid "Unrecognized field %d while parsing.\n"
 msgstr "Veld %d niet herkend tijdens parsen.\n"
 
-#: fr30-asm.c:372 frv-asm.c:1347 ip2k-asm.c:579 iq2000-asm.c:514
-#: m32r-asm.c:387 openrisc-asm.c:301 xstormy16-asm.c:333
+#: fr30-asm.c:357 frv-asm.c:1310 ip2k-asm.c:558 iq2000-asm.c:504
+#: m32c-asm.c:1524 m32r-asm.c:371 ms1-asm.c:594 openrisc-asm.c:288
+#: xstormy16-asm.c:323
 msgid "missing mnemonic in syntax string"
 msgstr "mnemonic ontbreekt in syntaxstring"
 
 #. We couldn't parse it.
-#: fr30-asm.c:507 fr30-asm.c:511 fr30-asm.c:598 fr30-asm.c:699 frv-asm.c:1482
-#: frv-asm.c:1486 frv-asm.c:1573 frv-asm.c:1674 ip2k-asm.c:714 ip2k-asm.c:718
-#: ip2k-asm.c:805 ip2k-asm.c:906 iq2000-asm.c:649 iq2000-asm.c:653
-#: iq2000-asm.c:740 iq2000-asm.c:841 m32r-asm.c:522 m32r-asm.c:526
-#: m32r-asm.c:613 m32r-asm.c:714 openrisc-asm.c:436 openrisc-asm.c:440
-#: openrisc-asm.c:527 openrisc-asm.c:628 xstormy16-asm.c:468
-#: xstormy16-asm.c:472 xstormy16-asm.c:559 xstormy16-asm.c:660
+#: fr30-asm.c:492 fr30-asm.c:496 fr30-asm.c:583 fr30-asm.c:684 frv-asm.c:1445
+#: frv-asm.c:1449 frv-asm.c:1536 frv-asm.c:1637 ip2k-asm.c:693 ip2k-asm.c:697
+#: ip2k-asm.c:784 ip2k-asm.c:885 iq2000-asm.c:639 iq2000-asm.c:643
+#: iq2000-asm.c:730 iq2000-asm.c:831 m32c-asm.c:1659 m32c-asm.c:1663
+#: m32c-asm.c:1750 m32c-asm.c:1851 m32r-asm.c:506 m32r-asm.c:510
+#: m32r-asm.c:597 m32r-asm.c:698 ms1-asm.c:729 ms1-asm.c:733 ms1-asm.c:820
+#: ms1-asm.c:921 openrisc-asm.c:423 openrisc-asm.c:427 openrisc-asm.c:514
+#: openrisc-asm.c:615 xstormy16-asm.c:458 xstormy16-asm.c:462
+#: xstormy16-asm.c:549 xstormy16-asm.c:650
 msgid "unrecognized instruction"
 msgstr "instructie niet herkend"
 
-#: fr30-asm.c:554 frv-asm.c:1529 ip2k-asm.c:761 iq2000-asm.c:696
-#: m32r-asm.c:569 openrisc-asm.c:483 xstormy16-asm.c:515
+#: fr30-asm.c:539 frv-asm.c:1492 ip2k-asm.c:740 iq2000-asm.c:686
+#: m32c-asm.c:1706 m32r-asm.c:553 ms1-asm.c:776 openrisc-asm.c:470
+#: xstormy16-asm.c:505
 #, c-format
 msgid "syntax error (expected char `%c', found `%c')"
-msgstr "syntaxfout (verwachtte character `%c', maar vond `%c')"
+msgstr "syntaxfout (verwachtte `%c', vond `%c')"
 
-#: fr30-asm.c:564 frv-asm.c:1539 ip2k-asm.c:771 iq2000-asm.c:706
-#: m32r-asm.c:579 openrisc-asm.c:493 xstormy16-asm.c:525
+#: fr30-asm.c:549 frv-asm.c:1502 ip2k-asm.c:750 iq2000-asm.c:696
+#: m32c-asm.c:1716 m32r-asm.c:563 ms1-asm.c:786 openrisc-asm.c:480
+#: xstormy16-asm.c:515
 #, c-format
 msgid "syntax error (expected char `%c', found end of instruction)"
-msgstr "syntaxfout (verwachtte character `%c', maar vond het einde van de instructie)"
+msgstr "syntaxfout (verwachtte `%c', vond het einde van de instructie)"
 
-# Betere (niet-Vlaamse) vertaling voor 'junk'?
-#: fr30-asm.c:592 frv-asm.c:1567 ip2k-asm.c:799 iq2000-asm.c:734
-#: m32r-asm.c:607 openrisc-asm.c:521 xstormy16-asm.c:553
+#: fr30-asm.c:577 frv-asm.c:1530 ip2k-asm.c:778 iq2000-asm.c:724
+#: m32c-asm.c:1744 m32r-asm.c:591 ms1-asm.c:814 openrisc-asm.c:508
+#: xstormy16-asm.c:543
 msgid "junk at end of line"
-msgstr "brol aan einde van lijn"
+msgstr "rommel aan einde van lijn"
 
-#: fr30-asm.c:698 frv-asm.c:1673 ip2k-asm.c:905 iq2000-asm.c:840
-#: m32r-asm.c:713 openrisc-asm.c:627 xstormy16-asm.c:659
+#: fr30-asm.c:683 frv-asm.c:1636 ip2k-asm.c:884 iq2000-asm.c:830
+#: m32c-asm.c:1850 m32r-asm.c:697 ms1-asm.c:920 openrisc-asm.c:614
+#: xstormy16-asm.c:649
 msgid "unrecognized form of instruction"
 msgstr "instructievorm niet herkend"
 
-#: fr30-asm.c:710 frv-asm.c:1685 ip2k-asm.c:917 iq2000-asm.c:852
-#: m32r-asm.c:725 openrisc-asm.c:639 xstormy16-asm.c:671
+#: fr30-asm.c:695 frv-asm.c:1648 ip2k-asm.c:896 iq2000-asm.c:842
+#: m32c-asm.c:1862 m32r-asm.c:709 ms1-asm.c:932 openrisc-asm.c:626
+#: xstormy16-asm.c:661
 #, c-format
 msgid "bad instruction `%.50s...'"
 msgstr "slechte instructie `%s.50s...'"
 
-#: fr30-asm.c:713 frv-asm.c:1688 ip2k-asm.c:920 iq2000-asm.c:855
-#: m32r-asm.c:728 openrisc-asm.c:642 xstormy16-asm.c:674
+#: fr30-asm.c:698 frv-asm.c:1651 ip2k-asm.c:899 iq2000-asm.c:845
+#: m32c-asm.c:1865 m32r-asm.c:712 ms1-asm.c:935 openrisc-asm.c:629
+#: xstormy16-asm.c:664
 #, c-format
 msgid "bad instruction `%.50s'"
 msgstr "slechte instructie `%s.50s'"
 
 #. Default text to print if an instruction isn't recognized.
-#: fr30-dis.c:41 frv-dis.c:41 ip2k-dis.c:41 iq2000-dis.c:41 m32r-dis.c:41
-#: mmix-dis.c:284 openrisc-dis.c:41 xstormy16-dis.c:41
+#: fr30-dis.c:41 frv-dis.c:41 ip2k-dis.c:41 iq2000-dis.c:41 m32c-dis.c:41
+#: m32r-dis.c:41 mmix-dis.c:278 ms1-dis.c:41 openrisc-dis.c:41
+#: xstormy16-dis.c:41
 msgid "*unknown*"
 msgstr "*onbekend*"
 
-#: fr30-dis.c:319 frv-dis.c:410 ip2k-dis.c:313 iq2000-dis.c:191 m32r-dis.c:262
-#: openrisc-dis.c:137 xstormy16-dis.c:170
+#: fr30-dis.c:299 frv-dis.c:396 ip2k-dis.c:288 iq2000-dis.c:189 m32c-dis.c:860
+#: m32r-dis.c:256 ms1-dis.c:258 openrisc-dis.c:135 xstormy16-dis.c:168
 #, c-format
 msgid "Unrecognized field %d while printing insn.\n"
 msgstr "Veld %d niet herkend bij het afdrukken van een insn.\n"
 
-#: fr30-ibld.c:168 frv-ibld.c:168 ip2k-ibld.c:168 iq2000-ibld.c:168
-#: m32r-ibld.c:168 openrisc-ibld.c:168 xstormy16-ibld.c:168
+#: fr30-ibld.c:163 frv-ibld.c:163 ip2k-ibld.c:163 iq2000-ibld.c:163
+#: m32c-ibld.c:163 m32r-ibld.c:163 ms1-ibld.c:163 openrisc-ibld.c:163
+#: xstormy16-ibld.c:163
 #, c-format
 msgid "operand out of range (%ld not between %ld and %lu)"
 msgstr "operand buiten bereik (%ld niet tussen %ld en %lu)"
 
-#: fr30-ibld.c:181 frv-ibld.c:181 ip2k-ibld.c:181 iq2000-ibld.c:181
-#: m32r-ibld.c:181 openrisc-ibld.c:181 xstormy16-ibld.c:181
+#: fr30-ibld.c:176 frv-ibld.c:176 ip2k-ibld.c:176 iq2000-ibld.c:176
+#: m32c-ibld.c:176 m32r-ibld.c:176 ms1-ibld.c:176 openrisc-ibld.c:176
+#: xstormy16-ibld.c:176
 #, c-format
 msgid "operand out of range (%lu not between 0 and %lu)"
 msgstr "operand buiten bereik (%lu niet tussen 0 en %lu)"
 
-#: fr30-ibld.c:732 frv-ibld.c:858 ip2k-ibld.c:609 iq2000-ibld.c:715
-#: m32r-ibld.c:667 openrisc-ibld.c:635 xstormy16-ibld.c:680
+#: fr30-ibld.c:719 frv-ibld.c:845 ip2k-ibld.c:596 iq2000-ibld.c:702
+#: m32c-ibld.c:1668 m32r-ibld.c:654 ms1-ibld.c:713 openrisc-ibld.c:622
+#: xstormy16-ibld.c:667
 #, c-format
 msgid "Unrecognized field %d while building insn.\n"
 msgstr "Veld %d niet herkend bij het opbouwen van een insn.\n"
 
-#: fr30-ibld.c:939 frv-ibld.c:1177 ip2k-ibld.c:686 iq2000-ibld.c:892
-#: m32r-ibld.c:806 openrisc-ibld.c:737 xstormy16-ibld.c:828
+#: fr30-ibld.c:924 frv-ibld.c:1162 ip2k-ibld.c:671 iq2000-ibld.c:877
+#: m32c-ibld.c:2780 m32r-ibld.c:791 ms1-ibld.c:907 openrisc-ibld.c:722
+#: xstormy16-ibld.c:813
 #, c-format
 msgid "Unrecognized field %d while decoding insn.\n"
 msgstr "Veld %d niet herkend bij het decoderen van een insn.\n"
 
-#: fr30-ibld.c:1088 frv-ibld.c:1458 ip2k-ibld.c:763 iq2000-ibld.c:1026
-#: m32r-ibld.c:922 openrisc-ibld.c:817 xstormy16-ibld.c:941
+#: fr30-ibld.c:1070 frv-ibld.c:1440 ip2k-ibld.c:745 iq2000-ibld.c:1008
+#: m32c-ibld.c:3379 m32r-ibld.c:904 ms1-ibld.c:1086 openrisc-ibld.c:799
+#: xstormy16-ibld.c:923
 #, c-format
 msgid "Unrecognized field %d while getting int operand.\n"
 msgstr "Veld %d niet herkend bij het ophalen van een int-operand.\n"
 
-#: fr30-ibld.c:1217 frv-ibld.c:1719 ip2k-ibld.c:820 iq2000-ibld.c:1140
-#: m32r-ibld.c:1018 openrisc-ibld.c:877 xstormy16-ibld.c:1034
+#: fr30-ibld.c:1198 frv-ibld.c:1700 ip2k-ibld.c:801 iq2000-ibld.c:1121
+#: m32c-ibld.c:3960 m32r-ibld.c:999 ms1-ibld.c:1247 openrisc-ibld.c:858
+#: xstormy16-ibld.c:1015
 #, c-format
 msgid "Unrecognized field %d while getting vma operand.\n"
 msgstr "Veld %d niet herkend bij het ophalen van een vma-operand.\n"
 
-#: fr30-ibld.c:1351 frv-ibld.c:1989 ip2k-ibld.c:882 iq2000-ibld.c:1263
-#: m32r-ibld.c:1122 openrisc-ibld.c:946 xstormy16-ibld.c:1136
+#: fr30-ibld.c:1329 frv-ibld.c:1967 ip2k-ibld.c:860 iq2000-ibld.c:1241
+#: m32c-ibld.c:4529 m32r-ibld.c:1100 ms1-ibld.c:1415 openrisc-ibld.c:924
+#: xstormy16-ibld.c:1114
 #, c-format
 msgid "Unrecognized field %d while setting int operand.\n"
 msgstr "Veld %d niet herkend bij het instellen van een int-operand.\n"
 
-#: fr30-ibld.c:1473 frv-ibld.c:2247 ip2k-ibld.c:932 iq2000-ibld.c:1374
-#: m32r-ibld.c:1214 openrisc-ibld.c:1003 xstormy16-ibld.c:1226
+#: fr30-ibld.c:1450 frv-ibld.c:2224 ip2k-ibld.c:909 iq2000-ibld.c:1351
+#: m32c-ibld.c:5088 m32r-ibld.c:1191 ms1-ibld.c:1573 openrisc-ibld.c:980
+#: xstormy16-ibld.c:1203
 #, c-format
 msgid "Unrecognized field %d while setting vma operand.\n"
 msgstr "Veld %d niet herkend bij het instellen van een vma-operand.\n"
 
-#: frv-asm.c:978
+#: frv-asm.c:607
+msgid "missing `]'"
+msgstr "`]' ontbreekt"
+
+# of moet 'immediate' behouden worden?
+#: frv-asm.c:610 frv-asm.c:620
+msgid "Special purpose register number is out of range"
+msgstr "Nummer van special-purpose register is buiten bereik"
+
+#: frv-asm.c:907
+msgid "Value of A operand must be 0 or 1"
+msgstr "Waarde van A-operand moet 0 of 1 zijn"
+
+#: frv-asm.c:943
 msgid "register number must be even"
-msgstr "registernummer moet paar zijn"
+msgstr "registernummer moet even zijn"
 
-#: h8300-dis.c:358
+#. -- assembler routines inserted here.
+#. -- asm.c
+#: frv-asm.c:971 iq2000-asm.c:55 m32c-asm.c:140 m32c-asm.c:211 m32c-asm.c:253
+#: m32c-asm.c:312 m32c-asm.c:334 m32r-asm.c:52 openrisc-asm.c:53
+msgid "missing `)'"
+msgstr "`)' ontbreekt"
+
+#: h8300-dis.c:325
 #, c-format
 msgid "Hmmmm 0x%x"
 msgstr "Hmmmm 0x%x"
 
-#: h8300-dis.c:744
+#: h8300-dis.c:706
 #, c-format
 msgid "Don't understand 0x%x \n"
 msgstr "Ik begrijp 0x%x niet\n"
 
-#: h8500-dis.c:143
+#: h8500-dis.c:122
 #, c-format
 msgid "can't cope with insert %d\n"
 msgstr "kan niet omgaan met insert %d\n"
 
 #. Couldn't understand anything.
-#: h8500-dis.c:342
+#: h8500-dis.c:322
 #, c-format
 msgid "%02x\t\t*unknown*"
 msgstr "%02x\t\t*onbekend*"
 
-#: i386-dis.c:1733
+#: i386-dis.c:1742
 msgid "<internal disassembler error>"
 msgstr "<interne fout in de disassembler>"
 
@@ -359,125 +501,187 @@ msgstr "kan niet naar directory \"%s\" gaan, errno = %s\n"
 
 #. We've been passed a w.  Return with an error message so that
 #. cgen will try the next parsing option.
-#: ip2k-asm.c:92
+#: ip2k-asm.c:80
 msgid "W keyword invalid in FR operand slot."
 msgstr "keyword W is ongeldig in operand-slot FR"
 
 #. Invalid offset present.
-#: ip2k-asm.c:117
+#: ip2k-asm.c:105
 msgid "offset(IP) is not a valid form"
 msgstr "offset(IP) is geen geldige vorm"
 
 #. Found something there in front of (DP) but it's out
 #. of range.
-#: ip2k-asm.c:165
+#: ip2k-asm.c:153
 msgid "(DP) offset out of range."
 msgstr "(DP) offset buiten bereik"
 
 #. Found something there in front of (SP) but it's out
 #. of range.
-#: ip2k-asm.c:206
+#: ip2k-asm.c:194
 msgid "(SP) offset out of range."
 msgstr "(SP) offset buiten bereik"
 
-#: ip2k-asm.c:222
+#: ip2k-asm.c:210
 msgid "illegal use of parentheses"
 msgstr "ongeldig gebruik van haakjes"
 
-#: ip2k-asm.c:229
+#: ip2k-asm.c:217
 msgid "operand out of range (not between 1 and 255)"
 msgstr "operand buiten bereik (niet tussen 1 en 255)"
 
 #. Something is very wrong. opindex has to be one of the above.
-#: ip2k-asm.c:254
+#: ip2k-asm.c:241
 msgid "parse_addr16: invalid opindex."
 msgstr "parse_addr16: ongeldige opindex."
 
-#: ip2k-asm.c:309
+#: ip2k-asm.c:295
 msgid "Byte address required. - must be even."
-msgstr "Byte-adres vereist. - moet paar zijn."
+msgstr "Byte-adres vereist. - moet even zijn."
 
-#: ip2k-asm.c:318
+#: ip2k-asm.c:304
 msgid "cgen_parse_address returned a symbol. Literal required."
 msgstr "cgen_parse_address gaf een symbool terug terwijl een letterlijke waarde vereist is."
 
-#: ip2k-asm.c:376
-#, c-format
-msgid "%operator operand is not a symbol"
-msgstr "operand van %operator is geen symbool"
+#: ip2k-asm.c:359
+msgid "percent-operator operand is not a symbol"
+msgstr "operand van percent-operator is geen symbool"
 
-#: ip2k-asm.c:430
+#: ip2k-asm.c:412
 msgid "Attempt to find bit index of 0"
 msgstr "Poging tot vinden van bit-index van 0"
 
-#: iq2000-asm.c:115 iq2000-asm.c:146
+#: iq2000-asm.c:111 iq2000-asm.c:141
 msgid "immediate value cannot be register"
 msgstr "onmiddellijke waarde kan geen register zijn"
 
 # of moet 'immediate' behouden worden?
-#: iq2000-asm.c:126 iq2000-asm.c:156
+#: iq2000-asm.c:122 iq2000-asm.c:152
 msgid "immediate value out of range"
 msgstr "onmiddellijke waarde is buiten bereik"
 
-#: iq2000-asm.c:185
+#: iq2000-asm.c:181
 msgid "21-bit offset out of range"
 msgstr "21-bit offset is buiten bereik"
 
-#: iq2000-asm.c:210 iq2000-asm.c:240 iq2000-asm.c:277 iq2000-asm.c:310
-#: openrisc-asm.c:90 openrisc-asm.c:144
-msgid "missing `)'"
-msgstr "`)' ontbreekt"
-
-#: m10200-dis.c:199
-#, c-format
-msgid "unknown\t0x%02x"
-msgstr "onbekend\t0x%02x"
-
-#: m10200-dis.c:339
+#: m10200-dis.c:156 m10300-dis.c:580
 #, c-format
 msgid "unknown\t0x%04lx"
 msgstr "onbekend\t0x%04lx"
 
-#: m10300-dis.c:767
+#: m10200-dis.c:326
 #, c-format
-msgid "unknown\t0x%04x"
-msgstr "onbekend\t0x%04x"
+msgid "unknown\t0x%02lx"
+msgstr "onbekend\t0x%02lx"
+
+# Correcte vertaling van "imm:6 immediate"?
+#: m32c-asm.c:116
+msgid "imm:6 immediate is out of range"
+msgstr "onmiddellijke waarde van imm:6 is buiten bereik"
 
-#: m68k-dis.c:295
+#: m32c-asm.c:146
 #, c-format
-msgid "<internal error in opcode table: %s %s>\n"
-msgstr "<interne fout in opcode-tabel: %s %s>\n"
+msgid "%dsp8() takes a symbolic address, not a number"
+msgstr "%dsp8() verwacht een symbolisch adres als argument, geen getal"
+
+# Correcte vertaling van "dsp:8 immediate"?
+#: m32c-asm.c:159 m32c-asm.c:163 m32c-asm.c:229
+msgid "dsp:8 immediate is out of range"
+msgstr "onmiddellijke waarde van dsp:8 is buiten bereik"
 
-#: m68k-dis.c:1089
+# of moet 'immediate' behouden worden?
+#: m32c-asm.c:184 m32c-asm.c:188
+msgid "Immediate is out of range -8 to 7"
+msgstr "onmiddellijke waarde is buiten bereik (-8 tot 7)"
+
+#: m32c-asm.c:259
+#, c-format
+msgid "%dsp16() takes a symbolic address, not a number"
+msgstr "%dsp16() verwacht een symbolisch adres als argument, geen getal"
+
+# Correcte vertaling van "dsp:16 immediate"?
+#: m32c-asm.c:282 m32c-asm.c:289 m32c-asm.c:352
+msgid "dsp:16 immediate is out of range"
+msgstr "onmiddellijke waarde van dsp:16 is buiten bereik"
+
+# Correcte vertaling van "dsp:20 immediate"?
+#: m32c-asm.c:378
+msgid "dsp:20 immediate is out of range"
+msgstr "onmiddellijke waarde van dsp:20 is buiten bereik"
+
+# Correcte vertaling van "dsp:24 immediate"?
+#: m32c-asm.c:404
+msgid "dsp:24 immediate is out of range"
+msgstr "onmiddellijke waarde van dsp:24 is buiten bereik"
+
+# of moet 'immediate' behouden worden?
+#: m32c-asm.c:437
+msgid "immediate is out of range 1-2"
+msgstr "onmiddellijke waarde is buiten bereik (1-2)"
+
+# of moet 'immediate' behouden worden?
+#: m32c-asm.c:455
+msgid "immediate is out of range 1-8"
+msgstr "onmiddellijke waarde is buiten bereik (1-8)"
+
+# of moet 'immediate' behouden worden?
+#: m32c-asm.c:491
+msgid "immediate is out of range 2-9"
+msgstr "onmiddellijke waarde is buiten bereik (2-9)"
+
+# Is dit de juiste interpretatie van "indexing general register"
+#: m32c-asm.c:509
+msgid "Bit number for indexing general register is out of range 0-15"
+msgstr "Bitnummer voor het indexeren van een general register is buiten bereik (0-15)"
+
+# of moet 'immediate' behouden worden?
+#: m32c-asm.c:541 m32c-asm.c:576
+msgid "bit,base is out of range"
+msgstr "bit,base is buiten bereik"
+
+#: m32c-asm.c:712
+msgid "not a valid r0l/r0h pair"
+msgstr "geen geldig r0l/r0h koppel"
+
+#: m32c-asm.c:742
+msgid "Invalid size specifier"
+msgstr "Ongeldige grootte-specificatie"
+
+#: m68k-dis.c:1162
 #, c-format
 msgid "<function code %d>"
 msgstr "<functie-code %d>"
 
-#: m88k-dis.c:746
+#: m68k-dis.c:1313
+#, c-format
+msgid "<internal error in opcode table: %s %s>\n"
+msgstr "<interne fout in opcode-tabel: %s %s>\n"
+
+#: m88k-dis.c:679
 #, c-format
-msgid "# <dis error: %08x>"
-msgstr "# <dis fout: %08x>"
+msgid "# <dis error: %08lx>"
+msgstr "# <dis fout: %08lx>"
 
-#: mips-dis.c:720
+#: mips-dis.c:718
 msgid "# internal error, incomplete extension sequence (+)"
 msgstr "# interne fout, onvolledige extension sequence  (+)"
 
-#: mips-dis.c:779
+#: mips-dis.c:805
 #, c-format
 msgid "# internal error, undefined extension sequence (+%c)"
 msgstr "# interne fout, extension sequence (+%c) niet gedefinieerd"
 
-#: mips-dis.c:1037
+#: mips-dis.c:1153
 #, c-format
 msgid "# internal error, undefined modifier(%c)"
 msgstr "# interne fout, modifier(%c) niet gedefinieerd"
 
-#: mips-dis.c:1793
+#: mips-dis.c:1663
 #, c-format
 msgid "# internal disassembler error, unrecognised modifier (%c)"
 msgstr "# interne fout in disassembler, modifier(%c) niet herkend"
 
-#: mips-dis.c:1805
+#: mips-dis.c:1894
 #, c-format
 msgid ""
 "\n"
@@ -488,7 +692,7 @@ msgstr ""
 "De volgende MIPS-specifieke disassembler-opties worden ondersteund voor gebruik\n"
 "via de -M optie (meerdere opties moeten door komma's gescheiden worden):\n"
 
-#: mips-dis.c:1809
+#: mips-dis.c:1898
 #, c-format
 msgid ""
 "\n"
@@ -500,7 +704,7 @@ msgstr ""
 "                           Standaard: gebaseerd op het binair bestand dat\n"
 "                           gedesassembleerd wordt.\n"
 
-#: mips-dis.c:1813
+#: mips-dis.c:1902
 #, c-format
 msgid ""
 "\n"
@@ -511,7 +715,7 @@ msgstr ""
 "  fpr-names=ABI            Druk FPR-namen af volgens de opgegeven ABI.\n"
 "                           Standaard: numeriek.\n"
 
-#: mips-dis.c:1817
+#: mips-dis.c:1906
 #, c-format
 msgid ""
 "\n"
@@ -525,7 +729,7 @@ msgstr ""
 "                           Standaard: gebaseerd op het binair bestand dat\n"
 "                           gedesassembleerd wordt.\n"
 
-#: mips-dis.c:1822
+#: mips-dis.c:1911
 #, c-format
 msgid ""
 "\n"
@@ -539,7 +743,7 @@ msgstr ""
 "                           gedesassembleerd wordt.\n"
 "\n"
 
-#: mips-dis.c:1827
+#: mips-dis.c:1916
 #, c-format
 msgid ""
 "\n"
@@ -549,7 +753,7 @@ msgstr ""
 "\n"
 "  reg-names=ABI            Druk GPR- en FPR-namen af volgens de opgegeven ABI.\n"
 
-#: mips-dis.c:1831
+#: mips-dis.c:1920
 #, c-format
 msgid ""
 "\n"
@@ -560,7 +764,7 @@ msgstr ""
 "  reg-names=ARCH           Druk CP0 registernamen en HWR-namen af volgens de\n"
 "                           opgegeven architectuur.\n"
 
-#: mips-dis.c:1835
+#: mips-dis.c:1924
 #, c-format
 msgid ""
 "\n"
@@ -571,12 +775,12 @@ msgstr ""
 "  Voor de bovenstaande opties zijn dit de ondersteunde waarden voor \"ABI\":\n"
 "   "
 
-#: mips-dis.c:1840 mips-dis.c:1848 mips-dis.c:1850
+#: mips-dis.c:1929 mips-dis.c:1937 mips-dis.c:1939
 #, c-format
 msgid "\n"
 msgstr "\n"
 
-#: mips-dis.c:1842
+#: mips-dis.c:1931
 #, c-format
 msgid ""
 "\n"
@@ -587,149 +791,170 @@ msgstr ""
 "  Voor de bovenstaande opties zijn dit de ondersteunde waarden voor \"ARCH\":\n"
 "   "
 
-#: mmix-dis.c:34
+#: mmix-dis.c:35
 #, c-format
 msgid "Bad case %d (%s) in %s:%d\n"
 msgstr "Ongeldige case %d (%s) in %s:%d\n"
 
-#: mmix-dis.c:44
+#: mmix-dis.c:45
 #, c-format
 msgid "Internal: Non-debugged code (test-case missing): %s:%d"
 msgstr "Intern: Code niet gedebugd (test-case ontbreekt): %s:%d"
 
-#: mmix-dis.c:53
+#: mmix-dis.c:54
 msgid "(unknown)"
 msgstr "(onbekend)"
 
-#: mmix-dis.c:519
+#: mmix-dis.c:513
 #, c-format
 msgid "*unknown operands type: %d*"
 msgstr "onbekend type operanden: %d"
 
+#: ms1-asm.c:84 ms1-asm.c:162
+msgid "Operand out of range. Must be between -32768 and 32767."
+msgstr "Operand buiten bereik. Moet tussen -32768 en 32767 liggen."
+
+# Should this even be here?
+#: ms1-asm.c:121
+msgid "Biiiig Trouble in parse_imm16!"
+msgstr "Grooooooooooot Probleem in parse_imm16!"
+
+#: ms1-asm.c:129
+#, c-format
+msgid "%operator operand is not a symbol"
+msgstr "operand van %operator is geen symbool"
+
+#: ms1-asm.c:367
+msgid "invalid operand.  type may have values 0,1,2 only."
+msgstr "ongeldige operand.  type mag alleen 0,1,2 als waarde hebben."
+
 #. I and Z are output operands and can`t be immediate
-#. * A is an address and we can`t have the address of
-#. * an immediate either. We don't know how much to increase
-#. * aoffsetp by since whatever generated this is broken
-#. * anyway!
-#.
-#: ns32k-dis.c:631
+#. A is an address and we can`t have the address of
+#. an immediate either. We don't know how much to increase
+#. aoffsetp by since whatever generated this is broken
+#. anyway!
+#: ns32k-dis.c:535
 #, c-format
 msgid "$<undefined>"
 msgstr "$<niet gedefinieerd>"
 
-#: ppc-opc.c:794 ppc-opc.c:822
+#: ppc-opc.c:800 ppc-opc.c:828
 msgid "invalid conditional option"
 msgstr "ongeldige voorwaardelijke optie"
 
 # Dit kan waarschijnlijk beter
-#: ppc-opc.c:824
+#: ppc-opc.c:830
 msgid "attempt to set y bit when using + or - modifier"
 msgstr "poging om y bit in te stellen wanneer + of - modifier gebruikt wordt"
 
-#: ppc-opc.c:852
+#: ppc-opc.c:858
 msgid "offset not a multiple of 16"
 msgstr "offset is geen veelvoud van 16"
 
-#: ppc-opc.c:871
+#: ppc-opc.c:877
 msgid "offset not a multiple of 2"
 msgstr "offset is geen veelvoud van 2"
 
-#: ppc-opc.c:873
+#: ppc-opc.c:879
 msgid "offset greater than 62"
 msgstr "offset is groter dan 62"
 
-#: ppc-opc.c:892 ppc-opc.c:937 ppc-opc.c:981
+#: ppc-opc.c:898 ppc-opc.c:943 ppc-opc.c:987
 msgid "offset not a multiple of 4"
 msgstr "offset is geen veelvoud van 4"
 
-#: ppc-opc.c:894
+#: ppc-opc.c:900
 msgid "offset greater than 124"
 msgstr "offset is groter dan 124"
 
-#: ppc-opc.c:913
+#: ppc-opc.c:919
 msgid "offset not a multiple of 8"
 msgstr "offset is geen veelvoud van 8"
 
-#: ppc-opc.c:915
+#: ppc-opc.c:921
 msgid "offset greater than 248"
 msgstr "offset is groter dan 248"
 
-#: ppc-opc.c:958
+#: ppc-opc.c:964
 msgid "offset not between -2048 and 2047"
 msgstr "offset ligt niet tussen -2048 en 2047"
 
-#: ppc-opc.c:979
+#: ppc-opc.c:985
 msgid "offset not between -8192 and 8191"
 msgstr "offset ligt niet tussen -8192 en 8191"
 
-#: ppc-opc.c:1007
+#: ppc-opc.c:1013
 msgid "invalid mask field"
 msgstr "ongeldig maskerveld"
 
-#: ppc-opc.c:1033
+#: ppc-opc.c:1039
 msgid "ignoring invalid mfcr mask"
 msgstr "ongeldig mfcr-masker wordt genegeerd"
 
-#: ppc-opc.c:1075
+#: ppc-opc.c:1081
 msgid "ignoring least significant bits in branch offset"
 msgstr "minst significante bits worden genegeerd in branch offset"
 
-#: ppc-opc.c:1105 ppc-opc.c:1140
+#: ppc-opc.c:1111 ppc-opc.c:1146
 msgid "illegal bitmask"
 msgstr "illegaal bitmasker"
 
-#: ppc-opc.c:1205
+#: ppc-opc.c:1211
 msgid "value out of range"
 msgstr "waarde buiten bereik"
 
 # of is laadbereik beter?
-#: ppc-opc.c:1273
+#: ppc-opc.c:1279
 msgid "index register in load range"
 msgstr "indexregister in load-bereik"
 
-#: ppc-opc.c:1289
+#: ppc-opc.c:1295
 msgid "source and target register operands must be different"
 msgstr "bron- en doel-registeroperanden moeten verschillen"
 
-#: ppc-opc.c:1304
+#: ppc-opc.c:1310
 msgid "invalid register operand when updating"
 msgstr "ongeldige register-operand bij update"
 
-#: ppc-opc.c:1343
+#: ppc-opc.c:1349
 msgid "target register operand must be even"
-msgstr "doel-registeroperand moet paar zijn"
+msgstr "doel-registeroperand moet even zijn"
 
-#: ppc-opc.c:1357
+#: ppc-opc.c:1363
 msgid "source register operand must be even"
-msgstr "bron-registeroperand moet paar zijn"
+msgstr "bron-registeroperand moet even zijn"
 
-#. Mark as non-valid instruction.
-#: sparc-dis.c:760
-msgid "unknown"
-msgstr "onbekend"
+#: ppc-opc.c:1420
+msgid "invalid sprg number"
+msgstr "ongeldig sprg-nummer"
 
 # Looks like this is a typo (two spaces after the ':')
-#: sparc-dis.c:835
+#: sparc-dis.c:269
 #, c-format
 msgid "Internal error:  bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
 msgstr "Interne fout: sparch-opcode.h is verkeerd: \"%s\", %#.8lx, %#.8lx\n"
 
-#: sparc-dis.c:846
+#: sparc-dis.c:280
 #, c-format
 msgid "Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
 msgstr "Interne fout: sparch-opcode.h is verkeerd: \"%s\", %#.8lx, %#.8lx\n"
 
-#: sparc-dis.c:895
+#: sparc-dis.c:330
 #, c-format
 msgid "Internal error: bad sparc-opcode.h: \"%s\" == \"%s\"\n"
 msgstr "Interne fout: sparch-opcode.h is verkeerd: \"%s\" == \"%s\"\n"
 
-#: v850-dis.c:225
+#. Mark as non-valid instruction.
+#: sparc-dis.c:984
+msgid "unknown"
+msgstr "onbekend"
+
+#: v850-dis.c:237
 #, c-format
 msgid "unknown operand shift: %x\n"
 msgstr "onbekende operand-shift: %x\n"
 
-#: v850-dis.c:237
+#: v850-dis.c:251
 #, c-format
 msgid "unknown pop reg: %d\n"
 msgstr "onbekend pop reg: %d\n"
@@ -740,91 +965,91 @@ msgstr "onbekend pop reg: %d\n"
 #. v850_insert_operand() in gas/config/tc-v850.c.  Error messages
 #. containing the string 'out of range' will be ignored unless a
 #. specific command line option is given to GAS.
-#: v850-opc.c:69
+#: v850-opc.c:46
 msgid "displacement value is not in range and is not aligned"
 msgstr "displacement-waarde is niet in bereik en is niet uitgelijnd"
 
-#: v850-opc.c:70
+#: v850-opc.c:47
 msgid "displacement value is out of range"
 msgstr "displacement-waarde is buiten bereik"
 
-#: v850-opc.c:71
+#: v850-opc.c:48
 msgid "displacement value is not aligned"
 msgstr "displacement-waarde is niet uitgelijnd"
 
 # of moet 'immediate' behouden worden?
-#: v850-opc.c:73
+#: v850-opc.c:50
 msgid "immediate value is out of range"
 msgstr "onmiddellijke waarde is buiten bereik"
 
 # Repeated message..., use 'to an odd...' to merge it
-#: v850-opc.c:84
+#: v850-opc.c:58
 msgid "branch value not in range and to odd offset"
 msgstr "branch-waarde niet in bereik en naar onpare offset"
 
-#: v850-opc.c:86 v850-opc.c:118
+#: v850-opc.c:60 v850-opc.c:87
 msgid "branch value out of range"
 msgstr "branch-waarde buiten bereik"
 
-#: v850-opc.c:89 v850-opc.c:121
+#: v850-opc.c:63 v850-opc.c:90
 msgid "branch to odd offset"
 msgstr "branch naar onpare offset"
 
-#: v850-opc.c:116
+#: v850-opc.c:85
 msgid "branch value not in range and to an odd offset"
 msgstr "branch-waarde niet in bereik en naar een onpare offset"
 
-#: v850-opc.c:347
+#: v850-opc.c:277
 msgid "invalid register for stack adjustment"
 msgstr "ongeldig register voor stack-aanpassing"
 
-#: v850-opc.c:371
+#: v850-opc.c:297
 msgid "immediate value not in range and not even"
-msgstr "onmiddellijke waarde niet in bereik en niet paar"
+msgstr "onmiddellijke waarde niet in bereik en niet even"
 
-#: v850-opc.c:376
+#: v850-opc.c:302
 msgid "immediate value must be even"
-msgstr "onmiddellijke waarde moet paar zijn"
+msgstr "onmiddellijke waarde moet even zijn"
 
 # of is laadbereik beter?
-#: xstormy16-asm.c:76
+#: xstormy16-asm.c:70
 msgid "Bad register in preincrement"
 msgstr "Ongeldig register in preincrement"
 
-#: xstormy16-asm.c:81
+#: xstormy16-asm.c:75
 msgid "Bad register in postincrement"
 msgstr "Ongeldig register in postincrement"
 
 # of is laadbereik beter?
-#: xstormy16-asm.c:83
+#: xstormy16-asm.c:77
 msgid "Bad register name"
 msgstr "Ongeldige registernaam"
 
-#: xstormy16-asm.c:87
+#: xstormy16-asm.c:81
 msgid "Label conflicts with register name"
 msgstr "Label geeft conflict met registernaam"
 
-#: xstormy16-asm.c:91
+#: xstormy16-asm.c:85
 msgid "Label conflicts with `Rx'"
 msgstr "Label geeft conflict met `Rx'"
 
-#: xstormy16-asm.c:93
+#: xstormy16-asm.c:87
 msgid "Bad immediate expression"
 msgstr "Slechte onmiddelijke expressie"
 
 # immediate what? 'value' assumed
-#: xstormy16-asm.c:115
+#: xstormy16-asm.c:108
 msgid "No relocation for small immediate"
 msgstr "Geen relocatie voor kleine onmiddelijke waarde"
 
-#: xstormy16-asm.c:125
+#: xstormy16-asm.c:118
 msgid "Small operand was not an immediate number"
 msgstr "Kleine operand was geen onmiddellijk getal"
 
-#: xstormy16-asm.c:164
+#: xstormy16-asm.c:156
 msgid "Operand is not a symbol"
 msgstr "Operand is geen symbool"
 
-#: xstormy16-asm.c:172
+#: xstormy16-asm.c:164
 msgid "Syntax error: No trailing ')'"
 msgstr "Syntaxfout: Geen sluithaakje"
index 9cf88ed..957c33d 100644 (file)
@@ -1,18 +1,20 @@
-#  Vietnamese Translation for opcodes-2.15.96.
+#  Vietnamese Translation for Opcodes.
 #  Copyright © 2005 Free Software Foundation, Inc.
 #  Clytie Siddall <clytie@riverland.net.au>, 2005.
 # 
 msgid ""
 msgstr ""
-"Project-Id-Version: opcodes 2.15.96\n"
+"Project-Id-Version: opcodes-2.15.96\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2005-03-05 20:32+1030\n"
-"PO-Revision-Date: 2005-05-04 21:52+0930\n"
+"PO-Revision-Date: 2006-04-05 15:14+0930\n"
 "Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
 "Language-Team: Vietnamese <gnomevi-list@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"X-Generator: LocFactoryEditor 1.6b36\n"
 
 #: alpha-opc.c:331
 msgid "branch operand unaligned"
@@ -24,7 +26,7 @@ msgstr "chưa canh lề lời gợi ý nhảy"
 
 #: arc-dis.c:76
 msgid "Illegal limm reference in last instruction!\n"
-msgstr "Không cho phép tham chiếu loại limm trong câu lệnh cuối cùng.\n"
+msgstr "Không cho phép tham chiếu kiểu limm trong câu lệnh cuối cùng.\n"
 
 #: arm-dis.c:1267
 msgid "<illegal precision>"
@@ -65,7 +67,7 @@ msgstr "lỗi rã nội bộ"
 #: avr-dis.c:227
 #, c-format
 msgid "unknown constraint `%c'"
-msgstr "không biết ràng buộc `%c'"
+msgstr "không biết ràng buộc « %c »"
 
 #: cgen-asm.c:336 fr30-ibld.c:197 frv-ibld.c:197 ip2k-ibld.c:197
 #: iq2000-ibld.c:197 m32r-ibld.c:197 openrisc-ibld.c:197 xstormy16-ibld.c:197
@@ -120,13 +122,13 @@ msgstr "không chấp nhận câu lệnh"
 #: m32r-asm.c:569 openrisc-asm.c:483 xstormy16-asm.c:515
 #, c-format
 msgid "syntax error (expected char `%c', found `%c')"
-msgstr "gặp lỗi cú pháp (ngờ ký tự `%c', còn tìm `%c')"
+msgstr "gặp lỗi cú pháp (ngờ ký tự « %c », còn tìm « %c »)"
 
 #: fr30-asm.c:564 frv-asm.c:1539 ip2k-asm.c:771 iq2000-asm.c:706
 #: m32r-asm.c:579 openrisc-asm.c:493 xstormy16-asm.c:525
 #, c-format
 msgid "syntax error (expected char `%c', found end of instruction)"
-msgstr "gặp lỗi cú pháp (ngờ ký tự `%c', còn tìm kết thức câu lệnh)"
+msgstr "gặp lỗi cú pháp (ngờ ký tự « %c », còn tìm kết thức câu lệnh)"
 
 #: fr30-asm.c:592 frv-asm.c:1567 ip2k-asm.c:799 iq2000-asm.c:734
 #: m32r-asm.c:607 openrisc-asm.c:521 xstormy16-asm.c:553
@@ -142,19 +144,19 @@ msgstr "không chấp nhận dạng câu lệnh"
 #: m32r-asm.c:725 openrisc-asm.c:639 xstormy16-asm.c:671
 #, c-format
 msgid "bad instruction `%.50s...'"
-msgstr "câu lệnh sai `%.50s'"
+msgstr "câu lệnh sai « %.50s »"
 
 #: fr30-asm.c:713 frv-asm.c:1688 ip2k-asm.c:920 iq2000-asm.c:855
 #: m32r-asm.c:728 openrisc-asm.c:642 xstormy16-asm.c:674
 #, c-format
 msgid "bad instruction `%.50s'"
-msgstr "câu lệnh sai `%.50s'"
+msgstr "câu lệnh sai « %.50s »"
 
 #. Default text to print if an instruction isn't recognized.
 #: fr30-dis.c:41 frv-dis.c:41 ip2k-dis.c:41 iq2000-dis.c:41 m32r-dis.c:41
 #: mmix-dis.c:284 openrisc-dis.c:41 xstormy16-dis.c:41
 msgid "*unknown*"
-msgstr "*không biết*"
+msgstr " • không rõ •"
 
 #: fr30-dis.c:319 frv-dis.c:410 ip2k-dis.c:313 iq2000-dis.c:191 m32r-dis.c:262
 #: openrisc-dis.c:137 xstormy16-dis.c:170
@@ -178,7 +180,7 @@ msgstr "tác tử ở ngoại phạm vị (%lu không phải ở giữa 0 và %l
 #: m32r-ibld.c:667 openrisc-ibld.c:635 xstormy16-ibld.c:680
 #, c-format
 msgid "Unrecognized field %d while building insn.\n"
-msgstr "Không chấp nhận trÆ°á»\9dng %d trong khi xây dụng câu lệnh.\n"
+msgstr "Không chấp nhận trÆ°á»\9dng %d trong khi xây dá»±ng câu lệnh.\n"
 
 #: fr30-ibld.c:939 frv-ibld.c:1177 ip2k-ibld.c:686 iq2000-ibld.c:892
 #: m32r-ibld.c:806 openrisc-ibld.c:737 xstormy16-ibld.c:828
@@ -190,25 +192,25 @@ msgstr "Không chấp nhận trường %d trong khi giải mã câu lệnh.\n"
 #: m32r-ibld.c:922 openrisc-ibld.c:817 xstormy16-ibld.c:941
 #, c-format
 msgid "Unrecognized field %d while getting int operand.\n"
-msgstr "Không chấp nhận trường %d trong khi gọi tác tử số nguyên.\n"
+msgstr "Không chấp nhận trường %d trong khi lấy tác tử số nguyên.\n"
 
 #: fr30-ibld.c:1217 frv-ibld.c:1719 ip2k-ibld.c:820 iq2000-ibld.c:1140
 #: m32r-ibld.c:1018 openrisc-ibld.c:877 xstormy16-ibld.c:1034
 #, c-format
 msgid "Unrecognized field %d while getting vma operand.\n"
-msgstr "Không chấp nhận trường %d trong khi gọi tác tử vma.\n"
+msgstr "Không chấp nhận trường %d trong khi lấy tác tử vma.\n"
 
 #: fr30-ibld.c:1351 frv-ibld.c:1989 ip2k-ibld.c:882 iq2000-ibld.c:1263
 #: m32r-ibld.c:1122 openrisc-ibld.c:946 xstormy16-ibld.c:1136
 #, c-format
 msgid "Unrecognized field %d while setting int operand.\n"
-msgstr "Không chấp nhận trường %d trong khi lập tác tử số nguyên.\n"
+msgstr "Không chấp nhận trường %d trong khi đặt tác tử số nguyên.\n"
 
 #: fr30-ibld.c:1473 frv-ibld.c:2247 ip2k-ibld.c:932 iq2000-ibld.c:1374
 #: m32r-ibld.c:1214 openrisc-ibld.c:1003 xstormy16-ibld.c:1226
 #, c-format
 msgid "Unrecognized field %d while setting vma operand.\n"
-msgstr "Không chấp nhận trường %d trong khi lập tác tử vma.\n"
+msgstr "Không chấp nhận trường %d trong khi đặt tác tử vma.\n"
 
 #: frv-asm.c:978
 msgid "register number must be even"
@@ -227,13 +229,13 @@ msgstr "Không hiểu 0x%x \n"
 #: h8500-dis.c:143
 #, c-format
 msgid "can't cope with insert %d\n"
-msgstr "không quản lý được điều chèn %d\n"
+msgstr "không thể xử lý điều chèn %d\n"
 
 #. Couldn't understand anything.
 #: h8500-dis.c:342
 #, c-format
 msgid "%02x\t\t*unknown*"
-msgstr "°không biết*%02x\t\t"
+msgstr "%02x\t\t • không rõ •"
 
 #: i386-dis.c:1733
 msgid "<internal disassembler error>"
@@ -247,21 +249,21 @@ msgstr "%s: Lỗi"
 #: ia64-gen.c:310
 #, c-format
 msgid "%s: Warning: "
-msgstr "%s: Cảnh báo"
+msgstr "%s: Cảnh báo : "
 
 #: ia64-gen.c:496 ia64-gen.c:730
 #, c-format
 msgid "multiple note %s not handled\n"
-msgstr "không quản lý được đa chú thích %s\n"
+msgstr "không xử lý được đa chú thích %s\n"
 
 #: ia64-gen.c:607
 msgid "can't find ia64-ic.tbl for reading\n"
-msgstr "không tìm được ia64-ic.tbl để đọc\n"
+msgstr "không tìm thấy ia64-ic.tbl để đọc\n"
 
 #: ia64-gen.c:812
 #, c-format
 msgid "can't find %s for reading\n"
-msgstr "không tìm được %s để đọc\n"
+msgstr "không tìm thấy %s để đọc\n"
 
 #: ia64-gen.c:1036
 #, c-format
@@ -269,18 +271,18 @@ msgid ""
 "most recent format '%s'\n"
 "appears more restrictive than '%s'\n"
 msgstr ""
-"hình như dạng thức gần đây nhất '%s'\n"
-"giới hạn hơn '%s'\n"
+"dạng thức gần đây nhất « %s »\n"
+"có vẻ hạn hẹp hơn « %s »\n"
 
 #: ia64-gen.c:1047
 #, c-format
 msgid "overlapping field %s->%s\n"
-msgstr "trường chồng lấp %s->%s\n"
+msgstr "trường chồng lấp %s → %s\n"
 
 #: ia64-gen.c:1244
 #, c-format
 msgid "overwriting note %d with note %d (IC:%s)\n"
-msgstr "đang ghi đề chú thích %d với chú thích %d (IC:%s)\n"
+msgstr "đang ghi đè chú thích %d bằng chú thích %d (IC:%s)\n"
 
 #: ia64-gen.c:1443
 #, c-format
@@ -320,7 +322,7 @@ msgstr "đã định nghĩa còn chưa sử dụng hạng %s\n"
 #: ia64-gen.c:1541
 #, c-format
 msgid "Warning: rsrc %s (%s) has no chks%s\n"
-msgstr "Cảnh báo: tài nguyên %s (%s) không có cản trở %s\n"
+msgstr "Cảnh báo : tài nguyên %s (%s) không có cản trở %s\n"
 
 #: ia64-gen.c:1545
 #, c-format
@@ -345,7 +347,7 @@ msgstr "opcode (mã thi hành) %s không có hạng (những tác tử %d %d %d)
 #: ia64-gen.c:2816
 #, c-format
 msgid "unable to change directory to \"%s\", errno = %s\n"
-msgstr "không thay đổi được thư mục thành \"%s\", số lỗi = %s\n"
+msgstr "không thể chuyển đổi thư mục thành « %s », số lỗi = %s\n"
 
 #. We've been passed a w.  Return with an error message so that
 #. cgen will try the next parsing option.
@@ -356,7 +358,7 @@ msgstr "Tử khóa W không hợp lệ trong vị trí tác tử FR."
 #. Invalid offset present.
 #: ip2k-asm.c:117
 msgid "offset(IP) is not a valid form"
-msgstr "offset(IP) (hiệu số) không là dạng hợp lệ"
+msgstr "offset(IP) (hiệu số) không phải là dạng hợp lệ"
 
 #. Found something there in front of (DP) but it's out
 #. of range.
@@ -381,15 +383,15 @@ msgstr "tác tử ở ngoại phạm vị (không phải ở giữa số 1 và s
 #. Something is very wrong. opindex has to be one of the above.
 #: ip2k-asm.c:254
 msgid "parse_addr16: invalid opindex."
-msgstr "parse_addr16: (địa chỉ phân tách) opindex (chỉ mục loại tác tử) không hợp lệ."
+msgstr "parse_addr16: (địa chỉ phân tách) opindex (chỉ mục kiểu tác tử) không hợp lệ."
 
 #: ip2k-asm.c:309
 msgid "Byte address required. - must be even."
-msgstr "Cần đến địa chỉ byte - phải là số chẵn."
+msgstr "Cần đến địa chỉ byte  phải là số chẵn."
 
 #: ip2k-asm.c:318
 msgid "cgen_parse_address returned a symbol. Literal required."
-msgstr "cgen_parse_address (địa chỉ phân tách cgen) đã gọi một ký hiệu: còn cần đến hằng mã nguồn."
+msgstr "cgen_parse_address (địa chỉ phân tách cgen) đã trả gởi một ký hiệu: còn cần đến điều nghĩa chữ."
 
 #: ip2k-asm.c:376
 #, fuzzy, c-format
@@ -415,22 +417,22 @@ msgstr "hiệu số 21-bit ở ngoại phạm vị"
 #: iq2000-asm.c:210 iq2000-asm.c:240 iq2000-asm.c:277 iq2000-asm.c:310
 #: openrisc-asm.c:90 openrisc-asm.c:144
 msgid "missing `)'"
-msgstr "thiếu `)'"
+msgstr "thiếu dấu ngoặc đóng « ) »"
 
 #: m10200-dis.c:199
 #, c-format
 msgid "unknown\t0x%02x"
-msgstr "không biết\t0x%02x"
+msgstr "\t0x%02x không rõ"
 
 #: m10200-dis.c:339
 #, c-format
 msgid "unknown\t0x%04lx"
-msgstr "không biết\t0x%04lx"
+msgstr "\t0x%04lx không rõ"
 
 #: m10300-dis.c:767
 #, c-format
 msgid "unknown\t0x%04x"
-msgstr "không biết\t0x%04x"
+msgstr "\t0x%04x không rõ"
 
 #: m68k-dis.c:295
 #, c-format
@@ -552,7 +554,7 @@ msgid ""
 "   "
 msgstr ""
 "\n"
-"  Với những tùy chọn ở trên, hỗ trợ những giá trị theo đây cho \"ABI\":\n"
+"  Với những tùy chọn ở trên, hỗ trợ những giá trị theo đây cho « ABI »:\n"
 "   "
 
 #: mips-dis.c:1840 mips-dis.c:1848 mips-dis.c:1850
@@ -568,27 +570,27 @@ msgid ""
 "   "
 msgstr ""
 "\n"
-"  Với những tùy chọn ở trên, hỗ trợ những giá trị theo đây cho \"ARCH\":\n"
+"  Với những tùy chọn ở trên, hỗ trợ những giá trị theo đây cho « ARCH »:\n"
 "   "
 
 #: mmix-dis.c:34
 #, c-format
 msgid "Bad case %d (%s) in %s:%d\n"
-msgstr "Trường hợp sai %d (%s) trong %s:%d\n"
+msgstr "Chữ hoa/thường sai %d (%s) trong %s:%d\n"
 
 #: mmix-dis.c:44
 #, c-format
 msgid "Internal: Non-debugged code (test-case missing): %s:%d"
-msgstr "Nội bộ: chưa gỡ lỗi mã (thiếu trường hợp thử): %s:%d"
+msgstr "Nội bộ : chưa gỡ lỗi mã (thiếu trường hợp thử): %s:%d"
 
 #: mmix-dis.c:53
 msgid "(unknown)"
-msgstr "(không biết)"
+msgstr "(không )"
 
 #: mmix-dis.c:519
 #, c-format
 msgid "*unknown operands type: %d*"
-msgstr "*không biết loại tác tử: %d*"
+msgstr "• không biết kiểu tác tử: %d •"
 
 #. I and Z are output operands and can`t be immediate
 #. * A is an address and we can`t have the address of
@@ -603,11 +605,11 @@ msgstr "$<chưa định nghĩa>"
 
 #: ppc-opc.c:794 ppc-opc.c:822
 msgid "invalid conditional option"
-msgstr "tùy chọn thuộc điều kiện không hợp lệ"
+msgstr "tùy chọn điều kiện không hợp lệ"
 
 #: ppc-opc.c:824
 msgid "attempt to set y bit when using + or - modifier"
-msgstr "cố lập «bit y» khi sử dụng điều sửa đổi + hay -"
+msgstr "cố lập « bit y » khi sử dụng điều sửa đổi + hay -"
 
 #: ppc-opc.c:852
 msgid "offset not a multiple of 16"
@@ -663,15 +665,15 @@ msgstr "không cho phép mặt nặ bit"
 
 #: ppc-opc.c:1205
 msgid "value out of range"
-msgstr "giá trị cành ở ngoại phạm vị"
+msgstr "giá trị ở ngoại phạm vị"
 
 #: ppc-opc.c:1273
 msgid "index register in load range"
-msgstr "thanh ghi cơ số trong phạm vị nạp"
+msgstr "thanh ghi cơ số trong phạm vị tải"
 
 #: ppc-opc.c:1289
 msgid "source and target register operands must be different"
-msgstr "tác tử thanh ghi cả hai loại nguồn và đích đều phải là khác nhau"
+msgstr "tác tử thanh ghi kiểu cả nguồn lẫn đích đều phải là khác nhau"
 
 #: ppc-opc.c:1304
 msgid "invalid register operand when updating"
@@ -688,27 +690,27 @@ msgstr "tác tử thanh ghi nguồn phải là số chẵn"
 #. Mark as non-valid instruction.
 #: sparc-dis.c:760
 msgid "unknown"
-msgstr "không biết"
+msgstr "không "
 
 #: sparc-dis.c:835
 #, c-format
 msgid "Internal error:  bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
-msgstr "Lỗi nội bộ: sparc-opcode.h sai: \"%s\", %#.8lx, %#.8lx\n"
+msgstr "Lỗi nội bộ : sparc-opcode.h sai: « %s », %#.8lx, %#.8lx\n"
 
 #: sparc-dis.c:846
 #, c-format
 msgid "Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
-msgstr "Lỗi nội bộ: sparc-opcode.h sai: \"%s\", %#.8lx, %#.8lx\n"
+msgstr "Lỗi nội bộ : sparc-opcode.h sai: « %s », %#.8lx, %#.8lx\n"
 
 #: sparc-dis.c:895
 #, c-format
 msgid "Internal error: bad sparc-opcode.h: \"%s\" == \"%s\"\n"
-msgstr "Lỗi nội bộ: sparc-opcode.h sai: \"%s\" == \"%s\"\n"
+msgstr "Lỗi nội bộ : sparc-opcode.h sai: « %s » == \"%s\"\n"
 
 #: v850-dis.c:225
 #, c-format
 msgid "unknown operand shift: %x\n"
-msgstr "không biết phím shift (bên trái hay bên phải) của tác tử: %x\n"
+msgstr "không biết cách dịch tác tử: %x\n"
 
 #: v850-dis.c:237
 #, c-format
@@ -722,7 +724,7 @@ msgstr "không biết thanh ghi trong câu lệnh pop đống: %d\n"
 #. specific command line option is given to GAS.
 #: v850-opc.c:69
 msgid "displacement value is not in range and is not aligned"
-msgstr "giá trị di chuyển ở ngoại phạm vị và chưa canh lề nó"
+msgstr "giá trị di chuyển ở ngoại phạm vị và chưa được canh lề"
 
 #: v850-opc.c:70
 msgid "displacement value is out of range"
@@ -738,7 +740,7 @@ msgstr "giá trị trực tiếp ở ngoại phạm vị"
 
 #: v850-opc.c:84
 msgid "branch value not in range and to odd offset"
-msgstr "giá trị cành ở ngoại phạm vị và với hiệu số lẻ"
+msgstr "giá trị cành ở ngoại phạm vị và đối với hiệu số lẻ"
 
 #: v850-opc.c:86 v850-opc.c:118
 msgid "branch value out of range"
@@ -746,11 +748,11 @@ msgstr "giá trị cành ở ngoại phạm vị"
 
 #: v850-opc.c:89 v850-opc.c:121
 msgid "branch to odd offset"
-msgstr "nhánh với hiệu số lẻ"
+msgstr "nhánh đối với hiệu số lẻ"
 
 #: v850-opc.c:116
 msgid "branch value not in range and to an odd offset"
-msgstr "giá trị nhánh ở ngoại phạm vị và với hiệu số lẻ"
+msgstr "giá trị nhánh ở ngoại phạm vị và đối với hiệu số lẻ"
 
 #: v850-opc.c:347
 msgid "invalid register for stack adjustment"
@@ -766,11 +768,11 @@ msgstr "giá trị trực tiếp phải là số chẵn"
 
 #: xstormy16-asm.c:76
 msgid "Bad register in preincrement"
-msgstr "Thanh ghi sai trong điều trước lượng gia"
+msgstr "Thanh ghi sai trong tiền lượng gia"
 
 #: xstormy16-asm.c:81
 msgid "Bad register in postincrement"
-msgstr "Thanh ghi sai trong điều sau lượng gia"
+msgstr "Thanh ghi sai trong hậu lượng gia"
 
 #: xstormy16-asm.c:83
 msgid "Bad register name"
@@ -782,7 +784,7 @@ msgstr "Nhãn xung đột với tên thanh ghi"
 
 #: xstormy16-asm.c:91
 msgid "Label conflicts with `Rx'"
-msgstr "Nhãn xung đột với `Rx'"
+msgstr "Nhãn xung đột với « Rx »"
 
 #: xstormy16-asm.c:93
 msgid "Bad immediate expression"
@@ -802,4 +804,4 @@ msgstr "Tác tử không phải là một ký hiệu"
 
 #: xstormy16-asm.c:172
 msgid "Syntax error: No trailing ')'"
-msgstr "Lỗi cú pháp: không có ')' đi theo"
+msgstr "Lỗi cú pháp: không có dấu ngoặc đóng « ) » đi theo"
index 40a34d8..9b366f1 100644 (file)
@@ -31,6 +31,9 @@ SHELL = /bin/sh
 BZIPPROG = bzip2
 MD5PROG = md5sum
 
+# (Default to avoid splitting info files by setting the threshold high.)
+MAKEINFOFLAGS = --split-size=5000000
+
 # pwd command to use.  Allow user to override default by setting PWDCMD in
 # the environment to account for automounters.  The make variable must not
 # be called PWDCMD, otherwise the value set here is passed to make
@@ -146,9 +149,11 @@ do-proto-toplev: $(DEVO_SUPPORT) $(SUPPORT_FILES) texinfo/texinfo.tex
          if [ -d $$d ]; then \
            if [ ! -f $$d/Makefile ] ; then true ; \
            elif grep '^diststuff:' $$d/Makefile >/dev/null ; then \
-               (cd $$d ; $(MAKE) diststuff ) || exit 1 ; \
+               (cd $$d ; $(MAKE) MAKEINFOFLAGS="$(MAKEINFOFLAGS)" \
+                         diststuff ) || exit 1 ; \
            elif grep '^info:' $$d/Makefile >/dev/null ; then \
-               (cd $$d ; $(MAKE) info ) || exit 1 ; \
+               (cd $$d ; $(MAKE) MAKEINFOFLAGS="$(MAKEINFOFLAGS)" \
+                         info ) || exit 1 ; \
            fi ; \
            if [ -d $$d/proto-$$d.dir ]; then \
              ln -s ../$$d/proto-$$d.dir proto-toplev/$$d ; \
@@ -157,7 +162,7 @@ do-proto-toplev: $(DEVO_SUPPORT) $(SUPPORT_FILES) texinfo/texinfo.tex
            fi ; \
          else ln -s ../$$d proto-toplev/$$d ; fi ; \
        done
-       cd etc && $(MAKE) info
+       cd etc && $(MAKE) MAKEINFOFLAGS="$(MAKEINFOFLAGS)" info
        $(MAKE) distclean
        # Kludge for pr gdb/857.  intl/Makefile.in lacks a couple
        # of files in the distclean rule.  Zack W is planning to make