Add support for the WebAssembly backend to the BFD library.
authorPip Cet <pipcet@gmail.com>
Mon, 27 Mar 2017 12:41:39 +0000 (13:41 +0100)
committerNick Clifton <nickc@redhat.com>
Mon, 27 Mar 2017 12:41:39 +0000 (13:41 +0100)
* wasm-module.c: New file to support WebAssembly modules.
* wasm-module.h: New file to support WebAssembly modules.
* doc/webassembly.texi: Start documenting wasm-module.c.
* config.bfd: Add wasm_vec.
* targets.c: Likewise.
* configure.ac: Likewise.
* Makefile.am: Add entries for wasm-module.c.
* Makefile.in: Regenerate.
* configure: Regenerate.
* po/SRC-POTFILES.in: Regenerate.

12 files changed:
bfd/ChangeLog
bfd/Makefile.am
bfd/Makefile.in
bfd/config.bfd
bfd/configure
bfd/configure.ac
bfd/doc/webassembly.texi [new file with mode: 0644]
bfd/po/SRC-POTFILES.in
bfd/po/bfd.pot
bfd/targets.c
bfd/wasm-module.c [new file with mode: 0644]
bfd/wasm-module.h [new file with mode: 0644]

index cf0e011..04d84f1 100644 (file)
@@ -1,5 +1,18 @@
 2017-03-27  Pip Cet  <pipcet@gmail.com>
 
+       * wasm-module.c: New file to support WebAssembly modules.
+       * wasm-module.h: New file to support WebAssembly modules.
+       * doc/webassembly.texi: Start documenting wasm-module.c.
+       * config.bfd: Add wasm_vec.
+       * targets.c: Likewise.
+       * configure.ac: Likewise.
+       * Makefile.am: Add entries for wasm-module.c.
+       * Makefile.in: Regenerate.
+       * configure: Regenerate.
+       * po/SRC-POTFILES.in: Regenerate.
+
+2017-03-27  Pip Cet  <pipcet@gmail.com>
+
        * cpu-wasm32.c: New file to support wasm32 architecture.
        * elf32-wasm32.c: New file to support wasm32 architecture.
        * Makefile.am: Add wasm32 architecture.
index 6fa8302..49ab092 100644 (file)
@@ -459,6 +459,7 @@ BFD32_BACKENDS = \
        versados.lo \
        vms-lib.lo \
        vms-misc.lo \
+       wasm-module.lo \
        xcofflink.lo \
        xsym.lo \
        xtensa-isa.lo \
@@ -652,6 +653,7 @@ BFD32_BACKENDS_CFILES = \
        versados.c \
        vms-lib.c \
        vms-misc.c \
+       wasm-module.c \
        xcofflink.c \
        xsym.c \
        xtensa-isa.c \
index 76916b7..fed5117 100644 (file)
@@ -793,6 +793,7 @@ BFD32_BACKENDS = \
        versados.lo \
        vms-lib.lo \
        vms-misc.lo \
+       wasm-module.lo \
        xcofflink.lo \
        xsym.lo \
        xtensa-isa.lo \
@@ -986,6 +987,7 @@ BFD32_BACKENDS_CFILES = \
        versados.c \
        vms-lib.c \
        vms-misc.c \
+       wasm-module.c \
        xcofflink.c \
        xsym.c \
        xtensa-isa.c \
@@ -1671,6 +1673,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vms-alpha.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vms-lib.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vms-misc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wasm-module.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xcofflink.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xsym.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xtensa-isa.Plo@am__quote@
index abcb7ae..1235c2c 100644 (file)
@@ -1796,6 +1796,7 @@ case "${targ}" in
 
   wasm32-*-*)
     targ_defvec=wasm32_elf32_vec
+    targ_selvecs="wasm_vec"
     ;;
 
   we32k-*-*)
index 57beb64..7cae4ae 100755 (executable)
@@ -14569,6 +14569,7 @@ do
     ft32_elf32_vec)             tb="$tb elf32-ft32.lo elf32.lo $elf" ;;
     visium_elf32_vec)           tb="$tb elf32-visium.lo elf32.lo $elf" ;;
     w65_coff_vec)               tb="$tb coff-w65.lo reloc16.lo $coffgen" ;;
+    wasm_vec)                    tb="$tb wasm-module.lo" ;;
     wasm32_elf32_vec)            tb="$tb elf32-wasm32.lo elf32.lo $elf" ;;
     we32k_coff_vec)             tb="$tb coff-we32k.lo $coffgen" ;;
     x86_64_coff_vec)            tb="$tb coff-x86_64.lo $coff"; target_size=64 ;;
index 7796194..feb1231 100644 (file)
@@ -700,6 +700,7 @@ do
     ft32_elf32_vec)             tb="$tb elf32-ft32.lo elf32.lo $elf" ;;
     visium_elf32_vec)           tb="$tb elf32-visium.lo elf32.lo $elf" ;;
     w65_coff_vec)               tb="$tb coff-w65.lo reloc16.lo $coffgen" ;;
+    wasm_vec)                    tb="$tb wasm-module.lo" ;;
     wasm32_elf32_vec)            tb="$tb elf32-wasm32.lo elf32.lo $elf" ;;
     we32k_coff_vec)             tb="$tb coff-we32k.lo $coffgen" ;;
     x86_64_coff_vec)            tb="$tb coff-x86_64.lo $coff"; target_size=64 ;;
diff --git a/bfd/doc/webassembly.texi b/bfd/doc/webassembly.texi
new file mode 100644 (file)
index 0000000..ad65094
--- /dev/null
@@ -0,0 +1,33 @@
+@section WebAssembly backend
+The WebAssembly module file format, at present, is a very simple
+object file format with up to 11 numbered sections plus named
+``custom'' sections. At present, there is no standard for relocations
+or symbols, though a @code{"name"} subsection can assign names to
+function indices and local variables.
+
+As such, it offers no real advantages over ELF, and intermediate ELF
+files can be used to produce WebAssembly modules. The WebAssembly
+backend aims to enable the opposite: reading a WebAssembly module and
+producing an ELF file containing the same information, which can then
+be manipulated and inspected with standard tools.
+
+When writing WebAssembly modules, the WebAssembly backend attempts to
+determine based on the section name whether to use a numeric section
+id, a named section header, or to include the section verbatim,
+assuming it already contains any necessary header.
+
+Function names are supported as symbols; local names and WebAssembly
+relocation sections are currently unsupported.
+
+There are slight differences in the LEB128 integer implementations
+between the WebAssembly specification and the BFD code; these result
+in some malformed WebAssembly modules being treated as valid.
+
+@menu
+* File layout::
+@end menu
+
+@node File layout, WebAssembly
+@subsection File layout
+For a description of the WebAssembly file format, see
+@url{https://github.com/WebAssembly/design/blob/master/BinaryEncoding.md}.
index 81f42ea..a4b9e87 100644 (file)
@@ -386,6 +386,7 @@ vms-alpha.c
 vms-lib.c
 vms-misc.c
 vms.h
+wasm-module.c
 xcofflink.c
 xsym.c
 xsym.h
index a634015..70249f8 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
-"POT-Creation-Date: 2016-12-23 09:23+0100\n"
+"POT-Creation-Date: 2017-03-27 11:46+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"
@@ -69,7 +69,7 @@ msgstr ""
 msgid "Warning: writing archive was slow: rewriting timestamp\n"
 msgstr ""
 
-#: archive.c:2405 linker.c:1481
+#: archive.c:2405 linker.c:1408
 #, c-format
 msgid "%s: plugin needed to handle lto object"
 msgstr ""
@@ -82,111 +82,111 @@ msgstr ""
 msgid "Writing updated armap timestamp"
 msgstr ""
 
-#: bfd.c:453
+#: bfd.c:454
 msgid "No error"
 msgstr ""
 
-#: bfd.c:454
+#: bfd.c:455
 msgid "System call error"
 msgstr ""
 
-#: bfd.c:455
+#: bfd.c:456
 msgid "Invalid bfd target"
 msgstr ""
 
-#: bfd.c:456
+#: bfd.c:457
 msgid "File in wrong format"
 msgstr ""
 
-#: bfd.c:457
+#: bfd.c:458
 msgid "Archive object file in wrong format"
 msgstr ""
 
-#: bfd.c:458
+#: bfd.c:459
 msgid "Invalid operation"
 msgstr ""
 
-#: bfd.c:459
+#: bfd.c:460
 msgid "Memory exhausted"
 msgstr ""
 
-#: bfd.c:460
+#: bfd.c:461
 msgid "No symbols"
 msgstr ""
 
-#: bfd.c:461
+#: bfd.c:462
 msgid "Archive has no index; run ranlib to add one"
 msgstr ""
 
-#: bfd.c:462
+#: bfd.c:463
 msgid "No more archived files"
 msgstr ""
 
-#: bfd.c:463
+#: bfd.c:464
 msgid "Malformed archive"
 msgstr ""
 
-#: bfd.c:464
+#: bfd.c:465
 msgid "DSO missing from command line"
 msgstr ""
 
-#: bfd.c:465
+#: bfd.c:466
 msgid "File format not recognized"
 msgstr ""
 
-#: bfd.c:466
+#: bfd.c:467
 msgid "File format is ambiguous"
 msgstr ""
 
-#: bfd.c:467
+#: bfd.c:468
 msgid "Section has no contents"
 msgstr ""
 
-#: bfd.c:468
+#: bfd.c:469
 msgid "Nonrepresentable section on output"
 msgstr ""
 
-#: bfd.c:469
+#: bfd.c:470
 msgid "Symbol needs debug section which does not exist"
 msgstr ""
 
-#: bfd.c:470
+#: bfd.c:471
 msgid "Bad value"
 msgstr ""
 
-#: bfd.c:471
+#: bfd.c:472
 msgid "File truncated"
 msgstr ""
 
-#: bfd.c:472
+#: bfd.c:473
 msgid "File too big"
 msgstr ""
 
-#: bfd.c:473
+#: bfd.c:474
 #, c-format
 msgid "Error reading %s: %s"
 msgstr ""
 
-#: bfd.c:474
+#: bfd.c:475
 msgid "#<Invalid error code>"
 msgstr ""
 
-#: bfd.c:1063
+#: bfd.c:1064
 #, c-format
 msgid "BFD %s assertion fail %s:%d"
 msgstr ""
 
-#: bfd.c:1076
+#: bfd.c:1077
 #, c-format
 msgid "BFD %s internal error, aborting at %s:%d in %s\n"
 msgstr ""
 
-#: bfd.c:1081
+#: bfd.c:1082
 #, c-format
 msgid "BFD %s internal error, aborting at %s:%d\n"
 msgstr ""
 
-#: bfd.c:1083
+#: bfd.c:1084
 msgid "Please report this bug.\n"
 msgstr ""
 
@@ -206,12 +206,12 @@ msgid "Warning: Writing section `%s' at huge (ie negative) file offset 0x%lx."
 msgstr ""
 
 #: bout.c:1142 elf-m10300.c:2651 elf32-avr.c:2452 elf32-frv.c:5633
-#: elf64-ia64-vms.c:353 elfxx-sparc.c:2871 reloc.c:7931 reloc16.c:156
+#: elf64-ia64-vms.c:353 elfxx-sparc.c:2876 reloc.c:7981 reloc16.c:156
 #: elf32-ia64.c:351 elf64-ia64.c:351
 msgid "%P%F: --relax and -r may not be used together\n"
 msgstr ""
 
-#: cache.c:272
+#: cache.c:273
 #, c-format
 msgid "reopening %B: %s\n"
 msgstr ""
@@ -242,9 +242,8 @@ msgstr ""
 msgid "%B: unsupported relocation: ALPHA_R_GPRELLOW"
 msgstr ""
 
-#: coff-alpha.c:1518 elf32-i370.c:1085 elf32-m32r.c:2418 elf64-alpha.c:4159
-#: elf64-alpha.c:4307 elf64-ia64-vms.c:3432 elf32-ia64.c:3839
-#: elf64-ia64.c:3839
+#: coff-alpha.c:1518 elf32-i370.c:1085 elf32-m32r.c:2418 elf64-alpha.c:4167
+#: elf64-alpha.c:4315 elf64-ia64-vms.c:3432 elf32-ia64.c:3840 elf64-ia64.c:3840
 #, c-format
 msgid "%B: unknown relocation type %d"
 msgstr ""
@@ -259,7 +258,7 @@ msgstr ""
 msgid "%B: unable to find ARM glue '%s' for `%s'"
 msgstr ""
 
-#: coff-arm.c:1363 elf32-arm.c:8908
+#: coff-arm.c:1363 elf32-arm.c:8899
 #, c-format
 msgid ""
 "%B(%s): warning: interworking not enabled.\n"
@@ -289,14 +288,14 @@ msgstr ""
 msgid "error: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d"
 msgstr ""
 
-#: coff-arm.c:2217 elf32-arm.c:19726
+#: coff-arm.c:2217 elf32-arm.c:19724
 #, c-format
 msgid ""
 "error: %B passes floats in float registers, whereas %B passes them in "
 "integer registers"
 msgstr ""
 
-#: coff-arm.c:2222 elf32-arm.c:19730
+#: coff-arm.c:2222 elf32-arm.c:19728
 #, c-format
 msgid ""
 "error: %B passes floats in integer registers, whereas %B passes them in "
@@ -317,12 +316,12 @@ msgid ""
 "position independent"
 msgstr ""
 
-#: coff-arm.c:2266 elf32-arm.c:19795
+#: coff-arm.c:2266 elf32-arm.c:19793
 #, c-format
 msgid "Warning: %B supports interworking, whereas %B does not"
 msgstr ""
 
-#: coff-arm.c:2271 elf32-arm.c:19801
+#: coff-arm.c:2271 elf32-arm.c:19799
 #, c-format
 msgid "Warning: %B does not support interworking, whereas %B does"
 msgstr ""
@@ -332,7 +331,7 @@ msgstr ""
 msgid "private flags = %x:"
 msgstr ""
 
-#: coff-arm.c:2302 elf32-arm.c:14134
+#: coff-arm.c:2302 elf32-arm.c:14125
 #, c-format
 msgid " [floats passed in float registers]"
 msgstr ""
@@ -342,7 +341,7 @@ msgstr ""
 msgid " [floats passed in integer registers]"
 msgstr ""
 
-#: coff-arm.c:2307 elf32-arm.c:14137
+#: coff-arm.c:2307 elf32-arm.c:14128
 #, c-format
 msgid " [position independent]"
 msgstr ""
@@ -367,17 +366,17 @@ msgstr ""
 msgid " [interworking not supported]"
 msgstr ""
 
-#: coff-arm.c:2362 elf32-arm.c:13023
+#: coff-arm.c:2362 elf32-arm.c:13014
 msgid ""
 "Warning: Not setting interworking flag of %B since it has already been "
 "specified as non-interworking"
 msgstr ""
 
-#: coff-arm.c:2365 elf32-arm.c:13027
+#: coff-arm.c:2365 elf32-arm.c:13018
 msgid "Warning: Clearing the interworking flag of %B due to outside request"
 msgstr ""
 
-#: coff-arm.c:2422 elf32-arm.c:13072
+#: coff-arm.c:2422 elf32-arm.c:13063
 #, c-format
 msgid ""
 "Warning: Clearing the interworking flag of %B because non-interworking code "
@@ -394,7 +393,7 @@ msgstr ""
 msgid "relocation `%s' not yet implemented"
 msgstr ""
 
-#: coff-i860.c:608 coff-tic54x.c:365 coffcode.h:5314
+#: coff-i860.c:608 coff-tic54x.c:365 coffcode.h:5317
 #, c-format
 msgid "%B: warning: illegal symbol index %ld in relocs"
 msgstr ""
@@ -549,41 +548,41 @@ msgstr ""
 msgid "%B: too many sections (%d)"
 msgstr ""
 
-#: coffcode.h:3768
+#: coffcode.h:3770
 #, c-format
 msgid "%B: section %s: string table overflow at offset %ld"
 msgstr ""
 
-#: coffcode.h:4585
+#: coffcode.h:4588
 msgid "%B: warning: line number table read failed"
 msgstr ""
 
-#: coffcode.h:4619 coffcode.h:4633
+#: coffcode.h:4622 coffcode.h:4636
 #, c-format
 msgid "%B: warning: illegal symbol index 0x%lx in line number entry %d"
 msgstr ""
 
-#: coffcode.h:4647
+#: coffcode.h:4650
 #, c-format
 msgid "%B: warning: illegal symbol in line number entry %d"
 msgstr ""
 
-#: coffcode.h:4660
+#: coffcode.h:4663
 #, c-format
 msgid "%B: warning: duplicate line number information for `%s'"
 msgstr ""
 
-#: coffcode.h:5074
+#: coffcode.h:5077
 #, c-format
 msgid "%B: Unrecognized storage class %d for %s symbol `%s'"
 msgstr ""
 
-#: coffcode.h:5207
+#: coffcode.h:5210
 #, c-format
 msgid "warning: %B: local symbol `%s' has no section"
 msgstr ""
 
-#: coffcode.h:5354
+#: coffcode.h:5357
 #, c-format
 msgid "%B: illegal relocation type %d at address 0x%lx"
 msgstr ""
@@ -598,31 +597,36 @@ msgstr ""
 msgid "%B: unable to initialize decompress status for section %s"
 msgstr ""
 
-#: coffgen.c:1711
+#. PR 21013: Provide an error message when the alloc fails.
+#: coffgen.c:1648
+msgid "%B: Not enough memory to allocate space for %lu symbols"
+msgstr ""
+
+#: coffgen.c:1716
 #, c-format
 msgid "%B: bad string table size %lu"
 msgstr ""
 
-#: coffgen.c:1880 coffgen.c:1940 coffgen.c:1958 cofflink.c:2040
+#: coffgen.c:1885 coffgen.c:1945 coffgen.c:1963 cofflink.c:2040
 #: xcofflink.c:4507
 msgid "<corrupt>"
 msgstr ""
 
-#: coffgen.c:2082
+#: coffgen.c:2087
 #, c-format
 msgid "<corrupt info> %s"
 msgstr ""
 
-#: coffgen.c:2633 elflink.c:13856 linker.c:3004
+#: coffgen.c:2638 elflink.c:13940 linker.c:2931
 msgid "%F%P: already_linked_table: %E\n"
 msgstr ""
 
-#: coffgen.c:2960 elflink.c:12889
+#: coffgen.c:2965 elflink.c:12981
 #, c-format
 msgid "Removing unused section '%s' in file '%B'"
 msgstr ""
 
-#: coffgen.c:3036 elflink.c:13135
+#: coffgen.c:3041 elflink.c:13219
 msgid "Warning: gc-sections option ignored"
 msgstr ""
 
@@ -631,7 +635,7 @@ msgstr ""
 msgid "Warning: symbol `%s' is both section and non-section"
 msgstr ""
 
-#: cofflink.c:450 elf64-ia64-vms.c:5187 elflink.c:4688
+#: cofflink.c:450 elf64-ia64-vms.c:5187 elflink.c:4734
 #, c-format
 msgid "Warning: type of symbol `%s' changed from %d to %d in %B"
 msgstr ""
@@ -641,7 +645,7 @@ msgstr ""
 msgid "%B: relocs in section `%A', but it has no contents"
 msgstr ""
 
-#: cofflink.c:2431 elflink.c:10360
+#: cofflink.c:2431 elflink.c:10470
 #, c-format
 msgid ""
 "%X`%s' referenced in section `%A' of %B: defined in discarded section `%A' "
@@ -673,85 +677,85 @@ msgstr ""
 msgid "warning: unable to update contents of %s section in %s"
 msgstr ""
 
-#: dwarf2.c:526
+#: dwarf2.c:532
 #, c-format
 msgid "Dwarf Error: Can't find %s section."
 msgstr ""
 
-#: dwarf2.c:556
+#: dwarf2.c:562
 #, c-format
 msgid "Dwarf Error: Offset (%lu) greater than or equal to %s size (%lu)."
 msgstr ""
 
-#: dwarf2.c:1015
+#: dwarf2.c:1028
 msgid "Dwarf Error: Info pointer extends beyond end of attributes"
 msgstr ""
 
-#: dwarf2.c:1167
+#: dwarf2.c:1185
 #, c-format
 msgid "Dwarf Error: Invalid or unhandled FORM value: %#x."
 msgstr ""
 
-#: dwarf2.c:1473
+#: dwarf2.c:1491
 msgid "Dwarf Error: mangled line number section (bad file number)."
 msgstr ""
 
-#: dwarf2.c:1761
+#: dwarf2.c:1779
 #, c-format
 msgid "Dwarf Error: Line info section is too small (%ld)"
 msgstr ""
 
-#: dwarf2.c:1791
+#: dwarf2.c:1809
 #, c-format
 msgid "Dwarf Error: Line info data is bigger (0x%lx) than the section (0x%lx)"
 msgstr ""
 
-#: dwarf2.c:1803
+#: dwarf2.c:1821
 #, c-format
 msgid "Dwarf Error: Unhandled .debug_line version %d."
 msgstr ""
 
-#: dwarf2.c:1812
+#: dwarf2.c:1830
 msgid "Dwarf Error: Ran out of room reading prologue"
 msgstr ""
 
-#: dwarf2.c:1837
+#: dwarf2.c:1855
 msgid "Dwarf Error: Invalid maximum operations per instruction."
 msgstr ""
 
-#: dwarf2.c:1856
+#: dwarf2.c:1874
 msgid "Dwarf Error: Ran out of room reading opcodes"
 msgstr ""
 
-#: dwarf2.c:2044
+#: dwarf2.c:2069
 msgid "Dwarf Error: mangled line number section."
 msgstr ""
 
-#: dwarf2.c:2538
+#: dwarf2.c:2575
 #, c-format
 msgid "Dwarf Error: Unable to read alt ref %u."
 msgstr ""
 
-#: dwarf2.c:2562 dwarf2.c:2706 dwarf2.c:3023
+#: dwarf2.c:2600 dwarf2.c:2745 dwarf2.c:3063
 #, c-format
 msgid "Dwarf Error: Could not find abbrev number %u."
 msgstr ""
 
-#: dwarf2.c:2976
+#: dwarf2.c:3015
 #, c-format
 msgid ""
 "Dwarf Error: found dwarf version '%u', this reader only handles version 2, 3 "
 "and 4 information."
 msgstr ""
 
-#: dwarf2.c:2987
+#: dwarf2.c:3026
 #, c-format
 msgid ""
 "Dwarf Error: found address size '%u', this reader can not handle sizes "
 "greater than '%u'."
 msgstr ""
 
-#: dwarf2.c:3089
+#: dwarf2.c:3129
 msgid ""
 "Dwarf Error: DW_AT_comp_dir attribute encountered with a non-string form."
 msgstr ""
@@ -834,62 +838,62 @@ msgstr ""
 msgid "error: %B: Object tag '%d, %s' is incompatible with tag '%d, %s'"
 msgstr ""
 
-#: elf-eh-frame.c:928
+#: elf-eh-frame.c:943
 #, c-format
 msgid "discarding zero address range FDE in %B(%A).\n"
 msgstr ""
 
-#: elf-eh-frame.c:1033
+#: elf-eh-frame.c:1048
 #, c-format
 msgid "%P: error in %B(%A); no .eh_frame_hdr table will be created.\n"
 msgstr ""
 
-#: elf-eh-frame.c:1385
+#: elf-eh-frame.c:1400
 #, c-format
 msgid ""
 "%P: FDE encoding in %B(%A) prevents .eh_frame_hdr table being created.\n"
 msgstr ""
 
-#: elf-eh-frame.c:1392
+#: elf-eh-frame.c:1407
 msgid ""
 "%P: Further warnings about FDE encoding preventing .eh_frame_hdr generation "
 "dropped.\n"
 msgstr ""
 
-#: elf-eh-frame.c:1680
+#: elf-eh-frame.c:1727
 #, c-format
 msgid "%B: %s not in order"
 msgstr ""
 
-#: elf-eh-frame.c:1694
+#: elf-eh-frame.c:1741
 #, c-format
 msgid "%B: %s invalid input section size"
 msgstr ""
 
-#: elf-eh-frame.c:1702
+#: elf-eh-frame.c:1749
 #, c-format
 msgid "%B: %s points past end of text section"
 msgstr ""
 
-#: elf-eh-frame.c:1951
+#: elf-eh-frame.c:1998
 msgid "%P: DW_EH_PE_datarel unspecified for this architecture.\n"
 msgstr ""
 
-#: elf-eh-frame.c:2133
+#: elf-eh-frame.c:2168
 #, c-format
 msgid "Invalid output section for .eh_frame_entry: %s"
 msgstr ""
 
-#: elf-eh-frame.c:2156
+#: elf-eh-frame.c:2191
 #, c-format
 msgid "Invalid contents in %s section"
 msgstr ""
 
-#: elf-eh-frame.c:2312
+#: elf-eh-frame.c:2347
 msgid "%P: .eh_frame_hdr entry overflow.\n"
 msgstr ""
 
-#: elf-eh-frame.c:2315
+#: elf-eh-frame.c:2350
 msgid "%P: .eh_frame_hdr refers to overlapping FDEs.\n"
 msgstr ""
 
@@ -906,12 +910,12 @@ msgstr ""
 #: elf32-d10v.c:513 elf32-epiphany.c:563 elf32-fr30.c:591 elf32-frv.c:4041
 #: elf32-ft32.c:334 elf32-h8300.c:522 elf32-i860.c:1210 elf32-ip2k.c:1475
 #: elf32-iq2000.c:693 elf32-lm32.c:1126 elf32-m32c.c:621 elf32-m32r.c:3044
-#: elf32-m68hc1x.c:1269 elf32-mep.c:524 elf32-metag.c:2005
-#: elf32-microblaze.c:1574 elf32-moxie.c:285 elf32-mt.c:400 elf32-nds32.c:5402
-#: elf32-or1k.c:1262 elf32-score.c:2733 elf32-score7.c:2546 elf32-spu.c:5076
-#: elf32-tilepro.c:3674 elf32-v850.c:2287 elf32-visium.c:677
-#: elf32-xstormy16.c:927 elf64-mmix.c:1540 elfxx-tilegx.c:4061
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-riscv.c:2256
+#: elf32-m68hc1x.c:1269 elf32-mep.c:524 elf32-metag.c:2001
+#: elf32-microblaze.c:1570 elf32-moxie.c:285 elf32-mt.c:400 elf32-nds32.c:5402
+#: elf32-or1k.c:1258 elf32-score.c:2733 elf32-score7.c:2546 elf32-spu.c:5076
+#: elf32-tilepro.c:3665 elf32-v850.c:2287 elf32-visium.c:677
+#: elf32-xstormy16.c:927 elf64-mmix.c:1540 elfxx-tilegx.c:4052
+#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2267
 msgid "internal error: out of range error"
 msgstr ""
 
@@ -920,18 +924,18 @@ msgstr ""
 #: elf32-d10v.c:517 elf32-fr30.c:595 elf32-frv.c:4045 elf32-ft32.c:338
 #: elf32-h8300.c:526 elf32-i860.c:1214 elf32-iq2000.c:697 elf32-lm32.c:1130
 #: elf32-m32c.c:625 elf32-m32r.c:3048 elf32-m68hc1x.c:1273 elf32-mep.c:528
-#: elf32-metag.c:2009 elf32-microblaze.c:1578 elf32-moxie.c:289
-#: elf32-msp430.c:1361 elf32-nds32.c:5406 elf32-or1k.c:1266 elf32-score.c:2737
-#: elf32-score7.c:2550 elf32-spu.c:5080 elf32-tilepro.c:3678 elf32-v850.c:2291
+#: elf32-metag.c:2005 elf32-microblaze.c:1574 elf32-moxie.c:289
+#: elf32-msp430.c:1361 elf32-nds32.c:5406 elf32-or1k.c:1262 elf32-score.c:2737
+#: elf32-score7.c:2550 elf32-spu.c:5080 elf32-tilepro.c:3669 elf32-v850.c:2291
 #: elf32-visium.c:681 elf32-xstormy16.c:931 elf64-mmix.c:1544
-#: elfxx-mips.c:10398 elfxx-tilegx.c:4065
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-riscv.c:2260
+#: elfxx-mips.c:10253 elfxx-tilegx.c:4056
+#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2271
 msgid "internal error: unsupported relocation error"
 msgstr ""
 
 #: elf-m10200.c:433 elf32-cr16.c:1474 elf32-cr16c.c:788 elf32-crx.c:932
 #: elf32-d10v.c:521 elf32-h8300.c:530 elf32-lm32.c:1134 elf32-m32r.c:3052
-#: elf32-m68hc1x.c:1277 elf32-microblaze.c:1582 elf32-nds32.c:5410
+#: elf32-m68hc1x.c:1277 elf32-microblaze.c:1578 elf32-nds32.c:5410
 #: elf32-score.c:2741 elf32-score7.c:2554 elf32-spu.c:5084
 msgid "internal error: dangerous error"
 msgstr ""
@@ -941,13 +945,12 @@ msgstr ""
 #: elf32-d10v.c:525 elf32-epiphany.c:578 elf32-fr30.c:603 elf32-frv.c:4053
 #: elf32-ft32.c:346 elf32-h8300.c:534 elf32-i860.c:1222 elf32-ip2k.c:1490
 #: elf32-iq2000.c:705 elf32-lm32.c:1138 elf32-m32c.c:633 elf32-m32r.c:3056
-#: elf32-m68hc1x.c:1281 elf32-mep.c:536 elf32-metag.c:2017
-#: elf32-microblaze.c:1586 elf32-moxie.c:297 elf32-msp430.c:1369
-#: elf32-mt.c:408 elf32-nds32.c:5414 elf32-or1k.c:1274 elf32-score.c:2750
-#: elf32-score7.c:2558 elf32-spu.c:5088 elf32-tilepro.c:3686 elf32-v850.c:2311
-#: elf32-visium.c:689 elf32-xstormy16.c:939 elf64-mmix.c:1552
-#: elfxx-tilegx.c:4073
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-riscv.c:2268
+#: elf32-m68hc1x.c:1281 elf32-mep.c:536 elf32-metag.c:2013
+#: elf32-microblaze.c:1582 elf32-moxie.c:297 elf32-msp430.c:1369 elf32-mt.c:408
+#: elf32-nds32.c:5414 elf32-or1k.c:1270 elf32-score.c:2750 elf32-score7.c:2558
+#: elf32-spu.c:5088 elf32-tilepro.c:3677 elf32-v850.c:2311 elf32-visium.c:689
+#: elf32-xstormy16.c:939 elf64-mmix.c:1552 elfxx-tilegx.c:4064
+#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2279
 msgid "internal error: unknown error"
 msgstr ""
 
@@ -966,12 +969,12 @@ msgstr ""
 msgid "%B: %s' accessed both as normal and thread local symbol"
 msgstr ""
 
-#: elf-m10300.c:2097 elf32-arm.c:12538 elf32-i386.c:5160 elf32-m32r.c:2540
-#: elf32-m68k.c:4084 elf32-s390.c:3380 elf32-sh.c:4127 elf32-tilepro.c:3578
-#: elf32-xtensa.c:3060 elf64-s390.c:3291 elf64-sh64.c:1636 elf64-x86-64.c:5573
-#: elfxx-sparc.c:3913 elfxx-tilegx.c:3985
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:6423
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-riscv.c:2225
+#: elf-m10300.c:2097 elf32-arm.c:12529 elf32-i386.c:5222 elf32-m32r.c:2540
+#: elf32-m68k.c:4084 elf32-s390.c:3361 elf32-sh.c:4127 elf32-tilepro.c:3569
+#: elf32-xtensa.c:3060 elf64-s390.c:3280 elf64-sh64.c:1636 elf64-x86-64.c:5697
+#: elfxx-sparc.c:3945 elfxx-tilegx.c:3976
+#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:6466
+#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2236
 #, c-format
 msgid "%B(%A+0x%lx): unresolvable %s relocation against symbol `%s'"
 msgstr ""
@@ -1032,7 +1035,7 @@ msgstr ""
 msgid "%B: no group info for section %A"
 msgstr ""
 
-#: elf.c:818 elf.c:3817 elflink.c:10949
+#: elf.c:818 elf.c:3817 elflink.c:11059
 #, c-format
 msgid "%B: warning: sh_link not set for section `%A'"
 msgstr ""
@@ -1189,31 +1192,31 @@ msgstr ""
 msgid "\tnon-TLS: %A"
 msgstr ""
 
-#: elf.c:5328
+#: elf.c:5339
 msgid ""
 "%B: The first section in the PT_DYNAMIC segment is not the .dynamic section"
 msgstr ""
 
-#: elf.c:5355
+#: elf.c:5366
 msgid "%B: Not enough room for program headers, try linking with -N"
 msgstr ""
 
-#: elf.c:5442
+#: elf.c:5453
 #, c-format
 msgid "%B: section %A lma %#lx adjusted to %#lx"
 msgstr ""
 
-#: elf.c:5579
+#: elf.c:5590
 #, c-format
 msgid "%B: section `%A' can't be allocated in segment %d"
 msgstr ""
 
-#: elf.c:5627
+#: elf.c:5638
 #, c-format
 msgid "%B: warning: allocated section `%s' not in segment"
 msgstr ""
 
-#: elf.c:5825
+#: elf.c:5836
 msgid ""
 "%B: error: non-load segment %d includes file header and/or program header"
 msgstr ""
@@ -1221,273 +1224,276 @@ msgstr ""
 #. The fix for this error is usually to edit the linker script being
 #. used and set up the program headers manually.  Either that or
 #. leave room for the headers at the start of the SECTIONS.
-#: elf.c:6001
+#: elf.c:6012
 msgid "%B: error: PHDR segment not covered by LOAD segment"
 msgstr ""
 
-#: elf.c:6345
+#: elf.c:6356
 #, c-format
 msgid "%B: symbol `%s' required but not present"
 msgstr ""
 
-#: elf.c:6683
-msgid "%B: warning: Empty loadable segment detected, is this intentional ?"
+#: elf.c:6699
+#, c-format
+msgid ""
+"%B: warning: Empty loadable segment detected at vaddr=0x%.8x, is this "
+"intentional ?"
 msgstr ""
 
-#: elf.c:7297
+#: elf.c:7313
 #, c-format
 msgid "%B: warning: segment alignment of 0x%llx is too large"
 msgstr ""
 
-#: elf.c:7774
+#: elf.c:7790
 #, c-format
 msgid ""
 "Unable to find equivalent output section for symbol '%s' from section '%s'"
 msgstr ""
 
-#: elf.c:8106
+#: elf.c:8122
 msgid "%B: .gnu.version_r invalid entry"
 msgstr ""
 
-#: elf.c:8233
+#: elf.c:8249
 msgid "%B: .gnu.version_d invalid entry"
 msgstr ""
 
-#: elf.c:8785
+#: elf.c:8801
 #, c-format
 msgid "%B: unsupported relocation type %s"
 msgstr ""
 
-#: elf32-arc.c:464 elf32-frv.c:6625 elf32-iq2000.c:870 elf32-m32c.c:914
+#: elf32-arc.c:426 elf32-frv.c:6625 elf32-iq2000.c:870 elf32-m32c.c:914
 #: elf32-mt.c:564 elf32-rl78.c:1256 elf32-rx.c:3176 elf32-visium.c:838
-#: elf64-ppc.c:6072
+#: elf64-ppc.c:6066
 #, c-format
 msgid "private flags = 0x%lx:"
 msgstr ""
 
-#: elf32-arc.c:605
+#: elf32-arc.c:567
 #, c-format
 msgid "ERROR: Attempting to link %B with a binary %s of different architecture"
 msgstr ""
 
-#: elf32-arc.c:615 elf32-iq2000.c:846 elf32-m32c.c:890
+#: elf32-arc.c:577 elf32-iq2000.c:846 elf32-m32c.c:890
 #, c-format
 msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)"
 msgstr ""
 
