Add support for the WebAssembly file format and the wasm32 ELF conversion to gas...
authorPip Cet <pipcet@gmail.com>
Thu, 30 Mar 2017 09:57:21 +0000 (10:57 +0100)
committerNick Clifton <nickc@redhat.com>
Thu, 30 Mar 2017 09:57:21 +0000 (10:57 +0100)
binutils * readelf.c: Add support for wasm32 ELF format WebAssembly files.
(guess_is_rela): Likewise.
(dump_relocations): Likewise.
(is_32bit_abs_reloc): Likewise.
(is_none_reloc_): Likewise.
* NEWS: Mention the new support.
* testsuite/lib/binutils-common.exp (is_elf_format): Mark wasm32
as ELF target.
(supports_gnu_unique): Mark wasm32 as supporting STB_GNU_UNIQUE.
* testsuite/binutils-all/nm.exp: Mark wasm32 as requiring .size annotations.
* testsuite/binutils-all/wasm32: New directory.
* testsuite/binutils-all/wasm32/create-wasm.d: New file.
* testsuite/binutils-all/wasm32/create-wasm.s: Likewise.
* testsuite/binutils-all/wasm32/custom-section.d: Likewise.
* testsuite/binutils-all/wasm32/custom-section.s: Likewise.
* testsuite/binutils-all/wasm32/invalid-wasm-1.d: Likewise.
* testsuite/binutils-all/wasm32/invalid-wasm-1.s: Likewise.
* testsuite/binutils-all/wasm32/long-sections.d: Likewise.
* testsuite/binutils-all/wasm32/long-sections.s: Likewise.
* testsuite/binutils-all/wasm32/parse-wasm.d: Likewise.
* testsuite/binutils-all/wasm32/parse-wasm.s: Likewise.
* testsuite/binutils-all/wasm32/parse-wasm-2.d: Likewise.
* testsuite/binutils-all/wasm32/parse-wasm-2.s: Likewise.
* testsuite/binutils-all/wasm32/prepared-section.d: Likewise.
* testsuite/binutils-all/wasm32/prepared-section.s: Likewise.
* testsuite/binutils-all/wasm32/wasm32.exp: New file, run tests.

gas * config/tc-wasm32.h: New file: Add WebAssembly assembler target.
* config/tc-wasm32.c: New file: Add WebAssembly assembler target.
* Makefile.am: Add WebAssembly assembler target.
* configure.tgt: Add WebAssembly assembler target.
* doc/c-wasm32.texi: New file: Start documenting WebAssembly
assembler.
* doc/all.texi: Define WASM32.
* doc/as.texinfo: Add WebAssembly entries.
* NEWS: Mention the new support.
* Makefile.in: Regenerate.
* po/gas.pot: Regenerate.
* po/POTFILES.in: Regenerate.
* testsuite/gas/wasm32: New directory.
* testsuite/gas/wasm32/allinsn.d: New file.
* testsuite/gas/wasm32/allinsn.s: New file.
* testsuite/gas/wasm32/illegal.l: New file.
* testsuite/gas/wasm32/illegal.s: New file.
* testsuite/gas/wasm32/illegal-2.l: New file.
* testsuite/gas/wasm32/illegal-2.s: New file.
* testsuite/gas/wasm32/illegal-3.l: New file.
* testsuite/gas/wasm32/illegal-3.s: New file.
* testsuite/gas/wasm32/illegal-4.l: New file.
* testsuite/gas/wasm32/illegal-4.s: New file.
* testsuite/gas/wasm32/illegal-5.l: New file.
* testsuite/gas/wasm32/illegal-5.s: New file.
* testsuite/gas/wasm32/illegal-6.l: New file.
* testsuite/gas/wasm32/illegal-6.s: New file.
* testsuite/gas/wasm32/illegal-7.l: New file.
* testsuite/gas/wasm32/illegal-7.s: New file.
* testsuite/gas/wasm32/illegal-8.l: New file.
* testsuite/gas/wasm32/illegal-8.s: New file.
* testsuite/gas/wasm32/illegal-9.l: New file.
* testsuite/gas/wasm32/illegal-9.s: New file.
* testsuite/gas/wasm32/illegal-10.l: New file.
* testsuite/gas/wasm32/illegal-10.s: New file.
* testsuite/gas/wasm32/illegal-11.l: New file.
* testsuite/gas/wasm32/illegal-11.s: New file.
* testsuite/gas/wasm32/illegal-12.l: New file.
* testsuite/gas/wasm32/illegal-12.s: New file.
* testsuite/gas/wasm32/illegal-13.l: New file.
* testsuite/gas/wasm32/illegal-13.s: New file.
* testsuite/gas/wasm32/illegal-14.l: New file.
* testsuite/gas/wasm32/illegal-14.s: New file.
* testsuite/gas/wasm32/illegal-15.l: New file.
* testsuite/gas/wasm32/illegal-15.s: New file.
* testsuite/gas/wasm32/illegal-16.l: New file.
* testsuite/gas/wasm32/illegal-16.s: New file.
* testsuite/gas/wasm32/illegal-17.l: New file.
* testsuite/gas/wasm32/illegal-17.s: New file.
* testsuite/gas/wasm32/illegal-18.l: New file.
* testsuite/gas/wasm32/illegal-18.s: New file.
* testsuite/gas/wasm32/illegal-19.l: New file.
* testsuite/gas/wasm32/illegal-19.s: New file.
* testsuite/gas/wasm32/illegal-20.l: New file.
* testsuite/gas/wasm32/illegal-20.s: New file.
* testsuite/gas/wasm32/illegal-21.l: New file.
* testsuite/gas/wasm32/illegal-21.s: New file.
* testsuite/gas/wasm32/illegal-22.l: New file.
* testsuite/gas/wasm32/illegal-22.s: New file.
* testsuite/gas/wasm32/illegal-24.l: New file.
* testsuite/gas/wasm32/illegal-24.s: New file.
* testsuite/gas/wasm32/illegal-25.l: New file.
* testsuite/gas/wasm32/illegal-25.s: New file.
* testsuite/gas/wasm32/reloc.d: New file.
* testsuite/gas/wasm32/reloc.s: New file.
* testsuite/gas/wasm32/wasm32.exp: New tests for WebAssembly
architecture.

opcodes * configure.ac: Add (empty) bfd_wasm32_arch target.
* configure: Regenerate
* po/opcodes.pot: Regenerate.

include * opcode/wasm.h: New file to support wasm32 architecture.
* elf/wasm32.h: Add R_WASM32_32 relocation.

bfd * elf32-wasm32.c: Add relocation code, two relocs.
* reloc.c: Add wasm32 relocations.
* libbfd.h: Regenerate.
* bfd-in2.h: Regenerate.
* bfd/po/bfd.pot: Regenerate.

99 files changed:
bfd/ChangeLog
bfd/bfd-in2.h
bfd/elf32-wasm32.c
bfd/libbfd.h
bfd/po/bfd.pot
bfd/reloc.c
binutils/ChangeLog
binutils/NEWS
binutils/readelf.c
binutils/testsuite/binutils-all/nm.exp
binutils/testsuite/binutils-all/wasm32/create-wasm.d [new file with mode: 0644]
binutils/testsuite/binutils-all/wasm32/create-wasm.s [new file with mode: 0644]
binutils/testsuite/binutils-all/wasm32/custom-section.d [new file with mode: 0644]
binutils/testsuite/binutils-all/wasm32/custom-section.s [new file with mode: 0644]
binutils/testsuite/binutils-all/wasm32/invalid-wasm-1.d [new file with mode: 0644]
binutils/testsuite/binutils-all/wasm32/invalid-wasm-1.s [new file with mode: 0644]
binutils/testsuite/binutils-all/wasm32/invalid-wasm-2.d [new file with mode: 0644]
binutils/testsuite/binutils-all/wasm32/invalid-wasm-2.s [new file with mode: 0644]
binutils/testsuite/binutils-all/wasm32/long-sections.d [new file with mode: 0644]
binutils/testsuite/binutils-all/wasm32/long-sections.s [new file with mode: 0644]
binutils/testsuite/binutils-all/wasm32/parse-wasm-2.d [new file with mode: 0644]
binutils/testsuite/binutils-all/wasm32/parse-wasm-2.s [new file with mode: 0644]
binutils/testsuite/binutils-all/wasm32/parse-wasm.d [new file with mode: 0644]
binutils/testsuite/binutils-all/wasm32/parse-wasm.s [new file with mode: 0644]
binutils/testsuite/binutils-all/wasm32/prepared-section.d [new file with mode: 0644]
binutils/testsuite/binutils-all/wasm32/prepared-section.s [new file with mode: 0644]
binutils/testsuite/binutils-all/wasm32/wasm32.exp [new file with mode: 0644]
binutils/testsuite/lib/binutils-common.exp
gas/ChangeLog
gas/Makefile.am
gas/Makefile.in
gas/NEWS
gas/config/tc-wasm32.c [new file with mode: 0644]
gas/config/tc-wasm32.h [new file with mode: 0644]
gas/configure.tgt
gas/doc/all.texi
gas/doc/as.texinfo
gas/doc/c-wasm32.texi [new file with mode: 0644]
gas/po/POTFILES.in
gas/po/gas.pot
gas/testsuite/gas/wasm32/allinsn.d [new file with mode: 0644]
gas/testsuite/gas/wasm32/allinsn.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-10.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-10.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-11.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-11.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-12.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-12.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-13.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-13.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-14.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-14.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-15.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-15.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-16.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-16.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-17.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-17.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-18.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-18.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-19.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-19.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-2.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-2.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-20.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-20.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-21.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-21.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-22.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-24.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-24.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-25.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-25.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-3.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-3.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-4.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-4.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-5.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-5.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-6.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-6.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-7.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-7.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-8.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-8.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-9.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal-9.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal.l [new file with mode: 0644]
gas/testsuite/gas/wasm32/illegal.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/reloc.d [new file with mode: 0644]
gas/testsuite/gas/wasm32/reloc.s [new file with mode: 0644]
gas/testsuite/gas/wasm32/wasm32.exp [new file with mode: 0644]
include/ChangeLog
include/elf/wasm32.h
include/opcode/wasm.h [new file with mode: 0644]
opcodes/ChangeLog
opcodes/configure
opcodes/configure.ac
opcodes/po/opcodes.pot

index 42ffd4d6f7ab59f52708789ae6d4397202f46bf4..bb851c7a9fad3a6413edd8be465e681fb400e04e 100644 (file)
@@ -1,3 +1,11 @@
+2017-03-30  Pip Cet  <pipcet@gmail.com>
+
+       * elf32-wasm32.c: Add relocation code, two relocs.
+       * reloc.c: Add wasm32 relocations.
+       * libbfd.h: Regenerate.
+       * bfd-in2.h: Regenerate.
+       * bfd/po/bfd.pot: Regenerate.
+
 2017-03-29  Nick Clifton  <nickc@redhat.com>
 
        PR binutils/18025
index adfcefdcdc7784b92da47d2f2386c2f5fe9311c0..fbd379fd4c1295b1d03fa0c53886568b33f518b2 100644 (file)
@@ -6464,6 +6464,18 @@ assembler and not (currently) written to any object files.  */
   BFD_RELOC_VISIUM_HI16_PCREL,
   BFD_RELOC_VISIUM_LO16_PCREL,
   BFD_RELOC_VISIUM_IM16_PCREL,
+
+/* WebAssembly relocations.  */
+  BFD_RELOC_WASM32_LEB128,
+  BFD_RELOC_WASM32_LEB128_GOT,
+  BFD_RELOC_WASM32_LEB128_GOT_CODE,
+  BFD_RELOC_WASM32_LEB128_PLT,
+  BFD_RELOC_WASM32_PLT_INDEX,
+  BFD_RELOC_WASM32_ABS32_CODE,
+  BFD_RELOC_WASM32_COPY,
+  BFD_RELOC_WASM32_CODE_POINTER,
+  BFD_RELOC_WASM32_INDEX,
+  BFD_RELOC_WASM32_PLT_SIG,
   BFD_RELOC_UNUSED };
 
 typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
index 9b3827248fb464be331842843eac97fb9bb6ffba..6d2e04ece255a3ed62d6f63f042a63ecf3a7e984 100644 (file)
 #include "libbfd.h"
 #include "elf-bfd.h"
 #include "bfd_stdint.h"
+#include "libiberty.h"
 #include "elf/wasm32.h"
 
+static reloc_howto_type elf32_wasm32_howto_table[] =
+{
+  HOWTO (R_WASM32_NONE,                /* type */
+         0,                    /* rightshift */
+         3,                    /* size (0 = byte, 1 = short, 2 = long) */
+         0,                    /* bitsize */
+         FALSE,                        /* pc_relative */
+         0,                    /* bitpos */
+         complain_overflow_dont,/* complain_on_overflow */
+         bfd_elf_generic_reloc,        /* special_function */
+         "R_WASM32_NONE",      /* name */
+         FALSE,                        /* partial_inplace */
+         0,                    /* src_mask */
+         0,                    /* dst_mask */
+         FALSE),               /* pcrel_offset */
+
+  /* 32 bit absolute */
+  HOWTO (R_WASM32_32,          /* type */
+         0,                    /* rightshift */
+         2,                    /* size (0 = byte, 1 = short, 2 = long) */
+         32,                   /* bitsize */
+         FALSE,                        /* pc_relative */
+         0,                    /* bitpos */
+         complain_overflow_bitfield,/* complain_on_overflow */
+         bfd_elf_generic_reloc,        /* special_function */
+         "R_WASM32_32",        /* name */
+         FALSE,                        /* partial_inplace */
+         0xffffffff,           /* src_mask */
+         0xffffffff,           /* dst_mask */
+         FALSE),               /* pcrel_offset */
+};
+
+/* Look up the relocation CODE.  */
+
+static reloc_howto_type *
+elf32_wasm32_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
+                                bfd_reloc_code_real_type code)
+{
+  switch (code)
+    {
+    case BFD_RELOC_NONE:
+      return &elf32_wasm32_howto_table[R_WASM32_NONE];
+    case BFD_RELOC_32:
+      return &elf32_wasm32_howto_table[R_WASM32_32];
+    default:
+      break;
+    }
+
+  return NULL;
+}
+
+/* Look up the relocation R_NAME.  */
+
+static reloc_howto_type *
+elf32_wasm32_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
+                                const char *r_name)
+{
+  unsigned int i;
+
+  for (i = 0; i < ARRAY_SIZE (elf32_wasm32_howto_table); i++)
+    if (elf32_wasm32_howto_table[i].name != NULL
+        && strcasecmp (elf32_wasm32_howto_table[i].name, r_name) == 0)
+      return &elf32_wasm32_howto_table[i];
+
+  return NULL;
+}
+
+/* Look up the relocation R_TYPE.  */
+
+static reloc_howto_type *
+elf32_wasm32_rtype_to_howto (bfd *abfd, unsigned r_type)
+{
+  unsigned int i = r_type;
+
+  if (i >= ARRAY_SIZE (elf32_wasm32_howto_table))
+    {
+      /* xgettext:c-format */
+      _bfd_error_handler (_("%B: invalid relocation type %d"),
+                         abfd, (int) r_type);
+      i = R_WASM32_NONE;
+    }
+
+  if (elf32_wasm32_howto_table[i].type != r_type)
+    return NULL;
+
+  return &elf32_wasm32_howto_table[i];
+}
+
+/* Translate the ELF-internal relocation RELA into CACHE_PTR.  */
+
+static void
+elf32_wasm32_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED,
+                                arelent *cache_ptr,
+                                Elf_Internal_Rela *dst)
+{
+  unsigned int r_type = ELF32_R_TYPE (dst->r_info);
+  cache_ptr->howto = elf32_wasm32_rtype_to_howto (abfd, r_type);
+}
+
 #define ELF_ARCH               bfd_arch_wasm32
 #define ELF_TARGET_ID          EM_WEBASSEMBLY
 #define ELF_MACHINE_CODE       EM_WEBASSEMBLY
 /* For testing. */
 #define elf_backend_want_dynrelro       1
 
-#define bfd_elf32_bfd_reloc_type_lookup _bfd_norelocs_bfd_reloc_type_lookup
-#define bfd_elf32_bfd_reloc_name_lookup _bfd_norelocs_bfd_reloc_name_lookup
+#define elf_info_to_howto              elf32_wasm32_info_to_howto_rela
+#define elf_info_to_howto_rel          NULL
+
+#define bfd_elf32_bfd_reloc_type_lookup elf32_wasm32_reloc_type_lookup
+#define bfd_elf32_bfd_reloc_name_lookup elf32_wasm32_reloc_name_lookup
 
 #define ELF_DYNAMIC_INTERPRETER  "/sbin/elf-dynamic-interpreter.so"
 
index 1b6ca5245278b1ee1db71bfdb83d6baa2839d25e..8bac6501f3f32fadc00d2c30a9fe322005c8f161 100644 (file)
@@ -3166,6 +3166,16 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_VISIUM_HI16_PCREL",
   "BFD_RELOC_VISIUM_LO16_PCREL",
   "BFD_RELOC_VISIUM_IM16_PCREL",
+  "BFD_RELOC_WASM32_LEB128",
+  "BFD_RELOC_WASM32_LEB128_GOT",
+  "BFD_RELOC_WASM32_LEB128_GOT_CODE",
+  "BFD_RELOC_WASM32_LEB128_PLT",
+  "BFD_RELOC_WASM32_PLT_INDEX",
+  "BFD_RELOC_WASM32_ABS32_CODE",
+  "BFD_RELOC_WASM32_COPY",
+  "BFD_RELOC_WASM32_CODE_POINTER",
+  "BFD_RELOC_WASM32_INDEX",
+  "BFD_RELOC_WASM32_PLT_SIG",
  "@@overflow: BFD_RELOC_UNUSED@@",
 };
 #endif
index 70249f84213aa59f0a3b4a207dbd53225e7cfc44..2b2bec505d2480f82ecbefe9bb634790859ffd04 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: 2017-03-27 11:46+0100\n"
+"POT-Creation-Date: 2017-03-29 17:07+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"
@@ -206,7 +206,7 @@ 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:2876 reloc.c:7981 reloc16.c:156
+#: elf64-ia64-vms.c:353 elfxx-sparc.c:2876 reloc.c:8004 reloc16.c:156
 #: elf32-ia64.c:351 elf64-ia64.c:351
 msgid "%P%F: --relax and -r may not be used together\n"
 msgstr ""
@@ -617,16 +617,16 @@ msgstr ""
 msgid "<corrupt info> %s"
 msgstr ""
 
-#: coffgen.c:2638 elflink.c:13940 linker.c:2931
+#: coffgen.c:2666 elflink.c:13940 linker.c:2931
 msgid "%F%P: already_linked_table: %E\n"
 msgstr ""
 
-#: coffgen.c:2965 elflink.c:12981
+#: coffgen.c:2993 elflink.c:12981
 #, c-format
 msgid "Removing unused section '%s' in file '%B'"
 msgstr ""
 
-#: coffgen.c:3041 elflink.c:13219
+#: coffgen.c:3069 elflink.c:13219
 msgid "Warning: gc-sections option ignored"
 msgstr ""
 
@@ -736,26 +736,26 @@ msgstr ""
 msgid "Dwarf Error: Unable to read alt ref %u."
 msgstr ""
 
-#: dwarf2.c:2600 dwarf2.c:2745 dwarf2.c:3063
+#: dwarf2.c:2600 dwarf2.c:2750 dwarf2.c:3071
 #, c-format
 msgid "Dwarf Error: Could not find abbrev number %u."
 msgstr ""
 
-#: dwarf2.c:3015
+#: dwarf2.c:3023
 #, c-format
 msgid ""
 "Dwarf Error: found dwarf version '%u', this reader only handles version 2, 3 "
 "and 4 information."
 msgstr ""
 
-#: dwarf2.c:3026
+#: dwarf2.c:3034
 #, c-format
 msgid ""
 "Dwarf Error: found address size '%u', this reader can not handle sizes "
 "greater than '%u'."
 msgstr ""
 
-#: dwarf2.c:3129
+#: dwarf2.c:3137
 msgid ""
 "Dwarf Error: DW_AT_comp_dir attribute encountered with a non-string form."
 msgstr ""
@@ -1680,7 +1680,7 @@ 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:14101 elf32-bfin.c:4919 elf32-cris.c:4084 elf32-m68hc1x.c:1413
+#: elf32-arm.c:14101 elf32-bfin.c:4919 elf32-cris.c:4089 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:15782
 #: /work/sources/binutils/current/bfd/elfnn-aarch64.c:6695
@@ -2072,14 +2072,14 @@ msgid ""
 "-mno-small-tls)"
 msgstr ""
 
-#: elf32-cris.c:3231
+#: elf32-cris.c:3233
 #, c-format
 msgid ""
 "%B, section %A:\n"
 "  v10/v32 compatible object %s must not contain a PIC relocation"
 msgstr ""
 
-#: elf32-cris.c:3285
+#: elf32-cris.c:3287
 #, c-format
 msgid ""
 "%B, section %A:\n"
@@ -2087,52 +2087,52 @@ msgid ""
 "recompile with -fPIC"
 msgstr ""
 
-#: elf32-cris.c:3500
+#: elf32-cris.c:3505
 #, c-format
 msgid ""
 "%B, section %A:\n"
 "  relocation %s should not be used in a shared object; recompile with -fPIC"
 msgstr ""
 
-#: elf32-cris.c:3924
+#: elf32-cris.c:3929
 #, 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:4036
+#: elf32-cris.c:4041
 msgid "Unexpected machine number"
 msgstr ""
 
-#: elf32-cris.c:4087
+#: elf32-cris.c:4092
 #, c-format
 msgid " [symbols have a _ prefix]"
 msgstr ""
 
-#: elf32-cris.c:4090
+#: elf32-cris.c:4095
 #, c-format
 msgid " [v10 and v32]"
 msgstr ""
 
-#: elf32-cris.c:4093
+#: elf32-cris.c:4098
 #, c-format
 msgid " [v32]"
 msgstr ""
 
-#: elf32-cris.c:4137
+#: elf32-cris.c:4142
 msgid "%B: uses _-prefixed symbols, but writing file with non-prefixed symbols"
 msgstr ""
 
-#: elf32-cris.c:4138
+#: elf32-cris.c:4143
 msgid "%B: uses non-prefixed symbols, but writing file with _-prefixed symbols"
 msgstr ""
 
-#: elf32-cris.c:4157
+#: elf32-cris.c:4162
 msgid "%B contains CRIS v32 code, incompatible with previous objects"
 msgstr ""
 
-#: elf32-cris.c:4159
+#: elf32-cris.c:4164
 msgid "%B contains non-CRIS-v32 code, incompatible with previous objects"
 msgstr ""
 
@@ -2356,7 +2356,8 @@ msgstr ""
 
 #. Unknown relocation.
 #: 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
+#: elf32-tic6x.c:2674 elf32-wasm32.c:106 elf64-ppc.c:2515 elf64-s390.c:372
+#: elf64-x86-64.c:289
 #, c-format
 msgid "%B: invalid relocation type %d"
 msgstr ""
@@ -2947,7 +2948,7 @@ msgstr ""
 msgid "%B: Unmatched OMIT_FP in %A."
 msgstr ""
 
-#: elf32-nds32.c:13026 reloc.c:8192
+#: elf32-nds32.c:13026 reloc.c:8215
 #, c-format
 msgid "%X%P: %B(%A): relocation \"%R\" goes out of range\n"
 msgstr ""
@@ -5841,21 +5842,21 @@ msgstr ""
 msgid "Partition[%d] length = 0x%.8lx (%ld)\n"
 msgstr ""
 
-#: reloc.c:8028
+#: reloc.c:8051
 msgid "INPUT_SECTION_FLAGS are not supported.\n"
 msgstr ""
 
-#: reloc.c:8126
+#: reloc.c:8149
 #, c-format
 msgid "%X%P: %B(%A): error: relocation for offset %V has no value\n"
 msgstr ""
 
-#: reloc.c:8202
+#: reloc.c:8225
 #, c-format
 msgid "%X%P: %B(%A): relocation \"%R\" is not supported\n"
 msgstr ""
 
-#: reloc.c:8211
+#: reloc.c:8234
 #, c-format
 msgid "%X%P: %B(%A): relocation \"%R\" returns an unrecognized value %x\n"
 msgstr ""
index d4229a4b79a0cc3fead523d1f5951fbd6304cd3c..279145851682297baea11742cd1fc930f3c8d614 100644 (file)
@@ -7853,6 +7853,29 @@ ENUMX
 ENUMDOC
   Visium Relocations.
 
+ENUM
+  BFD_RELOC_WASM32_LEB128
+ENUMX
+  BFD_RELOC_WASM32_LEB128_GOT
+ENUMX
+  BFD_RELOC_WASM32_LEB128_GOT_CODE
+ENUMX
+  BFD_RELOC_WASM32_LEB128_PLT
+ENUMX
+  BFD_RELOC_WASM32_PLT_INDEX
+ENUMX
+  BFD_RELOC_WASM32_ABS32_CODE
+ENUMX
+  BFD_RELOC_WASM32_COPY
+ENUMX
+  BFD_RELOC_WASM32_CODE_POINTER
+ENUMX
+  BFD_RELOC_WASM32_INDEX
+ENUMX
+  BFD_RELOC_WASM32_PLT_SIG
+ENUMDOC
+  WebAssembly relocations.
+
 ENDSENUM
   BFD_RELOC_UNUSED
 CODE_FRAGMENT
index 95595876bef7720e0dbd5da24af2c3d091dd3921..767e3154b8ff0f74231a3c54a7dba7a4fd710ede 100644 (file)
@@ -1,3 +1,32 @@
+2017-03-30  Pip Cet  <pipcet@gmail.com>
+
+       * readelf.c: Add support for wasm32 ELF format WebAssembly files.
+       (guess_is_rela): Likewise.
+       (dump_relocations): Likewise.
+       (is_32bit_abs_reloc): Likewise.
+       (is_none_reloc_): Likewise.
+       * NEWS: Mention the new support.
+       * testsuite/lib/binutils-common.exp (is_elf_format): Mark wasm32
+       as ELF target.
+       (supports_gnu_unique): Mark wasm32 as supporting STB_GNU_UNIQUE.
+       * testsuite/binutils-all/nm.exp: Mark wasm32 as requiring .size annotations.
+       * testsuite/binutils-all/wasm32: New directory.
+       * testsuite/binutils-all/wasm32/create-wasm.d: New file.
+       * testsuite/binutils-all/wasm32/create-wasm.s: Likewise.
+       * testsuite/binutils-all/wasm32/custom-section.d: Likewise.
+       * testsuite/binutils-all/wasm32/custom-section.s: Likewise.
+       * testsuite/binutils-all/wasm32/invalid-wasm-1.d: Likewise.
+       * testsuite/binutils-all/wasm32/invalid-wasm-1.s: Likewise.
+       * testsuite/binutils-all/wasm32/long-sections.d: Likewise.
+       * testsuite/binutils-all/wasm32/long-sections.s: Likewise.
+       * testsuite/binutils-all/wasm32/parse-wasm.d: Likewise.
+       * testsuite/binutils-all/wasm32/parse-wasm.s: Likewise.
+       * testsuite/binutils-all/wasm32/parse-wasm-2.d: Likewise.
+       * testsuite/binutils-all/wasm32/parse-wasm-2.s: Likewise.
+       * testsuite/binutils-all/wasm32/prepared-section.d: Likewise.
+       * testsuite/binutils-all/wasm32/prepared-section.s: Likewise.
+       * testsuite/binutils-all/wasm32/wasm32.exp: New file, run tests.
+
 2017-03-29  Alan Modra  <amodra@gmail.com>
 
        * doc/binutils.texi (objdump): Document PowerPC -M options.
index c98908a0613f2271a9cc8de20d7833e2448687fa..1b824facae9ee5d701cd0d0cb1c108bb053d25cd 100644 (file)
@@ -1,5 +1,7 @@
 -*- text -*-
 
+* Add support for the wasm32 ELF conversion of the Web Assembly file format.
+
 * Add --inlines option to objdump, which extends the --line-numbers option
   so that inlined functions will display their nesting information.
 
index 6ede2399fc574af9949e80b34438eb443d2fd49e..31a519bc1805114367d21e98dd1c2ef1ecad850d 100644 (file)
 #include "elf/v850.h"
 #include "elf/vax.h"
 #include "elf/visium.h"
+#include "elf/wasm32.h"
 #include "elf/x86-64.h"
 #include "elf/xc16x.h"
 #include "elf/xgate.h"
@@ -809,6 +810,7 @@ guess_is_rela (unsigned int e_machine)
     case EM_XTENSA_OLD:
     case EM_MICROBLAZE:
     case EM_MICROBLAZE_OLD:
+    case EM_WEBASSEMBLY:
       return TRUE;
 
     case EM_68HC05:
@@ -1498,6 +1500,10 @@ dump_relocations (FILE * file,
          rtype = elf_tilepro_reloc_type (type);
          break;
 
+       case EM_WEBASSEMBLY:
+         rtype = elf_wasm32_reloc_type (type);
+         break;
+
        case EM_XGATE:
          rtype = elf_xgate_reloc_type (type);
          break;
@@ -12091,6 +12097,8 @@ is_32bit_abs_reloc (unsigned int reloc_type)
       return reloc_type == 1; /* R_VAX_32.  */
     case EM_VISIUM:
       return reloc_type == 3;  /* R_VISIUM_32. */
+    case EM_WEBASSEMBLY:
+      return reloc_type == 1;  /* R_WASM32_32.  */
     case EM_X86_64:
     case EM_L1OM:
     case EM_K1OM:
@@ -12396,6 +12404,7 @@ is_none_reloc (unsigned int reloc_type)
     case EM_TI_C6000:/* R_C6000_NONE.  */
     case EM_X86_64:  /* R_X86_64_NONE.  */
     case EM_XC16X:
+    case EM_WEBASSEMBLY: /* R_WASM32_NONE.  */
       return reloc_type == 0;
 
     case EM_AARCH64:
index 13eafa65156c10f63dea552b5e5a28f6b2920c7c..fdcf194b4fc0e6fae57b19fe4c978f7b7e992819 100644 (file)
@@ -175,7 +175,8 @@ if {   [is_elf_format]
     || [istarget *-*-tpf*]
     || [istarget *-*-uclinux*]
     || [istarget ia64-*-*vms*]
-    || [istarget *-*-vxworks*] } {
+    || [istarget *-*-vxworks*]
+    || [istarget wasm32-*-*] } {
     set nm_1_src "nm-elf-1.s"
 } else {
     set nm_1_src "nm-1.s"
diff --git a/binutils/testsuite/binutils-all/wasm32/create-wasm.d b/binutils/testsuite/binutils-all/wasm32/create-wasm.d
new file mode 100644 (file)
index 0000000..3a1c18a
--- /dev/null
@@ -0,0 +1,10 @@
+#PROG: objcopy
+#source: create-wasm.s
+#as:
+#objcopy: -Ielf32-wasm32 -Owasm
+#objdump: -bbinary -s
+
+.*:.*file format binary
+
+Contents of section .data:
+ 0000 0061736d 01000000 01030100 00030100  .asm............
diff --git a/binutils/testsuite/binutils-all/wasm32/create-wasm.s b/binutils/testsuite/binutils-all/wasm32/create-wasm.s
new file mode 100644 (file)
index 0000000..5c360cc
--- /dev/null
@@ -0,0 +1,6 @@
+        .section .wasm.function
+        .byte 0
+        .section .wasm.type
+        .byte 1
+        .byte 0
+        .byte 0
diff --git a/binutils/testsuite/binutils-all/wasm32/custom-section.d b/binutils/testsuite/binutils-all/wasm32/custom-section.d
new file mode 100644 (file)
index 0000000..3a39e77
--- /dev/null
@@ -0,0 +1,11 @@
+#PROG: objcopy
+#source: custom-section.s
+#as:
+#objcopy: -Ielf32-wasm32 -Owasm
+#objdump: -bbinary -s
+
+.*:.*file format binary
+
+Contents of section .data:
+ 0000 0061736d 01000000 0008046e 616d6502  .asm.......name.
+ 0010 0100                                 .. *$
diff --git a/binutils/testsuite/binutils-all/wasm32/custom-section.s b/binutils/testsuite/binutils-all/wasm32/custom-section.s
new file mode 100644 (file)
index 0000000..81fa671
--- /dev/null
@@ -0,0 +1,4 @@
+        .section .wasm.name
+        .byte 2
+        .byte 1
+        .byte 0
diff --git a/binutils/testsuite/binutils-all/wasm32/invalid-wasm-1.d b/binutils/testsuite/binutils-all/wasm32/invalid-wasm-1.d
new file mode 100644 (file)
index 0000000..e916fad
--- /dev/null
@@ -0,0 +1,6 @@
+#PROG: objcopy
+#source: invalid-wasm-1.s
+#as:
+#objcopy: -Ielf32-wasm32 -Obinary
+#objdump: -bwasm -sD
+#error: : File format not recognized
\ No newline at end of file
diff --git a/binutils/testsuite/binutils-all/wasm32/invalid-wasm-1.s b/binutils/testsuite/binutils-all/wasm32/invalid-wasm-1.s
new file mode 100644 (file)
index 0000000..50d6690
--- /dev/null
@@ -0,0 +1,7 @@
+        .data
+        .byte 0
+        .ascii "ASM"
+        .byte 1
+        .byte 0
+        .byte 0
+        .byte 0
diff --git a/binutils/testsuite/binutils-all/wasm32/invalid-wasm-2.d b/binutils/testsuite/binutils-all/wasm32/invalid-wasm-2.d
new file mode 100644 (file)
index 0000000..da28775
--- /dev/null
@@ -0,0 +1,6 @@
+#PROG: objcopy
+#source: invalid-wasm-2.s
+#as:
+#objcopy: -Ielf32-wasm32 -Obinary
+#objdump: -bwasm -sD
+#exit: 1
\ No newline at end of file
diff --git a/binutils/testsuite/binutils-all/wasm32/invalid-wasm-2.s b/binutils/testsuite/binutils-all/wasm32/invalid-wasm-2.s
new file mode 100644 (file)
index 0000000..4270e9d
--- /dev/null
@@ -0,0 +1,7 @@
+        .data
+        .byte 0
+        .ascii "asm"
+        .byte 2
+        .byte 0
+        .byte 0
+        .byte 0
diff --git a/binutils/testsuite/binutils-all/wasm32/long-sections.d b/binutils/testsuite/binutils-all/wasm32/long-sections.d
new file mode 100644 (file)
index 0000000..edf9058
--- /dev/null
@@ -0,0 +1,13 @@
+#PROG: objcopy
+#source: long-sections.s
+#as:
+#objcopy: -Ielf32-wasm32 -Owasm
+#objdump: -bbinary -s
+
+.*:.*file format binary
+
+Contents of section .data:
+ 00000 0061736d 01000000 01800200 00000000  .asm............
+#...
+ 00100 00000000 00000000 0000000a 80800400  ................
+#pass
diff --git a/binutils/testsuite/binutils-all/wasm32/long-sections.s b/binutils/testsuite/binutils-all/wasm32/long-sections.s
new file mode 100644 (file)
index 0000000..a8642d2
--- /dev/null
@@ -0,0 +1,9 @@
+        .section .wasm.type
+        .rept 256
+        .byte 0
+        .endr
+
+        .section .wasm.code
+        .rept 65536
+        .byte 0
+        .endr
diff --git a/binutils/testsuite/binutils-all/wasm32/parse-wasm-2.d b/binutils/testsuite/binutils-all/wasm32/parse-wasm-2.d
new file mode 100644 (file)
index 0000000..8b59c74
--- /dev/null
@@ -0,0 +1,15 @@
+#PROG: objcopy
+#source: parse-wasm-2.s
+#as:
+#objcopy: -Ielf32-wasm32 -Obinary
+#objdump: -bwasm -s
+
+.*:.*file format wasm
+
+Contents of section .wasm.type:
+ 80000000 01600001 7f                          .`...           
+Contents of section .wasm.function:
+ 80000005 0100                                 ..              
+Contents of section .wasm.code:
+ 80000007 01858080 80000041 2a0f0b             .......A\*..     
+#pass
diff --git a/binutils/testsuite/binutils-all/wasm32/parse-wasm-2.s b/binutils/testsuite/binutils-all/wasm32/parse-wasm-2.s
new file mode 100644 (file)
index 0000000..bc918b7
--- /dev/null
@@ -0,0 +1,43 @@
+        .data
+        .byte 0
+        .ascii "asm"
+        .byte 1
+        .byte 0
+        .byte 0
+        .byte 0
+        .byte 1
+        .byte 0x85
+        .byte 0x80
+        .byte 0x80
+        .byte 0x80
+        .byte 0
+        .byte 1
+        .byte 0x60
+        .byte 0
+        .byte 1
+        .byte 0x7f
+        .byte 3
+        .byte 0x82
+        .byte 0x80
+        .byte 0x80
+        .byte 0x80
+        .byte 0
+        .byte 1
+        .byte 0
+        .byte 0x0a
+        .byte 0x8b
+        .byte 0x80
+        .byte 0x80
+        .byte 0x80
+        .byte 0
+        .byte 1
+        .byte 0x85
+        .byte 0x80
+        .byte 0x80
+        .byte 0x80
+        .byte 0
+        .byte 0
+        .byte 0x41
+        .byte 0x2a
+        .byte 0x0f
+        .byte 0x0b
diff --git a/binutils/testsuite/binutils-all/wasm32/parse-wasm.d b/binutils/testsuite/binutils-all/wasm32/parse-wasm.d
new file mode 100644 (file)
index 0000000..fd8bc70
--- /dev/null
@@ -0,0 +1,8 @@
+#PROG: objcopy
+#source: parse-wasm.s
+#as:
+#objcopy: -Ielf32-wasm32 -Obinary
+#objdump: -bwasm -s
+
+.*:.*file format wasm
+
diff --git a/binutils/testsuite/binutils-all/wasm32/parse-wasm.s b/binutils/testsuite/binutils-all/wasm32/parse-wasm.s
new file mode 100644 (file)
index 0000000..d495ea1
--- /dev/null
@@ -0,0 +1,7 @@
+        .data
+        .byte 0
+        .ascii "asm"
+        .byte 1
+        .byte 0
+        .byte 0
+        .byte 0
diff --git a/binutils/testsuite/binutils-all/wasm32/prepared-section.d b/binutils/testsuite/binutils-all/wasm32/prepared-section.d
new file mode 100644 (file)
index 0000000..c5bfafa
--- /dev/null
@@ -0,0 +1,10 @@
+#PROG: objcopy
+#source: prepared-section.s
+#as:
+#objcopy: -Ielf32-wasm32 -Owasm
+#objdump: -bbinary -s
+
+.*:.*file format binary
+
+Contents of section .data:
+ 0000 0061736d 01000000 0006046e 616d6500  .asm.......name.
diff --git a/binutils/testsuite/binutils-all/wasm32/prepared-section.s b/binutils/testsuite/binutils-all/wasm32/prepared-section.s
new file mode 100644 (file)
index 0000000..574f6e0
--- /dev/null
@@ -0,0 +1,6 @@
+        .section .prepared
+        .byte 0
+        .byte 0x6
+        .byte 4
+        .ascii "name"
+        .byte 0
diff --git a/binutils/testsuite/binutils-all/wasm32/wasm32.exp b/binutils/testsuite/binutils-all/wasm32/wasm32.exp
new file mode 100644 (file)
index 0000000..b95569a
--- /dev/null
@@ -0,0 +1,30 @@
+#   Copyright (C) 2010-2017 Free Software Foundation, Inc.
+#   Copyright (C) 2017 Pip Cet <pipcet@gmail.com>
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 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.
+
+if { ![istarget "wasm32-*-*"] } then {
+    return
+}
+
+run_dump_test "create-wasm"
+run_dump_test "custom-section"
+run_dump_test "long-sections"
+run_dump_test "parse-wasm"
+run_dump_test "parse-wasm-2"
+run_dump_test "prepared-section"
+
+#run_dump_test "invalid-wasm-1"
+#run_dump_test "invalid-wasm-2"
index 327db46e6c33ab8026b7e9023d1a000055e9a376..70b6773894eeb65129270e31de133290aeeb5aad 100644 (file)
@@ -41,6 +41,7 @@ proc is_elf_format {} {
         && ![istarget *-*-solaris2*]
         && ![istarget *-*-sysv4*]
         && ![istarget *-*-unixware*]
+        && ![istarget *-*-wasm32*]
         && ![istarget avr-*-*]
         && ![istarget bfin-*-uclinux]
         && ![istarget frv-*-uclinux*]
@@ -183,6 +184,9 @@ proc supports_gnu_unique {} {
     if { [istarget "arm*-*-*eabi*"] } {
        return 1
     }
+    if { [istarget "wasm32*-*-*"] } {
+        return 1
+    }
     if { ![istarget "*-*-elf*"] } {
        return 0
     }
index f24e821c7c3f6db474558afeda9cfaa5248c19a1..a5c1d083518dcc09c2eca21a37bbf8ed1e411cb1 100644 (file)
@@ -1,3 +1,73 @@
+2017-03-30  Pip Cet  <pipcet@gmail.com>
+
+       * config/tc-wasm32.h: New file: Add WebAssembly assembler target.
+       * config/tc-wasm32.c: New file: Add WebAssembly assembler target.
+       * Makefile.am: Add WebAssembly assembler target.
+       * configure.tgt: Add WebAssembly assembler target.
+       * doc/c-wasm32.texi: New file: Start documenting WebAssembly
+       assembler.
+       * doc/all.texi: Define WASM32.
+       * doc/as.texinfo: Add WebAssembly entries.
+       * NEWS: Mention the new support.
+       * Makefile.in: Regenerate.
+       * po/gas.pot: Regenerate.
+       * po/POTFILES.in: Regenerate.
+       * testsuite/gas/wasm32: New directory.
+       * testsuite/gas/wasm32/allinsn.d: New file.
+       * testsuite/gas/wasm32/allinsn.s: New file.
+       * testsuite/gas/wasm32/illegal.l: New file.
+       * testsuite/gas/wasm32/illegal.s: New file.
+       * testsuite/gas/wasm32/illegal-2.l: New file.
+       * testsuite/gas/wasm32/illegal-2.s: New file.
+       * testsuite/gas/wasm32/illegal-3.l: New file.
+       * testsuite/gas/wasm32/illegal-3.s: New file.
+       * testsuite/gas/wasm32/illegal-4.l: New file.
+       * testsuite/gas/wasm32/illegal-4.s: New file.
+       * testsuite/gas/wasm32/illegal-5.l: New file.
+       * testsuite/gas/wasm32/illegal-5.s: New file.
+       * testsuite/gas/wasm32/illegal-6.l: New file.
+       * testsuite/gas/wasm32/illegal-6.s: New file.
+       * testsuite/gas/wasm32/illegal-7.l: New file.
+       * testsuite/gas/wasm32/illegal-7.s: New file.
+       * testsuite/gas/wasm32/illegal-8.l: New file.
+       * testsuite/gas/wasm32/illegal-8.s: New file.
+       * testsuite/gas/wasm32/illegal-9.l: New file.
+       * testsuite/gas/wasm32/illegal-9.s: New file.
+       * testsuite/gas/wasm32/illegal-10.l: New file.
+       * testsuite/gas/wasm32/illegal-10.s: New file.
+       * testsuite/gas/wasm32/illegal-11.l: New file.
+       * testsuite/gas/wasm32/illegal-11.s: New file.
+       * testsuite/gas/wasm32/illegal-12.l: New file.
+       * testsuite/gas/wasm32/illegal-12.s: New file.
+       * testsuite/gas/wasm32/illegal-13.l: New file.
+       * testsuite/gas/wasm32/illegal-13.s: New file.
+       * testsuite/gas/wasm32/illegal-14.l: New file.
+       * testsuite/gas/wasm32/illegal-14.s: New file.
+       * testsuite/gas/wasm32/illegal-15.l: New file.
+       * testsuite/gas/wasm32/illegal-15.s: New file.
+       * testsuite/gas/wasm32/illegal-16.l: New file.
+       * testsuite/gas/wasm32/illegal-16.s: New file.
+       * testsuite/gas/wasm32/illegal-17.l: New file.
+       * testsuite/gas/wasm32/illegal-17.s: New file.
+       * testsuite/gas/wasm32/illegal-18.l: New file.
+       * testsuite/gas/wasm32/illegal-18.s: New file.
+       * testsuite/gas/wasm32/illegal-19.l: New file.
+       * testsuite/gas/wasm32/illegal-19.s: New file.
+       * testsuite/gas/wasm32/illegal-20.l: New file.
+       * testsuite/gas/wasm32/illegal-20.s: New file.
+       * testsuite/gas/wasm32/illegal-21.l: New file.
+       * testsuite/gas/wasm32/illegal-21.s: New file.
+       * testsuite/gas/wasm32/illegal-22.l: New file.
+       * testsuite/gas/wasm32/illegal-22.s: New file.
+       * testsuite/gas/wasm32/illegal-24.l: New file.
+       * testsuite/gas/wasm32/illegal-24.s: New file.
+       * testsuite/gas/wasm32/illegal-25.l: New file.
+       * testsuite/gas/wasm32/illegal-25.s: New file.
+       * testsuite/gas/wasm32/reloc.d: New file.
+       * testsuite/gas/wasm32/reloc.s: New file.
+       * testsuite/gas/wasm32/wasm32.exp: New tests for WebAssembly
+       architecture.
+
 2017-03-29  Alan Modra  <amodra@gmail.com>
 
        * config/tc-ppc.c (md_parse_option): Reject -mraw.
index 851532cc699777eda0e7a3377d489a947a552eb6..c9f9de050308302d978e9540253462e0fa5edf88 100644 (file)
@@ -196,6 +196,7 @@ TARGET_CPU_CFILES = \
        config/tc-v850.c \
        config/tc-vax.c \
        config/tc-visium.c \
+       config/tc-wasm32.c \
        config/tc-xstormy16.c \
        config/tc-xc16x.c \
        config/tc-xgate.c \
@@ -271,6 +272,7 @@ TARGET_CPU_HFILES = \
        config/tc-v850.h \
        config/tc-vax.h \
        config/tc-visium.h \
+       config/tc-wasm32.h \
        config/tc-xstormy16.h \
        config/tc-xc16x.h \
        config/tc-xgate.h \
index f995c02965e625402e36ab4d85ed07a927d118c0..1927de5f023d3438438e9c174ffa6e059540b12b 100644 (file)
@@ -492,6 +492,7 @@ TARGET_CPU_CFILES = \
        config/tc-v850.c \
        config/tc-vax.c \
        config/tc-visium.c \
+       config/tc-wasm32.c \
        config/tc-xstormy16.c \
        config/tc-xc16x.c \
        config/tc-xgate.c \
@@ -567,6 +568,7 @@ TARGET_CPU_HFILES = \
        config/tc-v850.h \
        config/tc-vax.h \
        config/tc-visium.h \
+       config/tc-wasm32.h \
        config/tc-xstormy16.h \
        config/tc-xc16x.h \
        config/tc-xgate.h \
@@ -927,6 +929,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-v850.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-vax.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-visium.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-wasm32.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-xc16x.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-xgate.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-xstormy16.Po@am__quote@
@@ -1896,6 +1899,20 @@ tc-visium.obj: config/tc-visium.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tc-visium.obj `if test -f 'config/tc-visium.c'; then $(CYGPATH_W) 'config/tc-visium.c'; else $(CYGPATH_W) '$(srcdir)/config/tc-visium.c'; fi`
 
+tc-wasm32.o: config/tc-wasm32.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tc-wasm32.o -MD -MP -MF $(DEPDIR)/tc-wasm32.Tpo -c -o tc-wasm32.o `test -f 'config/tc-wasm32.c' || echo '$(srcdir)/'`config/tc-wasm32.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/tc-wasm32.Tpo $(DEPDIR)/tc-wasm32.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='config/tc-wasm32.c' object='tc-wasm32.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tc-wasm32.o `test -f 'config/tc-wasm32.c' || echo '$(srcdir)/'`config/tc-wasm32.c
+
+tc-wasm32.obj: config/tc-wasm32.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tc-wasm32.obj -MD -MP -MF $(DEPDIR)/tc-wasm32.Tpo -c -o tc-wasm32.obj `if test -f 'config/tc-wasm32.c'; then $(CYGPATH_W) 'config/tc-wasm32.c'; else $(CYGPATH_W) '$(srcdir)/config/tc-wasm32.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/tc-wasm32.Tpo $(DEPDIR)/tc-wasm32.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='config/tc-wasm32.c' object='tc-wasm32.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tc-wasm32.obj `if test -f 'config/tc-wasm32.c'; then $(CYGPATH_W) 'config/tc-wasm32.c'; else $(CYGPATH_W) '$(srcdir)/config/tc-wasm32.c'; fi`
+
 tc-xstormy16.o: config/tc-xstormy16.c
 @am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tc-xstormy16.o -MD -MP -MF $(DEPDIR)/tc-xstormy16.Tpo -c -o tc-xstormy16.o `test -f 'config/tc-xstormy16.c' || echo '$(srcdir)/'`config/tc-xstormy16.c
 @am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/tc-xstormy16.Tpo $(DEPDIR)/tc-xstormy16.Po
index aee38525d75940696cd9694dc1fd158b92ac695c..46eaff3e7c7788f128bcbea2c796188e085b0acf 100644 (file)
--- a/gas/NEWS
+++ b/gas/NEWS
@@ -1,5 +1,7 @@
 -*- text -*-
 
+* Add support for the WebAssembly file format and wasm32 ELF conversion.
+
 * PowerPC gas now checks that the correct register class is used in
   instructions.  For instance, "addi %f4,%cr3,%r31" warns three times
   that the registers are invalid.
diff --git a/gas/config/tc-wasm32.c b/gas/config/tc-wasm32.c
new file mode 100644 (file)
index 0000000..0b05ef1
--- /dev/null
@@ -0,0 +1,821 @@
+/* tc-wasm32.c -- Assembler code for the wasm32 target.
+
+   Copyright (C) 2017 Free Software Foundation, Inc.
+
+   This file is part of GAS, the GNU Assembler.
+
+   GAS 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, or (at your option)
+   any later version.
+
+   GAS 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 GAS; see the file COPYING.  If not, write to the Free
+   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+   02110-1301, USA.  */
+
+#include "as.h"
+#include "safe-ctype.h"
+#include "subsegs.h"
+#include "dwarf2dbg.h"
+#include "dw2gencfi.h"
+#include "elf/wasm32.h"
+#include <float.h>
+
+enum wasm_class
+{
+  wasm_typed,                  /* a typed opcode: block, loop, or if */
+  wasm_special,                        /* a special opcode: unreachable, nop, else,
+                                  or end */
+  wasm_break,                  /* "br" */
+  wasm_break_if,               /* "br_if" opcode */
+  wasm_break_table,            /* "br_table" opcode */
+  wasm_return,                 /* "return" opcode */
+  wasm_call,                   /* "call" opcode */
+  wasm_call_indirect,          /* "call_indirect" opcode */
+  wasm_get_local,              /* "get_local" and "get_global" */
+  wasm_set_local,              /* "set_local" and "set_global" */
+  wasm_tee_local,              /* "tee_local" */
+  wasm_drop,                   /* "drop" */
+  wasm_constant_i32,           /* "i32.const" */
+  wasm_constant_i64,           /* "i64.const" */
+  wasm_constant_f32,           /* "f32.const" */
+  wasm_constant_f64,           /* "f64.const" */
+  wasm_unary,                  /* unary operators */
+  wasm_binary,                 /* binary operators */
+  wasm_conv,                   /* conversion operators */
+  wasm_load,                   /* load operators */
+  wasm_store,                  /* store operators */
+  wasm_select,                 /* "select" */
+  wasm_relational,             /* comparison operators, except for "eqz" */
+  wasm_eqz,                    /* "eqz" */
+  wasm_current_memory,         /* "current_memory" */
+  wasm_grow_memory,            /* "grow_memory" */
+  wasm_signature               /* "signature", which isn't an opcode */
+};
+
+#define WASM_OPCODE(opcode, name, intype, outtype, class, signedness)   \
+  { name, wasm_ ## class, opcode },
+
+struct wasm32_opcode_s
+{
+  const char *name;
+  enum wasm_class clas;
+  unsigned char opcode;
+} wasm32_opcodes[] =
+{
+#include "opcode/wasm.h"
+  {
+  NULL, 0, 0}
+};
+
+const char comment_chars[] = ";#";
+const char line_comment_chars[] = ";#";
+const char line_separator_chars[] = "";
+
+const char *md_shortopts = "m:";
+
+const char EXP_CHARS[] = "eE";
+const char FLT_CHARS[] = "dD";
+
+/* The target specific pseudo-ops which we support.  */
+
+const pseudo_typeS md_pseudo_table[] =
+{
+  {NULL, NULL, 0}
+};
+
+/* Opcode hash table.  */
+
+static struct hash_control *wasm32_hash;
+
+struct option md_longopts[] =
+{
+  {NULL, no_argument, NULL, 0}
+};
+
+size_t md_longopts_size = sizeof (md_longopts);
+
+/* No relaxation/no machine-dependent frags.  */
+
+int
+md_estimate_size_before_relax (fragS * fragp ATTRIBUTE_UNUSED,
+                              asection * seg ATTRIBUTE_UNUSED)
+{
+  abort ();
+  return 0;
+}
+
+void
+md_show_usage (FILE * stream)
+{
+  fprintf (stream, _("wasm32 assembler options:\n"));
+}
+
+/* No machine-dependent options.  */
+
+int
+md_parse_option (int c ATTRIBUTE_UNUSED, const char *arg ATTRIBUTE_UNUSED)
+{
+  return 0;
+}
+
+/* No machine-dependent symbols.  */
+
+symbolS *
+md_undefined_symbol (char *name ATTRIBUTE_UNUSED)
+{
+  return NULL;
+}
+
+/* IEEE little-endian floats.  */
+
+const char *
+md_atof (int type, char *litP, int *sizeP)
+{
+  return ieee_md_atof (type, litP, sizeP, FALSE);
+}
+
+/* No machine-dependent frags.  */
+
+void
+md_convert_frag (bfd * abfd ATTRIBUTE_UNUSED,
+                asection * sec ATTRIBUTE_UNUSED,
+                fragS * fragP ATTRIBUTE_UNUSED)
+{
+  abort ();
+}
+
+/* Build opcode hash table, set some flags.  */
+
+void
+md_begin (void)
+{
+  struct wasm32_opcode_s *opcode;
+
+  wasm32_hash = hash_new ();
+
+  /* Insert unique names into hash table.  This hash table then
+     provides a quick index to the first opcode with a particular name
+     in the opcode table.  */
+  for (opcode = wasm32_opcodes; opcode->name; opcode++)
+    hash_insert (wasm32_hash, opcode->name, (char *) opcode);
+
+  linkrelax = 0;
+  flag_sectname_subst = 1;
+  flag_no_comments = 0;
+  flag_keep_locals = 1;
+}
+
+/* Do the normal thing for md_section_align.  */
+
+valueT
+md_section_align (asection * seg, valueT addr)
+{
+  int align = bfd_get_section_alignment (stdoutput, seg);
+  return ((addr + (1 << align) - 1) & -(1 << align));
+}
+
+/* Apply a fixup, return TRUE if done (and no relocation is
+   needed).  */
+
+static bfd_boolean
+apply_full_field_fix (fixS * fixP, char *buf, bfd_vma val, int size)
+{
+  if (fixP->fx_addsy != NULL || fixP->fx_pcrel)
+    {
+      fixP->fx_addnumber = val;
+      return FALSE;
+    }
+
+  number_to_chars_littleendian (buf, val, size);
+  return TRUE;
+}
+
+/* Apply a fixup (potentially PC-relative), set the fx_done flag if
+   done.  */
+
+void
+md_apply_fix (fixS * fixP, valueT * valP, segT seg ATTRIBUTE_UNUSED)
+{
+  char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
+  long val = (long) *valP;
+
+  if (fixP->fx_pcrel)
+    {
+      switch (fixP->fx_r_type)
+       {
+       default:
+         bfd_set_error (bfd_error_bad_value);
+         return;
+
+       case BFD_RELOC_32:
+         fixP->fx_r_type = BFD_RELOC_32_PCREL;
+         return;
+       }
+    }
+
+  if (apply_full_field_fix (fixP, buf, val, fixP->fx_size))
+    fixP->fx_done = 1;
+}
+
+/* Skip whitespace.  */
+
+static inline char *
+skip_space (char *s)
+{
+  while (*s == ' ' || *s == '\t')
+    ++s;
+  return s;
+}
+
+/* Allow '/' in opcodes.  */
+
+static inline bfd_boolean
+is_part_of_opcode (char c)
+{
+  return is_part_of_name (c) || (c == '/');
+}
+
+/* Extract an opcode.  */
+
+static char *
+extract_opcode (char *from, char *to, int limit)
+{
+  char *op_end;
+  int size = 0;
+
+  /* Drop leading whitespace.  */
+  from = skip_space (from);
+  *to = 0;
+
+  /* Find the op code end.  */
+  for (op_end = from; *op_end != 0 && is_part_of_opcode (*op_end);)
+    {
+      to[size++] = *op_end++;
+      if (size + 1 >= limit)
+       break;
+    }
+
+  to[size] = 0;
+  return op_end;
+}
+
+/* Produce an unsigned LEB128 integer padded to the right number of
+   bytes to store BITS bits, of value VALUE.  Uses FRAG_APPEND_1_CHAR
+   to write.  */
+
+static void
+wasm32_put_long_uleb128 (int bits, unsigned long value)
+{
+  unsigned char c;
+  int i = 0;
+
+  do
+    {
+      c = value & 0x7f;
+      value >>= 7;
+      if (i < (bits - 1) / 7)
+       c |= 0x80;
+      FRAG_APPEND_1_CHAR (c);
+    }
+  while (++i < (bits + 6) / 7);
+}
+
+/* Produce a signed LEB128 integer, using FRAG_APPEND_1_CHAR to
+   write.  */
+
+static void
+wasm32_put_sleb128 (long value)
+{
+  unsigned char c;
+  int more;
+
+  do
+    {
+      c = (value & 0x7f);
+      value >>= 7;
+      more = !((((value == 0) && ((c & 0x40) == 0))
+               || ((value == -1) && ((c & 0x40) != 0))));
+      if (more)
+       c |= 0x80;
+      FRAG_APPEND_1_CHAR (c);
+    }
+  while (more);
+}
+
+/* Produce an unsigned LEB128 integer, using FRAG_APPEND_1_CHAR to
+   write.  */
+
+static void
+wasm32_put_uleb128 (unsigned long value)
+{
+  unsigned char c;
+
+  do
+    {
+      c = value & 0x7f;
+      value >>= 7;
+      if (value)
+       c |= 0x80;
+      FRAG_APPEND_1_CHAR (c);
+    }
+  while (value);
+}
+
+/* Read an integer expression.  Produce an LEB128-encoded integer if
+   it's a constant, a padded LEB128 plus a relocation if it's a
+   symbol, or a special relocation for <expr>@got, <expr>@gotcode, and
+   <expr>@plt{__sigchar_<signature>}.  */
+
+static bfd_boolean
+wasm32_leb128 (char **line, int bits, int sign)
+{
+  char *t = input_line_pointer;
+  char *str = *line;
+  char *str0 = str;
+  struct reloc_list *reloc;
+  expressionS ex;
+  int gotrel = 0;
+  int pltrel = 0;
+  int code = 0;
+  const char *relname;
+
+  input_line_pointer = str;
+  expression (&ex);
+
+  if (ex.X_op == O_constant && *input_line_pointer != '@')
+    {
+      long value = ex.X_add_number;
+
+      str = input_line_pointer;
+      str = skip_space (str);
+      *line = str;
+      if (sign)
+       wasm32_put_sleb128 (value);
+      else
+       {
+         if (value < 0)
+           as_bad (_("unexpected negative constant"));
+         wasm32_put_uleb128 (value);
+       }
+      input_line_pointer = t;
+      return str != str0;
+    }
+
+  reloc = XNEW (struct reloc_list);
+  reloc->u.a.offset_sym = expr_build_dot ();
+  if (ex.X_op == O_symbol)
+    {
+      reloc->u.a.sym = ex.X_add_symbol;
+      reloc->u.a.addend = ex.X_add_number;
+    }
+  else
+    {
+      reloc->u.a.sym = make_expr_symbol (&ex);
+      reloc->u.a.addend = 0;
+    }
+  /* i32.const fpointer@gotcode */
+  if (strncmp (input_line_pointer, "@gotcode", 8) == 0)
+    {
+      gotrel = 1;
+      code = 1;
+      input_line_pointer += 8;
+    }
+  /* i32.const data@got */
+  else if (strncmp (input_line_pointer, "@got", 4) == 0)
+    {
+      gotrel = 1;
+      input_line_pointer += 4;
+    }
+  /* call f@plt{__sigchar_FiiiiE} */
+  else if (strncmp (input_line_pointer, "@plt", 4) == 0)
+    {
+      char *end_of_sig;
+
+      pltrel = 1;
+      code = 1;
+      input_line_pointer += 4;
+
+      if (strncmp (input_line_pointer, "{", 1) == 0
+          && (end_of_sig = strchr (input_line_pointer, '}')))
+       {
+         char *signature;
+         struct reloc_list *reloc2;
+         size_t siglength = end_of_sig - (input_line_pointer + 1);
+
+         signature = strndup (input_line_pointer + 1, siglength);
+
+         reloc2 = XNEW (struct reloc_list);
+         reloc2->u.a.offset_sym = expr_build_dot ();
+         reloc2->u.a.sym = symbol_find_or_make (signature);
+         reloc2->u.a.addend = 0;
+         reloc2->u.a.howto = bfd_reloc_name_lookup
+           (stdoutput, "R_WASM32_PLT_SIG");
+         reloc2->next = reloc_list;
+         reloc_list = reloc2;
+         input_line_pointer = end_of_sig + 1;
+       }
+      else
+       {
+         as_bad (_("no function type on PLT reloc"));
+       }
+    }
+
+  if (gotrel && code)
+    relname = "R_WASM32_LEB128_GOT_CODE";
+  else if (gotrel)
+    relname = "R_WASM32_LEB128_GOT";
+  else if (pltrel)
+    relname = "R_WASM32_LEB128_PLT";
+  else
+    relname = "R_WASM32_LEB128";
+
+  reloc->u.a.howto = bfd_reloc_name_lookup (stdoutput, relname);
+  if (!reloc->u.a.howto)
+    as_bad (_("couldn't find relocation to use"));
+  reloc->file = as_where (&reloc->line);
+  reloc->next = reloc_list;
+  reloc_list = reloc;
+
+  str = input_line_pointer;
+  str = skip_space (str);
+  *line = str;
+  wasm32_put_long_uleb128 (bits, 0);
+  input_line_pointer = t;
+
+  return str != str0;
+}
+
+/* Read an integer expression and produce an unsigned LEB128 integer,
+   or a relocation for it.  */
+
+static bfd_boolean
+wasm32_uleb128 (char **line, int bits)
+{
+  return wasm32_leb128 (line, bits, 0);
+}
+
+/* Read an integer expression and produce a signed LEB128 integer, or
+   a relocation for it.  */
+
+static bfd_boolean
+wasm32_sleb128 (char **line, int bits)
+{
+  return wasm32_leb128 (line, bits, 1);
+}
+
+/* Read an f32.  (Like float_cons ('f')).  */
+
+static void
+wasm32_f32 (char **line)
+{
+  char *t = input_line_pointer;
+
+  input_line_pointer = *line;
+  float_cons ('f');
+  *line = input_line_pointer;
+  input_line_pointer = t;
+}
+
+/* Read an f64.  (Like float_cons ('d')).  */
+
+static void
+wasm32_f64 (char **line)
+{
+  char *t = input_line_pointer;
+
+  input_line_pointer = *line;
+  float_cons ('d');
+  *line = input_line_pointer;
+  input_line_pointer = t;
+}
+
+/* Assemble a signature from LINE, replacing it with the new input
+   pointer.  Signatures are simple expressions matching the regexp
+   F[ilfd]*v?E, and interpreted as though they were C++-mangled
+   function types on a 64-bit machine. */
+
+static void
+wasm32_signature (char **line)
+{
+  unsigned long count = 0;
+  char *str = *line;
+  char *ostr;
+  char *result;
+
+  if (*str++ != 'F')
+    as_bad (_("Not a function type"));
+  result = str;
+  ostr = str + 1;
+  str++;
+
+  while (*str != 'E')
+    {
+      switch (*str++)
+       {
+       case 'i':
+       case 'l':
+       case 'f':
+       case 'd':
+         count++;
+         break;
+       default:
+         as_bad (_("Unknown type %c\n"), str[-1]);
+       }
+    }
+  wasm32_put_uleb128 (count);
+  str = ostr;
+  while (*str != 'E')
+    {
+      switch (*str++)
+       {
+       case 'i':
+         FRAG_APPEND_1_CHAR (BLOCK_TYPE_I32);
+         break;
+       case 'l':
+         FRAG_APPEND_1_CHAR (BLOCK_TYPE_I64);
+         break;
+       case 'f':
+         FRAG_APPEND_1_CHAR (BLOCK_TYPE_F32);
+         break;
+       case 'd':
+         FRAG_APPEND_1_CHAR (BLOCK_TYPE_F64);
+         break;
+       default:
+         as_bad (_("Unknown type"));
+       }
+    }
+  str++;
+  switch (*result)
+    {
+    case 'v':
+      FRAG_APPEND_1_CHAR (0x00);       /* no return value */
+      break;
+    case 'i':
+      FRAG_APPEND_1_CHAR (0x01);       /* one return value */
+      FRAG_APPEND_1_CHAR (BLOCK_TYPE_I32);
+      break;
+    case 'l':
+      FRAG_APPEND_1_CHAR (0x01);       /* one return value */
+      FRAG_APPEND_1_CHAR (BLOCK_TYPE_I64);
+      break;
+    case 'f':
+      FRAG_APPEND_1_CHAR (0x01);       /* one return value */
+      FRAG_APPEND_1_CHAR (BLOCK_TYPE_F32);
+      break;
+    case 'd':
+      FRAG_APPEND_1_CHAR (0x01);       /* one return value */
+      FRAG_APPEND_1_CHAR (BLOCK_TYPE_F64);
+      break;
+    default:
+      as_bad (_("Unknown type"));
+    }
+  *line = str;
+}
+
+/* Main operands function.  Read the operands for OPCODE from LINE,
+   replacing it with the new input pointer.  */
+
+static void
+wasm32_operands (struct wasm32_opcode_s *opcode, char **line)
+{
+  char *str = *line;
+  unsigned long block_type = 0;
+
+  FRAG_APPEND_1_CHAR (opcode->opcode);
+  str = skip_space (str);
+  if (str[0] == '[')
+    {
+      if (opcode->clas == wasm_typed)
+       {
+         str++;
+         block_type = BLOCK_TYPE_NONE;
+         if (str[0] != ']')
+           {
+             str = skip_space (str);
+             switch (str[0])
+               {
+               case 'i':
+                 block_type = BLOCK_TYPE_I32;
+                 str++;
+                 break;
+               case 'l':
+                 block_type = BLOCK_TYPE_I64;
+                 str++;
+                 break;
+               case 'f':
+                 block_type = BLOCK_TYPE_F32;
+                 str++;
+                 break;
+               case 'd':
+                 block_type = BLOCK_TYPE_F64;
+                 str++;
+                 break;
+               }
+             str = skip_space (str);
+             if (str[0] == ']')
+               str++;
+             else
+               as_bad (_("only single block types allowed"));
+             str = skip_space (str);
+           }
+         else
+           {
+             str++;
+             str = skip_space (str);
+           }
+       }
+      else
+       as_bad (_("instruction does not take a block type"));
+    }
+
+  switch (opcode->clas)
+    {
+    case wasm_drop:
+    case wasm_special:
+    case wasm_binary:
+    case wasm_unary:
+    case wasm_relational:
+    case wasm_select:
+    case wasm_eqz:
+    case wasm_conv:
+    case wasm_return:
+      break;
+    case wasm_typed:
+      if (block_type == 0)
+       as_bad (_("missing block type"));
+      FRAG_APPEND_1_CHAR (block_type);
+      break;
+    case wasm_store:
+    case wasm_load:
+      if (str[0] == 'a' && str[1] == '=')
+       {
+         str += 2;
+         if (!wasm32_uleb128 (&str, 32))
+           as_bad (_("missing alignment hint"));
+       }
+      else
+       {
+         as_bad (_("missing alignment hint"));
+       }
+      str = skip_space (str);
+      if (!wasm32_uleb128 (&str, 32))
+       as_bad (_("missing offset"));
+      break;
+    case wasm_set_local:
+    case wasm_get_local:
+    case wasm_tee_local:
+      if (!wasm32_uleb128 (&str, 32))
+       as_bad (_("missing local index"));
+      break;
+    case wasm_break:
+    case wasm_break_if:
+      if (!wasm32_uleb128 (&str, 32))
+       as_bad (_("missing break count"));
+      break;
+    case wasm_current_memory:
+    case wasm_grow_memory:
+      if (!wasm32_uleb128 (&str, 32))
+       as_bad (_("missing reserved current_memory/grow_memory argument"));
+      break;
+    case wasm_call:
+      if (!wasm32_uleb128 (&str, 32))
+       as_bad (_("missing call argument"));
+      break;
+    case wasm_call_indirect:
+      if (!wasm32_uleb128 (&str, 32))
+       as_bad (_("missing call signature"));
+      if (!wasm32_uleb128 (&str, 32))
+       as_bad (_("missing table index"));
+      break;
+    case wasm_constant_i32:
+      wasm32_sleb128 (&str, 32);
+      break;
+    case wasm_constant_i64:
+      wasm32_sleb128 (&str, 64);
+      break;
+    case wasm_constant_f32:
+      wasm32_f32 (&str);
+      return;
+    case wasm_constant_f64:
+      wasm32_f64 (&str);
+      return;
+    case wasm_break_table:
+      {
+       do
+         {
+           wasm32_uleb128 (&str, 32);
+           str = skip_space (str);
+         }
+       while (str[0]);
+
+       break;
+      }
+    case wasm_signature:
+      wasm32_signature (&str);
+    }
+  str = skip_space (str);
+
+  if (*str)
+    as_bad (_("junk at end of line, first unrecognized character is `%c'"),
+           *str);
+
+  *line = str;
+
+  return;
+}
+
+/* Main assembly function.  Find the opcode and call
+   wasm32_operands().  */
+
+void
+md_assemble (char *str)
+{
+  char op[32];
+  char *t;
+  struct wasm32_opcode_s *opcode;
+
+  str = skip_space (extract_opcode (str, op, sizeof (op)));
+
+  if (!op[0])
+    as_bad (_("can't find opcode "));
+
+  opcode = (struct wasm32_opcode_s *) hash_find (wasm32_hash, op);
+
+  if (opcode == NULL)
+    {
+      as_bad (_("unknown opcode `%s'"), op);
+      return;
+    }
+
+  dwarf2_emit_insn (0);
+
+  t = input_line_pointer;
+  wasm32_operands (opcode, &str);
+  input_line_pointer = t;
+}
+
+/* Don't replace PLT/GOT relocations with section symbols, so they
+   don't get an addend.  */
+
+int
+wasm32_force_relocation (fixS * f)
+{
+  if (f->fx_r_type == BFD_RELOC_WASM32_LEB128_PLT
+      || f->fx_r_type == BFD_RELOC_WASM32_LEB128_GOT)
+    return 1;
+
+  return 0;
+}
+
+/* Don't replace PLT/GOT relocations with section symbols, so they
+   don't get an addend.  */
+
+bfd_boolean
+wasm32_fix_adjustable (fixS * fixP)
+{
+  if (fixP->fx_addsy == NULL)
+    return TRUE;
+
+  if (fixP->fx_r_type == BFD_RELOC_WASM32_LEB128_PLT
+      || fixP->fx_r_type == BFD_RELOC_WASM32_LEB128_GOT)
+    return FALSE;
+
+  return TRUE;
+}
+
+/* Generate a reloc for FIXP.  */
+
+arelent *
+tc_gen_reloc (asection * sec ATTRIBUTE_UNUSED, fixS * fixp)
+{
+  arelent *reloc;
+
+  reloc = (arelent *) xmalloc (sizeof (*reloc));
+  reloc->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
+  *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
+  reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
+
+  /* Make sure none of our internal relocations make it this far.
+     They'd better have been fully resolved by this point.  */
+  gas_assert ((int) fixp->fx_r_type > 0);
+
+  reloc->howto = bfd_reloc_type_lookup (stdoutput, fixp->fx_r_type);
+  if (reloc->howto == NULL)
+    {
+      as_bad_where (fixp->fx_file, fixp->fx_line,
+                   _("cannot represent `%s' relocation in object file"),
+                   bfd_get_reloc_code_name (fixp->fx_r_type));
+      return NULL;
+    }
+
+  reloc->addend = fixp->fx_offset;
+
+  return reloc;
+}
diff --git a/gas/config/tc-wasm32.h b/gas/config/tc-wasm32.h
new file mode 100644 (file)
index 0000000..220ad56
--- /dev/null
@@ -0,0 +1,89 @@
+/* This file is tc-wasm32.h.
+   Copyright (C) 2017 Free Software Foundation, Inc.
+
+   This file is part of GAS, the GNU Assembler.
+
+   GAS 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, or (at your option)
+   any later version.
+
+   GAS 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 GAS; see the file COPYING.  If not, write to the Free
+   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+   02110-1301, USA.  */
+
+#define TC_WASM32
+#define TARGET_FORMAT                       "elf32-wasm32"
+#define TARGET_ARCH                        bfd_arch_wasm32
+#define TARGET_MACH                                      1
+
+/* WebAssembly is strictly little-endian.  */
+#define TARGET_BYTES_BIG_ENDIAN                          0
+#define md_number_to_chars    number_to_chars_littleendian
+
+#define DIFF_EXPR_OK
+
+/* No machine-dependent operand expressions.  */
+#define md_operand(x)
+
+/* No broken word processing.  */
+#define WORKING_DOT_WORD
+
+/* Force some relocations.  */
+#define EXTERN_FORCE_RELOC                     1
+extern int wasm32_force_relocation (struct fix *);
+#define TC_FORCE_RELOCATION(fix)               wasm32_force_relocation (fix)
+#define TC_FORCE_RELOCATION_LOCAL(fix)         1
+#define TC_FORCE_RELOCATION_SUB_SAME(fix,seg)  wasm32_force_relocation (fix)
+#define TC_FORCE_RELOCATION_SUB_ABS(fix,seg)   wasm32_force_relocation (fix)
+#define TC_FORCE_RELOCATION_SUB_LOCAL(fix,seg) wasm32_force_relocation (fix)
+#define TC_VALIDATE_FIX_SUB(fix,seg)           wasm32_force_relocation (fix)
+
+/* This is ELF, values passed to md_apply_fix don't include the symbol
+   value.  */
+#define MD_APPLY_SYM_VALUE(FIX)         0
+
+/* PC-relative relocations are relative to the relocation offset.  */
+#define MD_PCREL_FROM_SECTION(FIX, SEC) 0
+
+#define DWARF2_LINE_MIN_INSN_LENGTH    1
+
+/* WebAssembly uses 32-bit addresses.  */
+#define TC_ADDRESS_BYTES()              4
+#define DWARF2_ADDR_SIZE(bfd)           4
+
+/* Enable cfi directives.  */
+#define TARGET_USE_CFIPOP               1
+
+/* The stack grows down, and there is no harm in claiming it is only
+   byte aligned.  */
+#define DWARF2_CIE_DATA_ALIGNMENT      -1
+
+/* Define the column that represents the PC.  FIXME: this depends on
+   the ABI. */
+#define DWARF2_DEFAULT_RETURN_COLUMN   36
+
+/* Define a hook to setup initial CFI state.  */
+#define tc_cfi_frame_initial_instructions() do { } while (0)
+
+#define elf_tc_final_processing()
+#define md_post_relax_hook
+#define md_start_line_hook()
+#define HANDLE_ALIGN(fragP)
+
+
+extern bfd_boolean wasm32_fix_adjustable (struct fix *);
+#define tc_fix_adjustable(FIX) wasm32_fix_adjustable (FIX)
+
+/* Type names for blocks and signatures.  */
+#define BLOCK_TYPE_NONE              0x40
+#define BLOCK_TYPE_I32               0x7f
+#define BLOCK_TYPE_I64               0x7e
+#define BLOCK_TYPE_F32               0x7d
+#define BLOCK_TYPE_F64               0x7c
index acc3cf0aef532fac94272489b7c96b838197b79f..6000c7c202e25490e397c5439fc882ca72622602 100644 (file)
@@ -111,6 +111,7 @@ case ${cpu} in
   tilegx*)             cpu_type=tilegx endian=little ;;
   v850*)               cpu_type=v850 ;;
   visium)              cpu_type=visium endian=big ;;
+  wasm32)               cpu_type=wasm32 endian=little ;;
   x86_64*)             cpu_type=i386 arch=x86_64;;
   xgate)               cpu_type=xgate ;;
   xtensa*)             cpu_type=xtensa arch=xtensa ;;
@@ -462,6 +463,8 @@ case ${generic_target} in
 
   visium-*-elf)                                fmt=elf ;;
 
+  wasm32-*-*)                           fmt=elf ;;
+
   xstormy16-*-*)                       fmt=elf ;;
   
   xgate-*-*)                           fmt=elf ;;
index 5a2dd4afb96ff960805784afa118be69852735cc..d0a1a9ab06bda0f96ad1c2024339e56c85c7c4a3 100644 (file)
@@ -77,6 +77,7 @@
 @set V850
 @set VAX
 @set VISIUM
+@set WASM32
 @set XGATE
 @set XSTORMY16
 @set XTENSA
index 56a38bf70ee43960f466418eef8c7f5f08b4c4d7..d03d0b64c4805b57e02fb9cc6f8f635d8060880a 100644 (file)
@@ -7728,8 +7728,11 @@ subject, see the hardware manufacturer's manual.
 @ifset VISIUM
 * Visium-Dependent::            Visium Dependent Features
 @end ifset
+@ifset WASM32
+* WebAssembly-Dependent::       WebAssembly Dependent Features
+@end ifset
 @ifset XGATE
-* XGATE-Dependent::             XGATE Features
+* XGATE-Dependent::             XGATE Dependent Features
 @end ifset
 @ifset XSTORMY16
 * XSTORMY16-Dependent::         XStormy16 Dependent Features
@@ -7975,6 +7978,10 @@ family.
 @include c-visium.texi
 @end ifset
 
+@ifset WASM32
+@include c-wasm32.texi
+@end ifset
+
 @ifset XGATE
 @include c-xgate.texi
 @end ifset
diff --git a/gas/doc/c-wasm32.texi b/gas/doc/c-wasm32.texi
new file mode 100644 (file)
index 0000000..8eac7a4
--- /dev/null
@@ -0,0 +1,119 @@
+@c Copyright (C) 2017 Free Software Foundation, Inc.
+@c This is part of the GAS manual.
+@c For copying conditions, see the file as.texinfo.
+@c man end
+
+@ifset GENERIC
+@page
+@node WebAssembly-Dependent
+@chapter WebAssembly Dependent Features
+@end ifset
+
+@ifclear GENERIC
+@node Machine Dependencies
+@chapter WebAssembly Dependent Features
+@end ifclear
+
+@cindex WebAssembly support
+@menu
+* WebAssembly-Notes::                Notes
+* WebAssembly-Syntax::               Syntax
+* WebAssembly-Floating-Point::       Floating Point
+* WebAssembly-Opcodes::              Opcodes
+* WebAssembly-module-layout::        Module Layout
+@end menu
+
+@node WebAssembly-Notes
+@section Notes
+@cindex WebAssembly notes
+@cindex notes for WebAssembly
+
+While WebAssembly provides its own module format for executables, this
+documentation describes how to use @code{@value{AS}} to produce
+intermediate ELF object format files.
+
+@node WebAssembly-Syntax
+@section Syntax
+@cindex WebAssembly Syntax
+The assembler syntax directly encodes sequences of opcodes as defined
+in the WebAssembly binary encoding specification at
+https://github.com/webassembly/spec/BinaryEncoding.md.  Structured
+sexp-style expressions are not supported as input.
+
+@menu
+* WebAssembly-Chars::                Special Characters
+* WebAssembly-Relocs::               Relocations
+* WebAssembly-Signatures::           Signatures
+@end menu
+
+@node WebAssembly-Chars
+@subsection Special Characters
+
+@cindex line comment character, WebAssembly
+@cindex WebAssembly line comment character
+@samp{#} and @samp{;} are the line comment characters.  Note that if
+@samp{#} is the first character on a line then it can also be a
+logical line number directive (@pxref{Comments}) or a preprocessor
+control command (@pxref{Preprocessing}).
+
+@node WebAssembly-Relocs
+@subsection Relocations
+@cindex WebAssembly relocations
+@cindex relocations, WebAssembly
+
+Special relocations are available by using the @samp{@@@var{plt}},
+@samp{@@@var{got}}, or @samp{@@@var{got}} suffixes after a constant
+expression, which correspond to the R_ASMJS_LEB128_PLT,
+R_ASMJS_LEB128_GOT, and R_ASMJS_LEB128_GOT_CODE relocations,
+respectively.
+
+The @samp{@@@var{plt}} suffix is followed by a symbol name in braces;
+the symbol value is used to determine the function signature for which
+a PLT stub is generated. Currently, the symbol @emph{name} is parsed
+from its last @samp{F} character to determine the argument count of
+the function, which is also necessary for generating a PLT stub.
+
+@node WebAssembly-Signatures
+@subsection Signatures
+@cindex WebAssembly signatures
+@cindex signatures, WebAssembly
+
+Function signatures are specified with the @code{signature}
+pseudo-opcode, followed by a simple function signature imitating a
+C++-mangled function type: @code{F} followed by an optional @code{v},
+then a sequence of @code{i}, @code{l}, @code{f}, and @code{d}
+characters to mark i32, i64, f32, and f64 parameters, respectively;
+followed by a final @code{E} to mark the end of the function
+signature.
+
+@node WebAssembly-Floating-Point
+@section Floating Point
+@cindex floating point, WebAssembly (@sc{ieee})
+@cindex WebAssembly floating point (@sc{ieee})
+WebAssembly uses little-endian @sc{ieee} floating-point numbers.
+
+@node WebAssembly-Opcodes
+@section Regular Opcodes
+@cindex opcodes, WebAssembly
+@cindex WebAssembly opcodes
+Ordinary instructions are encoded with the WebAssembly mnemonics as
+listed at:
+@url{https://github.com/WebAssembly/design/blob/master/BinaryEncoding.md}.
+
+Opcodes are written directly in the order in which they are encoded,
+without going through an intermediate sexp-style expression as in the
+@code{was} format.
+
+For ``typed'' opcodes (block, if, etc.), the type of the block is
+specified in square brackets following the opcode: @code{if[i]},
+@code{if[]}.
+
+@node WebAssembly-module-layout
+@section WebAssembly Module Layout
+@cindex module layout, WebAssembly
+@cindex WebAssembly module layout
+@code{@value{AS}} will only produce ELF output, not a valid
+WebAssembly module. It is possible to make @code{@value{AS}} produce
+output in a single ELF section which becomes a valid WebAssembly
+module, but a linker script to do so may be preferrable, as it doesn't
+require running the entire module through the assembler at once.
index 98861f7e8e128db538af851b2b89b0a130e0ae67..51bbb5bd5b6ed2b64f2c5d69cbd2ec9df809422b 100644 (file)
@@ -169,6 +169,8 @@ config/tc-vax.c
 config/tc-vax.h
 config/tc-visium.c
 config/tc-visium.h
+config/tc-wasm32.c
+config/tc-wasm32.h
 config/tc-xc16x.c
 config/tc-xc16x.h
 config/tc-xgate.c
index 36a2f81d1e7ba875ec4b19ebe53412b747fe9452..e971173b95b150b5031b3168b79165cfacd00b8f 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-29 17:08+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"
@@ -406,7 +406,7 @@ msgstr ""
 
 #: as.c:663
 #, c-format
-msgid "Copyright (C) 2016 Free Software Foundation, Inc.\n"
+msgid "Copyright (C) 2017 Free Software Foundation, Inc.\n"
 msgstr ""
 
 #: as.c:664
@@ -514,37 +514,37 @@ msgstr ""
 msgid "%s: data size %ld\n"
 msgstr ""
 
-#: as.c:1338
+#: as.c:1339
 #, c-format
 msgid "%d warning"
 msgstr ""
 
-#: as.c:1340
+#: as.c:1341
 #, c-format
 msgid "%d warnings"
 msgstr ""
 
-#: as.c:1342
+#: as.c:1343
 #, c-format
 msgid "%d error"
 msgstr ""
 
-#: as.c:1344
+#: as.c:1345
 #, c-format
 msgid "%d errors"
 msgstr ""
 
-#: as.c:1349
+#: as.c:1350
 #, c-format
 msgid "%s, treating warnings as errors"
 msgstr ""
 
-#: as.c:1360
+#: as.c:1361
 #, c-format
 msgid "%s, %s, generating bad object file\n"
 msgstr ""
 
-#: as.h:174
+#: as.h:173
 #, c-format
 msgid "Case value %ld unexpected at line %d of file \"%s\"\n"
 msgstr ""
@@ -558,10 +558,10 @@ msgid "failed sanity check"
 msgstr ""
 
 #: cgen.c:107 config/tc-alpha.c:2099 config/tc-alpha.c:2123
-#: config/tc-arc.c:3968 config/tc-arc.c:4026 config/tc-d10v.c:550
+#: config/tc-arc.c:3982 config/tc-arc.c:4056 config/tc-d10v.c:550
 #: config/tc-d30v.c:537 config/tc-mn10200.c:1098 config/tc-mn10300.c:1752
-#: config/tc-ppc.c:2872 config/tc-ppc.c:3049 config/tc-ppc.c:3314
-#: config/tc-s390.c:1331 config/tc-s390.c:1454 config/tc-s390.c:1587
+#: config/tc-ppc.c:2925 config/tc-ppc.c:3111 config/tc-ppc.c:3376
+#: config/tc-s390.c:1333 config/tc-s390.c:1456 config/tc-s390.c:1589
 #: config/tc-v850.c:2538 config/tc-v850.c:2609 config/tc-v850.c:2656
 #: config/tc-v850.c:2693 config/tc-v850.c:2730 config/tc-v850.c:2993
 msgid "too many fixups"
@@ -569,7 +569,7 @@ msgstr ""
 
 #: cgen.c:372 cgen.c:392 config/tc-d10v.c:461 config/tc-d30v.c:453
 #: config/tc-i370.c:2125 config/tc-mn10200.c:1040 config/tc-mn10300.c:1677
-#: config/tc-ppc.c:2914 config/tc-s390.c:1302 config/tc-v850.c:2647
+#: config/tc-ppc.c:2967 config/tc-s390.c:1304 config/tc-v850.c:2647
 #: config/tc-v850.c:2681 config/tc-v850.c:2721 config/tc-v850.c:2966
 #: config/tc-z80.c:446
 msgid "illegal operand"
@@ -578,8 +578,8 @@ msgstr ""
 #: cgen.c:396 config/tc-avr.c:716 config/tc-d10v.c:463 config/tc-d30v.c:455
 #: config/tc-h8300.c:502 config/tc-i370.c:2127 config/tc-mcore.c:661
 #: config/tc-microblaze.c:603 config/tc-mmix.c:495 config/tc-mn10200.c:1043
-#: config/tc-mn10300.c:1680 config/tc-msp430.c:417 config/tc-ppc.c:2916
-#: config/tc-s390.c:1320 config/tc-sh.c:1385 config/tc-sh64.c:2214
+#: config/tc-mn10300.c:1680 config/tc-msp430.c:417 config/tc-ppc.c:2969
+#: config/tc-s390.c:1322 config/tc-sh.c:1385 config/tc-sh64.c:2214
 #: config/tc-v850.c:2651 config/tc-v850.c:2685 config/tc-v850.c:2725
 #: config/tc-v850.c:2969 config/tc-xgate.c:895 config/tc-z80.c:557
 #: config/tc-z8k.c:349
@@ -595,22 +595,22 @@ msgid "operand mask overflow"
 msgstr ""
 
 #. We can't actually support subtracting a symbol.
-#: cgen.c:851 config/tc-arm.c:1753 config/tc-arm.c:10261 config/tc-arm.c:10313
-#: config/tc-arm.c:10570 config/tc-arm.c:11395 config/tc-arm.c:12531
-#: config/tc-arm.c:12571 config/tc-arm.c:12914 config/tc-arm.c:12955
-#: config/tc-arm.c:17288 config/tc-arm.c:17329 config/tc-avr.c:1339
+#: cgen.c:851 config/tc-arm.c:1753 config/tc-arm.c:10265 config/tc-arm.c:10317
+#: config/tc-arm.c:10574 config/tc-arm.c:11399 config/tc-arm.c:12535
+#: config/tc-arm.c:12575 config/tc-arm.c:12918 config/tc-arm.c:12959
+#: config/tc-arm.c:17292 config/tc-arm.c:17333 config/tc-avr.c:1339
 #: config/tc-avr.c:1351 config/tc-avr.c:1615 config/tc-cris.c:4067
-#: config/tc-d10v.c:1507 config/tc-d30v.c:1912 config/tc-mips.c:9256
-#: config/tc-mips.c:10561 config/tc-mips.c:11817 config/tc-mips.c:12476
-#: config/tc-nds32.c:6587 config/tc-ppc.c:6511 config/tc-spu.c:957
-#: config/tc-spu.c:981 config/tc-tilegx.c:1485 config/tc-tilepro.c:1346
-#: config/tc-v850.c:3452 config/tc-vax.c:282 config/tc-xstormy16.c:482
-#: config/tc-xtensa.c:5932 config/tc-xtensa.c:12955
+#: config/tc-d10v.c:1507 config/tc-d30v.c:1912 config/tc-mips.c:9265
+#: config/tc-mips.c:10570 config/tc-mips.c:11826 config/tc-mips.c:12485
+#: config/tc-nds32.c:6587 config/tc-pru.c:746 config/tc-pru.c:756
+#: config/tc-spu.c:957 config/tc-spu.c:981 config/tc-tilegx.c:1485
+#: config/tc-tilepro.c:1346 config/tc-v850.c:3452 config/tc-vax.c:282
+#: config/tc-xstormy16.c:482 config/tc-xtensa.c:5932 config/tc-xtensa.c:12967
 msgid "expression too complex"
 msgstr ""
 
-#: cgen.c:950 config/tc-ppc.c:6852 config/tc-ppc.c:7080 config/tc-s390.c:2364
-#: config/tc-v850.c:3504 config/tc-xstormy16.c:539
+#: cgen.c:950 config/tc-ppc.c:6955 config/tc-s390.c:2366 config/tc-v850.c:3504
+#: config/tc-xstormy16.c:539
 msgid "unresolved expression that must be resolved"
 msgstr ""
 
@@ -619,7 +619,7 @@ msgstr ""
 msgid "internal error: can't install fix for reloc type %d (`%s')"
 msgstr ""
 
-#: cgen.c:1026 config/tc-nios2.c:1360
+#: cgen.c:1026 config/tc-nios2.c:1360 config/tc-pru.c:787
 msgid "relocation is not supported"
 msgstr ""
 
@@ -719,12 +719,12 @@ msgstr ""
 msgid "Symbol `%s' can not be both weak and common"
 msgstr ""
 
-#: config/obj-coff.c:135 dw2gencfi.c:333
+#: config/obj-coff.c:135 dw2gencfi.c:334
 #, c-format
 msgid "Inserting \"%s\" into structure table failed: %s"
 msgstr ""
 
-#: config/obj-coff.c:214 config/obj-coff.c:1681 config/tc-ppc.c:5513
+#: config/obj-coff.c:214 config/obj-coff.c:1681 config/tc-ppc.c:5575
 #: config/tc-tic54x.c:3980 read.c:2959
 #, c-format
 msgid "error setting flags for \"%s\": %s"
@@ -739,7 +739,7 @@ msgstr ""
 msgid ".ln pseudo-op inside .def/.endef: ignored."
 msgstr ""
 
-#: config/obj-coff.c:509 ecoff.c:3237
+#: config/obj-coff.c:509 ecoff.c:3245
 msgid ".loc outside of .text"
 msgstr ""
 
@@ -774,15 +774,15 @@ msgid "badly formed .dim directive ignored"
 msgstr ""
 
 #: config/obj-coff.c:932
-msgid ".size pseudo-op used outside of .def/.endef ignored."
+msgid ".size pseudo-op used outside of .def/.endef: ignored."
 msgstr ""
 
 #: config/obj-coff.c:947
-msgid ".scl pseudo-op used outside of .def/.endef ignored."
+msgid ".scl pseudo-op used outside of .def/.endef: ignored."
 msgstr ""
 
 #: config/obj-coff.c:964
-msgid ".tag pseudo-op used outside of .def/.endef ignored."
+msgid ".tag pseudo-op used outside of .def/.endef: ignored."
 msgstr ""
 
 #: config/obj-coff.c:981
@@ -791,11 +791,11 @@ msgid "tag not found for .tag %s"
 msgstr ""
 
 #: config/obj-coff.c:994
-msgid ".type pseudo-op used outside of .def/.endef ignored."
+msgid ".type pseudo-op used outside of .def/.endef: ignored."
 msgstr ""
 
 #: config/obj-coff.c:1013
-msgid ".val pseudo-op used outside of .def/.endef ignored."
+msgid ".val pseudo-op used outside of .def/.endef: ignored."
 msgstr ""
 
 #: config/obj-coff.c:1160
@@ -824,7 +824,7 @@ msgstr ""
 msgid "unsupported section attribute '%c'"
 msgstr ""
 
-#: config/obj-coff.c:1650 config/tc-ppc.c:5495
+#: config/obj-coff.c:1650 config/tc-ppc.c:5557
 #, c-format
 msgid "unknown section attribute '%c'"
 msgstr ""
@@ -847,211 +847,211 @@ msgstr ""
 msgid "Can't set register masks"
 msgstr ""
 
-#: config/obj-elf.c:343 config/tc-sparc.c:4422 config/tc-v850.c:511
+#: config/obj-elf.c:348 config/tc-sparc.c:4461 config/tc-v850.c:511
 #, c-format
 msgid "bad .common segment %s"
 msgstr ""
 
-#: config/obj-elf.c:419
+#: config/obj-elf.c:424
 msgid "Missing symbol name in directive"
 msgstr ""
 
-#: config/obj-elf.c:627
+#: config/obj-elf.c:632
 #, c-format
 msgid "setting incorrect section type for %s"
 msgstr ""
 
-#: config/obj-elf.c:632
+#: config/obj-elf.c:637
 #, c-format
 msgid "ignoring incorrect section type for %s"
 msgstr ""
 
-#: config/obj-elf.c:683
+#: config/obj-elf.c:688
 #, c-format
 msgid "setting incorrect section attributes for %s"
 msgstr ""
 
-#: config/obj-elf.c:739
+#: config/obj-elf.c:744
 #, c-format
 msgid "ignoring changed section type for %s"
 msgstr ""
 
-#: config/obj-elf.c:751
+#: config/obj-elf.c:756
 #, c-format
 msgid "ignoring changed section attributes for %s"
 msgstr ""
 
-#: config/obj-elf.c:758
+#: config/obj-elf.c:763
 #, c-format
 msgid "ignoring changed section entity size for %s"
 msgstr ""
 
-#: config/obj-elf.c:819
+#: config/obj-elf.c:824
 msgid "unrecognized .section attribute: want a,e,w,x,M,S,G,T or number"
 msgstr ""
 
-#: config/obj-elf.c:879
+#: config/obj-elf.c:884
 msgid "extraneous characters at end of numeric section type"
 msgstr ""
 
-#: config/obj-elf.c:885 read.c:2943
+#: config/obj-elf.c:890 read.c:2943
 msgid "unrecognized section type"
 msgstr ""
 
-#: config/obj-elf.c:917
+#: config/obj-elf.c:922
 msgid "unrecognized section attribute"
 msgstr ""
 
-#: config/obj-elf.c:948 config/tc-alpha.c:4208
+#: config/obj-elf.c:953 config/tc-alpha.c:4208
 msgid "missing name"
 msgstr ""
 
-#: config/obj-elf.c:1107
+#: config/obj-elf.c:1112
 msgid "invalid merge entity size"
 msgstr ""
 
-#: config/obj-elf.c:1114
+#: config/obj-elf.c:1119
 msgid "entity size for SHF_MERGE not specified"
 msgstr ""
 
-#: config/obj-elf.c:1120
+#: config/obj-elf.c:1125
 msgid "? section flag ignored with G present"
 msgstr ""
 
-#: config/obj-elf.c:1144
+#: config/obj-elf.c:1149
 msgid "group name for SHF_GROUP not specified"
 msgstr ""
 
-#: config/obj-elf.c:1167
+#: config/obj-elf.c:1172
 msgid "character following name is not '#'"
 msgstr ""
 
-#: config/obj-elf.c:1286
+#: config/obj-elf.c:1291
 msgid ".previous without corresponding .section; ignored"
 msgstr ""
 
-#: config/obj-elf.c:1312
+#: config/obj-elf.c:1317
 msgid ".popsection without corresponding .pushsection; ignored"
 msgstr ""
 
-#: config/obj-elf.c:1358
+#: config/obj-elf.c:1363
 msgid "expected comma after name in .symver"
 msgstr ""
 
-#: config/obj-elf.c:1381
+#: config/obj-elf.c:1386
 #, c-format
 msgid "missing version name in `%s' for symbol `%s'"
 msgstr ""
 
-#: config/obj-elf.c:1392
+#: config/obj-elf.c:1397
 #, c-format
 msgid "multiple versions [`%s'|`%s'] for symbol `%s'"
 msgstr ""
 
-#: config/obj-elf.c:1428
+#: config/obj-elf.c:1433
 #, c-format
 msgid "expected `%s' to have already been set for .vtable_inherit"
 msgstr ""
 
-#: config/obj-elf.c:1438
+#: config/obj-elf.c:1443
 msgid "expected comma after name in .vtable_inherit"
 msgstr ""
 
-#: config/obj-elf.c:1490
+#: config/obj-elf.c:1495
 msgid "expected comma after name in .vtable_entry"
 msgstr ""
 
-#: config/obj-elf.c:1620
+#: config/obj-elf.c:1625
 #, c-format
 msgid "Attribute name not recognised: %s"
 msgstr ""
 
-#: config/obj-elf.c:1637
+#: config/obj-elf.c:1642
 msgid "expected numeric constant"
 msgstr ""
 
-#: config/obj-elf.c:1646 config/tc-arm.c:6441
+#: config/obj-elf.c:1651 config/tc-arm.c:6445
 msgid "expected comma"
 msgstr ""
 
-#: config/obj-elf.c:1679
+#: config/obj-elf.c:1684
 msgid "bad string constant"
 msgstr ""
 
-#: config/obj-elf.c:1683
+#: config/obj-elf.c:1688
 msgid "expected <tag> , <value>"
 msgstr ""
 
-#: config/obj-elf.c:1802
+#: config/obj-elf.c:1807
 msgid "expected quoted string"
 msgstr ""
 
-#: config/obj-elf.c:1822
+#: config/obj-elf.c:1827
 #, c-format
 msgid "expected comma after name `%s' in .size directive"
 msgstr ""
 
-#: config/obj-elf.c:1831
+#: config/obj-elf.c:1836
 msgid "missing expression in .size directive"
 msgstr ""
 
-#: config/obj-elf.c:1954
+#: config/obj-elf.c:1959
 #, c-format
 msgid "symbol '%s' is already defined"
 msgstr ""
 
-#: config/obj-elf.c:1975
+#: config/obj-elf.c:1980
 #, c-format
 msgid "symbol type \"%s\" is supported only by GNU and FreeBSD targets"
 msgstr ""
 
-#: config/obj-elf.c:1987
+#: config/obj-elf.c:1992
 #, c-format
 msgid "symbol type \"%s\" is supported only by GNU targets"
 msgstr ""
 
-#: config/obj-elf.c:1998
+#: config/obj-elf.c:2003
 #, c-format
 msgid "unrecognized symbol type \"%s\""
 msgstr ""
 
-#: config/obj-elf.c:2165 config/obj-elf.c:2168
+#: config/obj-elf.c:2170 config/obj-elf.c:2173
 #, c-format
 msgid ".size expression for %s does not evaluate to a constant"
 msgstr ""
 
-#: config/obj-elf.c:2202
+#: config/obj-elf.c:2207
 #, c-format
 msgid ""
 "invalid attempt to declare external version name as default in symbol `%s'"
 msgstr ""
 
-#: config/obj-elf.c:2264 ecoff.c:3592
+#: config/obj-elf.c:2269 ecoff.c:3600
 #, c-format
 msgid "symbol `%s' can not be both weak and common"
 msgstr ""
 
-#: config/obj-elf.c:2379
+#: config/obj-elf.c:2384
 #, c-format
 msgid "assuming all members of group `%s' are COMDAT"
 msgstr ""
 
-#: config/obj-elf.c:2391
+#: config/obj-elf.c:2396
 #, c-format
 msgid "can't create group: %s"
 msgstr ""
 
-#: config/obj-elf.c:2529
+#: config/obj-elf.c:2534
 #, c-format
 msgid "failed to set up debugging information: %s"
 msgstr ""
 
-#: config/obj-elf.c:2549
+#: config/obj-elf.c:2554
 #, c-format
 msgid "can't start writing .mdebug section: %s"
 msgstr ""
 
-#: config/obj-elf.c:2557
+#: config/obj-elf.c:2562
 #, c-format
 msgid "could not write .mdebug section: %s"
 msgstr ""
@@ -1074,7 +1074,7 @@ msgstr ""
 
 #: config/obj-macho.c:195
 #, c-format
-msgid "cannot overide zerofill section type for `%s,%s'"
+msgid "cannot override zerofill section type for `%s,%s'"
 msgstr ""
 
 #: config/obj-macho.c:249
@@ -1101,7 +1101,7 @@ msgid "missing sizeof_stub expression"
 msgstr ""
 
 #: config/obj-macho.c:476 config/tc-ia64.c:1083 config/tc-ia64.c:11770
-#: config/tc-score.c:6103 read.c:1714
+#: config/tc-score.c:6103 expr.c:1172 expr.c:1325 read.c:1714
 msgid "expected symbol name"
 msgstr ""
 
@@ -1118,7 +1118,7 @@ msgstr ""
 msgid "size (%ld) out of range, ignored"
 msgstr ""
 
-#: config/obj-macho.c:514 config/tc-score.c:6264 ecoff.c:3351 read.c:1770
+#: config/obj-macho.c:514 config/tc-score.c:6264 ecoff.c:3359 read.c:1770
 #: read.c:1875 read.c:2626 read.c:3257 read.c:3636 symbols.c:339 symbols.c:435
 #, c-format
 msgid "symbol `%s' is already defined"
@@ -1359,12 +1359,12 @@ msgid "invalid register type %d"
 msgstr ""
 
 #: config/tc-aarch64.c:586 config/tc-aarch64.c:588 config/tc-arm.c:1048
-#: config/tc-score.c:6514 expr.c:1363 read.c:2608
+#: config/tc-score.c:6514 expr.c:1385 read.c:2608
 msgid "bad expression"
 msgstr ""
 
 #: config/tc-aarch64.c:598 config/tc-arm.c:1059 config/tc-i860.c:1003
-#: config/tc-sparc.c:3327
+#: config/tc-sparc.c:3366
 msgid "bad segment"
 msgstr ""
 
@@ -1496,8 +1496,8 @@ msgstr ""
 msgid "literal pool overflow"
 msgstr ""
 
-#: config/tc-aarch64.c:1902 config/tc-aarch64.c:5887 config/tc-arm.c:3531
-#: config/tc-arm.c:6949
+#: config/tc-aarch64.c:1902 config/tc-aarch64.c:5892 config/tc-arm.c:3531
+#: config/tc-arm.c:6953
 msgid "unrecognized relocation suffix"
 msgstr ""
 
@@ -1513,11 +1513,11 @@ msgstr ""
 msgid "missing immediate expression"
 msgstr ""
 
-#: config/tc-aarch64.c:2343 config/tc-aarch64.c:5711 config/tc-aarch64.c:5731
+#: config/tc-aarch64.c:2343 config/tc-aarch64.c:5716 config/tc-aarch64.c:5736
 msgid "invalid floating-point constant"
 msgstr ""
 
-#: config/tc-aarch64.c:2973 config/tc-arm.c:5107 config/tc-arm.c:5116
+#: config/tc-aarch64.c:2973 config/tc-arm.c:5111 config/tc-arm.c:5120
 msgid "shift expression expected"
 msgstr ""
 
@@ -1620,7 +1620,7 @@ msgstr ""
 msgid "invalid expression in the address"
 msgstr ""
 
-#: config/tc-aarch64.c:3566 config/tc-arm.c:5642 config/tc-arm.c:6219
+#: config/tc-aarch64.c:3566 config/tc-arm.c:5646 config/tc-arm.c:6223
 msgid "']' expected"
 msgstr ""
 
@@ -1628,7 +1628,7 @@ msgstr ""
 msgid "register offset not allowed in pre-indexed addressing mode"
 msgstr ""
 
-#: config/tc-aarch64.c:3589 config/tc-arm.c:5678
+#: config/tc-aarch64.c:3589 config/tc-arm.c:5682
 msgid "cannot combine pre- and post-indexing"
 msgstr ""
 
@@ -1715,7 +1715,7 @@ msgstr ""
 msgid "%s out of range %d to %d at operand %d -- `%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:4652 config/tc-aarch64.c:4656 config/tc-aarch64.c:6416
+#: config/tc-aarch64.c:4652 config/tc-aarch64.c:4656 config/tc-aarch64.c:6422
 msgid "immediate value"
 msgstr ""
 
@@ -1763,328 +1763,328 @@ msgstr ""
 msgid "the top half of a 128-bit FP/SIMD register is expected"
 msgstr ""
 
-#: config/tc-aarch64.c:5490 config/tc-arm.c:1883 config/tc-arm.c:1928
+#: config/tc-aarch64.c:5493 config/tc-arm.c:1883 config/tc-arm.c:1928
 #: config/tc-h8300.c:1048
 msgid "invalid register list"
 msgstr ""
 
-#: config/tc-aarch64.c:5510
+#: config/tc-aarch64.c:5513
 msgid "missing type suffix"
 msgstr ""
 
-#: config/tc-aarch64.c:5529
+#: config/tc-aarch64.c:5532
 msgid "C0 - C15 expected"
 msgstr ""
 
-#: config/tc-aarch64.c:5626 config/tc-aarch64.c:5650
+#: config/tc-aarch64.c:5631 config/tc-aarch64.c:5655
 msgid "immediate zero expected"
 msgstr ""
 
-#: config/tc-aarch64.c:5746
+#: config/tc-aarch64.c:5751
 msgid "shift not allowed for bitmask immediate"
 msgstr ""
 
-#: config/tc-aarch64.c:5800
+#: config/tc-aarch64.c:5805
 msgid "can't mix relocation modifier with explicit shift"
 msgstr ""
 
-#: config/tc-aarch64.c:5848
+#: config/tc-aarch64.c:5853
 msgid "invalid condition"
 msgstr ""
 
-#: config/tc-aarch64.c:5874
+#: config/tc-aarch64.c:5879
 msgid "invalid pc-relative address"
 msgstr ""
 
 #. Only permit "=value" in the literal load instructions.
 #. The literal will be generated by programmer_friendly_fixup.
-#: config/tc-aarch64.c:5882
+#: config/tc-aarch64.c:5887
 msgid "invalid use of \"=immediate\""
 msgstr ""
 
-#: config/tc-aarch64.c:5947 config/tc-aarch64.c:5979 config/tc-aarch64.c:5997
-#: config/tc-aarch64.c:6019 config/tc-aarch64.c:6038 config/tc-aarch64.c:6057
-#: config/tc-aarch64.c:6076 config/tc-aarch64.c:6110 config/tc-aarch64.c:6117
-#: config/tc-aarch64.c:6146 config/tc-aarch64.c:6171 config/tc-aarch64.c:6187
-#: config/tc-aarch64.c:6211
+#: config/tc-aarch64.c:5952 config/tc-aarch64.c:5984 config/tc-aarch64.c:6002
+#: config/tc-aarch64.c:6024 config/tc-aarch64.c:6043 config/tc-aarch64.c:6062
+#: config/tc-aarch64.c:6081 config/tc-aarch64.c:6116 config/tc-aarch64.c:6123
+#: config/tc-aarch64.c:6152 config/tc-aarch64.c:6177 config/tc-aarch64.c:6193
+#: config/tc-aarch64.c:6217
 msgid "invalid addressing mode"
 msgstr ""
 
-#: config/tc-aarch64.c:5963
+#: config/tc-aarch64.c:5968
 msgid "the optional immediate offset can only be 0"
 msgstr ""
 
-#: config/tc-aarch64.c:6002 config/tc-aarch64.c:6024 config/tc-aarch64.c:6043
+#: config/tc-aarch64.c:6007 config/tc-aarch64.c:6029 config/tc-aarch64.c:6048
 msgid "relocation not allowed"
 msgstr ""
 
-#: config/tc-aarch64.c:6086
+#: config/tc-aarch64.c:6091
 msgid "writeback value must be an immediate constant"
 msgstr ""
 
 #. Make sure this has priority over
 #. "invalid addressing mode".
-#: config/tc-aarch64.c:6125
+#: config/tc-aarch64.c:6131
 msgid "constant offset required"
 msgstr ""
 
-#: config/tc-aarch64.c:6221
+#: config/tc-aarch64.c:6227
 msgid "unknown or missing system register name"
 msgstr ""
 
-#: config/tc-aarch64.c:6231
+#: config/tc-aarch64.c:6237
 msgid "unknown or missing PSTATE field name"
 msgstr ""
 
-#: config/tc-aarch64.c:6255
+#: config/tc-aarch64.c:6261
 msgid "unknown or missing operation name"
 msgstr ""
 
-#: config/tc-aarch64.c:6268
+#: config/tc-aarch64.c:6274
 msgid "the specified option is not accepted in ISB"
 msgstr ""
 
-#: config/tc-aarch64.c:6294 config/tc-aarch64.c:7416 config/tc-arm.c:7164
+#: config/tc-aarch64.c:6300 config/tc-aarch64.c:7422 config/tc-arm.c:7168
 #, c-format
 msgid "unhandled operand code %d"
 msgstr ""
 
-#: config/tc-aarch64.c:6336
+#: config/tc-aarch64.c:6342
 msgid "unexpected comma before the omitted optional operand"
 msgstr ""
 
-#: config/tc-aarch64.c:6364
+#: config/tc-aarch64.c:6370
 msgid "unexpected characters following instruction"
 msgstr ""
 
-#: config/tc-aarch64.c:6442 config/tc-arm.c:5218 config/tc-arm.c:5777
-#: config/tc-arm.c:7911
+#: config/tc-aarch64.c:6448 config/tc-arm.c:5222 config/tc-arm.c:5781
+#: config/tc-arm.c:7915
 msgid "constant expression expected"
 msgstr ""
 
-#: config/tc-aarch64.c:6449
+#: config/tc-aarch64.c:6455
 msgid "literal pool insertion failed"
 msgstr ""
 
-#: config/tc-aarch64.c:6518 config/tc-aarch64.c:6530
+#: config/tc-aarch64.c:6524 config/tc-aarch64.c:6536
 #, c-format
 msgid "unpredictable transfer with writeback -- `%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:6534
+#: config/tc-aarch64.c:6540
 #, c-format
 msgid "unpredictable load of register pair -- `%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:6611
+#: config/tc-aarch64.c:6617
 #, c-format
 msgid "unknown mnemonic `%s' -- `%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:6619
+#: config/tc-aarch64.c:6625
 #, c-format
 msgid "unexpected comma after the mnemonic name `%s' -- `%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:6677
+#: config/tc-aarch64.c:6683
 #, c-format
 msgid "selected processor does not support `%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:7079 config/tc-arm.c:22521
+#: config/tc-aarch64.c:7085 config/tc-arm.c:22525
 msgid "GOT already in the symbol table"
 msgstr ""
 
-#: config/tc-aarch64.c:7241
+#: config/tc-aarch64.c:7247
 msgid "immediate cannot be moved by a single instruction"
 msgstr ""
 
-#: config/tc-aarch64.c:7284 config/tc-aarch64.c:7329 config/tc-aarch64.c:7355
-#: config/tc-arm.c:15313 config/tc-arm.c:15340 config/tc-arm.c:15982
-#: config/tc-arm.c:16469 config/tc-arm.c:17291 config/tc-arm.c:17331
+#: config/tc-aarch64.c:7290 config/tc-aarch64.c:7335 config/tc-aarch64.c:7361
+#: config/tc-arm.c:15317 config/tc-arm.c:15344 config/tc-arm.c:15986
+#: config/tc-arm.c:16473 config/tc-arm.c:17295 config/tc-arm.c:17335
 #: config/tc-metag.c:2444 config/tc-metag.c:2453 config/tc-metag.c:2492
 #: config/tc-metag.c:2501 config/tc-metag.c:3021 config/tc-metag.c:3030
 msgid "immediate out of range"
 msgstr ""
 
-#: config/tc-aarch64.c:7348 config/tc-metag.c:4656 config/tc-xtensa.c:4184
+#: config/tc-aarch64.c:7354 config/tc-metag.c:4656 config/tc-xtensa.c:4184
 msgid "invalid immediate"
 msgstr ""
 
-#: config/tc-aarch64.c:7411 config/tc-tic6x.c:3861 config/tc-tic6x.c:3926
+#: config/tc-aarch64.c:7417 config/tc-tic6x.c:3861 config/tc-tic6x.c:3926
 #: config/tc-tic6x.c:3953 config/tc-tic6x.c:3981
 msgid "immediate offset out of range"
 msgstr ""
 
-#: config/tc-aarch64.c:7485 config/tc-arm.c:22859 config/tc-arm.c:22927
-#: config/tc-arm.c:23209
+#: config/tc-aarch64.c:7491 config/tc-arm.c:22863 config/tc-arm.c:22931
+#: config/tc-arm.c:23213
 #, c-format
 msgid "undefined symbol %s used as an immediate value"
 msgstr ""
 
-#: config/tc-aarch64.c:7497
+#: config/tc-aarch64.c:7503
 msgid "pc-relative load offset not word aligned"
 msgstr ""
 
-#: config/tc-aarch64.c:7500
+#: config/tc-aarch64.c:7506
 msgid "pc-relative load offset out of range"
 msgstr ""
 
-#: config/tc-aarch64.c:7512
+#: config/tc-aarch64.c:7518
 msgid "pc-relative address offset out of range"
 msgstr ""
 
-#: config/tc-aarch64.c:7524 config/tc-aarch64.c:7539
+#: config/tc-aarch64.c:7530 config/tc-aarch64.c:7545
 msgid "conditional branch target not word aligned"
 msgstr ""
 
-#: config/tc-aarch64.c:7527 config/tc-aarch64.c:7542 config/tc-arm.c:23500
+#: config/tc-aarch64.c:7533 config/tc-aarch64.c:7548 config/tc-arm.c:23504
 msgid "conditional branch out of range"
 msgstr ""
 
-#: config/tc-aarch64.c:7555
+#: config/tc-aarch64.c:7561
 msgid "branch target not word aligned"
 msgstr ""
 
-#: config/tc-aarch64.c:7558 config/tc-arm.c:810 config/tc-mips.c:15482
-#: config/tc-mips.c:15498 config/tc-mips.c:15588
+#: config/tc-aarch64.c:7564 config/tc-arm.c:810 config/tc-mips.c:15507
+#: config/tc-mips.c:15523 config/tc-mips.c:15613
 msgid "branch out of range"
 msgstr ""
 
-#: config/tc-aarch64.c:7610 config/tc-arm.c:23100 config/tc-arm.c:23115
-#: config/tc-arm.c:23130 config/tc-arm.c:23141 config/tc-arm.c:23164
-#: config/tc-arm.c:23962 config/tc-moxie.c:716 config/tc-pj.c:452
+#: config/tc-aarch64.c:7616 config/tc-arm.c:23104 config/tc-arm.c:23119
+#: config/tc-arm.c:23134 config/tc-arm.c:23145 config/tc-arm.c:23168
+#: config/tc-arm.c:23966 config/tc-moxie.c:716 config/tc-pj.c:452
 #: config/tc-sh.c:4293
 msgid "offset out of range"
 msgstr ""
 
-#: config/tc-aarch64.c:7625
+#: config/tc-aarch64.c:7631
 msgid "unsigned value out of range"
 msgstr ""
 
-#: config/tc-aarch64.c:7633
+#: config/tc-aarch64.c:7639
 msgid "signed value out of range"
 msgstr ""
 
-#: config/tc-aarch64.c:7775
+#: config/tc-aarch64.c:7781
 #, c-format
 msgid "unexpected %s fixup"
 msgstr ""
 
-#: config/tc-aarch64.c:7841 config/tc-arm.c:24471 config/tc-arm.c:24492
-#: config/tc-mips.c:17772 config/tc-or1k.c:348 config/tc-score.c:7480
+#: config/tc-aarch64.c:7847 config/tc-arm.c:24475 config/tc-arm.c:24496
+#: config/tc-mips.c:17796 config/tc-or1k.c:348 config/tc-score.c:7480
 #, c-format
 msgid "cannot represent %s relocation in this object file format"
 msgstr ""
 
-#: config/tc-aarch64.c:7874
+#: config/tc-aarch64.c:7880
 #, c-format
 msgid "cannot do %u-byte relocation"
 msgstr ""
 
-#: config/tc-aarch64.c:8169 config/tc-arm.c:24952 config/tc-score.c:6297
+#: config/tc-aarch64.c:8175 config/tc-arm.c:24956 config/tc-score.c:6297
 #: config/tc-score.c:6527 config/tc-score.c:6532
 msgid "virtual memory exhausted"
 msgstr ""
 
-#: config/tc-aarch64.c:8327 config/tc-arm.c:25281
+#: config/tc-aarch64.c:8333 config/tc-arm.c:25285
 msgid "assemble for big-endian"
 msgstr ""
 
-#: config/tc-aarch64.c:8328 config/tc-arm.c:25282
+#: config/tc-aarch64.c:8334 config/tc-arm.c:25286
 msgid "assemble for little-endian"
 msgstr ""
 
-#: config/tc-aarch64.c:8331
+#: config/tc-aarch64.c:8337
 msgid "temporary switch for dumping"
 msgstr ""
 
-#: config/tc-aarch64.c:8333
+#: config/tc-aarch64.c:8339
 msgid "output verbose error messages"
 msgstr ""
 
-#: config/tc-aarch64.c:8335
+#: config/tc-aarch64.c:8341
 msgid "do not output verbose error messages"
 msgstr ""
 
-#: config/tc-aarch64.c:8509 config/tc-arm.c:25873
+#: config/tc-aarch64.c:8521 config/tc-arm.c:25878
 msgid "invalid architectural extension"
 msgstr ""
 
-#: config/tc-aarch64.c:8534 config/tc-arm.c:25905
+#: config/tc-aarch64.c:8546 config/tc-arm.c:25910
 msgid "must specify extensions to add before specifying those to remove"
 msgstr ""
 
-#: config/tc-aarch64.c:8542 config/tc-arm.c:25913
+#: config/tc-aarch64.c:8554 config/tc-arm.c:25918
 msgid "missing architectural extension"
 msgstr ""
 
-#: config/tc-aarch64.c:8569 config/tc-arm.c:25960
+#: config/tc-aarch64.c:8581 config/tc-arm.c:25965
 #, c-format
 msgid "unknown architectural extension `%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:8593 config/tc-arm.c:25994 config/tc-metag.c:5834
+#: config/tc-aarch64.c:8605 config/tc-arm.c:25999 config/tc-metag.c:5834
 #, c-format
 msgid "missing cpu name `%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:8607 config/tc-aarch64.c:8824 config/tc-arm.c:26026
-#: config/tc-arm.c:26637 config/tc-metag.c:5845
+#: config/tc-aarch64.c:8619 config/tc-aarch64.c:8836 config/tc-arm.c:26031
+#: config/tc-arm.c:26642 config/tc-metag.c:5845
 #, c-format
 msgid "unknown cpu `%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:8625 config/tc-arm.c:26044
+#: config/tc-aarch64.c:8637 config/tc-arm.c:26049
 #, c-format
 msgid "missing architecture name `%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:8639 config/tc-aarch64.c:8871 config/tc-arm.c:26061
-#: config/tc-arm.c:26671 config/tc-arm.c:26702 config/tc-score.c:7715
+#: config/tc-aarch64.c:8651 config/tc-aarch64.c:8883 config/tc-arm.c:26066
+#: config/tc-arm.c:26676 config/tc-arm.c:26707 config/tc-score.c:7715
 #, c-format
 msgid "unknown architecture `%s'\n"
 msgstr ""
 
-#: config/tc-aarch64.c:8662
+#: config/tc-aarch64.c:8674
 #, c-format
 msgid "missing abi name `%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:8673
+#: config/tc-aarch64.c:8685
 #, c-format
 msgid "unknown abi `%s'\n"
 msgstr ""
 
-#: config/tc-aarch64.c:8679
+#: config/tc-aarch64.c:8691
 msgid "<abi name>\t  specify for ABI <abi name>"
 msgstr ""
 
-#: config/tc-aarch64.c:8682 config/tc-arm.c:26148 config/tc-metag.c:5911
+#: config/tc-aarch64.c:8694 config/tc-arm.c:26153 config/tc-metag.c:5911
 msgid "<cpu name>\t  assemble for CPU <cpu name>"
 msgstr ""
 
-#: config/tc-aarch64.c:8684 config/tc-arm.c:26150
+#: config/tc-aarch64.c:8696 config/tc-arm.c:26155
 msgid "<arch name>\t  assemble for architecture <arch name>"
 msgstr ""
 
-#: config/tc-aarch64.c:8723 config/tc-aarch64.c:8743 config/tc-arm.c:26206
-#: config/tc-arm.c:26224 config/tc-arm.c:26244 config/tc-metag.c:5936
+#: config/tc-aarch64.c:8735 config/tc-aarch64.c:8755 config/tc-arm.c:26211
+#: config/tc-arm.c:26229 config/tc-arm.c:26249 config/tc-metag.c:5936
 #, c-format
 msgid "option `-%c%s' is deprecated: %s"
 msgstr ""
 
-#: config/tc-aarch64.c:8763
+#: config/tc-aarch64.c:8775
 #, c-format
 msgid " AArch64-specific assembler options:\n"
 msgstr ""
 
-#: config/tc-aarch64.c:8774 config/tc-arc.c:3499 config/tc-arm.c:26275
+#: config/tc-aarch64.c:8786 config/tc-arc.c:3503 config/tc-arm.c:26280
 #, c-format
 msgid "  -EB                     assemble code for a big-endian cpu\n"
 msgstr ""
 
-#: config/tc-aarch64.c:8779 config/tc-arc.c:3501 config/tc-arm.c:26280
+#: config/tc-aarch64.c:8791 config/tc-arc.c:3505 config/tc-arm.c:26285
 #, c-format
 msgid "  -EL                     assemble code for a little-endian cpu\n"
 msgstr ""
@@ -2159,7 +2159,7 @@ msgid "opcode `%s' not supported for target %s"
 msgstr ""
 
 #: config/tc-alpha.c:1192 config/tc-alpha.c:3366 config/tc-avr.c:1693
-#: config/tc-msp430.c:3914
+#: config/tc-msp430.c:3913 config/tc-wasm32.c:753
 #, c-format
 msgid "unknown opcode `%s'"
 msgstr ""
@@ -2239,8 +2239,8 @@ msgstr ""
 msgid "sequence number in use for !tlsgd!%ld"
 msgstr ""
 
-#: config/tc-alpha.c:1996 config/tc-arc.c:2768 config/tc-mn10200.c:854
-#: config/tc-mn10300.c:1150 config/tc-ppc.c:1838 config/tc-s390.c:673
+#: config/tc-alpha.c:1996 config/tc-arc.c:2772 config/tc-mn10200.c:854
+#: config/tc-mn10300.c:1150 config/tc-ppc.c:1891 config/tc-s390.c:675
 #: config/tc-tilegx.c:427 config/tc-tilegx.c:477 config/tc-tilepro.c:383
 msgid "operand"
 msgstr ""
@@ -2258,22 +2258,22 @@ msgid "can not resolve expression"
 msgstr ""
 
 #: config/tc-alpha.c:3514 config/tc-i370.c:1054 config/tc-microblaze.c:198
-#: config/tc-ppc.c:2160 config/tc-ppc.c:5260
+#: config/tc-ppc.c:2213 config/tc-ppc.c:5322
 #, c-format
 msgid ".COMMon length (%ld.) <0! Ignored."
 msgstr ""
 
-#: config/tc-alpha.c:3525 config/tc-ia64.c:1094 config/tc-sparc.c:4293
+#: config/tc-alpha.c:3525 config/tc-ia64.c:1094 config/tc-sparc.c:4332
 #: config/tc-v850.c:306
 msgid "Ignoring attempt to re-define symbol"
 msgstr ""
 
-#: config/tc-alpha.c:3617 config/tc-sparc.c:4301
+#: config/tc-alpha.c:3617 config/tc-sparc.c:4340
 #, c-format
 msgid "Length of .comm \"%s\" is already %ld. Not changed to %ld."
 msgstr ""
 
-#: config/tc-alpha.c:3724 ecoff.c:3052
+#: config/tc-alpha.c:3724
 msgid ".ent directive has no name"
 msgstr ""
 
@@ -2281,7 +2281,7 @@ msgstr ""
 msgid "nested .ent directives"
 msgstr ""
 
-#: config/tc-alpha.c:3776 ecoff.c:3004
+#: config/tc-alpha.c:3776 ecoff.c:3008
 msgid ".end directive has no name"
 msgstr ""
 
@@ -2293,28 +2293,28 @@ msgstr ""
 msgid ".end directive names different symbol than .ent"
 msgstr ""
 
-#: config/tc-alpha.c:3829 ecoff.c:3137
+#: config/tc-alpha.c:3829 ecoff.c:3145
 msgid ".fmask outside of .ent"
 msgstr ""
 
-#: config/tc-alpha.c:3831 config/tc-score.c:5598 ecoff.c:3201
+#: config/tc-alpha.c:3831 config/tc-score.c:5598 ecoff.c:3209
 msgid ".mask outside of .ent"
 msgstr ""
 
-#: config/tc-alpha.c:3839 ecoff.c:3144
+#: config/tc-alpha.c:3839 ecoff.c:3152
 msgid "bad .fmask directive"
 msgstr ""
 
-#: config/tc-alpha.c:3841 ecoff.c:3208
+#: config/tc-alpha.c:3841 ecoff.c:3216
 msgid "bad .mask directive"
 msgstr ""
 
-#: config/tc-alpha.c:3874 config/tc-mips.c:19157 config/tc-score.c:5739
-#: ecoff.c:3165
+#: config/tc-alpha.c:3874 config/tc-mips.c:19181 config/tc-score.c:5739
+#: ecoff.c:3173
 msgid ".frame outside of .ent"
 msgstr ""
 
-#: config/tc-alpha.c:3885 config/tc-mips.c:19168 ecoff.c:3176
+#: config/tc-alpha.c:3885 config/tc-mips.c:19192 ecoff.c:3184
 msgid "bad .frame directive"
 msgstr ""
 
@@ -2451,7 +2451,7 @@ msgid "Alignment too large: %d. assumed"
 msgstr ""
 
 #: config/tc-alpha.c:5042 config/tc-d30v.c:2057 config/tc-nios2.c:355
-#: config/tc-nios2.c:480
+#: config/tc-nios2.c:480 config/tc-pru.c:220 config/tc-pru.c:335
 msgid "Alignment negative: 0 assumed"
 msgstr ""
 
@@ -2479,8 +2479,8 @@ msgstr ""
 msgid "internal error: can't hash macro `%s': %s"
 msgstr ""
 
-#: config/tc-alpha.c:5551 config/tc-arc.c:2421 config/tc-arc.c:2435
-#: config/tc-arm.c:7235 config/tc-arm.c:7247 config/tc-i960.c:706
+#: config/tc-alpha.c:5551 config/tc-arc.c:2425 config/tc-arc.c:2439
+#: config/tc-arm.c:7239 config/tc-arm.c:7251 config/tc-i960.c:706
 #: config/tc-xtensa.c:5415 config/tc-xtensa.c:5491 config/tc-xtensa.c:5608
 #: config/tc-z80.c:1935
 msgid "syntax error"
@@ -2506,12 +2506,12 @@ msgid ""
 "-replace/-noreplace\tenable or disable the optimization of procedure calls\n"
 msgstr ""
 
-#: config/tc-alpha.c:5942 config/tc-arc.c:3046
+#: config/tc-alpha.c:5942 config/tc-arc.c:3050
 #, c-format
 msgid "unhandled relocation type %s"
 msgstr ""
 
-#: config/tc-alpha.c:5955 config/tc-arc.c:3054
+#: config/tc-alpha.c:5955 config/tc-arc.c:3058
 msgid "non-absolute expression in constant field"
 msgstr ""
 
@@ -2529,13 +2529,13 @@ msgstr ""
 msgid "!samegp reloc against symbol without .prologue: %s"
 msgstr ""
 
-#: config/tc-alpha.c:6236 config/tc-arc.c:3177 config/tc-tilegx.c:1751
-#: config/tc-tilepro.c:1531 config/tc-xtensa.c:6101
+#: config/tc-alpha.c:6236 config/tc-arc.c:3181 config/tc-tilegx.c:1751
+#: config/tc-tilepro.c:1531 config/tc-wasm32.c:813 config/tc-xtensa.c:6101
 #, c-format
 msgid "cannot represent `%s' relocation in object file"
 msgstr ""
 
-#: config/tc-alpha.c:6242 config/tc-arc.c:3183
+#: config/tc-alpha.c:6242 config/tc-arc.c:3187
 #, c-format
 msgid "internal error? cannot generate `%s' relocation"
 msgstr ""
@@ -2550,8 +2550,8 @@ msgstr ""
 msgid "internal error: can't hash opcode '%s': %s"
 msgstr ""
 
-#: config/tc-arc.c:789 config/tc-arc.c:2518 config/tc-arc.c:2536
-#: config/tc-arc.c:2589 config/tc-arc.c:2613 config/tc-arc.c:4778
+#: config/tc-arc.c:789 config/tc-arc.c:2522 config/tc-arc.c:2540
+#: config/tc-arc.c:2593 config/tc-arc.c:2617 config/tc-arc.c:4813
 #: config/tc-cr16.c:800 config/tc-cr16.c:823 config/tc-cris.c:1195
 #: config/tc-crx.c:535 config/tc-crx.c:562 config/tc-crx.c:580
 #: config/tc-pdp11.c:193
@@ -2576,12 +2576,12 @@ msgstr ""
 msgid "unknown architecture: %s\n"
 msgstr ""
 
-#: config/tc-arc.c:1030 config/tc-arc.c:2510 config/tc-h8300.c:81
+#: config/tc-arc.c:1030 config/tc-arc.c:2514 config/tc-h8300.c:81
 #: config/tc-h8300.c:90 config/tc-h8300.c:100 config/tc-h8300.c:110
 #: config/tc-h8300.c:120 config/tc-h8300.c:131 config/tc-h8300.c:248
 #: config/tc-hppa.c:6823 config/tc-hppa.c:6829 config/tc-hppa.c:6835
 #: config/tc-hppa.c:6841 config/tc-hppa.c:8230 config/tc-lm32.c:197
-#: config/tc-mips.c:3500 config/tc-mips.c:4009 config/tc-mn10300.c:935
+#: config/tc-mips.c:3511 config/tc-mips.c:4020 config/tc-mn10300.c:935
 #: config/tc-mn10300.c:940 config/tc-mn10300.c:2440 config/tc-xc16x.c:79
 #: config/tc-xc16x.c:86 config/tc-xc16x.c:93
 msgid "could not set architecture and machine"
@@ -2619,7 +2619,8 @@ msgstr ""
 msgid "extra comma"
 msgstr ""
 
-#: config/tc-arc.c:1333 config/tc-xtensa.c:2047
+#: config/tc-arc.c:1333 config/tc-pru.c:1442 config/tc-pru.c:1707
+#: config/tc-xtensa.c:2047
 msgid "missing argument"
 msgstr ""
 
@@ -2643,61 +2644,61 @@ msgstr ""
 msgid "Unhandled reloc type"
 msgstr ""
 
-#: config/tc-arc.c:2389
+#: config/tc-arc.c:2393
 #, c-format
 msgid "%s for instruction '%s'"
 msgstr ""
 
-#: config/tc-arc.c:2391
+#: config/tc-arc.c:2395
 #, c-format
 msgid "inappropriate arguments for opcode '%s'"
 msgstr ""
 
-#: config/tc-arc.c:2393
+#: config/tc-arc.c:2397
 #, c-format
 msgid "opcode '%s' not supported for target %s"
 msgstr ""
 
-#: config/tc-arc.c:2397 config/tc-tic6x.c:3195
+#: config/tc-arc.c:2401 config/tc-tic6x.c:3195
 #, c-format
 msgid "unknown opcode '%s'"
 msgstr ""
 
-#: config/tc-arc.c:2455
+#: config/tc-arc.c:2459
 #, c-format
 msgid "Inserting \"%s\" into register table failed: %s"
 msgstr ""
 
-#: config/tc-arc.c:2491
+#: config/tc-arc.c:2495
 #, c-format
 msgid "Inserting \"%s\" into address type table failed: %s"
 msgstr ""
 
-#: config/tc-arc.c:2606 config/tc-arc.c:4765
+#: config/tc-arc.c:2610 config/tc-arc.c:4800
 #, c-format
 msgid "internal error: can't hash aux register '%s': %s"
 msgstr ""
 
-#: config/tc-arc.c:2713
+#: config/tc-arc.c:2717
 #, c-format
 msgid "unhandled reloc %s in md_pcrel_from_section"
 msgstr ""
 
-#: config/tc-arc.c:2778
+#: config/tc-arc.c:2782
 msgid "Unaligned operand. Needs to be 32bit aligned"
 msgstr ""
 
-#: config/tc-arc.c:2783
+#: config/tc-arc.c:2787
 msgid "Unaligned operand. Needs to be 16bit aligned"
 msgstr ""
 
-#: config/tc-arc.c:2860 config/tc-cr16.c:568 config/tc-crx.c:345
+#: config/tc-arc.c:2864 config/tc-cr16.c:568 config/tc-crx.c:345
 #: config/tc-mn10200.c:766 write.c:1015
 #, c-format
 msgid "can't resolve `%s' {%s section} - `%s' {%s section}"
 msgstr ""
 
-#: config/tc-arc.c:2918
+#: config/tc-arc.c:2922
 #, c-format
 msgid "PC relative relocation not allowed for (internal) type %d"
 msgstr ""
@@ -2706,35 +2707,35 @@ msgstr ""
 #. the insn.
 #. FIXME! Check for the conditionality of
 #. the insn.
-#: config/tc-arc.c:2962 config/tc-arc.c:3935
+#: config/tc-arc.c:2966 config/tc-arc.c:3949
 msgid "TLS_*_S9 relocs are not supported yet"
 msgstr ""
 
 #. I cannot fix an GOTPC relocation because I need to relax it
 #. from ld rx,[pcl,@sym@gotpc] to add rx,pcl,@sym@gotpc.
-#: config/tc-arc.c:2998
+#: config/tc-arc.c:3002
 msgid "Unsupported operation on reloc"
 msgstr ""
 
-#: config/tc-arc.c:3074 config/tc-arc.c:3090
+#: config/tc-arc.c:3078 config/tc-arc.c:3094
 msgid "unknown fixup size"
 msgstr ""
 
-#: config/tc-arc.c:3224
+#: config/tc-arc.c:3228
 msgid "no relaxation found for this instruction."
 msgstr ""
 
-#: config/tc-arc.c:3477
+#: config/tc-arc.c:3481
 #, c-format
 msgid "ARC-specific assembler options:\n"
 msgstr ""
 
-#: config/tc-arc.c:3503
+#: config/tc-arc.c:3507
 #, c-format
 msgid "  -mrelax                 enable relaxation\n"
 msgstr ""
 
-#: config/tc-arc.c:3506
+#: config/tc-arc.c:3510
 #, c-format
 msgid ""
 "The following ARC-specific assembler options are deprecated and are "
@@ -2742,7 +2743,7 @@ msgid ""
 "for compatibility only:\n"
 msgstr ""
 
-#: config/tc-arc.c:3509
+#: config/tc-arc.c:3513
 #, c-format
 msgid ""
 "  -mEA\n"
@@ -2772,128 +2773,128 @@ msgid ""
 "  -mxy\n"
 msgstr ""
 
-#: config/tc-arc.c:3599
+#: config/tc-arc.c:3603
 #, c-format
 msgid "Unable to find %s relocation for instruction %s"
 msgstr ""
 
-#: config/tc-arc.c:3895
+#: config/tc-arc.c:3899
 #, c-format
-msgid "Unable to use @plt relocatio for insn %s"
+msgid "Unable to use @plt relocation for insn %s"
 msgstr ""
 
-#: config/tc-arc.c:3913
+#: config/tc-arc.c:3919
 #, c-format
 msgid "Unable to use @pcl relocation for insn %s"
 msgstr ""
 
-#: config/tc-arc.c:3961
+#: config/tc-arc.c:3975
 #, c-format
 msgid "invalid relocation %s for field"
 msgstr ""
 
-#: config/tc-arc.c:4057
+#: config/tc-arc.c:4087
 msgid "A jump/branch instruction in delay slot."
 msgstr ""
 
-#: config/tc-arc.c:4165 config/tc-microblaze.c:2525 config/tc-mn10300.c:1069
+#: config/tc-arc.c:4195 config/tc-microblaze.c:2525 config/tc-mn10300.c:1069
 #: config/tc-sh.c:801 config/tc-z80.c:700 read.c:4582
 #, c-format
 msgid "unsupported BFD relocation size %u"
 msgstr ""
 
-#: config/tc-arc.c:4185
+#: config/tc-arc.c:4215
 #, c-format
 msgid "Jump/Branch instruction detected at the end of the ZOL label @%s"
 msgstr ""
 
-#: config/tc-arc.c:4192
+#: config/tc-arc.c:4222
 #, c-format
 msgid "Kernel instruction detected at the end of the ZOL label @%s"
 msgstr ""
 
-#: config/tc-arc.c:4197
+#: config/tc-arc.c:4227
 #, c-format
 msgid ""
 "A jump instruction with long immediate detected at the end of the ZOL label @"
 "%s"
 msgstr ""
 
-#: config/tc-arc.c:4203
+#: config/tc-arc.c:4233
 #, c-format
 msgid "An illegal use of delay slot detected at the end of the ZOL label @%s"
 msgstr ""
 
-#: config/tc-arc.c:4303
+#: config/tc-arc.c:4338
 msgid "expected comma after instruction name"
 msgstr ""
 
-#: config/tc-arc.c:4315
+#: config/tc-arc.c:4350
 msgid "expected comma after major opcode"
 msgstr ""
 
-#: config/tc-arc.c:4501
+#: config/tc-arc.c:4536
 #, c-format
 msgid "Pseudocode already used %s"
 msgstr ""
 
-#: config/tc-arc.c:4509
+#: config/tc-arc.c:4544
 #, c-format
 msgid "major opcode not in range [0x%02x - 0x%02x]"
 msgstr ""
 
-#: config/tc-arc.c:4513
+#: config/tc-arc.c:4548
 msgid "minor opcode not in range [0x00 - 0x3f]"
 msgstr ""
 
-#: config/tc-arc.c:4519
+#: config/tc-arc.c:4554
 msgid "Improper use of OP1_IMM_IMPLIED"
 msgstr ""
 
-#: config/tc-arc.c:4525
+#: config/tc-arc.c:4560
 msgid "Improper use of OP1_MUST_BE_IMM"
 msgstr ""
 
-#: config/tc-arc.c:4537
+#: config/tc-arc.c:4572
 msgid "Couldn't generate extension instruction opcodes"
 msgstr ""
 
-#: config/tc-arc.c:4573
+#: config/tc-arc.c:4608
 msgid "expected comma after name"
 msgstr ""
 
-#: config/tc-arc.c:4584
+#: config/tc-arc.c:4619
 #, c-format
 msgid "%s second argument cannot be a negative number %d"
 msgstr ""
 
-#: config/tc-arc.c:4599
+#: config/tc-arc.c:4634
 msgid "expected comma after register number"
 msgstr ""
 
-#: config/tc-arc.c:4620
+#: config/tc-arc.c:4655
 msgid "invalid mode"
 msgstr ""
 
-#: config/tc-arc.c:4638
+#: config/tc-arc.c:4673
 msgid "expected comma after register mode"
 msgstr ""
 
-#: config/tc-arc.c:4653
+#: config/tc-arc.c:4688
 msgid "shortcut designator invalid"
 msgstr ""
 
-#: config/tc-arc.c:4752
+#: config/tc-arc.c:4787
 #, c-format
 msgid "core register %s value (%d) too large"
 msgstr ""
 
-#: config/tc-arc.c:4771
+#: config/tc-arc.c:4806
 #, c-format
 msgid "condition code %s value (%d) too large"
 msgstr ""
 
-#: config/tc-arc.c:4790
+#: config/tc-arc.c:4825
 msgid "Unknown extension"
 msgstr ""
 
@@ -2969,7 +2970,7 @@ msgstr ""
 msgid "iWMMXt data register expected"
 msgstr ""
 
-#: config/tc-arm.c:628 config/tc-arm.c:7014
+#: config/tc-arm.c:628 config/tc-arm.c:7018
 msgid "iWMMXt control register expected"
 msgstr ""
 
@@ -3070,7 +3071,7 @@ msgstr ""
 msgid "missing expression"
 msgstr ""
 
-#: config/tc-arm.c:1078 config/tc-arm.c:5230 config/tc-i960.c:1298
+#: config/tc-arm.c:1078 config/tc-arm.c:5234 config/tc-i960.c:1298
 #: config/tc-score.c:1210
 msgid "invalid constant"
 msgstr ""
@@ -3117,8 +3118,8 @@ msgstr ""
 msgid "scalar must have an index"
 msgstr ""
 
-#: config/tc-arm.c:1635 config/tc-arm.c:16358 config/tc-arm.c:16418
-#: config/tc-arm.c:16872
+#: config/tc-arm.c:1635 config/tc-arm.c:16362 config/tc-arm.c:16422
+#: config/tc-arm.c:16876
 msgid "scalar index out of range"
 msgstr ""
 
@@ -3307,7 +3308,7 @@ msgstr ""
 msgid "(plt) is only valid on branch targets"
 msgstr ""
 
-#: config/tc-arm.c:3552 config/tc-s390.c:1207 config/tc-s390.c:1868
+#: config/tc-arm.c:3552 config/tc-s390.c:1209 config/tc-s390.c:1870
 #: config/tc-xtensa.c:1671
 #, c-format
 msgid "%s relocations do not fit in %d bytes"
@@ -3417,9 +3418,9 @@ msgstr ""
 msgid "invalid unwind opcode"
 msgstr ""
 
-#: config/tc-arm.c:4778 config/tc-arm.c:5783 config/tc-arm.c:10573
-#: config/tc-arm.c:11100 config/tc-arm.c:13130 config/tc-arm.c:14710
-#: config/tc-arm.c:23839 config/tc-arm.c:23903 config/tc-arm.c:23911
+#: config/tc-arm.c:4778 config/tc-arm.c:5787 config/tc-arm.c:10577
+#: config/tc-arm.c:11104 config/tc-arm.c:13134 config/tc-arm.c:14714
+#: config/tc-arm.c:23843 config/tc-arm.c:23907 config/tc-arm.c:23915
 #: config/tc-metag.c:5176 config/tc-z8k.c:1151 config/tc-z8k.c:1161
 msgid "immediate value out of range"
 msgstr ""
@@ -3428,259 +3429,259 @@ msgstr ""
 msgid "invalid FPA immediate expression"
 msgstr ""
 
-#: config/tc-arm.c:5130
+#: config/tc-arm.c:5134
 msgid "'LSL' or 'ASR' required"
 msgstr ""
 
-#: config/tc-arm.c:5138
+#: config/tc-arm.c:5142
 msgid "'LSL' required"
 msgstr ""
 
-#: config/tc-arm.c:5146
+#: config/tc-arm.c:5150
 msgid "'ASR' required"
 msgstr ""
 
-#: config/tc-arm.c:5225
+#: config/tc-arm.c:5229
 msgid "invalid rotation"
 msgstr ""
 
-#: config/tc-arm.c:5405 config/tc-arm.c:5574
+#: config/tc-arm.c:5409 config/tc-arm.c:5578
 msgid "unknown group relocation"
 msgstr ""
 
-#: config/tc-arm.c:5441
+#: config/tc-arm.c:5445
 msgid "alignment must be constant"
 msgstr ""
 
-#: config/tc-arm.c:5605
+#: config/tc-arm.c:5609
 msgid "this group relocation is not allowed on this instruction"
 msgstr ""
 
-#: config/tc-arm.c:5660
+#: config/tc-arm.c:5664
 msgid "'}' expected at end of 'option' field"
 msgstr ""
 
-#: config/tc-arm.c:5665
+#: config/tc-arm.c:5669
 msgid "cannot combine index with option"
 msgstr ""
 
-#: config/tc-arm.c:5921
+#: config/tc-arm.c:5925
 msgid "unexpected bit specified after APSR"
 msgstr ""
 
-#: config/tc-arm.c:5933
+#: config/tc-arm.c:5937
 msgid "selected processor does not support DSP extension"
 msgstr ""
 
-#: config/tc-arm.c:5945
+#: config/tc-arm.c:5949
 msgid "bad bitmask specified after APSR"
 msgstr ""
 
-#: config/tc-arm.c:5969
+#: config/tc-arm.c:5973
 msgid "writing to APSR without specifying a bitmask is deprecated"
 msgstr ""
 
-#: config/tc-arm.c:5981 config/tc-arm.c:12254 config/tc-arm.c:12299
-#: config/tc-arm.c:12303
+#: config/tc-arm.c:5985 config/tc-arm.c:12258 config/tc-arm.c:12303
+#: config/tc-arm.c:12307
 msgid "selected processor does not support requested special purpose register"
 msgstr ""
 
-#: config/tc-arm.c:5986
+#: config/tc-arm.c:5990
 msgid "flag for {c}psr instruction expected"
 msgstr ""
 
-#: config/tc-arm.c:6011
+#: config/tc-arm.c:6015
 msgid "unrecognized CPS flag"
 msgstr ""
 
-#: config/tc-arm.c:6018
+#: config/tc-arm.c:6022
 msgid "missing CPS flags"
 msgstr ""
 
-#: config/tc-arm.c:6041 config/tc-arm.c:6047
+#: config/tc-arm.c:6045 config/tc-arm.c:6051
 msgid "valid endian specifiers are be or le"
 msgstr ""
 
-#: config/tc-arm.c:6069
+#: config/tc-arm.c:6073
 msgid "missing rotation field after comma"
 msgstr ""
 
-#: config/tc-arm.c:6084
+#: config/tc-arm.c:6088
 msgid "rotation can only be 0, 8, 16, or 24"
 msgstr ""
 
-#: config/tc-arm.c:6113
+#: config/tc-arm.c:6117
 msgid "condition required"
 msgstr ""
 
-#: config/tc-arm.c:6181 config/tc-arm.c:8868
+#: config/tc-arm.c:6185 config/tc-arm.c:8872
 msgid "'[' expected"
 msgstr ""
 
-#: config/tc-arm.c:6194
+#: config/tc-arm.c:6198
 msgid "',' expected"
 msgstr ""
 
-#: config/tc-arm.c:6211
+#: config/tc-arm.c:6215
 msgid "invalid shift"
 msgstr ""
 
-#: config/tc-arm.c:6284
+#: config/tc-arm.c:6288
 msgid "can't use Neon quad register here"
 msgstr ""
 
-#: config/tc-arm.c:6351
+#: config/tc-arm.c:6355
 msgid "expected <Rm> or <Dm> or <Qm> operand"
 msgstr ""
 
-#: config/tc-arm.c:6431
+#: config/tc-arm.c:6435
 msgid "parse error"
 msgstr ""
 
 #. ISB can only take SY as an option.
-#: config/tc-arm.c:6698
+#: config/tc-arm.c:6702
 msgid "invalid barrier type"
 msgstr ""
 
-#: config/tc-arm.c:6794
+#: config/tc-arm.c:6798
 msgid "only floating point zero is allowed as immediate value"
 msgstr ""
 
-#: config/tc-arm.c:6852
+#: config/tc-arm.c:6856
 msgid "immediate value is out of range"
 msgstr ""
 
-#: config/tc-arm.c:6999
+#: config/tc-arm.c:7003
 msgid "iWMMXt data or control register expected"
 msgstr ""
 
-#: config/tc-arm.c:7039
+#: config/tc-arm.c:7043
 msgid "Banked registers are not available with this architecture."
 msgstr ""
 
-#: config/tc-arm.c:7261 config/tc-score.c:264
+#: config/tc-arm.c:7265 config/tc-score.c:264
 msgid "garbage following instruction"
 msgstr ""
 
 #. If REG is R13 (the stack pointer), warn that its use is
 #. deprecated.
-#: config/tc-arm.c:7302
+#: config/tc-arm.c:7306
 msgid "use of r13 is deprecated"
 msgstr ""
 
-#: config/tc-arm.c:7320
+#: config/tc-arm.c:7324
 msgid ""
 "ARMv8.2 scalar fp16 instruction cannot be conditional, the behaviour is "
 "UNPREDICTABLE"
 msgstr ""
 
-#: config/tc-arm.c:7395
+#: config/tc-arm.c:7399
 msgid "D register out of range for selected VFP version"
 msgstr ""
 
-#: config/tc-arm.c:7492 config/tc-arm.c:10293
+#: config/tc-arm.c:7496 config/tc-arm.c:10297
 msgid "Instruction does not support =N addresses"
 msgstr ""
 
-#: config/tc-arm.c:7500
+#: config/tc-arm.c:7504
 msgid "instruction does not accept preindexed addressing"
 msgstr ""
 
 #. unindexed - only for coprocessor
-#: config/tc-arm.c:7516 config/tc-arm.c:10356
+#: config/tc-arm.c:7520 config/tc-arm.c:10360
 msgid "instruction does not accept unindexed addressing"
 msgstr ""
 
-#: config/tc-arm.c:7524
+#: config/tc-arm.c:7528
 msgid "destination register same as write-back base"
 msgstr ""
 
-#: config/tc-arm.c:7525
+#: config/tc-arm.c:7529
 msgid "source register same as write-back base"
 msgstr ""
 
-#: config/tc-arm.c:7575
+#: config/tc-arm.c:7579
 msgid "use of PC in this instruction is deprecated"
 msgstr ""
 
-#: config/tc-arm.c:7598
+#: config/tc-arm.c:7602
 msgid "instruction does not accept scaled register index"
 msgstr ""
 
-#: config/tc-arm.c:7903
+#: config/tc-arm.c:7907
 msgid "invalid pseudo operation"
 msgstr ""
 
-#: config/tc-arm.c:8145
+#: config/tc-arm.c:8149
 msgid "invalid co-processor operand"
 msgstr ""
 
-#: config/tc-arm.c:8161
+#: config/tc-arm.c:8165
 msgid "instruction does not support unindexed addressing"
 msgstr ""
 
-#: config/tc-arm.c:8176
+#: config/tc-arm.c:8180
 msgid "pc may not be used with write-back"
 msgstr ""
 
-#: config/tc-arm.c:8181
+#: config/tc-arm.c:8185
 msgid "instruction does not support writeback"
 msgstr ""
 
-#: config/tc-arm.c:8287
+#: config/tc-arm.c:8291
 msgid "Rn must not overlap other operands"
 msgstr ""
 
-#: config/tc-arm.c:8292
+#: config/tc-arm.c:8296
 msgid "swp{b} use is obsoleted for ARMv8 and later"
 msgstr ""
 
-#: config/tc-arm.c:8295
+#: config/tc-arm.c:8299
 msgid "swp{b} use is deprecated for ARMv6 and ARMv7"
 msgstr ""
 
-#: config/tc-arm.c:8400 config/tc-arm.c:8419 config/tc-arm.c:8432
-#: config/tc-arm.c:10937 config/tc-arm.c:10968 config/tc-arm.c:10990
+#: config/tc-arm.c:8404 config/tc-arm.c:8423 config/tc-arm.c:8436
+#: config/tc-arm.c:10941 config/tc-arm.c:10972 config/tc-arm.c:10994
 msgid "bit-field extends past end of register"
 msgstr ""
 
-#: config/tc-arm.c:8462
+#: config/tc-arm.c:8466
 msgid "the only valid suffixes here are '(plt)' and '(tlscall)'"
 msgstr ""
 
-#: config/tc-arm.c:8515
+#: config/tc-arm.c:8519
 msgid "use of r15 in blx in ARM mode is not really useful"
 msgstr ""
 
-#: config/tc-arm.c:8537
+#: config/tc-arm.c:8541
 msgid "use of r15 in bx in ARM mode is not really useful"
 msgstr ""
 
-#: config/tc-arm.c:8562
+#: config/tc-arm.c:8566
 msgid "use of r15 in bxj is not really useful"
 msgstr ""
 
-#: config/tc-arm.c:8610
+#: config/tc-arm.c:8614
 msgid "This coprocessor register access is deprecated in ARMv8"
 msgstr ""
 
-#: config/tc-arm.c:8818 config/tc-arm.c:8827
+#: config/tc-arm.c:8822 config/tc-arm.c:8831
 msgid "writeback of base register is UNPREDICTABLE"
 msgstr ""
 
-#: config/tc-arm.c:8821
+#: config/tc-arm.c:8825
 msgid "writeback of base register when in register list is UNPREDICTABLE"
 msgstr ""
 
-#: config/tc-arm.c:8831
+#: config/tc-arm.c:8835
 msgid "if writeback register is in list, it must be the lowest reg in the list"
 msgstr ""
 
-#: config/tc-arm.c:8863
+#: config/tc-arm.c:8867
 msgid "first transfer register must be even"
 msgstr ""
 
-#: config/tc-arm.c:8866
+#: config/tc-arm.c:8870
 msgid "can only transfer two consecutive registers"
 msgstr ""
 
@@ -3688,1218 +3689,1214 @@ msgstr ""
 #. have been called in the first place.
 #. If op 2 were present and equal to PC, this function wouldn't
 #. have been called in the first place.
-#: config/tc-arm.c:8867 config/tc-arm.c:8937 config/tc-arm.c:9591
-#: config/tc-arm.c:11746
+#: config/tc-arm.c:8871 config/tc-arm.c:8941 config/tc-arm.c:9595
+#: config/tc-arm.c:11750
 msgid "r14 not allowed here"
 msgstr ""
 
-#: config/tc-arm.c:8879
+#: config/tc-arm.c:8883
 msgid "base register written back, and overlaps second transfer register"
 msgstr ""
 
-#: config/tc-arm.c:8889
+#: config/tc-arm.c:8893
 msgid "index register overlaps transfer register"
 msgstr ""
 
-#: config/tc-arm.c:8918 config/tc-arm.c:9558
+#: config/tc-arm.c:8922 config/tc-arm.c:9562
 msgid "offset must be zero in ARM encoding"
 msgstr ""
 
-#: config/tc-arm.c:8931 config/tc-arm.c:9585
+#: config/tc-arm.c:8935 config/tc-arm.c:9589
 msgid "even register required"
 msgstr ""
 
-#: config/tc-arm.c:8934
+#: config/tc-arm.c:8938
 msgid "can only load two consecutive registers"
 msgstr ""
 
-#: config/tc-arm.c:8952
+#: config/tc-arm.c:8956
 msgid "ldr to register 15 must be 4-byte alligned"
 msgstr ""
 
-#: config/tc-arm.c:8975 config/tc-arm.c:9007
+#: config/tc-arm.c:8979 config/tc-arm.c:9011
 msgid "this instruction requires a post-indexed address"
 msgstr ""
 
-#: config/tc-arm.c:9034
+#: config/tc-arm.c:9038
 msgid "Rd and Rm should be different in mla"
 msgstr ""
 
-#: config/tc-arm.c:9061 config/tc-arm.c:12118
-msgid ":lower16: not allowed this instruction"
+#: config/tc-arm.c:9065 config/tc-arm.c:12122
+msgid ":lower16: not allowed in this instruction"
 msgstr ""
 
-#: config/tc-arm.c:9063
-msgid ":upper16: not allowed instruction"
+#: config/tc-arm.c:9067 config/tc-arm.c:12127
+msgid ":upper16: not allowed in this instruction"
 msgstr ""
 
-#: config/tc-arm.c:9080
+#: config/tc-arm.c:9084
 msgid "operand 1 must be FPSCR"
 msgstr ""
 
-#: config/tc-arm.c:9162 config/tc-arm.c:12237
+#: config/tc-arm.c:9166 config/tc-arm.c:12241
 msgid "bad register for mrs"
 msgstr ""
 
-#: config/tc-arm.c:9169 config/tc-arm.c:12261
+#: config/tc-arm.c:9173 config/tc-arm.c:12265
 msgid "'APSR', 'CPSR' or 'SPSR' expected"
 msgstr ""
 
-#: config/tc-arm.c:9210
+#: config/tc-arm.c:9214
 msgid "Rd and Rm should be different in mul"
 msgstr ""
 
-#: config/tc-arm.c:9229 config/tc-arm.c:9503 config/tc-arm.c:12400
+#: config/tc-arm.c:9233 config/tc-arm.c:9507 config/tc-arm.c:12404
 msgid "rdhi and rdlo must be different"
 msgstr ""
 
-#: config/tc-arm.c:9235
+#: config/tc-arm.c:9239
 msgid "rdhi, rdlo and rm must all be different"
 msgstr ""
 
-#: config/tc-arm.c:9301
+#: config/tc-arm.c:9305
 msgid "'[' expected after PLD mnemonic"
 msgstr ""
 
-#: config/tc-arm.c:9303 config/tc-arm.c:9318
+#: config/tc-arm.c:9307 config/tc-arm.c:9322
 msgid "post-indexed expression used in preload instruction"
 msgstr ""
 
-#: config/tc-arm.c:9305 config/tc-arm.c:9320
+#: config/tc-arm.c:9309 config/tc-arm.c:9324
 msgid "writeback used in preload instruction"
 msgstr ""
 
-#: config/tc-arm.c:9307 config/tc-arm.c:9322
+#: config/tc-arm.c:9311 config/tc-arm.c:9326
 msgid "unindexed addressing used in preload instruction"
 msgstr ""
 
-#: config/tc-arm.c:9316
+#: config/tc-arm.c:9320
 msgid "'[' expected after PLI mnemonic"
 msgstr ""
 
-#: config/tc-arm.c:9331 config/tc-arm.c:12569
+#: config/tc-arm.c:9335 config/tc-arm.c:12573
 msgid "push/pop do not support {reglist}^"
 msgstr ""
 
-#: config/tc-arm.c:9409 config/tc-arm.c:12716
+#: config/tc-arm.c:9413 config/tc-arm.c:12720
 msgid "setend use is deprecated for ARMv8"
 msgstr ""
 
-#: config/tc-arm.c:9430 config/tc-arm.c:12777 config/tc-arm.c:12809
-#: config/tc-arm.c:12852
+#: config/tc-arm.c:9434 config/tc-arm.c:12781 config/tc-arm.c:12813
+#: config/tc-arm.c:12856
 msgid "extraneous shift as part of operand to shift insn"
 msgstr ""
 
-#: config/tc-arm.c:9461 config/tc-arm.c:9470
+#: config/tc-arm.c:9465 config/tc-arm.c:9474
 msgid "selected processor does not support SETPAN instruction"
 msgstr ""
 
-#: config/tc-arm.c:9529
+#: config/tc-arm.c:9533
 msgid "SRS base register must be r13"
 msgstr ""
 
-#: config/tc-arm.c:9588
+#: config/tc-arm.c:9592
 msgid "can only store two consecutive registers"
 msgstr ""
 
-#: config/tc-arm.c:9702 config/tc-arm.c:9719
+#: config/tc-arm.c:9706 config/tc-arm.c:9723
 msgid "only two consecutive VFP SP registers allowed here"
 msgstr ""
 
-#: config/tc-arm.c:9747 config/tc-arm.c:9762
+#: config/tc-arm.c:9751 config/tc-arm.c:9766
 msgid "this addressing mode requires base-register writeback"
 msgstr ""
 
 #. If srcsize is 16, inst.operands[1].imm must be in the range 0-16.
 #. i.e. immbits must be in range 0 - 16.
-#: config/tc-arm.c:9879
+#: config/tc-arm.c:9883
 msgid "immediate value out of range, expected range [0, 16]"
 msgstr ""
 
 #. If srcsize is 32, inst.operands[1].imm must be in the range 1-32.
 #. i.e. immbits must be in range 0 - 31.
-#: config/tc-arm.c:9886
+#: config/tc-arm.c:9890
 msgid "immediate value out of range, expected range [1, 32]"
 msgstr ""
 
-#: config/tc-arm.c:9952
+#: config/tc-arm.c:9956
 msgid "this instruction does not support indexing"
 msgstr ""
 
-#: config/tc-arm.c:9975
+#: config/tc-arm.c:9979
 msgid "only r15 allowed here"
 msgstr ""
 
-#: config/tc-arm.c:10110
+#: config/tc-arm.c:10114
 msgid "immediate operand requires iWMMXt2"
 msgstr ""
 
-#: config/tc-arm.c:10254
+#: config/tc-arm.c:10258
 msgid "shift by register not allowed in thumb mode"
 msgstr ""
 
-#: config/tc-arm.c:10266 config/tc-arm.c:12960 config/tc-arm.c:23182
+#: config/tc-arm.c:10270 config/tc-arm.c:12964 config/tc-arm.c:23186
 msgid "shift expression is too large"
 msgstr ""
 
-#: config/tc-arm.c:10299
+#: config/tc-arm.c:10303
 msgid "cannot use register index with this instruction"
 msgstr ""
 
-#: config/tc-arm.c:10301
+#: config/tc-arm.c:10305
 msgid "Thumb does not support negative register indexing"
 msgstr ""
 
-#: config/tc-arm.c:10303
+#: config/tc-arm.c:10307
 msgid "Thumb does not support register post-indexing"
 msgstr ""
 
-#: config/tc-arm.c:10305
+#: config/tc-arm.c:10309
 msgid "Thumb does not support register indexing with writeback"
 msgstr ""
 
-#: config/tc-arm.c:10307
+#: config/tc-arm.c:10311
 msgid "Thumb supports only LSL in shifted register indexing"
 msgstr ""
 
-#: config/tc-arm.c:10316 config/tc-arm.c:16149
+#: config/tc-arm.c:10320 config/tc-arm.c:16153
 msgid "shift out of range"
 msgstr ""
 
-#: config/tc-arm.c:10325
+#: config/tc-arm.c:10329
 msgid "cannot use writeback with this instruction"
 msgstr ""
 
-#: config/tc-arm.c:10346
+#: config/tc-arm.c:10350
 msgid "cannot use post-indexing with PC-relative addressing"
 msgstr ""
 
-#: config/tc-arm.c:10347
+#: config/tc-arm.c:10351
 msgid "cannot use post-indexing with this instruction"
 msgstr ""
 
-#: config/tc-arm.c:10568
+#: config/tc-arm.c:10572
 msgid "only SUBS PC, LR, #const allowed"
 msgstr ""
 
-#: config/tc-arm.c:10650 config/tc-arm.c:10805 config/tc-arm.c:10902
-#: config/tc-arm.c:12198 config/tc-arm.c:12506
+#: config/tc-arm.c:10654 config/tc-arm.c:10809 config/tc-arm.c:10906
+#: config/tc-arm.c:12202 config/tc-arm.c:12510
 msgid "shift must be constant"
 msgstr ""
 
-#: config/tc-arm.c:10655
+#: config/tc-arm.c:10659
 msgid "shift value over 3 not allowed in thumb mode"
 msgstr ""
 
-#: config/tc-arm.c:10657
+#: config/tc-arm.c:10661
 msgid "only LSL shift allowed in thumb mode"
 msgstr ""
 
-#: config/tc-arm.c:10681 config/tc-arm.c:10820 config/tc-arm.c:10917
-#: config/tc-arm.c:12211
+#: config/tc-arm.c:10685 config/tc-arm.c:10824 config/tc-arm.c:10921
+#: config/tc-arm.c:12215
 msgid "unshifted register required"
 msgstr ""
 
-#: config/tc-arm.c:10696 config/tc-arm.c:10928 config/tc-arm.c:12361
+#: config/tc-arm.c:10700 config/tc-arm.c:10932 config/tc-arm.c:12365
 msgid "dest must overlap one source register"
 msgstr ""
 
-#: config/tc-arm.c:10823
+#: config/tc-arm.c:10827
 msgid "dest and source1 must be the same register"
 msgstr ""
 
-#: config/tc-arm.c:11063
+#: config/tc-arm.c:11067
 msgid ""
 "selected architecture does not support wide conditional branch instruction"
 msgstr ""
 
-#: config/tc-arm.c:11096
+#: config/tc-arm.c:11100
 msgid "instruction is always unconditional"
 msgstr ""
 
-#: config/tc-arm.c:11211
+#: config/tc-arm.c:11215
 msgid "selected processor does not support 'A' form of this instruction"
 msgstr ""
 
-#: config/tc-arm.c:11214
+#: config/tc-arm.c:11218
 msgid "Thumb does not support the 2-argument form of this instruction"
 msgstr ""
 
-#: config/tc-arm.c:11335
+#: config/tc-arm.c:11339
 msgid "SP not allowed in register list"
 msgstr ""
 
-#: config/tc-arm.c:11339 config/tc-arm.c:11445
+#: config/tc-arm.c:11343 config/tc-arm.c:11449
 msgid ""
 "having the base register in the register list when using write back is "
 "UNPREDICTABLE"
 msgstr ""
 
-#: config/tc-arm.c:11347
+#: config/tc-arm.c:11351
 msgid "LR and PC should not both be in register list"
 msgstr ""
 
-#: config/tc-arm.c:11355
+#: config/tc-arm.c:11359
 msgid "PC not allowed in register list"
 msgstr ""
 
-#: config/tc-arm.c:11397
+#: config/tc-arm.c:11401
 msgid "Thumb load/store multiple does not support {reglist}^"
 msgstr ""
 
-#: config/tc-arm.c:11422 config/tc-arm.c:11499
+#: config/tc-arm.c:11426 config/tc-arm.c:11503
 #, c-format
 msgid "value stored for r%d is UNKNOWN"
 msgstr ""
 
-#: config/tc-arm.c:11492
+#: config/tc-arm.c:11496
 msgid "Thumb-2 instruction only valid in unified syntax"
 msgstr ""
 
-#: config/tc-arm.c:11496 config/tc-arm.c:11506
+#: config/tc-arm.c:11500 config/tc-arm.c:11510
 msgid "this instruction will write back the base register"
 msgstr ""
 
-#: config/tc-arm.c:11509
+#: config/tc-arm.c:11513
 msgid "this instruction will not write back the base register"
 msgstr ""
 
-#: config/tc-arm.c:11540
+#: config/tc-arm.c:11544
 msgid "r14 not allowed as first register when second register is omitted"
 msgstr ""
 
-#: config/tc-arm.c:11640
+#: config/tc-arm.c:11644
 msgid ""
 "This instruction may be unpredictable if executed on M-profile cores with "
 "interrupts enabled."
 msgstr ""
 
-#: config/tc-arm.c:11669 config/tc-arm.c:11682 config/tc-arm.c:11718
+#: config/tc-arm.c:11673 config/tc-arm.c:11686 config/tc-arm.c:11722
 msgid "Thumb does not support this addressing mode"
 msgstr ""
 
-#: config/tc-arm.c:11686
+#: config/tc-arm.c:11690
 msgid "byte or halfword not valid for base register"
 msgstr ""
 
-#: config/tc-arm.c:11689
+#: config/tc-arm.c:11693
 msgid "r15 based store not allowed"
 msgstr ""
 
-#: config/tc-arm.c:11691
+#: config/tc-arm.c:11695
 msgid "invalid base register for register offset"
 msgstr ""
 
-#: config/tc-arm.c:11748
+#: config/tc-arm.c:11752
 msgid "r12 not allowed here"
 msgstr ""
 
-#: config/tc-arm.c:11754
+#: config/tc-arm.c:11758
 msgid "base register written back, and overlaps one of transfer registers"
 msgstr ""
 
-#: config/tc-arm.c:11882
+#: config/tc-arm.c:11886
 #, c-format
 msgid ""
 "Use of r%u as a source register is deprecated when r%u is the destination "
 "register."
 msgstr ""
 
-#: config/tc-arm.c:12074
+#: config/tc-arm.c:12078
 msgid "shifts in CMP/MOV instructions are only supported in unified syntax"
 msgstr ""
 
-#: config/tc-arm.c:12102
+#: config/tc-arm.c:12106
 msgid "only lo regs allowed with immediate"
 msgstr ""
 
-#: config/tc-arm.c:12123
-msgid ":upper16: not allowed this instruction"
-msgstr ""
-
-#: config/tc-arm.c:12279
+#: config/tc-arm.c:12283
 msgid "Thumb encoding does not support an immediate here"
 msgstr ""
 
-#: config/tc-arm.c:12366
+#: config/tc-arm.c:12370
 msgid "Thumb-2 MUL must not set flags"
 msgstr ""
 
-#: config/tc-arm.c:12431
+#: config/tc-arm.c:12435
 msgid "Thumb does not support NOP with hints"
 msgstr ""
 
-#: config/tc-arm.c:12591
+#: config/tc-arm.c:12595
 msgid "invalid register list to push/pop instruction"
 msgstr ""
 
-#: config/tc-arm.c:12836
+#: config/tc-arm.c:12840
 msgid "source1 and dest must be same register"
 msgstr ""
 
-#: config/tc-arm.c:12861
+#: config/tc-arm.c:12865
 msgid "ror #imm not supported"
 msgstr ""
 
-#: config/tc-arm.c:12912
+#: config/tc-arm.c:12916
 msgid "SMC is not permitted on this architecture"
 msgstr ""
 
-#: config/tc-arm.c:13077
+#: config/tc-arm.c:13081
 msgid "Thumb encoding does not support rotation"
 msgstr ""
 
-#: config/tc-arm.c:13092
+#: config/tc-arm.c:13096
 msgid "SVC is not permitted on this architecture"
 msgstr ""
 
-#: config/tc-arm.c:13108
+#: config/tc-arm.c:13112
 msgid "instruction requires register index"
 msgstr ""
 
-#: config/tc-arm.c:13117
+#: config/tc-arm.c:13121
 msgid "instruction does not allow shifted index"
 msgstr ""
 
-#: config/tc-arm.c:13303
+#: config/tc-arm.c:13307
 msgid "invalid neon suffix for non neon instruction"
 msgstr ""
 
-#: config/tc-arm.c:13663 config/tc-arm.c:14009 config/tc-arm.c:15619
-#: config/tc-arm.c:17117
+#: config/tc-arm.c:13667 config/tc-arm.c:14013 config/tc-arm.c:15623
+#: config/tc-arm.c:17121
 msgid "invalid instruction shape"
 msgstr ""
 
-#: config/tc-arm.c:13908
+#: config/tc-arm.c:13912
 msgid "types specified in both the mnemonic and operands"
 msgstr ""
 
-#: config/tc-arm.c:13945
+#: config/tc-arm.c:13949
 msgid "operand types can't be inferred"
 msgstr ""
 
-#: config/tc-arm.c:13951
+#: config/tc-arm.c:13955
 msgid "type specifier has the wrong number of parts"
 msgstr ""
 
-#: config/tc-arm.c:14037 config/tc-arm.c:15807 config/tc-arm.c:15814
+#: config/tc-arm.c:14041 config/tc-arm.c:15811 config/tc-arm.c:15818
 msgid "operand size must match register width"
 msgstr ""
 
-#: config/tc-arm.c:14048
+#: config/tc-arm.c:14052
 msgid "bad type in Neon instruction"
 msgstr ""
 
-#: config/tc-arm.c:14059
+#: config/tc-arm.c:14063
 msgid "inconsistent types in Neon instruction"
 msgstr ""
 
-#: config/tc-arm.c:14430 config/tc-arm.c:14445 config/tc-arm.c:16696
+#: config/tc-arm.c:14434 config/tc-arm.c:14449 config/tc-arm.c:16700
 msgid "register list must contain at least 1 and at most 16 registers"
 msgstr ""
 
-#: config/tc-arm.c:14588 config/tc-arm.c:14624 config/tc-arm.c:15256
-#: config/tc-arm.c:16536
+#: config/tc-arm.c:14592 config/tc-arm.c:14628 config/tc-arm.c:15260
+#: config/tc-arm.c:16540
 msgid "immediate out of range for shift"
 msgstr ""
 
-#: config/tc-arm.c:14744
+#: config/tc-arm.c:14748
 msgid "first and second operands shall be the same register"
 msgstr ""
 
-#: config/tc-arm.c:15022
+#: config/tc-arm.c:15026
 msgid "scalar out of range for multiply instruction"
 msgstr ""
 
-#: config/tc-arm.c:15146
+#: config/tc-arm.c:15150
 msgid "instruction form not available on this architecture."
 msgstr ""
 
-#: config/tc-arm.c:15149
+#: config/tc-arm.c:15153
 msgid "this instruction implies use of ARMv8.1 AdvSIMD."
 msgstr ""
 
-#: config/tc-arm.c:15232 config/tc-arm.c:15244
+#: config/tc-arm.c:15236 config/tc-arm.c:15248
 msgid "immediate out of range for insert"
 msgstr ""
 
-#: config/tc-arm.c:15377
+#: config/tc-arm.c:15381
 msgid "immediate out of range for narrowing operation"
 msgstr ""
 
-#: config/tc-arm.c:15523
+#: config/tc-arm.c:15527
 msgid "operands 0 and 1 must be the same register"
 msgstr ""
 
-#: config/tc-arm.c:15629 config/tc-arm.c:17215
+#: config/tc-arm.c:15633 config/tc-arm.c:17219
 msgid "invalid rounding mode"
 msgstr ""
 
-#: config/tc-arm.c:15956
+#: config/tc-arm.c:15960
 msgid "operand size must be specified for immediate VMOV"
 msgstr ""
 
-#: config/tc-arm.c:15966
+#: config/tc-arm.c:15970
 msgid "immediate has bits set outside the operand size"
 msgstr ""
 
-#: config/tc-arm.c:16131
+#: config/tc-arm.c:16135
 msgid "Instruction form not available on this architecture."
 msgstr ""
 
-#: config/tc-arm.c:16175
+#: config/tc-arm.c:16179
 msgid "elements must be smaller than reversal region"
 msgstr ""
 
-#: config/tc-arm.c:16357 config/tc-arm.c:16417
+#: config/tc-arm.c:16361 config/tc-arm.c:16421
 msgid "bad type for scalar"
 msgstr ""
 
-#: config/tc-arm.c:16494 config/tc-arm.c:16502
+#: config/tc-arm.c:16498 config/tc-arm.c:16506
 msgid "VFP registers must be adjacent"
 msgstr ""
 
-#: config/tc-arm.c:16545
+#: config/tc-arm.c:16549
 msgid "invalid suffix"
 msgstr ""
 
-#: config/tc-arm.c:16663
+#: config/tc-arm.c:16667
 msgid "bad list length for table lookup"
 msgstr ""
 
-#: config/tc-arm.c:16693
+#: config/tc-arm.c:16697
 msgid "writeback (!) must be used for VLDMDB and VSTMDB"
 msgstr ""
 
-#: config/tc-arm.c:16721
+#: config/tc-arm.c:16725
 msgid "Use of PC here is UNPREDICTABLE"
 msgstr ""
 
-#: config/tc-arm.c:16723
+#: config/tc-arm.c:16727
 msgid "Use of PC here is deprecated"
 msgstr ""
 
-#: config/tc-arm.c:16790
+#: config/tc-arm.c:16794
 msgid "bad alignment"
 msgstr ""
 
-#: config/tc-arm.c:16807
+#: config/tc-arm.c:16811
 msgid "bad list type for instruction"
 msgstr ""
 
-#: config/tc-arm.c:16809
+#: config/tc-arm.c:16813
 msgid "bad element type for instruction"
 msgstr ""
 
-#: config/tc-arm.c:16851
+#: config/tc-arm.c:16855
 msgid "unsupported alignment for instruction"
 msgstr ""
 
-#: config/tc-arm.c:16870 config/tc-arm.c:16964 config/tc-arm.c:16976
-#: config/tc-arm.c:16986 config/tc-arm.c:17000
+#: config/tc-arm.c:16874 config/tc-arm.c:16968 config/tc-arm.c:16980
+#: config/tc-arm.c:16990 config/tc-arm.c:17004
 msgid "bad list length"
 msgstr ""
 
-#: config/tc-arm.c:16875
+#: config/tc-arm.c:16879
 msgid "stride of 2 unavailable when element size is 8"
 msgstr ""
 
-#: config/tc-arm.c:16908 config/tc-arm.c:16984
+#: config/tc-arm.c:16912 config/tc-arm.c:16988
 msgid "can't use alignment with this instruction"
 msgstr ""
 
-#: config/tc-arm.c:17056
+#: config/tc-arm.c:17060
 msgid "post-index must be a register"
 msgstr ""
 
-#: config/tc-arm.c:17058
+#: config/tc-arm.c:17062
 msgid "bad register for post-index"
 msgstr ""
 
-#: config/tc-arm.c:17279
+#: config/tc-arm.c:17283
 msgid "scalar out of range"
 msgstr ""
 
-#: config/tc-arm.c:17854 config/tc-arm.c:17940
+#: config/tc-arm.c:17858 config/tc-arm.c:17944
 msgid "conditional infixes are deprecated in unified syntax"
 msgstr ""
 
-#: config/tc-arm.c:18091
+#: config/tc-arm.c:18095
 msgid "Warning: conditional outside an IT block for Thumb."
 msgstr ""
 
-#: config/tc-arm.c:18243
+#: config/tc-arm.c:18247
 msgid "Short branches, Undefined, SVC, LDM/STM"
 msgstr ""
 
-#: config/tc-arm.c:18244
+#: config/tc-arm.c:18248
 msgid "Miscellaneous 16-bit instructions"
 msgstr ""
 
-#: config/tc-arm.c:18245
+#: config/tc-arm.c:18249
 msgid "ADR"
 msgstr ""
 
-#: config/tc-arm.c:18246
+#: config/tc-arm.c:18250
 msgid "Literal loads"
 msgstr ""
 
-#: config/tc-arm.c:18247
+#: config/tc-arm.c:18251
 msgid "Hi-register ADD, MOV, CMP, BX, BLX using pc"
 msgstr ""
 
-#: config/tc-arm.c:18248
+#: config/tc-arm.c:18252
 msgid "Hi-register ADD, MOV, CMP using pc"
 msgstr ""
 
 #. NOTE: 0x00dd is not the real encoding, instead, it is the 'tvalue'
 #. field in asm_opcode. 'tvalue' is used at the stage this check happen.
-#: config/tc-arm.c:18251
+#: config/tc-arm.c:18255
 msgid "ADD/SUB sp, sp #imm"
 msgstr ""
 
-#: config/tc-arm.c:18270
+#: config/tc-arm.c:18274
 msgid "IT blocks containing 32-bit Thumb instructions are deprecated in ARMv8"
 msgstr ""
 
-#: config/tc-arm.c:18282
+#: config/tc-arm.c:18286
 #, c-format
 msgid ""
 "IT blocks containing 16-bit Thumb instructions of the following class are "
 "deprecated in ARMv8: %s"
 msgstr ""
 
-#: config/tc-arm.c:18295
+#: config/tc-arm.c:18299
 msgid ""
 "IT blocks containing more than one conditional instruction are deprecated in "
 "ARMv8"
 msgstr ""
 
-#: config/tc-arm.c:18410
+#: config/tc-arm.c:18414
 #, c-format
 msgid "bad instruction `%s'"
 msgstr ""
 
-#: config/tc-arm.c:18416
+#: config/tc-arm.c:18420
 msgid "s suffix on comparison instruction is deprecated"
 msgstr ""
 
-#: config/tc-arm.c:18435
+#: config/tc-arm.c:18439
 #, c-format
 msgid "selected processor does not support `%s' in Thumb mode"
 msgstr ""
 
-#: config/tc-arm.c:18441
+#: config/tc-arm.c:18445
 msgid "Thumb does not support conditional execution"
 msgstr ""
 
-#: config/tc-arm.c:18461
+#: config/tc-arm.c:18465
 #, c-format
 msgid ""
 "selected processor does not support 32bit wide variant of instruction `%s'"
 msgstr ""
 
-#: config/tc-arm.c:18464
+#: config/tc-arm.c:18468
 #, c-format
 msgid "selected processor does not support `%s' in Thumb-2 mode"
 msgstr ""
 
-#: config/tc-arm.c:18489
+#: config/tc-arm.c:18493
 #, c-format
 msgid "cannot honor width suffix -- `%s'"
 msgstr ""
 
-#: config/tc-arm.c:18531
+#: config/tc-arm.c:18535
 #, c-format
 msgid "selected processor does not support `%s' in ARM mode"
 msgstr ""
 
-#: config/tc-arm.c:18536
+#: config/tc-arm.c:18540
 #, c-format
 msgid "width suffixes are invalid in ARM mode -- `%s'"
 msgstr ""
 
-#: config/tc-arm.c:18569
+#: config/tc-arm.c:18573
 #, c-format
 msgid "attempt to use an ARM instruction on a Thumb-only processor -- `%s'"
 msgstr ""
 
-#: config/tc-arm.c:18586
+#: config/tc-arm.c:18590
 #, c-format
 msgid "section '%s' finished with an open IT block."
 msgstr ""
 
-#: config/tc-arm.c:18591
+#: config/tc-arm.c:18595
 msgid "file finished with an open IT block."
 msgstr ""
 
-#: config/tc-arm.c:21842
+#: config/tc-arm.c:21846
 #, c-format
 msgid "alignments greater than %d bytes not supported in .text sections."
 msgstr ""
 
-#: config/tc-arm.c:22103 config/tc-ia64.c:3594
+#: config/tc-arm.c:22107 config/tc-ia64.c:3594
 #, c-format
 msgid "Group section `%s' has no group signature"
 msgstr ""
 
-#: config/tc-arm.c:22148
+#: config/tc-arm.c:22152
 msgid "handlerdata in cantunwind frame"
 msgstr ""
 
-#: config/tc-arm.c:22165
+#: config/tc-arm.c:22169
 msgid "too many unwind opcodes for personality routine 0"
 msgstr ""
 
-#: config/tc-arm.c:22196
+#: config/tc-arm.c:22200
 msgid "attempt to recreate an unwind entry"
 msgstr ""
 
-#: config/tc-arm.c:22206
+#: config/tc-arm.c:22210
 msgid "too many unwind opcodes"
 msgstr ""
 
-#: config/tc-arm.c:22499
+#: config/tc-arm.c:22503
 #, c-format
 msgid "[-mwarn-syms]: Assignment makes a symbol match an ARM instruction: %s"
 msgstr ""
 
-#: config/tc-arm.c:22861 config/tc-arm.c:22929
+#: config/tc-arm.c:22865 config/tc-arm.c:22933
 #, c-format
 msgid "symbol %s is in a different section"
 msgstr ""
 
-#: config/tc-arm.c:22863 config/tc-arm.c:22931
+#: config/tc-arm.c:22867 config/tc-arm.c:22935
 #, c-format
 msgid "symbol %s is weak and may be overridden later"
 msgstr ""
 
-#: config/tc-arm.c:22908 config/tc-arm.c:23278
+#: config/tc-arm.c:22912 config/tc-arm.c:23282
 #, c-format
 msgid "invalid constant (%lx) after fixup"
 msgstr ""
 
-#: config/tc-arm.c:22964
+#: config/tc-arm.c:22968
 #, c-format
 msgid "unable to compute ADRL instructions for PC offset of 0x%lx"
 msgstr ""
 
-#: config/tc-arm.c:23000 config/tc-arm.c:23030
+#: config/tc-arm.c:23004 config/tc-arm.c:23034
 msgid "invalid literal constant: pool needs to be closer"
 msgstr ""
 
-#: config/tc-arm.c:23003 config/tc-arm.c:23052
+#: config/tc-arm.c:23007 config/tc-arm.c:23056
 #, c-format
 msgid "bad immediate value for offset (%ld)"
 msgstr ""
 
-#: config/tc-arm.c:23033
+#: config/tc-arm.c:23037
 #, c-format
 msgid "bad immediate value for 8-bit offset (%ld)"
 msgstr ""
 
-#: config/tc-arm.c:23093
+#: config/tc-arm.c:23097
 msgid "offset not a multiple of 4"
 msgstr ""
 
-#: config/tc-arm.c:23294
+#: config/tc-arm.c:23298
 msgid "invalid smc expression"
 msgstr ""
 
-#: config/tc-arm.c:23303
+#: config/tc-arm.c:23307
 msgid "invalid hvc expression"
 msgstr ""
 
-#: config/tc-arm.c:23314 config/tc-arm.c:23323
+#: config/tc-arm.c:23318 config/tc-arm.c:23327
 msgid "invalid swi expression"
 msgstr ""
 
-#: config/tc-arm.c:23333
+#: config/tc-arm.c:23337
 msgid "invalid expression in load/store multiple"
 msgstr ""
 
-#: config/tc-arm.c:23395
+#: config/tc-arm.c:23399
 #, c-format
 msgid "blx to '%s' an ARM ISA state function changed to bl"
 msgstr ""
 
-#: config/tc-arm.c:23414
+#: config/tc-arm.c:23418
 msgid "misaligned branch destination"
 msgstr ""
 
-#: config/tc-arm.c:23534
+#: config/tc-arm.c:23538
 #, c-format
 msgid "blx to Thumb func '%s' from Thumb ISA state changed to bl"
 msgstr ""
 
-#: config/tc-arm.c:23584
+#: config/tc-arm.c:23588
 msgid "Thumb2 branch out of range"
 msgstr ""
 
-#: config/tc-arm.c:23668
+#: config/tc-arm.c:23672
 msgid "rel31 relocation overflow"
 msgstr ""
 
-#: config/tc-arm.c:23689 config/tc-arm.c:23693 config/tc-arm.c:23732
+#: config/tc-arm.c:23693 config/tc-arm.c:23697 config/tc-arm.c:23736
 msgid "co-processor offset out of range"
 msgstr ""
 
-#: config/tc-arm.c:23749
+#: config/tc-arm.c:23753
 #, c-format
 msgid "invalid offset, target not word aligned (0x%08lX)"
 msgstr ""
 
-#: config/tc-arm.c:23756 config/tc-arm.c:23765 config/tc-arm.c:23773
-#: config/tc-arm.c:23781 config/tc-arm.c:23789
+#: config/tc-arm.c:23760 config/tc-arm.c:23769 config/tc-arm.c:23777
+#: config/tc-arm.c:23785 config/tc-arm.c:23793
 #, c-format
 msgid "invalid offset, value too big (0x%08lX)"
 msgstr ""
 
-#: config/tc-arm.c:23830
+#: config/tc-arm.c:23834
 msgid "invalid Hi register with immediate"
 msgstr ""
 
-#: config/tc-arm.c:23846
+#: config/tc-arm.c:23850
 msgid "invalid immediate for stack address calculation"
 msgstr ""
 
-#: config/tc-arm.c:23865
+#: config/tc-arm.c:23869
 msgid "address calculation needs a strongly defined nearby symbol"
 msgstr ""
 
-#: config/tc-arm.c:23881
+#: config/tc-arm.c:23885
 msgid "symbol too far away"
 msgstr ""
 
-#: config/tc-arm.c:23893
+#: config/tc-arm.c:23897
 #, c-format
 msgid "invalid immediate for address calculation (value = 0x%08lX)"
 msgstr ""
 
-#: config/tc-arm.c:23923
+#: config/tc-arm.c:23927
 #, c-format
 msgid "invalid immediate: %ld is out of range"
 msgstr ""
 
-#: config/tc-arm.c:23935
+#: config/tc-arm.c:23939
 #, c-format
 msgid "invalid shift value: %ld"
 msgstr ""
 
-#: config/tc-arm.c:24005 config/tc-arm.c:24076
+#: config/tc-arm.c:24009 config/tc-arm.c:24080
 #, c-format
 msgid "the offset 0x%08lX is not representable"
 msgstr ""
 
-#: config/tc-arm.c:24037
+#: config/tc-arm.c:24041
 #, c-format
 msgid "Unable to process relocation for thumb opcode: %lx"
 msgstr ""
 
-#: config/tc-arm.c:24116
+#: config/tc-arm.c:24120
 #, c-format
 msgid "bad offset 0x%08lX (only 12 bits available for the magnitude)"
 msgstr ""
 
-#: config/tc-arm.c:24155
+#: config/tc-arm.c:24159
 #, c-format
 msgid "bad offset 0x%08lX (only 8 bits available for the magnitude)"
 msgstr ""
 
-#: config/tc-arm.c:24195
+#: config/tc-arm.c:24199
 #, c-format
 msgid "bad offset 0x%08lX (must be word-aligned)"
 msgstr ""
 
-#: config/tc-arm.c:24200
+#: config/tc-arm.c:24204
 #, c-format
 msgid "bad offset 0x%08lX (must be an 8-bit number of words)"
 msgstr ""
 
-#: config/tc-arm.c:24231 config/tc-score.c:7391
+#: config/tc-arm.c:24235 config/tc-score.c:7391
 #, c-format
 msgid "bad relocation fixup type (%d)"
 msgstr ""
 
-#: config/tc-arm.c:24349
+#: config/tc-arm.c:24353
 msgid "literal referenced across section boundary"
 msgstr ""
 
-#: config/tc-arm.c:24420
+#: config/tc-arm.c:24424
 msgid "internal relocation (type: IMMEDIATE) not fixed up"
 msgstr ""
 
-#: config/tc-arm.c:24425
+#: config/tc-arm.c:24429
 msgid "ADRL used for a symbol not defined in the same file"
 msgstr ""
 
-#: config/tc-arm.c:24440
+#: config/tc-arm.c:24444
 #, c-format
 msgid "undefined local label `%s'"
 msgstr ""
 
-#: config/tc-arm.c:24446
+#: config/tc-arm.c:24450
 msgid "internal_relocation (type: OFFSET_IMM) not fixed up"
 msgstr ""
 
-#: config/tc-arm.c:24468 config/tc-cris.c:4006 config/tc-ft32.c:602
+#: config/tc-arm.c:24472 config/tc-cris.c:4006 config/tc-ft32.c:602
 #: config/tc-mcore.c:1928 config/tc-microblaze.c:1972 config/tc-mmix.c:2895
 #: config/tc-moxie.c:825 config/tc-ns32k.c:2248 config/tc-score.c:7478
 msgid "<unknown>"
 msgstr ""
 
-#: config/tc-arm.c:24857
+#: config/tc-arm.c:24861
 #, c-format
 msgid "%s: unexpected function type: %d"
 msgstr ""
 
-#: config/tc-arm.c:24994
+#: config/tc-arm.c:24998
 msgid "use of old and new-style options to set CPU type"
 msgstr ""
 
-#: config/tc-arm.c:25004
+#: config/tc-arm.c:25008
 msgid "use of old and new-style options to set FPU type"
 msgstr ""
 
-#: config/tc-arm.c:25082
+#: config/tc-arm.c:25086
 msgid "hard-float conflicts with specified fpu"
 msgstr ""
 
-#: config/tc-arm.c:25271
+#: config/tc-arm.c:25275
 msgid "generate PIC code"
 msgstr ""
 
-#: config/tc-arm.c:25272
+#: config/tc-arm.c:25276
 msgid "assemble Thumb code"
 msgstr ""
 
-#: config/tc-arm.c:25273
+#: config/tc-arm.c:25277
 msgid "support ARM/Thumb interworking"
 msgstr ""
 
-#: config/tc-arm.c:25275
+#: config/tc-arm.c:25279
 msgid "code uses 32-bit program counter"
 msgstr ""
 
-#: config/tc-arm.c:25276
+#: config/tc-arm.c:25280
 msgid "code uses 26-bit program counter"
 msgstr ""
 
-#: config/tc-arm.c:25277
+#: config/tc-arm.c:25281
 msgid "floating point args are in fp regs"
 msgstr ""
 
-#: config/tc-arm.c:25279
+#: config/tc-arm.c:25283
 msgid "re-entrant code"
 msgstr ""
 
-#: config/tc-arm.c:25280
+#: config/tc-arm.c:25284
 msgid "code is ATPCS conformant"
 msgstr ""
 
 #. These are recognized by the assembler, but have no affect on code.
-#: config/tc-arm.c:25286
+#: config/tc-arm.c:25290
 msgid "use frame pointer"
 msgstr ""
 
-#: config/tc-arm.c:25287
+#: config/tc-arm.c:25291
 msgid "use stack size checking"
 msgstr ""
 
-#: config/tc-arm.c:25290
+#: config/tc-arm.c:25294
 msgid "do not warn on use of deprecated feature"
 msgstr ""
 
-#: config/tc-arm.c:25292
+#: config/tc-arm.c:25296
 msgid "warn about symbols that match instruction names [default]"
 msgstr ""
 
-#: config/tc-arm.c:25293
+#: config/tc-arm.c:25297
 msgid "disable warnings about symobls that match instructions"
 msgstr ""
 
 #. DON'T add any new processors to this list -- we want the whole list
 #. to go away...  Add them to the processors table instead.
-#: config/tc-arm.c:25309 config/tc-arm.c:25310
+#: config/tc-arm.c:25313 config/tc-arm.c:25314
 msgid "use -mcpu=arm1"
 msgstr ""
 
-#: config/tc-arm.c:25311 config/tc-arm.c:25312
+#: config/tc-arm.c:25315 config/tc-arm.c:25316
 msgid "use -mcpu=arm2"
 msgstr ""
 
-#: config/tc-arm.c:25313 config/tc-arm.c:25314
+#: config/tc-arm.c:25317 config/tc-arm.c:25318
 msgid "use -mcpu=arm250"
 msgstr ""
 
-#: config/tc-arm.c:25315 config/tc-arm.c:25316
+#: config/tc-arm.c:25319 config/tc-arm.c:25320
 msgid "use -mcpu=arm3"
 msgstr ""
 
-#: config/tc-arm.c:25317 config/tc-arm.c:25318
+#: config/tc-arm.c:25321 config/tc-arm.c:25322
 msgid "use -mcpu=arm6"
 msgstr ""
 
-#: config/tc-arm.c:25319 config/tc-arm.c:25320
+#: config/tc-arm.c:25323 config/tc-arm.c:25324
 msgid "use -mcpu=arm600"
 msgstr ""
 
-#: config/tc-arm.c:25321 config/tc-arm.c:25322
+#: config/tc-arm.c:25325 config/tc-arm.c:25326
 msgid "use -mcpu=arm610"
 msgstr ""
 
-#: config/tc-arm.c:25323 config/tc-arm.c:25324
+#: config/tc-arm.c:25327 config/tc-arm.c:25328
 msgid "use -mcpu=arm620"
 msgstr ""
 
-#: config/tc-arm.c:25325 config/tc-arm.c:25326
+#: config/tc-arm.c:25329 config/tc-arm.c:25330
 msgid "use -mcpu=arm7"
 msgstr ""
 
-#: config/tc-arm.c:25327 config/tc-arm.c:25328
+#: config/tc-arm.c:25331 config/tc-arm.c:25332
 msgid "use -mcpu=arm70"
 msgstr ""
 
-#: config/tc-arm.c:25329 config/tc-arm.c:25330
+#: config/tc-arm.c:25333 config/tc-arm.c:25334
 msgid "use -mcpu=arm700"
 msgstr ""
 
-#: config/tc-arm.c:25331 config/tc-arm.c:25332
+#: config/tc-arm.c:25335 config/tc-arm.c:25336
 msgid "use -mcpu=arm700i"
 msgstr ""
 
-#: config/tc-arm.c:25333 config/tc-arm.c:25334
+#: config/tc-arm.c:25337 config/tc-arm.c:25338
 msgid "use -mcpu=arm710"
 msgstr ""
 
-#: config/tc-arm.c:25335 config/tc-arm.c:25336
+#: config/tc-arm.c:25339 config/tc-arm.c:25340
 msgid "use -mcpu=arm710c"
 msgstr ""
 
-#: config/tc-arm.c:25337 config/tc-arm.c:25338
+#: config/tc-arm.c:25341 config/tc-arm.c:25342
 msgid "use -mcpu=arm720"
 msgstr ""
 
-#: config/tc-arm.c:25339 config/tc-arm.c:25340
+#: config/tc-arm.c:25343 config/tc-arm.c:25344
 msgid "use -mcpu=arm7d"
 msgstr ""
 
-#: config/tc-arm.c:25341 config/tc-arm.c:25342
+#: config/tc-arm.c:25345 config/tc-arm.c:25346
 msgid "use -mcpu=arm7di"
 msgstr ""
 
-#: config/tc-arm.c:25343 config/tc-arm.c:25344
+#: config/tc-arm.c:25347 config/tc-arm.c:25348
 msgid "use -mcpu=arm7m"
 msgstr ""
 
-#: config/tc-arm.c:25345 config/tc-arm.c:25346
+#: config/tc-arm.c:25349 config/tc-arm.c:25350
 msgid "use -mcpu=arm7dm"
 msgstr ""
 
-#: config/tc-arm.c:25347 config/tc-arm.c:25348
+#: config/tc-arm.c:25351 config/tc-arm.c:25352
 msgid "use -mcpu=arm7dmi"
 msgstr ""
 
-#: config/tc-arm.c:25349 config/tc-arm.c:25350
+#: config/tc-arm.c:25353 config/tc-arm.c:25354
 msgid "use -mcpu=arm7100"
 msgstr ""
 
-#: config/tc-arm.c:25351 config/tc-arm.c:25352
+#: config/tc-arm.c:25355 config/tc-arm.c:25356
 msgid "use -mcpu=arm7500"
 msgstr ""
 
-#: config/tc-arm.c:25353 config/tc-arm.c:25354
+#: config/tc-arm.c:25357 config/tc-arm.c:25358
 msgid "use -mcpu=arm7500fe"
 msgstr ""
 
-#: config/tc-arm.c:25355 config/tc-arm.c:25356 config/tc-arm.c:25357
-#: config/tc-arm.c:25358
+#: config/tc-arm.c:25359 config/tc-arm.c:25360 config/tc-arm.c:25361
+#: config/tc-arm.c:25362
 msgid "use -mcpu=arm7tdmi"
 msgstr ""
 
-#: config/tc-arm.c:25359 config/tc-arm.c:25360
+#: config/tc-arm.c:25363 config/tc-arm.c:25364
 msgid "use -mcpu=arm710t"
 msgstr ""
 
-#: config/tc-arm.c:25361 config/tc-arm.c:25362
+#: config/tc-arm.c:25365 config/tc-arm.c:25366
 msgid "use -mcpu=arm720t"
 msgstr ""
 
-#: config/tc-arm.c:25363 config/tc-arm.c:25364
+#: config/tc-arm.c:25367 config/tc-arm.c:25368
 msgid "use -mcpu=arm740t"
 msgstr ""
 
-#: config/tc-arm.c:25365 config/tc-arm.c:25366
+#: config/tc-arm.c:25369 config/tc-arm.c:25370
 msgid "use -mcpu=arm8"
 msgstr ""
 
-#: config/tc-arm.c:25367 config/tc-arm.c:25368
+#: config/tc-arm.c:25371 config/tc-arm.c:25372
 msgid "use -mcpu=arm810"
 msgstr ""
 
-#: config/tc-arm.c:25369 config/tc-arm.c:25370
+#: config/tc-arm.c:25373 config/tc-arm.c:25374
 msgid "use -mcpu=arm9"
 msgstr ""
 
-#: config/tc-arm.c:25371 config/tc-arm.c:25372
+#: config/tc-arm.c:25375 config/tc-arm.c:25376
 msgid "use -mcpu=arm9tdmi"
 msgstr ""
 
-#: config/tc-arm.c:25373 config/tc-arm.c:25374
+#: config/tc-arm.c:25377 config/tc-arm.c:25378
 msgid "use -mcpu=arm920"
 msgstr ""
 
-#: config/tc-arm.c:25375 config/tc-arm.c:25376
+#: config/tc-arm.c:25379 config/tc-arm.c:25380
 msgid "use -mcpu=arm940"
 msgstr ""
 
-#: config/tc-arm.c:25377
+#: config/tc-arm.c:25381
 msgid "use -mcpu=strongarm"
 msgstr ""
 
-#: config/tc-arm.c:25379
+#: config/tc-arm.c:25383
 msgid "use -mcpu=strongarm110"
 msgstr ""
 
-#: config/tc-arm.c:25381
+#: config/tc-arm.c:25385
 msgid "use -mcpu=strongarm1100"
 msgstr ""
 
-#: config/tc-arm.c:25383
+#: config/tc-arm.c:25387
 msgid "use -mcpu=strongarm1110"
 msgstr ""
 
-#: config/tc-arm.c:25384
+#: config/tc-arm.c:25388
 msgid "use -mcpu=xscale"
 msgstr ""
 
-#: config/tc-arm.c:25385
+#: config/tc-arm.c:25389
 msgid "use -mcpu=iwmmxt"
 msgstr ""
 
-#: config/tc-arm.c:25386
+#: config/tc-arm.c:25390
 msgid "use -mcpu=all"
 msgstr ""
 
 #. Architecture variants -- don't add any more to this list either.
-#: config/tc-arm.c:25389 config/tc-arm.c:25390
+#: config/tc-arm.c:25393 config/tc-arm.c:25394
 msgid "use -march=armv2"
 msgstr ""
 
-#: config/tc-arm.c:25391 config/tc-arm.c:25392
+#: config/tc-arm.c:25395 config/tc-arm.c:25396
 msgid "use -march=armv2a"
 msgstr ""
 
-#: config/tc-arm.c:25393 config/tc-arm.c:25394
+#: config/tc-arm.c:25397 config/tc-arm.c:25398
 msgid "use -march=armv3"
 msgstr ""
 
-#: config/tc-arm.c:25395 config/tc-arm.c:25396
+#: config/tc-arm.c:25399 config/tc-arm.c:25400
 msgid "use -march=armv3m"
 msgstr ""
 
-#: config/tc-arm.c:25397 config/tc-arm.c:25398
+#: config/tc-arm.c:25401 config/tc-arm.c:25402
 msgid "use -march=armv4"
 msgstr ""
 
-#: config/tc-arm.c:25399 config/tc-arm.c:25400
+#: config/tc-arm.c:25403 config/tc-arm.c:25404
 msgid "use -march=armv4t"
 msgstr ""
 
-#: config/tc-arm.c:25401 config/tc-arm.c:25402
+#: config/tc-arm.c:25405 config/tc-arm.c:25406
 msgid "use -march=armv5"
 msgstr ""
 
-#: config/tc-arm.c:25403 config/tc-arm.c:25404
+#: config/tc-arm.c:25407 config/tc-arm.c:25408
 msgid "use -march=armv5t"
 msgstr ""
 
-#: config/tc-arm.c:25405 config/tc-arm.c:25406
+#: config/tc-arm.c:25409 config/tc-arm.c:25410
 msgid "use -march=armv5te"
 msgstr ""
 
 #. Floating point variants -- don't add any more to this list either.
-#: config/tc-arm.c:25409
+#: config/tc-arm.c:25413
 msgid "use -mfpu=fpe"
 msgstr ""
 
-#: config/tc-arm.c:25410
+#: config/tc-arm.c:25414
 msgid "use -mfpu=fpa10"
 msgstr ""
 
-#: config/tc-arm.c:25411
+#: config/tc-arm.c:25415
 msgid "use -mfpu=fpa11"
 msgstr ""
 
-#: config/tc-arm.c:25413
+#: config/tc-arm.c:25417
 msgid "use either -mfpu=softfpa or -mfpu=softvfp"
 msgstr ""
 
-#: config/tc-arm.c:25937
+#: config/tc-arm.c:25942
 msgid "extension does not apply to the base architecture"
 msgstr ""
 
-#: config/tc-arm.c:25962
+#: config/tc-arm.c:25967
 msgid "architectural extensions must be specified in alphabetical order"
 msgstr ""
 
-#: config/tc-arm.c:26077 config/tc-arm.c:26797
+#: config/tc-arm.c:26082 config/tc-arm.c:26802
 #, c-format
 msgid "unknown floating point format `%s'\n"
 msgstr ""
 
-#: config/tc-arm.c:26093
+#: config/tc-arm.c:26098
 #, c-format
 msgid "unknown floating point abi `%s'\n"
 msgstr ""
 
-#: config/tc-arm.c:26109
+#: config/tc-arm.c:26114
 #, c-format
 msgid "unknown EABI `%s'\n"
 msgstr ""
 
-#: config/tc-arm.c:26129
+#: config/tc-arm.c:26134
 #, c-format
 msgid "unknown implicit IT mode `%s', should be arm, thumb, always, or never."
 msgstr ""
 
-#: config/tc-arm.c:26152 config/tc-metag.c:5913
+#: config/tc-arm.c:26157 config/tc-metag.c:5913
 msgid "<fpu name>\t  assemble for FPU architecture <fpu name>"
 msgstr ""
 
-#: config/tc-arm.c:26154
+#: config/tc-arm.c:26159
 msgid "<abi>\t  assemble for floating point ABI <abi>"
 msgstr ""
 
-#: config/tc-arm.c:26157
+#: config/tc-arm.c:26162
 msgid "<ver>\t\t  assemble for eabi version <ver>"
 msgstr ""
 
-#: config/tc-arm.c:26160
+#: config/tc-arm.c:26165
 msgid "<mode>\t  controls implicit insertion of IT instructions"
 msgstr ""
 
-#: config/tc-arm.c:26162
+#: config/tc-arm.c:26167
 msgid "\t\t\t  TI CodeComposer Studio syntax compatibility mode"
 msgstr ""
 
-#: config/tc-arm.c:26264
+#: config/tc-arm.c:26269
 #, c-format
 msgid " ARM-specific assembler options:\n"
 msgstr ""
 
-#: config/tc-arm.c:26284
+#: config/tc-arm.c:26289
 #, c-format
 msgid "  --fix-v4bx              Allow BX in ARMv4 code\n"
 msgstr ""
 
-#: config/tc-arm.c:26747
+#: config/tc-arm.c:26752
 #, c-format
 msgid ""
 "architectural extension `%s' is not allowed for the current base architecture"
 msgstr ""
 
-#: config/tc-arm.c:26766
+#: config/tc-arm.c:26771
 #, c-format
 msgid "unknown architecture extension `%s'\n"
 msgstr ""
@@ -4977,7 +4974,7 @@ msgstr ""
 msgid "illegal expression"
 msgstr ""
 
-#: config/tc-avr.c:801 config/tc-avr.c:1773
+#: config/tc-avr.c:801 config/tc-avr.c:1773 config/tc-pru.c:1871
 msgid "`)' required"
 msgstr ""
 
@@ -5051,7 +5048,7 @@ msgid "skipping two-word instruction"
 msgstr ""
 
 #: config/tc-avr.c:1392 config/tc-avr.c:1408 config/tc-avr.c:1539
-#: config/tc-msp430.c:4052 config/tc-msp430.c:4071
+#: config/tc-msp430.c:4051 config/tc-msp430.c:4070
 #, c-format
 msgid "odd address operand: %ld"
 msgstr ""
@@ -5059,7 +5056,7 @@ msgstr ""
 #: config/tc-avr.c:1400 config/tc-avr.c:1419 config/tc-avr.c:1437
 #: config/tc-avr.c:1448 config/tc-avr.c:1464 config/tc-avr.c:1472
 #: config/tc-avr.c:1567 config/tc-avr.c:1574 config/tc-d10v.c:503
-#: config/tc-d30v.c:553 config/tc-msp430.c:4060 config/tc-msp430.c:4078
+#: config/tc-d30v.c:553 config/tc-msp430.c:4059 config/tc-msp430.c:4077
 #, c-format
 msgid "operand out of range: %ld"
 msgstr ""
@@ -5070,7 +5067,7 @@ msgid "operand out of range: 0x%lx"
 msgstr ""
 
 #: config/tc-avr.c:1560 config/tc-d10v.c:1590 config/tc-d30v.c:2034
-#: config/tc-msp430.c:4149
+#: config/tc-msp430.c:4148
 #, c-format
 msgid "line %d: unknown relocation type: 0x%x"
 msgstr ""
@@ -5082,7 +5079,7 @@ msgstr ""
 #. xgettext:c-format.
 #: config/tc-avr.c:1643 config/tc-bfin.c:825 config/tc-d10v.c:1462
 #: config/tc-d30v.c:1771 config/tc-metag.c:7022 config/tc-mn10200.c:779
-#: config/tc-mn10300.c:2177 config/tc-msp430.c:4197 config/tc-ppc.c:7153
+#: config/tc-mn10300.c:2177 config/tc-msp430.c:4196 config/tc-ppc.c:7179
 #: config/tc-spu.c:879 config/tc-spu.c:1090 config/tc-v850.c:3368
 #: config/tc-z80.c:2059
 #, c-format
@@ -5091,7 +5088,7 @@ msgstr ""
 
 #: config/tc-avr.c:1665 config/tc-ft32.c:222 config/tc-h8300.c:1960
 #: config/tc-mcore.c:880 config/tc-microblaze.c:927 config/tc-moxie.c:182
-#: config/tc-msp430.c:3906 config/tc-pj.c:253 config/tc-sh.c:2591
+#: config/tc-pj.c:253 config/tc-sh.c:2591 config/tc-wasm32.c:747
 #: config/tc-z8k.c:1223
 msgid "can't find opcode "
 msgstr ""
@@ -5105,9 +5102,9 @@ msgstr ""
 msgid "garbage at end of line"
 msgstr ""
 
-#: config/tc-avr.c:1822
+#: config/tc-avr.c:1822 config/tc-pru.c:1903
 #, c-format
-msgid "illegal %srelocation size: %d"
+msgid "illegal %s relocation size: %d"
 msgstr ""
 
 #: config/tc-avr.c:1935 config/tc-avr.c:1990
@@ -5209,12 +5206,12 @@ msgstr ""
 msgid "internal error: reloc %d (`%s') not supported by object file format"
 msgstr ""
 
-#: config/tc-cr16.c:691 config/tc-i386.c:10626 config/tc-s390.c:2107
+#: config/tc-cr16.c:691 config/tc-i386.c:10701 config/tc-s390.c:2109
 msgid "GOT already in symbol table"
 msgstr ""
 
-#: config/tc-cr16.c:808 config/tc-crx.c:572 config/tc-crx.c:591
-#: config/tc-m68k.c:4657 config/tc-tilegx.c:319 config/tc-tilepro.c:256
+#: config/tc-cr16.c:808 config/tc-m68k.c:4657 config/tc-tilegx.c:319
+#: config/tc-tilepro.c:256
 #, c-format
 msgid "Internal Error:  Can't hash %s: %s"
 msgstr ""
@@ -5250,13 +5247,12 @@ msgid "Unknown register: `%d'"
 msgstr ""
 
 #. Issue a error message when register is illegal.
-#: config/tc-cr16.c:1121 config/tc-crx.c:1137
+#: config/tc-cr16.c:1121
 #, c-format
 msgid "Illegal register (`%s') in Instruction: `%s'"
 msgstr ""
 
-#: config/tc-cr16.c:1194 config/tc-cr16.c:1269 config/tc-crx.c:759
-#: config/tc-crx.c:779 config/tc-crx.c:794
+#: config/tc-cr16.c:1194 config/tc-cr16.c:1269
 #, c-format
 msgid "Illegal register `%s' in Instruction `%s'"
 msgstr ""
@@ -5397,14 +5393,14 @@ msgstr ""
 #. Give an error if a frag containing code is not aligned to a 2-byte
 #. boundary.
 #: config/tc-cr16.c:2482 config/tc-cr16.h:74 config/tc-crx.c:1956
-#: config/tc-crx.h:77 config/tc-ppc.c:3418 config/tc-ppc.c:6366
+#: config/tc-crx.h:77 config/tc-ppc.c:3480 config/tc-ppc.c:6428
 msgid "instruction address is not a multiple of 2"
 msgstr ""
 
 #: config/tc-cr16.c:2505 config/tc-cris.c:1556 config/tc-cris.c:1564
 #: config/tc-crx.c:1992 config/tc-dlx.c:692 config/tc-hppa.c:3212
 #: config/tc-hppa.c:3219 config/tc-i860.c:490 config/tc-i860.c:507
-#: config/tc-i860.c:987 config/tc-sparc.c:1790 config/tc-sparc.c:1798
+#: config/tc-i860.c:987 config/tc-sparc.c:1792 config/tc-sparc.c:1800
 #, c-format
 msgid "Unknown opcode: `%s'"
 msgstr ""
@@ -5414,7 +5410,7 @@ msgstr ""
 msgid "internal inconsistency problem in %s: fr_symbol %lx"
 msgstr ""
 
-#: config/tc-cris.c:554 config/tc-m68hc11.c:3897 config/tc-msp430.c:4547
+#: config/tc-cris.c:554 config/tc-m68hc11.c:3897 config/tc-msp430.c:4546
 #, c-format
 msgid "internal inconsistency problem in %s: resolved symbol"
 msgstr ""
@@ -5726,19 +5722,35 @@ msgstr ""
 msgid ".arch <arch> requires a matching --march=... option"
 msgstr ""
 
+#: config/tc-crx.c:572 config/tc-crx.c:591
+#, c-format
+msgid "Internal error: Can't hash %s: %s"
+msgstr ""
+
+#: config/tc-crx.c:759 config/tc-crx.c:779 config/tc-crx.c:794
+#, c-format
+msgid "Illegal register `%s' in instruction `%s'"
+msgstr ""
+
 #: config/tc-crx.c:822
 #, c-format
 msgid "Illegal Scale - `%d'"
 msgstr ""
 
+#. Issue a error message when register is illegal.
+#: config/tc-crx.c:1137
+#, c-format
+msgid "Illegal register (`%s') in instruction: `%s'"
+msgstr ""
+
 #: config/tc-crx.c:1264
 #, c-format
-msgid "Illegal Co-processor register in Instruction `%s' "
+msgid "Illegal co-processor register in instruction `%s'"
 msgstr ""
 
 #: config/tc-crx.c:1271
 #, c-format
-msgid "Illegal Co-processor special register in Instruction `%s' "
+msgid "Illegal co-processor special register in instruction `%s'"
 msgstr ""
 
 #: config/tc-crx.c:1593
@@ -5757,7 +5769,7 @@ msgid "Operand value is not within upper 64 KB (arg %d)"
 msgstr ""
 
 #: config/tc-crx.c:1736
-msgid "Invalid Register in Register List"
+msgid "Invalid register in register list"
 msgstr ""
 
 #: config/tc-crx.c:1790
@@ -5954,7 +5966,7 @@ msgid ""
 "-O                      Make adjacent short instructions parallel if "
 "possible.\n"
 "-n                      Warn about all NOPs inserted by the assembler.\n"
-"-N\t\t\tWarn about NOPs inserted after word multiplies.\n"
+"-N                      Warn about NOPs inserted after word multiplies.\n"
 "-c                      Warn about symbols whose names match register "
 "names.\n"
 "-C                      Opposite of -C.  -c is the default.\n"
@@ -6084,7 +6096,7 @@ msgstr ""
 msgid "line %d: unable to place address of symbol '%s' into a quad"
 msgstr ""
 
-#: config/tc-d30v.c:2053
+#: config/tc-d30v.c:2053 config/tc-pru.c:216 config/tc-pru.c:331
 #, c-format
 msgid "Alignment too large: %d assumed"
 msgstr ""
@@ -6097,9 +6109,9 @@ msgstr ""
 msgid ".endfunc missing for previous .proc"
 msgstr ""
 
-#: config/tc-dlx.c:295 config/tc-i860.c:226 config/tc-mips.c:3512
+#: config/tc-dlx.c:295 config/tc-i860.c:226 config/tc-mips.c:3523
 #: config/tc-nios2.c:3626 config/tc-nios2.c:3640 config/tc-nios2.c:3655
-#: config/tc-riscv.c:603
+#: config/tc-pru.c:1564 config/tc-pru.c:1578 config/tc-riscv.c:611
 #, c-format
 msgid "internal error: can't hash `%s': %s\n"
 msgstr ""
@@ -6107,7 +6119,8 @@ msgstr ""
 #. Probably a memory allocation problem?  Give up now.
 #: config/tc-dlx.c:302 config/tc-hppa.c:8272 config/tc-nios2.c:1440
 #: config/tc-nios2.c:3629 config/tc-nios2.c:3643 config/tc-nios2.c:3658
-#: config/tc-riscv.c:606 config/tc-riscv.c:614 config/tc-sparc.c:1060
+#: config/tc-pru.c:1567 config/tc-pru.c:1581 config/tc-riscv.c:614
+#: config/tc-riscv.c:622 config/tc-sparc.c:1061
 msgid "Broken assembler.  No assembly attempted."
 msgstr ""
 
@@ -6178,7 +6191,7 @@ msgid "Invalid expression after # number\n"
 msgstr ""
 
 #: config/tc-dlx.c:1199 config/tc-i960.c:2637 config/tc-m32r.c:2276
-#: config/tc-nds32.c:6639 config/tc-sparc.c:3982
+#: config/tc-nds32.c:6639 config/tc-sparc.c:4021
 #, c-format
 msgid "internal error: can't export reloc type %d (`%s')"
 msgstr ""
@@ -6321,7 +6334,7 @@ msgstr ""
 #: config/tc-frv.c:472
 #, c-format
 msgid ""
-"-mlibrary-pic   Mark generated file as using position indepedent code for "
+"-mlibrary-pic   Mark generated file as using position independent code for "
 "libraries\n"
 msgstr ""
 
@@ -6548,7 +6561,7 @@ msgstr ""
 
 #. This seems more sane than saying "too many operands".  We'll
 #. get here only if the trailing trash starts with a comma.
-#: config/tc-h8300.c:1846 config/tc-mips.c:13845 config/tc-mips.c:13910
+#: config/tc-h8300.c:1846 config/tc-mips.c:13854 config/tc-mips.c:13924
 #: config/tc-mmix.c:479 config/tc-mmix.c:491 config/tc-mmix.c:2533
 #: config/tc-mmix.c:2557 config/tc-mmix.c:2830
 msgid "invalid operands"
@@ -7030,7 +7043,7 @@ msgstr ""
 msgid "-R option not supported on this target."
 msgstr ""
 
-#: config/tc-hppa.c:8253 config/tc-sparc.c:1015 config/tc-sparc.c:1052
+#: config/tc-hppa.c:8253 config/tc-sparc.c:1016 config/tc-sparc.c:1053
 #, c-format
 msgid "Internal error: can't hash `%s': %s\n"
 msgstr ""
@@ -7040,13 +7053,13 @@ msgstr ""
 msgid "internal error: losing opcode: `%s' \"%s\"\n"
 msgstr ""
 
-#: config/tc-i370.c:418 config/tc-ppc.c:1211 config/tc-s390.c:430
-#: config/tc-s390.c:437
+#: config/tc-i370.c:418 config/tc-ppc.c:1264 config/tc-s390.c:432
+#: config/tc-s390.c:439
 #, c-format
 msgid "invalid switch -m%s"
 msgstr ""
 
-#: config/tc-i370.c:515 config/tc-s390.c:536
+#: config/tc-i370.c:515 config/tc-s390.c:538
 #, c-format
 msgid "Internal assembler error for instruction %s"
 msgstr ""
@@ -7056,7 +7069,7 @@ msgstr ""
 msgid "Internal assembler error for macro %s"
 msgstr ""
 
-#: config/tc-i370.c:629 config/tc-ppc.c:2014
+#: config/tc-i370.c:629 config/tc-ppc.c:2067
 msgid "identifier+constant@got means identifier@got+constant"
 msgstr ""
 
@@ -7087,8 +7100,8 @@ msgid "Expected comma after symbol-name: rest of line ignored."
 msgstr ""
 
 #: config/tc-i370.c:1068 config/tc-m32r.c:1512 config/tc-microblaze.c:212
-#: config/tc-ppc.c:2174 config/tc-ppc.c:3674 config/tc-ppc.c:3716
-#: config/tc-ppc.c:5276
+#: config/tc-ppc.c:2227 config/tc-ppc.c:3736 config/tc-ppc.c:3778
+#: config/tc-ppc.c:5338
 msgid "ignoring bad alignment"
 msgstr ""
 
@@ -7148,20 +7161,20 @@ msgstr ""
 
 #: config/tc-i370.c:1777 config/tc-i370.c:1786
 #, c-format
-msgid "droping register %d in section %s does not match using register %d"
+msgid "dropping register %d in section %s does not match using register %d"
 msgstr ""
 
 #: config/tc-i370.c:1790
 #, c-format
-msgid "droping register %d in section %s previously used in section %s"
+msgid "dropping register %d in section %s previously used in section %s"
 msgstr ""
 
-#: config/tc-i370.c:1846 config/tc-ppc.c:3506
+#: config/tc-i370.c:1846 config/tc-ppc.c:3568
 msgid "wrong number of operands"
 msgstr ""
 
 #: config/tc-i370.c:1928 config/tc-mn10200.c:896 config/tc-mn10300.c:1253
-#: config/tc-s390.c:1687 config/tc-v850.c:2328
+#: config/tc-s390.c:1689 config/tc-v850.c:2328
 #, c-format
 msgid "Unrecognized opcode: `%s'"
 msgstr ""
@@ -7177,7 +7190,7 @@ msgstr ""
 
 #. xgettext:c-format.
 #: config/tc-i370.c:2207 config/tc-mn10200.c:1139 config/tc-mn10300.c:1821
-#: config/tc-ppc.c:3362 config/tc-s390.c:1600 config/tc-v850.c:3043
+#: config/tc-ppc.c:3424 config/tc-s390.c:1602 config/tc-v850.c:3043
 #, c-format
 msgid "junk at end of line: `%s'"
 msgstr ""
@@ -7187,727 +7200,727 @@ msgstr ""
 msgid "Internal Error: bad instruction length"
 msgstr ""
 
-#: config/tc-i386.c:2121
+#: config/tc-i386.c:2137
 #, c-format
 msgid "%s shortened to %s"
 msgstr ""
 
-#: config/tc-i386.c:2207
+#: config/tc-i386.c:2223
 msgid "same type of prefix used twice"
 msgstr ""
 
-#: config/tc-i386.c:2234
+#: config/tc-i386.c:2250
 #, c-format
 msgid "64bit mode not supported on `%s'."
 msgstr ""
 
-#: config/tc-i386.c:2243
+#: config/tc-i386.c:2259
 #, c-format
 msgid "32bit mode not supported on `%s'."
 msgstr ""
 
-#: config/tc-i386.c:2283
+#: config/tc-i386.c:2299
 msgid "bad argument to syntax directive."
 msgstr ""
 
-#: config/tc-i386.c:2346
+#: config/tc-i386.c:2362
 #, c-format
 msgid "bad argument to %s_check directive."
 msgstr ""
 
-#: config/tc-i386.c:2350
+#: config/tc-i386.c:2366
 #, c-format
 msgid "missing argument for %s_check directive"
 msgstr ""
 
-#: config/tc-i386.c:2390
+#: config/tc-i386.c:2406
 #, c-format
 msgid "`%s' is not supported on `%s'"
 msgstr ""
 
-#: config/tc-i386.c:2492
+#: config/tc-i386.c:2508
 #, c-format
 msgid "no such architecture: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:2497
+#: config/tc-i386.c:2513
 msgid "missing cpu architecture"
 msgstr ""
 
-#: config/tc-i386.c:2514
+#: config/tc-i386.c:2530
 #, c-format
 msgid "no such architecture modifier: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:2529 config/tc-i386.c:2559
+#: config/tc-i386.c:2545 config/tc-i386.c:2575
 msgid "Intel L1OM is 64bit ELF only"
 msgstr ""
 
-#: config/tc-i386.c:2536 config/tc-i386.c:2566
+#: config/tc-i386.c:2552 config/tc-i386.c:2582
 msgid "Intel K1OM is 64bit ELF only"
 msgstr ""
 
-#: config/tc-i386.c:2543 config/tc-i386.c:2580
+#: config/tc-i386.c:2559 config/tc-i386.c:2596
 msgid "Intel MCU is 32bit ELF only"
 msgstr ""
 
-#: config/tc-i386.c:2587 config/tc-i386.c:10524
+#: config/tc-i386.c:2603 config/tc-i386.c:10599
 msgid "unknown architecture"
 msgstr ""
 
-#: config/tc-i386.c:2621 config/tc-i386.c:2643
+#: config/tc-i386.c:2640 config/tc-i386.c:2662
 #, c-format
 msgid "can't hash %s: %s"
 msgstr ""
 
-#: config/tc-i386.c:2939
+#: config/tc-i386.c:2961
 msgid "there are no pc-relative size relocations"
 msgstr ""
 
-#: config/tc-i386.c:2951
+#: config/tc-i386.c:2973
 #, c-format
 msgid "unknown relocation (%u)"
 msgstr ""
 
-#: config/tc-i386.c:2953
+#: config/tc-i386.c:2975
 #, c-format
 msgid "%u-byte relocation cannot be applied to %u-byte field"
 msgstr ""
 
-#: config/tc-i386.c:2957
+#: config/tc-i386.c:2979
 msgid "non-pc-relative relocation for pc-relative field"
 msgstr ""
 
-#: config/tc-i386.c:2962
+#: config/tc-i386.c:2984
 msgid "relocated field and relocation type differ in signedness"
 msgstr ""
 
-#: config/tc-i386.c:2971
+#: config/tc-i386.c:2993
 msgid "there are no unsigned pc-relative relocations"
 msgstr ""
 
-#: config/tc-i386.c:2979
+#: config/tc-i386.c:3001
 #, c-format
 msgid "cannot do %u byte pc-relative relocation"
 msgstr ""
 
-#: config/tc-i386.c:2996
+#: config/tc-i386.c:3018
 #, c-format
 msgid "cannot do %s %u byte relocation"
 msgstr ""
 
-#: config/tc-i386.c:3449 config/tc-i386.c:3476
+#: config/tc-i386.c:3473 config/tc-i386.c:3500
 #, c-format
 msgid "can't use register '%s%s' as operand %d in '%s'."
 msgstr ""
 
-#: config/tc-i386.c:3516 config/tc-i386.c:3656
+#: config/tc-i386.c:3540 config/tc-i386.c:3680
 #, c-format
 msgid "invalid instruction `%s' after `%s'"
 msgstr ""
 
-#: config/tc-i386.c:3522
+#: config/tc-i386.c:3546
 #, c-format
 msgid "missing `lock' with `%s'"
 msgstr ""
 
-#: config/tc-i386.c:3529
+#: config/tc-i386.c:3553
 #, c-format
 msgid "instruction `%s' after `xacquire' not allowed"
 msgstr ""
 
-#: config/tc-i386.c:3536
+#: config/tc-i386.c:3560
 #, c-format
 msgid "memory destination needed for instruction `%s' after `xrelease'"
 msgstr ""
 
-#: config/tc-i386.c:3630
+#: config/tc-i386.c:3654
 #, c-format
 msgid "SSE instruction `%s' is used"
 msgstr ""
 
-#: config/tc-i386.c:3644 config/tc-i386.c:5453
+#: config/tc-i386.c:3668 config/tc-i386.c:5526
 #, c-format
 msgid "ambiguous operand size for `%s'"
 msgstr ""
 
-#: config/tc-i386.c:3669
+#: config/tc-i386.c:3693
 msgid "expecting lockable instruction after `lock'"
 msgstr ""
 
-#: config/tc-i386.c:3679
+#: config/tc-i386.c:3703
 msgid "expecting valid branch instruction after `bnd'"
 msgstr ""
 
-#: config/tc-i386.c:3684
+#: config/tc-i386.c:3708
 msgid "32-bit address isn't allowed in 64-bit MPX instructions."
 msgstr ""
 
-#: config/tc-i386.c:3688
+#: config/tc-i386.c:3712
 msgid "16-bit address isn't allowed in MPX instructions"
 msgstr ""
 
 #. UnixWare fsub no args is alias for fsubp, fadd -> faddp, etc.
-#: config/tc-i386.c:3744
+#: config/tc-i386.c:3768
 #, c-format
 msgid "translating to `%sp'"
 msgstr ""
 
-#: config/tc-i386.c:3751
+#: config/tc-i386.c:3775
 #, c-format
 msgid "instruction `%s' isn't supported in 16-bit mode."
 msgstr ""
 
-#: config/tc-i386.c:3811
+#: config/tc-i386.c:3835
 #, c-format
 msgid "can't encode register '%s%s' in an instruction requiring REX prefix."
 msgstr ""
 
-#: config/tc-i386.c:3851 config/tc-i386.c:3993
+#: config/tc-i386.c:3875 config/tc-i386.c:4057
 #, c-format
 msgid "no such instruction: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:3862 config/tc-i386.c:4026
+#: config/tc-i386.c:3886 config/tc-i386.c:4090
 #, c-format
 msgid "invalid character %s in mnemonic"
 msgstr ""
 
-#: config/tc-i386.c:3869
+#: config/tc-i386.c:3893
 msgid "expecting prefix; got nothing"
 msgstr ""
 
-#: config/tc-i386.c:3871
+#: config/tc-i386.c:3895
 msgid "expecting mnemonic; got nothing"
 msgstr ""
 
-#: config/tc-i386.c:3886 config/tc-i386.c:4044
+#: config/tc-i386.c:3910 config/tc-i386.c:4108
 #, c-format
 msgid "`%s' is only supported in 64-bit mode"
 msgstr ""
 
-#: config/tc-i386.c:3887 config/tc-i386.c:4043
+#: config/tc-i386.c:3911 config/tc-i386.c:4107
 #, c-format
 msgid "`%s' is not supported in 64-bit mode"
 msgstr ""
 
-#: config/tc-i386.c:3899
+#: config/tc-i386.c:3923
 #, c-format
 msgid "redundant %s prefix"
 msgstr ""
 
-#: config/tc-i386.c:4050
+#: config/tc-i386.c:4114
 #, c-format
 msgid "`%s' is not supported on `%s%s'"
 msgstr ""
 
-#: config/tc-i386.c:4061
+#: config/tc-i386.c:4125
 msgid "use .code16 to ensure correct addressing mode"
 msgstr ""
 
-#: config/tc-i386.c:4085
+#: config/tc-i386.c:4149
 #, c-format
 msgid "invalid character %s before operand %d"
 msgstr ""
 
-#: config/tc-i386.c:4099
+#: config/tc-i386.c:4163
 #, c-format
 msgid "unbalanced parenthesis in operand %d."
 msgstr ""
 
-#: config/tc-i386.c:4102
+#: config/tc-i386.c:4166
 #, c-format
 msgid "unbalanced brackets in operand %d."
 msgstr ""
 
-#: config/tc-i386.c:4111
+#: config/tc-i386.c:4175
 #, c-format
 msgid "invalid character %s in operand %d"
 msgstr ""
 
-#: config/tc-i386.c:4139
+#: config/tc-i386.c:4202
 #, c-format
 msgid "spurious operands; (%d operands/instruction max)"
 msgstr ""
 
-#: config/tc-i386.c:4162
+#: config/tc-i386.c:4226
 msgid "expecting operand after ','; got nothing"
 msgstr ""
 
-#: config/tc-i386.c:4167
+#: config/tc-i386.c:4231
 msgid "expecting operand before ','; got nothing"
 msgstr ""
 
-#: config/tc-i386.c:4544
+#: config/tc-i386.c:4608
 msgid "mask, index, and destination registers should be distinct"
 msgstr ""
 
-#: config/tc-i386.c:4559
+#: config/tc-i386.c:4623
 msgid "index and destination registers should be distinct"
 msgstr ""
 
-#: config/tc-i386.c:5112
+#: config/tc-i386.c:5185
 msgid "operand size mismatch"
 msgstr ""
 
-#: config/tc-i386.c:5115
+#: config/tc-i386.c:5188
 msgid "operand type mismatch"
 msgstr ""
 
-#: config/tc-i386.c:5118
+#: config/tc-i386.c:5191
 msgid "register type mismatch"
 msgstr ""
 
-#: config/tc-i386.c:5121
+#: config/tc-i386.c:5194
 msgid "number of operands mismatch"
 msgstr ""
 
-#: config/tc-i386.c:5124
+#: config/tc-i386.c:5197
 msgid "invalid instruction suffix"
 msgstr ""
 
-#: config/tc-i386.c:5127
+#: config/tc-i386.c:5200
 msgid "constant doesn't fit in 4 bits"
 msgstr ""
 
-#: config/tc-i386.c:5130
+#: config/tc-i386.c:5203
 msgid "only supported with old gcc"
 msgstr ""
 
-#: config/tc-i386.c:5133
+#: config/tc-i386.c:5206
 msgid "unsupported with Intel mnemonic"
 msgstr ""
 
-#: config/tc-i386.c:5136
+#: config/tc-i386.c:5209
 msgid "unsupported syntax"
 msgstr ""
 
-#: config/tc-i386.c:5139
+#: config/tc-i386.c:5212
 #, c-format
 msgid "unsupported instruction `%s'"
 msgstr ""
 
-#: config/tc-i386.c:5143
+#: config/tc-i386.c:5216
 msgid "invalid VSIB address"
 msgstr ""
 
-#: config/tc-i386.c:5146
+#: config/tc-i386.c:5219
 msgid "mask, index, and destination registers must be distinct"
 msgstr ""
 
-#: config/tc-i386.c:5149
+#: config/tc-i386.c:5222
 msgid "unsupported vector index register"
 msgstr ""
 
-#: config/tc-i386.c:5152
+#: config/tc-i386.c:5225
 msgid "unsupported broadcast"
 msgstr ""
 
-#: config/tc-i386.c:5155
+#: config/tc-i386.c:5228
 msgid "broadcast not on source memory operand"
 msgstr ""
 
-#: config/tc-i386.c:5158
+#: config/tc-i386.c:5231
 msgid "broadcast is needed for operand of such type"
 msgstr ""
 
-#: config/tc-i386.c:5161
+#: config/tc-i386.c:5234
 msgid "unsupported masking"
 msgstr ""
 
-#: config/tc-i386.c:5164
+#: config/tc-i386.c:5237
 msgid "mask not on destination operand"
 msgstr ""
 
-#: config/tc-i386.c:5167
+#: config/tc-i386.c:5240
 msgid "default mask isn't allowed"
 msgstr ""
 
-#: config/tc-i386.c:5170
+#: config/tc-i386.c:5243
 msgid "unsupported static rounding/sae"
 msgstr ""
 
-#: config/tc-i386.c:5174
+#: config/tc-i386.c:5247
 msgid "RC/SAE operand must precede immediate operands"
 msgstr ""
 
-#: config/tc-i386.c:5176
+#: config/tc-i386.c:5249
 msgid "RC/SAE operand must follow immediate operands"
 msgstr ""
 
-#: config/tc-i386.c:5179 config/tc-metag.c:4789 config/tc-metag.c:5530
+#: config/tc-i386.c:5252 config/tc-metag.c:4789 config/tc-metag.c:5530
 #: config/tc-metag.c:5552
 msgid "invalid register operand"
 msgstr ""
 
-#: config/tc-i386.c:5182
+#: config/tc-i386.c:5255
 #, c-format
 msgid "%s for `%s'"
 msgstr ""
 
-#: config/tc-i386.c:5193
+#: config/tc-i386.c:5266
 #, c-format
 msgid "indirect %s without `*'"
 msgstr ""
 
 #. Warn them that a data or address size prefix doesn't
 #. affect assembly of the next line of code.
-#: config/tc-i386.c:5201
+#: config/tc-i386.c:5274
 #, c-format
 msgid "stand-alone `%s' prefix"
 msgstr ""
 
-#: config/tc-i386.c:5235 config/tc-i386.c:5251
+#: config/tc-i386.c:5308 config/tc-i386.c:5324
 #, c-format
 msgid "`%s' operand %d must use `%ses' segment"
 msgstr ""
 
 #. We have to know the operand size for crc32.
-#: config/tc-i386.c:5305
+#: config/tc-i386.c:5378
 #, c-format
 msgid "ambiguous memory operand size for `%s`"
 msgstr ""
 
-#: config/tc-i386.c:5426
+#: config/tc-i386.c:5499
 msgid ""
 "no instruction mnemonic suffix given and no register operands; can't size "
 "instruction"
 msgstr ""
 
-#: config/tc-i386.c:5568 config/tc-i386.c:5642 config/tc-i386.c:5753
+#: config/tc-i386.c:5641 config/tc-i386.c:5715 config/tc-i386.c:5826
 #, c-format
 msgid "using `%s%s' instead of `%s%s' due to `%c' suffix"
 msgstr ""
 
-#: config/tc-i386.c:5595 config/tc-i386.c:5619 config/tc-i386.c:5684
-#: config/tc-i386.c:5729
+#: config/tc-i386.c:5668 config/tc-i386.c:5692 config/tc-i386.c:5757
+#: config/tc-i386.c:5802
 #, c-format
 msgid "`%s%s' not allowed with `%s%c'"
 msgstr ""
 
-#: config/tc-i386.c:5636 config/tc-i386.c:5662 config/tc-i386.c:5708
-#: config/tc-i386.c:5747
+#: config/tc-i386.c:5709 config/tc-i386.c:5735 config/tc-i386.c:5781
+#: config/tc-i386.c:5820
 #, c-format
 msgid "incorrect register `%s%s' used with `%c' suffix"
 msgstr ""
 
-#: config/tc-i386.c:5816
+#: config/tc-i386.c:5889
 msgid "no instruction mnemonic suffix given; can't determine immediate size"
 msgstr ""
 
-#: config/tc-i386.c:5852
+#: config/tc-i386.c:5925
 #, c-format
 msgid "the last operand of `%s' must be `%s%s'"
 msgstr ""
 
-#: config/tc-i386.c:5855
+#: config/tc-i386.c:5928
 #, c-format
 msgid "the first operand of `%s' must be `%s%s'"
 msgstr ""
 
-#: config/tc-i386.c:5986
+#: config/tc-i386.c:6059
 #, c-format
 msgid ""
 "the second source register `%s%s' implicitly denotes `%s%.3s%d' to `%s%.3s"
 "%d' source group in `%s'"
 msgstr ""
 
-#: config/tc-i386.c:6023
+#: config/tc-i386.c:6096
 #, c-format
 msgid "you can't `pop %scs'"
 msgstr ""
 
 #. Reversed arguments on faddp, fsubp, etc.
-#: config/tc-i386.c:6052
+#: config/tc-i386.c:6125
 #, c-format
 msgid "translating to `%s %s%s,%s%s'"
 msgstr ""
 
 #. Extraneous `l' suffix on fp insn.
-#: config/tc-i386.c:6059
+#: config/tc-i386.c:6132
 #, c-format
 msgid "translating to `%s %s%s'"
 msgstr ""
 
-#: config/tc-i386.c:6087
+#: config/tc-i386.c:6160
 #, c-format
 msgid "segment override on `%s' is ineffectual"
 msgstr ""
 
-#: config/tc-i386.c:6903 config/tc-i386.c:7004 config/tc-i386.c:7059
+#: config/tc-i386.c:6976 config/tc-i386.c:7077 config/tc-i386.c:7132
 msgid "skipping prefixes on this instruction"
 msgstr ""
 
-#: config/tc-i386.c:7079
+#: config/tc-i386.c:7152
 msgid "16-bit jump out of range"
 msgstr ""
 
-#: config/tc-i386.c:7088
+#: config/tc-i386.c:7161
 #, c-format
 msgid "can't handle non absolute segment in `%s'"
 msgstr ""
 
-#: config/tc-i386.c:7775 config/tc-i386.c:7877
+#: config/tc-i386.c:7848 config/tc-i386.c:7950
 #, c-format
 msgid "@%s reloc is not supported with %d-bit output format"
 msgstr ""
 
-#: config/tc-i386.c:7928
+#: config/tc-i386.c:8001
 #, c-format
 msgid "missing or invalid expression `%s'"
 msgstr ""
 
-#: config/tc-i386.c:8014
+#: config/tc-i386.c:8087
 #, c-format
 msgid "Unsupported broadcast: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:8029
+#: config/tc-i386.c:8102
 #, c-format
 msgid "`%s' can't be used for write mask"
 msgstr ""
 
-#: config/tc-i386.c:8052
+#: config/tc-i386.c:8125
 #, c-format
 msgid "invalid write mask `%s'"
 msgstr ""
 
-#: config/tc-i386.c:8074 config/tc-i386.c:8719
+#: config/tc-i386.c:8147 config/tc-i386.c:8792
 #, c-format
 msgid "duplicated `%s'"
 msgstr ""
 
-#: config/tc-i386.c:8084
+#: config/tc-i386.c:8157
 #, c-format
 msgid "invalid zeroing-masking `%s'"
 msgstr ""
 
-#: config/tc-i386.c:8097
+#: config/tc-i386.c:8170
 #, c-format
 msgid "missing `}' in `%s'"
 msgstr ""
 
 #. We don't know this one.
-#: config/tc-i386.c:8105
+#: config/tc-i386.c:8178
 #, c-format
 msgid "unknown vector operation: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:8125
+#: config/tc-i386.c:8198
 #, c-format
 msgid "at most %d immediate operands are allowed"
 msgstr ""
 
-#: config/tc-i386.c:8157 config/tc-i386.c:8404
+#: config/tc-i386.c:8230 config/tc-i386.c:8477
 #, c-format
 msgid "junk `%s' after expression"
 msgstr ""
 
-#: config/tc-i386.c:8178
+#: config/tc-i386.c:8251
 #, c-format
 msgid "missing or invalid immediate expression `%s'"
 msgstr ""
 
-#: config/tc-i386.c:8201 config/tc-i386.c:8494
+#: config/tc-i386.c:8274 config/tc-i386.c:8567
 #, c-format
 msgid "unimplemented segment %s in operand"
 msgstr ""
 
-#: config/tc-i386.c:8208
+#: config/tc-i386.c:8281
 #, c-format
 msgid "illegal immediate register operand %s"
 msgstr ""
 
-#: config/tc-i386.c:8256
+#: config/tc-i386.c:8329
 #, c-format
 msgid "expecting scale factor of 1, 2, 4, or 8: got `%s'"
 msgstr ""
 
-#: config/tc-i386.c:8265
+#: config/tc-i386.c:8338
 #, c-format
 msgid "scale factor of %d without an index register"
 msgstr ""
 
-#: config/tc-i386.c:8287
+#: config/tc-i386.c:8360
 #, c-format
 msgid "at most %d displacement operands are allowed"
 msgstr ""
 
-#: config/tc-i386.c:8460
+#: config/tc-i386.c:8533
 #, c-format
 msgid "missing or invalid displacement expression `%s'"
 msgstr ""
 
-#: config/tc-i386.c:8477
+#: config/tc-i386.c:8550
 #, c-format
 msgid "0x%lx out range of signed 32bit displacement"
 msgstr ""
 
-#: config/tc-i386.c:8617
+#: config/tc-i386.c:8690
 #, c-format
 msgid "`%s' is not valid here (expected `%c%s%s%c')"
 msgstr ""
 
-#: config/tc-i386.c:8629
+#: config/tc-i386.c:8702
 #, c-format
 msgid "`%s' is not a valid %s expression"
 msgstr ""
 
-#: config/tc-i386.c:8664
+#: config/tc-i386.c:8737
 #, c-format
 msgid "`%s' cannot be used here"
 msgstr ""
 
-#: config/tc-i386.c:8671
+#: config/tc-i386.c:8744
 msgid "register scaling is being ignored here"
 msgstr ""
 
-#: config/tc-i386.c:8732
+#: config/tc-i386.c:8805
 #, c-format
 msgid "Missing '}': '%s'"
 msgstr ""
 
-#: config/tc-i386.c:8738
+#: config/tc-i386.c:8811
 #, c-format
 msgid "Junk after '}': '%s'"
 msgstr ""
 
-#: config/tc-i386.c:8866
+#: config/tc-i386.c:8939
 #, c-format
 msgid "bad memory operand `%s'"
 msgstr ""
 
-#: config/tc-i386.c:8890
+#: config/tc-i386.c:8963
 #, c-format
 msgid "junk `%s' after register"
 msgstr ""
 
-#: config/tc-i386.c:8903 config/tc-i386.c:9040 config/tc-i386.c:9084
+#: config/tc-i386.c:8976 config/tc-i386.c:9113 config/tc-i386.c:9157
 #, c-format
 msgid "bad register name `%s'"
 msgstr ""
 
-#: config/tc-i386.c:8911
+#: config/tc-i386.c:8984
 msgid "immediate operand illegal with absolute jump"
 msgstr ""
 
-#: config/tc-i386.c:8942
+#: config/tc-i386.c:9015
 #, c-format
 msgid "too many memory references for `%s'"
 msgstr ""
 
-#: config/tc-i386.c:9029
+#: config/tc-i386.c:9102
 #, c-format
 msgid "expecting `,' or `)' after index register in `%s'"
 msgstr ""
 
-#: config/tc-i386.c:9057
+#: config/tc-i386.c:9130
 #, c-format
 msgid "expecting `)' after scale factor in `%s'"
 msgstr ""
 
-#: config/tc-i386.c:9065
+#: config/tc-i386.c:9138
 #, c-format
 msgid "expecting index register or scale factor after `,'; got '%c'"
 msgstr ""
 
-#: config/tc-i386.c:9073
+#: config/tc-i386.c:9146
 #, c-format
 msgid "expecting `,' or `)' after base register in `%s'"
 msgstr ""
 
 #. It's not a memory operand; argh!
-#: config/tc-i386.c:9122
+#: config/tc-i386.c:9195
 #, c-format
 msgid "invalid char %s beginning operand %d `%s'"
 msgstr ""
 
-#: config/tc-i386.c:9344
+#: config/tc-i386.c:9417
 msgid "long jump required"
 msgstr ""
 
-#: config/tc-i386.c:9399
+#: config/tc-i386.c:9472
 msgid "jump target out of range"
 msgstr ""
 
-#: config/tc-i386.c:9972
+#: config/tc-i386.c:10047
 msgid "no compiled in support for x86_64"
 msgstr ""
 
-#: config/tc-i386.c:9992
+#: config/tc-i386.c:10067
 msgid "no compiled in support for 32bit x86_64"
 msgstr ""
 
-#: config/tc-i386.c:9996
+#: config/tc-i386.c:10071
 msgid "32bit x86_64 is only supported for ELF"
 msgstr ""
 
-#: config/tc-i386.c:10030 config/tc-i386.c:10114
+#: config/tc-i386.c:10105 config/tc-i386.c:10189
 #, c-format
 msgid "invalid -march= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:10124 config/tc-i386.c:10136
+#: config/tc-i386.c:10199 config/tc-i386.c:10211
 #, c-format
 msgid "invalid -mtune= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:10145
+#: config/tc-i386.c:10220
 #, c-format
 msgid "invalid -mmnemonic= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:10154
+#: config/tc-i386.c:10229
 #, c-format
 msgid "invalid -msyntax= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:10181
+#: config/tc-i386.c:10256
 #, c-format
 msgid "invalid -msse-check= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:10192
+#: config/tc-i386.c:10267
 #, c-format
 msgid "invalid -moperand-check= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:10201
+#: config/tc-i386.c:10276
 #, c-format
 msgid "invalid -mavxscalar= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:10216
+#: config/tc-i386.c:10291
 #, c-format
 msgid "invalid -mevexlig= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:10229
+#: config/tc-i386.c:10304
 #, c-format
 msgid "invalid -mevexrcig= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:10238
+#: config/tc-i386.c:10313
 #, c-format
 msgid "invalid -mevexwig= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:10253
+#: config/tc-i386.c:10328
 #, c-format
 msgid "invalid -momit-lock-prefix= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:10262
+#: config/tc-i386.c:10337
 #, c-format
 msgid "invalid -mfence-as-lock-add= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:10271
+#: config/tc-i386.c:10346
 #, c-format
 msgid "invalid -mrelax-relocations= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:10394
+#: config/tc-i386.c:10469
 #, c-format
 msgid ""
 "  -Q                      ignored\n"
@@ -7915,34 +7928,34 @@ msgid ""
 "  -k                      ignored\n"
 msgstr ""
 
-#: config/tc-i386.c:10399
+#: config/tc-i386.c:10474
 #, c-format
 msgid ""
 "  -n                      Do not optimize code alignment\n"
 "  -q                      quieten some warnings\n"
 msgstr ""
 
-#: config/tc-i386.c:10403
+#: config/tc-i386.c:10478
 #, c-format
 msgid "  -s                      ignored\n"
 msgstr ""
 
-#: config/tc-i386.c:10408
+#: config/tc-i386.c:10483
 #, c-format
 msgid "  --32/--64/--x32         generate 32bit/64bit/x32 code\n"
 msgstr ""
 
-#: config/tc-i386.c:10412
+#: config/tc-i386.c:10487
 #, c-format
 msgid "  --divide                do not treat `/' as a comment character\n"
 msgstr ""
 
-#: config/tc-i386.c:10415
+#: config/tc-i386.c:10490
 #, c-format
 msgid "  --divide                ignored\n"
 msgstr ""
 
-#: config/tc-i386.c:10418
+#: config/tc-i386.c:10493
 #, c-format
 msgid ""
 "  -march=CPU[,+EXTENSION...]\n"
@@ -7950,36 +7963,36 @@ msgid ""
 "of:\n"
 msgstr ""
 
-#: config/tc-i386.c:10422
+#: config/tc-i386.c:10497
 #, c-format
 msgid "                          EXTENSION is combination of:\n"
 msgstr ""
 
-#: config/tc-i386.c:10425
+#: config/tc-i386.c:10500
 #, c-format
 msgid "  -mtune=CPU              optimize for CPU, CPU is one of:\n"
 msgstr ""
 
-#: config/tc-i386.c:10428
+#: config/tc-i386.c:10503
 #, c-format
 msgid "  -msse2avx               encode SSE instructions with VEX prefix\n"
 msgstr ""
 
-#: config/tc-i386.c:10430
+#: config/tc-i386.c:10505
 #, c-format
 msgid ""
 "  -msse-check=[none|error|warning]\n"
 "                          check SSE instructions\n"
 msgstr ""
 
-#: config/tc-i386.c:10433
+#: config/tc-i386.c:10508
 #, c-format
 msgid ""
 "  -moperand-check=[none|error|warning]\n"
 "                          check operand combinations for validity\n"
 msgstr ""
 
-#: config/tc-i386.c:10436
+#: config/tc-i386.c:10511
 #, c-format
 msgid ""
 "  -mavxscalar=[128|256]   encode scalar AVX instructions with specific "
@@ -7987,7 +8000,7 @@ msgid ""
 "                           length\n"
 msgstr ""
 
-#: config/tc-i386.c:10439
+#: config/tc-i386.c:10514
 #, c-format
 msgid ""
 "  -mevexlig=[128|256|512] encode scalar EVEX instructions with specific "
@@ -7995,7 +8008,7 @@ msgid ""
 "                           length\n"
 msgstr ""
 
-#: config/tc-i386.c:10442
+#: config/tc-i386.c:10517
 #, c-format
 msgid ""
 "  -mevexwig=[0|1]         encode EVEX instructions with specific EVEX.W "
@@ -8003,7 +8016,7 @@ msgid ""
 "                           for EVEX.W bit ignored instructions\n"
 msgstr ""
 
-#: config/tc-i386.c:10445
+#: config/tc-i386.c:10520
 #, c-format
 msgid ""
 "  -mevexrcig=[rne|rd|ru|rz]\n"
@@ -8012,54 +8025,54 @@ msgid ""
 "                           for SAE-only ignored instructions\n"
 msgstr ""
 
-#: config/tc-i386.c:10449
+#: config/tc-i386.c:10524
 #, c-format
 msgid "  -mmnemonic=[att|intel]  use AT&T/Intel mnemonic\n"
 msgstr ""
 
-#: config/tc-i386.c:10451
+#: config/tc-i386.c:10526
 #, c-format
 msgid "  -msyntax=[att|intel]    use AT&T/Intel syntax\n"
 msgstr ""
 
-#: config/tc-i386.c:10453
+#: config/tc-i386.c:10528
 #, c-format
 msgid "  -mindex-reg             support pseudo index registers\n"
 msgstr ""
 
-#: config/tc-i386.c:10455
+#: config/tc-i386.c:10530
 #, c-format
 msgid "  -mnaked-reg             don't require `%%' prefix for registers\n"
 msgstr ""
 
-#: config/tc-i386.c:10457
+#: config/tc-i386.c:10532
 #, c-format
 msgid "  -mold-gcc               support old (<= 2.8.1) versions of gcc\n"
 msgstr ""
 
-#: config/tc-i386.c:10459
+#: config/tc-i386.c:10534
 #, c-format
 msgid "  -madd-bnd-prefix        add BND prefix for all valid branches\n"
 msgstr ""
 
-#: config/tc-i386.c:10461
+#: config/tc-i386.c:10536
 #, c-format
 msgid "  -mshared                disable branch optimization for shared code\n"
 msgstr ""
 
-#: config/tc-i386.c:10464
+#: config/tc-i386.c:10539
 #, c-format
 msgid "  -mbig-obj               generate big object files\n"
 msgstr ""
 
-#: config/tc-i386.c:10467
+#: config/tc-i386.c:10542
 #, c-format
 msgid ""
 "  -momit-lock-prefix=[no|yes]\n"
 "                          strip all lock prefixes\n"
 msgstr ""
 
-#: config/tc-i386.c:10470
+#: config/tc-i386.c:10545
 #, c-format
 msgid ""
 "  -mfence-as-lock-add=[no|yes]\n"
@@ -8067,73 +8080,73 @@ msgid ""
 "                           lock addl $0x0, (%%{re}sp)\n"
 msgstr ""
 
-#: config/tc-i386.c:10474
+#: config/tc-i386.c:10549
 #, c-format
 msgid ""
 "  -mrelax-relocations=[no|yes]\n"
 "                          generate relax relocations\n"
 msgstr ""
 
-#: config/tc-i386.c:10477
+#: config/tc-i386.c:10552
 #, c-format
 msgid "  -mamd64                 accept only AMD64 ISA\n"
 msgstr ""
 
-#: config/tc-i386.c:10479
+#: config/tc-i386.c:10554
 #, c-format
 msgid "  -mintel64               accept only Intel64 ISA\n"
 msgstr ""
 
-#: config/tc-i386.c:10520
+#: config/tc-i386.c:10595
 #, c-format
 msgid "Intel MCU doesn't support `%s' architecture"
 msgstr ""
 
-#: config/tc-i386.c:10577
+#: config/tc-i386.c:10652
 msgid "Intel L1OM is 64bit only"
 msgstr ""
 
-#: config/tc-i386.c:10583
+#: config/tc-i386.c:10658
 msgid "Intel K1OM is 64bit only"
 msgstr ""
 
-#: config/tc-i386.c:10589
+#: config/tc-i386.c:10664
 msgid "Intel MCU is 32bit only"
 msgstr ""
 
-#: config/tc-i386.c:10746
+#: config/tc-i386.c:10821
 msgid "symbol size computation overflow"
 msgstr ""
 
-#: config/tc-i386.c:10814
+#: config/tc-i386.c:10889
 #, c-format
 msgid "can not do %d byte pc-relative relocation"
 msgstr ""
 
-#: config/tc-i386.c:10832
+#: config/tc-i386.c:10907
 #, c-format
 msgid "can not do %d byte relocation"
 msgstr ""
 
-#: config/tc-i386.c:10900
+#: config/tc-i386.c:10975
 #, c-format
 msgid "cannot represent relocation type %s in x32 mode"
 msgstr ""
 
-#: config/tc-i386.c:10937 config/tc-s390.c:2597
+#: config/tc-i386.c:11012 config/tc-s390.c:2599
 #, c-format
 msgid "cannot represent relocation type %s"
 msgstr ""
 
-#: config/tc-i386.c:11054
+#: config/tc-i386.c:11129
 msgid "bad .section directive: want a,l,w,x,M,S,G,T in string"
 msgstr ""
 
-#: config/tc-i386.c:11057
+#: config/tc-i386.c:11132
 msgid "bad .section directive: want a,w,x,M,S,G,T in string"
 msgstr ""
 
-#: config/tc-i386.c:11076
+#: config/tc-i386.c:11151
 msgid ".largecomm supported only in 64bit mode, producing .comm"
 msgstr ""
 
@@ -8158,7 +8171,7 @@ msgid "Defective assembler.  No assembly attempted."
 msgstr ""
 
 #: config/tc-i860.c:392 config/tc-i860.c:938 config/tc-m68k.c:3917
-#: config/tc-m68k.c:3949 config/tc-sparc.c:3122
+#: config/tc-m68k.c:3949 config/tc-sparc.c:3125
 msgid "failed sanity check."
 msgstr ""
 
@@ -8297,7 +8310,7 @@ msgstr ""
 msgid "architecture of opcode conflicts with that of earlier instruction(s)"
 msgstr ""
 
-#: config/tc-i960.c:1421 config/tc-xtensa.c:12644
+#: config/tc-i960.c:1421 config/tc-xtensa.c:12656
 msgid "too many operands"
 msgstr ""
 
@@ -8317,7 +8330,7 @@ msgstr ""
 
 #: config/tc-i960.c:1649
 #, c-format
-msgid "improper number of operands.  expecting %d, got %d"
+msgid "improper number of operands.  Expecting %d, got %d"
 msgstr ""
 
 #: config/tc-i960.c:1750
@@ -8486,7 +8499,7 @@ msgid "Section switching in code is not supported."
 msgstr ""
 
 #: config/tc-ia64.c:2804
-msgid " Insn slot not set in unwind record."
+msgid "Insn slot not set in unwind record."
 msgstr ""
 
 #: config/tc-ia64.c:2878
@@ -9047,7 +9060,7 @@ msgstr ""
 msgid "Inserting \"%s\" into constant hash table failed: %s"
 msgstr ""
 
-#: config/tc-ia64.c:7493 config/tc-riscv.c:591 config/tc-tilegx.c:263
+#: config/tc-ia64.c:7493 config/tc-riscv.c:599 config/tc-tilegx.c:263
 msgid "Could not set architecture and machine"
 msgstr ""
 
@@ -9304,7 +9317,7 @@ msgstr ""
 msgid "Unmatched high relocation"
 msgstr ""
 
-#: config/tc-iq2000.c:826 config/tc-mips.c:19022 config/tc-score.c:5814
+#: config/tc-iq2000.c:826 config/tc-mips.c:19046 config/tc-score.c:5814
 msgid ".end not in text section"
 msgstr ""
 
@@ -9316,7 +9329,7 @@ msgstr ""
 msgid ".end symbol does not match .ent symbol."
 msgstr ""
 
-#: config/tc-iq2000.c:842 config/tc-mips.c:19042 config/tc-score.c:5830
+#: config/tc-iq2000.c:842 config/tc-mips.c:19066 config/tc-score.c:5830
 msgid ".end directive missing or unknown symbol"
 msgstr ""
 
@@ -9324,7 +9337,7 @@ msgstr ""
 msgid "Expected simple number."
 msgstr ""
 
-#: config/tc-iq2000.c:889 config/tc-mips.c:18947 config/tc-score.c:5666
+#: config/tc-iq2000.c:889 config/tc-mips.c:18971 config/tc-score.c:5666
 #, c-format
 msgid " *input_line_pointer == '%c' 0x%02x\n"
 msgstr ""
@@ -9351,7 +9364,7 @@ msgstr ""
 msgid "Unrecognised option: -hidden"
 msgstr ""
 
-#: config/tc-m32r.c:357 config/tc-sparc.c:647
+#: config/tc-m32r.c:357 config/tc-sparc.c:648
 msgid "Unrecognized option following -K"
 msgstr ""
 
@@ -9416,7 +9429,7 @@ msgstr ""
 
 #: config/tc-m32r.c:395
 #, c-format
-msgid "                                         might violate contraints\n"
+msgid "                                         might violate constraints\n"
 msgstr ""
 
 #: config/tc-m32r.c:397
@@ -9428,7 +9441,7 @@ msgstr ""
 #, c-format
 msgid ""
 "                                         instructions might violate "
-"contraints\n"
+"constraints\n"
 msgstr ""
 
 #: config/tc-m32r.c:401
@@ -10125,7 +10138,7 @@ msgstr ""
 
 #: config/tc-m68k.c:4435
 #, c-format
-msgid "Don't know how to figure width of %c in md_assemble()"
+msgid "Don't know how to figure out width of %c in md_assemble()"
 msgstr ""
 
 #: config/tc-m68k.c:4667 config/tc-m68k.c:4706
@@ -10349,7 +10362,7 @@ msgstr ""
 
 #: config/tc-m68k.c:7733
 #, c-format
-msgid "-m[no-]%-16s enable/disable%s architecture extension\n"
+msgid "-m[no-]%-16s enable/disable %s architecture extension\n"
 msgstr ""
 
 #: config/tc-m68k.c:7739
@@ -10442,11 +10455,10 @@ msgstr ""
 msgid "operand must be a multiple of 2"
 msgstr ""
 
-#: config/tc-mcore.c:887 config/tc-microblaze.c:934
-#: config/tc-microblaze.c:1066 config/tc-microblaze.c:1098
-#: config/tc-microblaze.c:1551 config/tc-microblaze.c:1617
-#: config/tc-microblaze.c:1690 config/tc-microblaze.c:2102
-#: config/tc-microblaze.c:2149
+#: config/tc-mcore.c:887 config/tc-microblaze.c:934 config/tc-microblaze.c:1066
+#: config/tc-microblaze.c:1098 config/tc-microblaze.c:1551
+#: config/tc-microblaze.c:1617 config/tc-microblaze.c:1690
+#: config/tc-microblaze.c:2102 config/tc-microblaze.c:2149
 #, c-format
 msgid "unknown opcode \"%s\""
 msgstr ""
@@ -10612,8 +10624,8 @@ msgstr ""
 msgid "Can not do %d byte %srelocation"
 msgstr ""
 
-#: config/tc-mcore.c:2184 config/tc-microblaze.c:2431
-msgid "pc-relative"
+#: config/tc-mcore.c:2184 config/tc-microblaze.c:2431 config/tc-tic30.c:1387
+msgid "pc-relative "
 msgstr ""
 
 #: config/tc-mep.c:339
@@ -11242,725 +11254,725 @@ msgstr ""
 msgid "Absolute value in relaxation code.  Assembler error....."
 msgstr ""
 
-#: config/tc-mips.c:2037
+#: config/tc-mips.c:2046
 #, c-format
 msgid "the %d-bit %s architecture does not support the `%s' extension"
 msgstr ""
 
-#: config/tc-mips.c:2040
+#: config/tc-mips.c:2049
 #, c-format
 msgid "the `%s' extension requires %s%d revision %d or greater"
 msgstr ""
 
-#: config/tc-mips.c:2049
+#: config/tc-mips.c:2058
 #, c-format
 msgid "the `%s' extension was removed in %s%d revision %d"
 msgstr ""
 
-#: config/tc-mips.c:2058
+#: config/tc-mips.c:2067
 #, c-format
 msgid "the `%s' extension requires 64-bit FPRs"
 msgstr ""
 
-#: config/tc-mips.c:2876 config/tc-mips.c:16044
+#: config/tc-mips.c:2885 config/tc-mips.c:16069
 #, c-format
 msgid "unrecognized register name `%s'"
 msgstr ""
 
-#: config/tc-mips.c:3103
+#: config/tc-mips.c:3112
 msgid "invalid register range"
 msgstr ""
 
-#: config/tc-mips.c:3131
+#: config/tc-mips.c:3140
 msgid "vector element must be constant"
 msgstr ""
 
-#: config/tc-mips.c:3141
+#: config/tc-mips.c:3150
 msgid "missing `]'"
 msgstr ""
 
-#: config/tc-mips.c:3353
+#: config/tc-mips.c:3364
 #, c-format
 msgid "internal: bad mips opcode (mask error): %s %s"
 msgstr ""
 
-#: config/tc-mips.c:3380
+#: config/tc-mips.c:3391
 #, c-format
 msgid "internal: unknown operand type: %s %s"
 msgstr ""
 
-#: config/tc-mips.c:3405
+#: config/tc-mips.c:3416
 #, c-format
 msgid "internal: bad mips opcode (bits 0x%08lx doubly defined): %s %s"
 msgstr ""
 
-#: config/tc-mips.c:3413
+#: config/tc-mips.c:3424
 #, c-format
 msgid "internal: bad mips opcode (bits 0x%08lx undefined): %s %s"
 msgstr ""
 
-#: config/tc-mips.c:3420
+#: config/tc-mips.c:3431
 #, c-format
 msgid "internal: bad mips opcode (bits 0x%08lx defined): %s %s"
 msgstr ""
 
-#: config/tc-mips.c:3455
+#: config/tc-mips.c:3466
 #, c-format
 msgid "internal error: bad microMIPS opcode (incorrect length: %u): %s %s"
 msgstr ""
 
-#: config/tc-mips.c:3463
+#: config/tc-mips.c:3474
 #, c-format
 msgid "internal error: bad microMIPS opcode (opcode/length mismatch): %s %s"
 msgstr ""
 
-#: config/tc-mips.c:3489
+#: config/tc-mips.c:3500
 msgid "-G may not be used in position-independent code"
 msgstr ""
 
-#: config/tc-mips.c:3495
+#: config/tc-mips.c:3506
 msgid "-G may not be used with abicalls"
 msgstr ""
 
 #. Probably a memory allocation problem?  Give up now.
-#: config/tc-mips.c:3515 config/tc-mips.c:3606
+#: config/tc-mips.c:3526 config/tc-mips.c:3617
 msgid "broken assembler, no assembly attempted"
 msgstr ""
 
-#: config/tc-mips.c:3545 config/tc-mips.c:3574
+#: config/tc-mips.c:3556 config/tc-mips.c:3585
 #, c-format
 msgid "internal: can't hash `%s': %s"
 msgstr ""
 
-#: config/tc-mips.c:3756
+#: config/tc-mips.c:3767
 #, c-format
 msgid ".gnu_attribute %d,%d is incompatible with `%s'"
 msgstr ""
 
-#: config/tc-mips.c:3763
+#: config/tc-mips.c:3774
 #, c-format
 msgid ".gnu_attribute %d,%d requires `%s'"
 msgstr ""
 
-#: config/tc-mips.c:3824
+#: config/tc-mips.c:3835
 #, c-format
 msgid ".gnu_attribute %d,%d is no longer supported"
 msgstr ""
 
-#: config/tc-mips.c:3833
+#: config/tc-mips.c:3844
 #, c-format
 msgid ".gnu_attribute %d,%d is not a recognized floating-point ABI"
 msgstr ""
 
-#: config/tc-mips.c:3846
+#: config/tc-mips.c:3857
 msgid "`gp=64' used with a 32-bit processor"
 msgstr ""
 
-#: config/tc-mips.c:3849
+#: config/tc-mips.c:3860
 msgid "`gp=32' used with a 64-bit ABI"
 msgstr ""
 
-#: config/tc-mips.c:3852
+#: config/tc-mips.c:3863
 msgid "`gp=64' used with a 32-bit ABI"
 msgstr ""
 
-#: config/tc-mips.c:3859
+#: config/tc-mips.c:3870
 msgid "`fp=xx' used with a cpu lacking ldc1/sdc1 instructions"
 msgstr ""
 
-#: config/tc-mips.c:3861
+#: config/tc-mips.c:3872
 msgid "`fp=xx' cannot be used with `singlefloat'"
 msgstr ""
 
-#: config/tc-mips.c:3865
+#: config/tc-mips.c:3876
 msgid "`fp=64' used with a 32-bit fpu"
 msgstr ""
 
-#: config/tc-mips.c:3869
+#: config/tc-mips.c:3880
 msgid "`fp=64' used with a 32-bit ABI"
 msgstr ""
 
-#: config/tc-mips.c:3874
+#: config/tc-mips.c:3885
 msgid "`fp=32' used with a 64-bit ABI"
 msgstr ""
 
-#: config/tc-mips.c:3876
+#: config/tc-mips.c:3887
 msgid "`fp=32' used with a MIPS R6 cpu"
 msgstr ""
 
-#: config/tc-mips.c:3879
+#: config/tc-mips.c:3890
 msgid "Unknown size of floating point registers"
 msgstr ""
 
-#: config/tc-mips.c:3884
+#: config/tc-mips.c:3895
 msgid "`nooddspreg` cannot be used with a 64-bit ABI"
 msgstr ""
 
-#: config/tc-mips.c:3887 config/tc-mips.c:3891
+#: config/tc-mips.c:3898 config/tc-mips.c:3902
 #, c-format
 msgid "`%s' cannot be used with `%s'"
 msgstr ""
 
-#: config/tc-mips.c:3896
+#: config/tc-mips.c:3907
 #, c-format
 msgid "branch relaxation is not supported in `%s'"
 msgstr ""
 
-#: config/tc-mips.c:3976
+#: config/tc-mips.c:3987
 msgid "trap exception not supported at ISA 1"
 msgstr ""
 
-#: config/tc-mips.c:3989 config/tc-mips.c:16924
+#: config/tc-mips.c:4000 config/tc-mips.c:16949
 #, c-format
 msgid "`%s' does not support legacy NaN"
 msgstr ""
 
-#: config/tc-mips.c:4036
+#: config/tc-mips.c:4047
 #, c-format
 msgid "returned from mips_ip(%s) insn_opcode = 0x%x\n"
 msgstr ""
 
-#: config/tc-mips.c:4735
+#: config/tc-mips.c:4748
 #, c-format
 msgid "operand %d out of range"
 msgstr ""
 
-#: config/tc-mips.c:4743
+#: config/tc-mips.c:4756
 #, c-format
 msgid "operand %d must be constant"
 msgstr ""
 
-#: config/tc-mips.c:4787 read.c:4327 read.c:5294 write.c:263 write.c:1012
+#: config/tc-mips.c:4800 read.c:4327 read.c:5294 write.c:263 write.c:1012
 msgid "register value used as expression"
 msgstr ""
 
-#: config/tc-mips.c:4800
+#: config/tc-mips.c:4813
 #, c-format
 msgid "operand %d must be an immediate expression"
 msgstr ""
 
-#: config/tc-mips.c:4919 config/tc-mips.c:4921
+#: config/tc-mips.c:4932 config/tc-mips.c:4934
 #, c-format
 msgid "float register should be even, was %d"
 msgstr ""
 
-#: config/tc-mips.c:4934
+#: config/tc-mips.c:4947
 #, c-format
 msgid "condition code register should be even for %s, was %d"
 msgstr ""
 
-#: config/tc-mips.c:4939
+#: config/tc-mips.c:4952
 #, c-format
 msgid "condition code register should be 0 or 4 for %s, was %d"
 msgstr ""
 
-#: config/tc-mips.c:5248
+#: config/tc-mips.c:5261
 msgid "invalid performance register"
 msgstr ""
 
-#: config/tc-mips.c:5344
+#: config/tc-mips.c:5357
 msgid "the source register must not be $0"
 msgstr ""
 
-#: config/tc-mips.c:5584
+#: config/tc-mips.c:5597
 msgid "missing frame size"
 msgstr ""
 
-#: config/tc-mips.c:5589
+#: config/tc-mips.c:5602
 msgid "frame size specified twice"
 msgstr ""
 
-#: config/tc-mips.c:5594
+#: config/tc-mips.c:5607
 msgid "invalid frame size"
 msgstr ""
 
-#: config/tc-mips.c:5632
+#: config/tc-mips.c:5645
 #, c-format
 msgid "operand %d must be an immediate"
 msgstr ""
 
-#: config/tc-mips.c:5647
+#: config/tc-mips.c:5660
 msgid "invalid element selector"
 msgstr ""
 
-#: config/tc-mips.c:5660
+#: config/tc-mips.c:5673
 #, c-format
 msgid "operand %d must be scalar"
 msgstr ""
 
-#: config/tc-mips.c:5820
+#: config/tc-mips.c:5833
 msgid "floating-point expression required"
 msgstr ""
 
-#: config/tc-mips.c:5920
+#: config/tc-mips.c:5933
 #, c-format
 msgid "cannot use `%s' in this section"
 msgstr ""
 
-#: config/tc-mips.c:6064
+#: config/tc-mips.c:6077
 msgid "used $at without \".set noat\""
 msgstr ""
 
-#: config/tc-mips.c:6066
+#: config/tc-mips.c:6079
 #, c-format
 msgid "used $%u with \".set at=$%u\""
 msgstr ""
 
-#: config/tc-mips.c:7095
+#: config/tc-mips.c:7108
 #, c-format
 msgid "wrong size instruction in a %u-bit branch delay slot"
 msgstr ""
 
-#: config/tc-mips.c:7115 config/tc-mips.c:7125 config/tc-mips.c:15350
+#: config/tc-mips.c:7128 config/tc-mips.c:7138 config/tc-mips.c:15375
 #, c-format
 msgid "jump to misaligned address (0x%lx)"
 msgstr ""
 
-#: config/tc-mips.c:7140 config/tc-mips.c:7160 config/tc-mips.c:7177
-#: config/tc-mips.c:8692 config/tc-mips.c:15204 config/tc-mips.c:15211
-#: config/tc-mips.c:15605 config/tc-mips.c:18356
+#: config/tc-mips.c:7153 config/tc-mips.c:7173 config/tc-mips.c:7190
+#: config/tc-mips.c:8701 config/tc-mips.c:15229 config/tc-mips.c:15236
+#: config/tc-mips.c:15630 config/tc-mips.c:18380
 #, c-format
 msgid "branch to misaligned address (0x%lx)"
 msgstr ""
 
-#: config/tc-mips.c:7146 config/tc-mips.c:7164 config/tc-mips.c:7181
-#: config/tc-mips.c:8695
+#: config/tc-mips.c:7159 config/tc-mips.c:7177 config/tc-mips.c:7194
+#: config/tc-mips.c:8704
 #, c-format
 msgid "branch address range overflow (0x%lx)"
 msgstr ""
 
-#: config/tc-mips.c:7420 config/tc-mips.c:18384
+#: config/tc-mips.c:7433 config/tc-mips.c:18408
 msgid "extended instruction in delay slot"
 msgstr ""
 
-#: config/tc-mips.c:7882
+#: config/tc-mips.c:7895
 msgid "source and destination must be different"
 msgstr ""
 
-#: config/tc-mips.c:7885
+#: config/tc-mips.c:7898
 msgid "a destination register must be supplied"
 msgstr ""
 
-#: config/tc-mips.c:7890
+#: config/tc-mips.c:7903
 msgid "the source register must not be $31"
 msgstr ""
 
-#: config/tc-mips.c:8136 config/tc-mips.c:14001 config/tc-mips.c:18436
+#: config/tc-mips.c:8149 config/tc-mips.c:14015 config/tc-mips.c:18460
 msgid "invalid unextended operand value"
 msgstr ""
 
-#: config/tc-mips.c:8248
+#: config/tc-mips.c:8257
 #, c-format
 msgid "opcode not supported on this processor: %s (%s)"
 msgstr ""
 
-#: config/tc-mips.c:8327
+#: config/tc-mips.c:8336
 msgid "opcode not supported in the `insn32' mode"
 msgstr ""
 
-#: config/tc-mips.c:8330
+#: config/tc-mips.c:8339
 #, c-format
 msgid "unrecognized %d-bit version of microMIPS opcode"
 msgstr ""
 
-#: config/tc-mips.c:8386
+#: config/tc-mips.c:8395
 msgid "unrecognized unextended version of MIPS16 opcode"
 msgstr ""
 
-#: config/tc-mips.c:8389
+#: config/tc-mips.c:8398
 msgid "unrecognized extended version of MIPS16 opcode"
 msgstr ""
 
-#: config/tc-mips.c:8439
+#: config/tc-mips.c:8448
 msgid ""
 "macro instruction expanded into multiple instructions in a branch delay slot"
 msgstr ""
 
-#: config/tc-mips.c:8442
+#: config/tc-mips.c:8451
 msgid "macro instruction expanded into multiple instructions"
 msgstr ""
 
-#: config/tc-mips.c:8446
+#: config/tc-mips.c:8455
 msgid ""
 "macro instruction expanded into a wrong size instruction in a 16-bit branch "
 "delay slot"
 msgstr ""
 
-#: config/tc-mips.c:8448
+#: config/tc-mips.c:8457
 msgid ""
 "macro instruction expanded into a wrong size instruction in a 32-bit branch "
 "delay slot"
 msgstr ""
 
-#: config/tc-mips.c:8892
+#: config/tc-mips.c:8901
 msgid "operand overflow"
 msgstr ""
 
-#: config/tc-mips.c:8911 config/tc-mips.c:9495 config/tc-mips.c:13488
+#: config/tc-mips.c:8920 config/tc-mips.c:9504 config/tc-mips.c:13497
 msgid "macro used $at after \".set noat\""
 msgstr ""
 
-#: config/tc-mips.c:9059 config/tc-mips.c:11827 config/tc-mips.c:12486
+#: config/tc-mips.c:9068 config/tc-mips.c:11836 config/tc-mips.c:12495
 #, c-format
 msgid "number (0x%s) larger than 32 bits"
 msgstr ""
 
-#: config/tc-mips.c:9079
+#: config/tc-mips.c:9088
 msgid "number larger than 64 bits"
 msgstr ""
 
-#: config/tc-mips.c:9373 config/tc-mips.c:9401 config/tc-mips.c:9439
-#: config/tc-mips.c:9484 config/tc-mips.c:12062 config/tc-mips.c:12101
-#: config/tc-mips.c:12140 config/tc-mips.c:12582 config/tc-mips.c:12634
+#: config/tc-mips.c:9382 config/tc-mips.c:9410 config/tc-mips.c:9448
+#: config/tc-mips.c:9493 config/tc-mips.c:12071 config/tc-mips.c:12110
+#: config/tc-mips.c:12149 config/tc-mips.c:12591 config/tc-mips.c:12643
 msgid "PIC code offset overflow (max 16 signed bits)"
 msgstr ""
 
-#: config/tc-mips.c:10012
+#: config/tc-mips.c:10021
 #, c-format
 msgid "BALIGN immediate not 0, 1, 2 or 3 (%lu)"
 msgstr ""
 
 #. result is always true
-#: config/tc-mips.c:10108
+#: config/tc-mips.c:10117
 #, c-format
 msgid "branch %s is always true"
 msgstr ""
 
-#: config/tc-mips.c:10336 config/tc-mips.c:10446
+#: config/tc-mips.c:10345 config/tc-mips.c:10455
 msgid "divide by zero"
 msgstr ""
 
-#: config/tc-mips.c:10536
+#: config/tc-mips.c:10545
 msgid "dla used to load 32-bit register; recommend using la instead"
 msgstr ""
 
-#: config/tc-mips.c:10540
+#: config/tc-mips.c:10549
 msgid "la used to load 64-bit address; recommend using dla instead"
 msgstr ""
 
-#: config/tc-mips.c:10649 config/tc-riscv.c:913 config/tc-z80.c:732
+#: config/tc-mips.c:10658 config/tc-riscv.c:918 config/tc-z80.c:732
 msgid "offset too large"
 msgstr ""
 
-#: config/tc-mips.c:10823 config/tc-mips.c:11101
+#: config/tc-mips.c:10832 config/tc-mips.c:11110
 msgid "PIC code offset overflow (max 32 signed bits)"
 msgstr ""
 
-#: config/tc-mips.c:11171 config/tc-mips.c:11247
+#: config/tc-mips.c:11180 config/tc-mips.c:11256
 #, c-format
 msgid "opcode not supported in the `insn32' mode `%s'"
 msgstr ""
 
-#: config/tc-mips.c:11199
+#: config/tc-mips.c:11208
 msgid "MIPS PIC call to register other than $25"
 msgstr ""
 
-#: config/tc-mips.c:11215 config/tc-mips.c:11226 config/tc-mips.c:11359
-#: config/tc-mips.c:11370
+#: config/tc-mips.c:11224 config/tc-mips.c:11235 config/tc-mips.c:11368
+#: config/tc-mips.c:11379
 msgid "no .cprestore pseudo-op used in PIC code"
 msgstr ""
 
-#: config/tc-mips.c:11220 config/tc-mips.c:11364
+#: config/tc-mips.c:11229 config/tc-mips.c:11373
 msgid "no .frame pseudo-op used in PIC code"
 msgstr ""
 
-#: config/tc-mips.c:11385
+#: config/tc-mips.c:11394
 msgid "non-PIC jump used in PIC library"
 msgstr ""
 
-#: config/tc-mips.c:12312
+#: config/tc-mips.c:12321
 #, c-format
 msgid "Unable to generate `%s' compliant code without mthc1"
 msgstr ""
 
-#: config/tc-mips.c:13046
+#: config/tc-mips.c:13055
 #, c-format
 msgid "instruction %s: result is always false"
 msgstr ""
 
-#: config/tc-mips.c:13199
+#: config/tc-mips.c:13208
 #, c-format
 msgid "instruction %s: result is always true"
 msgstr ""
 
 #. FIXME: Check if this is one of the itbl macros, since they
 #. are added dynamically.
-#: config/tc-mips.c:13484
+#: config/tc-mips.c:13493
 #, c-format
 msgid "macro %s not implemented yet"
 msgstr ""
 
-#: config/tc-mips.c:13829 config/tc-mips.c:13891 config/tc-mips.c:13901
+#: config/tc-mips.c:13838 config/tc-mips.c:13904 config/tc-mips.c:13915
 #: config/tc-score.c:2691 config/tc-score.c:2737
 msgid "unrecognized opcode"
 msgstr ""
 
-#: config/tc-mips.c:14011
+#: config/tc-mips.c:14025
 msgid "extended operand requested but not required"
 msgstr ""
 
-#: config/tc-mips.c:14020
+#: config/tc-mips.c:14034
 msgid "operand value out of range for instruction"
 msgstr ""
 
-#: config/tc-mips.c:14117
+#: config/tc-mips.c:14131
 #, c-format
 msgid "relocation %s isn't supported by the current ABI"
 msgstr ""
 
-#: config/tc-mips.c:14173
+#: config/tc-mips.c:14187
 msgid "unclosed '('"
 msgstr ""
 
-#: config/tc-mips.c:14239
+#: config/tc-mips.c:14253
 #, c-format
 msgid "a different %s was already specified, is now %s"
 msgstr ""
 
-#: config/tc-mips.c:14406
+#: config/tc-mips.c:14420
 msgid "-mmicromips cannot be used with -mips16"
 msgstr ""
 
-#: config/tc-mips.c:14421
+#: config/tc-mips.c:14435
 msgid "-mips16 cannot be used with -micromips"
 msgstr ""
 
-#: config/tc-mips.c:14564 config/tc-mips.c:14622
+#: config/tc-mips.c:14586 config/tc-mips.c:14644
 msgid "no compiled in support for 64 bit object file format"
 msgstr ""
 
-#: config/tc-mips.c:14629
+#: config/tc-mips.c:14651
 #, c-format
 msgid "invalid abi -mabi=%s"
 msgstr ""
 
-#: config/tc-mips.c:14669
+#: config/tc-mips.c:14691
 #, c-format
 msgid "invalid NaN setting -mnan=%s"
 msgstr ""
 
-#: config/tc-mips.c:14703
+#: config/tc-mips.c:14725
 msgid "-G not supported in this configuration"
 msgstr ""
 
-#: config/tc-mips.c:14729
+#: config/tc-mips.c:14751
 #, c-format
 msgid "-%s conflicts with the other architecture options, which imply -%s"
 msgstr ""
 
-#: config/tc-mips.c:14745
+#: config/tc-mips.c:14767
 #, c-format
 msgid "-march=%s is not compatible with the selected ABI"
 msgstr ""
 
-#: config/tc-mips.c:15208 config/tc-mips.c:15599 config/tc-mips.c:18353
+#: config/tc-mips.c:15233 config/tc-mips.c:15624 config/tc-mips.c:18377
 msgid "branch to a symbol in another ISA mode"
 msgstr ""
 
-#: config/tc-mips.c:15215 config/tc-mips.c:15356 config/tc-mips.c:15609
+#: config/tc-mips.c:15240 config/tc-mips.c:15381 config/tc-mips.c:15634
 #, c-format
 msgid "cannot encode misaligned addend in the relocatable field (0x%lx)"
 msgstr ""
 
-#: config/tc-mips.c:15252
+#: config/tc-mips.c:15277
 msgid "PC-relative reference to a different section"
 msgstr ""
 
-#: config/tc-mips.c:15324
+#: config/tc-mips.c:15349 config/tc-riscv.c:1904
 msgid "TLS relocation against a constant"
 msgstr ""
 
-#: config/tc-mips.c:15344
+#: config/tc-mips.c:15369
 msgid "jump to a symbol in another ISA mode"
 msgstr ""
 
-#: config/tc-mips.c:15347
+#: config/tc-mips.c:15372
 msgid "JALX to a symbol in the same ISA mode"
 msgstr ""
 
-#: config/tc-mips.c:15432
+#: config/tc-mips.c:15457
 msgid "unsupported constant in relocation"
 msgstr ""
 
-#: config/tc-mips.c:15504
+#: config/tc-mips.c:15529
 #, c-format
 msgid "PC-relative access using misaligned symbol (%lx)"
 msgstr ""
 
-#: config/tc-mips.c:15508
+#: config/tc-mips.c:15533
 #, c-format
 msgid "PC-relative access using misaligned offset (%lx)"
 msgstr ""
 
-#: config/tc-mips.c:15521 config/tc-mips.c:15540
+#: config/tc-mips.c:15546 config/tc-mips.c:15565
 msgid "PC-relative access out of range"
 msgstr ""
 
-#: config/tc-mips.c:15527
+#: config/tc-mips.c:15552
 #, c-format
 msgid "PC-relative access to misaligned address (%lx)"
 msgstr ""
 
-#: config/tc-mips.c:15694
+#: config/tc-mips.c:15719
 #, c-format
 msgid "alignment too large, %d assumed"
 msgstr ""
 
-#: config/tc-mips.c:15697
+#: config/tc-mips.c:15722
 msgid "alignment negative, 0 assumed"
 msgstr ""
 
-#: config/tc-mips.c:15939
+#: config/tc-mips.c:15964
 #, c-format
 msgid "%s: no such section"
 msgstr ""
 
-#: config/tc-mips.c:15980
+#: config/tc-mips.c:16005
 #, c-format
 msgid ".option pic%d not supported"
 msgstr ""
 
-#: config/tc-mips.c:15982
+#: config/tc-mips.c:16007
 #, c-format
 msgid ".option pic%d not supported in VxWorks PIC mode"
 msgstr ""
 
-#: config/tc-mips.c:15994 config/tc-mips.c:16331
+#: config/tc-mips.c:16019 config/tc-mips.c:16356
 msgid "-G may not be used with SVR4 PIC code"
 msgstr ""
 
-#: config/tc-mips.c:16000
+#: config/tc-mips.c:16025
 #, c-format
 msgid "unrecognized option \"%s\""
 msgstr ""
 
-#: config/tc-mips.c:16106
+#: config/tc-mips.c:16131
 #, c-format
 msgid "unknown architecture %s"
 msgstr ""
 
-#: config/tc-mips.c:16120 config/tc-mips.c:16282
+#: config/tc-mips.c:16145 config/tc-mips.c:16307
 #, c-format
 msgid "unknown ISA level %s"
 msgstr ""
 
-#: config/tc-mips.c:16129
+#: config/tc-mips.c:16154
 #, c-format
 msgid "unknown ISA or architecture %s"
 msgstr ""
 
-#: config/tc-mips.c:16188
+#: config/tc-mips.c:16213
 msgid "`noreorder' must be set before `nomacro'"
 msgstr ""
 
-#: config/tc-mips.c:16217
+#: config/tc-mips.c:16242
 msgid ".set pop with no .set push"
 msgstr ""
 
-#: config/tc-mips.c:16236
+#: config/tc-mips.c:16261
 #, c-format
 msgid "tried to set unrecognized symbol: %s\n"
 msgstr ""
 
-#: config/tc-mips.c:16309
+#: config/tc-mips.c:16334
 #, c-format
 msgid ".module used with unrecognized symbol: %s\n"
 msgstr ""
 
-#: config/tc-mips.c:16315
+#: config/tc-mips.c:16340
 msgid ".module is not permitted after generating code"
 msgstr ""
 
-#: config/tc-mips.c:16375 config/tc-mips.c:16454 config/tc-mips.c:16558
-#: config/tc-mips.c:16588 config/tc-mips.c:16637
+#: config/tc-mips.c:16400 config/tc-mips.c:16479 config/tc-mips.c:16583
+#: config/tc-mips.c:16613 config/tc-mips.c:16662
 #, c-format
 msgid "%s not supported in MIPS16 mode"
 msgstr ""
 
-#: config/tc-mips.c:16382
+#: config/tc-mips.c:16407
 msgid ".cpload not in noreorder section"
 msgstr ""
 
-#: config/tc-mips.c:16463 config/tc-mips.c:16482
+#: config/tc-mips.c:16488 config/tc-mips.c:16507
 msgid "missing argument separator ',' for .cpsetup"
 msgstr ""
 
-#: config/tc-mips.c:16680
+#: config/tc-mips.c:16705
 #, c-format
 msgid "unsupported use of %s"
 msgstr ""
 
-#: config/tc-mips.c:16771
+#: config/tc-mips.c:16796
 msgid "unsupported use of .gpword"
 msgstr ""
 
-#: config/tc-mips.c:16809
+#: config/tc-mips.c:16834
 msgid "unsupported use of .gpdword"
 msgstr ""
 
-#: config/tc-mips.c:16841
+#: config/tc-mips.c:16866
 msgid "unsupported use of .ehword"
 msgstr ""
 
-#: config/tc-mips.c:16928
+#: config/tc-mips.c:16953
 msgid "bad .nan directive"
 msgstr ""
 
-#: config/tc-mips.c:16976
+#: config/tc-mips.c:17001
 #, c-format
 msgid "ignoring attempt to redefine symbol %s"
 msgstr ""
 
-#: config/tc-mips.c:16991 ecoff.c:3364
+#: config/tc-mips.c:17016 ecoff.c:3372
 msgid "bad .weakext directive"
 msgstr ""
 
-#: config/tc-mips.c:17867 config/tc-mips.c:18149
+#: config/tc-mips.c:17891 config/tc-mips.c:18173
 msgid "relaxed out-of-range branch into a jump"
 msgstr ""
 
-#: config/tc-mips.c:18413 config/tc-xtensa.c:1663 config/tc-xtensa.c:1939
+#: config/tc-mips.c:18437 config/tc-xtensa.c:1663 config/tc-xtensa.c:1939
 msgid "unsupported relocation"
 msgstr ""
 
-#: config/tc-mips.c:18921 config/tc-score.c:5640
+#: config/tc-mips.c:18945 config/tc-score.c:5640
 msgid "expected simple number"
 msgstr ""
 
-#: config/tc-mips.c:18949 config/tc-score.c:5667
+#: config/tc-mips.c:18973 config/tc-score.c:5667
 msgid "invalid number"
 msgstr ""
 
-#: config/tc-mips.c:19026 ecoff.c:2995
+#: config/tc-mips.c:19050 ecoff.c:2999
 msgid ".end directive without a preceding .ent directive"
 msgstr ""
 
-#: config/tc-mips.c:19035
+#: config/tc-mips.c:19059
 msgid ".end symbol does not match .ent symbol"
 msgstr ""
 
-#: config/tc-mips.c:19112
+#: config/tc-mips.c:19136
 msgid ".ent or .aent not in text section"
 msgstr ""
 
-#: config/tc-mips.c:19115 config/tc-score.c:5706
+#: config/tc-mips.c:19139 config/tc-score.c:5706
 msgid "missing .end"
 msgstr ""
 
-#: config/tc-mips.c:19198
+#: config/tc-mips.c:19222
 msgid ".mask/.fmask outside of .ent"
 msgstr ""
 
-#: config/tc-mips.c:19205
+#: config/tc-mips.c:19229
 msgid "bad .mask/.fmask directive"
 msgstr ""
 
-#: config/tc-mips.c:19495
+#: config/tc-mips.c:19519
 #, c-format
 msgid "bad value (%s) for %s"
 msgstr ""
 
-#: config/tc-mips.c:19559
+#: config/tc-mips.c:19583
 #, c-format
 msgid ""
 "MIPS options:\n"
@@ -11971,7 +11983,7 @@ msgid ""
 "\t\t\timplicitly with the gp register [default 8]\n"
 msgstr ""
 
-#: config/tc-mips.c:19566
+#: config/tc-mips.c:19590
 #, c-format
 msgid ""
 "-mips1\t\t\tgenerate MIPS ISA I instructions\n"
@@ -11992,7 +12004,7 @@ msgid ""
 "-march=CPU/-mtune=CPU\tgenerate code/schedule for CPU, where CPU is one of:\n"
 msgstr ""
 
-#: config/tc-mips.c:19591
+#: config/tc-mips.c:19615
 #, c-format
 msgid ""
 "-mCPU\t\t\tequivalent to -march=CPU -mtune=CPU. Deprecated.\n"
@@ -12000,91 +12012,91 @@ msgid ""
 "\t\t\tFor -mCPU and -no-mCPU, CPU must be one of:\n"
 msgstr ""
 
-#: config/tc-mips.c:19604
+#: config/tc-mips.c:19628
 #, c-format
 msgid ""
 "-mips16\t\t\tgenerate mips16 instructions\n"
 "-no-mips16\t\tdo not generate mips16 instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:19607
+#: config/tc-mips.c:19631
 #, c-format
 msgid ""
 "-mmicromips\t\tgenerate microMIPS instructions\n"
 "-mno-micromips\t\tdo not generate microMIPS instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:19610
+#: config/tc-mips.c:19634
 #, c-format
 msgid ""
 "-msmartmips\t\tgenerate smartmips instructions\n"
 "-mno-smartmips\t\tdo not generate smartmips instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:19613
+#: config/tc-mips.c:19637
 #, c-format
 msgid ""
 "-mdsp\t\t\tgenerate DSP instructions\n"
 "-mno-dsp\t\tdo not generate DSP instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:19616
+#: config/tc-mips.c:19640
 #, c-format
 msgid ""
 "-mdspr2\t\t\tgenerate DSP R2 instructions\n"
 "-mno-dspr2\t\tdo not generate DSP R2 instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:19619
+#: config/tc-mips.c:19643
 #, c-format
 msgid ""
 "-mdspr3\t\t\tgenerate DSP R3 instructions\n"
 "-mno-dspr3\t\tdo not generate DSP R3 instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:19622
+#: config/tc-mips.c:19646
 #, c-format
 msgid ""
 "-mmt\t\t\tgenerate MT instructions\n"
 "-mno-mt\t\t\tdo not generate MT instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:19625
+#: config/tc-mips.c:19649
 #, c-format
 msgid ""
 "-mmcu\t\t\tgenerate MCU instructions\n"
 "-mno-mcu\t\tdo not generate MCU instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:19628
+#: config/tc-mips.c:19652
 #, c-format
 msgid ""
 "-mmsa\t\t\tgenerate MSA instructions\n"
 "-mno-msa\t\tdo not generate MSA instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:19631
+#: config/tc-mips.c:19655
 #, c-format
 msgid ""
 "-mxpa\t\t\tgenerate eXtended Physical Address (XPA) instructions\n"
 "-mno-xpa\t\tdo not generate eXtended Physical Address (XPA) instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:19634
+#: config/tc-mips.c:19658
 #, c-format
 msgid ""
 "-mvirt\t\t\tgenerate Virtualization instructions\n"
 "-mno-virt\t\tdo not generate Virtualization instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:19637
+#: config/tc-mips.c:19661
 #, c-format
 msgid ""
 "-minsn32\t\tonly generate 32-bit microMIPS instructions\n"
 "-mno-insn32\t\tgenerate all microMIPS instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:19640
+#: config/tc-mips.c:19664
 #, c-format
 msgid ""
 "-mfix-loongson2f-jump\twork around Loongson2F JUMP instructions\n"
@@ -12102,7 +12114,7 @@ msgid ""
 "--break, --no-trap\tbreak exception on div by 0 and mult overflow\n"
 msgstr ""
 
-#: config/tc-mips.c:19654
+#: config/tc-mips.c:19678
 #, c-format
 msgid ""
 "-mhard-float\t\tallow floating-point instructions\n"
@@ -12111,10 +12123,13 @@ msgid ""
 "-mdouble-float\t\tallow 32-bit and 64-bit floating-point operations\n"
 "--[no-]construct-floats\t[dis]allow floating point values to be constructed\n"
 "--[no-]relax-branch\t[dis]allow out-of-range branches to be relaxed\n"
+"-mignore-branch-isa\taccept invalid branches requiring an ISA mode switch\n"
+"-mno-ignore-branch-isa\treject invalid branches requiring an ISA mode "
+"switch\n"
 "-mnan=ENCODING\t\tselect an IEEE 754 NaN encoding convention, either of:\n"
 msgstr ""
 
-#: config/tc-mips.c:19670
+#: config/tc-mips.c:19696
 #, c-format
 msgid ""
 "-KPIC, -call_shared\tgenerate SVR4 position independent code\n"
@@ -12128,7 +12143,7 @@ msgid ""
 "-mabi=ABI\t\tcreate ABI conformant object file for:\n"
 msgstr ""
 
-#: config/tc-mips.c:19691
+#: config/tc-mips.c:19717
 #, c-format
 msgid ""
 "-32\t\t\tcreate o32 ABI object file (default)\n"
@@ -12136,7 +12151,7 @@ msgid ""
 "-64\t\t\tcreate 64 ABI object file\n"
 msgstr ""
 
-#: config/tc-mips.c:19774
+#: config/tc-mips.c:19800
 msgid "missing .end at end of assembly"
 msgstr ""
 
@@ -12472,26 +12487,26 @@ msgstr ""
 msgid "profiling in absolute section?"
 msgstr ""
 
-#: config/tc-msp430.c:1366
+#: config/tc-msp430.c:1365
 #, c-format
 msgid "Unrecognised CPU errata name starting here: %s"
 msgstr ""
 
-#: config/tc-msp430.c:1372
+#: config/tc-msp430.c:1371
 #, c-format
 msgid "Expecting comma after CPU errata name, not: %s"
 msgstr ""
 
-#: config/tc-msp430.c:1382
+#: config/tc-msp430.c:1381
 msgid "MCU option requires a name\n"
 msgstr ""
 
-#: config/tc-msp430.c:1420
+#: config/tc-msp430.c:1419
 #, c-format
 msgid "unrecognised argument to -mcpu option '%s'"
 msgstr ""
 
-#: config/tc-msp430.c:1583
+#: config/tc-msp430.c:1582
 #, c-format
 msgid ""
 "MSP430 options:\n"
@@ -12499,7 +12514,7 @@ msgid ""
 "  -mcpu={430|430x|430xv2} - select microcontroller architecture\n"
 msgstr ""
 
-#: config/tc-msp430.c:1587
+#: config/tc-msp430.c:1586
 #, c-format
 msgid ""
 "  -msilicon-errata=<name>[,<name>...] - enable fixups for silicon errata\n"
@@ -12508,363 +12523,367 @@ msgid ""
 "   supported errata names: cpu4, cpu8, cpu11, cpu12, cpu13, cpu19\n"
 msgstr ""
 
-#: config/tc-msp430.c:1591
+#: config/tc-msp430.c:1590
 #, c-format
 msgid ""
 "  -mQ - enable relaxation at assembly time. DANGEROUS!\n"
 "  -mP - enable polymorph instructions\n"
 msgstr ""
 
-#: config/tc-msp430.c:1594
+#: config/tc-msp430.c:1593
 #, c-format
 msgid "  -ml - enable large code model\n"
 msgstr ""
 
-#: config/tc-msp430.c:1596
+#: config/tc-msp430.c:1595
 #, c-format
 msgid "  -mN - do not insert NOPs after changing interrupts (default)\n"
 msgstr ""
 
-#: config/tc-msp430.c:1598
+#: config/tc-msp430.c:1597
 #, c-format
 msgid "  -mn - insert a NOP after changing interrupts\n"
 msgstr ""
 
-#: config/tc-msp430.c:1600
+#: config/tc-msp430.c:1599
 #, c-format
 msgid "  -mY - do not warn about missing NOPs after changing interrupts\n"
 msgstr ""
 
-#: config/tc-msp430.c:1602
+#: config/tc-msp430.c:1601
 #, c-format
 msgid "  -my - warn about missing NOPs after changing interrupts (default)\n"
 msgstr ""
 
-#: config/tc-msp430.c:1604
+#: config/tc-msp430.c:1603
 #, c-format
 msgid "  -md - Force copying of data from ROM to RAM at startup\n"
 msgstr ""
 
-#: config/tc-msp430.c:1782 config/tc-msp430.c:1960 config/tc-msp430.c:2069
+#: config/tc-msp430.c:1781 config/tc-msp430.c:1959 config/tc-msp430.c:2068
 #, c-format
 msgid "value 0x%x out of extended range."
 msgstr ""
 
-#: config/tc-msp430.c:1788
+#: config/tc-msp430.c:1787
 #, c-format
 msgid "value %d out of range. Use #lo() or #hi()"
 msgstr ""
 
-#: config/tc-msp430.c:1834
+#: config/tc-msp430.c:1833
 msgid "cpu4: not converting PUSH #4 to shorter form"
 msgstr ""
 
-#: config/tc-msp430.c:1851
+#: config/tc-msp430.c:1850
 msgid "cpu4: not converting PUSH #8 to shorter form"
 msgstr ""
 
-#: config/tc-msp430.c:1865
+#: config/tc-msp430.c:1864
 msgid "error: unsupported #foo() directive used on symbol"
 msgstr ""
 
-#: config/tc-msp430.c:1882
+#: config/tc-msp430.c:1881
 #, c-format
-msgid "unknown expression in operand %s. use #llo() #lhi() #hlo() #hhi() "
+msgid "unknown expression in operand %s.  Use #llo(), #lhi(), #hlo() or #hhi()"
 msgstr ""
 
-#: config/tc-msp430.c:1933
+#: config/tc-msp430.c:1932
 #, c-format
 msgid "Registers cannot be used within immediate expression [%s]"
 msgstr ""
 
-#: config/tc-msp430.c:1935
+#: config/tc-msp430.c:1934
 #, c-format
 msgid "unknown operand %s"
 msgstr ""
 
-#: config/tc-msp430.c:1966 config/tc-msp430.c:2075
+#: config/tc-msp430.c:1965 config/tc-msp430.c:2074
 #, c-format
 msgid "value out of range: 0x%x"
 msgstr ""
 
-#: config/tc-msp430.c:1977
+#: config/tc-msp430.c:1976
 #, c-format
 msgid "Registers cannot be used within absolute expression [%s]"
 msgstr ""
 
-#: config/tc-msp430.c:1979 config/tc-msp430.c:2104
+#: config/tc-msp430.c:1978 config/tc-msp430.c:2103
 #, c-format
 msgid "unknown expression in operand %s"
 msgstr ""
 
-#: config/tc-msp430.c:1993
+#: config/tc-msp430.c:1992
 #, c-format
 msgid "unknown addressing mode %s"
 msgstr ""
 
-#: config/tc-msp430.c:2001
+#: config/tc-msp430.c:2000
 #, c-format
 msgid "Bad register name %s"
 msgstr ""
 
-#: config/tc-msp430.c:2012
+#: config/tc-msp430.c:2011
 msgid "cannot use indirect addressing with the PC"
 msgstr ""
 
-#: config/tc-msp430.c:2032
+#: config/tc-msp430.c:2031
 msgid "')' required"
 msgstr ""
 
-#: config/tc-msp430.c:2044
+#: config/tc-msp430.c:2043
 #, c-format
 msgid "unknown operator %s. Did you mean X(Rn) or #[hl][hl][oi](CONST) ?"
 msgstr ""
 
-#: config/tc-msp430.c:2051
+#: config/tc-msp430.c:2050
 msgid "r2 should not be used in indexed addressing mode"
 msgstr ""
 
-#: config/tc-msp430.c:2090 config/tc-msp430.c:2092
+#: config/tc-msp430.c:2089 config/tc-msp430.c:2091
 msgid "CPU8: Stack pointer accessed with an odd offset"
 msgstr ""
 
-#: config/tc-msp430.c:2102
+#: config/tc-msp430.c:2101
 #, c-format
 msgid "Registers cannot be used as a prefix of indexed expression [%s]"
 msgstr ""
 
 #. Unreachable.
-#: config/tc-msp430.c:2137
+#: config/tc-msp430.c:2136
 #, c-format
 msgid "unknown addressing mode for operand %s"
 msgstr ""
 
-#: config/tc-msp430.c:2169
+#: config/tc-msp430.c:2168
 #, c-format
 msgid "Internal bug. Try to use 0(r%d) instead of @r%d"
 msgstr ""
 
-#: config/tc-msp430.c:2179
+#: config/tc-msp430.c:2178
 msgid "this addressing mode is not applicable for destination operand"
 msgstr ""
 
-#: config/tc-msp430.c:2210 config/tc-msp430.c:2345 config/tc-msp430.c:2382
-#: config/tc-msp430.c:2412 config/tc-msp430.c:3103 config/tc-msp430.c:3181
-#: config/tc-msp430.c:3264
+#: config/tc-msp430.c:2209 config/tc-msp430.c:2344 config/tc-msp430.c:2381
+#: config/tc-msp430.c:2411 config/tc-msp430.c:3102 config/tc-msp430.c:3180
+#: config/tc-msp430.c:3263
 #, c-format
 msgid "expected register as second argument of %s"
 msgstr ""
 
-#: config/tc-msp430.c:2249 config/tc-msp430.c:2315
+#: config/tc-msp430.c:2248 config/tc-msp430.c:2314
 #, c-format
 msgid "index value too big for %s"
 msgstr ""
 
-#: config/tc-msp430.c:2266 config/tc-msp430.c:2332 config/tc-msp430.c:2439
+#: config/tc-msp430.c:2265 config/tc-msp430.c:2331 config/tc-msp430.c:2438
 #, c-format
 msgid "unexpected addressing mode for %s"
 msgstr ""
 
-#: config/tc-msp430.c:2352 config/tc-msp430.c:2389 config/tc-msp430.c:2419
+#: config/tc-msp430.c:2351 config/tc-msp430.c:2388 config/tc-msp430.c:2418
 #, c-format
 msgid "constant generator destination register found in %s"
 msgstr ""
 
-#: config/tc-msp430.c:2396 config/tc-msp430.c:2426
+#: config/tc-msp430.c:2395 config/tc-msp430.c:2425
 #, c-format
 msgid "constant generator source register found in %s"
 msgstr ""
 
-#: config/tc-msp430.c:2515
+#: config/tc-msp430.c:2514
 msgid "no size modifier after period, .w assumed"
 msgstr ""
 
-#: config/tc-msp430.c:2519
+#: config/tc-msp430.c:2518
 #, c-format
 msgid "unrecognised instruction size modifier .%c"
 msgstr ""
 
-#: config/tc-msp430.c:2533
+#: config/tc-msp430.c:2532
 #, c-format
 msgid "junk found after instruction: %s.%s"
 msgstr ""
 
-#: config/tc-msp430.c:2553
+#: config/tc-msp430.c:2552
 #, c-format
 msgid "instruction %s.a does not exist"
 msgstr ""
 
-#: config/tc-msp430.c:2567
+#: config/tc-msp430.c:2566
 #, c-format
 msgid "instruction %s requires %d operand(s)"
 msgstr ""
 
-#: config/tc-msp430.c:2583
+#: config/tc-msp430.c:2582
 #, c-format
 msgid "instruction %s requires MSP430X mcu"
 msgstr ""
 
-#: config/tc-msp430.c:2603
+#: config/tc-msp430.c:2602
 #, c-format
 msgid "unable to repeat %s insn"
 msgstr ""
 
-#: config/tc-msp430.c:2622
+#: config/tc-msp430.c:2621
 msgid "NOP inserted between two instructions that change interrupt state"
 msgstr ""
 
-#: config/tc-msp430.c:2624
+#: config/tc-msp430.c:2623
 msgid ""
 "a NOP might be needed here because of successive changes in interrupt state"
 msgstr ""
 
-#: config/tc-msp430.c:2635
+#: config/tc-msp430.c:2634
 msgid "CPU12: CMP/BIT with PC destinstion ignores next instruction"
 msgstr ""
 
-#: config/tc-msp430.c:2643
+#: config/tc-msp430.c:2642
 msgid "CPU19: Instruction setting CPUOFF must be followed by a NOP"
 msgstr ""
 
-#: config/tc-msp430.c:2650
+#: config/tc-msp430.c:2649
 msgid "internal error: unknown nop check state"
 msgstr ""
 
-#: config/tc-msp430.c:2685
+#: config/tc-msp430.c:2684
 msgid "inserting a NOP before EINT"
 msgstr ""
 
-#: config/tc-msp430.c:2688
+#: config/tc-msp430.c:2687
 msgid "a NOP might be needed before the EINT"
 msgstr ""
 
-#: config/tc-msp430.c:2728 config/tc-msp430.c:2730 config/tc-msp430.c:3414
-#: config/tc-msp430.c:3416
+#: config/tc-msp430.c:2727 config/tc-msp430.c:2729 config/tc-msp430.c:3413
+#: config/tc-msp430.c:3415
 msgid "CPU11: PC is destinstion of SR altering instruction"
 msgstr ""
 
-#: config/tc-msp430.c:2745 config/tc-msp430.c:2747 config/tc-msp430.c:2853
-#: config/tc-msp430.c:2855 config/tc-msp430.c:3431 config/tc-msp430.c:3433
-#: config/tc-msp430.c:3609 config/tc-msp430.c:3611
+#: config/tc-msp430.c:2744 config/tc-msp430.c:2746 config/tc-msp430.c:2852
+#: config/tc-msp430.c:2854 config/tc-msp430.c:3430 config/tc-msp430.c:3432
+#: config/tc-msp430.c:3608 config/tc-msp430.c:3610
 msgid "CPU13: SR is destinstion of SR altering instruction"
 msgstr ""
 
-#: config/tc-msp430.c:2766 config/tc-msp430.c:2865 config/tc-msp430.c:3474
-#: config/tc-msp430.c:3643
+#: config/tc-msp430.c:2765 config/tc-msp430.c:2864 config/tc-msp430.c:3473
+#: config/tc-msp430.c:3642
 msgid "repeat instruction used with non-register mode instruction"
 msgstr ""
 
-#: config/tc-msp430.c:2841 config/tc-msp430.c:3188 config/tc-msp430.c:3599
+#: config/tc-msp430.c:2840 config/tc-msp430.c:3187 config/tc-msp430.c:3598
 #, c-format
 msgid "%s: attempt to rotate the PC register"
 msgstr ""
 
-#: config/tc-msp430.c:3090 config/tc-msp430.c:3161
+#: config/tc-msp430.c:3089 config/tc-msp430.c:3160
 #, c-format
 msgid "expected #n as first argument of %s"
 msgstr ""
 
-#: config/tc-msp430.c:3096 config/tc-msp430.c:3167
+#: config/tc-msp430.c:3095 config/tc-msp430.c:3166
 #, c-format
-msgid "expected constant expression for first argument of %s"
+msgid "expected constant expression as first argument of %s"
 msgstr ""
 
-#: config/tc-msp430.c:3122
+#: config/tc-msp430.c:3121
 msgid "Too many registers popped"
 msgstr ""
 
-#: config/tc-msp430.c:3132
+#: config/tc-msp430.c:3131
 msgid "Cannot use POPM to restore the SR register"
 msgstr ""
 
-#: config/tc-msp430.c:3152 config/tc-msp430.c:3216
+#: config/tc-msp430.c:3151 config/tc-msp430.c:3215
 #, c-format
 msgid "repeat count cannot be used with %s"
 msgstr ""
 
-#: config/tc-msp430.c:3174
+#: config/tc-msp430.c:3173
 #, c-format
 msgid "expected first argument of %s to be in the range 1-4"
 msgstr ""
 
-#: config/tc-msp430.c:3234
+#: config/tc-msp430.c:3233
 #, c-format
 msgid "expected value of first argument of %s to fit into 20-bits"
 msgstr ""
 
-#: config/tc-msp430.c:3253
+#: config/tc-msp430.c:3252
 #, c-format
 msgid "expected register name or constant as first argument of %s"
 msgstr ""
 
-#: config/tc-msp430.c:3342
+#: config/tc-msp430.c:3341
 msgid "expected constant value as argument to RPT"
 msgstr ""
 
-#: config/tc-msp430.c:3348
+#: config/tc-msp430.c:3347
 msgid "expected constant in the range 2..16"
 msgstr ""
 
-#: config/tc-msp430.c:3363
+#: config/tc-msp430.c:3362
 msgid "PC used as an argument to RPT"
 msgstr ""
 
-#: config/tc-msp430.c:3369
+#: config/tc-msp430.c:3368
 msgid "expected constant or register name as argument to RPT insn"
 msgstr ""
 
-#: config/tc-msp430.c:3376
-msgid "Illegal emulated instruction "
+#: config/tc-msp430.c:3375
+msgid "Illegal emulated instruction"
 msgstr ""
 
-#: config/tc-msp430.c:3628
+#: config/tc-msp430.c:3627
 #, c-format
 msgid "%s instruction does not accept a .b suffix"
 msgstr ""
 
-#: config/tc-msp430.c:3736
+#: config/tc-msp430.c:3735
 #, c-format
 msgid "Even number required. Rounded to %d"
 msgstr ""
 
-#: config/tc-msp430.c:3747
+#: config/tc-msp430.c:3746
 #, c-format
-msgid "Wrong displacement  %d"
+msgid "Wrong displacement %d"
 msgstr ""
 
-#: config/tc-msp430.c:3769
+#: config/tc-msp430.c:3768
 msgid "instruction requires label sans '$'"
 msgstr ""
 
-#: config/tc-msp430.c:3773
+#: config/tc-msp430.c:3772
 msgid "instruction requires label or value in range -511:512"
 msgstr ""
 
-#: config/tc-msp430.c:3779 config/tc-msp430.c:3828 config/tc-msp430.c:3871
+#: config/tc-msp430.c:3778 config/tc-msp430.c:3827 config/tc-msp430.c:3870
 msgid "instruction requires label"
 msgstr ""
 
-#: config/tc-msp430.c:3787 config/tc-msp430.c:3834
+#: config/tc-msp430.c:3786 config/tc-msp430.c:3833
 msgid "polymorphs are not enabled. Use -mP option to enable."
 msgstr ""
 
-#: config/tc-msp430.c:3875
+#: config/tc-msp430.c:3874
 msgid "Illegal instruction or not implemented opcode."
 msgstr ""
 
-#: config/tc-msp430.c:4424
+#: config/tc-msp430.c:3905 config/tc-sh64.c:2479
+msgid "can't find opcode"
+msgstr ""
+
+#: config/tc-msp430.c:4423
 #, c-format
 msgid "internal inconsistency problem in %s: insn %04lx"
 msgstr ""
 
-#: config/tc-msp430.c:4466 config/tc-msp430.c:4498
+#: config/tc-msp430.c:4465 config/tc-msp430.c:4497
 #, c-format
 msgid "internal inconsistency problem in %s: ext. insn %04lx"
 msgstr ""
 
-#: config/tc-msp430.c:4510
+#: config/tc-msp430.c:4509
 #, c-format
-msgid "internal inconsistency problem in %s:  %lx"
+msgid "internal inconsistency problem in %s: %lx"
 msgstr ""
 
 #: config/tc-mt.c:151
@@ -13180,7 +13199,7 @@ msgstr ""
 
 #: config/tc-nds32.c:4819
 #, c-format
-msgid "Can not find match relax hint. line : %d"
+msgid "Can not find match relax hint.  Line: %d"
 msgstr ""
 
 #: config/tc-nds32.c:4999
@@ -13195,7 +13214,7 @@ msgstr ""
 
 #: config/tc-nds32.c:5153
 #, c-format
-msgid "Not support instrcution %s in the baseline."
+msgid "Instruction %s not supported in the baseline."
 msgstr ""
 
 #: config/tc-nds32.c:5208
@@ -13246,11 +13265,11 @@ msgstr ""
 msgid "need PIC qualifier with symbol."
 msgstr ""
 
-#: config/tc-nios2.c:453
+#: config/tc-nios2.c:453 config/tc-pru.c:308
 msgid "expecting opcode string in self test mode"
 msgstr ""
 
-#: config/tc-nios2.c:455
+#: config/tc-nios2.c:455 config/tc-pru.c:310
 #, c-format
 msgid "assembly 0x%08x, expected %s"
 msgstr ""
@@ -13267,12 +13286,12 @@ msgstr ""
 msgid "error checking for overflow - broken assembler"
 msgstr ""
 
-#: config/tc-nios2.c:1161
+#: config/tc-nios2.c:1161 config/tc-pru.c:571
 #, c-format
 msgid "immediate value 0x%x truncated to 0x%x"
 msgstr ""
 
-#: config/tc-nios2.c:1188
+#: config/tc-nios2.c:1188 config/tc-pru.c:597
 #, c-format
 msgid "call target address 0x%08x out of range 0x%08x to 0x%08x"
 msgstr ""
@@ -13287,7 +13306,7 @@ msgstr ""
 msgid "branch offset %d out of range"
 msgstr ""
 
-#: config/tc-nios2.c:1204
+#: config/tc-nios2.c:1204 config/tc-pru.c:607
 #, c-format
 msgid "%s offset %d out of range %d to %d"
 msgstr ""
@@ -13297,12 +13316,13 @@ msgstr ""
 msgid "%s offset %d out of range"
 msgstr ""
 
-#: config/tc-nios2.c:1213 config/tc-nios2.c:1228
+#: config/tc-nios2.c:1213 config/tc-nios2.c:1228 config/tc-pru.c:612
 #, c-format
 msgid "immediate value %d out of range %d to %d"
 msgstr ""
 
-#: config/tc-nios2.c:1218 config/tc-nios2.c:1223
+#: config/tc-nios2.c:1218 config/tc-nios2.c:1223 config/tc-pru.c:622
+#: config/tc-pru.c:627
 #, c-format
 msgid "immediate value %u out of range %u to %u"
 msgstr ""
@@ -13312,11 +13332,11 @@ msgstr ""
 msgid "custom instruction opcode %u out of range %u to %u"
 msgstr ""
 
-#: config/tc-nios2.c:1238
+#: config/tc-nios2.c:1238 config/tc-pru.c:632
 msgid "overflow in immediate argument"
 msgstr ""
 
-#: config/tc-nios2.c:1310
+#: config/tc-nios2.c:1310 config/tc-pru.c:668
 msgid "cannot create 64-bit relocation"
 msgstr ""
 
@@ -13325,11 +13345,12 @@ msgstr ""
 msgid "internal error: broken opcode descriptor for `%s %s'\n"
 msgstr ""
 
-#: config/tc-nios2.c:1487
+#: config/tc-nios2.c:1487 config/tc-pru.c:858
 msgid "can't create relocation"
 msgstr ""
 
-#: config/tc-nios2.c:1518
+#: config/tc-nios2.c:1518 config/tc-pru.c:992 config/tc-pru.c:1012
+#: config/tc-pru.c:1039 config/tc-pru.c:1058 config/tc-pru.c:1072
 #, c-format
 msgid "unknown register %s"
 msgstr ""
@@ -13387,16 +13408,18 @@ msgstr ""
 msgid "Invalid constant operand %s"
 msgstr ""
 
-#: config/tc-nios2.c:2997 config/tc-nios2.c:3021
+#: config/tc-nios2.c:2997 config/tc-nios2.c:3021 config/tc-pru.c:1311
+#: config/tc-pru.c:1336 config/tc-pru.c:1356
 #, c-format
 msgid "badly formed expression near %s"
 msgstr ""
 
-#: config/tc-nios2.c:3110 config/tc-nios2.c:3137 config/tc-xtensa.c:2113
+#: config/tc-nios2.c:3110 config/tc-nios2.c:3137 config/tc-pru.c:1405
+#: config/tc-pru.c:1430 config/tc-xtensa.c:2113
 msgid "too many arguments"
 msgstr ""
 
-#: config/tc-nios2.c:3126
+#: config/tc-nios2.c:3126 config/tc-pru.c:1382
 #, c-format
 msgid "expecting %c near %s"
 msgstr ""
@@ -13417,12 +13440,12 @@ msgid "Big-endian R2 is not supported."
 msgstr ""
 
 #. Unrecognised instruction - error.
-#: config/tc-nios2.c:3765
+#: config/tc-nios2.c:3765 config/tc-pru.c:1726
 #, c-format
 msgid "unrecognised instruction %s"
 msgstr ""
 
-#: config/tc-nios2.c:3885
+#: config/tc-nios2.c:3885 config/tc-pru.c:1782
 #, c-format
 msgid "can't represent relocation type %s"
 msgstr ""
@@ -13554,7 +13577,7 @@ msgstr ""
 
 #: config/tc-ns32k.c:1438
 #, c-format
-msgid "Internal logic error.  line %d, file \"%s\""
+msgid "Internal logic error.  Line %d, file: \"%s\""
 msgstr ""
 
 #: config/tc-ns32k.c:1486
@@ -13728,24 +13751,28 @@ msgstr ""
 msgid "pcrel too far"
 msgstr ""
 
-#: config/tc-ppc.c:1093 config/tc-ppc.c:1150 config/tc-ppc.c:1188
+#: config/tc-ppc.c:977 config/tc-ppc.c:985 config/tc-ppc.c:2980
+msgid "invalid register expression"
+msgstr ""
+
+#: config/tc-ppc.c:1145 config/tc-ppc.c:1203 config/tc-ppc.c:1241
 msgid "the use of -mvle requires big endian."
 msgstr ""
 
-#: config/tc-ppc.c:1131 config/tc-ppc.c:1152
+#: config/tc-ppc.c:1183 config/tc-ppc.c:1205
 msgid "the use of -mvle requires -a32."
 msgstr ""
 
-#: config/tc-ppc.c:1133
+#: config/tc-ppc.c:1185
 #, c-format
 msgid "%s unsupported"
 msgstr ""
 
-#: config/tc-ppc.c:1242
+#: config/tc-ppc.c:1295
 msgid "--nops needs a numeric argument"
 msgstr ""
 
-#: config/tc-ppc.c:1259
+#: config/tc-ppc.c:1312
 #, c-format
 msgid ""
 "PowerPC options:\n"
@@ -13768,7 +13795,7 @@ msgid ""
 "-m821, -m850, -m860     generate code for PowerPC 821/850/860\n"
 msgstr ""
 
-#: config/tc-ppc.c:1278
+#: config/tc-ppc.c:1331
 #, c-format
 msgid ""
 "-mppc64, -m620          generate code for PowerPC 620/625/630\n"
@@ -13785,11 +13812,11 @@ msgid ""
 "-mpower9, -mpwr9        generate code for Power9 architecture\n"
 "-mcell                  generate code for Cell Broadband Engine "
 "architecture\n"
-"-mcom                   generate code Power/PowerPC common instructions\n"
+"-mcom                   generate code for Power/PowerPC common instructions\n"
 "-many                   generate code for any architecture (PWR/PWRX/PPC)\n"
 msgstr ""
 
-#: config/tc-ppc.c:1293
+#: config/tc-ppc.c:1346
 #, c-format
 msgid ""
 "-maltivec               generate code for AltiVec\n"
@@ -13808,7 +13835,7 @@ msgid ""
 "-mno-regnames           Do not allow symbolic names for registers\n"
 msgstr ""
 
-#: config/tc-ppc.c:1309
+#: config/tc-ppc.c:1362
 #, c-format
 msgid ""
 "-mrelocatable           support for GCC's -mrelocatble option\n"
@@ -13825,492 +13852,573 @@ msgid ""
 "-Qy, -Qn                ignored\n"
 msgstr ""
 
-#: config/tc-ppc.c:1323
+#: config/tc-ppc.c:1376
 #, c-format
 msgid ""
 "-nops=count             when aligning, more than COUNT nops uses a branch\n"
 "-ppc476-workaround      warn if emitting data to code sections\n"
 msgstr ""
 
-#: config/tc-ppc.c:1350
+#: config/tc-ppc.c:1403
 #, c-format
 msgid "unknown default cpu = %s, os = %s"
 msgstr ""
 
-#: config/tc-ppc.c:1378
+#: config/tc-ppc.c:1431
 msgid "neither Power nor PowerPC opcodes were selected."
 msgstr ""
 
-#: config/tc-ppc.c:1438
+#: config/tc-ppc.c:1491
 #, c-format
 msgid "mask trims opcode bits for %s"
 msgstr ""
 
-#: config/tc-ppc.c:1447
+#: config/tc-ppc.c:1500
 #, c-format
 msgid "operand index error for %s"
 msgstr ""
 
-#: config/tc-ppc.c:1463
+#: config/tc-ppc.c:1516
 #, c-format
 msgid "operand %d overlap in %s"
 msgstr ""
 
-#: config/tc-ppc.c:1515
+#: config/tc-ppc.c:1568
 #, c-format
 msgid "powerpc_operands[%d].bitm invalid"
 msgstr ""
 
-#: config/tc-ppc.c:1522
+#: config/tc-ppc.c:1575
 #, c-format
 msgid "powerpc_operands[%d] duplicates powerpc_operands[%d]"
 msgstr ""
 
-#: config/tc-ppc.c:1551 config/tc-ppc.c:1615
+#: config/tc-ppc.c:1604 config/tc-ppc.c:1668
 #, c-format
 msgid "major opcode is not sorted for %s"
 msgstr ""
 
-#: config/tc-ppc.c:1558
+#: config/tc-ppc.c:1611
 #, c-format
 msgid "%s is enabled by vle flag"
 msgstr ""
 
-#: config/tc-ppc.c:1565
+#: config/tc-ppc.c:1618
 #, c-format
 msgid "%s not disabled by vle flag"
 msgstr ""
 
-#: config/tc-ppc.c:1579 config/tc-ppc.c:1632
+#: config/tc-ppc.c:1632 config/tc-ppc.c:1685
 #, c-format
 msgid "duplicate instruction %s"
 msgstr ""
 
-#: config/tc-ppc.c:1652
+#: config/tc-ppc.c:1705
 #, c-format
 msgid "duplicate macro %s"
 msgstr ""
 
-#: config/tc-ppc.c:2034
+#: config/tc-ppc.c:2087
 msgid "symbol+offset not supported for got tls"
 msgstr ""
 
-#: config/tc-ppc.c:2111 config/tc-ppc.c:3612 config/tc-ppc.c:7017
+#: config/tc-ppc.c:2164 config/tc-ppc.c:3674 config/tc-ppc.c:7120
 msgid "data in executable section"
 msgstr ""
 
-#: config/tc-ppc.c:2152 config/tc-ppc.c:5252
+#: config/tc-ppc.c:2205 config/tc-ppc.c:5314
 msgid "expected comma after symbol-name: rest of line ignored."
 msgstr ""
 
-#: config/tc-ppc.c:2185 config/tc-ppc.c:5288
+#: config/tc-ppc.c:2238 config/tc-ppc.c:5350
 #, c-format
 msgid "ignoring attempt to re-define symbol `%s'."
 msgstr ""
 
-#: config/tc-ppc.c:2193
+#: config/tc-ppc.c:2246
 #, c-format
 msgid "length of .lcomm \"%s\" is already %ld. Not changed to %ld."
 msgstr ""
 
-#: config/tc-ppc.c:2211
+#: config/tc-ppc.c:2264
 msgid "common alignment not a power of 2"
 msgstr ""
 
-#: config/tc-ppc.c:2253
+#: config/tc-ppc.c:2306
 #, c-format
 msgid "expected comma after name `%s' in .localentry directive"
 msgstr ""
 
-#: config/tc-ppc.c:2263
+#: config/tc-ppc.c:2316
 msgid "missing expression in .localentry directive"
 msgstr ""
 
-#: config/tc-ppc.c:2277
+#: config/tc-ppc.c:2330
 #, c-format
 msgid ".localentry expression for `%s' is not a valid power of 2"
 msgstr ""
 
-#: config/tc-ppc.c:2291
+#: config/tc-ppc.c:2344
 #, c-format
 msgid ".localentry expression for `%s' does not evaluate to a constant"
 msgstr ""
 
-#: config/tc-ppc.c:2306
+#: config/tc-ppc.c:2359
 msgid "missing expression in .abiversion directive"
 msgstr ""
 
-#: config/tc-ppc.c:2315
+#: config/tc-ppc.c:2368
 msgid ".abiversion expression does not evaluate to a constant"
 msgstr ""
 
-#: config/tc-ppc.c:2337
+#: config/tc-ppc.c:2390
 msgid "unknown .gnu_attribute value"
 msgstr ""
 
-#: config/tc-ppc.c:2389
+#: config/tc-ppc.c:2442
 msgid "relocation cannot be done when using -mrelocatable"
 msgstr ""
 
-#: config/tc-ppc.c:2435
+#: config/tc-ppc.c:2488
 msgid "TOC section size exceeds 64k"
 msgstr ""
 
-#: config/tc-ppc.c:2530
+#: config/tc-ppc.c:2583
 #, c-format
 msgid "syntax error: invalid toc specifier `%s'"
 msgstr ""
 
-#: config/tc-ppc.c:2544
+#: config/tc-ppc.c:2597
 #, c-format
 msgid "syntax error: expected `]', found  `%c'"
 msgstr ""
 
-#: config/tc-ppc.c:2653
+#: config/tc-ppc.c:2706
 #, c-format
 msgid "unrecognized opcode: `%s'"
 msgstr ""
 
-#: config/tc-ppc.c:2844
+#: config/tc-ppc.c:2897
 msgid "[tocv] symbol is not a toc symbol"
 msgstr ""
 
-#: config/tc-ppc.c:2855
+#: config/tc-ppc.c:2908
 msgid "unimplemented toc32 expression modifier"
 msgstr ""
 
-#: config/tc-ppc.c:2860
+#: config/tc-ppc.c:2913
 msgid "unimplemented toc64 expression modifier"
 msgstr ""
 
-#: config/tc-ppc.c:2864
+#: config/tc-ppc.c:2917
 #, c-format
 msgid "Unexpected return value [%d] from parse_toc_entry!\n"
 msgstr ""
 
-#: config/tc-ppc.c:3070
+#: config/tc-ppc.c:3132
 #, c-format
 msgid "@tls may not be used with \"%s\" operands"
 msgstr ""
 
-#: config/tc-ppc.c:3073
+#: config/tc-ppc.c:3135
 msgid "@tls may only be used in last operand"
 msgstr ""
 
-#: config/tc-ppc.c:3203
+#: config/tc-ppc.c:3265
 #, c-format
 msgid "assuming %s on symbol"
 msgstr ""
 
-#: config/tc-ppc.c:3306
+#: config/tc-ppc.c:3368
 msgid "unsupported relocation for DS offset field"
 msgstr ""
 
-#: config/tc-ppc.c:3348
+#: config/tc-ppc.c:3410
 #, c-format
 msgid "syntax error; end of line, expected `%c'"
 msgstr ""
 
-#: config/tc-ppc.c:3350
+#: config/tc-ppc.c:3412
 #, c-format
 msgid "syntax error; found `%c', expected `%c'"
 msgstr ""
 
-#: config/tc-ppc.c:3420 config/tc-ppc.c:6371
+#: config/tc-ppc.c:3482 config/tc-ppc.c:6433
 msgid "instruction address is not a multiple of 4"
 msgstr ""
 
-#: config/tc-ppc.c:3649
+#: config/tc-ppc.c:3711
 msgid "missing size"
 msgstr ""
 
-#: config/tc-ppc.c:3658
+#: config/tc-ppc.c:3720
 msgid "negative size"
 msgstr ""
 
-#: config/tc-ppc.c:3690
+#: config/tc-ppc.c:3752
 msgid "missing real symbol name"
 msgstr ""
 
-#: config/tc-ppc.c:3729
+#: config/tc-ppc.c:3791
 msgid "attempt to redefine symbol"
 msgstr ""
 
-#: config/tc-ppc.c:3992
+#: config/tc-ppc.c:4054
 #, c-format
 msgid "no known dwarf XCOFF section for flag 0x%08x\n"
 msgstr ""
 
-#: config/tc-ppc.c:4005
+#: config/tc-ppc.c:4067
 #, c-format
 msgid "label %s was not defined in this dwarf section"
 msgstr ""
 
-#: config/tc-ppc.c:4119
+#: config/tc-ppc.c:4181
 msgid "the XCOFF file format does not support arbitrary sections"
 msgstr ""
 
-#: config/tc-ppc.c:4190
+#: config/tc-ppc.c:4252
 msgid ".ref outside .csect"
 msgstr ""
 
-#: config/tc-ppc.c:4211 config/tc-ppc.c:4411
+#: config/tc-ppc.c:4273 config/tc-ppc.c:4473
 msgid "missing symbol name"
 msgstr ""
 
-#: config/tc-ppc.c:4241
+#: config/tc-ppc.c:4303
 msgid "missing rename string"
 msgstr ""
 
-#: config/tc-ppc.c:4271 config/tc-ppc.c:4810 read.c:3523
+#: config/tc-ppc.c:4333 config/tc-ppc.c:4872 read.c:3523
 msgid "missing value"
 msgstr ""
 
-#: config/tc-ppc.c:4289
+#: config/tc-ppc.c:4351
 msgid "illegal .stabx expression; zero assumed"
 msgstr ""
 
-#: config/tc-ppc.c:4321
+#: config/tc-ppc.c:4383
 msgid "missing class"
 msgstr ""
 
-#: config/tc-ppc.c:4330
+#: config/tc-ppc.c:4392
 msgid "missing type"
 msgstr ""
 
-#: config/tc-ppc.c:4357
+#: config/tc-ppc.c:4419
 msgid ".stabx of storage class stsym must be within .bs/.es"
 msgstr ""
 
-#: config/tc-ppc.c:4598
+#: config/tc-ppc.c:4660
 msgid "nested .bs blocks"
 msgstr ""
 
-#: config/tc-ppc.c:4629
+#: config/tc-ppc.c:4691
 msgid ".es without preceding .bs"
 msgstr ""
 
-#: config/tc-ppc.c:4802
+#: config/tc-ppc.c:4864
 msgid "non-constant byte count"
 msgstr ""
 
-#: config/tc-ppc.c:4876
+#: config/tc-ppc.c:4938
 msgid ".tc not in .toc section"
 msgstr ""
 
-#: config/tc-ppc.c:4894
+#: config/tc-ppc.c:4956
 msgid ".tc with no label"
 msgstr ""
 
-#: config/tc-ppc.c:4978 config/tc-s390.c:1954
+#: config/tc-ppc.c:5040 config/tc-s390.c:1956
 msgid ".machine stack overflow"
 msgstr ""
 
-#: config/tc-ppc.c:4985 config/tc-s390.c:1965
+#: config/tc-ppc.c:5047 config/tc-s390.c:1967
 msgid ".machine stack underflow"
 msgstr ""
 
-#: config/tc-ppc.c:4992 config/tc-s390.c:1977
+#: config/tc-ppc.c:5054 config/tc-s390.c:1979
 #, c-format
 msgid "invalid machine `%s'"
 msgstr ""
 
-#: config/tc-ppc.c:5024
+#: config/tc-ppc.c:5086
 msgid "no previous section to return to, ignored."
 msgstr ""
 
-#: config/tc-ppc.c:5297
+#: config/tc-ppc.c:5359
 #, c-format
 msgid "length of .comm \"%s\" is already %ld. Not changed to %ld."
 msgstr ""
 
 #. Section Contents
 #. unknown
-#: config/tc-ppc.c:5425
+#: config/tc-ppc.c:5487
 msgid "unsupported section attribute -- 'a'"
 msgstr ""
 
-#: config/tc-ppc.c:5608
+#: config/tc-ppc.c:5670
 msgid "bad symbol suffix"
 msgstr ""
 
-#: config/tc-ppc.c:5701
+#: config/tc-ppc.c:5763
 msgid "unrecognized symbol suffix"
 msgstr ""
 
-#: config/tc-ppc.c:5788
+#: config/tc-ppc.c:5850
 msgid "two .function pseudo-ops with no intervening .ef"
 msgstr ""
 
-#: config/tc-ppc.c:5801
+#: config/tc-ppc.c:5863
 msgid ".ef with no preceding .function"
 msgstr ""
 
-#: config/tc-ppc.c:5930
+#: config/tc-ppc.c:5992
 #, c-format
 msgid "warning: symbol %s has no csect"
 msgstr ""
 
-#: config/tc-ppc.c:6192
+#: config/tc-ppc.c:6254
 msgid "symbol in .toc does not match any .tc"
 msgstr ""
 
-#: config/tc-ppc.c:6781
+#: config/tc-ppc.c:6884
 #, c-format
 msgid "%s unsupported as instruction fixup"
 msgstr ""
 
-#: config/tc-ppc.c:6855
+#: config/tc-ppc.c:6958
 #, c-format
 msgid "unsupported relocation against %s"
 msgstr ""
 
-#: config/tc-ppc.c:7000
+#: config/tc-ppc.c:7103
 #, c-format
 msgid "Gas failure, reloc value %d\n"
 msgstr ""
 
-#: config/tc-ppc.c:7084
+#: config/tc-pru.c:602
+#, c-format
+msgid "quick branch offset %d out of range %d to %d"
+msgstr ""
+
+#: config/tc-pru.c:617
+#, c-format
+msgid "immediate value %llu out of range %u to %lu"
+msgstr ""
+
+#: config/tc-pru.c:697
+msgid "unexpected PC relative expression"
+msgstr ""
+
+#: config/tc-pru.c:734 config/tc-pru.c:741
+msgid "residual low bits in pmem diff relocation"
+msgstr ""
+
+#: config/tc-pru.c:934 config/tc-pru.c:967
+#, c-format
+msgid "trailing garbage after expression: %s"
+msgstr ""
+
+#: config/tc-pru.c:939
+#, c-format
+msgid "expected expression, got %s"
+msgstr ""
+
+#: config/tc-pru.c:972
+#, c-format
+msgid "expected constant expression, got %s"
+msgstr ""
+
+#: config/tc-pru.c:1025
+msgid "data transfer register cannot be halfword"
+msgstr ""
+
+#: config/tc-pru.c:1044
+msgid "destination register must be full-word"
+msgstr ""
+
+#: config/tc-pru.c:1076
+#, c-format
+msgid "cannot use partial register %s for addressing"
+msgstr ""
+
+#: config/tc-pru.c:1109
 #, c-format
-msgid "cannot emit PC relative %s relocation against %s"
+msgid "loop count constant %ld is out of range [1..%d]"
+msgstr ""
+
+#: config/tc-pru.c:1208 config/tc-pru.c:1234
+#, c-format
+msgid "byte count constant %ld is out of range [1..%d]"
+msgstr ""
+
+#: config/tc-pru.c:1215 config/tc-pru.c:1241
+msgid "only r0 can be used as byte count register"
 msgstr ""
 
-#: config/tc-ppc.c:7091
-msgid "unable to resolve expression"
+#: config/tc-pru.c:1217 config/tc-pru.c:1243
+msgid "only r0.bX byte fields of r0 can be used as byte count"
+msgstr ""
+
+#: config/tc-pru.c:1256
+#, c-format
+msgid "invalid constant table offset %ld"
+msgstr ""
+
+#: config/tc-pru.c:1267
+#, c-format
+msgid "invalid WakeOnStatus %ld"
+msgstr ""
+
+#: config/tc-pru.c:1278
+#, c-format
+msgid "invalid XFR WideBus Address %ld"
 msgstr ""
 
-#: config/tc-riscv.c:405
+#: config/tc-pru.c:1536
+#, c-format
+msgid ""
+"PRU options:\n"
+"  -mlink-relax     generate relocations for linker relaxation (default).\n"
+"  -mno-link-relax  don't generate relocations for linker relaxation.\n"
+msgstr ""
+
+#: config/tc-pru.c:1828
+#, c-format
+msgid "Label \"%s\" matches a CPU register name"
+msgstr ""
+
+#: config/tc-riscv.c:412
 #, c-format
 msgid "internal error: can't hash `%s': %s"
 msgstr ""
 
-#: config/tc-riscv.c:486
+#: config/tc-riscv.c:493
 #, c-format
 msgid "internal: bad RISC-V opcode (mask error): %s %s"
 msgstr ""
 
-#: config/tc-riscv.c:524
+#: config/tc-riscv.c:532
 #, c-format
 msgid "internal: bad RISC-V opcode (unknown operand type `C%c'): %s %s"
 msgstr ""
 
-#: config/tc-riscv.c:559
+#: config/tc-riscv.c:567
 #, c-format
 msgid "internal: bad RISC-V opcode (unknown operand type `%c'): %s %s"
 msgstr ""
 
-#: config/tc-riscv.c:567
+#: config/tc-riscv.c:575
 #, c-format
 msgid "internal: bad RISC-V opcode (bits 0x%lx undefined): %s %s"
 msgstr ""
 
-#: config/tc-riscv.c:691
+#: config/tc-riscv.c:696
 #, c-format
 msgid "Unsupported RISC-V relocation number %d"
 msgstr ""
 
-#: config/tc-riscv.c:763
+#: config/tc-riscv.c:768
 msgid "internal error: invalid macro"
 msgstr ""
 
-#: config/tc-riscv.c:792 config/tc-riscv.c:859
+#: config/tc-riscv.c:797 config/tc-riscv.c:864
 msgid "unsupported large constant"
 msgstr ""
 
-#: config/tc-riscv.c:794
+#: config/tc-riscv.c:799
 #, c-format
 msgid "Instruction %s requires absolute expression"
 msgstr ""
 
-#: config/tc-riscv.c:1015
+#: config/tc-riscv.c:1020
 #, c-format
 msgid "Macro %s not implemented"
 msgstr ""
 
-#: config/tc-riscv.c:1399
+#: config/tc-riscv.c:1411
 #, c-format
 msgid "bad RVC field specifier 'C%c'\n"
 msgstr ""
 
-#: config/tc-riscv.c:1422 config/tc-riscv.c:1433
+#: config/tc-riscv.c:1434 config/tc-riscv.c:1445
 #, c-format
 msgid "Improper shift amount (%lu)"
 msgstr ""
 
-#: config/tc-riscv.c:1444
+#: config/tc-riscv.c:1456
 #, c-format
 msgid "Improper CSRxI immediate (%lu)"
 msgstr ""
 
-#: config/tc-riscv.c:1459
+#: config/tc-riscv.c:1471
 #, c-format
 msgid "Improper CSR address (%lu)"
 msgstr ""
 
-#: config/tc-riscv.c:1621
+#: config/tc-riscv.c:1633
 msgid "lui expression not in range 0..1048575"
 msgstr ""
 
-#: config/tc-riscv.c:1649
+#: config/tc-riscv.c:1661
 #, c-format
 msgid "internal error: bad argument type %c"
 msgstr ""
 
-#: config/tc-riscv.c:1654
+#: config/tc-riscv.c:1666
 msgid "illegal operands"
 msgstr ""
 
-#: config/tc-riscv.c:1957
+#: config/tc-riscv.c:1983
 #, c-format
 msgid "internal error: bad CFA value #%d"
 msgstr ""
 
-#: config/tc-riscv.c:2034
+#: config/tc-riscv.c:2060
 #, c-format
 msgid "internal error: bad relocation #%d"
 msgstr ""
 
-#: config/tc-riscv.c:2133
+#: config/tc-riscv.c:2065
+msgid "unsupported symbol subtraction"
+msgstr ""
+
+#: config/tc-riscv.c:2161
 msgid ".option pop with no .option push"
 msgstr ""
 
-#: config/tc-riscv.c:2143
+#: config/tc-riscv.c:2171
 #, c-format
 msgid "Unrecognized .option directive: %s\n"
 msgstr ""
 
-#: config/tc-riscv.c:2163
+#: config/tc-riscv.c:2191
 #, c-format
 msgid "Unsupported use of %s"
 msgstr ""
 
-#: config/tc-riscv.c:2307
+#: config/tc-riscv.c:2335
 #, c-format
 msgid "cannot represent %s relocation in object file"
 msgstr ""
 
-#: config/tc-riscv.c:2448
+#: config/tc-riscv.c:2476
 #, c-format
 msgid ""
 "RISC-V options:\n"
-"  -m32           assemble RV32 code\n"
-"  -m64           assemble RV64 code (default)\n"
 "  -fpic          generate position-independent code\n"
 "  -fno-pic       don't generate position-independent code (default)\n"
-"  -msoft-float   don't use F registers for floating-point values\n"
-"  -mhard-float   use F registers for floating-point values (default)\n"
-"  -mno-rvc       disable the C extension for compressed instructions "
-"(default)\n"
-"  -mrvc          enable the C extension for compressed instructions\n"
-"  -march=ISA     set the RISC-V architecture, RV64IMAFD by default\n"
+"  -march=ISA     set the RISC-V architecture\n"
+"  -mabi=ABI      set the RISC-V ABI\n"
 msgstr ""
 
-#: config/tc-riscv.c:2480
+#: config/tc-riscv.c:2503
 #, c-format
 msgid "unknown register `%s'"
 msgstr ""
 
-#: config/tc-riscv.c:2501
+#: config/tc-riscv.c:2524
 #, c-format
 msgid "non-constant .%cleb128 is not supported"
 msgstr ""
@@ -14546,26 +14654,26 @@ msgid ""
 "string instruction support"
 msgstr ""
 
-#: config/tc-s390.c:238 config/tc-sparc.c:314
+#: config/tc-s390.c:238 config/tc-sparc.c:315
 msgid "Invalid default architecture, broken assembler."
 msgstr ""
 
-#: config/tc-s390.c:371
+#: config/tc-s390.c:373
 #, c-format
 msgid "no such machine extension `%s'"
 msgstr ""
 
-#: config/tc-s390.c:382
+#: config/tc-s390.c:384
 #, c-format
 msgid "junk at end of machine string, first unrecognized character is `%c'"
 msgstr ""
 
-#: config/tc-s390.c:449 config/tc-sparc.c:527
+#: config/tc-s390.c:451 config/tc-sparc.c:528
 #, c-format
 msgid "invalid architecture -A%s"
 msgstr ""
 
-#: config/tc-s390.c:472
+#: config/tc-s390.c:474
 #, c-format
 msgid ""
 "        S390 options:\n"
@@ -14576,145 +14684,145 @@ msgid ""
 "        -m64              Set file format to 64 bit format\n"
 msgstr ""
 
-#: config/tc-s390.c:479
+#: config/tc-s390.c:481
 #, c-format
 msgid ""
 "        -V                print assembler version number\n"
 "        -Qy, -Qn          ignored\n"
 msgstr ""
 
-#: config/tc-s390.c:563
+#: config/tc-s390.c:565
 msgid "The 64 bit file format is used without esame instructions."
 msgstr ""
 
-#: config/tc-s390.c:579
+#: config/tc-s390.c:581
 #, c-format
 msgid "Internal assembler error for instruction format %s"
 msgstr ""
 
-#: config/tc-s390.c:625
+#: config/tc-s390.c:627
 #, c-format
 msgid "operand out of range (%s not between %ld and %ld)"
 msgstr ""
 
-#: config/tc-s390.c:850
+#: config/tc-s390.c:852
 #, c-format
 msgid "identifier+constant@%s means identifier@%s+constant"
 msgstr ""
 
-#: config/tc-s390.c:931
+#: config/tc-s390.c:933
 msgid "Can't handle O_big in s390_exp_compare"
 msgstr ""
 
-#: config/tc-s390.c:1013
+#: config/tc-s390.c:1015
 msgid "Invalid suffix for literal pool entry"
 msgstr ""
 
-#: config/tc-s390.c:1070
+#: config/tc-s390.c:1072
 msgid "Big number is too big"
 msgstr ""
 
-#: config/tc-s390.c:1217
+#: config/tc-s390.c:1219
 msgid "relocation not applicable"
 msgstr ""
 
-#: config/tc-s390.c:1341
+#: config/tc-s390.c:1343
 msgid "invalid length field specified"
 msgstr ""
 
-#: config/tc-s390.c:1345
+#: config/tc-s390.c:1347
 msgid "index register specified but zero"
 msgstr ""
 
-#: config/tc-s390.c:1349
+#: config/tc-s390.c:1351
 msgid "base register specified but zero"
 msgstr ""
 
-#: config/tc-s390.c:1353
+#: config/tc-s390.c:1355
 msgid "odd numbered general purpose register specified as register pair"
 msgstr ""
 
-#: config/tc-s390.c:1361
+#: config/tc-s390.c:1363
 msgid ""
 "invalid floating point register pair.  Valid fp register pair operands are "
 "0, 1, 4, 5, 8, 9, 12 or 13."
 msgstr ""
 
-#: config/tc-s390.c:1450
+#: config/tc-s390.c:1452
 msgid "invalid operand suffix"
 msgstr ""
 
-#: config/tc-s390.c:1473
+#: config/tc-s390.c:1475
 msgid "syntax error; missing '(' after displacement"
 msgstr ""
 
-#: config/tc-s390.c:1489 config/tc-s390.c:1533 config/tc-s390.c:1567
-msgid "syntax error; expected ,"
+#: config/tc-s390.c:1491 config/tc-s390.c:1535 config/tc-s390.c:1569
+msgid "syntax error; expected ','"
 msgstr ""
 
-#: config/tc-s390.c:1521
+#: config/tc-s390.c:1523
 msgid "syntax error; missing ')' after base register"
 msgstr ""
 
-#: config/tc-s390.c:1550
+#: config/tc-s390.c:1552
 msgid "syntax error; ')' not allowed here"
 msgstr ""
 
-#: config/tc-s390.c:1692
+#: config/tc-s390.c:1694
 #, c-format
 msgid "Opcode %s not available in this mode"
 msgstr ""
 
-#: config/tc-s390.c:1747 config/tc-s390.c:1770 config/tc-s390.c:1783
+#: config/tc-s390.c:1749 config/tc-s390.c:1772 config/tc-s390.c:1785
 msgid "Invalid .insn format\n"
 msgstr ""
 
-#: config/tc-s390.c:1755
+#: config/tc-s390.c:1757
 #, c-format
 msgid "Unrecognized opcode format: `%s'"
 msgstr ""
 
-#: config/tc-s390.c:1786
+#: config/tc-s390.c:1788
 msgid "second operand of .insn not a constant\n"
 msgstr ""
 
-#: config/tc-s390.c:1789
+#: config/tc-s390.c:1791
 msgid "missing comma after insn constant\n"
 msgstr ""
 
-#: config/tc-s390.c:2026
+#: config/tc-s390.c:2028
 msgid ".machinemode stack overflow"
 msgstr ""
 
-#: config/tc-s390.c:2033
+#: config/tc-s390.c:2035
 msgid ".machinemode stack underflow"
 msgstr ""
 
-#: config/tc-s390.c:2050
+#: config/tc-s390.c:2052
 #, c-format
 msgid "invalid machine mode `%s'"
 msgstr ""
 
-#: config/tc-s390.c:2250
+#: config/tc-s390.c:2252
 #, c-format
 msgid "cannot emit relocation %s against subsy symbol %s"
 msgstr ""
 
-#: config/tc-s390.c:2367
+#: config/tc-s390.c:2369
 msgid "unsupported relocation type"
 msgstr ""
 
-#: config/tc-s390.c:2422
+#: config/tc-s390.c:2424
 #, c-format
 msgid "cannot emit PC relative %s relocation%s%s"
 msgstr ""
 
-#: config/tc-s390.c:2561
+#: config/tc-s390.c:2563
 #, c-format
 msgid "Gas failure, reloc type %s\n"
 msgstr ""
 
-#: config/tc-s390.c:2563
+#: config/tc-s390.c:2565
 #, c-format
 msgid "Gas failure, reloc type #%i\n"
 msgstr ""
@@ -14743,8 +14851,8 @@ msgstr ""
 msgid "S+core co-processor register expected"
 msgstr ""
 
-#: config/tc-score.c:1074 config/tc-score.c:2068
-msgid "Using temp register(r1)"
+#: config/tc-score.c:1074
+msgid "Using temp register (r1)"
 msgstr ""
 
 #: config/tc-score.c:1093
@@ -14772,9 +14880,13 @@ msgstr ""
 msgid "invalid constant: bit expression not defined"
 msgstr ""
 
+#: config/tc-score.c:2068
+msgid "Using temp register(r1)"
+msgstr ""
+
 #: config/tc-score.c:2082
 #, c-format
-msgid "low register(r0-r15)expected, not '%.100s'"
+msgid "low register (r0-r15) expected, not '%.100s'"
 msgstr ""
 
 #: config/tc-score.c:2144 config/tc-score.c:3482 config/tc-score.c:3650
@@ -14793,17 +14905,17 @@ msgstr ""
 
 #: config/tc-score.c:2347
 #, c-format
-msgid "Fix data dependency: %s %s -- %s %s  (insert %d nop!/%d)"
+msgid "Fix data dependency: %s %s -- %s %s (insert %d nop!/%d)"
 msgstr ""
 
 #: config/tc-score.c:2366
 #, c-format
-msgid "Fix data dependency: %s %s -- %s %s  (insert 1 pflush/%d)"
+msgid "Fix data dependency: %s %s -- %s %s (insert 1 pflush/%d)"
 msgstr ""
 
 #: config/tc-score.c:2382 config/tc-score.c:2389
 #, c-format
-msgid "data dependency: %s %s -- %s %s  (%d/%d bubble)"
+msgid "data dependency: %s %s -- %s %s (%d/%d bubble)"
 msgstr ""
 
 #: config/tc-score.c:2838
@@ -14912,7 +15024,7 @@ msgid "invalid constant: 25 bit expression not in range [-16777216, 16777215]"
 msgstr ""
 
 #: config/tc-score.c:5231
-msgid "invalid constant: 20 bit expression not in range -2^19..2^19"
+msgid "invalid constant: 20 bit expression not in range -2^19..2^19-1"
 msgstr ""
 
 #: config/tc-score.c:5264
@@ -14924,7 +15036,7 @@ msgid "invalid constant: 10 bit expression not in range [-2^9, 2^9-1]"
 msgstr ""
 
 #: config/tc-score.c:5365
-msgid "pce instruction error (16 bit || 16 bit)'"
+msgid "pce instruction error (16 bit || 16 bit)."
 msgstr ""
 
 #: config/tc-score.c:5383 config/tc-score.c:5407 config/tc-score.c:5434
@@ -14946,7 +15058,7 @@ msgstr ""
 msgid "error setting flags for \".sbss\": %s"
 msgstr ""
 
-#: config/tc-score.c:6155 config/tc-sparc.c:4169
+#: config/tc-score.c:6155 config/tc-sparc.c:4208
 msgid "missing alignment"
 msgstr ""
 
@@ -14968,19 +15080,19 @@ msgstr ""
 msgid "bad call to MD_ATOF()"
 msgstr ""
 
-#: config/tc-score.c:7197
+#: config/tc-score.c:7197 config/tc-score.c:7263
 #, c-format
-msgid " branch relocation truncate (0x%x) [-2^9 ~ 2^9]"
+msgid " branch relocation truncate (0x%x) [-2^9 ~ 2^9-1]"
 msgstr ""
 
 #: config/tc-score.c:7212 config/tc-score.c:7241 config/tc-score.c:7293
 #, c-format
-msgid " branch relocation truncate (0x%x) [-2^19 ~ 2^19]"
+msgid " branch relocation truncate (0x%x) [-2^19 ~ 2^19-1]"
 msgstr ""
 
-#: config/tc-score.c:7263 config/tc-score.c:7318
+#: config/tc-score.c:7318
 #, c-format
-msgid " branch relocation truncate (0x%x)  [-2^9 ~ 2^9]"
+msgid " branch relocation truncate (0x%x)  [-2^9 ~ 2^9-1]"
 msgstr ""
 
 #: config/tc-score.c:7488
@@ -15010,48 +15122,44 @@ msgstr ""
 
 #: config/tc-score.c:7810
 #, c-format
-msgid "        -FIXDD\t\tassemble code for fix data dependency\n"
+msgid "        -FIXDD\t\tfix data dependencies\n"
 msgstr ""
 
 #: config/tc-score.c:7812
 #, c-format
 msgid ""
-"        -NWARN\t\tassemble code for no warning message for fix data "
-"dependency\n"
+"        -NWARN\t\tdo not print warning message when fixing data "
+"dependencies\n"
 msgstr ""
 
 #: config/tc-score.c:7814
 #, c-format
-msgid "        -SCORE5\t\tassemble code for target is SCORE5\n"
+msgid "        -SCORE5\t\tassemble code for target SCORE5\n"
 msgstr ""
 
 #: config/tc-score.c:7816
 #, c-format
-msgid "        -SCORE5U\tassemble code for target is SCORE5U\n"
+msgid "        -SCORE5U\tassemble code for target SCORE5U\n"
 msgstr ""
 
 #: config/tc-score.c:7818
 #, c-format
-msgid ""
-"        -SCORE7\t\tassemble code for target is SCORE7, this is default "
-"setting\n"
+msgid "        -SCORE7\t\tassemble code for target SCORE7 [default]\n"
 msgstr ""
 
 #: config/tc-score.c:7820
 #, c-format
-msgid "        -SCORE3\t\tassemble code for target is SCORE3\n"
+msgid "        -SCORE3\t\tassemble code for target SCORE3\n"
 msgstr ""
 
 #: config/tc-score.c:7822
 #, c-format
-msgid ""
-"        -march=score7\tassemble code for target is SCORE7, this is default "
-"setting\n"
+msgid "        -march=score7\tassemble code for target SCORE7 [default]\n"
 msgstr ""
 
 #: config/tc-score.c:7824
 #, c-format
-msgid "        -march=score3\tassemble code for target is SCORE3\n"
+msgid "        -march=score3\tassemble code for target SCORE3\n"
 msgstr ""
 
 #: config/tc-score.c:7826
@@ -15063,23 +15171,23 @@ msgstr ""
 
 #: config/tc-score.c:7828
 #, c-format
-msgid "        -KPIC\t\tassemble code for PIC\n"
+msgid "        -KPIC\t\tgenerate PIC\n"
 msgstr ""
 
 #: config/tc-score.c:7830
 #, c-format
-msgid "        -O0\t\tassembler will not perform any optimizations\n"
+msgid "        -O0\t\tdo not perform any optimizations\n"
 msgstr ""
 
 #: config/tc-score.c:7832
 #, c-format
 msgid ""
-"        -G gpnum\tassemble code for setting gpsize and default is 8 byte\n"
+"        -G gpnum\tassemble code for setting gpsize, default is 8 bytes\n"
 msgstr ""
 
 #: config/tc-score.c:7834
 #, c-format
-msgid "        -V \t\tSunplus release version \n"
+msgid "        -V \t\tSunplus release version\n"
 msgstr ""
 
 #: config/tc-sh.c:62
@@ -15370,8 +15478,8 @@ msgstr ""
 msgid "overflow in branch to %s; converted into longer instruction sequence"
 msgstr ""
 
-#: config/tc-sh.c:3750 config/tc-sh.c:3797 config/tc-sparc.c:4669
-#: config/tc-sparc.c:4693
+#: config/tc-sh.c:3750 config/tc-sh.c:3797 config/tc-sparc.c:4708
+#: config/tc-sparc.c:4732
 msgid "misaligned data"
 msgstr ""
 
@@ -15490,10 +15598,6 @@ msgstr ""
 msgid "invalid PIC reference"
 msgstr ""
 
-#: config/tc-sh64.c:2479
-msgid "can't find opcode"
-msgstr ""
-
 #: config/tc-sh64.c:2682 config/tc-sh64.c:2722
 msgid "invalid operand: expression in PT target"
 msgstr ""
@@ -15573,26 +15677,26 @@ msgstr ""
 msgid "Invalid DataLabel expression"
 msgstr ""
 
-#: config/tc-sparc.c:318 config/tc-sparc.c:533
+#: config/tc-sparc.c:319 config/tc-sparc.c:534
 msgid "Bad opcode table, broken assembler."
 msgstr ""
 
-#: config/tc-sparc.c:525
+#: config/tc-sparc.c:526
 #, c-format
 msgid "invalid architecture -xarch=%s"
 msgstr ""
 
-#: config/tc-sparc.c:606
+#: config/tc-sparc.c:607
 #, c-format
 msgid "No compiled in support for %d bit object file format"
 msgstr ""
 
-#: config/tc-sparc.c:691
+#: config/tc-sparc.c:692
 #, c-format
 msgid "SPARC options:\n"
 msgstr ""
 
-#: config/tc-sparc.c:720
+#: config/tc-sparc.c:721
 #, c-format
 msgid ""
 "\n"
@@ -15604,24 +15708,24 @@ msgid ""
 "-no-relax\t\tavoid changing any jumps and branches\n"
 msgstr ""
 
-#: config/tc-sparc.c:728
+#: config/tc-sparc.c:729
 #, c-format
 msgid "-k\t\t\tgenerate PIC\n"
 msgstr ""
 
-#: config/tc-sparc.c:732
+#: config/tc-sparc.c:733
 #, c-format
 msgid ""
 "-32\t\t\tcreate 32 bit object file\n"
 "-64\t\t\tcreate 64 bit object file\n"
 msgstr ""
 
-#: config/tc-sparc.c:735
+#: config/tc-sparc.c:736
 #, c-format
 msgid "\t\t\t[default is %d]\n"
 msgstr ""
 
-#: config/tc-sparc.c:737
+#: config/tc-sparc.c:738
 #, c-format
 msgid ""
 "-TSO\t\t\tuse Total Store Ordering\n"
@@ -15629,12 +15733,12 @@ msgid ""
 "-RMO\t\t\tuse Relaxed Memory Ordering\n"
 msgstr ""
 
-#: config/tc-sparc.c:741
+#: config/tc-sparc.c:742
 #, c-format
 msgid "\t\t\t[default is %s]\n"
 msgstr ""
 
-#: config/tc-sparc.c:743
+#: config/tc-sparc.c:744
 #, c-format
 msgid ""
 "-KPIC\t\t\tgenerate PIC\n"
@@ -15649,7 +15753,7 @@ msgid ""
 "-s\t\t\tignored\n"
 msgstr ""
 
-#: config/tc-sparc.c:756
+#: config/tc-sparc.c:757
 #, c-format
 msgid ""
 "-EL\t\t\tgenerate code for a little endian machine\n"
@@ -15658,340 +15762,340 @@ msgid ""
 "                        instructions and little endian data.\n"
 msgstr ""
 
-#: config/tc-sparc.c:1023
+#: config/tc-sparc.c:1024
 #, c-format
 msgid "Internal error: losing opcode: `%s' \"%s\"\n"
 msgstr ""
 
-#: config/tc-sparc.c:1042
+#: config/tc-sparc.c:1043
 #, c-format
 msgid "Internal error: can't find opcode `%s' for `%s'\n"
 msgstr ""
 
-#: config/tc-sparc.c:1258
+#: config/tc-sparc.c:1259
 msgid "Support for 64-bit arithmetic not compiled in."
 msgstr ""
 
-#: config/tc-sparc.c:1304
+#: config/tc-sparc.c:1305
 msgid "set: number not in 0..4294967295 range"
 msgstr ""
 
-#: config/tc-sparc.c:1311
+#: config/tc-sparc.c:1312
 msgid "set: number not in -2147483648..4294967295 range"
 msgstr ""
 
-#: config/tc-sparc.c:1370
+#: config/tc-sparc.c:1371
 msgid "setsw: number not in -2147483648..4294967295 range"
 msgstr ""
 
-#: config/tc-sparc.c:1418
+#: config/tc-sparc.c:1419
 msgid "setx: temporary register same as destination register"
 msgstr ""
 
-#: config/tc-sparc.c:1489
+#: config/tc-sparc.c:1490
 msgid "setx: illegal temporary register g0"
 msgstr ""
 
-#: config/tc-sparc.c:1597
+#: config/tc-sparc.c:1598
 msgid "unpredictable DCTI couple"
 msgstr ""
 
-#: config/tc-sparc.c:1607
+#: config/tc-sparc.c:1608
 msgid "FP branch in delay slot"
 msgstr ""
 
-#: config/tc-sparc.c:1623
+#: config/tc-sparc.c:1624
 msgid "FP branch preceded by FP instruction; NOP inserted"
 msgstr ""
 
-#: config/tc-sparc.c:1663
+#: config/tc-sparc.c:1664
 msgid "failed special case insn sanity check"
 msgstr ""
 
-#: config/tc-sparc.c:1834
+#: config/tc-sparc.c:1836
 msgid ": invalid membar mask name"
 msgstr ""
 
-#: config/tc-sparc.c:1850
+#: config/tc-sparc.c:1852
 msgid ": invalid membar mask expression"
 msgstr ""
 
-#: config/tc-sparc.c:1855
+#: config/tc-sparc.c:1857
 msgid ": invalid membar mask number"
 msgstr ""
 
-#: config/tc-sparc.c:1870
+#: config/tc-sparc.c:1872
 msgid ": invalid siam mode expression"
 msgstr ""
 
-#: config/tc-sparc.c:1875
+#: config/tc-sparc.c:1877
 msgid ": invalid siam mode number"
 msgstr ""
 
-#: config/tc-sparc.c:1891
+#: config/tc-sparc.c:1893
 msgid ": invalid prefetch function name"
 msgstr ""
 
-#: config/tc-sparc.c:1899
+#: config/tc-sparc.c:1901
 msgid ": invalid prefetch function expression"
 msgstr ""
 
-#: config/tc-sparc.c:1904
+#: config/tc-sparc.c:1906
 msgid ": invalid prefetch function number"
 msgstr ""
 
-#: config/tc-sparc.c:1931 config/tc-sparc.c:1937 config/tc-sparc.c:1946
+#: config/tc-sparc.c:1933 config/tc-sparc.c:1939 config/tc-sparc.c:1948
 msgid ": unrecognizable privileged register"
 msgstr ""
 
-#: config/tc-sparc.c:1969 config/tc-sparc.c:1975 config/tc-sparc.c:1984
+#: config/tc-sparc.c:1971 config/tc-sparc.c:1977 config/tc-sparc.c:1986
 msgid ": unrecognizable hyperprivileged register"
 msgstr ""
 
-#: config/tc-sparc.c:2007 config/tc-sparc.c:2013 config/tc-sparc.c:2022
+#: config/tc-sparc.c:2009 config/tc-sparc.c:2015 config/tc-sparc.c:2024
 msgid ": unrecognizable ancillary state register"
 msgstr ""
 
-#: config/tc-sparc.c:2055
+#: config/tc-sparc.c:2057
 msgid ": asr number must be between 0 and 31"
 msgstr ""
 
-#: config/tc-sparc.c:2064
+#: config/tc-sparc.c:2066
 #, c-format
 msgid ": expecting %asrN"
 msgstr ""
 
-#: config/tc-sparc.c:2106
+#: config/tc-sparc.c:2108
 msgid ": crypto immediate must be between 0 and 31"
 msgstr ""
 
-#: config/tc-sparc.c:2115
+#: config/tc-sparc.c:2117
 msgid ": expecting crypto immediate"
 msgstr ""
 
-#: config/tc-sparc.c:2276 config/tc-sparc.c:2315 config/tc-sparc.c:2715
-#: config/tc-sparc.c:2751
+#: config/tc-sparc.c:2278 config/tc-sparc.c:2317 config/tc-sparc.c:2717
+#: config/tc-sparc.c:2753
 #, c-format
 msgid "Illegal operands: %%%s requires arguments in ()"
 msgstr ""
 
-#: config/tc-sparc.c:2283
+#: config/tc-sparc.c:2285
 #, c-format
 msgid ""
 "Illegal operands: %%%s cannot be used together with other relocs in the insn "
 "()"
 msgstr ""
 
-#: config/tc-sparc.c:2294
+#: config/tc-sparc.c:2296
 #, c-format
 msgid "Illegal operands: %%%s can be only used with call __tls_get_addr"
 msgstr ""
 
-#: config/tc-sparc.c:2501
+#: config/tc-sparc.c:2503
 msgid "detected global register use not covered by .register pseudo-op"
 msgstr ""
 
-#: config/tc-sparc.c:2583
+#: config/tc-sparc.c:2585
 msgid ": There are only 64 f registers; [0-63]"
 msgstr ""
 
-#: config/tc-sparc.c:2585 config/tc-sparc.c:2603
+#: config/tc-sparc.c:2587 config/tc-sparc.c:2605
 msgid ": There are only 32 f registers; [0-31]"
 msgstr ""
 
-#: config/tc-sparc.c:2595
+#: config/tc-sparc.c:2597
 msgid ": There are only 32 single precision f registers; [0-31]"
 msgstr ""
 
-#: config/tc-sparc.c:2616
+#: config/tc-sparc.c:2618
 msgid ": Instruction requires frs2 and frsd must be the same register"
 msgstr ""
 
-#: config/tc-sparc.c:2760
+#: config/tc-sparc.c:2762
 #, c-format
 msgid "Expression inside %%%s could not be parsed"
 msgstr ""
 
-#: config/tc-sparc.c:2768
+#: config/tc-sparc.c:2770
 #, c-format
 msgid ""
 "Illegal operands: Can't do arithmetics other than + and - involving %%%s()"
 msgstr ""
 
-#: config/tc-sparc.c:2885
+#: config/tc-sparc.c:2887
 #, c-format
 msgid "Illegal operands: Can't add non-constant expression to %%%s()"
 msgstr ""
 
-#: config/tc-sparc.c:2895
+#: config/tc-sparc.c:2897
 #, c-format
 msgid ""
 "Illegal operands: Can't do arithmetics involving %%%s() of a relocatable "
 "symbol"
 msgstr ""
 
-#: config/tc-sparc.c:2913
+#: config/tc-sparc.c:2915
 msgid ": PC-relative operand can't be a constant"
 msgstr ""
 
-#: config/tc-sparc.c:2920
+#: config/tc-sparc.c:2922
 msgid ": TLS operand can't be a constant"
 msgstr ""
 
-#: config/tc-sparc.c:2948
+#: config/tc-sparc.c:2950
 msgid ": Immediate value in cbcond is out of range."
 msgstr ""
 
-#: config/tc-sparc.c:2974
+#: config/tc-sparc.c:2976
 msgid ": invalid ASI name"
 msgstr ""
 
-#: config/tc-sparc.c:2982
+#: config/tc-sparc.c:2985
 msgid ": invalid ASI expression"
 msgstr ""
 
-#: config/tc-sparc.c:2987
+#: config/tc-sparc.c:2990
 msgid ": invalid ASI number"
 msgstr ""
 
-#: config/tc-sparc.c:3090
+#: config/tc-sparc.c:3093
 msgid "OPF immediate operand out of range (0-0x1ff)"
 msgstr ""
 
-#: config/tc-sparc.c:3095
+#: config/tc-sparc.c:3098
 msgid "non-immediate OPF operand, ignored"
 msgstr ""
 
-#: config/tc-sparc.c:3114
+#: config/tc-sparc.c:3117
 msgid ": invalid cpreg name"
 msgstr ""
 
-#: config/tc-sparc.c:3143
+#: config/tc-sparc.c:3146
 #, c-format
 msgid "Illegal operands%s"
 msgstr ""
 
-#: config/tc-sparc.c:3183
+#: config/tc-sparc.c:3196
 #, c-format
 msgid "architecture bumped from \"%s\" to \"%s\" on \"%s\""
 msgstr ""
 
-#: config/tc-sparc.c:3224
+#: config/tc-sparc.c:3237
 #, c-format
 msgid "Architecture mismatch on \"%s %s\"."
 msgstr ""
 
-#: config/tc-sparc.c:3225
+#: config/tc-sparc.c:3238
 #, c-format
-msgid " (Requires %s; requested architecture is %s.)"
+msgid "(Requires %s; requested architecture is %s.)"
 msgstr ""
 
-#: config/tc-sparc.c:3237
+#: config/tc-sparc.c:3250
 #, c-format
 msgid "Hardware capability \"%s\" not enabled for \"%s\"."
 msgstr ""
 
-#: config/tc-sparc.c:3635 config/tc-sparc.c:3642 config/tc-sparc.c:3649
-#: config/tc-sparc.c:3656 config/tc-sparc.c:3663 config/tc-sparc.c:3672
-#: config/tc-sparc.c:3684 config/tc-sparc.c:3695 config/tc-sparc.c:3717
-#: config/tc-sparc.c:3741 write.c:1163
+#: config/tc-sparc.c:3674 config/tc-sparc.c:3681 config/tc-sparc.c:3688
+#: config/tc-sparc.c:3695 config/tc-sparc.c:3702 config/tc-sparc.c:3711
+#: config/tc-sparc.c:3723 config/tc-sparc.c:3734 config/tc-sparc.c:3756
+#: config/tc-sparc.c:3780 write.c:1163
 msgid "relocation overflow"
 msgstr ""
 
-#: config/tc-sparc.c:3796
+#: config/tc-sparc.c:3835
 #, c-format
 msgid "bad or unhandled relocation type: 0x%02x"
 msgstr ""
 
-#: config/tc-sparc.c:4131
+#: config/tc-sparc.c:4170
 msgid "Expected comma after name"
 msgstr ""
 
-#: config/tc-sparc.c:4140
+#: config/tc-sparc.c:4179
 #, c-format
 msgid "BSS length (%d.) <0! Ignored."
 msgstr ""
 
-#: config/tc-sparc.c:4152
+#: config/tc-sparc.c:4191
 msgid "bad .reserve segment -- expected BSS segment"
 msgstr ""
 
-#: config/tc-sparc.c:4180
+#: config/tc-sparc.c:4219
 #, c-format
 msgid "alignment too large; assuming %d"
 msgstr ""
 
-#: config/tc-sparc.c:4186 config/tc-sparc.c:4335
+#: config/tc-sparc.c:4225 config/tc-sparc.c:4374
 msgid "negative alignment"
 msgstr ""
 
-#: config/tc-sparc.c:4196 config/tc-sparc.c:4357 read.c:1521 read.c:2539
+#: config/tc-sparc.c:4235 config/tc-sparc.c:4396 read.c:1521 read.c:2539
 msgid "alignment not a power of 2"
 msgstr ""
 
-#: config/tc-sparc.c:4249
+#: config/tc-sparc.c:4288
 #, c-format
 msgid "Ignoring attempt to re-define symbol %s"
 msgstr ""
 
-#: config/tc-sparc.c:4272 config/tc-v850.c:283
+#: config/tc-sparc.c:4311 config/tc-v850.c:283
 msgid "Expected comma after symbol-name"
 msgstr ""
 
-#: config/tc-sparc.c:4282
+#: config/tc-sparc.c:4321
 #, c-format
 msgid ".COMMon length (%lu) out of range ignored"
 msgstr ""
 
-#: config/tc-sparc.c:4315
+#: config/tc-sparc.c:4354
 msgid "Expected comma after common length"
 msgstr ""
 
-#: config/tc-sparc.c:4329
+#: config/tc-sparc.c:4368
 #, c-format
 msgid "alignment too large; assuming %ld"
 msgstr ""
 
-#: config/tc-sparc.c:4472
+#: config/tc-sparc.c:4511
 msgid "Unknown segment type"
 msgstr ""
 
-#: config/tc-sparc.c:4542 config/tc-sparc.c:4551
+#: config/tc-sparc.c:4581 config/tc-sparc.c:4590
 #, c-format
 msgid "register syntax is .register %%g[2367],{#scratch|symbolname|#ignore}"
 msgstr ""
 
-#: config/tc-sparc.c:4569
+#: config/tc-sparc.c:4608
 msgid "redefinition of global register"
 msgstr ""
 
-#: config/tc-sparc.c:4580
+#: config/tc-sparc.c:4619
 #, c-format
 msgid "Register symbol %s already defined."
 msgstr ""
 
-#: config/tc-sparc.c:4784
+#: config/tc-sparc.c:4823
 #, c-format
 msgid "Illegal operands: %%r_plt in %d-byte data field"
 msgstr ""
 
-#: config/tc-sparc.c:4794
+#: config/tc-sparc.c:4833
 #, c-format
 msgid "Illegal operands: %%r_tls_dtpoff in %d-byte data field"
 msgstr ""
 
-#: config/tc-sparc.c:4831 config/tc-vax.c:3317
+#: config/tc-sparc.c:4870 config/tc-vax.c:3317
 #, c-format
 msgid "Illegal operands: Only %%r_%s%d allowed in %d-byte data fields"
 msgstr ""
 
-#: config/tc-sparc.c:4839 config/tc-sparc.c:4870 config/tc-sparc.c:4879
+#: config/tc-sparc.c:4878 config/tc-sparc.c:4909 config/tc-sparc.c:4918
 #: config/tc-vax.c:3325 config/tc-vax.c:3356 config/tc-vax.c:3365
 #, c-format
 msgid "Illegal operands: %%r_%s%d requires arguments in ()"
 msgstr ""
 
-#: config/tc-sparc.c:4888 config/tc-vax.c:3374
+#: config/tc-sparc.c:4927 config/tc-vax.c:3374
 #, c-format
 msgid "Illegal operands: garbage after %%r_%s%d()"
 msgstr ""
@@ -16198,10 +16302,6 @@ msgstr ""
 msgid "loading the same register in parallel operation"
 msgstr ""
 
-#: config/tc-tic30.c:1387
-msgid "pc-relative "
-msgstr ""
-
 #: config/tc-tic30.c:1448
 #, c-format
 msgid "Invalid character %s in opcode"
@@ -16531,7 +16631,7 @@ msgstr ""
 
 #: config/tc-tic54x.c:233
 #, c-format
-msgid "C54x-specific command line  options:\n"
+msgid "C54x-specific command line options:\n"
 msgstr ""
 
 #: config/tc-tic54x.c:234
@@ -16685,7 +16785,7 @@ msgid "Unrecognized section '%s'"
 msgstr ""
 
 #: config/tc-tic54x.c:1841
-msgid "Current section is unitialized, section name required for .clink"
+msgid "Current section is uninitialized, section name required for .clink"
 msgstr ""
 
 #: config/tc-tic54x.c:2042
@@ -16934,7 +17034,7 @@ msgstr ""
 
 #: config/tc-tic54x.c:4664
 #, c-format
-msgid "Invalid length (use 0 to %d"
+msgid "Invalid length (use 0 to %d)"
 msgstr ""
 
 #: config/tc-tic54x.c:4674
@@ -17871,11 +17971,11 @@ msgid "condition sa cannot be used here"
 msgstr ""
 
 #: config/tc-v850.c:2831
-msgid "invalid cache oparation name"
+msgid "invalid cache operation name"
 msgstr ""
 
 #: config/tc-v850.c:2836
-msgid "invalid pref oparation name"
+msgid "invalid pref operation name"
 msgstr ""
 
 #: config/tc-v850.c:2841
@@ -17914,7 +18014,7 @@ msgstr ""
 msgid "displacement is too large"
 msgstr ""
 
-#: config/tc-v850.c:2975 config/tc-xtensa.c:12941
+#: config/tc-v850.c:2975 config/tc-xtensa.c:12953
 msgid "invalid operand"
 msgstr ""
 
@@ -18138,11 +18238,11 @@ msgid "Length specification ignored. Address mode 9F used"
 msgstr ""
 
 #: config/tc-vax.c:3132
-msgid "Invalid operand:  immediate value used as base address."
+msgid "Invalid operand: immediate value used as base address."
 msgstr ""
 
 #: config/tc-vax.c:3134
-msgid "Invalid operand:  immediate value used as address."
+msgid "Invalid operand: immediate value used as address."
 msgstr ""
 
 #: config/tc-vax.c:3159
@@ -18159,13 +18259,92 @@ msgstr ""
 msgid "Bad call to MD_ATOF()"
 msgstr ""
 
+#: config/tc-wasm32.c:117
+#, c-format
+msgid "wasm32 assembler options:\n"
+msgstr ""
+
+#: config/tc-wasm32.c:364
+msgid "unexpected negative constant"
+msgstr ""
+
+#: config/tc-wasm32.c:426
+msgid "no function type on PLT reloc"
+msgstr ""
+
+#: config/tc-wasm32.c:441
+msgid "couldn't find relocation to use"
+msgstr ""
+
+#: config/tc-wasm32.c:513
+msgid "Not a function type"
+msgstr ""
+
+#: config/tc-wasm32.c:529
+#, c-format
+msgid "Unknown type %c\n"
+msgstr ""
+
+#: config/tc-wasm32.c:551 config/tc-wasm32.c:577
+msgid "Unknown type"
+msgstr ""
+
+#: config/tc-wasm32.c:625
+msgid "only single block types allowed"
+msgstr ""
+
+#: config/tc-wasm32.c:635
+msgid "instruction does not take a block type"
+msgstr ""
+
+#: config/tc-wasm32.c:652
+msgid "missing block type"
+msgstr ""
+
+#: config/tc-wasm32.c:661 config/tc-wasm32.c:665
+msgid "missing alignment hint"
+msgstr ""
+
+#: config/tc-wasm32.c:669
+msgid "missing offset"
+msgstr ""
+
+#: config/tc-wasm32.c:675
+msgid "missing local index"
+msgstr ""
+
+#: config/tc-wasm32.c:680
+msgid "missing break count"
+msgstr ""
+
+#: config/tc-wasm32.c:685
+msgid "missing reserved current_memory/grow_memory argument"
+msgstr ""
+
+#: config/tc-wasm32.c:689
+msgid "missing call argument"
+msgstr ""
+
+#: config/tc-wasm32.c:693
+msgid "missing call signature"
+msgstr ""
+
+#: config/tc-wasm32.c:695
+msgid "missing table index"
+msgstr ""
+
+#: config/tc-wasm32.c:726 config/tc-z80.c:1951 read.c:3742
+#, c-format
+msgid "junk at end of line, first unrecognized character is `%c'"
+msgstr ""
+
 #: config/tc-xc16x.c:218
 #, c-format
 msgid " XC16X specific command line options:\n"
 msgstr ""
 
 #: config/tc-xgate.c:215
-msgid " architecture variant invalid"
+msgid "architecture variant invalid"
 msgstr ""
 
 #: config/tc-xgate.c:370
@@ -18176,7 +18355,7 @@ msgid ""
 "  -mlong                  use 32-bit int ABI\n"
 "  -mshort-double          use 32-bit double ABI\n"
 "  -mlong-double           use 64-bit double ABI (default)\n"
-"  --mxgate                specify the processor variant[default %s]\n"
+"  --mxgate                specify the processor variant [default %s]\n"
 "  --print-insn-syntax     print the syntax of instruction in case of error\n"
 "  --print-opcodes         print the list of instructions with syntax\n"
 "  --generate-example      generate an example of each instruction"
@@ -18192,7 +18371,7 @@ msgid "opcode %s not found in opcode hash table"
 msgstr ""
 
 #: config/tc-xgate.c:511
-msgid "matching operands to opcode "
+msgid "matching operands to opcode"
 msgstr ""
 
 #: config/tc-xgate.c:549
@@ -18330,7 +18509,7 @@ msgid "invalid auto-litpool-limit argument (range is 100-10000)"
 msgstr ""
 
 #: config/tc-xtensa.c:1190
-msgid "unmatched end directive"
+msgid "unmatched .end directive"
 msgstr ""
 
 #: config/tc-xtensa.c:1219
@@ -18733,103 +18912,103 @@ msgstr ""
 msgid "loop target does not follow loop instruction in section"
 msgstr ""
 
-#: config/tc-xtensa.c:9450
+#: config/tc-xtensa.c:9452
 msgid "bad relaxation state"
 msgstr ""
 
-#: config/tc-xtensa.c:9508
+#: config/tc-xtensa.c:9510
 #, c-format
 msgid "fr_var (%ld) < length (%d)"
 msgstr ""
 
-#: config/tc-xtensa.c:10244
+#: config/tc-xtensa.c:10256
 msgid "jump target out of range; no usable trampoline found"
 msgstr ""
 
-#: config/tc-xtensa.c:10368
+#: config/tc-xtensa.c:10380
 msgid "invalid relaxation fragment result"
 msgstr ""
 
-#: config/tc-xtensa.c:10450
+#: config/tc-xtensa.c:10462
 msgid "unable to widen instruction"
 msgstr ""
 
-#: config/tc-xtensa.c:10589
+#: config/tc-xtensa.c:10601
 msgid "multiple literals in expansion"
 msgstr ""
 
-#: config/tc-xtensa.c:10593
+#: config/tc-xtensa.c:10605
 msgid "no registered fragment for literal"
 msgstr ""
 
-#: config/tc-xtensa.c:10595
+#: config/tc-xtensa.c:10607
 msgid "number of literal tokens != 1"
 msgstr ""
 
-#: config/tc-xtensa.c:10724 config/tc-xtensa.c:10730
+#: config/tc-xtensa.c:10736 config/tc-xtensa.c:10742
 #, c-format
 msgid "unresolved loop target symbol: %s"
 msgstr ""
 
-#: config/tc-xtensa.c:10836
+#: config/tc-xtensa.c:10848
 #, c-format
 msgid "invalid expression evaluation type %d"
 msgstr ""
 
-#: config/tc-xtensa.c:10853
+#: config/tc-xtensa.c:10865
 msgid "loop too long for LOOP instruction"
 msgstr ""
 
-#: config/tc-xtensa.c:11177 config/tc-xtensa.c:11419
+#: config/tc-xtensa.c:11189 config/tc-xtensa.c:11431
 msgid ""
 "literal pool location required for text-section-literals; specify with ."
 "literal_position"
 msgstr ""
 
-#: config/tc-xtensa.c:11286
+#: config/tc-xtensa.c:11298
 #, c-format
 msgid "fixes not all moved from %s"
 msgstr ""
 
-#: config/tc-xtensa.c:12255
+#: config/tc-xtensa.c:12267
 msgid "too many operands in instruction"
 msgstr ""
 
-#: config/tc-xtensa.c:12465
+#: config/tc-xtensa.c:12477
 msgid "invalid symbolic operand"
 msgstr ""
 
-#: config/tc-xtensa.c:12526
+#: config/tc-xtensa.c:12538
 msgid "operand number mismatch"
 msgstr ""
 
-#: config/tc-xtensa.c:12530
+#: config/tc-xtensa.c:12542
 #, c-format
 msgid "cannot encode opcode \"%s\" in the given format \"%s\""
 msgstr ""
 
-#: config/tc-xtensa.c:12555
+#: config/tc-xtensa.c:12567
 #, c-format
 msgid "xtensa-isa failure: %s"
 msgstr ""
 
-#: config/tc-xtensa.c:12632
+#: config/tc-xtensa.c:12644
 msgid "invalid opcode"
 msgstr ""
 
-#: config/tc-xtensa.c:12638
+#: config/tc-xtensa.c:12650
 msgid "too few operands"
 msgstr ""
 
-#: config/tc-xtensa.c:12688
+#: config/tc-xtensa.c:12700
 msgid "multiple writes to the same register"
 msgstr ""
 
-#: config/tc-xtensa.c:12802 config/tc-xtensa.c:12808
+#: config/tc-xtensa.c:12814 config/tc-xtensa.c:12820
 msgid "out of memory"
 msgstr ""
 
-#: config/tc-xtensa.c:12897
+#: config/tc-xtensa.c:12909
 msgid "TLS relocation not allowed in FLIX bundle"
 msgstr ""
 
@@ -18837,33 +19016,33 @@ msgstr ""
 #. relaxed in the front-end.  If "record_fixup" is set, then this
 #. function is being called during back-end relaxation, so flag
 #. the unexpected behavior as an error.
-#: config/tc-xtensa.c:12903
+#: config/tc-xtensa.c:12915
 msgid "unexpected TLS relocation"
 msgstr ""
 
-#: config/tc-xtensa.c:12947
+#: config/tc-xtensa.c:12959
 msgid "symbolic operand not allowed"
 msgstr ""
 
-#: config/tc-xtensa.c:12984
+#: config/tc-xtensa.c:12996
 msgid "cannot decode instruction format"
 msgstr ""
 
-#: config/tc-xtensa.c:13128
+#: config/tc-xtensa.c:13140
 msgid "ignoring extra '-rename-section' delimiter ':'"
 msgstr ""
 
-#: config/tc-xtensa.c:13133
+#: config/tc-xtensa.c:13145
 #, c-format
 msgid "ignoring invalid '-rename-section' specification: '%s'"
 msgstr ""
 
-#: config/tc-xtensa.c:13144
+#: config/tc-xtensa.c:13156
 #, c-format
 msgid "section %s renamed multiple times"
 msgstr ""
 
-#: config/tc-xtensa.c:13146
+#: config/tc-xtensa.c:13158
 #, c-format
 msgid "multiple sections remapped to output section %s"
 msgstr ""
@@ -18906,17 +19085,12 @@ msgstr ""
 msgid "parentheses ignored"
 msgstr ""
 
-#: config/tc-z80.c:1951 read.c:3742
-#, c-format
-msgid "junk at end of line, first unrecognized character is `%c'"
-msgstr ""
-
 #: config/tc-z80.c:1977 config/tc-z8k.c:1467 config/tc-z8k.c:1530
 msgid "relative jump out of range"
 msgstr ""
 
 #: config/tc-z80.c:1994
-msgid "index offset  out of range"
+msgid "index offset out of range"
 msgstr ""
 
 #: config/tc-z80.c:2036 config/tc-z8k.c:1538
@@ -19063,16 +19237,11 @@ msgstr ""
 msgid "invalid configuration option '%s' in transition rule '%s'"
 msgstr ""
 
-#: config/xtensa-relax.c:1675
+#: config/xtensa-relax.c:1675 config/xtensa-relax.c:1685
 #, c-format
 msgid "opcode '%s': no bound opname '%s' for precondition in '%s'"
 msgstr ""
 
-#: config/xtensa-relax.c:1685
-#, c-format
-msgid "opcode '%s': no bound opname '%s' for precondition in %s"
-msgstr ""
-
 #: config/xtensa-relax.c:1692
 #, c-format
 msgid "opcode '%s': precondition only contains constants in '%s'"
@@ -19103,7 +19272,7 @@ msgstr ""
 
 #: config/xtensa-relax.c:1797 config/xtensa-relax.c:1827
 #, c-format
-msgid "opcode %s: unidentified operand '%s' in '%s'"
+msgid "opcode '%s': unidentified operand '%s' in '%s'"
 msgstr ""
 
 #: config/xtensa-relax.c:1822
@@ -19113,7 +19282,7 @@ msgstr ""
 
 #: config/xtensa-relax.c:1833
 #, c-format
-msgid "opcode %s: could not parse operand '%s' in '%s'"
+msgid "opcode '%s': could not parse operand '%s' in '%s'"
 msgstr ""
 
 #: config/xtensa-relax.c:1873
@@ -19141,119 +19310,119 @@ msgstr ""
 msgid "can't close `%s'"
 msgstr ""
 
-#: dw2gencfi.c:318 read.c:2440
+#: dw2gencfi.c:319 read.c:2440
 #, c-format
 msgid "bfd_set_section_flags: %s"
 msgstr ""
 
-#: dw2gencfi.c:600 dw2gencfi.c:616
+#: dw2gencfi.c:601 dw2gencfi.c:617
 #, c-format
 msgid "register save offset not a multiple of %u"
 msgstr ""
 
-#: dw2gencfi.c:699
+#: dw2gencfi.c:700
 msgid "CFI state restore without previous remember"
 msgstr ""
 
-#: dw2gencfi.c:757
+#: dw2gencfi.c:758
 msgid "missing separator"
 msgstr ""
 
-#: dw2gencfi.c:806
+#: dw2gencfi.c:807
 msgid "bad register expression"
 msgstr ""
 
-#: dw2gencfi.c:827 dw2gencfi.c:957 dw2gencfi.c:995 dw2gencfi.c:1066
-#: dw2gencfi.c:1139 dw2gencfi.c:1374
+#: dw2gencfi.c:828 dw2gencfi.c:958 dw2gencfi.c:996 dw2gencfi.c:1067
+#: dw2gencfi.c:1140 dw2gencfi.c:1378
 msgid "CFI instruction used without previous .cfi_startproc"
 msgstr ""
 
-#: dw2gencfi.c:1020
+#: dw2gencfi.c:1021
 msgid "invalid or unsupported encoding in .cfi_personality"
 msgstr ""
 
-#: dw2gencfi.c:1027
+#: dw2gencfi.c:1028
 msgid ".cfi_personality requires encoding and symbol arguments"
 msgstr ""
 
-#: dw2gencfi.c:1050
+#: dw2gencfi.c:1051
 msgid "wrong second argument to .cfi_personality"
 msgstr ""
 
-#: dw2gencfi.c:1091 dw2gencfi.c:1167
+#: dw2gencfi.c:1092 dw2gencfi.c:1168
 msgid "invalid or unsupported encoding in .cfi_lsda"
 msgstr ""
 
-#: dw2gencfi.c:1098
+#: dw2gencfi.c:1099
 msgid ".cfi_lsda requires encoding and symbol arguments"
 msgstr ""
 
-#: dw2gencfi.c:1123
+#: dw2gencfi.c:1124
 msgid "wrong second argument to .cfi_lsda"
 msgstr ""
 
-#: dw2gencfi.c:1189
+#: dw2gencfi.c:1190
 msgid "wrong third argument to .cfi_val_encoded_addr"
 msgstr ""
 
-#: dw2gencfi.c:1276
+#: dw2gencfi.c:1280
 msgid "inconsistent uses of .cfi_sections"
 msgstr ""
 
-#: dw2gencfi.c:1287
+#: dw2gencfi.c:1291
 msgid "previous CFI entry not closed (missing .cfi_endproc)"
 msgstr ""
 
-#: dw2gencfi.c:1328
+#: dw2gencfi.c:1332
 msgid ".cfi_endproc without corresponding .cfi_startproc"
 msgstr ""
 
-#: dw2gencfi.c:1385
+#: dw2gencfi.c:1389
 msgid "wrong argument to .cfi_personality_id"
 msgstr ""
 
-#: dw2gencfi.c:1395
+#: dw2gencfi.c:1399
 msgid ".cfi_fde_data without corresponding .cfi_startproc"
 msgstr ""
 
-#: dw2gencfi.c:1504
+#: dw2gencfi.c:1508
 msgid "unexpected .cfi_inline_lsda"
 msgstr ""
 
-#: dw2gencfi.c:1511
+#: dw2gencfi.c:1515
 msgid ".cfi_inline_lsda not valid for this frame"
 msgstr ""
 
-#: dw2gencfi.c:1519
+#: dw2gencfi.c:1523
 msgid ".cfi_inline_lsda seen for frame without .cfi_lsda"
 msgstr ""
 
-#: dw2gencfi.c:1532
+#: dw2gencfi.c:1536
 #, c-format
 msgid "Alignment too large: %d. assumed."
 msgstr ""
 
-#: dw2gencfi.c:1536
+#: dw2gencfi.c:1540
 msgid "Alignment negative: 0 assumed."
 msgstr ""
 
-#: dw2gencfi.c:1562
+#: dw2gencfi.c:1566
 msgid ".cfi_inline_lsda is not supported for this target"
 msgstr ""
 
-#: dw2gencfi.c:1569
+#: dw2gencfi.c:1573
 msgid ".cfi_fde_data is not supported for this target"
 msgstr ""
 
-#: dw2gencfi.c:1576
+#: dw2gencfi.c:1580
 msgid ".cfi_personality_id is not supported for this target"
 msgstr ""
 
-#: dw2gencfi.c:2351 dw2gencfi.c:2506
+#: dw2gencfi.c:2356 dw2gencfi.c:2512
 msgid "open CFI at the end of file; missing .cfi_endproc directive"
 msgstr ""
 
-#: dw2gencfi.c:2532
+#: dw2gencfi.c:2539
 msgid "CFI is not supported for this target"
 msgstr ""
 
@@ -19303,7 +19472,7 @@ msgid "inserting \"%s\" into string hash table: %s"
 msgstr ""
 
 #: ecoff.c:1616 ecoff.c:1809 ecoff.c:1832 ecoff.c:1863 ecoff.c:2016
-#: ecoff.c:2127
+#: ecoff.c:2135
 msgid "no current file pointer"
 msgstr ""
 
@@ -19316,161 +19485,166 @@ msgstr ""
 msgid "inserting \"%s\" into tag hash table: %s"
 msgstr ""
 
-#: ecoff.c:2200
+#: ecoff.c:2204
 msgid "fake .file after real one"
 msgstr ""
 
-#: ecoff.c:2289
+#: ecoff.c:2293
 msgid "filename goes over one page boundary"
 msgstr ""
 
-#: ecoff.c:2422
+#: ecoff.c:2426
 msgid ".begin directive without a preceding .file directive"
 msgstr ""
 
-#: ecoff.c:2429
+#: ecoff.c:2433
 msgid ".begin directive without a preceding .ent directive"
 msgstr ""
 
-#: ecoff.c:2459
+#: ecoff.c:2463
 msgid ".bend directive without a preceding .file directive"
 msgstr ""
 
-#: ecoff.c:2466
+#: ecoff.c:2470
 msgid ".bend directive without a preceding .ent directive"
 msgstr ""
 
-#: ecoff.c:2478
+#: ecoff.c:2482
 msgid ".bend directive names unknown symbol"
 msgstr ""
 
-#: ecoff.c:2520
+#: ecoff.c:2524
 msgid ".def pseudo-op used inside of .def/.endef; ignored"
 msgstr ""
 
-#: ecoff.c:2522
+#: ecoff.c:2526
 msgid "empty symbol name in .def; ignored"
 msgstr ""
 
-#: ecoff.c:2559
+#: ecoff.c:2563
 msgid ".dim pseudo-op used outside of .def/.endef; ignored"
 msgstr ""
 
-#: ecoff.c:2574
+#: ecoff.c:2578
 msgid "badly formed .dim directive"
 msgstr ""
 
-#: ecoff.c:2587
+#: ecoff.c:2591
 msgid "too many .dim entries"
 msgstr ""
 
-#: ecoff.c:2607
+#: ecoff.c:2611
 msgid ".scl pseudo-op used outside of .def/.endef; ignored"
 msgstr ""
 
-#: ecoff.c:2632
+#: ecoff.c:2636
 msgid ".size pseudo-op used outside of .def/.endef; ignored"
 msgstr ""
 
-#: ecoff.c:2647
+#: ecoff.c:2651
 msgid "badly formed .size directive"
 msgstr ""
 
-#: ecoff.c:2660
+#: ecoff.c:2664
 msgid "too many .size entries"
 msgstr ""
 
-#: ecoff.c:2682
+#: ecoff.c:2686
 msgid ".type pseudo-op used outside of .def/.endef; ignored"
 msgstr ""
 
 #. FIXME: We could handle this by setting the continued bit.
 #. There would still be a limit: the .type argument can not
 #. be infinite.
-#: ecoff.c:2700
+#: ecoff.c:2704
 #, c-format
 msgid "the type of %s is too complex; it will be simplified"
 msgstr ""
 
-#: ecoff.c:2711
+#: ecoff.c:2715
 msgid "Unrecognized .type argument"
 msgstr ""
 
-#: ecoff.c:2749
+#: ecoff.c:2753
 msgid ".tag pseudo-op used outside of .def/.endef; ignored"
 msgstr ""
 
-#: ecoff.c:2773
+#: ecoff.c:2777
 msgid ".val pseudo-op used outside of .def/.endef; ignored"
 msgstr ""
 
-#: ecoff.c:2781
+#: ecoff.c:2785
 msgid ".val expression is too complex"
 msgstr ""
 
-#: ecoff.c:2811
+#: ecoff.c:2815
 msgid ".endef pseudo-op used before .def; ignored"
 msgstr ""
 
-#: ecoff.c:2837 ecoff.c:2918
+#: ecoff.c:2841 ecoff.c:2922
 msgid "bad COFF debugging information"
 msgstr ""
 
-#: ecoff.c:2886
+#: ecoff.c:2890
 #, c-format
 msgid "no tag specified for %s"
 msgstr ""
 
-#: ecoff.c:2988
+#: ecoff.c:2992
 msgid ".end directive without a preceding .file directive"
 msgstr ""
 
-#: ecoff.c:3016
+#: ecoff.c:3020
 msgid ".end directive names unknown symbol"
 msgstr ""
 
-#: ecoff.c:3043
+#: ecoff.c:3051
 msgid "second .ent directive found before .end directive"
 msgstr ""
 
-#: ecoff.c:3113
+#: ecoff.c:3060
+#, c-format
+msgid "%s directive has no name"
+msgstr ""
+
+#: ecoff.c:3121
 msgid "no way to handle .file within .ent/.end section"
 msgstr ""
 
-#: ecoff.c:3230
+#: ecoff.c:3238
 msgid ".loc before .file"
 msgstr ""
 
-#: ecoff.c:3432
+#: ecoff.c:3440
 #, c-format
 msgid ".stab%c is not supported"
 msgstr ""
 
-#: ecoff.c:3442
+#: ecoff.c:3450
 #, c-format
 msgid ".stab%c: ignoring non-zero other field"
 msgstr ""
 
-#: ecoff.c:3476
+#: ecoff.c:3484
 #, c-format
 msgid ""
 "line number (%d) for .stab%c directive cannot fit in index field (20 bits)"
 msgstr ""
 
-#: ecoff.c:3510
+#: ecoff.c:3518
 #, c-format
 msgid "illegal .stab%c directive, bad character"
 msgstr ""
 
-#: ecoff.c:3969 ecoff.c:4158 ecoff.c:4183
+#: ecoff.c:3977 ecoff.c:4166 ecoff.c:4191
 msgid ".begin/.bend in different segments"
 msgstr ""
 
-#: ecoff.c:4679
+#: ecoff.c:4687
 msgid "missing .end or .bend at end of file"
 msgstr ""
 
-#: ecoff.c:5164
+#: ecoff.c:5172
 msgid "GP prologue size exceeds field size, using 0 instead"
 msgstr ""
 
@@ -19531,48 +19705,48 @@ msgstr ""
 msgid "Unary operator %c ignored because bad operand follows"
 msgstr ""
 
-#: expr.c:1158 expr.c:1179
+#: expr.c:1162 expr.c:1193
 msgid "syntax error in .startof. or .sizeof."
 msgstr ""
 
-#: expr.c:1260 expr.c:1618
+#: expr.c:1274 expr.c:1640
 #, c-format
 msgid "invalid use of operator \"%s\""
 msgstr ""
 
-#: expr.c:1802
+#: expr.c:1824
 msgid "missing operand; zero assumed"
 msgstr ""
 
-#: expr.c:1841
+#: expr.c:1863
 msgid "left operand is a bignum; integer 0 assumed"
 msgstr ""
 
-#: expr.c:1843
+#: expr.c:1865
 msgid "left operand is a float; integer 0 assumed"
 msgstr ""
 
-#: expr.c:1852
+#: expr.c:1874
 msgid "right operand is a bignum; integer 0 assumed"
 msgstr ""
 
-#: expr.c:1854
+#: expr.c:1876
 msgid "right operand is a float; integer 0 assumed"
 msgstr ""
 
-#: expr.c:1925 symbols.c:1395
+#: expr.c:1947 symbols.c:1395
 msgid "division by zero"
 msgstr ""
 
-#: expr.c:1931
+#: expr.c:1953
 msgid "shift count"
 msgstr ""
 
-#: expr.c:2052
+#: expr.c:2074
 msgid "operation combines symbols in different segments"
 msgstr ""
 
-#: expr.c:2373
+#: expr.c:2395
 msgid "missing closing '\"'"
 msgstr ""
 
@@ -19629,11 +19803,11 @@ msgstr ""
 msgid "Unable to allocate memory for new instructions\n"
 msgstr ""
 
-#: listing.c:253 messages.c:154 messages.c:156 messages.c:159
+#: listing.c:253 messages.c:165 messages.c:167 messages.c:170
 msgid "Warning: "
 msgstr ""
 
-#: listing.c:259 messages.c:219 messages.c:221 messages.c:224
+#: listing.c:259 messages.c:230 messages.c:232 messages.c:235
 msgid "Error: "
 msgstr ""
 
@@ -19802,7 +19976,7 @@ msgstr ""
 
 #: macro.c:1304
 #, c-format
-msgid "Attempt to purge non-existant macro `%s'"
+msgid "Attempt to purge non-existing macro `%s'"
 msgstr ""
 
 #: macro.c:1324
@@ -19813,58 +19987,48 @@ msgstr ""
 msgid "missing model parameter"
 msgstr ""
 
-#: messages.c:80
+#: messages.c:91
 #, c-format
 msgid "Assembler messages:\n"
 msgstr ""
 
-#: messages.c:278
+#: messages.c:289
 #, c-format
 msgid "Fatal error: "
 msgstr ""
 
-#: messages.c:296
+#: messages.c:310
 #, c-format
-msgid "Internal error!\n"
+msgid "Internal error (%s).\n"
 msgstr ""
 
-#: messages.c:298
+#: messages.c:312
 #, c-format
-msgid "Assertion failure in %s at %s:%d.\n"
-msgstr ""
-
-#: messages.c:301
-#, c-format
-msgid "Assertion failure at %s:%d.\n"
-msgstr ""
-
-#: messages.c:302 messages.c:319
-#, c-format
-msgid "Please report this bug.\n"
+msgid "Internal error in %s at %s:%d.\n"
 msgstr ""
 
 #: messages.c:314
 #, c-format
-msgid "Internal error, aborting at %s:%d in %s\n"
+msgid "Internal error at %s:%d.\n"
 msgstr ""
 
-#: messages.c:317
+#: messages.c:316
 #, c-format
-msgid "Internal error, aborting at %s:%d\n"
+msgid "Please report this bug.\n"
 msgstr ""
 
-#: messages.c:366
+#: messages.c:400
 #, c-format
 msgid "%s out of domain (%d is not a multiple of %d)"
 msgstr ""
 
-#: messages.c:384
+#: messages.c:418
 #, c-format
 msgid "%s out of range (%d is not between %d and %d)"
 msgstr ""
 
 #. xgettext:c-format.
-#: messages.c:407
+#: messages.c:441
 #, c-format
 msgid "%s out of range (0x%s is not between 0x%s and 0x%s)"
 msgstr ""
@@ -20216,115 +20380,115 @@ msgstr ""
 msgid "attempt to store float in section `%s'"
 msgstr ""
 
-#: read.c:5392
+#: read.c:5400
 #, c-format
 msgid "attempt to store non-empty string in section `%s'"
 msgstr ""
 
-#: read.c:5454
+#: read.c:5462
 msgid "strings must be placed into a section"
 msgstr ""
 
-#: read.c:5517
+#: read.c:5525
 msgid "expected <nn>"
 msgstr ""
 
 #. To be compatible with BSD 4.2 as: give the luser a linefeed!!
-#: read.c:5556 read.c:5642
+#: read.c:5564 read.c:5650
 msgid "unterminated string; newline inserted"
 msgstr ""
 
-#: read.c:5656
+#: read.c:5664
 msgid "bad escaped character in string"
 msgstr ""
 
-#: read.c:5681
+#: read.c:5689
 msgid "expected address expression"
 msgstr ""
 
-#: read.c:5700
+#: read.c:5708
 #, c-format
 msgid "symbol \"%s\" undefined; zero assumed"
 msgstr ""
 
-#: read.c:5703
+#: read.c:5711
 msgid "some symbol undefined; zero assumed"
 msgstr ""
 
-#: read.c:5738
+#: read.c:5746
 msgid "this string may not contain '\\0'"
 msgstr ""
 
-#: read.c:5774
+#: read.c:5782
 msgid "missing string"
 msgstr ""
 
-#: read.c:5865
+#: read.c:5873
 #, c-format
 msgid ".incbin count zero, ignoring `%s'"
 msgstr ""
 
-#: read.c:5891
+#: read.c:5899
 #, c-format
 msgid "file not found: %s"
 msgstr ""
 
-#: read.c:5905
+#: read.c:5913
 #, c-format
 msgid "seek to end of .incbin file failed `%s'"
 msgstr ""
 
-#: read.c:5916
+#: read.c:5924
 #, c-format
 msgid "skip (%ld) or count (%ld) invalid for file size (%ld)"
 msgstr ""
 
-#: read.c:5923
+#: read.c:5931
 #, c-format
 msgid "could not skip to %ld in file `%s'"
 msgstr ""
 
-#: read.c:5932
+#: read.c:5940
 #, c-format
 msgid "truncated file `%s', %ld of %ld bytes read"
 msgstr ""
 
-#: read.c:6090
+#: read.c:6098
 msgid "missing .func"
 msgstr ""
 
-#: read.c:6107
+#: read.c:6115
 msgid ".endfunc missing for previous .func"
 msgstr ""
 
-#: read.c:6166
+#: read.c:6174
 #, c-format
 msgid ".bundle_align_mode alignment too large (maximum %u)"
 msgstr ""
 
-#: read.c:6171
+#: read.c:6179
 msgid "cannot change .bundle_align_mode inside .bundle_lock"
 msgstr ""
 
-#: read.c:6185
+#: read.c:6193
 msgid ".bundle_lock is meaningless without .bundle_align_mode"
 msgstr ""
 
-#: read.c:6206
+#: read.c:6214
 msgid ".bundle_unlock without preceding .bundle_lock"
 msgstr ""
 
-#: read.c:6219
+#: read.c:6227
 #, c-format
 msgid ".bundle_lock sequence is %u bytes, but bundle size only %u"
 msgstr ""
 
-#: read.c:6317
+#: read.c:6325
 #, c-format
 msgid "missing closing `%c'"
 msgstr ""
 
-#: read.c:6319
+#: read.c:6327
 msgid "stray `\\'"
 msgstr ""
 
@@ -20542,19 +20706,19 @@ msgstr ""
 msgid "padding added"
 msgstr ""
 
-#: write.c:2721
+#: write.c:2722
 msgid "attempt to move .org backwards"
 msgstr ""
 
-#: write.c:2745
+#: write.c:2746
 msgid ".space specifies non-absolute value"
 msgstr ""
 
-#: write.c:2760
+#: write.c:2761
 msgid ".space or .fill with negative value, ignored"
 msgstr ""
 
-#: write.c:2831
+#: write.c:2832
 #, c-format
 msgid ""
 "Infinite loop encountered whilst attempting to compute the addresses of "
diff --git a/gas/testsuite/gas/wasm32/allinsn.d b/gas/testsuite/gas/wasm32/allinsn.d
new file mode 100644 (file)
index 0000000..06124be
--- /dev/null
@@ -0,0 +1,198 @@
+#as:
+#objdump: -d
+#name: allinsn
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:  02 40                   block\[\]
+   2:  0c 00                   br 0
+   4:  0d 00                   br_if 0
+   6:  0e 01 01 01             br_table 1 1
+   a:  10 00                   call 0x0
+   c:  11 00 00                call_indirect 0 0
+   f:  1a                      drop
+  10:  05                      else
+  11:  0b                      end
+  12:  8b                      f32.abs
+  13:  92                      f32.add
+  14:  8d                      f32.ceil
+  15:  43 d0 0f 49             f32.const 3.141590118408203125
+  19:  40 
+  1a:  b2                      f32.convert_s_i32
+  1b:  b4                      f32.convert_s_i64
+  1c:  b3                      f32.convert_u_i32
+  1d:  b5                      f32.convert_u_i64
+  1e:  98                      f32.copysign
+  1f:  b6                      f32.demote_f64
+  20:  95                      f32.div
+  21:  5b                      f32.eq
+  22:  8e                      f32.floor
+  23:  60                      f32.ge
+  24:  5e                      f32.gt
+  25:  5f                      f32.le
+  26:  2a 00 00                f32.load a=0 0
+  29:  5d                      f32.lt
+  2a:  97                      f32.max
+  2b:  96                      f32.min
+  2c:  94                      f32.mul
+  2d:  5c                      f32.ne
+  2e:  90                      f32.nearest
+  2f:  8c                      f32.neg
+  30:  be                      f32.reinterpret_i32
+  31:  91                      f32.sqrt
+  32:  38 00 00                f32.store a=0 0
+  35:  93                      f32.sub
+  36:  8f                      f32.trunc
+  37:  99                      f64.abs
+  38:  a0                      f64.add
+  39:  9b                      f64.ceil
+  3a:  44 97 5f 4f             f64.const 3.14158999999999976088e\+200
+  3e:  fd bc 6a 90 
+  42:  69 
+  43:  b7                      f64.convert_s_i32
+  44:  b9                      f64.convert_s_i64
+  45:  b8                      f64.convert_u_i32
+  46:  ba                      f64.convert_u_i64
+  47:  a6                      f64.copysign
+  48:  a3                      f64.div
+  49:  61                      f64.eq
+  4a:  9c                      f64.floor
+  4b:  66                      f64.ge
+  4c:  64                      f64.gt
+  4d:  65                      f64.le
+  4e:  2b 00 00                f64.load a=0 0
+  51:  63                      f64.lt
+  52:  a5                      f64.max
+  53:  a4                      f64.min
+  54:  a2                      f64.mul
+  55:  62                      f64.ne
+  56:  9e                      f64.nearest
+  57:  9a                      f64.neg
+  58:  bb                      f64.promote_f32
+  59:  bf                      f64.reinterpret_i64
+  5a:  9f                      f64.sqrt
+  5b:  39 00 00                f64.store a=0 0
+  5e:  a1                      f64.sub
+  5f:  9d                      f64.trunc
+  60:  23 00                   get_global 0 <\$got>
+  62:  20 00                   get_local 0 <\$dpc>
+  64:  6a                      i32.add
+  65:  71                      i32.and
+  66:  67                      i32.clz
+  67:  41 ef fd b6             i32.const 3735928559
+  6b:  f5 0d 
+  6d:  68                      i32.ctz
+  6e:  6d                      i32.div_s
+  6f:  6e                      i32.div_u
+  70:  46                      i32.eq
+  71:  45                      i32.eqz
+  72:  4e                      i32.ge_s
+  73:  4f                      i32.ge_u
+  74:  4a                      i32.gt_s
+  75:  4b                      i32.gt_u
+  76:  4c                      i32.le_s
+  77:  4d                      i32.le_u
+  78:  28 00 00                i32.load a=0 0
+  7b:  2e 00 00                i32.load16_s a=0 0
+  7e:  2f 00 00                i32.load16_u a=0 0
+  81:  2c 00 00                i32.load8_s a=0 0
+  84:  2d 00 00                i32.load8_u a=0 0
+  87:  48                      i32.lt_s
+  88:  49                      i32.lt_u
+  89:  6c                      i32.mul
+  8a:  47                      i32.ne
+  8b:  72                      i32.or
+  8c:  69                      i32.popcnt
+  8d:  bc                      i32.reinterpret_f32
+  8e:  6f                      i32.rem_s
+  8f:  70                      i32.rem_u
+  90:  77                      i32.rotl
+  91:  78                      i32.rotr
+  92:  74                      i32.shl
+  93:  75                      i32.shr_s
+  94:  76                      i32.shr_u
+  95:  36 00 00                i32.store a=0 0
+  98:  3b 00 00                i32.store16 a=0 0
+  9b:  3a 00 00                i32.store8 a=0 0
+  9e:  6b                      i32.sub
+  9f:  a8                      i32.trunc_s_f32
+  a0:  aa                      i32.trunc_s_f64
+  a1:  a9                      i32.trunc_u_f32
+  a2:  ab                      i32.trunc_u_f64
+  a3:  a7                      i32.wrap_i64
+  a4:  73                      i32.xor
+  a5:  7c                      i64.add
+  a6:  83                      i64.and
+  a7:  79                      i64.clz
+  a8:  42 ef fd b6             i64.const -2401053088876216593
+  ac:  f5 fd dd ef 
+  b0:  d6 5e 
+  b2:  7a                      i64.ctz
+  b3:  7f                      i64.div_s
+  b4:  80                      i64.div_u
+  b5:  51                      i64.eq
+  b6:  50                      i64.eqz
+  b7:  ac                      i64.extend_s_i32
+  b8:  ad                      i64.extend_u_i32
+  b9:  59                      i64.ge_s
+  ba:  5a                      i64.ge_u
+  bb:  55                      i64.gt_s
+  bc:  56                      i64.gt_u
+  bd:  57                      i64.le_s
+  be:  58                      i64.le_u
+  bf:  29 00 00                i64.load a=0 0
+  c2:  32 00 00                i64.load16_s a=0 0
+  c5:  33 00 00                i64.load16_u a=0 0
+  c8:  34 00 00                i64.load32_s a=0 0
+  cb:  35 00 00                i64.load32_u a=0 0
+  ce:  30 00 00                i64.load8_s a=0 0
+  d1:  31 00 00                i64.load8_u a=0 0
+  d4:  53                      i64.lt_s
+  d5:  54                      i64.lt_u
+  d6:  7e                      i64.mul
+  d7:  52                      i64.ne
+  d8:  84                      i64.or
+  d9:  7b                      i64.popcnt
+  da:  bd                      i64.reinterpret_f64
+  db:  81                      i64.rem_s
+  dc:  82                      i64.rem_u
+  dd:  89                      i64.rotl
+  de:  8a                      i64.rotr
+  df:  86                      i64.shl
+  e0:  87                      i64.shr_s
+  e1:  88                      i64.shr_u
+  e2:  37 00 00                i64.store a=0 0
+  e5:  3d 00 00                i64.store16 a=0 0
+  e8:  3e 00 00                i64.store32 a=0 0
+  eb:  3c 00 00                i64.store8 a=0 0
+  ee:  7d                      i64.sub
+  ef:  ae                      i64.trunc_s_f32
+  f0:  b0                      i64.trunc_s_f64
+  f1:  af                      i64.trunc_u_f32
+  f2:  b1                      i64.trunc_u_f64
+  f3:  85                      i64.xor
+  f4:  04 7f                   if\[i\]
+  f6:  03 7e                   loop\[l\]
+  f8:  01                      nop
+  f9:  0f                      return
+  fa:  1b                      select
+  fb:  24 00                   set_global 0 <\$got>
+  fd:  21 00                   set_local 0 <\$dpc>
+  ff:  60                      f32.ge
+ 100:  08                      .byte 08
+
+ 101:  7f                      i64.div_s
+ 102:  7e                      i64.mul
+ 103:  7c                      i64.add
+ 104:  7d                      i64.sub
+ 105:  7d                      i64.sub
+ 106:  7c                      i64.add
+ 107:  7e                      i64.mul
+ 108:  7f                      i64.div_s
+ 109:  00                      unreachable
+ 10a:  22 00                   tee_local 0 <\$dpc>
+       ...
diff --git a/gas/testsuite/gas/wasm32/allinsn.s b/gas/testsuite/gas/wasm32/allinsn.s
new file mode 100644 (file)
index 0000000..c2714b3
--- /dev/null
@@ -0,0 +1,171 @@
+       block[]
+       br 0
+       br_if 0
+       br_table 1 1 1
+       call 0
+       call_indirect 0 0
+       drop
+       else
+       end
+       f32.abs
+       f32.add
+       f32.ceil
+       f32.const 3.14159
+       f32.convert_s/i32
+       f32.convert_s/i64
+       f32.convert_u/i32
+       f32.convert_u/i64
+       f32.copysign
+       f32.demote/f64
+       f32.div
+       f32.eq
+       f32.floor
+       f32.ge
+       f32.gt
+       f32.le
+       f32.load a=0 0
+       f32.lt
+       f32.max
+       f32.min
+       f32.mul
+       f32.ne
+       f32.nearest
+       f32.neg
+       f32.reinterpret/i32
+       f32.sqrt
+       f32.store a=0 0
+       f32.sub
+       f32.trunc
+       f64.abs
+       f64.add
+       f64.ceil
+       f64.const 3.14159e200
+       f64.convert_s/i32
+       f64.convert_s/i64
+       f64.convert_u/i32
+       f64.convert_u/i64
+       f64.copysign
+       f64.div
+       f64.eq
+       f64.floor
+       f64.ge
+       f64.gt
+       f64.le
+       f64.load a=0 0
+       f64.lt
+       f64.max
+       f64.min
+       f64.mul
+       f64.ne
+       f64.nearest
+       f64.neg
+       f64.promote/f32
+       f64.reinterpret/i64
+       f64.sqrt
+       f64.store a=0 0
+       f64.sub
+       f64.trunc
+       get_global 0
+       get_local 0
+       i32.add
+       i32.and
+       i32.clz
+       i32.const 0xdeadbeef
+       i32.ctz
+       i32.div_s
+       i32.div_u
+       i32.eq
+       i32.eqz
+       i32.ge_s
+       i32.ge_u
+       i32.gt_s
+       i32.gt_u
+       i32.le_s
+       i32.le_u
+       i32.load a=0 0
+       i32.load16_s a=0 0
+       i32.load16_u a=0 0
+       i32.load8_s a=0 0
+       i32.load8_u a=0 0
+       i32.lt_s
+       i32.lt_u
+       i32.mul
+       i32.ne
+       i32.or
+       i32.popcnt
+       i32.reinterpret/f32
+       i32.rem_s
+       i32.rem_u
+       i32.rotl
+       i32.rotr
+       i32.shl
+       i32.shr_s
+       i32.shr_u
+       i32.store a=0 0
+       i32.store16 a=0 0
+       i32.store8 a=0 0
+       i32.sub
+       i32.trunc_s/f32
+       i32.trunc_s/f64
+       i32.trunc_u/f32
+       i32.trunc_u/f64
+       i32.wrap/i64
+       i32.xor
+       i64.add
+       i64.and
+       i64.clz
+       i64.const 0xdeadbeefdeadbeef
+       i64.ctz
+       i64.div_s
+       i64.div_u
+       i64.eq
+       i64.eqz
+       i64.extend_s/i32
+       i64.extend_u/i32
+       i64.ge_s
+       i64.ge_u
+       i64.gt_s
+       i64.gt_u
+       i64.le_s
+       i64.le_u
+       i64.load a=0 0
+       i64.load16_s a=0 0
+       i64.load16_u a=0 0
+       i64.load32_s a=0 0
+       i64.load32_u a=0 0
+       i64.load8_s a=0 0
+       i64.load8_u a=0 0
+       i64.lt_s
+       i64.lt_u
+       i64.mul
+       i64.ne
+       i64.or
+       i64.popcnt
+       i64.reinterpret/f64
+       i64.rem_s
+       i64.rem_u
+       i64.rotl
+       i64.rotr
+       i64.shl
+       i64.shr_s
+       i64.shr_u
+       i64.store a=0 0
+       i64.store16 a=0 0
+       i64.store32 a=0 0
+       i64.store8 a=0 0
+       i64.sub
+       i64.trunc_s/f32
+       i64.trunc_s/f64
+       i64.trunc_u/f32
+       i64.trunc_u/f64
+       i64.xor
+       if[i]
+       loop[l]
+       nop
+       return
+       select
+       set_global 0
+       set_local 0
+        signature FvildffdliE
+       tee_local 0
+       unreachable
diff --git a/gas/testsuite/gas/wasm32/illegal-10.l b/gas/testsuite/gas/wasm32/illegal-10.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal-10.s b/gas/testsuite/gas/wasm32/illegal-10.s
new file mode 100644 (file)
index 0000000..201d3ae
--- /dev/null
@@ -0,0 +1 @@
+        br_if -2
diff --git a/gas/testsuite/gas/wasm32/illegal-11.l b/gas/testsuite/gas/wasm32/illegal-11.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal-11.s b/gas/testsuite/gas/wasm32/illegal-11.s
new file mode 100644 (file)
index 0000000..d08f159
--- /dev/null
@@ -0,0 +1 @@
+        br_table 0 0 0
diff --git a/gas/testsuite/gas/wasm32/illegal-12.l b/gas/testsuite/gas/wasm32/illegal-12.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal-12.s b/gas/testsuite/gas/wasm32/illegal-12.s
new file mode 100644 (file)
index 0000000..58a6a9e
--- /dev/null
@@ -0,0 +1 @@
+        br_table 0 1 2
diff --git a/gas/testsuite/gas/wasm32/illegal-13.l b/gas/testsuite/gas/wasm32/illegal-13.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal-13.s b/gas/testsuite/gas/wasm32/illegal-13.s
new file mode 100644 (file)
index 0000000..1bfe729
--- /dev/null
@@ -0,0 +1 @@
+        br_table 2 0
diff --git a/gas/testsuite/gas/wasm32/illegal-14.l b/gas/testsuite/gas/wasm32/illegal-14.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal-14.s b/gas/testsuite/gas/wasm32/illegal-14.s
new file mode 100644 (file)
index 0000000..ef458f1
--- /dev/null
@@ -0,0 +1 @@
+        br_table
diff --git a/gas/testsuite/gas/wasm32/illegal-15.l b/gas/testsuite/gas/wasm32/illegal-15.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal-15.s b/gas/testsuite/gas/wasm32/illegal-15.s
new file mode 100644 (file)
index 0000000..8a79ff3
--- /dev/null
@@ -0,0 +1 @@
+        br_table[i]
diff --git a/gas/testsuite/gas/wasm32/illegal-16.l b/gas/testsuite/gas/wasm32/illegal-16.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal-16.s b/gas/testsuite/gas/wasm32/illegal-16.s
new file mode 100644 (file)
index 0000000..d32b771
--- /dev/null
@@ -0,0 +1 @@
+        call 0 1
diff --git a/gas/testsuite/gas/wasm32/illegal-17.l b/gas/testsuite/gas/wasm32/illegal-17.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal-17.s b/gas/testsuite/gas/wasm32/illegal-17.s
new file mode 100644 (file)
index 0000000..ec2d050
--- /dev/null
@@ -0,0 +1 @@
+        call[i] 0
diff --git a/gas/testsuite/gas/wasm32/illegal-18.l b/gas/testsuite/gas/wasm32/illegal-18.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal-18.s b/gas/testsuite/gas/wasm32/illegal-18.s
new file mode 100644 (file)
index 0000000..32fbe67
--- /dev/null
@@ -0,0 +1 @@
+        drop 3
diff --git a/gas/testsuite/gas/wasm32/illegal-19.l b/gas/testsuite/gas/wasm32/illegal-19.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal-19.s b/gas/testsuite/gas/wasm32/illegal-19.s
new file mode 100644 (file)
index 0000000..9a80193
--- /dev/null
@@ -0,0 +1 @@
+        else[i]
diff --git a/gas/testsuite/gas/wasm32/illegal-2.l b/gas/testsuite/gas/wasm32/illegal-2.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal-2.s b/gas/testsuite/gas/wasm32/illegal-2.s
new file mode 100644 (file)
index 0000000..584c467
--- /dev/null
@@ -0,0 +1 @@
+       block[ii]
diff --git a/gas/testsuite/gas/wasm32/illegal-20.l b/gas/testsuite/gas/wasm32/illegal-20.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal-20.s b/gas/testsuite/gas/wasm32/illegal-20.s
new file mode 100644 (file)
index 0000000..39d4d4c
--- /dev/null
@@ -0,0 +1 @@
+        end[i]
diff --git a/gas/testsuite/gas/wasm32/illegal-21.l b/gas/testsuite/gas/wasm32/illegal-21.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal-21.s b/gas/testsuite/gas/wasm32/illegal-21.s
new file mode 100644 (file)
index 0000000..d51ac99
--- /dev/null
@@ -0,0 +1 @@
+        f32.abs 0
diff --git a/gas/testsuite/gas/wasm32/illegal-22.l b/gas/testsuite/gas/wasm32/illegal-22.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal-24.l b/gas/testsuite/gas/wasm32/illegal-24.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal-24.s b/gas/testsuite/gas/wasm32/illegal-24.s
new file mode 100644 (file)
index 0000000..db6d201
--- /dev/null
@@ -0,0 +1 @@
+        f32.demote_f32
diff --git a/gas/testsuite/gas/wasm32/illegal-25.l b/gas/testsuite/gas/wasm32/illegal-25.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal-25.s b/gas/testsuite/gas/wasm32/illegal-25.s
new file mode 100644 (file)
index 0000000..b956386
--- /dev/null
@@ -0,0 +1 @@
+        f32.load 0 a=0
diff --git a/gas/testsuite/gas/wasm32/illegal-3.l b/gas/testsuite/gas/wasm32/illegal-3.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal-3.s b/gas/testsuite/gas/wasm32/illegal-3.s
new file mode 100644 (file)
index 0000000..253bc2c
--- /dev/null
@@ -0,0 +1 @@
+        block[li]
diff --git a/gas/testsuite/gas/wasm32/illegal-4.l b/gas/testsuite/gas/wasm32/illegal-4.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal-4.s b/gas/testsuite/gas/wasm32/illegal-4.s
new file mode 100644 (file)
index 0000000..1571475
--- /dev/null
@@ -0,0 +1 @@
+        block[q]
diff --git a/gas/testsuite/gas/wasm32/illegal-5.l b/gas/testsuite/gas/wasm32/illegal-5.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal-5.s b/gas/testsuite/gas/wasm32/illegal-5.s
new file mode 100644 (file)
index 0000000..17cc4bb
--- /dev/null
@@ -0,0 +1 @@
+        block 3
diff --git a/gas/testsuite/gas/wasm32/illegal-6.l b/gas/testsuite/gas/wasm32/illegal-6.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal-6.s b/gas/testsuite/gas/wasm32/illegal-6.s
new file mode 100644 (file)
index 0000000..ff7d1fc
--- /dev/null
@@ -0,0 +1 @@
+        block[i] 3
diff --git a/gas/testsuite/gas/wasm32/illegal-7.l b/gas/testsuite/gas/wasm32/illegal-7.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal-7.s b/gas/testsuite/gas/wasm32/illegal-7.s
new file mode 100644 (file)
index 0000000..f3de667
--- /dev/null
@@ -0,0 +1 @@
+        br
diff --git a/gas/testsuite/gas/wasm32/illegal-8.l b/gas/testsuite/gas/wasm32/illegal-8.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal-8.s b/gas/testsuite/gas/wasm32/illegal-8.s
new file mode 100644 (file)
index 0000000..9282602
--- /dev/null
@@ -0,0 +1 @@
+        br 0 1
diff --git a/gas/testsuite/gas/wasm32/illegal-9.l b/gas/testsuite/gas/wasm32/illegal-9.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal-9.s b/gas/testsuite/gas/wasm32/illegal-9.s
new file mode 100644 (file)
index 0000000..ef1c2d6
--- /dev/null
@@ -0,0 +1 @@
+        br -1
diff --git a/gas/testsuite/gas/wasm32/illegal.l b/gas/testsuite/gas/wasm32/illegal.l
new file mode 100644 (file)
index 0000000..4eb2cd8
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*Error.*
+#pass
diff --git a/gas/testsuite/gas/wasm32/illegal.s b/gas/testsuite/gas/wasm32/illegal.s
new file mode 100644 (file)
index 0000000..dfbdea9
--- /dev/null
@@ -0,0 +1 @@
+        block[ii]
diff --git a/gas/testsuite/gas/wasm32/reloc.d b/gas/testsuite/gas/wasm32/reloc.d
new file mode 100644 (file)
index 0000000..9317e6e
--- /dev/null
@@ -0,0 +1,18 @@
+#as:
+#objdump: -dr
+#name: reloc
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:  41 80 80 80             i32.const 0
+   4:  80 00 
+                       1: R_ASMJS_LEB128_PLT   f
+   6:  41 80 80 80             i32.const 0
+   a:  80 00 
+                       7: R_ASMJS_LEB128_GOT   x
+   c:  41 80 80 80             i32.const 0
+  10:  80 00 
+                       d: R_ASMJS_LEB128_GOT_CODE      f
diff --git a/gas/testsuite/gas/wasm32/reloc.s b/gas/testsuite/gas/wasm32/reloc.s
new file mode 100644 (file)
index 0000000..8cdfd58
--- /dev/null
@@ -0,0 +1,3 @@
+        i32.const f@plt
+        i32.const x@got
+        i32.const f@gotcode
diff --git a/gas/testsuite/gas/wasm32/wasm32.exp b/gas/testsuite/gas/wasm32/wasm32.exp
new file mode 100644 (file)
index 0000000..e6d1819
--- /dev/null
@@ -0,0 +1,58 @@
+# Expect script for wasm32 tests.
+#   Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# This file is part of the GNU Binutils.
+#
+# 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.
+
+# wasm32 assembler testsuite.
+
+if [istarget wasm32-*-*] {
+    # no disassembler support yet
+    setup_xfail "wasm32-*-*"
+    run_dump_test "allinsn"
+    # no GOT/PLT relocs yet.
+    setup_xfail "wasm32-*-*"
+    run_dump_test "reloc"
+    run_list_test "illegal"
+    run_list_test "illegal-2"
+    run_list_test "illegal-3"
+    run_list_test "illegal-4"
+    run_list_test "illegal-5"
+    run_list_test "illegal-6"
+    run_list_test "illegal-7"
+    run_list_test "illegal-8"
+    run_list_test "illegal-9"
+    run_list_test "illegal-10"
+    setup_xfail "wasm32-*-*"
+    run_list_test "illegal-11"
+    setup_xfail "wasm32-*-*"
+    run_list_test "illegal-12"
+    setup_xfail "wasm32-*-*"
+    run_list_test "illegal-13"
+    run_list_test "illegal-14"
+    run_list_test "illegal-15"
+    run_list_test "illegal-16"
+    run_list_test "illegal-17"
+    run_list_test "illegal-18"
+    run_list_test "illegal-19"
+    run_list_test "illegal-20"
+    run_list_test "illegal-21"
+    run_list_test "illegal-22"
+    # illegal-23 has become legal
+    run_list_test "illegal-24"
+    run_list_test "illegal-25"
+}
index 76957741ae44775c4dd1b6e948cef0e8e8e865a5..7b88042643a85fbf2841a099b7ab2e3564b2d380 100644 (file)
@@ -1,3 +1,8 @@
+2017-03-30  Pip Cet  <pipcet@gmail.com>
+
+       * opcode/wasm.h: New file to support wasm32 architecture.
+       * elf/wasm32.h: Add R_WASM32_32 relocation.
+
 2017-03-29  Alan Modra  <amodra@gmail.com>
 
        * opcode/ppc.h (PPC_OPCODE_RAW): Define.
index 38e6c2e9508a21e28e38faebc5ad4b1cfd73aba5..45ea9a17b994b7b3f45aa8c05d180933b2631020 100644 (file)
@@ -23,6 +23,8 @@
 /* Relocation types.  */
 
 START_RELOC_NUMBERS (elf_wasm32_reloc_type)
+  RELOC_NUMBER (R_WASM32_NONE,                   0)
+  RELOC_NUMBER (R_WASM32_32,                             1)
 END_RELOC_NUMBERS (R_WASM32_max = 1)
 
 #endif /* _ELF_WASM32_H */
diff --git a/include/opcode/wasm.h b/include/opcode/wasm.h
new file mode 100644 (file)
index 0000000..5fa8a10
--- /dev/null
@@ -0,0 +1,226 @@
+/* WebAssembly assembler/disassembler support.
+   Copyright (C) 2017 Free Software Foundation, Inc.
+
+   This file is part of GAS, the GNU assembler.
+
+   GAS 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, or (at your option)
+   any later version.
+
+   GAS 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 GAS; see the file COPYING3.  If not, write to the Free
+   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+   02110-1301, USA.  */
+
+/* WebAssembly opcodes.  Each opcode invokes the WASM_OPCODE macro
+   with the following arguments:
+
+   1. Code byte.
+   2. Mnemonic.
+   3. Input type.
+   4. Output type.
+   5. Opcode class.
+   6. Signedness information.
+*/
+
+WASM_OPCODE (0x00, "unreachable", void, void, special, agnostic)
+WASM_OPCODE (0x01, "nop", void, void, special, agnostic)
+WASM_OPCODE (0x02, "block", void, void, typed, agnostic)
+WASM_OPCODE (0x03, "loop", void, void, typed, agnostic)
+WASM_OPCODE (0x04, "if", void, void, typed, agnostic)
+WASM_OPCODE (0x05, "else", void, void, special, agnostic)
+WASM_OPCODE (0x0b, "end", void, void, special, agnostic)
+WASM_OPCODE (0x0c, "br", void, void, break, agnostic)
+WASM_OPCODE (0x0d, "br_if", void, void, break_if, agnostic)
+WASM_OPCODE (0x0e, "br_table", void, void, break_table, agnostic)
+WASM_OPCODE (0x0f, "return", void, void, return, agnostic)
+
+WASM_OPCODE (0x10, "call", any, any, call, agnostic)
+WASM_OPCODE (0x11, "call_indirect", any, any, call_indirect, agnostic)
+
+WASM_OPCODE (0x1a, "drop", any, any, drop, agnostic)
+WASM_OPCODE (0x1b, "select", any, any, select, agnostic)
+
+WASM_OPCODE (0x20, "get_local", any, any, get_local, agnostic)
+WASM_OPCODE (0x21, "set_local", any, any, set_local, agnostic)
+WASM_OPCODE (0x22, "tee_local", any, any, tee_local, agnostic)
+WASM_OPCODE (0x23, "get_global", any, any, get_local, agnostic)
+WASM_OPCODE (0x24, "set_global", any, any, set_local, agnostic)
+
+WASM_OPCODE (0x28, "i32.load", i32, i32, load, agnostic)
+WASM_OPCODE (0x29, "i64.load", i32, i64, load, agnostic)
+WASM_OPCODE (0x2a, "f32.load", i32, f32, load, agnostic)
+WASM_OPCODE (0x2b, "f64.load", i32, f64, load, agnostic)
+WASM_OPCODE (0x2c, "i32.load8_s", i32, i32, load, signed)
+WASM_OPCODE (0x2d, "i32.load8_u", i32, i32, load, unsigned)
+WASM_OPCODE (0x2e, "i32.load16_s", i32, i32, load, signed)
+WASM_OPCODE (0x2f, "i32.load16_u", i32, i32, load, unsigned)
+WASM_OPCODE (0x30, "i64.load8_s", i32, i64, load, signed)
+WASM_OPCODE (0x31, "i64.load8_u", i32, i64, load, unsigned)
+WASM_OPCODE (0x32, "i64.load16_s", i32, i64, load, signed)
+WASM_OPCODE (0x33, "i64.load16_u", i32, i64, load, unsigned)
+WASM_OPCODE (0x34, "i64.load32_s", i32, i64, load, signed)
+WASM_OPCODE (0x35, "i64.load32_u", i32, i64, load, unsigned)
+WASM_OPCODE (0x36, "i32.store", i32, void, store, agnostic)
+WASM_OPCODE (0x37, "i64.store", i64, void, store, agnostic)
+WASM_OPCODE (0x38, "f32.store", f32, void, store, agnostic)
+WASM_OPCODE (0x39, "f64.store", f64, void, store, agnostic)
+WASM_OPCODE (0x3a, "i32.store8", i32, void, store, agnostic)
+WASM_OPCODE (0x3b, "i32.store16", i32, void, store, agnostic)
+WASM_OPCODE (0x3c, "i64.store8", i64, void, store, agnostic)
+WASM_OPCODE (0x3d, "i64.store16", i64, void, store, agnostic)
+WASM_OPCODE (0x3e, "i64.store32", i64, void, store, agnostic)
+
+WASM_OPCODE (0x3f, "current_memory", void, i32, current_memory, agnostic)
+WASM_OPCODE (0x40, "grow_memory", void, i32, grow_memory, agnostic)
+
+WASM_OPCODE (0x41, "i32.const", i32, i32, constant_i32, agnostic)
+WASM_OPCODE (0x42, "i64.const", i64, i64, constant_i64, agnostic)
+WASM_OPCODE (0x43, "f32.const", f32, f32, constant_f32, agnostic)
+WASM_OPCODE (0x44, "f64.const", f64, f64, constant_f64, agnostic)
+
+WASM_OPCODE (0x45, "i32.eqz", i32, i32, eqz, agnostic)
+WASM_OPCODE (0x46, "i32.eq", i32, i32, relational, agnostic)
+WASM_OPCODE (0x47, "i32.ne", i32, i32, relational, agnostic)
+WASM_OPCODE (0x48, "i32.lt_s", i32, i32, relational, signed)
+WASM_OPCODE (0x49, "i32.lt_u", i32, i32, relational, unsigned)
+WASM_OPCODE (0x4a, "i32.gt_s", i32, i32, relational, signed)
+WASM_OPCODE (0x4b, "i32.gt_u", i32, i32, relational, unsigned)
+WASM_OPCODE (0x4c, "i32.le_s", i32, i32, relational, signed)
+WASM_OPCODE (0x4d, "i32.le_u", i32, i32, relational, unsigned)
+WASM_OPCODE (0x4e, "i32.ge_s", i32, i32, relational, signed)
+WASM_OPCODE (0x4f, "i32.ge_u", i32, i32, relational, unsigned)
+
+WASM_OPCODE (0x50, "i64.eqz", i64, i32, eqz, agnostic)
+WASM_OPCODE (0x51, "i64.eq", i64, i32, relational, agnostic)
+WASM_OPCODE (0x52, "i64.ne", i64, i32, relational, agnostic)
+WASM_OPCODE (0x53, "i64.lt_s", i64, i32, relational, signed)
+WASM_OPCODE (0x54, "i64.lt_u", i64, i32, relational, unsigned)
+WASM_OPCODE (0x55, "i64.gt_s", i64, i32, relational, signed)
+WASM_OPCODE (0x56, "i64.gt_u", i64, i32, relational, unsigned)
+WASM_OPCODE (0x57, "i64.le_s", i64, i32, relational, signed)
+WASM_OPCODE (0x58, "i64.le_u", i64, i32, relational, unsigned)
+WASM_OPCODE (0x59, "i64.ge_s", i64, i32, relational, signed)
+WASM_OPCODE (0x5a, "i64.ge_u", i64, i32, relational, unsigned)
+
+WASM_OPCODE (0x5b, "f32.eq", f32, i32, relational, floating)
+WASM_OPCODE (0x5c, "f32.ne", f32, i32, relational, floating)
+WASM_OPCODE (0x5d, "f32.lt", f32, i32, relational, floating)
+WASM_OPCODE (0x5e, "f32.gt", f32, i32, relational, floating)
+WASM_OPCODE (0x5f, "f32.le", f32, i32, relational, floating)
+WASM_OPCODE (0x60, "f32.ge", f32, i32, relational, floating)
+
+WASM_OPCODE (0x61, "f64.eq", f64, i32, relational, floating)
+WASM_OPCODE (0x62, "f64.ne", f64, i32, relational, floating)
+WASM_OPCODE (0x63, "f64.lt", f64, i32, relational, floating)
+WASM_OPCODE (0x64, "f64.gt", f64, i32, relational, floating)
+WASM_OPCODE (0x65, "f64.le", f64, i32, relational, floating)
+WASM_OPCODE (0x66, "f64.ge", f64, i32, relational, floating)
+
+WASM_OPCODE (0x67, "i32.clz", i32, i32, unary, agnostic)
+WASM_OPCODE (0x68, "i32.ctz", i32, i32, unary, agnostic)
+WASM_OPCODE (0x69, "i32.popcnt", i32, i32, unary, agnostic)
+
+WASM_OPCODE (0x6a, "i32.add", i32, i32, binary, agnostic)
+WASM_OPCODE (0x6b, "i32.sub", i32, i32, binary, agnostic)
+WASM_OPCODE (0x6c, "i32.mul", i32, i32, binary, agnostic)
+WASM_OPCODE (0x6d, "i32.div_s", i32, i32, binary, signed)
+WASM_OPCODE (0x6e, "i32.div_u", i32, i32, binary, unsigned)
+WASM_OPCODE (0x6f, "i32.rem_s", i32, i32, binary, signed)
+WASM_OPCODE (0x70, "i32.rem_u", i32, i32, binary, unsigned)
+WASM_OPCODE (0x71, "i32.and", i32, i32, binary, agnostic)
+WASM_OPCODE (0x72, "i32.or", i32, i32, binary, agnostic)
+WASM_OPCODE (0x73, "i32.xor", i32, i32, binary, agnostic)
+WASM_OPCODE (0x74, "i32.shl", i32, i32, binary, agnostic)
+WASM_OPCODE (0x75, "i32.shr_s", i32, i32, binary, signed)
+WASM_OPCODE (0x76, "i32.shr_u", i32, i32, binary, unsigned)
+WASM_OPCODE (0x77, "i32.rotl", i32, i32, binary, agnostic)
+WASM_OPCODE (0x78, "i32.rotr", i32, i32, binary, agnostic)
+
+WASM_OPCODE (0x79, "i64.clz", i64, i64, unary, agnostic)
+WASM_OPCODE (0x7a, "i64.ctz", i64, i64, unary, agnostic)
+WASM_OPCODE (0x7b, "i64.popcnt", i64, i64, unary, agnostic)
+
+WASM_OPCODE (0x7c, "i64.add", i64, i64, binary, agnostic)
+WASM_OPCODE (0x7d, "i64.sub", i64, i64, binary, agnostic)
+WASM_OPCODE (0x7e, "i64.mul", i64, i64, binary, agnostic)
+WASM_OPCODE (0x7f, "i64.div_s", i64, i64, binary, signed)
+WASM_OPCODE (0x80, "i64.div_u", i64, i64, binary, unsigned)
+WASM_OPCODE (0x81, "i64.rem_s", i64, i64, binary, signed)
+WASM_OPCODE (0x82, "i64.rem_u", i64, i64, binary, unsigned)
+WASM_OPCODE (0x83, "i64.and", i64, i64, binary, agnostic)
+WASM_OPCODE (0x84, "i64.or", i64, i64, binary, agnostic)
+WASM_OPCODE (0x85, "i64.xor", i64, i64, binary, agnostic)
+WASM_OPCODE (0x86, "i64.shl", i64, i64, binary, agnostic)
+WASM_OPCODE (0x87, "i64.shr_s", i64, i64, binary, signed)
+WASM_OPCODE (0x88, "i64.shr_u", i64, i64, binary, unsigned)
+WASM_OPCODE (0x89, "i64.rotl", i64, i64, binary, agnostic)
+WASM_OPCODE (0x8a, "i64.rotr", i64, i64, binary, agnostic)
+
+WASM_OPCODE (0x8b, "f32.abs", f32, f32, unary, floating)
+WASM_OPCODE (0x8c, "f32.neg", f32, f32, unary, floating)
+WASM_OPCODE (0x8d, "f32.ceil", f32, f32, unary, floating)
+WASM_OPCODE (0x8e, "f32.floor", f32, f32, unary, floating)
+WASM_OPCODE (0x8f, "f32.trunc", f32, f32, unary, floating)
+WASM_OPCODE (0x90, "f32.nearest", f32, f32, unary, floating)
+WASM_OPCODE (0x91, "f32.sqrt", f32, f32, unary, floating)
+WASM_OPCODE (0x92, "f32.add", f32, f32, binary, floating)
+WASM_OPCODE (0x93, "f32.sub", f32, f32, binary, floating)
+WASM_OPCODE (0x94, "f32.mul", f32, f32, binary, floating)
+WASM_OPCODE (0x95, "f32.div", f32, f32, binary, floating)
+WASM_OPCODE (0x96, "f32.min", f32, f32, binary, floating)
+WASM_OPCODE (0x97, "f32.max", f32, f32, binary, floating)
+WASM_OPCODE (0x98, "f32.copysign", f32, f32, binary, floating)
+
+WASM_OPCODE (0x99, "f64.abs", f64, f64, unary, floating)
+WASM_OPCODE (0x9a, "f64.neg", f64, f64, unary, floating)
+WASM_OPCODE (0x9b, "f64.ceil", f64, f64, unary, floating)
+WASM_OPCODE (0x9c, "f64.floor", f64, f64, unary, floating)
+WASM_OPCODE (0x9d, "f64.trunc", f64, f64, unary, floating)
+WASM_OPCODE (0x9e, "f64.nearest", f64, f64, unary, floating)
+WASM_OPCODE (0x9f, "f64.sqrt", f64, f64, unary, floating)
+WASM_OPCODE (0xa0, "f64.add", f64, f64, binary, floating)
+WASM_OPCODE (0xa1, "f64.sub", f64, f64, binary, floating)
+WASM_OPCODE (0xa2, "f64.mul", f64, f64, binary, floating)
+WASM_OPCODE (0xa3, "f64.div", f64, f64, binary, floating)
+WASM_OPCODE (0xa4, "f64.min", f64, f64, binary, floating)
+WASM_OPCODE (0xa5, "f64.max", f64, f64, binary, floating)
+WASM_OPCODE (0xa6, "f64.copysign", f64, f64, binary, floating)
+
+WASM_OPCODE (0xa7, "i32.wrap/i64", i64, i32, conv, agnostic)
+WASM_OPCODE (0xa8, "i32.trunc_s/f32", f32, i32, conv, signed)
+WASM_OPCODE (0xa9, "i32.trunc_u/f32", f32, i32, conv, unsigned)
+WASM_OPCODE (0xaa, "i32.trunc_s/f64", f64, i32, conv, signed)
+WASM_OPCODE (0xab, "i32.trunc_u/f64", f64, i32, conv, unsigned)
+WASM_OPCODE (0xac, "i64.extend_s/i32", i32, i64, conv, signed)
+WASM_OPCODE (0xad, "i64.extend_u/i32", i32, i64, conv, unsigned)
+WASM_OPCODE (0xae, "i64.trunc_s/f32", f32, i64, conv, signed)
+WASM_OPCODE (0xaf, "i64.trunc_u/f32", f32, i64, conv, unsigned)
+WASM_OPCODE (0xb0, "i64.trunc_s/f64", f64, i64, conv, signed)
+WASM_OPCODE (0xb1, "i64.trunc_u/f64", f64, i64, conv, unsigned)
+
+WASM_OPCODE (0xb2, "f32.convert_s/i32", i32, f32, conv, signed)
+WASM_OPCODE (0xb3, "f32.convert_u/i32", i32, f32, conv, unsigned)
+WASM_OPCODE (0xb4, "f32.convert_s/i64", i64, f32, conv, signed)
+WASM_OPCODE (0xb5, "f32.convert_u/i64", i64, f32, conv, unsigned)
+WASM_OPCODE (0xb6, "f32.demote/f64", f64, f32, conv, floating)
+WASM_OPCODE (0xb7, "f64.convert_s/i32", i32, f64, conv, signed)
+WASM_OPCODE (0xb8, "f64.convert_u/i32", i32, f64, conv, unsigned)
+WASM_OPCODE (0xb9, "f64.convert_s/i64", i64, f64, conv, signed)
+WASM_OPCODE (0xba, "f64.convert_u/i64", i64, f64, conv, unsigned)
+WASM_OPCODE (0xbb, "f64.promote/f32", f32, f64, conv, floating)
+
+WASM_OPCODE (0xbc, "i32.reinterpret/f32", f32, i32, conv, agnostic)
+WASM_OPCODE (0xbd, "i64.reinterpret/f64", f64, i64, conv, agnostic)
+WASM_OPCODE (0xbe, "f32.reinterpret/i32", i32, f32, conv, agnostic)
+WASM_OPCODE (0xbf, "f64.reinterpret/i64", i64, f64, conv, agnostic)
+
+/* This isn't, strictly speaking, an opcode, but is treated as such by
+   the assembler.  */
+WASM_OPCODE (0x60, "signature", void, void, signature, agnostic)
index c6c2ceec14eb344cba0f55b20943fa7a4addb1b1..07262aa86bd2191c39a25bd926298516a27b3aa0 100644 (file)
@@ -1,3 +1,9 @@
+2017-03-30  Pip Cet  <pipcet@gmail.com>
+
+       * configure.ac: Add (empty) bfd_wasm32_arch target.
+       * configure: Regenerate
+       * po/opcodes.pot: Regenerate.
+
 2017-03-29  Sheldon Lobo  <sheldon.lobo@oracle.com>
 
        Add support for missing SPARC ASIs from UA2005, UA2007, OSA2011, &
index d9e8aff84b74ec82f87e73b60e247b54da52f9dd..ea26b9179487390ff77c5c6ce650a37122d53c4e 100755 (executable)
@@ -12724,6 +12724,7 @@ if test x${all_targets} = xfalse ; then
        bfd_vax_arch)           ta="$ta vax-dis.lo" ;;
        bfd_visium_arch)        ta="$ta visium-dis.lo visium-opc.lo" ;;
        bfd_w65_arch)           ta="$ta w65-dis.lo" ;;
+        bfd_wasm32_arch)        ;;
        bfd_we32k_arch)         ;;
        bfd_xc16x_arch)         ta="$ta xc16x-asm.lo xc16x-desc.lo xc16x-dis.lo xc16x-ibld.lo xc16x-opc.lo" using_cgen=yes ;;
        bfd_xgate_arch)         ta="$ta xgate-dis.lo xgate-opc.lo" ;;
index 617a86ca5cc2a195018ed2c1171fe5acce9b4c3a..ca982924e6fd9c2dea3c50f7b739ba5a4e8211be 100644 (file)
@@ -348,6 +348,7 @@ if test x${all_targets} = xfalse ; then
        bfd_vax_arch)           ta="$ta vax-dis.lo" ;;
        bfd_visium_arch)        ta="$ta visium-dis.lo visium-opc.lo" ;;
        bfd_w65_arch)           ta="$ta w65-dis.lo" ;;
+        bfd_wasm32_arch)        ;;
        bfd_we32k_arch)         ;;
        bfd_xc16x_arch)         ta="$ta xc16x-asm.lo xc16x-desc.lo xc16x-dis.lo xc16x-ibld.lo xc16x-opc.lo" using_cgen=yes ;;
        bfd_xgate_arch)         ta="$ta xgate-dis.lo xgate-opc.lo" ;;
index e64a678309fda023afc0c65d2a417bb657adb2ff..b62fc9512482f0c40887fe233f95d543953793bd 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: 2017-02-08 13:38-0600\n"
+"POT-Creation-Date: 2017-03-29 17:08+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"
@@ -18,12 +18,12 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 
 #. Invalid option.
-#: aarch64-dis.c:81 arc-dis.c:769 arm-dis.c:6158
+#: aarch64-dis.c:81 arc-dis.c:769 arm-dis.c:6128
 #, c-format
 msgid "Unrecognised disassembler option: %s\n"
 msgstr ""
 
-#: aarch64-dis.c:3200
+#: aarch64-dis.c:3217
 #, c-format
 msgid ""
 "\n"
@@ -31,225 +31,233 @@ msgid ""
 "with the -M switch (multiple options should be separated by commas):\n"
 msgstr ""
 
-#: aarch64-dis.c:3204
+#: aarch64-dis.c:3221
 #, c-format
 msgid ""
 "\n"
 "  no-aliases         Don't print instruction aliases.\n"
 msgstr ""
 
-#: aarch64-dis.c:3207
+#: aarch64-dis.c:3224
 #, c-format
 msgid ""
 "\n"
 "  aliases            Do print instruction aliases.\n"
 msgstr ""
 
-#: aarch64-dis.c:3211
+#: aarch64-dis.c:3228
 #, c-format
 msgid ""
 "\n"
 "  debug_dump         Temp switch for debug trace.\n"
 msgstr ""
 
-#: aarch64-dis.c:3215 mips-dis.c:2477 mips-dis.c:2485 mips-dis.c:2487
+#: aarch64-dis.c:3232 mips-dis.c:2477 mips-dis.c:2485 mips-dis.c:2487
 #: riscv-dis.c:506
 #, c-format
 msgid "\n"
 msgstr ""
 
-#: aarch64-opc.c:1303
+#: aarch64-opc.c:1306
 msgid "immediate value"
 msgstr ""
 
-#: aarch64-opc.c:1313
+#: aarch64-opc.c:1316
 msgid "immediate offset"
 msgstr ""
 
-#: aarch64-opc.c:1323
+#: aarch64-opc.c:1326
 msgid "register number"
 msgstr ""
 
-#: aarch64-opc.c:1333
+#: aarch64-opc.c:1336
 msgid "register element index"
 msgstr ""
 
-#: aarch64-opc.c:1343
+#: aarch64-opc.c:1346
 msgid "shift amount"
 msgstr ""
 
-#: aarch64-opc.c:1355
+#: aarch64-opc.c:1358
 msgid "multiplier"
 msgstr ""
 
-#: aarch64-opc.c:1428
+#: aarch64-opc.c:1431
 msgid "reg pair must start from even reg"
 msgstr ""
 
-#: aarch64-opc.c:1434
+#: aarch64-opc.c:1437
 msgid "reg pair must be contiguous"
 msgstr ""
 
-#: aarch64-opc.c:1448
+#: aarch64-opc.c:1451
 msgid "extraneous register"
 msgstr ""
 
-#: aarch64-opc.c:1454
+#: aarch64-opc.c:1457
 msgid "missing register"
 msgstr ""
 
-#: aarch64-opc.c:1465
+#: aarch64-opc.c:1468
 msgid "stack pointer register expected"
 msgstr ""
 
+#: aarch64-opc.c:1491
+msgid "z0-z15 expected"
+msgstr ""
+
 #: aarch64-opc.c:1492
+msgid "z0-z7 expected"
+msgstr ""
+
+#: aarch64-opc.c:1518
 msgid "invalid register list"
 msgstr ""
 
-#: aarch64-opc.c:1506
+#: aarch64-opc.c:1532
 msgid "p0-p7 expected"
 msgstr ""
 
-#: aarch64-opc.c:1532 aarch64-opc.c:1540
+#: aarch64-opc.c:1558 aarch64-opc.c:1566
 msgid "unexpected address writeback"
 msgstr ""
 
-#: aarch64-opc.c:1551
+#: aarch64-opc.c:1577
 msgid "address writeback expected"
 msgstr ""
 
-#: aarch64-opc.c:1597
+#: aarch64-opc.c:1623
 msgid "negative or unaligned offset expected"
 msgstr ""
 
-#: aarch64-opc.c:1624
+#: aarch64-opc.c:1650
 msgid "invalid register offset"
 msgstr ""
 
-#: aarch64-opc.c:1646
+#: aarch64-opc.c:1672
 msgid "invalid post-increment amount"
 msgstr ""
 
-#: aarch64-opc.c:1662 aarch64-opc.c:2132
+#: aarch64-opc.c:1688 aarch64-opc.c:2165
 msgid "invalid shift amount"
 msgstr ""
 
-#: aarch64-opc.c:1675
+#: aarch64-opc.c:1701
 msgid "invalid extend/shift operator"
 msgstr ""
 
-#: aarch64-opc.c:1721 aarch64-opc.c:1955 aarch64-opc.c:1990 aarch64-opc.c:2009
-#: aarch64-opc.c:2017 aarch64-opc.c:2088 aarch64-opc.c:2262 aarch64-opc.c:2362
-#: aarch64-opc.c:2375
+#: aarch64-opc.c:1747 aarch64-opc.c:1986 aarch64-opc.c:2021 aarch64-opc.c:2040
+#: aarch64-opc.c:2048 aarch64-opc.c:2119 aarch64-opc.c:2295 aarch64-opc.c:2395
+#: aarch64-opc.c:2408
 msgid "immediate out of range"
 msgstr ""
 
-#: aarch64-opc.c:1743 aarch64-opc.c:1785 aarch64-opc.c:1829 aarch64-opc.c:1863
+#: aarch64-opc.c:1769 aarch64-opc.c:1811 aarch64-opc.c:1860 aarch64-opc.c:1894
 msgid "invalid addressing mode"
 msgstr ""
 
-#: aarch64-opc.c:1821
+#: aarch64-opc.c:1852
 msgid "index register xzr is not allowed"
 msgstr ""
 
-#: aarch64-opc.c:1943 aarch64-opc.c:1965 aarch64-opc.c:2165 aarch64-opc.c:2173
-#: aarch64-opc.c:2239 aarch64-opc.c:2268
+#: aarch64-opc.c:1974 aarch64-opc.c:1996 aarch64-opc.c:2198 aarch64-opc.c:2206
+#: aarch64-opc.c:2272 aarch64-opc.c:2301
 msgid "invalid shift operator"
 msgstr ""
 
-#: aarch64-opc.c:1949
+#: aarch64-opc.c:1980
 msgid "shift amount must be 0 or 12"
 msgstr ""
 
-#: aarch64-opc.c:1972
+#: aarch64-opc.c:2003
 msgid "shift amount must be a multiple of 16"
 msgstr ""
 
-#: aarch64-opc.c:1984
+#: aarch64-opc.c:2015
 msgid "negative immediate value not allowed"
 msgstr ""
 
-#: aarch64-opc.c:2099
+#: aarch64-opc.c:2130
 msgid "immediate zero expected"
 msgstr ""
 
-#: aarch64-opc.c:2112
+#: aarch64-opc.c:2144
 msgid "rotate expected to be 0, 90, 180 or 270"
 msgstr ""
 
-#: aarch64-opc.c:2121
+#: aarch64-opc.c:2154
 msgid "rotate expected to be 90 or 270"
 msgstr ""
 
-#: aarch64-opc.c:2181
+#: aarch64-opc.c:2214
 msgid "shift is not permitted"
 msgstr ""
 
-#: aarch64-opc.c:2206
+#: aarch64-opc.c:2239
 msgid "invalid value for immediate"
 msgstr ""
 
-#: aarch64-opc.c:2231
+#: aarch64-opc.c:2264
 msgid "shift amount must be 0 or 16"
 msgstr ""
 
-#: aarch64-opc.c:2252
+#: aarch64-opc.c:2285
 msgid "floating-point immediate expected"
 msgstr ""
 
-#: aarch64-opc.c:2286
+#: aarch64-opc.c:2319
 msgid "no shift amount allowed for 8-bit constants"
 msgstr ""
 
-#: aarch64-opc.c:2296
+#: aarch64-opc.c:2329
 msgid "shift amount must be 0 or 8"
 msgstr ""
 
-#: aarch64-opc.c:2309
+#: aarch64-opc.c:2342
 msgid "immediate too big for element size"
 msgstr ""
 
-#: aarch64-opc.c:2316
+#: aarch64-opc.c:2349
 msgid "invalid arithmetic immediate"
 msgstr ""
 
-#: aarch64-opc.c:2330
+#: aarch64-opc.c:2363
 msgid "floating-point value must be 0.5 or 1.0"
 msgstr ""
 
-#: aarch64-opc.c:2340
+#: aarch64-opc.c:2373
 msgid "floating-point value must be 0.5 or 2.0"
 msgstr ""
 
-#: aarch64-opc.c:2350
+#: aarch64-opc.c:2383
 msgid "floating-point value must be 0.0 or 1.0"
 msgstr ""
 
-#: aarch64-opc.c:2381
+#: aarch64-opc.c:2414
 msgid "invalid replicated MOV immediate"
 msgstr ""
 
-#: aarch64-opc.c:2495
+#: aarch64-opc.c:2528
 msgid "extend operator expected"
 msgstr ""
 
-#: aarch64-opc.c:2508
+#: aarch64-opc.c:2541
 msgid "missing extend operator"
 msgstr ""
 
-#: aarch64-opc.c:2514
+#: aarch64-opc.c:2547
 msgid "'LSL' operator not allowed"
 msgstr ""
 
-#: aarch64-opc.c:2535
+#: aarch64-opc.c:2568
 msgid "W register expected"
 msgstr ""
 
-#: aarch64-opc.c:2546
+#: aarch64-opc.c:2579
 msgid "shift operator expected"
 msgstr ""
 
-#: aarch64-opc.c:2553
+#: aarch64-opc.c:2586
 msgid "'ROR' operator not allowed"
 msgstr ""
 
@@ -312,190 +320,205 @@ msgstr ""
 msgid "  fpud            Recognize double precision FPU instructions.\n"
 msgstr ""
 
-#: arc-opc.c:40 arc-opc.c:60 arc-opc.c:86
+#: arc-opc.c:41 arc-opc.c:64 arc-opc.c:90
 msgid "LP_COUNT register cannot be used as destination register"
 msgstr ""
 
-#: arc-opc.c:84
+#: arc-opc.c:88
 msgid "cannot use odd number destination register"
 msgstr ""
 
-#: arc-opc.c:97
+#: arc-opc.c:101
 msgid "cannot use odd number source register"
 msgstr ""
 
-#: arc-opc.c:110
+#: arc-opc.c:114
 msgid "operand is not zero"
 msgstr ""
 
-#: arc-opc.c:170
+#: arc-opc.c:173
 msgid "Register R30 is a limm indicator"
 msgstr ""
 
-#: arc-opc.c:189
+#: arc-opc.c:192
 msgid "Register must be R0"
 msgstr ""
 
-#: arc-opc.c:207
+#: arc-opc.c:210
 msgid "Register must be R1"
 msgstr ""
 
-#: arc-opc.c:224
+#: arc-opc.c:227
 msgid "Register must be R2"
 msgstr ""
 
-#: arc-opc.c:241
+#: arc-opc.c:244
 msgid "Register must be R3"
 msgstr ""
 
-#: arc-opc.c:258
+#: arc-opc.c:261
 msgid "Register must be SP"
 msgstr ""
 
-#: arc-opc.c:275
+#: arc-opc.c:278
 msgid "Register must be GP"
 msgstr ""
 
-#: arc-opc.c:292
+#: arc-opc.c:295
 msgid "Register must be PCL"
 msgstr ""
 
-#: arc-opc.c:309
+#: arc-opc.c:312
 msgid "Register must be BLINK"
 msgstr ""
 
-#: arc-opc.c:326
+#: arc-opc.c:329
 msgid "Register must be ILINK1"
 msgstr ""
 
-#: arc-opc.c:343
+#: arc-opc.c:346
 msgid "Register must be ILINK2"
 msgstr ""
 
 #. ARC NPS400 Support: See comment near head of file.
-#: arc-opc.c:374 arc-opc.c:411 arc-opc.c:448 arc-opc.c:692
+#: arc-opc.c:377 arc-opc.c:415 arc-opc.c:453 arc-opc.c:703
 msgid "Register must be either r0-r3 or r12-r15"
 msgstr ""
 
-#: arc-opc.c:498
+#: arc-opc.c:504
 msgid "Accepted values are from -1 to 6"
 msgstr ""
 
-#: arc-opc.c:526
+#: arc-opc.c:533
 msgid "First register of the range should be r13"
 msgstr ""
 
-#: arc-opc.c:531
+#: arc-opc.c:535
 msgid "Last register of the range doesn't fit"
 msgstr ""
 
-#: arc-opc.c:552
+#: arc-opc.c:555
 msgid "Invalid register number, should be fp"
 msgstr ""
 
-#: arc-opc.c:574
+#: arc-opc.c:577
 msgid "Invalid register number, should be blink"
 msgstr ""
 
-#: arc-opc.c:596
+#: arc-opc.c:599
 msgid "Invalid register number, should be pcl"
 msgstr ""
 
-#: arc-opc.c:740
+#: arc-opc.c:751
 msgid "Invalid size, should be 1, 2, 4, or 8"
 msgstr ""
 
-#: arc-opc.c:785
+#: arc-opc.c:796
 msgid "invalid immediate, must be 1, 2, or 4"
 msgstr ""
 
-#: arc-opc.c:823
+#: arc-opc.c:835
 msgid "invalid value for CMEM ld/st immediate"
 msgstr ""
 
-#: arc-opc.c:850
+#: arc-opc.c:862
+msgid "Invalid position, should be 0, 16, 32, 48 or 64."
+msgstr ""
+
+#: arc-opc.c:896
+msgid "Invalid position, should be 16, 32, 64 or 128."
+msgstr ""
+
+#: arc-opc.c:918
+msgid "Invalid size value must be on range 1-64."
+msgstr ""
+
+#: arc-opc.c:949
 msgid "Invalid position, should be 0, 8, 16, or 24"
 msgstr ""
 
-#: arc-opc.c:875
+#: arc-opc.c:974
 msgid "Invalid size, value must be "
 msgstr ""
 
-#: arc-opc.c:949
+#: arc-opc.c:1048
 msgid "value out of range 1 - 256"
 msgstr ""
 
-#: arc-opc.c:958
+#: arc-opc.c:1057
 msgid "value must be power of 2"
 msgstr ""
 
-#: arc-opc.c:1011
+#: arc-opc.c:1110
 msgid "Value must be in the range 0 to 28"
 msgstr ""
 
-#: arc-opc.c:1032
+#: arc-opc.c:1132
 msgid "Value must be in the range 1 to "
 msgstr ""
 
-#: arc-opc.c:1062
+#: arc-opc.c:1162
 msgid "Value must be in the range 0 to 240"
 msgstr ""
 
-#: arc-opc.c:1064
+#: arc-opc.c:1164
 msgid "Value must be a multiple of 16"
 msgstr ""
 
-#: arc-opc.c:1084
+#: arc-opc.c:1184
 msgid "Invalid address type for operand"
 msgstr ""
 
-#: arc-opc.c:1118
+#: arc-opc.c:1218
 msgid "Value must be in the range 0 to 31"
 msgstr ""
 
-#: arm-dis.c:3202
+#: arc-opc.c:1243
+msgid "Invalid position, should be 0,4, 8,...124."
+msgstr ""
+
+#: arm-dis.c:3198
 msgid "Select raw register names"
 msgstr ""
 
-#: arm-dis.c:3204
+#: arm-dis.c:3200
 msgid "Select register names used by GCC"
 msgstr ""
 
-#: arm-dis.c:3206
+#: arm-dis.c:3202
 msgid "Select register names used in ARM's ISA documentation"
 msgstr ""
 
-#: arm-dis.c:3208
-msgid "Select register names used in the APCS"
+#: arm-dis.c:3204
+msgid "Assume all insns are Thumb insns"
 msgstr ""
 
-#: arm-dis.c:3210
-msgid "Select register names used in the ATPCS"
+#: arm-dis.c:3205
+msgid "Examine preceding label to determine an insn's type"
 msgstr ""
 
-#: arm-dis.c:3212
-msgid "Select special register names used in the ATPCS"
+#: arm-dis.c:3206
+msgid "Select register names used in the APCS"
 msgstr ""
 
-#. All non "reg-names-* options  must be listed last.
-#: arm-dis.c:3216
-msgid "Assume all insns are Thumb insns"
+#: arm-dis.c:3208
+msgid "Select register names used in the ATPCS"
 msgstr ""
 
-#: arm-dis.c:3217
-msgid "Examine preceding label to determine an insn's type"
+#: arm-dis.c:3210
+msgid "Select special register names used in the ATPCS"
 msgstr ""
 
-#: arm-dis.c:3638
+#: arm-dis.c:3608
 msgid "<illegal precision>"
 msgstr ""
 
-#: arm-dis.c:6151
+#: arm-dis.c:6121
 #, c-format
 msgid "Unrecognised register name set: %s\n"
 msgstr ""
 
-#: arm-dis.c:6855
+#: arm-dis.c:6825
 #, c-format
 msgid ""
 "\n"
@@ -790,11 +813,11 @@ msgstr ""
 msgid "%02x\t\t*unknown*"
 msgstr ""
 
-#: i386-dis.c:12200
+#: i386-dis.c:12276
 msgid "<internal disassembler error>"
 msgstr ""
 
-#: i386-dis.c:12492
+#: i386-dis.c:12568
 #, c-format
 msgid ""
 "\n"
@@ -803,145 +826,145 @@ msgid ""
 "with the -M switch (multiple options should be separated by commas):\n"
 msgstr ""
 
-#: i386-dis.c:12496
+#: i386-dis.c:12572
 #, c-format
 msgid "  x86-64      Disassemble in 64bit mode\n"
 msgstr ""
 
-#: i386-dis.c:12497
+#: i386-dis.c:12573
 #, c-format
 msgid "  i386        Disassemble in 32bit mode\n"
 msgstr ""
 
-#: i386-dis.c:12498
+#: i386-dis.c:12574
 #, c-format
 msgid "  i8086       Disassemble in 16bit mode\n"
 msgstr ""
 
-#: i386-dis.c:12499
+#: i386-dis.c:12575
 #, c-format
 msgid "  att         Display instruction in AT&T syntax\n"
 msgstr ""
 
-#: i386-dis.c:12500
+#: i386-dis.c:12576
 #, c-format
 msgid "  intel       Display instruction in Intel syntax\n"
 msgstr ""
 
-#: i386-dis.c:12501
+#: i386-dis.c:12577
 #, c-format
 msgid ""
 "  att-mnemonic\n"
 "              Display instruction in AT&T mnemonic\n"
 msgstr ""
 
-#: i386-dis.c:12503
+#: i386-dis.c:12579
 #, c-format
 msgid ""
 "  intel-mnemonic\n"
 "              Display instruction in Intel mnemonic\n"
 msgstr ""
 
-#: i386-dis.c:12505
+#: i386-dis.c:12581
 #, c-format
 msgid "  addr64      Assume 64bit address size\n"
 msgstr ""
 
-#: i386-dis.c:12506
+#: i386-dis.c:12582
 #, c-format
 msgid "  addr32      Assume 32bit address size\n"
 msgstr ""
 
-#: i386-dis.c:12507
+#: i386-dis.c:12583
 #, c-format
 msgid "  addr16      Assume 16bit address size\n"
 msgstr ""
 
-#: i386-dis.c:12508
+#: i386-dis.c:12584
 #, c-format
 msgid "  data32      Assume 32bit data size\n"
 msgstr ""
 
-#: i386-dis.c:12509
+#: i386-dis.c:12585
 #, c-format
 msgid "  data16      Assume 16bit data size\n"
 msgstr ""
 
-#: i386-dis.c:12510
+#: i386-dis.c:12586
 #, c-format
 msgid "  suffix      Always display instruction suffix in AT&T syntax\n"
 msgstr ""
 
-#: i386-dis.c:12511
+#: i386-dis.c:12587
 #, c-format
 msgid "  amd64       Display instruction in AMD64 ISA\n"
 msgstr ""
 
-#: i386-dis.c:12512
+#: i386-dis.c:12588
 #, c-format
 msgid "  intel64     Display instruction in Intel64 ISA\n"
 msgstr ""
 
-#: i386-dis.c:13063
+#: i386-dis.c:13139
 msgid "64-bit address is disabled"
 msgstr ""
 
-#: i386-gen.c:679 ia64-gen.c:306
+#: i386-gen.c:682 ia64-gen.c:306
 #, c-format
 msgid "%s: Error: "
 msgstr ""
 
-#: i386-gen.c:843
+#: i386-gen.c:846
 #, c-format
 msgid "%s: %d: Unknown bitfield: %s\n"
 msgstr ""
 
-#: i386-gen.c:845
+#: i386-gen.c:848
 #, c-format
 msgid "Unknown bitfield: %s\n"
 msgstr ""
 
-#: i386-gen.c:904
+#: i386-gen.c:907
 #, c-format
 msgid "%s: %d: Missing `)' in bitfield: %s\n"
 msgstr ""
 
-#: i386-gen.c:1175
+#: i386-gen.c:1178
 #, c-format
 msgid "can't find i386-opc.tbl for reading, errno = %s\n"
 msgstr ""
 
-#: i386-gen.c:1306
+#: i386-gen.c:1309
 #, c-format
 msgid "can't find i386-reg.tbl for reading, errno = %s\n"
 msgstr ""
 
-#: i386-gen.c:1383
+#: i386-gen.c:1386
 #, c-format
 msgid "can't create i386-init.h, errno = %s\n"
 msgstr ""
 
-#: i386-gen.c:1473 ia64-gen.c:2829
+#: i386-gen.c:1476 ia64-gen.c:2829
 #, c-format
 msgid "unable to change directory to \"%s\", errno = %s\n"
 msgstr ""
 
-#: i386-gen.c:1485 i386-gen.c:1488
+#: i386-gen.c:1488 i386-gen.c:1491
 #, c-format
 msgid "CpuMax != %d!\n"
 msgstr ""
 
-#: i386-gen.c:1492
+#: i386-gen.c:1495
 #, c-format
 msgid "%d unused bits in i386_cpu_flags.\n"
 msgstr ""
 
-#: i386-gen.c:1499
+#: i386-gen.c:1502
 #, c-format
 msgid "%d unused bits in i386_operand_type.\n"
 msgstr ""
 
-#: i386-gen.c:1513
+#: i386-gen.c:1516
 #, c-format
 msgid "can't create i386-tbl.h, errno = %s\n"
 msgstr ""
@@ -1433,12 +1456,12 @@ msgstr ""
 msgid "$<undefined>"
 msgstr ""
 
-#: ppc-dis.c:347
+#: ppc-dis.c:359
 #, c-format
 msgid "warning: ignoring unknown -M%s option\n"
 msgstr ""
 
-#: ppc-dis.c:793
+#: ppc-dis.c:810
 #, c-format
 msgid ""
 "\n"
@@ -1446,71 +1469,71 @@ msgid ""
 "the -M switch:\n"
 msgstr ""
 
-#: ppc-opc.c:982 ppc-opc.c:1005 ppc-opc.c:1030 ppc-opc.c:1059
+#: ppc-opc.c:990 ppc-opc.c:1013 ppc-opc.c:1038 ppc-opc.c:1067
 msgid "invalid register"
 msgstr ""
 
-#: ppc-opc.c:1307 ppc-opc.c:1337
+#: ppc-opc.c:1315 ppc-opc.c:1345
 msgid "invalid conditional option"
 msgstr ""
 
-#: ppc-opc.c:1309 ppc-opc.c:1339
+#: ppc-opc.c:1317 ppc-opc.c:1347
 msgid "invalid counter access"
 msgstr ""
 
-#: ppc-opc.c:1341
+#: ppc-opc.c:1349
 msgid "attempt to set y bit when using + or - modifier"
 msgstr ""
 
-#: ppc-opc.c:1431
+#: ppc-opc.c:1439
 msgid "invalid mask field"
 msgstr ""
 
-#: ppc-opc.c:1454
+#: ppc-opc.c:1462
 msgid "invalid mfcr mask"
 msgstr ""
 
-#: ppc-opc.c:1528 ppc-opc.c:1552
+#: ppc-opc.c:1536 ppc-opc.c:1576
 msgid "illegal L operand value"
 msgstr ""
 
-#: ppc-opc.c:1558
+#: ppc-opc.c:1582
 msgid "incompatible L operand value"
 msgstr ""
 
-#: ppc-opc.c:1581 ppc-opc.c:1616
+#: ppc-opc.c:1626 ppc-opc.c:1661
 msgid "illegal bitmask"
 msgstr ""
 
-#: ppc-opc.c:1703
+#: ppc-opc.c:1748
 msgid "address register in load range"
 msgstr ""
 
-#: ppc-opc.c:1756
+#: ppc-opc.c:1814
 msgid "index register in load range"
 msgstr ""
 
-#: ppc-opc.c:1772 ppc-opc.c:1828
+#: ppc-opc.c:1843 ppc-opc.c:1924
 msgid "source and target register operands must be different"
 msgstr ""
 
-#: ppc-opc.c:1787
+#: ppc-opc.c:1871
 msgid "invalid register operand when updating"
 msgstr ""
 
-#: ppc-opc.c:1878
+#: ppc-opc.c:1987
 msgid "illegal immediate value"
 msgstr ""
 
-#: ppc-opc.c:2025
+#: ppc-opc.c:2134
 msgid "invalid sprg number"
 msgstr ""
 
-#: ppc-opc.c:2062
+#: ppc-opc.c:2171
 msgid "invalid tbr number"
 msgstr ""
 
-#: ppc-opc.c:2206
+#: ppc-opc.c:2315
 msgid "invalid constant"
 msgstr ""