-#: elf32-arc.c:676
+#: elf32-arc.c:638
 msgid "Error: The ARC4 architecture is no longer supported.\n"
 msgstr ""
 
-#: elf32-arc.c:682
+#: elf32-arc.c:644
 msgid ""
 "Warning: unset or old architecture flags. \n"
 "\t       Use default machine.\n"
 msgstr ""
 
-#: elf32-arc.c:810
+#: elf32-arc.c:772
 #, c-format
 msgid ""
 "%B(%A+0x%lx): CMEM relocation to `%s' is invalid, 16 MSB should be 0x%04x "
 "(value is 0x%lx)"
 msgstr ""
 
-#: elf32-arc.c:821
+#: elf32-arc.c:783
 #, c-format
 msgid ""
 "%B(%A+0x%lx): CMEM relocation to `%s+0x%lx' is invalid, 16 MSB should be 0x"
 "%04x (value is 0x%lx)"
 msgstr ""
 
-#: elf32-arc.c:1510
+#: elf32-arc.c:1472
 msgid "GOT and PLT relocations cannot be fixed with a non dynamic linker."
 msgstr ""
 
-#: elf32-arc.c:1534 elf32-rl78.c:1094 elf32-rx.c:1448
+#: elf32-arc.c:1496 elf32-rl78.c:1094 elf32-rx.c:1448
 #, c-format
 msgid "%B(%A): warning: unaligned access to symbol '%s' in the small data area"
 msgstr ""
 
-#: elf32-arc.c:1539 elf32-rl78.c:1099 elf32-rx.c:1453
+#: elf32-arc.c:1501 elf32-rl78.c:1099 elf32-rx.c:1453
 #, c-format
 msgid "%B(%A): internal error: out of range error"
 msgstr ""
 
-#: elf32-arc.c:1544 elf32-rl78.c:1104 elf32-rx.c:1458
+#: elf32-arc.c:1506 elf32-rl78.c:1104 elf32-rx.c:1458
 #, c-format
 msgid "%B(%A): internal error: unsupported relocation error"
 msgstr ""
 
-#: elf32-arc.c:1549 elf32-rl78.c:1109 elf32-rx.c:1463
+#: elf32-arc.c:1511 elf32-rl78.c:1109 elf32-rx.c:1463
 #, c-format
 msgid "%B(%A): internal error: dangerous relocation"
 msgstr ""
 
-#: elf32-arc.c:1554 elf32-rl78.c:1114 elf32-rx.c:1468
+#: elf32-arc.c:1516 elf32-rl78.c:1114 elf32-rx.c:1468
 #, c-format
 msgid "%B(%A): internal error: unknown error"
 msgstr ""
 
-#: elf32-arc.c:1737 elf32-arm.c:14692 elf32-metag.c:2279 elfxx-mips.c:8874
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:7347
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-riscv.c:488
+#: elf32-arc.c:1608 elf32-arm.c:14683 elf32-metag.c:2272 elfxx-mips.c:8878
+#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:7398
+#: /work/sources/binutils/current/bfd/elfnn-riscv.c:488
 #, c-format
 msgid ""
 "%B: relocation %s against `%s' can not be used when making a shared object; "
 "recompile with -fPIC"
 msgstr ""
 
-#: elf32-arm.c:4036 elf32-arm.c:4068
+#: elf32-arm.c:4027 elf32-arm.c:4059
 msgid ""
 "%B(%A): warning: long branch  veneers used in section with SHF_ARM_PURECODE "
 "section attribute is only supported for M-profile targets that implement the "
 "movw instruction."
 msgstr ""
 
-#: elf32-arm.c:4085 elf32-arm.c:4138
+#: elf32-arm.c:4076 elf32-arm.c:4129
 msgid ""
 "%B(%s): warning: long branch  veneers used in section with SHF_ARM_PURECODE "
 "section attribute is only supported for M-profile targets that implement the "
 "movw instruction."
 msgstr ""
 
-#: elf32-arm.c:4099 elf32-arm.c:8818
+#: elf32-arm.c:4090 elf32-arm.c:8809
 msgid ""
 "%B(%s): warning: interworking not enabled.\n"
 "  first occurrence: %B: Thumb call to ARM"
 msgstr ""
 
-#: elf32-arm.c:4154
+#: elf32-arm.c:4145
 msgid ""
 "%B(%s): warning: interworking not enabled.\n"
 "  first occurrence: %B: ARM call to Thumb"
 msgstr ""
 
-#: elf32-arm.c:4428
+#: elf32-arm.c:4419
 #, c-format
 msgid "No address assigned to the veneers output section %s"
 msgstr ""
 
-#: elf32-arm.c:4503 elf32-arm.c:6640
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:2837
+#: elf32-arm.c:4494 elf32-arm.c:6631
+#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:2852
 #, c-format
 msgid "%s: cannot create stub entry %s"
 msgstr ""
 
-#: elf32-arm.c:5688
+#: elf32-arm.c:5679
 msgid "%B: Special symbol `%s' only allowed for ARMv8-M architecture or later."
 msgstr ""
 
-#: elf32-arm.c:5697
+#: elf32-arm.c:5688
 msgid "%B: invalid special symbol `%s'."
 msgstr ""
 
-#: elf32-arm.c:5699 elf32-arm.c:5739
+#: elf32-arm.c:5690 elf32-arm.c:5730
 msgid "It must be a global or weak function symbol."
 msgstr ""
 
-#: elf32-arm.c:5737
+#: elf32-arm.c:5728
 msgid "%B: invalid standard symbol `%s'."
 msgstr ""
 
-#: elf32-arm.c:5743
+#: elf32-arm.c:5734
 msgid "%B: absent standard symbol `%s'."
 msgstr ""
 
-#: elf32-arm.c:5755
+#: elf32-arm.c:5746
 msgid "%B: `%s' and its special symbol are in different sections."
 msgstr ""
 
-#: elf32-arm.c:5767
+#: elf32-arm.c:5758
 msgid "%B: entry function `%s' not output."
 msgstr ""
 
-#: elf32-arm.c:5774
+#: elf32-arm.c:5765
 msgid "%B: entry function `%s' is empty."
 msgstr ""
 
-#: elf32-arm.c:5903
+#: elf32-arm.c:5894
 msgid "%B: --in-implib only supported for Secure Gateway import libraries."
 msgstr ""
 
-#: elf32-arm.c:5949
+#: elf32-arm.c:5940
 msgid "%B: invalid import library entry: `%s'."
 msgstr ""
 
-#: elf32-arm.c:5951
+#: elf32-arm.c:5942
 msgid "Symbol should be absolute, global and refer to Thumb functions."
 msgstr ""
 
-#: elf32-arm.c:5971
+#: elf32-arm.c:5962
 #, c-format
 msgid "Entry function `%s' disappeared from secure code."
 msgstr ""
 
-#: elf32-arm.c:5995
+#: elf32-arm.c:5986
 #, c-format
 msgid "`%s' refers to a non entry function."
 msgstr ""
 
-#: elf32-arm.c:6010
+#: elf32-arm.c:6001
 msgid "%B: visibility of symbol `%s' has changed."
 msgstr ""
 
-#: elf32-arm.c:6019
+#: elf32-arm.c:6010
 msgid "%B: incorrect size for symbol `%s'."
 msgstr ""
 
-#: elf32-arm.c:6038
+#: elf32-arm.c:6029
 #, c-format
 msgid "Offset of veneer for entry function `%s' not a multiple of its size."
 msgstr ""
 
-#: elf32-arm.c:6058
+#: elf32-arm.c:6049
 msgid ""
 "new entry function(s) introduced but no output import library specified:"
 msgstr ""
 
-#: elf32-arm.c:6066
+#: elf32-arm.c:6057
 #, c-format
 msgid "Start address of `%s' is different from previous link."
 msgstr ""
 
-#: elf32-arm.c:6773
+#: elf32-arm.c:6764
 #, c-format
 msgid "unable to find THUMB glue '%s' for '%s'"
 msgstr ""
 
-#: elf32-arm.c:6809
+#: elf32-arm.c:6800
 #, c-format
 msgid "unable to find ARM glue '%s' for '%s'"
 msgstr ""
 
-#: elf32-arm.c:7524
+#: elf32-arm.c:7515
 msgid "%B: BE8 images only valid in big-endian mode."
 msgstr ""
 
 #. Give a warning, but do as the user requests anyway.
-#: elf32-arm.c:7755
+#: elf32-arm.c:7746
 msgid ""
 "%B: warning: selected VFP11 erratum workaround is not necessary for target "
 "architecture"
 msgstr ""
 
-#: elf32-arm.c:7782
+#: elf32-arm.c:7773
 msgid ""
 "%B: warning: selected STM32L4XX erratum workaround is not necessary for "
 "target architecture"
 msgstr ""
 
-#: elf32-arm.c:8319 elf32-arm.c:8339
+#: elf32-arm.c:8310 elf32-arm.c:8330
 msgid "%B: unable to find VFP11 veneer `%s'"
 msgstr ""
 
-#: elf32-arm.c:8405 elf32-arm.c:8424
+#: elf32-arm.c:8396 elf32-arm.c:8415
 msgid "%B: unable to find STM32L4XX veneer `%s'"
 msgstr ""
 
 #. Note - overlong line used here to allow for translation.
-#: elf32-arm.c:8632
+#: elf32-arm.c:8623
 #, c-format
 msgid ""
 "%B(%A+0x%lx): error: multiple load detected in non-last IT block "
@@ -1495,177 +1501,177 @@ msgid ""
 "Use gcc option -mrestrict-it to generate only one instruction per IT block.\n"
 msgstr ""
 
-#: elf32-arm.c:8728
+#: elf32-arm.c:8719
 #, c-format
 msgid "Invalid TARGET2 relocation type '%s'."
 msgstr ""
 
 #. FIXME: We ought to be able to generate thumb-1 PLT
 #. instructions...
-#: elf32-arm.c:9470
+#: elf32-arm.c:9461
 msgid "%B: Warning: thumb-1 mode PLT generation not currently supported"
 msgstr ""
 
-#: elf32-arm.c:9735
+#: elf32-arm.c:9726
 #, c-format
 msgid "%B(%A+0x%lx): unexpected Thumb instruction '0x%x' in TLS trampoline"
 msgstr ""
 
-#: elf32-arm.c:9775
+#: elf32-arm.c:9766
 #, c-format
 msgid "%B(%A+0x%lx): unexpected ARM instruction '0x%x' in TLS trampoline"
 msgstr ""
 
-#: elf32-arm.c:10109
+#: elf32-arm.c:10100
 msgid "shared object"
 msgstr ""
 
-#: elf32-arm.c:10112
+#: elf32-arm.c:10103
 msgid "PIE executable"
 msgstr ""
 
-#: elf32-arm.c:10115
+#: elf32-arm.c:10106
 msgid ""
 "%B: relocation %s against external or undefined symbol `%s' can not be used "
 "when making a %s; recompile with -fPIC"
 msgstr ""
 
-#: elf32-arm.c:10246
-msgid "\\%B: Warning: Arm BLX instruction targets Arm function '%s'."
+#: elf32-arm.c:10237
+msgid "%B: Warning: Arm BLX instruction targets Arm function '%s'."
 msgstr ""
 
-#: elf32-arm.c:10666
+#: elf32-arm.c:10657
 msgid "%B: Warning: Thumb BLX instruction targets thumb function '%s'."
 msgstr ""
 
-#: elf32-arm.c:11533
+#: elf32-arm.c:11524
 #, c-format
 msgid ""
 "%B(%A+0x%lx): unexpected Thumb instruction '0x%x' referenced by TLS_GOTDESC"
 msgstr ""
 
-#: elf32-arm.c:11557
+#: elf32-arm.c:11548
 #, c-format
 msgid ""
 "%B(%A+0x%lx): unexpected ARM instruction '0x%x' referenced by TLS_GOTDESC"
 msgstr ""
 
-#: elf32-arm.c:11587
+#: elf32-arm.c:11578
 #, c-format
 msgid "%B(%A+0x%lx): R_ARM_TLS_LE32 relocation not permitted in shared object"
 msgstr ""
 
-#: elf32-arm.c:11801
+#: elf32-arm.c:11792
 #, c-format
 msgid ""
 "%B(%A+0x%lx): Only ADD or SUB instructions are allowed for ALU group "
 "relocations"
 msgstr ""
 
-#: elf32-arm.c:11842 elf32-arm.c:11933 elf32-arm.c:12019 elf32-arm.c:12107
+#: elf32-arm.c:11833 elf32-arm.c:11924 elf32-arm.c:12010 elf32-arm.c:12098
 #, c-format
 msgid "%B(%A+0x%lx): Overflow whilst splitting 0x%lx for group relocation %s"
 msgstr ""
 
-#: elf32-arm.c:12371 elf32-sh.c:4009 elf64-sh64.c:1539
+#: elf32-arm.c:12362 elf32-sh.c:4009 elf64-sh64.c:1539
 #, c-format
 msgid "%B(%A+0x%lx): %s relocation against SEC_MERGE section"
 msgstr ""
 
-#: elf32-arm.c:12483 elf32-m68k.c:4120 elf32-xtensa.c:2802
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:6151
+#: elf32-arm.c:12474 elf32-m68k.c:4120 elf32-xtensa.c:2802
+#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:6194
 #, c-format
 msgid "%B(%A+0x%lx): %s used with TLS symbol %s"
 msgstr ""
 
-#: elf32-arm.c:12485 elf32-m68k.c:4122 elf32-xtensa.c:2804
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:6153
+#: elf32-arm.c:12476 elf32-m68k.c:4122 elf32-xtensa.c:2804
+#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:6196
 #, c-format
 msgid "%B(%A+0x%lx): %s used with non-TLS symbol %s"
 msgstr ""
 
-#: elf32-arm.c:12567 elf32-tic6x.c:2737
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:6486
+#: elf32-arm.c:12558 elf32-tic6x.c:2739
+#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:6529
 msgid "out of range"
 msgstr ""
 
-#: elf32-arm.c:12571 elf32-nios2.c:4507 elf32-tic6x.c:2741
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:6490
+#: elf32-arm.c:12562 elf32-nios2.c:4505 elf32-pru.c:821 elf32-tic6x.c:2743
+#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:6533
 msgid "unsupported relocation"
 msgstr ""
 
-#: elf32-arm.c:12579 elf32-nios2.c:4517 elf32-tic6x.c:2749
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:6498
+#: elf32-arm.c:12570 elf32-nios2.c:4515 elf32-pru.c:831 elf32-tic6x.c:2751
+#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:6541
 msgid "unknown error"
 msgstr ""
 
-#: elf32-arm.c:13159
+#: elf32-arm.c:13150
 msgid "%B: Unknown mandatory EABI object attribute %d"
 msgstr ""
 
-#: elf32-arm.c:13167
+#: elf32-arm.c:13158
 msgid "Warning: %B: Unknown EABI object attribute %d"
 msgstr ""
 
-#: elf32-arm.c:13415
+#: elf32-arm.c:13406
 msgid "error: %B: Unknown CPU architecture"
 msgstr ""
 
-#: elf32-arm.c:13453 elf32-nios2.c:2967
+#: elf32-arm.c:13444 elf32-nios2.c:2965
 #, c-format
 msgid "error: %B: Conflicting CPU architectures %d/%d"
 msgstr ""
 
-#: elf32-arm.c:13550
+#: elf32-arm.c:13541
 msgid ""
 "Error: %B has both the current and legacy Tag_MPextension_use attributes"
 msgstr ""
 
-#: elf32-arm.c:13579
+#: elf32-arm.c:13570
 msgid "error: %B uses VFP register arguments, %B does not"
 msgstr ""
 
-#: elf32-arm.c:13737
+#: elf32-arm.c:13728
 msgid "error: %B: unable to merge virtualization attributes with %B"
 msgstr ""
 
-#: elf32-arm.c:13763
+#: elf32-arm.c:13754
 msgid "error: %B: Conflicting architecture profiles %c/%c"
 msgstr ""
 
-#: elf32-arm.c:13893
+#: elf32-arm.c:13884
 msgid "Warning: %B: Conflicting platform configuration"
 msgstr ""
 
-#: elf32-arm.c:13902
+#: elf32-arm.c:13893
 msgid "error: %B: Conflicting use of R9"
 msgstr ""
 
-#: elf32-arm.c:13914
+#: elf32-arm.c:13905
 msgid "error: %B: SB relative addressing conflicts with use of R9"
 msgstr ""
 
-#: elf32-arm.c:13927
+#: elf32-arm.c:13918
 msgid ""
 "warning: %B uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; "
 "use of wchar_t values across objects may fail"
 msgstr ""
 
-#: elf32-arm.c:13958
+#: elf32-arm.c:13949
 msgid ""
 "warning: %B uses %s enums yet the output is to use %s enums; use of enum "
 "values across objects may fail"
 msgstr ""
 
-#: elf32-arm.c:13970
+#: elf32-arm.c:13961
 msgid "error: %B uses iWMMXt register arguments, %B does not"
 msgstr ""
 
-#: elf32-arm.c:13987
+#: elf32-arm.c:13978
 msgid "error: fp16 format mismatch between %B and %B"
 msgstr ""
 
-#: elf32-arm.c:14023
+#: elf32-arm.c:14014
 msgid "%B has has both the current and legacy Tag_MPextension_use attributes"
 msgstr ""
 
@@ -1674,208 +1680,207 @@ msgstr ""
 #. 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:14110 elf32-bfin.c:4919 elf32-cris.c:4076 elf32-m68hc1x.c:1413
+#: elf32-arm.c:14101 elf32-bfin.c:4919 elf32-cris.c:4084 elf32-m68hc1x.c:1413
 #: elf32-m68k.c:1200 elf32-score.c:4009 elf32-score7.c:3818 elf32-vax.c:536
-#: elf32-xgate.c:669 elfxx-mips.c:15920
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:6652
+#: elf32-xgate.c:669 elfxx-mips.c:15782
+#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:6695
 #, c-format
 msgid "private flags = %lx:"
 msgstr ""
 
-#: elf32-arm.c:14119
+#: elf32-arm.c:14110
 #, c-format
 msgid " [interworking enabled]"
 msgstr ""
 
-#: elf32-arm.c:14127
+#: elf32-arm.c:14118
 #, c-format
 msgid " [VFP float format]"
 msgstr ""
 
-#: elf32-arm.c:14129
+#: elf32-arm.c:14120
 #, c-format
 msgid " [Maverick float format]"
 msgstr ""
 
-#: elf32-arm.c:14131
+#: elf32-arm.c:14122
 #, c-format
 msgid " [FPA float format]"
 msgstr ""
 
-#: elf32-arm.c:14140
+#: elf32-arm.c:14131
 #, c-format
 msgid " [new ABI]"
 msgstr ""
 
-#: elf32-arm.c:14143
+#: elf32-arm.c:14134
 #, c-format
 msgid " [old ABI]"
 msgstr ""
 
-#: elf32-arm.c:14146
+#: elf32-arm.c:14137
 #, c-format
 msgid " [software FP]"
 msgstr ""
 
-#: elf32-arm.c:14155
+#: elf32-arm.c:14146
 #, c-format
 msgid " [Version1 EABI]"
 msgstr ""
 
-#: elf32-arm.c:14158 elf32-arm.c:14169
+#: elf32-arm.c:14149 elf32-arm.c:14160
 #, c-format
 msgid " [sorted symbol table]"
 msgstr ""
 
-#: elf32-arm.c:14160 elf32-arm.c:14171
+#: elf32-arm.c:14151 elf32-arm.c:14162
 #, c-format
 msgid " [unsorted symbol table]"
 msgstr ""
 
-#: elf32-arm.c:14166
+#: elf32-arm.c:14157
 #, c-format
 msgid " [Version2 EABI]"
 msgstr ""
 
-#: elf32-arm.c:14174
+#: elf32-arm.c:14165
 #, c-format
 msgid " [dynamic symbols use segment index]"
 msgstr ""
 
-#: elf32-arm.c:14177
+#: elf32-arm.c:14168
 #, c-format
 msgid " [mapping symbols precede others]"
 msgstr ""
 
-#: elf32-arm.c:14184
+#: elf32-arm.c:14175
 #, c-format
 msgid " [Version3 EABI]"
 msgstr ""
 
-#: elf32-arm.c:14188
+#: elf32-arm.c:14179
 #, c-format
 msgid " [Version4 EABI]"
 msgstr ""
 
-#: elf32-arm.c:14192
+#: elf32-arm.c:14183
 #, c-format
 msgid " [Version5 EABI]"
 msgstr ""
 
-#: elf32-arm.c:14195
+#: elf32-arm.c:14186
 #, c-format
 msgid " [soft-float ABI]"
 msgstr ""
 
-#: elf32-arm.c:14198
+#: elf32-arm.c:14189
 #, c-format
 msgid " [hard-float ABI]"
 msgstr ""
 
-#: elf32-arm.c:14204
+#: elf32-arm.c:14195
 #, c-format
 msgid " [BE8]"
 msgstr ""
 
-#: elf32-arm.c:14207
+#: elf32-arm.c:14198
 #, c-format
 msgid " [LE8]"
 msgstr ""
 
-#: elf32-arm.c:14213
+#: elf32-arm.c:14204
 #, c-format
 msgid " <EABI version unrecognised>"
 msgstr ""
 
-#: elf32-arm.c:14220
+#: elf32-arm.c:14211
 #, c-format
 msgid " [relocatable executable]"
 msgstr ""
 
-#: elf32-arm.c:14225
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:6655
+#: elf32-arm.c:14216 /work/sources/binutils/current/bfd/elfnn-aarch64.c:6698
 #, c-format
 msgid "<Unrecognised flag bits set>"
 msgstr ""
 
-#: elf32-arm.c:14535 elf32-i386.c:1905 elf32-s390.c:984 elf32-tic6x.c:2812
-#: elf32-tilepro.c:1511 elf32-xtensa.c:1004 elf64-s390.c:903
-#: elf64-x86-64.c:2214 elfxx-sparc.c:1415 elfxx-tilegx.c:1728
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:7048
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-riscv.c:530
+#: elf32-arm.c:14526 elf32-i386.c:1914 elf32-s390.c:956 elf32-tic6x.c:2814
+#: elf32-tilepro.c:1491 elf32-xtensa.c:1004 elf64-s390.c:871
+#: elf64-x86-64.c:2258 elfxx-sparc.c:1411 elfxx-tilegx.c:1708
+#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:7099
+#: /work/sources/binutils/current/bfd/elfnn-riscv.c:530
 #, c-format
 msgid "%B: bad symbol index: %d"
 msgstr ""
 
-#: elf32-arm.c:16029
+#: elf32-arm.c:16024
 #, c-format
 msgid "Errors encountered processing file %s"
 msgstr ""
 
-#: elf32-arm.c:16466 elflink.c:12085 elflink.c:12132
+#: elf32-arm.c:16463 elflink.c:12197 elflink.c:12244
 #, c-format
 msgid "could not find section %s"
 msgstr ""
 
-#: elf32-arm.c:17638
+#: elf32-arm.c:17635
 msgid "%B: error: Cortex-A8 erratum stub is allocated in unsafe location"
 msgstr ""
 
 #. There's not much we can do apart from complain if this
 #. happens.
-#: elf32-arm.c:17665
+#: elf32-arm.c:17662
 msgid "%B: error: Cortex-A8 erratum stub out of range (input file too large)"
 msgstr ""
 
-#: elf32-arm.c:18492 elf32-arm.c:18514
+#: elf32-arm.c:18489 elf32-arm.c:18511
 msgid "%B: error: VFP11 veneer out of range"
 msgstr ""
 
-#: elf32-arm.c:18565
+#: elf32-arm.c:18562
 msgid ""
 "%B(%#x): error: Cannot create STM32L4XX veneer. Jump out of range by %ld "
 "bytes. Cannot encode branch instruction. "
 msgstr ""
 
-#: elf32-arm.c:18603
+#: elf32-arm.c:18600
 msgid "%B: error: Cannot create STM32L4XX veneer."
 msgstr ""
 
-#: elf32-arm.c:19623
+#: elf32-arm.c:19621
 msgid "error: %B is already in final BE8 format"
 msgstr ""
 
-#: elf32-arm.c:19699
+#: elf32-arm.c:19697
 msgid ""
 "error: Source object %B has EABI version %d, but target %B has EABI version "
 "%d"
 msgstr ""
 
-#: elf32-arm.c:19715
+#: elf32-arm.c:19713
 msgid "error: %B is compiled for APCS-%d, whereas target %B uses APCS-%d"
 msgstr ""
 
-#: elf32-arm.c:19740
+#: elf32-arm.c:19738
 msgid "error: %B uses VFP instructions, whereas %B does not"
 msgstr ""
 
-#: elf32-arm.c:19744
+#: elf32-arm.c:19742
 msgid "error: %B uses FPA instructions, whereas %B does not"
 msgstr ""
 
-#: elf32-arm.c:19754
+#: elf32-arm.c:19752
 msgid "error: %B uses Maverick instructions, whereas %B does not"
 msgstr ""
 
-#: elf32-arm.c:19758
+#: elf32-arm.c:19756
 msgid "error: %B does not use Maverick instructions, whereas %B does"
 msgstr ""
 
-#: elf32-arm.c:19777
+#: elf32-arm.c:19775
 msgid "error: %B uses software FP, whereas %B uses hardware FP"
 msgstr ""
 
-#: elf32-arm.c:19781
+#: elf32-arm.c:19779
 msgid "error: %B uses hardware FP, whereas %B uses software FP"
 msgstr ""
 
@@ -1887,15 +1892,15 @@ msgstr ""
 #: elf32-avr.c:1510 elf32-bfin.c:3202 elf32-cris.c:2033 elf32-epiphany.c:574
 #: elf32-fr30.c:599 elf32-frv.c:4049 elf32-ft32.c:342 elf32-i860.c:1218
 #: elf32-ip2k.c:1486 elf32-iq2000.c:701 elf32-m32c.c:629 elf32-mep.c:532
-#: elf32-metag.c:2013 elf32-moxie.c:293 elf32-msp430.c:1365 elf32-mt.c:404
-#: elf32-or1k.c:1270 elf32-tilepro.c:3682 elf32-v850.c:2295 elf32-visium.c:685
-#: elf32-xstormy16.c:935 elf64-mmix.c:1548 elfxx-tilegx.c:4069
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-riscv.c:2264
+#: elf32-metag.c:2009 elf32-moxie.c:293 elf32-msp430.c:1365 elf32-mt.c:404
+#: elf32-or1k.c:1266 elf32-tilepro.c:3673 elf32-v850.c:2295 elf32-visium.c:685
+#: elf32-xstormy16.c:935 elf64-mmix.c:1548 elfxx-tilegx.c:4060
+#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2275
 msgid "internal error: dangerous relocation"
 msgstr ""
 
-#: elf32-avr.c:3287 elf32-hppa.c:591 elf32-m68hc1x.c:165 elf32-metag.c:1202
-#: elf32-nios2.c:2229
+#: elf32-avr.c:3287 elf32-hppa.c:587 elf32-m68hc1x.c:165 elf32-metag.c:1198
+#: elf32-nios2.c:2227
 #, c-format
 msgid "%B: cannot create stub entry %s"
 msgstr ""
@@ -1909,8 +1914,8 @@ msgstr ""
 msgid "%B(%A+0x%lx): unresolvable relocation against symbol `%s'"
 msgstr ""
 
-#: elf32-bfin.c:1612 elf32-i386.c:5200 elf32-m68k.c:4160 elf32-s390.c:3437
-#: elf64-s390.c:3348 elf64-x86-64.c:5613
+#: elf32-bfin.c:1612 elf32-i386.c:5262 elf32-m68k.c:4160 elf32-s390.c:3418
+#: elf64-s390.c:3337 elf64-x86-64.c:5737
 #, c-format
 msgid "%B(%A+0x%lx): reloc against `%s': error %d"
 msgstr ""
@@ -2009,17 +2014,17 @@ msgid "%B, section %A: No PLT for relocation %s against symbol `%s'"
 msgstr ""
 
 #: elf32-cris.c:1186 elf32-cris.c:1319 elf32-cris.c:1583 elf32-cris.c:1666
-#: elf32-cris.c:1819 elf32-tic6x.c:2649
+#: elf32-cris.c:1819 elf32-tic6x.c:2651
 msgid "[whose name is lost]"
 msgstr ""
 
-#: elf32-cris.c:1304 elf32-tic6x.c:2633
+#: elf32-cris.c:1304 elf32-tic6x.c:2635
 #, c-format
 msgid ""
 "%B, section %A: relocation %s with non-zero addend %d against local symbol"
 msgstr ""
 
-#: elf32-cris.c:1313 elf32-cris.c:1660 elf32-cris.c:1813 elf32-tic6x.c:2642
+#: elf32-cris.c:1313 elf32-cris.c:1660 elf32-cris.c:1813 elf32-tic6x.c:2644
 #, c-format
 msgid ""
 "%B, section %A: relocation %s with non-zero addend %d against symbol `%s'"
@@ -2067,14 +2072,14 @@ msgid ""
 "-mno-small-tls)"
 msgstr ""
 
-#: elf32-cris.c:3224
+#: elf32-cris.c:3231
 #, c-format
 msgid ""
 "%B, section %A:\n"
 "  v10/v32 compatible object %s must not contain a PIC relocation"
 msgstr ""
 
-#: elf32-cris.c:3278
+#: elf32-cris.c:3285
 #, c-format
 msgid ""
 "%B, section %A:\n"
@@ -2082,52 +2087,52 @@ msgid ""
 "recompile with -fPIC"
 msgstr ""
 
-#: elf32-cris.c:3493
+#: elf32-cris.c:3500
 #, c-format
 msgid ""
 "%B, section %A:\n"
 "  relocation %s should not be used in a shared object; recompile with -fPIC"
 msgstr ""
 
-#: elf32-cris.c:3916
+#: elf32-cris.c:3924
 #, c-format
 msgid ""
 "%B, section `%A', to symbol `%s':\n"
 "  relocation %s should not be used in a shared object; recompile with -fPIC"
 msgstr ""
 
-#: elf32-cris.c:4028
+#: elf32-cris.c:4036
 msgid "Unexpected machine number"
 msgstr ""
 
-#: elf32-cris.c:4079
+#: elf32-cris.c:4087
 #, c-format
 msgid " [symbols have a _ prefix]"
 msgstr ""
 
-#: elf32-cris.c:4082
+#: elf32-cris.c:4090
 #, c-format
 msgid " [v10 and v32]"
 msgstr ""
 
-#: elf32-cris.c:4085
+#: elf32-cris.c:4093
 #, c-format
 msgid " [v32]"
 msgstr ""
 
-#: elf32-cris.c:4129
+#: elf32-cris.c:4137
 msgid "%B: uses _-prefixed symbols, but writing file with non-prefixed symbols"
 msgstr ""
 
-#: elf32-cris.c:4130
+#: elf32-cris.c:4138
 msgid "%B: uses non-prefixed symbols, but writing file with _-prefixed symbols"
 msgstr ""
 
-#: elf32-cris.c:4149
+#: elf32-cris.c:4157
 msgid "%B contains CRIS v32 code, incompatible with previous objects"
 msgstr ""
 
-#: elf32-cris.c:4151
+#: elf32-cris.c:4159
 msgid "%B contains non-CRIS-v32 code, incompatible with previous objects"
 msgstr ""
 
@@ -2297,35 +2302,35 @@ msgstr ""
 msgid "%B: Relocations in generic ELF (EM: %d)"
 msgstr ""
 
-#: elf32-hppa.c:843 elf32-hppa.c:3606
+#: elf32-hppa.c:839 elf32-hppa.c:3599
 #, c-format
 msgid "%B(%A+0x%lx): cannot reach %s, recompile with -ffunction-sections"
 msgstr ""
 
-#: elf32-hppa.c:1276
+#: elf32-hppa.c:1270
 #, c-format
 msgid ""
 "%B: relocation %s can not be used when making a shared object; recompile "
 "with -fPIC"
 msgstr ""
 
-#: elf32-hppa.c:2785
+#: elf32-hppa.c:2778
 #, c-format
 msgid "%B: duplicate export stub %s"
 msgstr ""
 
-#: elf32-hppa.c:3440
+#: elf32-hppa.c:3433
 #, c-format
 msgid ""
 "%B(%A+0x%lx): %s fixup for insn 0x%x is not supported in a non-shared link"
 msgstr ""
 
-#: elf32-hppa.c:4297
+#: elf32-hppa.c:4290
 #, c-format
 msgid "%B(%A+0x%lx): cannot handle %s for %s"
 msgstr ""
 
-#: elf32-hppa.c:4593
+#: elf32-hppa.c:4588
 msgid ".got section not immediately after .plt section"
 msgstr ""
 
@@ -2334,8 +2339,8 @@ msgstr ""
 msgid "%B: unrecognised I370 reloc number: %d"
 msgstr ""
 
-#: elf32-i370.c:359 elf32-m68hc1x.c:1388 elf32-ppc.c:4883 elf64-sparc.c:711
-#: elfxx-mips.c:15249
+#: elf32-i370.c:359 elf32-m68hc1x.c:1388 elf32-ppc.c:4902 elf64-sparc.c:713
+#: elfxx-mips.c:15111
 #, c-format
 msgid "%B: uses different e_flags (0x%lx) fields than previous modules (0x%lx)"
 msgstr ""
@@ -2350,106 +2355,103 @@ msgid "%B: Relocation %s is not yet supported for symbol %s."
 msgstr ""
 
 #. Unknown relocation.
-#: elf32-i386.c:387 elf32-m68k.c:352 elf32-ppc.c:2058 elf32-s390.c:346
-#: elf32-tic6x.c:2672 elf64-ppc.c:2497 elf64-s390.c:372 elf64-x86-64.c:289
+#: elf32-i386.c:387 elf32-m68k.c:352 elf32-ppc.c:2074 elf32-s390.c:346
+#: elf32-tic6x.c:2674 elf64-ppc.c:2515 elf64-s390.c:372 elf64-x86-64.c:289
 #, c-format
 msgid "%B: invalid relocation type %d"
 msgstr ""
 
-#: elf32-i386.c:1561 elf64-x86-64.c:1659
+#: elf32-i386.c:1570 elf64-x86-64.c:1703
 #, c-format
 msgid ""
 "%B: TLS transition from %s to %s against `%s' at 0x%lx in section `%A' failed"
 msgstr ""
 
-#: elf32-i386.c:1649
+#: elf32-i386.c:1658
 #, c-format
 msgid ""
 "%B: direct GOT relocation R_386_GOT32X against `%s' without base register "
 "can not be used when making a shared object"
 msgstr ""
 
-#: elf32-i386.c:2107 elf32-s390.c:1216 elf32-sh.c:6055 elf32-tilepro.c:1628
-#: elf32-xtensa.c:1182 elf64-s390.c:1145 elfxx-sparc.c:1596
-#: elfxx-tilegx.c:1837
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-riscv.c:444
+#: elf32-i386.c:2116 elf32-s390.c:1188 elf32-sh.c:6056 elf32-tilepro.c:1608
+#: elf32-xtensa.c:1182 elf64-s390.c:1113 elfxx-sparc.c:1592 elfxx-tilegx.c:1817
+#: /work/sources/binutils/current/bfd/elfnn-riscv.c:444
 #, c-format
 msgid "%B: `%s' accessed both as normal and thread local symbol"
 msgstr ""
 
-#: elf32-i386.c:2196
+#: elf32-i386.c:2205
 #, c-format
 msgid "%B: unsupported non-PIC call to IFUNC `%s'"
 msgstr ""
 
-#: elf32-i386.c:3071 elf64-x86-64.c:3468
+#: elf32-i386.c:3106 elf64-x86-64.c:3553
 #, c-format
 msgid "%P: %B: warning: relocation against `%s' in readonly section `%A'\n"
 msgstr ""
 
-#: elf32-i386.c:3283 elf64-x86-64.c:3677
+#: elf32-i386.c:3318 elf64-x86-64.c:3763
 #, c-format
 msgid "%P: %B: warning: relocation in readonly section `%A'\n"
 msgstr ""
 
-#: elf32-i386.c:3542 elf64-x86-64.c:3957
+#: elf32-i386.c:3600 elf64-x86-64.c:4081
 msgid ""
 "%P%X: read-only segment has dynamic IFUNC relocations; recompile with -fPIC\n"
 msgstr ""
 
-#: elf32-i386.c:3780 elf32-tilepro.c:2877 elf64-x86-64.c:4162
-#: elfxx-tilegx.c:3176
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:6068
+#: elf32-i386.c:3838 elf32-tilepro.c:2868 elf64-x86-64.c:4286
+#: elfxx-tilegx.c:3167 /work/sources/binutils/current/bfd/elfnn-aarch64.c:6111
 #, c-format
 msgid "%B: unrecognized relocation (0x%x) in section `%A'"
 msgstr ""
 
-#: elf32-i386.c:4060 elf64-x86-64.c:4390
+#: elf32-i386.c:4120 elf64-x86-64.c:4514
 #, c-format
 msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported"
 msgstr ""
 
-#: elf32-i386.c:4308
+#: elf32-i386.c:4370
 #, c-format
 msgid ""
 "%B: direct GOT relocation %s against `%s' without base register can not be "
 "used when making a shared object"
 msgstr ""
 
-#: elf32-i386.c:4341 elf64-x86-64.c:4637
+#: elf32-i386.c:4403 elf64-x86-64.c:4761
 msgid "hidden symbol"
 msgstr ""
 
-#: elf32-i386.c:4344 elf64-x86-64.c:4640
+#: elf32-i386.c:4406 elf64-x86-64.c:4764
 msgid "internal symbol"
 msgstr ""
 
-#: elf32-i386.c:4347 elf64-x86-64.c:4643
+#: elf32-i386.c:4409 elf64-x86-64.c:4767
 msgid "protected symbol"
 msgstr ""
 
-#: elf32-i386.c:4350 elf64-x86-64.c:4646
+#: elf32-i386.c:4412 elf64-x86-64.c:4770
 msgid "symbol"
 msgstr ""
 
-#: elf32-i386.c:4356
+#: elf32-i386.c:4418
 #, c-format
 msgid ""
 "%B: relocation R_386_GOTOFF against undefined %s `%s' can not be used when "
 "making a shared object"
 msgstr ""
 
-#: elf32-i386.c:4368
+#: elf32-i386.c:4430
 #, c-format
 msgid ""
 "%B: relocation R_386_GOTOFF against protected %s `%s' can not be used when "
 "making a shared object"
 msgstr ""
 
-#: elf32-i386.c:5849 elf32-tilepro.c:3928 elf64-x86-64.c:6309
-#: elfxx-tilegx.c:4333
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:9174
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-riscv.c:2506
+#: elf32-i386.c:5917 elf32-tilepro.c:3920 elf64-x86-64.c:6439
+#: elfxx-tilegx.c:4327 /work/sources/binutils/current/bfd/elfnn-aarch64.c:9215
+#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2522
 #, c-format
 msgid "discarded output section: `%A'"
 msgstr ""
@@ -2493,11 +2495,11 @@ msgstr ""
 msgid "%B: invalid LM32 reloc number: %d"
 msgstr ""
 
-#: elf32-lm32.c:668 elf32-nios2.c:3155
+#: elf32-lm32.c:668 elf32-nios2.c:3153
 msgid "global pointer relative relocation when _gp not defined"
 msgstr ""
 
-#: elf32-lm32.c:723 elf32-nios2.c:3592
+#: elf32-lm32.c:723 elf32-nios2.c:3590
 msgid "global pointer relative address out of range"
 msgstr ""
 
@@ -2724,21 +2726,21 @@ msgstr ""
 msgid "private flags = 0x%lx"
 msgstr ""
 
-#: elf32-metag.c:897
+#: elf32-metag.c:893
 #, c-format
 msgid "%B: invalid METAG reloc number: %d"
 msgstr ""
 
-#: elf32-metag.c:1879
+#: elf32-metag.c:1875
 msgid "%B(%A): multiple TLS models are not supported"
 msgstr ""
 
-#: elf32-metag.c:1882
+#: elf32-metag.c:1878
 msgid ""
 "%B(%A): shared library symbol %s encountered whilst performing a static link"
 msgstr ""
 
-#: elf32-metag.c:1935
+#: elf32-metag.c:1931
 #, c-format
 msgid ""
 "%B(%A+0x%lx): R_METAG_TLS_LE/IENONPIC relocation not permitted in shared "
@@ -2750,18 +2752,18 @@ msgstr ""
 msgid "%B: unrecognised MicroBlaze reloc number: %d"
 msgstr ""
 
-#: elf32-microblaze.c:956
+#: elf32-microblaze.c:952
 #, c-format
 msgid "%s: unknown relocation type %d"
 msgstr ""
 
-#: elf32-microblaze.c:1084 elf32-microblaze.c:1132
+#: elf32-microblaze.c:1080 elf32-microblaze.c:1128
 #, c-format
 msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)"
 msgstr ""
 
-#: elf32-microblaze.c:1500 elf32-or1k.c:1076 elf32-tilepro.c:3326
-#: elfxx-sparc.c:3532 elfxx-tilegx.c:3735
+#: elf32-microblaze.c:1496 elf32-or1k.c:1072 elf32-tilepro.c:3317
+#: elfxx-sparc.c:3564 elfxx-tilegx.c:3726
 msgid "%B: probably compiled without -fPIC?"
 msgstr ""
 
@@ -2945,7 +2947,7 @@ msgstr ""
 msgid "%B: Unmatched OMIT_FP in %A."
 msgstr ""
 
-#: elf32-nds32.c:13026 reloc.c:8142
+#: elf32-nds32.c:13026 reloc.c:8192
 #, c-format
 msgid "%X%P: %B(%A): relocation \"%R\" goes out of range\n"
 msgstr ""
@@ -2969,65 +2971,65 @@ msgstr ""
 msgid "%P%F: failed creating ex9.it %s hash table: %E\n"
 msgstr ""
 
-#: elf32-nios2.c:2951
+#: elf32-nios2.c:2949
 msgid "error: %B: Big-endian R2 is not supported."
 msgstr ""
 
-#: elf32-nios2.c:3832
+#: elf32-nios2.c:3830
 #, c-format
 msgid ""
 "global pointer relative relocation at address 0x%08x when _gp not defined\n"
 msgstr ""
 
-#: elf32-nios2.c:3852
+#: elf32-nios2.c:3850
 #, c-format
 msgid ""
 "Unable to reach %s (at 0x%08x) from the global pointer (at 0x%08x) because "
 "the offset (%d) is out of the allowed range, -32678 to 32767.\n"
 msgstr ""
 
-#: elf32-nios2.c:4374
+#: elf32-nios2.c:4372
 #, c-format
 msgid ""
 "%B(%A+0x%lx): R_NIOS2_TLS_LE16 relocation not permitted in shared object"
 msgstr ""
 
-#: elf32-nios2.c:4502
+#: elf32-nios2.c:4500 elf32-pru.c:816
 msgid "relocation out of range"
 msgstr ""
 
-#: elf32-nios2.c:4512 elf32-tic6x.c:2745
+#: elf32-nios2.c:4510 elf32-pru.c:826 elf32-tic6x.c:2747
 msgid "dangerous relocation"
 msgstr ""
 
-#: elf32-nios2.c:5526
+#: elf32-nios2.c:5491
 #, c-format
 msgid "dynamic variable `%s' is zero size"
 msgstr ""
 
-#: elf32-or1k.c:739
+#: elf32-or1k.c:735
 #, c-format
 msgid "%B: invalid OR1K reloc number: %d"
 msgstr ""
 
-#: elf32-or1k.c:989
+#: elf32-or1k.c:985
 msgid "internal error: addend should be zero for R_OR1K_GOT16"
 msgstr ""
 
-#: elf32-or1k.c:1098
+#: elf32-or1k.c:1094
 msgid "%B: support for local dynamic not implemented"
 msgstr ""
 
-#: elf32-or1k.c:1233
+#: elf32-or1k.c:1229
 msgid "%B: will not resolve runtime TLS relocation"
 msgstr ""
 
-#: elf32-or1k.c:1603
+#: elf32-or1k.c:1599
 #, c-format
 msgid "%B: bad relocation section name `%s'"
 msgstr ""
 
-#: elf32-or1k.c:2733
+#: elf32-or1k.c:2704
 msgid "%B: EF_OR1K_NODELAY flag mismatch with previous modules"
 msgstr ""
 
@@ -3036,110 +3038,110 @@ msgstr ""
 msgid "%B: unrecognised PicoJava reloc number: %d"
 msgstr ""
 
-#: elf32-ppc.c:2046
+#: elf32-ppc.c:2062
 #, c-format
 msgid "%B: unrecognised PPC reloc number: %d"
 msgstr ""
 
-#: elf32-ppc.c:2131
+#: elf32-ppc.c:2147
 #, c-format
 msgid "generic linker can't handle %s"
 msgstr ""
 
-#: elf32-ppc.c:2765
+#: elf32-ppc.c:2781
 #, c-format
 msgid "corrupt %s section in %B"
 msgstr ""
 
-#: elf32-ppc.c:2785
+#: elf32-ppc.c:2801
 #, c-format
 msgid "unable to read in %s section from %B"
 msgstr ""
 
-#: elf32-ppc.c:2827
+#: elf32-ppc.c:2843
 #, c-format
 msgid "warning: unable to set size of %s section in %B"
 msgstr ""
 
-#: elf32-ppc.c:2877
+#: elf32-ppc.c:2893
 msgid "failed to allocate space for new APUinfo section."
 msgstr ""
 
-#: elf32-ppc.c:2896
+#: elf32-ppc.c:2912
 msgid "failed to compute new APUinfo section."
 msgstr ""
 
-#: elf32-ppc.c:2899
+#: elf32-ppc.c:2915
 msgid "failed to install new APUinfo section."
 msgstr ""
 
-#: elf32-ppc.c:3950
+#: elf32-ppc.c:3968
 #, c-format
 msgid "%B: relocation %s cannot be used when making a shared object"
 msgstr ""
 
-#: elf32-ppc.c:4304 elf64-ppc.c:5585
+#: elf32-ppc.c:4322 elf64-ppc.c:5579
 #, c-format
-msgid "%P: %H: %s reloc against local symbol\n"
+msgid "%H: %s reloc against local symbol\n"
 msgstr ""
 
-#: elf32-ppc.c:4665 elf32-ppc.c:4669
+#: elf32-ppc.c:4684 elf32-ppc.c:4688
 #, c-format
 msgid "Warning: %B uses hard float, %B uses soft float"
 msgstr ""
 
-#: elf32-ppc.c:4673 elf32-ppc.c:4678
+#: elf32-ppc.c:4692 elf32-ppc.c:4697
 #, c-format
 msgid ""
 "Warning: %B uses double-precision hard float, %B uses single-precision hard "
 "float"
 msgstr ""
 
-#: elf32-ppc.c:4693 elf32-ppc.c:4698
+#: elf32-ppc.c:4712 elf32-ppc.c:4717
 #, c-format
 msgid "Warning: %B uses 64-bit long double, %B uses 128-bit long double"
 msgstr ""
 
-#: elf32-ppc.c:4703 elf32-ppc.c:4708
+#: elf32-ppc.c:4722 elf32-ppc.c:4727
 #, c-format
 msgid "Warning: %B uses IBM long double, %B uses IEEE long double"
 msgstr ""
 
-#: elf32-ppc.c:4759 elf32-ppc.c:4764
+#: elf32-ppc.c:4778 elf32-ppc.c:4783
 #, c-format
 msgid "Warning: %B uses AltiVec vector ABI, %B uses SPE vector ABI"
 msgstr ""
 
-#: elf32-ppc.c:4787 elf32-ppc.c:4792
+#: elf32-ppc.c:4806 elf32-ppc.c:4811
 #, c-format
 msgid "Warning: %B uses r3/r4 for small structure returns, %B uses memory"
 msgstr ""
 
-#: elf32-ppc.c:4847
+#: elf32-ppc.c:4866
 msgid ""
 "%B: compiled with -mrelocatable and linked with modules compiled normally"
 msgstr ""
 
-#: elf32-ppc.c:4855
+#: elf32-ppc.c:4874
 msgid ""
 "%B: compiled normally and linked with modules compiled with -mrelocatable"
 msgstr ""
 
-#: elf32-ppc.c:4924
+#: elf32-ppc.c:4943
 #, c-format
 msgid "%B(%A+0x%lx): expected 16A style relocation on 0x%08x insn"
 msgstr ""
 
-#: elf32-ppc.c:4943
+#: elf32-ppc.c:4962
 #, c-format
 msgid "%B(%A+0x%lx): expected 16D style relocation on 0x%08x insn"
 msgstr ""
 
-#: elf32-ppc.c:5018
+#: elf32-ppc.c:5037
 msgid "%P: bss-plt forced due to %B\n"
 msgstr ""
 
-#: elf32-ppc.c:5021
+#: elf32-ppc.c:5040
 msgid "%P: bss-plt forced by profiling\n"
 msgstr ""
 
@@ -3147,33 +3149,33 @@ msgstr ""
 #. could just mark this symbol to exclude it
 #. from tls optimization but it's safer to skip
 #. the entire optimization.
-#: elf32-ppc.c:5520 elf64-ppc.c:8746
+#: elf32-ppc.c:5539 elf64-ppc.c:8749
 #, c-format
 msgid "%H arg lost __tls_get_addr, TLS optimization disabled\n"
 msgstr ""
 
-#: elf32-ppc.c:8248
-msgid "%P: %H: fixup branch overflow\n"
+#: elf32-ppc.c:8246
+msgid "%H: fixup branch overflow\n"
 msgstr ""
 
-#: elf32-ppc.c:8288 elf32-ppc.c:8323
+#: elf32-ppc.c:8286 elf32-ppc.c:8321
 #, c-format
-msgid "%P: %H: error: %s with unexpected instruction %x\n"
+msgid "%H: error: %s with unexpected instruction %x\n"
 msgstr ""
 
-#: elf32-ppc.c:8379
+#: elf32-ppc.c:8377
 #, c-format
-msgid "%X%P: %H: unsupported bss-plt -fPIC ifunc %s\n"
+msgid "%X%H: unsupported bss-plt -fPIC ifunc %s\n"
 msgstr ""
 
-#: elf32-ppc.c:8432
+#: elf32-ppc.c:8431
 #, c-format
 msgid "%P: %B: unknown relocation type %d for symbol %s\n"
 msgstr ""
 
-#: elf32-ppc.c:8711
+#: elf32-ppc.c:8722
 #, c-format
-msgid "%P: %H: non-zero addend on %s reloc against `%s'\n"
+msgid "%H: non-zero addend on %s reloc against `%s'\n"
 msgstr ""
 
 #. @local on an ifunc does not really make sense since
@@ -3184,50 +3186,62 @@ msgstr ""
 #. local won't have the +32k reloc addend trick marking
 #. -fPIC code, so the linker won't know whether r30 is
 #. _GLOBAL_OFFSET_TABLE_ or pointing into a .got2 section.
-#: elf32-ppc.c:8743
+#: elf32-ppc.c:8754
 #, c-format
-msgid "%X%P: %H: @local call to ifunc %s\n"
+msgid "%X%H: @local call to ifunc %s\n"
 msgstr ""
 
-#: elf32-ppc.c:8933
+#: elf32-ppc.c:8939
 #, c-format
-msgid "%P: %H: relocation %s for indirect function %s unsupported\n"
+msgid "%H: relocation %s for indirect function %s unsupported\n"
 msgstr ""
 
-#: elf32-ppc.c:9192 elf32-ppc.c:9223 elf32-ppc.c:9314
+#: elf32-ppc.c:9236 elf32-ppc.c:9267 elf32-ppc.c:9358
 #, c-format
 msgid ""
 "%P: %B: the target (%s) of a %s relocation is in the wrong output section "
 "(%s)\n"
 msgstr ""
 
-#: elf32-ppc.c:9409
+#: elf32-ppc.c:9446
 #, c-format
 msgid ""
 "%B: the target (%s) of a %s relocation is in the wrong output section (%s)"
 msgstr ""
 
-#: elf32-ppc.c:9519
+#: elf32-ppc.c:9550
 #, c-format
 msgid "%P: %B: relocation %s is not yet supported for symbol %s\n"
 msgstr ""
 
-#: elf32-ppc.c:9604
+#: elf32-ppc.c:9635
 #, c-format
-msgid "%P: %H: error: %s against `%s' not a multiple of %u\n"
+msgid "%H: error: %s against `%s' not a multiple of %u\n"
 msgstr ""
 
-#: elf32-ppc.c:9633
+#: elf32-ppc.c:9664
 #, c-format
-msgid "%P: %H: unresolvable %s relocation against symbol `%s'\n"
+msgid "%H: unresolvable %s relocation against symbol `%s'\n"
 msgstr ""
 
-#: elf32-ppc.c:9714
+#: elf32-ppc.c:9745
 #, c-format
-msgid "%P: %H: %s reloc against `%s': error %d\n"
+msgid "%H: %s reloc against `%s': error %d\n"
 msgstr ""
 
-#: elf32-ppc.c:10511
+#: elf32-ppc.c:10509 elf64-ppc.c:15641
+msgid ""
+"%X%P: text relocations and GNU indirect functions will result in a segfault "
+"at runtime\n"
+msgstr ""
+
+#: elf32-ppc.c:10513 elf64-ppc.c:15645
+msgid ""
+"%P: warning: text relocations and GNU indirect functions may result in a "
+"segfault at runtime\n"
+msgstr ""
+
+#: elf32-ppc.c:10558
 #, c-format
 msgid "%P: %s not defined in linker created %s\n"
 msgstr ""
@@ -3336,12 +3350,12 @@ msgstr ""
 msgid "%B:%A: %s and %s must be in the same input section"
 msgstr ""
 
-#: elf32-s390.c:2329 elf64-s390.c:2276
+#: elf32-s390.c:2310 elf64-s390.c:2253
 #, c-format
 msgid "%B(%A+0x%lx): invalid instruction for TLS relocation %s"
 msgstr ""
 
-#: elf32-score.c:1521 elf32-score7.c:1382 elfxx-mips.c:3752
+#: elf32-score.c:1521 elf32-score7.c:1382 elfxx-mips.c:3756
 msgid "not enough GOT space for local GOT entries"
 msgstr ""
 
@@ -3437,44 +3451,44 @@ msgstr ""
 msgid "%C: warning: relocation to \"%s\" references a different segment\n"
 msgstr ""
 
-#: elf32-sh.c:6044 elf32-sh.c:6130
+#: elf32-sh.c:6045 elf32-sh.c:6131
 #, c-format
 msgid "%B: `%s' accessed both as normal and FDPIC symbol"
 msgstr ""
 
-#: elf32-sh.c:6050 elf32-sh.c:6135
+#: elf32-sh.c:6051 elf32-sh.c:6136
 #, c-format
 msgid "%B: `%s' accessed both as FDPIC and thread local symbol"
 msgstr ""
 
-#: elf32-sh.c:6081
+#: elf32-sh.c:6082
 msgid "%B: Function descriptor relocation with non-zero addend"
 msgstr ""
 
-#: elf32-sh.c:6319 elf64-alpha.c:4749
+#: elf32-sh.c:6320 elf64-alpha.c:4757
 #, c-format
 msgid "%B: TLS local exec code cannot be linked into shared objects"
 msgstr ""
 
-#: elf32-sh.c:6434
+#: elf32-sh.c:6435
 #, c-format
 msgid "%B: uses %s instructions while previous modules use %s instructions"
 msgstr ""
 
-#: elf32-sh.c:6446
+#: elf32-sh.c:6447
 #, c-format
 msgid ""
 "internal error: merge of architecture '%s' with architecture '%s' produced "
 "unknown architecture"
 msgstr ""
 
-#: elf32-sh.c:6483
+#: elf32-sh.c:6484
 msgid ""
 "%B: uses instructions which are incompatible with instructions used in "
 "previous modules"
 msgstr ""
 
-#: elf32-sh.c:6496
+#: elf32-sh.c:6497
 msgid "%B: attempt to mix FDPIC and non-FDPIC objects"
 msgstr ""
 
@@ -3679,52 +3693,52 @@ msgstr ""
 msgid "%B(%s+0x%lx): unresolvable %s relocation against symbol `%s'"
 msgstr ""
 
-#: elf32-tic6x.c:1600
+#: elf32-tic6x.c:1596
 msgid "warning: generating a shared library containing non-PIC code"
 msgstr ""
 
-#: elf32-tic6x.c:1605
+#: elf32-tic6x.c:1601
 msgid "warning: generating a shared library containing non-PID code"
 msgstr ""
 
-#: elf32-tic6x.c:2523
+#: elf32-tic6x.c:2525
 msgid "%B: SB-relative relocation but __c6xabi_DSBT_BASE not defined"
 msgstr ""
 
-#: elf32-tic6x.c:3648
+#: elf32-tic6x.c:3651
 #, c-format
 msgid "%B: error: unknown mandatory EABI object attribute %d"
 msgstr ""
 
-#: elf32-tic6x.c:3657
+#: elf32-tic6x.c:3660
 #, c-format
 msgid "%B: warning: unknown EABI object attribute %d"
 msgstr ""
 
-#: elf32-tic6x.c:3771 elf32-tic6x.c:3780
+#: elf32-tic6x.c:3774 elf32-tic6x.c:3783
 #, c-format
 msgid "error: %B requires more stack alignment than %B preserves"
 msgstr ""
 
-#: elf32-tic6x.c:3790 elf32-tic6x.c:3799
+#: elf32-tic6x.c:3793 elf32-tic6x.c:3802
 msgid "error: unknown Tag_ABI_array_object_alignment value in %B"
 msgstr ""
 
-#: elf32-tic6x.c:3808 elf32-tic6x.c:3817
+#: elf32-tic6x.c:3811 elf32-tic6x.c:3820
 msgid "error: unknown Tag_ABI_array_object_align_expected value in %B"
 msgstr ""
 
-#: elf32-tic6x.c:3826 elf32-tic6x.c:3834
+#: elf32-tic6x.c:3829 elf32-tic6x.c:3837
 #, c-format
 msgid "error: %B requires more array alignment than %B preserves"
 msgstr ""
 
-#: elf32-tic6x.c:3857
+#: elf32-tic6x.c:3860
 #, c-format
 msgid "warning: %B and %B differ in wchar_t size"
 msgstr ""
 
-#: elf32-tic6x.c:3876
+#: elf32-tic6x.c:3879
 #, c-format
 msgid "warning: %B and %B differ in whether code is compiled for DSBT"
 msgstr ""
@@ -4032,8 +4046,8 @@ msgstr ""
 msgid "error reading cpu type from elf private data"
 msgstr ""
 
-#: elf32-xstormy16.c:453 elf64-ia64-vms.c:2073 elf32-ia64.c:2332
-#: elf64-ia64.c:2332
+#: elf32-xstormy16.c:453 elf64-ia64-vms.c:2073 elf32-ia64.c:2333
+#: elf64-ia64.c:2333
 msgid "non-zero addend in @fptr reloc"
 msgstr ""
 
@@ -4113,56 +4127,56 @@ msgstr ""
 msgid "%B: .got subsegment exceeds 64K (size %d)"
 msgstr ""
 
-#: elf64-alpha.c:3078
+#: elf64-alpha.c:3084
 #, c-format
 msgid "%B: %A+0x%lx: warning: %s relocation against unexpected insn"
 msgstr ""
 
-#: elf64-alpha.c:3272
+#: elf64-alpha.c:3280
 #, c-format
 msgid "%B: %A+0x%lx: warning: LITERAL relocation against unexpected insn"
 msgstr ""
 
-#: elf64-alpha.c:4473 elf64-alpha.c:4486
+#: elf64-alpha.c:4481 elf64-alpha.c:4494
 #, c-format
 msgid "%B: gp-relative relocation against dynamic symbol %s"
 msgstr ""
 
-#: elf64-alpha.c:4513 elf64-alpha.c:4657
+#: elf64-alpha.c:4521 elf64-alpha.c:4665
 #, c-format
 msgid "%B: pc-relative relocation against dynamic symbol %s"
 msgstr ""
 
-#: elf64-alpha.c:4542
+#: elf64-alpha.c:4550
 #, c-format
 msgid "%B: change in gp: BRSGP %s"
 msgstr ""
 
-#: elf64-alpha.c:4567
+#: elf64-alpha.c:4575
 msgid "<unknown>"
 msgstr ""
 
-#: elf64-alpha.c:4573
+#: elf64-alpha.c:4581
 #, c-format
 msgid "%B: !samegp reloc against symbol without .prologue: %s"
 msgstr ""
 
-#: elf64-alpha.c:4631
+#: elf64-alpha.c:4639
 #, c-format
 msgid "%B: unhandled dynamic relocation against %s"
 msgstr ""
 
-#: elf64-alpha.c:4666
+#: elf64-alpha.c:4674
 #, c-format
 msgid "%B: pc-relative relocation against undefined weak symbol %s"
 msgstr ""
 
-#: elf64-alpha.c:4732
+#: elf64-alpha.c:4740
 #, c-format
 msgid "%B: dtp-relative relocation against dynamic symbol %s"
 msgstr ""
 
-#: elf64-alpha.c:4757
+#: elf64-alpha.c:4765
 #, c-format
 msgid "%B: tp-relative relocation against dynamic symbol %s"
 msgstr ""
@@ -4184,100 +4198,100 @@ msgid ""
 "branch."
 msgstr ""
 
-#: elf64-ia64-vms.c:2028 elf32-ia64.c:2280 elf64-ia64.c:2280
+#: elf64-ia64-vms.c:2028 elf32-ia64.c:2281 elf64-ia64.c:2281
 msgid "@pltoff reloc against local symbol"
 msgstr ""
 
-#: elf64-ia64-vms.c:3281 elf32-ia64.c:3686 elf64-ia64.c:3686
+#: elf64-ia64-vms.c:3281 elf32-ia64.c:3687 elf64-ia64.c:3687
 #, c-format
 msgid "%s: short data segment overflowed (0x%lx >= 0x400000)"
 msgstr ""
 
-#: elf64-ia64-vms.c:3292 elf32-ia64.c:3697 elf64-ia64.c:3697
+#: elf64-ia64-vms.c:3292 elf32-ia64.c:3698 elf64-ia64.c:3698
 #, c-format
 msgid "%s: __gp does not cover short data segment"
 msgstr ""
 
-#: elf64-ia64-vms.c:3559 elf32-ia64.c:3966 elf64-ia64.c:3966
+#: elf64-ia64-vms.c:3559 elf32-ia64.c:3967 elf64-ia64.c:3967
 #, c-format
 msgid "%B: non-pic code with imm relocation against dynamic symbol `%s'"
 msgstr ""
 
-#: elf64-ia64-vms.c:3622 elf32-ia64.c:4034 elf64-ia64.c:4034
+#: elf64-ia64-vms.c:3622 elf32-ia64.c:4035 elf64-ia64.c:4035
 #, c-format
 msgid "%B: @gprel relocation against dynamic symbol %s"
 msgstr ""
 
-#: elf64-ia64-vms.c:3681 elf32-ia64.c:4097 elf64-ia64.c:4097
+#: elf64-ia64-vms.c:3681 elf32-ia64.c:4098 elf64-ia64.c:4098
 msgid "%B: linking non-pic code in a position independent executable"
 msgstr ""
 
-#: elf64-ia64-vms.c:3783 elf32-ia64.c:4235 elf64-ia64.c:4235
+#: elf64-ia64-vms.c:3783 elf32-ia64.c:4236 elf64-ia64.c:4236
 #, c-format
 msgid "%B: @internal branch to dynamic symbol %s"
 msgstr ""
 
-#: elf64-ia64-vms.c:3786 elf32-ia64.c:4238 elf64-ia64.c:4238
+#: elf64-ia64-vms.c:3786 elf32-ia64.c:4239 elf64-ia64.c:4239
 #, c-format
 msgid "%B: speculation fixup to dynamic symbol %s"
 msgstr ""
 
-#: elf64-ia64-vms.c:3789 elf32-ia64.c:4241 elf64-ia64.c:4241
+#: elf64-ia64-vms.c:3789 elf32-ia64.c:4242 elf64-ia64.c:4242
 #, c-format
 msgid "%B: @pcrel relocation against dynamic symbol %s"
 msgstr ""
 
-#: elf64-ia64-vms.c:3913 elf32-ia64.c:4438 elf64-ia64.c:4438
+#: elf64-ia64-vms.c:3913 elf32-ia64.c:4439 elf64-ia64.c:4439
 msgid "unsupported reloc"
 msgstr ""
 
-#: elf64-ia64-vms.c:3950 elf32-ia64.c:4476 elf64-ia64.c:4476
+#: elf64-ia64-vms.c:3950 elf32-ia64.c:4477 elf64-ia64.c:4477
 #, c-format
 msgid ""
 "%B: missing TLS section for relocation %s against `%s' at 0x%lx in section `"
 "%A'."
 msgstr ""
 
-#: elf64-ia64-vms.c:3966 elf32-ia64.c:4492 elf64-ia64.c:4492
+#: elf64-ia64-vms.c:3966 elf32-ia64.c:4493 elf64-ia64.c:4493
 #, c-format
 msgid ""
 "%B: Can't relax br (%s) to `%s' at 0x%lx in section `%A' with size 0x%lx (> "
 "0x1000000)."
 msgstr ""
 
-#: elf64-ia64-vms.c:4256 elf32-ia64.c:4748 elf64-ia64.c:4748
+#: elf64-ia64-vms.c:4256 elf32-ia64.c:4749 elf64-ia64.c:4749
 msgid "%B: linking trap-on-NULL-dereference with non-trapping files"
 msgstr ""
 
-#: elf64-ia64-vms.c:4265 elf32-ia64.c:4757 elf64-ia64.c:4757
+#: elf64-ia64-vms.c:4265 elf32-ia64.c:4758 elf64-ia64.c:4758
 msgid "%B: linking big-endian files with little-endian files"
 msgstr ""
 
-#: elf64-ia64-vms.c:4274 elf32-ia64.c:4766 elf64-ia64.c:4766
+#: elf64-ia64-vms.c:4274 elf32-ia64.c:4767 elf64-ia64.c:4767
 msgid "%B: linking 64-bit files with 32-bit files"
 msgstr ""
 
-#: elf64-ia64-vms.c:4283 elf32-ia64.c:4775 elf64-ia64.c:4775
+#: elf64-ia64-vms.c:4283 elf32-ia64.c:4776 elf64-ia64.c:4776
 msgid "%B: linking constant-gp files with non-constant-gp files"
 msgstr ""
 
-#: elf64-ia64-vms.c:4293 elf32-ia64.c:4785 elf64-ia64.c:4785
+#: elf64-ia64-vms.c:4293 elf32-ia64.c:4786 elf64-ia64.c:4786
 msgid "%B: linking auto-pic files with non-auto-pic files"
 msgstr ""
 
-#: elf64-ia64-vms.c:5136 elflink.c:4628
+#: elf64-ia64-vms.c:5136 elflink.c:4674
 #, c-format
 msgid ""
 "Warning: alignment %u of common symbol `%s' in %B is greater than the "
 "alignment (%u) of its section %A"
 msgstr ""
 
-#: elf64-ia64-vms.c:5143 elflink.c:4635
+#: elf64-ia64-vms.c:5143 elflink.c:4681
 #, c-format
 msgid "Warning: alignment %u of symbol `%s' in %B is smaller than %u in %B"
 msgstr ""
 
-#: elf64-ia64-vms.c:5159 elflink.c:4652
+#: elf64-ia64-vms.c:5159 elflink.c:4698
 #, c-format
 msgid "Warning: size of symbol `%s' changed from %lu in %B to %lu in %B"
 msgstr ""
@@ -4365,119 +4379,119 @@ msgid ""
 "  Please report this bug."
 msgstr ""
 
-#: elf64-ppc.c:4593
+#: elf64-ppc.c:4614
 #, c-format
 msgid "%P: %B: cannot create stub entry %s\n"
 msgstr ""
 
-#: elf64-ppc.c:4988
+#: elf64-ppc.c:4982
 msgid "%P: symbol '%s' has invalid st_other for ABI version 1\n"
 msgstr ""
 
-#: elf64-ppc.c:5157
+#: elf64-ppc.c:5151
 #, c-format
 msgid "%P: %B .opd not allowed in ABI version %d\n"
 msgstr ""
 
-#: elf64-ppc.c:5633
+#: elf64-ppc.c:5627
 #, c-format
-msgid "%P: %H: %s reloc unsupported in shared libraries and PIEs.\n"
+msgid "%H: %s reloc unsupported in shared libraries and PIEs.\n"
 msgstr ""
 
-#: elf64-ppc.c:6040
+#: elf64-ppc.c:6034
 #, c-format
 msgid "%B uses unknown e_flags 0x%lx"
 msgstr ""
 
-#: elf64-ppc.c:6048
+#: elf64-ppc.c:6042
 #, c-format
 msgid "%B: ABI version %ld is not compatible with ABI version %ld output"
 msgstr ""
 
-#: elf64-ppc.c:6076
+#: elf64-ppc.c:6070
 #, c-format
 msgid " [abiv%ld]"
 msgstr ""
 
-#: elf64-ppc.c:7373
+#: elf64-ppc.c:7368
 msgid ""
 "%P: copy reloc against `%T' requires lazy plt linking; avoid setting "
 "LD_BIND_NOW=1 or upgrade gcc\n"
 msgstr ""
 
-#: elf64-ppc.c:7632
+#: elf64-ppc.c:7635
 msgid "%B: undefined symbol on R_PPC64_TOCSAVE relocation"
 msgstr ""
 
-#: elf64-ppc.c:7862
+#: elf64-ppc.c:7865
 #, c-format
 msgid "%P: dynreloc miscount for %B, section %A\n"
 msgstr ""
 
-#: elf64-ppc.c:7951
+#: elf64-ppc.c:7954
 msgid "%B: .opd is not a regular array of opd entries"
 msgstr ""
 
-#: elf64-ppc.c:7961
+#: elf64-ppc.c:7964
 #, c-format
 msgid "%B: unexpected reloc type %u in .opd section"
 msgstr ""
 
-#: elf64-ppc.c:7983
+#: elf64-ppc.c:7986
 #, c-format
 msgid "%B: undefined sym `%s' in .opd section"
 msgstr ""
 
-#: elf64-ppc.c:8548
+#: elf64-ppc.c:8551
 msgid "%H __tls_get_addr lost arg, TLS optimization disabled\n"
 msgstr ""
 
-#: elf64-ppc.c:8891 elf64-ppc.c:9528
+#: elf64-ppc.c:8894 elf64-ppc.c:9531
 #, c-format
 msgid "%s defined on removed toc entry"
 msgstr ""
 
-#: elf64-ppc.c:9256
+#: elf64-ppc.c:9259
 #, c-format
-msgid "%P: %H: toc optimization is not supported for %s instruction.\n"
+msgid "%H: toc optimization is not supported for %s instruction.\n"
 msgstr ""
 
-#: elf64-ppc.c:9485
+#: elf64-ppc.c:9488
 #, c-format
-msgid "%P: %H: %s references optimized away TOC entry\n"
+msgid "%H: %s references optimized away TOC entry\n"
 msgstr ""
 
-#: elf64-ppc.c:10810
+#: elf64-ppc.c:10817
 msgid "%P: cannot find opd entry toc for `%T'\n"
 msgstr ""
 
-#: elf64-ppc.c:10901
+#: elf64-ppc.c:10908
 msgid "%P: long branch stub `%s' offset overflow\n"
 msgstr ""
 
-#: elf64-ppc.c:10960
+#: elf64-ppc.c:10967
 msgid "%P: can't find branch stub `%s'\n"
 msgstr ""
 
-#: elf64-ppc.c:11024 elf64-ppc.c:11175 elf64-ppc.c:12979
+#: elf64-ppc.c:11031 elf64-ppc.c:11183 elf64-ppc.c:12984
 #, c-format
 msgid "%P: linkage table error against `%T'\n"
 msgstr ""
 
-#: elf64-ppc.c:11385
+#: elf64-ppc.c:11393
 msgid "%P: can't build branch stub `%s'\n"
 msgstr ""
 
-#: elf64-ppc.c:12158
+#: elf64-ppc.c:12166
 #, c-format
 msgid "%B section %A exceeds stub group size"
 msgstr ""
 
-#: elf64-ppc.c:13256
+#: elf64-ppc.c:13261
 msgid "%P: stubs don't match calculated size\n"
 msgstr ""
 
-#: elf64-ppc.c:13268
+#: elf64-ppc.c:13273
 #, c-format
 msgid ""
 "linker stubs in %u group%s\n"
@@ -4490,178 +4504,182 @@ msgid ""
 "  global entry %lu"
 msgstr ""
 
-#: elf64-ppc.c:13590
+#: elf64-ppc.c:13595
 #, c-format
-msgid "%P: %H: %s used with TLS symbol `%T'\n"
+msgid "%H: %s used with TLS symbol `%T'\n"
 msgstr ""
 
-#: elf64-ppc.c:13592
+#: elf64-ppc.c:13597
 #, c-format
-msgid "%P: %H: %s used with non-TLS symbol `%T'\n"
+msgid "%H: %s used with non-TLS symbol `%T'\n"
 msgstr ""
 
-#: elf64-ppc.c:14222
+#: elf64-ppc.c:14227
 #, c-format
-msgid ""
-"%P: %H: call to `%T' lacks nop, can't restore toc; recompile with -fPIC\n"
+msgid "%H: call to `%T' lacks nop, can't restore toc; recompile with -fPIC\n"
 msgstr ""
 
-#: elf64-ppc.c:14228
+#: elf64-ppc.c:14233
 #, c-format
 msgid ""
-"%P: %H: call to `%T' lacks nop, can't restore toc; (-mcmodel=small toc "
-"adjust stub)\n"
+"%H: call to `%T' lacks nop, can't restore toc; (-mcmodel=small toc adjust "
+"stub)\n"
 msgstr ""
 
-#: elf64-ppc.c:14356
+#: elf64-ppc.c:14361
 #, c-format
 msgid "%P: %B: unknown relocation type %d for `%T'\n"
 msgstr ""
 
-#: elf64-ppc.c:14899
+#: elf64-ppc.c:14918
 #, c-format
-msgid "%P: %H: %s for indirect function `%T' unsupported\n"
+msgid "%H: %s for indirect function `%T' unsupported\n"
 msgstr ""
 
-#: elf64-ppc.c:15007
+#: elf64-ppc.c:15056
 #, c-format
 msgid "%P: %B: %s is not supported for `%T'\n"
 msgstr ""
 
-#: elf64-ppc.c:15162
+#: elf64-ppc.c:15211
 #, c-format
-msgid "%P: %H: error: %s not a multiple of %u\n"
+msgid "%H: error: %s not a multiple of %u\n"
 msgstr ""
 
-#: elf64-ppc.c:15184
+#: elf64-ppc.c:15233
 #, c-format
-msgid "%P: %H: unresolvable %s against `%T'\n"
+msgid "%H: unresolvable %s against `%T'\n"
 msgstr ""
 
-#: elf64-ppc.c:15281
+#: elf64-ppc.c:15330
 #, c-format
-msgid "%P: %H: %s against `%T': error %d\n"
+msgid "%H: %s against `%T': error %d\n"
 msgstr ""
 
-#: elf64-ppc.c:15650 elf64-ppc.c:15679
+#: elf64-ppc.c:15723 elf64-ppc.c:15752
 msgid "%P: %s offset too large for .eh_frame sdata4 encoding"
 msgstr ""
 
+#: elf64-s390.c:2708
+msgid ""
+"%B: `%s' non-PLT reloc for symbol defined in shared library and accessed "
+"from executable (rebuild file with -fPIC ?)"
+msgstr ""
+
 #: elf64-sh64.c:1680
 #, c-format
 msgid "%s: error: unaligned relocation type %d at %08x reloc %08x\n"
 msgstr ""
 
-#: elf64-sparc.c:446
+#: elf64-sparc.c:448
 msgid "%B: Only registers %%g[2367] can be declared using STT_REGISTER"
 msgstr ""
 
-#: elf64-sparc.c:467
+#: elf64-sparc.c:469
 #, c-format
 msgid "Register %%g%d used incompatibly: %s in %B, previously %s in %B"
 msgstr ""
 
-#: elf64-sparc.c:491
+#: elf64-sparc.c:493
 #, c-format
 msgid "Symbol `%s' has differing types: REGISTER in %B, previously %s in %B"
 msgstr ""
 
-#: elf64-sparc.c:537
+#: elf64-sparc.c:539
 #, c-format
 msgid "Symbol `%s' has differing types: %s in %B, previously REGISTER in %B"
 msgstr ""
 
-#: elf64-sparc.c:691
+#: elf64-sparc.c:693
 msgid "%B: linking UltraSPARC specific with HAL specific code"
 msgstr ""
 
-#: elf64-x86-64.c:1694
+#: elf64-x86-64.c:1738
 msgid "hidden symbol "
 msgstr ""
 
-#: elf64-x86-64.c:1697
+#: elf64-x86-64.c:1741
 msgid "internal symbol "
 msgstr ""
 
-#: elf64-x86-64.c:1700
+#: elf64-x86-64.c:1744
 msgid "protected symbol "
 msgstr ""
 
-#: elf64-x86-64.c:1703
+#: elf64-x86-64.c:1747
 msgid "symbol "
 msgstr ""
 
-#: elf64-x86-64.c:1704 elf64-x86-64.c:1714
+#: elf64-x86-64.c:1748 elf64-x86-64.c:1758
 msgid "; recompile with -fPIC"
 msgstr ""
 
-#: elf64-x86-64.c:1709
+#: elf64-x86-64.c:1753
 msgid "undefined "
 msgstr ""
 
-#: elf64-x86-64.c:1718
+#: elf64-x86-64.c:1762
 #, c-format
 msgid ""
 "%B: relocation %s against %s%s`%s' can not be used when making a shared "
 "object%s"
 msgstr ""
 
-#: elf64-x86-64.c:2278
+#: elf64-x86-64.c:2322
 #, c-format
 msgid "%B: relocation %s against symbol `%s' isn't supported in x32 mode"
 msgstr ""
 
-#: elf64-x86-64.c:2468
+#: elf64-x86-64.c:2527
 #, c-format
 msgid "%B: '%s' accessed both as normal and thread local symbol"
 msgstr ""
 
-#: elf64-x86-64.c:4416
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:4991
+#: elf64-x86-64.c:4540 /work/sources/binutils/current/bfd/elfnn-aarch64.c:5004
 #, c-format
 msgid ""
 "%B: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %d"
 msgstr ""
 
-#: elf64-x86-64.c:4652
+#: elf64-x86-64.c:4776
 #, c-format
 msgid ""
 "%B: relocation R_X86_64_GOTOFF64 against undefined %s `%s' can not be used "
 "when making a shared object"
 msgstr ""
 
-#: elf64-x86-64.c:4665
+#: elf64-x86-64.c:4789
 #, c-format
 msgid ""
 "%B: relocation R_X86_64_GOTOFF64 against protected %s `%s' can not be used "
 "when making a shared object"
 msgstr ""
 
-#: elf64-x86-64.c:4940
+#: elf64-x86-64.c:5064
 #, c-format
 msgid ""
 "%B: addend -0x%x in relocation %s against symbol `%s' at 0x%lx in section `"
 "%A' is out of range"
 msgstr ""
 
-#: elf64-x86-64.c:4949
+#: elf64-x86-64.c:5073
 #, c-format
 msgid ""
 "%B: addend 0x%x in relocation %s against symbol `%s' at 0x%lx in section `"
 "%A' is out of range"
 msgstr ""
 
-#: elf64-x86-64.c:5806
+#: elf64-x86-64.c:5930
 #, c-format
 msgid "%F%B: PC-relative offset overflow in PLT entry for `%s'\n"
 msgstr ""
 
-#: elf64-x86-64.c:5865
+#: elf64-x86-64.c:5989
 #, c-format
 msgid "%F%B: branch displacement overflow in PLT entry for `%s'\n"
 msgstr ""
 
-#: elf64-x86-64.c:5930
+#: elf64-x86-64.c:6054
 #, c-format
 msgid "%F%B: PC-relative offset overflow in GOT PLT entry for `%s'\n"
 msgstr ""
@@ -4686,542 +4704,542 @@ msgstr ""
 msgid "Warning: %B is truncated: expected core file size >= %lu, found: %lu."
 msgstr ""
 
-#: elflink.c:1266
+#: elflink.c:1296
 #, c-format
 msgid ""
 "%s: TLS definition in %B section %A mismatches non-TLS definition in %B "
 "section %A"
 msgstr ""
 
-#: elflink.c:1272
+#: elflink.c:1302
 #, c-format
 msgid "%s: TLS reference in %B mismatches non-TLS reference in %B"
 msgstr ""
 
-#: elflink.c:1278
+#: elflink.c:1308
 #, c-format
 msgid "%s: TLS definition in %B section %A mismatches non-TLS reference in %B"
 msgstr ""
 
-#: elflink.c:1284
+#: elflink.c:1314
 #, c-format
 msgid "%s: TLS reference in %B mismatches non-TLS definition in %B section %A"
 msgstr ""
 
-#: elflink.c:1948
+#: elflink.c:1978
 #, c-format
 msgid "%B: unexpected redefinition of indirect versioned symbol `%s'"
 msgstr ""
 
-#: elflink.c:2241
+#: elflink.c:2271
 #, c-format
 msgid "%B: version node not found for symbol %s"
 msgstr ""
 
-#: elflink.c:2330
+#: elflink.c:2360
 #, c-format
 msgid ""
 "%B: bad reloc symbol index (0x%lx >= 0x%lx) for offset 0x%lx in section `%A'"
 msgstr ""
 
-#: elflink.c:2342
+#: elflink.c:2372
 #, c-format
 msgid ""
 "%B: non-zero symbol index (0x%lx) for offset 0x%lx in section `%A' when the "
 "object file has no symbol table"
 msgstr ""
 
-#: elflink.c:2533
+#: elflink.c:2563
 #, c-format
 msgid "%B: relocation size mismatch in %B section %A"
 msgstr ""
 
-#: elflink.c:2826
+#: elflink.c:2856
 #, c-format
 msgid "warning: type and size of dynamic symbol `%s' are not defined"
 msgstr ""
 
-#: elflink.c:2891
+#: elflink.c:2921
 msgid "%P: copy reloc against protected `%T' is dangerous\n"
 msgstr ""
 
-#: elflink.c:3692
+#: elflink.c:3722
 #, c-format
 msgid "%P: alternate ELF machine code found (%d) in %B, expecting %d\n"
 msgstr ""
 
-#: elflink.c:4336
+#: elflink.c:4382
 #, c-format
 msgid "%B: %s: invalid version %u (max %d)"
 msgstr ""
 
-#: elflink.c:4373
+#: elflink.c:4419
 #, c-format
 msgid "%B: %s: invalid needed version %d"
 msgstr ""
 
-#: elflink.c:4790
+#: elflink.c:4836
 #, c-format
 msgid "%B: undefined reference to symbol '%s'"
 msgstr ""
 
-#: elflink.c:5794
+#: elflink.c:5840
 #, c-format
 msgid "%B: stack size specified and %s set"
 msgstr ""
 
-#: elflink.c:5798
+#: elflink.c:5844
 #, c-format
 msgid "%B: %s not absolute"
 msgstr ""
 
-#: elflink.c:6096
+#: elflink.c:6033
 #, c-format
 msgid "%s: undefined version: %s"
 msgstr ""
 
-#: elflink.c:6164
+#: elflink.c:6609
 msgid "%B: .preinit_array section is not allowed in DSO"
 msgstr ""
 
-#: elflink.c:7930
+#: elflink.c:8040
 #, c-format
 msgid "undefined %s reference in complex symbol: %s"
 msgstr ""
 
-#: elflink.c:8085
+#: elflink.c:8195
 #, c-format
 msgid "unknown operator '%c' in complex symbol"
 msgstr ""
 
-#: elflink.c:8648 elflink.c:8666 elflink.c:8705 elflink.c:8723
+#: elflink.c:8758 elflink.c:8776 elflink.c:8815 elflink.c:8833
 msgid "%B: Unable to sort relocs - they are in more than one size"
 msgstr ""
 
 #. The section size is not divisible by either -
 #. something is wrong.
-#: elflink.c:8682 elflink.c:8739
+#: elflink.c:8792 elflink.c:8849
 msgid "%B: Unable to sort relocs - they are of an unknown size"
 msgstr ""
 
-#: elflink.c:8791
+#: elflink.c:8901
 msgid "Not enough memory to sort relocations"
 msgstr ""
 
-#: elflink.c:9059
+#: elflink.c:9169
 #, c-format
 msgid "%B: Too many sections: %d (>= %d)"
 msgstr ""
 
-#: elflink.c:9339
+#: elflink.c:9449
 #, c-format
 msgid "%B: internal symbol `%s' in %B is referenced by DSO"
 msgstr ""
 
-#: elflink.c:9342
+#: elflink.c:9452
 #, c-format
 msgid "%B: hidden symbol `%s' in %B is referenced by DSO"
 msgstr ""
 
-#: elflink.c:9345
+#: elflink.c:9455
 #, c-format
 msgid "%B: local symbol `%s' in %B is referenced by DSO"
 msgstr ""
 
-#: elflink.c:9431
+#: elflink.c:9541
 #, c-format
 msgid "%B: could not find output section %A for input section %A"
 msgstr ""
 
-#: elflink.c:9585
+#: elflink.c:9695
 #, c-format
 msgid "%B: protected symbol `%s' isn't defined"
 msgstr ""
 
-#: elflink.c:9588
+#: elflink.c:9698
 #, c-format
 msgid "%B: internal symbol `%s' isn't defined"
 msgstr ""
 
-#: elflink.c:9591
+#: elflink.c:9701
 #, c-format
 msgid "%B: hidden symbol `%s' isn't defined"
 msgstr ""
 
-#: elflink.c:9622
+#: elflink.c:9732
 #, c-format
 msgid "%B: No symbol version section for versioned symbol `%s'"
 msgstr ""
 
-#: elflink.c:10227
+#: elflink.c:10337
 #, c-format
 msgid "error: %B: size of section %A is not multiple of address size"
 msgstr ""
 
-#: elflink.c:10275
+#: elflink.c:10385
 #, c-format
 msgid ""
 "error: %B contains a reloc (0x%s) for section %A that references a non-"
 "existent global symbol"
 msgstr ""
 
-#: elflink.c:11030
+#: elflink.c:11140
 #, c-format
 msgid "%A has both ordered [`%A' in %B] and unordered [`%A' in %B] sections"
 msgstr ""
 
-#: elflink.c:11037
+#: elflink.c:11147
 #, c-format
 msgid "%A has both ordered and unordered sections"
 msgstr ""
 
-#: elflink.c:11138
+#: elflink.c:11248
 msgid "%B: no symbol found for import library"
 msgstr ""
 
-#: elflink.c:11761
+#: elflink.c:11871
 #, c-format
 msgid "%B: file class %s incompatible with %s"
 msgstr ""
 
-#: elflink.c:11974
+#: elflink.c:12084
 msgid "%B: failed to generate import library"
 msgstr ""
 
-#: elflink.c:12090
+#: elflink.c:12202
 #, c-format
 msgid "warning: %s section has zero size"
 msgstr ""
 
-#: elflink.c:12138
+#: elflink.c:12250
 #, c-format
 msgid "warning: section '%s' is being made into a note"
 msgstr ""
 
-#: elflink.c:12216
+#: elflink.c:12342
 msgid "%P%X: read-only segment has dynamic relocations.\n"
 msgstr ""
 
-#: elflink.c:12219
+#: elflink.c:12345
 msgid "%P: warning: creating a DT_TEXTREL in a shared object.\n"
 msgstr ""
 
-#: elflink.c:12343
+#: elflink.c:12469
 msgid "%P%X: can not read symbols: %E\n"
 msgstr ""
 
-#: elflink.c:12541
+#: elflink.c:12667
 msgid "%F%P: corrupt input: %B\n"
 msgstr ""
 
-#: elflink.c:13245
+#: elflink.c:13329
 #, c-format
 msgid "%B: %A+%lu: No symbol found for INHERIT"
 msgstr ""
 
-#: elflink.c:13421
+#: elflink.c:13505
 #, c-format
 msgid "Unrecognized INPUT_SECTION_FLAG %s\n"
 msgstr ""
 
-#: elfxx-mips.c:1440
+#: elfxx-mips.c:1444
 msgid "static procedure (no name)"
 msgstr ""
 
-#: elfxx-mips.c:5621
+#: elfxx-mips.c:5627
 msgid "MIPS16 and microMIPS functions cannot call each other"
 msgstr ""
 
-#: elfxx-mips.c:6358
+#: elfxx-mips.c:6370
 msgid "%X%H: Unsupported JALX to the same ISA mode\n"
 msgstr ""
 
-#: elfxx-mips.c:6391
+#: elfxx-mips.c:6403
 msgid ""
 "%X%H: Unsupported jump between ISA modes; consider recompiling with "
 "interlinking enabled\n"
 msgstr ""
 
-#: elfxx-mips.c:6424
-msgid "%X%H: Unsupported branch between ISA modes\n"
-msgstr ""
-
-#: elfxx-mips.c:6438
+#: elfxx-mips.c:6444
 msgid ""
 "%X%H: Cannot convert branch between ISA modes to JALX: relocation out of "
 "range\n"
 msgstr ""
 
-#: elfxx-mips.c:7117 elfxx-mips.c:7351
+#: elfxx-mips.c:6456
+msgid "%X%H: Unsupported branch between ISA modes\n"
+msgstr ""
+
+#: elfxx-mips.c:7131 elfxx-mips.c:7365
 #, c-format
 msgid "%B: Warning: bad `%s' option size %u smaller than its header"
 msgstr ""
 
-#: elfxx-mips.c:8116 elfxx-mips.c:8242
+#: elfxx-mips.c:8120 elfxx-mips.c:8246
 #, c-format
 msgid "%B: Warning: cannot determine the target function for stub section `%s'"
 msgstr ""
 
-#: elfxx-mips.c:8374
+#: elfxx-mips.c:8378
 #, c-format
 msgid "%B: Malformed reloc detected for section %s"
 msgstr ""
 
-#: elfxx-mips.c:8450
+#: elfxx-mips.c:8454
 #, c-format
 msgid "%B: GOT reloc at 0x%lx not expected in executables"
 msgstr ""
 
-#: elfxx-mips.c:8588
+#: elfxx-mips.c:8592
 #, c-format
 msgid "%B: CALL16 reloc at 0x%lx not against global symbol"
 msgstr ""
 
-#: elfxx-mips.c:9369
+#: elfxx-mips.c:9213
 #, c-format
 msgid "non-dynamic relocations refer to dynamic symbol %s"
 msgstr ""
 
-#: elfxx-mips.c:10280
+#: elfxx-mips.c:10135
 #, c-format
 msgid ""
 "%B: Can't find matching LO16 reloc against `%s' for %s at 0x%lx in section `"
 "%A'"
 msgstr ""
 
-#: elfxx-mips.c:10419
+#: elfxx-mips.c:10274
 msgid ""
 "small-data section exceeds 64KB; lower small-data size limit (see option -G)"
 msgstr ""
 
-#: elfxx-mips.c:10438
+#: elfxx-mips.c:10293
 msgid "Cannot convert a jump to JALX for a non-word-aligned address"
 msgstr ""
 
-#: elfxx-mips.c:10441
+#: elfxx-mips.c:10296
 msgid "Jump to a non-word-aligned address"
 msgstr ""
 
-#: elfxx-mips.c:10442
+#: elfxx-mips.c:10297
 msgid "Jump to a non-instruction-aligned address"
 msgstr ""
 
-#: elfxx-mips.c:10445
+#: elfxx-mips.c:10300
 msgid "Cannot convert a branch to JALX for a non-word-aligned address"
 msgstr ""
 
-#: elfxx-mips.c:10447
+#: elfxx-mips.c:10302
 msgid "Branch to a non-instruction-aligned address"
 msgstr ""
 
-#: elfxx-mips.c:10449
+#: elfxx-mips.c:10304
 msgid "PC-relative load from unaligned address"
 msgstr ""
 
-#: elfxx-mips.c:10823 elfxx-mips.c:11387
+#: elfxx-mips.c:10678 elfxx-mips.c:11246
 #, c-format
 msgid "%B: `%A' offset of %ld from `%A' beyond the range of ADDIUPC"
 msgstr ""
 
-#: elfxx-mips.c:14295
+#: elfxx-mips.c:14157
 #, c-format
 msgid "%B: Unknown architecture %s"
 msgstr ""
 
-#: elfxx-mips.c:14825
+#: elfxx-mips.c:14687
 #, c-format
 msgid "%s: illegal section name `%s'"
 msgstr ""
 
-#: elfxx-mips.c:15103
+#: elfxx-mips.c:14965
 msgid "%B: warning: linking abicalls files with non-abicalls files"
 msgstr ""
 
-#: elfxx-mips.c:15120
+#: elfxx-mips.c:14982
 msgid "%B: linking 32-bit code with 64-bit code"
 msgstr ""
 
-#: elfxx-mips.c:15152 elfxx-mips.c:15218 elfxx-mips.c:15233
+#: elfxx-mips.c:15014 elfxx-mips.c:15080 elfxx-mips.c:15095
 #, c-format
 msgid "%B: linking %s module with previous %s modules"
 msgstr ""
 
-#: elfxx-mips.c:15176
+#: elfxx-mips.c:15038
 #, c-format
 msgid "%B: ABI mismatch: linking %s module with previous %s modules"
 msgstr ""
 
-#: elfxx-mips.c:15201
+#: elfxx-mips.c:15063
 #, c-format
 msgid "%B: ASE mismatch: linking %s module with previous %s modules"
 msgstr ""
 
-#: elfxx-mips.c:15336
+#: elfxx-mips.c:15198
 msgid ""
 "Warning: %B uses unknown floating point ABI %d (set by %B), %B uses unknown "
 "floating point ABI %d"
 msgstr ""
 
-#: elfxx-mips.c:15342
+#: elfxx-mips.c:15204
 #, c-format
 msgid "Warning: %B uses unknown floating point ABI %d (set by %B), %B uses %s"
 msgstr ""
 
-#: elfxx-mips.c:15348
+#: elfxx-mips.c:15210
 #, c-format
 msgid "Warning: %B uses %s (set by %B), %B uses unknown floating point ABI %d"
 msgstr ""
 
-#: elfxx-mips.c:15362
+#: elfxx-mips.c:15224
 #, c-format
 msgid "Warning: %B uses %s (set by %B), %B uses %s"
 msgstr ""
 
-#: elfxx-mips.c:15381
+#: elfxx-mips.c:15243
 #, c-format
 msgid "Warning: %B uses %s (set by %B), %B uses unknown MSA ABI %d"
 msgstr ""
 
-#: elfxx-mips.c:15393
+#: elfxx-mips.c:15255
 #, c-format
 msgid "Warning: %B uses unknown MSA ABI %d (set by %B), %B uses %s"
 msgstr ""
 
-#: elfxx-mips.c:15402
+#: elfxx-mips.c:15264
 #, c-format
 msgid ""
 "Warning: %B uses unknown MSA ABI %d (set by %B), %B uses unknown MSA ABI %d"
 msgstr ""
 
-#: elfxx-mips.c:15465
+#: elfxx-mips.c:15327
 msgid "%B: endianness incompatible with that of the selected emulation"
 msgstr ""
 
-#: elfxx-mips.c:15479
+#: elfxx-mips.c:15341
 msgid "%B: ABI is incompatible with that of the selected emulation"
 msgstr ""
 
-#: elfxx-mips.c:15531
+#: elfxx-mips.c:15393
 msgid "%B: warning: Inconsistent ISA between e_flags and .MIPS.abiflags"
 msgstr ""
 
-#: elfxx-mips.c:15536
+#: elfxx-mips.c:15398
 msgid ""
 "%B: warning: Inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags"
 msgstr ""
 
-#: elfxx-mips.c:15540
+#: elfxx-mips.c:15402
 msgid "%B: warning: Inconsistent ASEs between e_flags and .MIPS.abiflags"
 msgstr ""
 
-#: elfxx-mips.c:15547
+#: elfxx-mips.c:15409
 msgid ""
 "%B: warning: Inconsistent ISA extensions between e_flags and .MIPS.abiflags"
 msgstr ""
 
-#: elfxx-mips.c:15551
+#: elfxx-mips.c:15413
 msgid ""
 "%B: warning: Unexpected flag in the flags2 field of .MIPS.abiflags (0x%lx)"
 msgstr ""
 
-#: elfxx-mips.c:15740
+#: elfxx-mips.c:15602
 msgid "-mips32r2 -mfp64 (12 callee-saved)"
 msgstr ""
 
-#: elfxx-mips.c:15788 elfxx-mips.c:15799
+#: elfxx-mips.c:15650 elfxx-mips.c:15661
 msgid "None"
 msgstr ""
 
-#: elfxx-mips.c:15790 elfxx-mips.c:15859
+#: elfxx-mips.c:15652 elfxx-mips.c:15721
 msgid "Unknown"
 msgstr ""
 
-#: elfxx-mips.c:15870
+#: elfxx-mips.c:15732
 #, c-format
 msgid "Hard or soft float\n"
 msgstr ""
 
-#: elfxx-mips.c:15873
+#: elfxx-mips.c:15735
 #, c-format
 msgid "Hard float (double precision)\n"
 msgstr ""
 
-#: elfxx-mips.c:15876
+#: elfxx-mips.c:15738
 #, c-format
 msgid "Hard float (single precision)\n"
 msgstr ""
 
-#: elfxx-mips.c:15879
+#: elfxx-mips.c:15741
 #, c-format
 msgid "Soft float\n"
 msgstr ""
 
-#: elfxx-mips.c:15882
+#: elfxx-mips.c:15744
 #, c-format
 msgid "Hard float (MIPS32r2 64-bit FPU 12 callee-saved)\n"
 msgstr ""
 
-#: elfxx-mips.c:15885
+#: elfxx-mips.c:15747
 #, c-format
 msgid "Hard float (32-bit CPU, Any FPU)\n"
 msgstr ""
 
-#: elfxx-mips.c:15888
+#: elfxx-mips.c:15750
 #, c-format
 msgid "Hard float (32-bit CPU, 64-bit FPU)\n"
 msgstr ""
 
-#: elfxx-mips.c:15891
+#: elfxx-mips.c:15753
 #, c-format
 msgid "Hard float compat (32-bit CPU, 64-bit FPU)\n"
 msgstr ""
 
-#: elfxx-mips.c:15923
+#: elfxx-mips.c:15785
 #, c-format
 msgid " [abi=O32]"
 msgstr ""
 
-#: elfxx-mips.c:15925
+#: elfxx-mips.c:15787
 #, c-format
 msgid " [abi=O64]"
 msgstr ""
 
-#: elfxx-mips.c:15927
+#: elfxx-mips.c:15789
 #, c-format
 msgid " [abi=EABI32]"
 msgstr ""
 
-#: elfxx-mips.c:15929
+#: elfxx-mips.c:15791
 #, c-format
 msgid " [abi=EABI64]"
 msgstr ""
 
-#: elfxx-mips.c:15931
+#: elfxx-mips.c:15793
 #, c-format
 msgid " [abi unknown]"
 msgstr ""
 
-#: elfxx-mips.c:15933
+#: elfxx-mips.c:15795
 #, c-format
 msgid " [abi=N32]"
 msgstr ""
 
-#: elfxx-mips.c:15935
+#: elfxx-mips.c:15797
 #, c-format
 msgid " [abi=64]"
 msgstr ""
 
-#: elfxx-mips.c:15937
+#: elfxx-mips.c:15799
 #, c-format
 msgid " [no abi set]"
 msgstr ""
 
-#: elfxx-mips.c:15962
+#: elfxx-mips.c:15824
 #, c-format
 msgid " [unknown ISA]"
 msgstr ""
 
-#: elfxx-mips.c:15982
+#: elfxx-mips.c:15844
 #, c-format
 msgid " [not 32bitmode]"
 msgstr ""
@@ -5236,13 +5254,12 @@ msgstr ""
 msgid "invalid relocation type %d"
 msgstr ""
 
-#: elfxx-sparc.c:3153
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:4975
+#: elfxx-sparc.c:3185 /work/sources/binutils/current/bfd/elfnn-aarch64.c:4988
 #, c-format
 msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s"
 msgstr ""
 
-#: elfxx-tilegx.c:4442
+#: elfxx-tilegx.c:4436
 #, c-format
 msgid "%B: Cannot link together %s and %s objects."
 msgstr ""
@@ -5354,41 +5371,41 @@ msgstr ""
 msgid "Deprecated %s called\n"
 msgstr ""
 
-#: linker.c:1743
+#: linker.c:1670
 #, c-format
 msgid "%B: indirect symbol `%s' to `%s' is a loop"
 msgstr ""
 
-#: linker.c:2612
+#: linker.c:2539
 #, c-format
 msgid "Attempt to do relocatable link with %s input and %s output"
 msgstr ""
 
-#: linker.c:2898
+#: linker.c:2825
 #, c-format
 msgid "%B: ignoring duplicate section `%A'\n"
 msgstr ""
 
-#: linker.c:2908 linker.c:2918
+#: linker.c:2835 linker.c:2845
 #, c-format
 msgid "%B: duplicate section `%A' has different size\n"
 msgstr ""
 
-#: linker.c:2927 linker.c:2933
+#: linker.c:2854 linker.c:2860
 #, c-format
 msgid "%B: could not read contents of section `%A'\n"
 msgstr ""
 
-#: linker.c:2938
+#: linker.c:2865
 #, c-format
 msgid "%B: duplicate section `%A' has different contents\n"
 msgstr ""
 
-#: linker.c:3389
+#: linker.c:3316
 msgid "%B: compiled for a big endian system and target is little endian"
 msgstr ""
 
-#: linker.c:3392
+#: linker.c:3319
 msgid "%B: compiled for a little endian system and target is big endian"
 msgstr ""
 
@@ -5824,21 +5841,21 @@ msgstr ""
 msgid "Partition[%d] length = 0x%.8lx (%ld)\n"
 msgstr ""
 
-#: reloc.c:7978
+#: reloc.c:8028
 msgid "INPUT_SECTION_FLAGS are not supported.\n"
 msgstr ""
 
-#: reloc.c:8076
+#: reloc.c:8126
 #, c-format
 msgid "%X%P: %B(%A): error: relocation for offset %V has no value\n"
 msgstr ""
 
-#: reloc.c:8152
+#: reloc.c:8202
 #, c-format
 msgid "%X%P: %B(%A): relocation \"%R\" is not supported\n"
 msgstr ""
 
-#: reloc.c:8161
+#: reloc.c:8211
 #, c-format
 msgid "%X%P: %B(%A): relocation \"%R\" returns an unrecognized value %x\n"
 msgstr ""
@@ -7922,57 +7939,57 @@ msgstr ""
 msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling"
 msgstr ""
 
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:1887
+#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:1890
 #, c-format
 msgid "Invalid AArch64 reloc number: %d"
 msgstr ""
 
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:2865
+#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:2880
 #, c-format
 msgid "cannot create stub entry %s"
 msgstr ""
 
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:4764
+#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:4777
 msgid "%B: error: Erratum 835769 stub out of range (input file too large)"
 msgstr ""
 
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:4845
+#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:4858
 msgid "%B: error: Erratum 843419 stub out of range (input file too large)"
 msgstr ""
 
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:5313
+#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:5326
 #, c-format
 msgid ""
 "%B: relocation %s against external symbol `%s' can not be used when making a "
 "shared object; recompile with -fPIC"
 msgstr ""
 
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:5381
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:5450
+#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:5394
+#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:5463
 #, c-format
 msgid ""
 "%B: Local symbol descriptor table be NULL when applying relocation %s "
 "against local symbol"
 msgstr ""
 
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:6445
+#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:6488
 msgid "Too many GOT entries for -fpic, please recompile with -fPIC"
 msgstr ""
 
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-aarch64.c:6473
+#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:6516
 msgid ""
 "One possible cause of this error is that the symbol is being referenced in "
 "the indicated code as if it had a larger alignment than was declared where "
 "it was defined."
 msgstr ""
 
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-riscv.c:2584
+#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2600
 msgid ""
 "%B: ABI is incompatible with that of the selected emulation:\n"
 "  target emulation `%s' does not match `%s'"
 msgstr ""
 
-#: /Users/gingold/Repositories/fsf/binutils-gdb.git/bfd/elfnn-riscv.c:2604
+#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2620
 msgid "%B: can't link hard-float modules with soft-float modules"
 msgstr ""
 
index 74559ac..5841e8d 100644 (file)
@@ -893,6 +893,7 @@ extern const bfd_target vax_aout_nbsd_vec;
 extern const bfd_target vax_elf32_vec;
 extern const bfd_target visium_elf32_vec;
 extern const bfd_target w65_coff_vec;
+extern const bfd_target wasm_vec;
 extern const bfd_target wasm32_elf32_vec;
 extern const bfd_target we32k_coff_vec;
 extern const bfd_target x86_64_coff_vec;
@@ -1422,6 +1423,7 @@ static const bfd_target * const _bfd_target_vector[] =
 
        &w65_coff_vec,
 
+        &wasm_vec,
         &wasm32_elf32_vec,
 
        &we32k_coff_vec,
diff --git a/bfd/wasm-module.c b/bfd/wasm-module.c
new file mode 100644 (file)
index 0000000..e2af184
--- /dev/null
@@ -0,0 +1,839 @@
+/* BFD back-end for WebAssembly modules.
+   Copyright (C) 2017 Free Software Foundation, Inc.
+
+   Based on srec.c, mmo.c, and binary.c
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   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 3 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., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
+
+/* The WebAssembly module format is a simple object file format
+   including up to 11 numbered sections, plus any number of named
+   "custom" sections. It is described at:
+   https://github.com/WebAssembly/design/blob/master/BinaryEncoding.md. */
+
+#include "sysdep.h"
+#include "alloca-conf.h"
+#include "bfd.h"
+#include "sysdep.h"
+#include <limits.h>
+#include "bfd_stdint.h"
+#include "libiberty.h"
+#include "libbfd.h"
+#include "wasm-module.h"
+
+typedef struct
+{
+  asymbol *      symbols;
+  bfd_size_type  symcount;
+} tdata_type;
+
+static const char * const wasm_numbered_sections[] =
+{
+  NULL, /* Custom section, different layout.  */
+  WASM_SECTION ( 1, "type"),
+  WASM_SECTION ( 2, "import"),
+  WASM_SECTION ( 3, "function"),
+  WASM_SECTION ( 4, "table"),
+  WASM_SECTION ( 5, "memory"),
+  WASM_SECTION ( 6, "global"),
+  WASM_SECTION ( 7, "export"),
+  WASM_SECTION ( 8, "start"),
+  WASM_SECTION ( 9, "element"),
+  WASM_SECTION (10, "code"),
+  WASM_SECTION (11, "data"),
+};
+
+#define WASM_NUMBERED_SECTIONS ARRAY_SIZE (wasm_numbered_sections)
+
+/* Resolve SECTION_CODE to a section name if there is one, NULL
+   otherwise.  */
+
+static const char *
+wasm_section_code_to_name (bfd_byte section_code)
+{
+  if (section_code < WASM_NUMBERED_SECTIONS)
+    return wasm_numbered_sections[section_code];
+
+  return NULL;
+}
+
+/* Translate section name NAME to a section code, or 0 if it's a
+   custom name.  */
+
+static unsigned int
+wasm_section_name_to_code (const char *name)
+{
+  unsigned i;
+
+  for (i = 1; i < WASM_NUMBERED_SECTIONS; i++)
+    if (strcmp (name, wasm_numbered_sections[i]) == 0)
+      return i;
+
+  return 0;
+}
+
+/* WebAssembly LEB128 integers are sufficiently like DWARF LEB128
+   integers that we use _bfd_safe_read_leb128, but there are two
+   points of difference:
+
+   - WebAssembly requires a 32-bit value to be encoded in at most 5
+     bytes, etc.
+   - _bfd_safe_read_leb128 accepts incomplete LEB128 encodings at the
+     end of the buffer, while these are invalid in WebAssembly.
+
+   Those differences mean that we will accept some files that are
+   invalid WebAssembly.  */
+
+/* Read an LEB128-encoded integer from ABFD's I/O stream, reading one
+   byte at a time.  Set ERROR_RETURN if no complete integer could be
+   read, LENGTH_RETURN to the number of bytes read (including bytes in
+   incomplete numbers).  SIGN means interpret the number as SLEB128. */
+
+static bfd_vma
+wasm_read_leb128 (bfd *           abfd,
+                  bfd_boolean *   error_return,
+                  unsigned int *  length_return,
+                  bfd_boolean     sign)
+{
+  bfd_vma result = 0;
+  unsigned int num_read = 0;
+  unsigned int shift = 0;
+  unsigned char byte = 0;
+  bfd_boolean success = FALSE;
+
+  while (bfd_bread (&byte, 1, abfd) == 1)
+    {
+      num_read++;
+
+      result |= ((bfd_vma) (byte & 0x7f)) << shift;
+
+      shift += 7;
+      if ((byte & 0x80) == 0)
+        {
+          success = TRUE;
+          break;
+        }
+    }
+
+  if (length_return != NULL)
+    *length_return = num_read;
+  if (error_return != NULL)
+    *error_return = ! success;
+
+  if (sign && (shift < 8 * sizeof (result)) && (byte & 0x40))
+    result |= -((bfd_vma) 1 << shift);
+
+  return result;
+}
+
+/* Encode an integer V as LEB128 and write it to ABFD, return TRUE on
+   success.  */
+
+static bfd_boolean
+wasm_write_uleb128 (bfd *abfd, bfd_vma v)
+{
+  do
+    {
+      bfd_byte c = v & 0x7f;
+      v >>= 7;
+
+      if (v)
+        c |= 0x80;
+
+      if (bfd_bwrite (&c, 1, abfd) != 1)
+        return FALSE;
+    }
+  while (v);
+
+  return TRUE;
+}
+
+/* Read the LEB128 integer at P, saving it to X; at end of buffer,
+   jump to error_return.  */
+#define READ_LEB128(x, p, end)                                          \
+  do                                                                    \
+    {                                                                   \
+      unsigned int length_read;                                         \
+      (x) = _bfd_safe_read_leb128 (abfd, (p), &length_read,             \
+                                   FALSE, (end));                       \
+      (p) += length_read;                                               \
+      if (length_read == 0)                                             \
+        goto error_return;                                              \
+    }                                                                   \
+  while (0)
+
+/* Verify the magic number at the beginning of a WebAssembly module
+   ABFD, setting ERRORPTR if there's a mismatch.  */
+
+static bfd_boolean
+wasm_read_magic (bfd *abfd, bfd_boolean *errorptr)
+{
+  bfd_byte magic_const[SIZEOF_WASM_MAGIC] = WASM_MAGIC;
+  bfd_byte magic[SIZEOF_WASM_MAGIC];
+
+  if (bfd_bread (magic, sizeof (magic), abfd) == sizeof (magic)
+      && memcmp (magic, magic_const, sizeof (magic)) == 0)
+    return TRUE;
+
+  *errorptr = TRUE;
+  return FALSE;
+}
+
+/* Read the version number from ABFD, returning TRUE if it's a supported
+   version. Set ERRORPTR otherwise.  */
+
+static bfd_boolean
+wasm_read_version (bfd *abfd, bfd_boolean *errorptr)
+{
+  bfd_byte vers_const[SIZEOF_WASM_VERSION] = WASM_VERSION;
+  bfd_byte vers[SIZEOF_WASM_VERSION];
+
+  if (bfd_bread (vers, sizeof (vers), abfd) == sizeof (vers)
+      /* Don't attempt to parse newer versions, which are likely to
+        require code changes.  */
+      && memcmp (vers, vers_const, sizeof (vers)) == 0)
+    return TRUE;
+
+  *errorptr = TRUE;
+  return FALSE;
+}
+
+/* Read the WebAssembly header (magic number plus version number) from
+   ABFD, setting ERRORPTR to TRUE if there is a mismatch.  */
+
+static bfd_boolean
+wasm_read_header (bfd *abfd, bfd_boolean *errorptr)
+{
+  if (! wasm_read_magic (abfd, errorptr))
+    return FALSE;
+
+  if (! wasm_read_version (abfd, errorptr))
+    return FALSE;
+
+  return TRUE;
+}
+
+/* Scan the "function" subsection of the "name" section ASECT in the
+   wasm module ABFD. Create symbols. Return TRUE on success.  */
+
+static bfd_boolean
+wasm_scan_name_function_section (bfd *abfd, sec_ptr asect)
+{
+  bfd_byte *p;
+  bfd_byte *end;
+  bfd_vma payload_size;
+  bfd_vma symcount = 0;
+  tdata_type *tdata = abfd->tdata.any;
+  asymbol *symbols = NULL;
+  sec_ptr space_function_index;
+
+  if (! asect)
+    return FALSE;
+
+  if (strcmp (asect->name, WASM_NAME_SECTION) != 0)
+    return FALSE;
+
+  p = asect->contents;
+  end = asect->contents + asect->size;
+
+  if (! p)
+    return FALSE;
+
+  while (p < end)
+    {
+      bfd_byte subsection_code = *p++;
+      if (subsection_code == WASM_FUNCTION_SUBSECTION)
+        break;
+
+      /* subsection_code is documented to be a varuint7, meaning that
+         it has to be a single byte in the 0 - 127 range.  If it isn't,
+         the spec must have changed underneath us, so give up.  */
+      if (subsection_code & 0x80)
+        return FALSE;
+
+      READ_LEB128 (payload_size, p, end);
+
+      if (p > p + payload_size)
+        return FALSE;
+
+      p += payload_size;
+    }
+
+  if (p >= end)
+    return FALSE;
+
+  READ_LEB128 (payload_size, p, end);
+
+  if (p > p + payload_size)
+    return FALSE;
+
+  if (p + payload_size > end)
+    return FALSE;
+
+  end = p + payload_size;
+
+  READ_LEB128 (symcount, p, end);
+
+  /* Sanity check: each symbol has at least two bytes.  */
+  if (symcount > payload_size/2)
+    return FALSE;
+
+  tdata->symcount = symcount;
+
+  space_function_index = bfd_make_section_with_flags
+    (abfd, WASM_SECTION_FUNCTION_INDEX, SEC_READONLY | SEC_CODE);
+
+  if (! space_function_index)
+    space_function_index = bfd_get_section_by_name (abfd, WASM_SECTION_FUNCTION_INDEX);
+
+  if (! space_function_index)
+    return FALSE;
+
+  symbols = bfd_zalloc (abfd, tdata->symcount * sizeof (asymbol));
+  if (! symbols)
+    return FALSE;
+
+  for (symcount = 0; p < end && symcount < tdata->symcount; symcount++)
+    {
+      bfd_vma index;
+      bfd_vma len;
+      char *name;
+      asymbol *sym;
+
+      READ_LEB128 (index, p, end);
+      READ_LEB128 (len, p, end);
+
+      if (p + len < p || p + len > end)
+        goto error_return;
+
+      name = bfd_zalloc (abfd, len + 1);
+      if (! name)
+        goto error_return;
+
+      memcpy (name, p, len);
+      p += len;
+
+      sym = &symbols[symcount];
+      sym->the_bfd = abfd;
+      sym->name = name;
+      sym->value = index;
+      sym->flags = BSF_GLOBAL | BSF_FUNCTION;
+      sym->section = space_function_index;
+      sym->udata.p = NULL;
+    }
+
+  if (symcount < tdata->symcount)
+    goto error_return;
+
+  tdata->symbols = symbols;
+  abfd->symcount = symcount;
+
+  return TRUE;
+
+ error_return:
+  while (symcount)
+    bfd_release (abfd, (void *)symbols[--symcount].name);
+  bfd_release (abfd, symbols);
+  return FALSE;
+}
+
+/* Read a byte from ABFD and return it, or EOF for EOF or error.
+   Set ERRORPTR on non-EOF error.  */
+
+static int
+wasm_read_byte (bfd *abfd, bfd_boolean *errorptr)
+{
+  bfd_byte byte;
+
+  if (bfd_bread (&byte, (bfd_size_type) 1, abfd) != 1)
+    {
+      if (bfd_get_error () != bfd_error_file_truncated)
+        *errorptr = TRUE;
+      return EOF;
+    }
+
+  return byte;
+}
+
+/* Scan the wasm module ABFD, creating sections and symbols.
+   Return TRUE on success.  */
+
+static bfd_boolean
+wasm_scan (bfd *abfd)
+{
+  bfd_boolean error = FALSE;
+  /* Fake VMAs for now. Choose 0x80000000 as base to avoid clashes
+     with actual data addresses.  */
+  bfd_vma vma = 0x80000000;
+  int section_code;
+  unsigned int bytes_read;
+  char *name = NULL;
+  asection *bfdsec;
+
+  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
+    goto error_return;
+
+  if (! wasm_read_header (abfd, &error))
+    goto error_return;
+
+  while ((section_code = wasm_read_byte (abfd, &error)) != EOF)
+    {
+      if (section_code != 0)
+        {
+          const char *sname = wasm_section_code_to_name (section_code);
+
+          if (! sname)
+            goto error_return;
+
+          name = strdup (sname);
+          bfdsec = bfd_make_section_anyway_with_flags (abfd, name, SEC_HAS_CONTENTS);
+          if (bfdsec == NULL)
+            goto error_return;
+          name = NULL;
+
+          bfdsec->vma = vma;
+          bfdsec->lma = vma;
+          bfdsec->size = wasm_read_leb128 (abfd, &error, &bytes_read, FALSE);
+          if (error)
+            goto error_return;
+          bfdsec->filepos = bfd_tell (abfd);
+          bfdsec->alignment_power = 0;
+        }
+      else
+        {
+          bfd_vma payload_len;
+          file_ptr section_start;
+          bfd_vma namelen;
+          char *prefix = WASM_SECTION_PREFIX;
+          char *p;
+          int ret;
+
+          payload_len = wasm_read_leb128 (abfd, &error, &bytes_read, FALSE);
+          if (error)
+            goto error_return;
+          section_start = bfd_tell (abfd);
+          namelen = wasm_read_leb128 (abfd, &error, &bytes_read, FALSE);
+          if (error || namelen > payload_len)
+            goto error_return;
+          name = bfd_zmalloc (namelen + strlen (prefix) + 1);
+          if (! name)
+            goto error_return;
+          p = name;
+          ret = sprintf (p, "%s", prefix);
+          if (ret < 0 || (bfd_vma) ret != strlen (prefix))
+            goto error_return;
+          p += ret;
+          if (bfd_bread (p, namelen, abfd) != namelen)
+           goto error_return;
+
+          bfdsec = bfd_make_section_anyway_with_flags (abfd, name, SEC_HAS_CONTENTS);
+          if (bfdsec == NULL)
+            goto error_return;
+          name = NULL;
+
+          bfdsec->vma = vma;
+          bfdsec->lma = vma;
+          bfdsec->filepos = bfd_tell (abfd);
+          bfdsec->size = section_start + payload_len - bfdsec->filepos;
+          bfdsec->alignment_power = 0;
+        }
+
+      if (bfdsec->size != 0)
+        {
+          bfdsec->contents = bfd_zalloc (abfd, bfdsec->size);
+          if (! bfdsec->contents)
+            goto error_return;
+
+          if (bfd_bread (bfdsec->contents, bfdsec->size, abfd) != bfdsec->size)
+           goto error_return;
+        }
+
+      vma += bfdsec->size;
+    }
+
+  /* Make sure we're at actual EOF.  There's no indication in the
+     WebAssembly format of how long the file is supposed to be.  */
+  if (error)
+    goto error_return;
+
+  return TRUE;
+
+ error_return:
+  if (name)
+    free (name);
+
+  for (bfdsec = abfd->sections; bfdsec; bfdsec = bfdsec->next)
+    free ((void *) bfdsec->name);
+
+  return FALSE;
+}
+
+/* Put a numbered section ASECT of ABFD into the table of numbered
+   sections pointed to by FSARG.  */
+
+static void
+wasm_register_section (bfd *abfd ATTRIBUTE_UNUSED,
+                       asection *asect,
+                      void *fsarg)
+{
+  sec_ptr *numbered_sections = fsarg;
+  int index = wasm_section_name_to_code (asect->name);
+
+  if (index == 0)
+    return;
+
+  numbered_sections[index] = asect;
+}
+
+struct compute_section_arg
+{
+  bfd_vma pos;
+  bfd_boolean failed;
+};
+
+/* Compute the file position of ABFD's section ASECT.  FSARG is a
+   pointer to the current file position.
+
+   We allow section names of the form .wasm.id to encode the numbered
+   section with ID id, if it exists; otherwise, a custom section with
+   ID "id" is produced.  Arbitrary section names are for sections that
+   are assumed already to contain a section header; those are appended
+   to the WebAssembly module verbatim.  */
+
+static void
+wasm_compute_custom_section_file_position (bfd *abfd,
+                                          sec_ptr asect,
+                                           void *fsarg)
+{
+  struct compute_section_arg *fs = fsarg;
+  int index;
+
+  if (fs->failed)
+    return;
+
+  index = wasm_section_name_to_code (asect->name);
+
+  if (index != 0)
+    return;
+
+  if (CONST_STRNEQ (asect->name, WASM_SECTION_PREFIX))
+    {
+      const char *name = asect->name + strlen (WASM_SECTION_PREFIX);
+      bfd_size_type payload_len = asect->size;
+      bfd_size_type name_len = strlen (name);
+      bfd_size_type nl = name_len;
+
+      payload_len += name_len;
+
+      do
+        {
+          payload_len++;
+          nl >>= 7;
+        }
+      while (nl);
+
+      bfd_seek (abfd, fs->pos, SEEK_SET);
+      if (! wasm_write_uleb128 (abfd, 0)
+          || ! wasm_write_uleb128 (abfd, payload_len)
+          || ! wasm_write_uleb128 (abfd, name_len)
+          || bfd_bwrite (name, name_len, abfd) != name_len)
+        goto error_return;
+      fs->pos = asect->filepos = bfd_tell (abfd);
+    }
+  else
+    {
+      asect->filepos = fs->pos;
+    }
+
+
+  fs->pos += asect->size;
+  return;
+
+ error_return:
+  fs->failed = TRUE;
+}
+
+/* Compute the file positions for the sections of ABFD.  Currently,
+   this writes all numbered sections first, in order, then all custom
+   sections, in section order.
+
+   The spec says that the numbered sections must appear in order of
+   their ids, but custom sections can appear in any position and any
+   order, and more than once. FIXME: support that.  */
+
+static bfd_boolean
+wasm_compute_section_file_positions (bfd *abfd)
+{
+  bfd_byte magic[SIZEOF_WASM_MAGIC] = WASM_MAGIC;
+  bfd_byte vers[SIZEOF_WASM_VERSION] = WASM_VERSION;
+  sec_ptr numbered_sections[WASM_NUMBERED_SECTIONS];
+  struct compute_section_arg fs;
+  unsigned int i;
+
+  bfd_seek (abfd, (bfd_vma) 0, SEEK_SET);
+
+  if (bfd_bwrite (magic, sizeof (magic), abfd) != (sizeof magic)
+      || bfd_bwrite (vers, sizeof (vers), abfd) != sizeof (vers))
+    return FALSE;
+
+  for (i = 0; i < WASM_NUMBERED_SECTIONS; i++)
+    numbered_sections[i] = NULL;
+
+  bfd_map_over_sections (abfd, wasm_register_section, numbered_sections);
+
+  fs.pos = bfd_tell (abfd);
+  for (i = 0; i < WASM_NUMBERED_SECTIONS; i++)
+    {
+      sec_ptr sec = numbered_sections[i];
+      bfd_size_type size;
+
+      if (! sec)
+        continue;
+      size = sec->size;
+      if (bfd_seek (abfd, fs.pos, SEEK_SET) != 0)
+        return FALSE;
+      if (! wasm_write_uleb128 (abfd, i)
+          || ! wasm_write_uleb128 (abfd, size))
+        return FALSE;
+      fs.pos = sec->filepos = bfd_tell (abfd);
+      fs.pos += size;
+    }
+
+  fs.failed = FALSE;
+
+  bfd_map_over_sections (abfd, wasm_compute_custom_section_file_position, &fs);
+
+  if (fs.failed)
+    return FALSE;
+
+  abfd->output_has_begun = TRUE;
+
+  return TRUE;
+}
+
+static bfd_boolean
+wasm_set_section_contents (bfd *abfd,
+                           sec_ptr section,
+                           const void *location,
+                           file_ptr offset,
+                           bfd_size_type count)
+{
+  if (count == 0)
+    return TRUE;
+
+  if (! abfd->output_has_begun
+      && ! wasm_compute_section_file_positions (abfd))
+    return FALSE;
+
+  if (bfd_seek (abfd, section->filepos + offset, SEEK_SET) != 0
+      || bfd_bwrite (location, count, abfd) != count)
+    return FALSE;
+
+  return TRUE;
+}
+
+static bfd_boolean
+wasm_write_object_contents (bfd* abfd)
+{
+  bfd_byte magic[] = WASM_MAGIC;
+  bfd_byte vers[] = WASM_VERSION;
+
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0)
+    return FALSE;
+
+  if (bfd_bwrite (magic, sizeof (magic), abfd) != sizeof (magic)
+      || bfd_bwrite (vers, sizeof (vers), abfd) != sizeof (vers))
+    return FALSE;
+
+  return TRUE;
+}
+
+static bfd_boolean
+wasm_mkobject (bfd *abfd)
+{
+  tdata_type *tdata = (tdata_type *) bfd_alloc (abfd, sizeof (tdata_type));
+
+  if (! tdata)
+    return FALSE;
+
+  tdata->symbols = NULL;
+  tdata->symcount = 0;
+
+  abfd->tdata.any = tdata;
+
+  return TRUE;
+}
+
+static long
+wasm_get_symtab_upper_bound (bfd *abfd)
+{
+  tdata_type *tdata = abfd->tdata.any;
+
+  return (tdata->symcount + 1) * (sizeof (asymbol *));
+}
+
+static long
+wasm_canonicalize_symtab (bfd *abfd, asymbol **alocation)
+{
+  tdata_type *tdata = abfd->tdata.any;
+  size_t i;
+
+  for (i = 0; i < tdata->symcount; i++)
+    alocation[i] = &tdata->symbols[i];
+  alocation[i] = NULL;
+
+  return tdata->symcount;
+}
+
+static asymbol *
+wasm_make_empty_symbol (bfd *abfd)
+{
+  bfd_size_type amt = sizeof (asymbol);
+  asymbol *new_symbol = (asymbol *) bfd_zalloc (abfd, amt);
+
+  if (! new_symbol)
+    return NULL;
+  new_symbol->the_bfd = abfd;
+  return new_symbol;
+}
+
+static void
+wasm_print_symbol (bfd *abfd,
+                   void * filep,
+                   asymbol *symbol,
+                   bfd_print_symbol_type how)
+{
+  FILE *file = (FILE *) filep;
+
+  switch (how)
+    {
+    case bfd_print_symbol_name:
+      fprintf (file, "%s", symbol->name);
+      break;
+
+    default:
+      bfd_print_symbol_vandf (abfd, filep, symbol);
+      fprintf (file, " %-5s %s", symbol->section->name, symbol->name);
+    }
+}
+
+static void
+wasm_get_symbol_info (bfd *abfd ATTRIBUTE_UNUSED,
+                      asymbol *symbol,
+                      symbol_info *ret)
+{
+  bfd_symbol_info (symbol, ret);
+}
+
+/* Check whether ABFD is a WebAssembly module; if so, scan it.  */
+
+static const bfd_target *
+wasm_object_p (bfd *abfd)
+{
+  bfd_boolean error;
+
+  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
+    return NULL;
+
+  if (! wasm_read_header (abfd, &error))
+    {
+      bfd_set_error (bfd_error_wrong_format);
+      return NULL;
+    }
+
+  if (! wasm_mkobject (abfd) || ! wasm_scan (abfd))
+    return NULL;
+
+  if (! bfd_default_set_arch_mach (abfd, bfd_arch_wasm32, 0))
+    return NULL;
+
+  if (wasm_scan_name_function_section (abfd, bfd_get_section_by_name (abfd, WASM_NAME_SECTION)))
+    abfd->flags |= HAS_SYMS;
+
+  return abfd->xvec;
+}
+
+/* BFD_JUMP_TABLE_WRITE */
+#define wasm_set_arch_mach                _bfd_generic_set_arch_mach
+
+/* BFD_JUMP_TABLE_SYMBOLS */
+#define wasm_get_symbol_version_string    _bfd_nosymbols_get_symbol_version_string
+#define wasm_bfd_is_local_label_name       bfd_generic_is_local_label_name
+#define wasm_bfd_is_target_special_symbol ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false)
+#define wasm_get_lineno                   _bfd_nosymbols_get_lineno
+#define wasm_find_nearest_line            _bfd_nosymbols_find_nearest_line
+#define wasm_find_line                    _bfd_nosymbols_find_line
+#define wasm_find_inliner_info            _bfd_nosymbols_find_inliner_info
+#define wasm_bfd_make_debug_symbol        _bfd_nosymbols_bfd_make_debug_symbol
+#define wasm_read_minisymbols             _bfd_generic_read_minisymbols
+#define wasm_minisymbol_to_symbol         _bfd_generic_minisymbol_to_symbol
+
+const bfd_target wasm_vec =
+{
+  "wasm",                      /* Name.  */
+  bfd_target_unknown_flavour,
+  BFD_ENDIAN_LITTLE,
+  BFD_ENDIAN_LITTLE,
+  (HAS_SYMS | WP_TEXT),                /* Object flags.  */
+  (SEC_CODE | SEC_DATA | SEC_HAS_CONTENTS), /* Section flags.  */
+  0,                           /* Leading underscore.  */
+  ' ',                         /* AR_pad_char.  */
+  255,                         /* AR_max_namelen.  */
+  0,                           /* Match priority.  */
+  /* Routines to byte-swap various sized integers from the data sections.  */
+  bfd_getl64, bfd_getl_signed_64, bfd_putl64,
+  bfd_getl32, bfd_getl_signed_32, bfd_putl32,
+  bfd_getl16, bfd_getl_signed_16, bfd_putl16,
+
+  /* Routines to byte-swap various sized integers from the file headers.  */
+  bfd_getl64, bfd_getl_signed_64, bfd_putl64,
+  bfd_getl32, bfd_getl_signed_32, bfd_putl32,
+  bfd_getl16, bfd_getl_signed_16, bfd_putl16,
+
+  {
+    _bfd_dummy_target,
+    wasm_object_p,             /* bfd_check_format.  */
+    _bfd_dummy_target,
+    _bfd_dummy_target,
+  },
+  {
+    bfd_false,
+    wasm_mkobject,
+    _bfd_generic_mkarchive,
+    bfd_false,
+  },
+  {                            /* bfd_write_contents.  */
+    bfd_false,
+    wasm_write_object_contents,
+    _bfd_write_archive_contents,
+    bfd_false,
+  },
+
+  BFD_JUMP_TABLE_GENERIC (_bfd_generic),
+  BFD_JUMP_TABLE_COPY (_bfd_generic),
+  BFD_JUMP_TABLE_CORE (_bfd_nocore),
+  BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive),
+  BFD_JUMP_TABLE_SYMBOLS (wasm),
+  BFD_JUMP_TABLE_RELOCS (_bfd_norelocs),
+  BFD_JUMP_TABLE_WRITE (wasm),
+  BFD_JUMP_TABLE_LINK (_bfd_nolink),
+  BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
+
+  NULL,
+
+  NULL,
+};
diff --git a/bfd/wasm-module.h b/bfd/wasm-module.h
new file mode 100644 (file)
index 0000000..a6fd557
--- /dev/null
@@ -0,0 +1,52 @@
+/* BFD back-end for WebAssembly modules.
+   Copyright (C) 2017 Free Software Foundation, Inc.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   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 3 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., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
+
+#ifndef _WASM_MODULE_H
+#define _WASM_MODULE_H
+
+/* WebAssembly module file header.  Note that WASM_VERSION is a 32-bit
+   little-endian integer, not an LEB128-encoded integer.  */
+#define SIZEOF_WASM_MAGIC    4
+#define WASM_MAGIC           { 0x00, 'a', 's', 'm' }
+#define SIZEOF_WASM_VERSION  4
+#define WASM_VERSION         { 0x01, 0x00, 0x00, 0x00 }
+
+/* Prefix to use to form section names.  */
+#define WASM_SECTION_PREFIX ".wasm."
+
+/* NUMBER is currently unused, but is included for error checking purposes.  */
+#define WASM_SECTION(number, name) (WASM_SECTION_PREFIX name)
+
+/* Section names.  WASM_NAME_SECTION is the name of the named section
+   named "name".  */
+#define WASM_NAME_SECTION          WASM_SECTION (0, "name")
+#define WASM_RELOC_SECTION_PREFIX  WASM_SECTION (0, "reloc.")
+#define WASM_LINKING_SECTION       WASM_SECTION (0, "linking")
+#define WASM_DYLINK_SECTION        WASM_SECTION (0, "dylink")
+
+/* Subsection indices.  Right now, that's subsections of the "name"
+   section only.  */
+#define WASM_FUNCTION_SUBSECTION 1 /* Function names.  */
+#define WASM_LOCALS_SUBSECTION   2 /* Names of locals by function.  */
+
+/* The section to report wasm symbols in.  */
+#define WASM_SECTION_FUNCTION_INDEX ".space.function_index"
+
+#endif /* _WASM_MODULE_H */