[PATCH v2 0/9] RISC-V: Support version controling for ISA standard extensions and CSR
authorNelson Chu <nelson.chu@sifive.com>
Wed, 20 May 2020 16:22:48 +0000 (17:22 +0100)
committerNick Clifton <nickc@redhat.com>
Wed, 20 May 2020 16:22:48 +0000 (17:22 +0100)
1. Remove the -mriscv-isa-version and --with-riscv-isa-version options.
We can still use -march to choose the version for each extensions, so there is
no need to add these.

2. Change the arguments of options from [1p9|1p9p1|...] to [1.9|1.9.1|...].
Unlike the architecture string has specified by spec, ther is no need to do
the same thing for options.

3. Spilt the patches to reduce the burdens of review.

[PATCH 3/7] RISC-V: Support new GAS options and configure options to set ISA versions
to
[PATCH v2 3/9] RISC-V: Support GAS option -misa-spec to set ISA versions
[PATCH v2 4/9] RISC-V: Support configure options to set ISA versions by default.

[PATCH 4/7] RISC-V: Support version checking for CSR according to privilege version.
to
[PATCH v2 5/9] RISC-V: Support version checking for CSR according to privilege spec version.
[PATCH v2 6/9] RISC-V: Support configure option to choose the privilege spec version.

4. Use enum class rather than string to compare the choosen ISA spec in opcodes/riscv-opc.c.
The behavior is same as comparing the choosen privilege spec.

include * opcode/riscv.h: Include "bfd.h" to support bfd_boolean.
(enum riscv_isa_spec_class): New enum class.  All supported ISA spec
belong to one of the class
(struct riscv_ext_version): New structure holds version information
for the specific ISA.
* opcode/riscv-opc.h (DECLARE_CSR): There are two version information,
define_version and abort_version.  The define_version means which
privilege spec is started to define the CSR, and the abort_version
means which privilege spec is started to abort the CSR.  If the CSR is
valid for the newest spec, then the abort_version should be
PRIV_SPEC_CLASS_DRAFT.
(DECLARE_CSR_ALIAS): Same as DECLARE_CSR, but only for the obselete CSR.
* opcode/riscv.h (enum riscv_priv_spec_class): New enum class.  Define
the current supported privilege spec versions.
(struct riscv_csr_extra): Add new fields to store more information
about the CSR.  We use these information to find the suitable CSR
address when user choosing a specific privilege spec.

binutils * dwarf.c: Updated since DECLARE_CSR is changed.

opcodes * riscv-opc.c (riscv_ext_version_table): The table used to store
all information about the supported spec and the corresponding ISA
versions.  Currently, only Zicsr is supported to verify the
correctness of Z sub extension settings.  Others will be supported
in the future patches.
(struct isa_spec_t, isa_specs): List for all supported ISA spec
classes and the corresponding strings.
(riscv_get_isa_spec_class): New function.  Get the corresponding ISA
spec class by giving a ISA spec string.
* riscv-opc.c (struct priv_spec_t): New structure.
(struct priv_spec_t priv_specs): List for all supported privilege spec
classes and the corresponding strings.
(riscv_get_priv_spec_class): New function.  Get the corresponding
privilege spec class by giving a spec string.
(riscv_get_priv_spec_name): New function.  Get the corresponding
privilege spec string by giving a CSR version class.
* riscv-dis.c: Updated since DECLARE_CSR is changed.
* riscv-dis.c: Add new disassembler option -Mpriv-spec to dump the CSR
according to the chosen version.  Build a hash table riscv_csr_hash to
store the valid CSR for the chosen pirv verison.  Dump the direct
CSR address rather than it's name if it is invalid.
(parse_riscv_dis_option_without_args): New function.  Parse the options
without arguments.
(parse_riscv_dis_option): Call parse_riscv_dis_option_without_args to
parse the options without arguments first, and then handle the options
with arguments.  Add the new option -Mpriv-spec, which has argument.
* riscv-dis.c (print_riscv_disassembler_options): Add description
about the new OBJDUMP option.

ld * testsuite/ld-riscv-elf/attr-merge-arch-01.d: Updated
        priv attributes according to the -mpriv-spec option.
* testsuite/ld-riscv-elf/attr-merge-arch-02.d: Likewise.
* testsuite/ld-riscv-elf/attr-merge-arch-03.d: Likewise.
* testsuite/ld-riscv-elf/attr-merge-priv-spec-a.s: Likewise.
* testsuite/ld-riscv-elf/attr-merge-priv-spec-b.s: Likewise.
* testsuite/ld-riscv-elf/attr-merge-priv-spec.d: Likewise.
* testsuite/ld-riscv-elf/attr-merge-stack-align.d: Likewise.
* testsuite/ld-riscv-elf/attr-merge-strict-align-01.d: Likewise.
* testsuite/ld-riscv-elf/attr-merge-strict-align-02.d: Likewise.
* testsuite/ld-riscv-elf/attr-merge-strict-align-03.d: Likewise.
* testsuite/ld-riscv-elf/attr-merge-strict-align-04.d: Likewise.
* testsuite/ld-riscv-elf/attr-merge-strict-align-05.d: Likewise.

bfd  * elfxx-riscv.h (riscv_parse_subset_t): Add new callback function
get_default_version.  It is used to find the default version for
the specific extension.
* elfxx-riscv.c (riscv_parsing_subset_version): Remove the parameters
default_major_version and default_minor_version.  Add new bfd_boolean
parameter *use_default_version.  Set it to TRUE if we need to call
the callback rps->get_default_version to find the default version.
(riscv_parse_std_ext): Call rps->get_default_version if we fail to find
the default version in riscv_parsing_subset_version, and then call
riscv_add_subset to add the subset into subset list.
(riscv_parse_prefixed_ext): Likewise.
(riscv_std_z_ext_strtab): Support Zicsr extensions.
* elfnn-riscv.c (riscv_merge_std_ext): Use strcasecmp to compare the
strings rather than characters.
riscv_merge_arch_attr_info): The callback function get_default_version
is only needed for assembler, so set it to NULL int the linker.
* elfxx-riscv.c (riscv_estimate_digit): Remove the static.
* elfxx-riscv.h: Updated.

gas * testsuite/gas/riscv/priv-reg-fail-read-only-01.s: Updated.
* config/tc-riscv.c (default_arch_with_ext, default_isa_spec):
Static variables which are used to set the ISA extensions. You can
use -march (or ELF build attributes) and -misa-spec to set them,
respectively.
(ext_version_hash): The hash table used to handle the extensions
with versions.
(init_ext_version_hash): Initialize the ext_version_hash according
to riscv_ext_version_table.
(riscv_get_default_ext_version): The callback function of
riscv_parse_subset_t.  According to the choosed ISA spec,
get the default version for the specific extension.
(riscv_set_arch): Set the callback function.
(enum options, struct option md_longopts): Add new option -misa-spec.
(md_parse_option): Do not call riscv_set_arch for -march.  We will
call it later in riscv_after_parse_args.  Call riscv_get_isa_spec_class
to set default_isa_spec class.
(riscv_after_parse_args): Call init_ext_version_hash to initialize the
ext_version_hash, and then call riscv_set_arch to set the architecture
with versions according to default_arch_with_ext.
* testsuite/gas/riscv/attribute-02.d: Set 0p0 as default version for
x extensions.
* testsuite/gas/riscv/attribute-03.d: Likewise.
* testsuite/gas/riscv/attribute-09.d: New testcase.  For i-ext, we
already set it's version to 2p1 by march, so no need to use the default
2p2 version.  For m-ext, we do not set the version by -march and ELF arch
attribute, so set the default 2p0 to it.  For zicsr, it is not defined in
ISA spec 2p2, so set 0p0 to it.
* testsuite/gas/riscv/attribute-10.d: New testcase.  The version of
zicsr is 2p0 according to ISA spec 20191213.
* config/tc-riscv.c (DEFAULT_RISCV_ARCH_WITH_EXT)
(DEFAULT_RISCV_ISA_SPEC): Default configure option settings.
You can set them by configure options --with-arch and
--with-isa-spec, respectively.
(riscv_set_default_isa_spec): New function used to set the
default ISA spec.
(md_parse_option): Call riscv_set_default_isa_spec rather than
call riscv_get_isa_spec_class directly.
(riscv_after_parse_args): If the -isa-spec is not set, then we
set the default ISA spec according to DEFAULT_RISCV_ISA_SPEC by
calling riscv_set_default_isa_spec.
* testsuite/gas/riscv/attribute-01.d: Add -misa-spec=2.2, since
the --with-isa-spec may be set to different ISA spec.
* testsuite/gas/riscv/attribute-02.d: Likewise.
* testsuite/gas/riscv/attribute-03.d: Likewise.
* testsuite/gas/riscv/attribute-04.d: Likewise.
* testsuite/gas/riscv/attribute-05.d: Likewise.
* testsuite/gas/riscv/attribute-06.d: Likewise.
* testsuite/gas/riscv/attribute-07.d: Likewise.
* configure.ac: Add configure options, --with-arch and
--with-isa-spec.
* configure: Regenerated.
* config.in: Regenerated.
* config/tc-riscv.c (default_priv_spec): Static variable which is
used to check if the CSR is valid for the chosen privilege spec. You
can use -mpriv-spec to set it.
(enum reg_class): We now get the CSR address from csr_extra_hash rather
than reg_names_hash.  Therefore, move RCLASS_CSR behind RCLASS_MAX.
(riscv_init_csr_hashes): Only need to initialize one hash table
csr_extra_hash.
(riscv_csr_class_check): Change the return type to void.  Don't check
the ISA dependency if -mcsr-check isn't set.
(riscv_csr_version_check): New function.  Check and find the CSR address
from csr_extra_hash, according to default_priv_spec.  Report warning
for the invalid CSR if -mcsr-check is set.
(reg_csr_lookup_internal): Updated.
(reg_lookup_internal): Likewise.
(md_begin): Updated since DECLARE_CSR and DECLARE_CSR_ALIAS are changed.
(enum options, struct option md_longopts): Add new GAS option -mpriv-spec.
(md_parse_option): Call riscv_set_default_priv_version to set
default_priv_spec.
(riscv_after_parse_args): If -mpriv-spec isn't set, then set the default
privilege spec to the newest one.
(enum riscv_csr_class, struct riscv_csr_extra): Move them to
include/opcode/riscv.h.
* testsuite/gas/riscv/priv-reg-fail-fext.d: This test case just want
to check the ISA dependency for CSR, so fix the spec version by adding
-mpriv-spec=1.11.
* testsuite/gas/riscv/priv-reg-fail-fext.l: Likewise.  There are some
version warnings for the test case.
* gas/testsuite/gas/riscv/priv-reg-fail-read-only-01.d: Likewise.
* gas/testsuite/gas/riscv/priv-reg-fail-read-only-01.l: Likewise.
* gas/testsuite/gas/riscv/priv-reg-fail-read-only-02.d: Likewise.
* gas/testsuite/gas/riscv/priv-reg-fail-rv32-only.d: Likewise.
* gas/testsuite/gas/riscv/priv-reg-fail-rv32-only.l: Likewise.
* gas/testsuite/gas/riscv/priv-reg-fail-version-1p9.d: New test case.
Check whether the CSR is valid when privilege version 1.9 is choosed.
* gas/testsuite/gas/riscv/priv-reg-fail-version-1p9.l: Likewise.
* gas/testsuite/gas/riscv/priv-reg-fail-version-1p9p1.d: New test case.
Check whether the CSR is valid when privilege version 1.9.1 is choosed.
* gas/testsuite/gas/riscv/priv-reg-fail-version-1p9p1.l: Likewise.
* gas/testsuite/gas/riscv/priv-reg-fail-version-1p10.d: New test case.
Check whether the CSR is valid when privilege version 1.10 is choosed.
* gas/testsuite/gas/riscv/priv-reg-fail-version-1p10.l: Likewise.
* gas/testsuite/gas/riscv/priv-reg-fail-version-1p11.d: New test case.
Check whether the CSR is valid when privilege version 1.11 is choosed.
* gas/testsuite/gas/riscv/priv-reg-fail-version-1p11.l: Likewise.
* config/tc-riscv.c (DEFAULT_RISCV_ISA_SPEC): Default configure option
setting.  You can set it by configure option --with-priv-spec.
(riscv_set_default_priv_spec): New function used to set the default
privilege spec.
(md_parse_option): Call riscv_set_default_priv_spec rather than
call riscv_get_priv_spec_class directly.
(riscv_after_parse_args): If -mpriv-spec isn't set, then we set the
default privilege spec according to DEFAULT_RISCV_PRIV_SPEC by
calling riscv_set_default_priv_spec.
* testsuite/gas/riscv/csr-dw-regnums.d: Add -mpriv-spec=1.11, since
the --with-priv-spec may be set to different privilege spec.
* testsuite/gas/riscv/priv-reg.d: Likewise.
* configure.ac: Add configure option --with-priv-spec.
* configure: Regenerated.
* config.in: Regenerated.
* config/tc-riscv.c (explicit_attr): Rename explicit_arch_attr to
explicit_attr.  Set it to TRUE if any ELF attribute is found.
(riscv_set_default_priv_spec): Try to set the default_priv_spec if
the priv attributes are set.
(md_assemble): Set the default_priv_spec according to the priv
attributes when we start to assemble instruction.
(riscv_write_out_attrs): Rename riscv_write_out_arch_attr to
riscv_write_out_attrs.  Update the arch and priv attributes.  If we
don't set the corresponding ELF attributes, then try to output the
default ones.
(riscv_set_public_attributes): If any ELF attribute or -march-attr
options is set (explicit_attr is TRUE), then call riscv_write_out_attrs
to update the arch and priv attributes.
(s_riscv_attribute): Make sure all arch and priv attributes are set
before any instruction.
* testsuite/gas/riscv/attribute-01.d: Update the priv attributes if any
ELF attribute or -march-attr is set.  If the priv attributes are not
set, then try to update them by the default setting (-mpriv-spec or
--with-priv-spec).
* testsuite/gas/riscv/attribute-02.d: Likewise.
* testsuite/gas/riscv/attribute-03.d: Likewise.
* testsuite/gas/riscv/attribute-04.d: Likewise.
* testsuite/gas/riscv/attribute-06.d: Likewise.
* testsuite/gas/riscv/attribute-07.d: Likewise.
* testsuite/gas/riscv/attribute-08.d: Likewise.
* testsuite/gas/riscv/attribute-09.d: Likewise.
* testsuite/gas/riscv/attribute-10.d: Likewise.
* testsuite/gas/riscv/attribute-unknown.d: Likewise.
* testsuite/gas/riscv/attribute-05.d: Likewise.  Also, the priv spec
set by priv attributes must be supported.
* testsuite/gas/riscv/attribute-05.s: Likewise.
* testsuite/gas/riscv/priv-reg-fail-version-1p9.d: Likewise.  Updated
priv attributes according to the -mpriv-spec option.
* testsuite/gas/riscv/priv-reg-fail-version-1p9p1.d: Likewise.
* testsuite/gas/riscv/priv-reg-fail-version-1p10.d: Likewise.
* testsuite/gas/riscv/priv-reg-fail-version-1p11.d: Likewise.
* testsuite/gas/riscv/priv-reg.d: Removed.
* testsuite/gas/riscv/priv-reg-version-1p9.d: New test case.  Dump the
CSR according to the priv spec 1.9.
* testsuite/gas/riscv/priv-reg-version-1p9p1.d: New test case.  Dump the
CSR according to the priv spec 1.9.1.
* testsuite/gas/riscv/priv-reg-version-1p10.d: New test case.  Dump the
CSR according to the priv spec 1.10.
* testsuite/gas/riscv/priv-reg-version-1p11.d: New test case.  Dump the
CSR according to the priv spec 1.11.
* config/tc-riscv.c (md_show_usage): Add descriptions about
the new GAS options.
* doc/c-riscv.texi: Likewise.

71 files changed:
bfd/ChangeLog
bfd/elfnn-riscv.c
bfd/elfxx-riscv.c
bfd/elfxx-riscv.h
bfd/po/bfd.pot
binutils/ChangeLog
binutils/dwarf.c
gas/ChangeLog
gas/config.in
gas/config/tc-riscv.c
gas/configure
gas/configure.ac
gas/doc/c-riscv.texi
gas/po/gas.pot
gas/testsuite/gas/riscv/attribute-01.d
gas/testsuite/gas/riscv/attribute-02.d
gas/testsuite/gas/riscv/attribute-03.d
gas/testsuite/gas/riscv/attribute-04.d
gas/testsuite/gas/riscv/attribute-05.d
gas/testsuite/gas/riscv/attribute-05.s
gas/testsuite/gas/riscv/attribute-06.d
gas/testsuite/gas/riscv/attribute-07.d
gas/testsuite/gas/riscv/attribute-08.d
gas/testsuite/gas/riscv/attribute-09.d [new file with mode: 0644]
gas/testsuite/gas/riscv/attribute-10.d [new file with mode: 0644]
gas/testsuite/gas/riscv/attribute-unknown.d
gas/testsuite/gas/riscv/csr-dw-regnums.d
gas/testsuite/gas/riscv/march-fail-s-with-version [deleted file]
gas/testsuite/gas/riscv/priv-reg-fail-fext.d
gas/testsuite/gas/riscv/priv-reg-fail-fext.l
gas/testsuite/gas/riscv/priv-reg-fail-read-only-01.d
gas/testsuite/gas/riscv/priv-reg-fail-read-only-01.l
gas/testsuite/gas/riscv/priv-reg-fail-read-only-01.s
gas/testsuite/gas/riscv/priv-reg-fail-read-only-02.d
gas/testsuite/gas/riscv/priv-reg-fail-rv32-only.d
gas/testsuite/gas/riscv/priv-reg-fail-rv32-only.l
gas/testsuite/gas/riscv/priv-reg-fail-version-1p10.d [new file with mode: 0644]
gas/testsuite/gas/riscv/priv-reg-fail-version-1p10.l [new file with mode: 0644]
gas/testsuite/gas/riscv/priv-reg-fail-version-1p11.d [new file with mode: 0644]
gas/testsuite/gas/riscv/priv-reg-fail-version-1p11.l [new file with mode: 0644]
gas/testsuite/gas/riscv/priv-reg-fail-version-1p9.d [new file with mode: 0644]
gas/testsuite/gas/riscv/priv-reg-fail-version-1p9.l [new file with mode: 0644]
gas/testsuite/gas/riscv/priv-reg-fail-version-1p9p1.d [new file with mode: 0644]
gas/testsuite/gas/riscv/priv-reg-fail-version-1p9p1.l [new file with mode: 0644]
gas/testsuite/gas/riscv/priv-reg-version-1p10.d [new file with mode: 0644]
gas/testsuite/gas/riscv/priv-reg-version-1p11.d [new file with mode: 0644]
gas/testsuite/gas/riscv/priv-reg-version-1p9.d [new file with mode: 0644]
gas/testsuite/gas/riscv/priv-reg-version-1p9p1.d [new file with mode: 0644]
gas/testsuite/gas/riscv/priv-reg.d [deleted file]
gdb/riscv-tdep.c
gdb/riscv-tdep.h
include/ChangeLog
include/opcode/riscv-opc.h
include/opcode/riscv.h
ld/ChangeLog
ld/testsuite/ld-riscv-elf/attr-merge-arch-01.d
ld/testsuite/ld-riscv-elf/attr-merge-arch-02.d
ld/testsuite/ld-riscv-elf/attr-merge-arch-03.d
ld/testsuite/ld-riscv-elf/attr-merge-priv-spec-a.s
ld/testsuite/ld-riscv-elf/attr-merge-priv-spec-b.s
ld/testsuite/ld-riscv-elf/attr-merge-priv-spec.d
ld/testsuite/ld-riscv-elf/attr-merge-stack-align.d
ld/testsuite/ld-riscv-elf/attr-merge-strict-align-01.d
ld/testsuite/ld-riscv-elf/attr-merge-strict-align-02.d
ld/testsuite/ld-riscv-elf/attr-merge-strict-align-03.d
ld/testsuite/ld-riscv-elf/attr-merge-strict-align-04.d
ld/testsuite/ld-riscv-elf/attr-merge-strict-align-05.d
opcodes/ChangeLog
opcodes/po/opcodes.pot
opcodes/riscv-dis.c
opcodes/riscv-opc.c

index 18543cf84039c93b5630c1cd1be645a35a609ae4..b3dabb3f33a3993654996887967cb203ce9e7b24 100644 (file)
@@ -1,3 +1,24 @@
+2020-05-20  Nelson Chu  <nelson.chu@sifive.com>
+
+       * elfxx-riscv.h (riscv_parse_subset_t): Add new callback function
+       get_default_version.  It is used to find the default version for
+       the specific extension.
+       * elfxx-riscv.c (riscv_parsing_subset_version): Remove the parameters
+       default_major_version and default_minor_version.  Add new bfd_boolean
+       parameter *use_default_version.  Set it to TRUE if we need to call
+       the callback rps->get_default_version to find the default version.
+       (riscv_parse_std_ext): Call rps->get_default_version if we fail to find
+       the default version in riscv_parsing_subset_version, and then call
+       riscv_add_subset to add the subset into subset list.
+       (riscv_parse_prefixed_ext): Likewise.
+       (riscv_std_z_ext_strtab): Support Zicsr extensions.
+       * elfnn-riscv.c (riscv_merge_std_ext): Use strcasecmp to compare the
+       strings rather than characters.
+       riscv_merge_arch_attr_info): The callback function get_default_version
+       is only needed for assembler, so set it to NULL int the linker.
+       * elfxx-riscv.c (riscv_estimate_digit): Remove the static.
+       * elfxx-riscv.h: Updated.
+
 2020-05-20  Alan Modra  <amodra@gmail.com>
 
        PR 25993
index a9e8132505ba969027ac6aed9d336251fc9a2755..e8e377e32572237b107ec92ecbfd856ef31da95b 100644 (file)
@@ -2810,7 +2810,7 @@ riscv_merge_std_ext (bfd *ibfd,
   if (!riscv_i_or_e_p (ibfd, out_arch, out))
     return FALSE;
 
-  if (in->name[0] != out->name[0])
+  if (strcasecmp (in->name, out->name) != 0)
     {
       /* TODO: We might allow merge 'i' with 'e'.  */
       _bfd_error_handler
@@ -2983,13 +2983,17 @@ riscv_merge_arch_attr_info (bfd *ibfd, char *in_arch, char *out_arch)
   riscv_parse_subset_t rpe_in;
   riscv_parse_subset_t rpe_out;
 
+  /* Only assembler needs to check the default version of ISA, so just set
+     the rpe_in.get_default_version and rpe_out.get_default_version to NULL.  */
   rpe_in.subset_list = &in_subsets;
   rpe_in.error_handler = _bfd_error_handler;
   rpe_in.xlen = &xlen_in;
+  rpe_in.get_default_version = NULL;
 
   rpe_out.subset_list = &out_subsets;
   rpe_out.error_handler = _bfd_error_handler;
   rpe_out.xlen = &xlen_out;
+  rpe_out.get_default_version = NULL;
 
   if (in_arch == NULL && out_arch == NULL)
     return NULL;
index b15fdee9c7139c95582bb78ebc044826d402c903..5dd36ab965a9e56fe778d3c408faa2ec289c1c2c 100644 (file)
@@ -1025,9 +1025,8 @@ riscv_elf_add_sub_reloc (bfd *abfd,
      `minor_version`: Parsing result of minor version, set to 0 if version is
      not present in arch string, but set to `default_minor_version` if
      `major_version` using default_major_version.
-     `default_major_version`: Default major version.
-     `default_minor_version`: Default minor version.
-     `std_ext_p`: True if parsing std extension.  */
+     `std_ext_p`: True if parsing std extension.
+     `use_default_version`: Set it to True if we need the default version.  */
 
 static const char *
 riscv_parsing_subset_version (riscv_parse_subset_t *rps,
@@ -1035,17 +1034,16 @@ riscv_parsing_subset_version (riscv_parse_subset_t *rps,
                              const char *p,
                              unsigned *major_version,
                              unsigned *minor_version,
-                             unsigned default_major_version,
-                             unsigned default_minor_version,
-                             bfd_boolean std_ext_p)
+                             bfd_boolean std_ext_p,
+                             bfd_boolean *use_default_version)
 {
   bfd_boolean major_p = TRUE;
   unsigned version = 0;
-  unsigned major = 0;
-  unsigned minor = 0;
   char np;
 
-  for (;*p; ++p)
+  *major_version = 0;
+  *minor_version = 0;
+  for (; *p; ++p)
     {
       if (*p == 'p')
        {
@@ -1062,13 +1060,14 @@ riscv_parsing_subset_version (riscv_parse_subset_t *rps,
                }
              else
                {
-                 rps->error_handler ("-march=%s: Expect number after `%dp'.",
-                                     march, version);
+                 rps->error_handler
+                   (_("-march=%s: Expect number after `%dp'."),
+                    march, version);
                  return NULL;
                }
            }
 
-         major = version;
+         *major_version = version;
          major_p = FALSE;
          version = 0;
        }
@@ -1079,21 +1078,15 @@ riscv_parsing_subset_version (riscv_parse_subset_t *rps,
     }
 
   if (major_p)
-    major = version;
+    *major_version = version;
   else
-    minor = version;
+    *minor_version = version;
 
-  if (major == 0 && minor == 0)
-    {
-      /* We don't found any version string, use default version.  */
-      *major_version = default_major_version;
-      *minor_version = default_minor_version;
-    }
-  else
-    {
-      *major_version = major;
-      *minor_version = minor;
-    }
+  /* We can not find any version in string, need to parse default version.  */
+  if (use_default_version != NULL
+      && *major_version == 0
+      && *minor_version == 0)
+    *use_default_version = TRUE;
   return p;
 }
 
@@ -1118,78 +1111,114 @@ riscv_supported_std_ext (void)
 
 static const char *
 riscv_parse_std_ext (riscv_parse_subset_t *rps,
-                    const char *march, const char *p)
+                    const char *march,
+                    const char *p)
 {
   const char *all_std_exts = riscv_supported_std_ext ();
   const char *std_exts = all_std_exts;
-
   unsigned major_version = 0;
   unsigned minor_version = 0;
   char std_ext = '\0';
+  bfd_boolean use_default_version = FALSE;
 
   /* First letter must start with i, e or g.  */
   switch (*p)
     {
       case 'i':
-       p++;
-       p = riscv_parsing_subset_version (
-             rps,
-             march,
-             p, &major_version, &minor_version,
-             /* default_major_version= */ 2,
-             /* default_minor_version= */ 0,
-             /* std_ext_p= */TRUE);
-       riscv_add_subset (rps->subset_list, "i", major_version, minor_version);
+       p = riscv_parsing_subset_version (rps,
+                                         march,
+                                         ++p,
+                                         &major_version,
+                                         &minor_version,
+                                         /* std_ext_p= */TRUE,
+                                         &use_default_version);
+
+       /* Find the default version if needed.  */
+       if (use_default_version
+           && rps->get_default_version != NULL)
+         rps->get_default_version ("i",
+                                   &major_version,
+                                   &minor_version);
+       riscv_add_subset (rps->subset_list, "i",
+                         major_version, minor_version);
        break;
 
       case 'e':
-       p++;
-       p = riscv_parsing_subset_version (
-             rps,
-             march,
-             p, &major_version, &minor_version,
-             /* default_major_version= */ 1,
-             /* default_minor_version= */ 9,
-             /* std_ext_p= */TRUE);
-
-       riscv_add_subset (rps->subset_list, "e", major_version, minor_version);
-       riscv_add_subset (rps->subset_list, "i", 2, 0);
+       p = riscv_parsing_subset_version (rps,
+                                         march,
+                                         ++p,
+                                         &major_version,
+                                         &minor_version,
+                                         /* std_ext_p= */TRUE,
+                                         &use_default_version);
+
+       /* Find the default version if needed.  */
+       if (use_default_version
+           && rps->get_default_version != NULL)
+         rps->get_default_version ("e",
+                                   &major_version,
+                                   &minor_version);
+       riscv_add_subset (rps->subset_list, "e",
+                         major_version, minor_version);
+
+       /* i-ext must be enabled.  */
+       if (rps->get_default_version != NULL)
+         rps->get_default_version ("i",
+                                   &major_version,
+                                   &minor_version);
+       riscv_add_subset (rps->subset_list, "i",
+                         major_version, minor_version);
 
        if (*rps->xlen > 32)
          {
-           rps->error_handler ("-march=%s: rv%de is not a valid base ISA",
-                               march, *rps->xlen);
+           rps->error_handler
+             (_("-march=%s: rv%de is not a valid base ISA"),
+              march, *rps->xlen);
            return NULL;
          }
-
        break;
 
       case 'g':
-       p++;
-       p = riscv_parsing_subset_version (
-             rps,
-             march,
-             p, &major_version, &minor_version,
-             /* default_major_version= */ 2,
-             /* default_minor_version= */ 0,
-             /* std_ext_p= */TRUE);
-       riscv_add_subset (rps->subset_list, "i", major_version, minor_version);
+       /* The g-ext shouldn't has the version, so we just
+          skip the setting if user set a version to it.  */
+       p = riscv_parsing_subset_version (rps,
+                                         march,
+                                         ++p,
+                                         &major_version,
+                                         &minor_version,
+                                         TRUE,
+                                         &use_default_version);
+
+       /* i-ext must be enabled.  */
+       if (rps->get_default_version != NULL)
+         rps->get_default_version ("i",
+                                   &major_version,
+                                   &minor_version);
+       riscv_add_subset (rps->subset_list, "i",
+                         major_version, minor_version);
 
        for ( ; *std_exts != 'q'; std_exts++)
          {
            const char subset[] = {*std_exts, '\0'};
-           riscv_add_subset (
-             rps->subset_list, subset, major_version, minor_version);
+
+           if (rps->get_default_version != NULL)
+             rps->get_default_version (subset,
+                                       &major_version,
+                                       &minor_version);
+           riscv_add_subset (rps->subset_list, subset,
+                             major_version, minor_version);
          }
        break;
 
       default:
-       rps->error_handler (
-         "-march=%s: first ISA subset must be `e', `i' or `g'", march);
+       rps->error_handler
+         (_("-march=%s: first ISA subset must be `e', `i' or `g'"), march);
        return NULL;
     }
 
-  while (*p)
+  /* The riscv_parsing_subset_version may set `p` to NULL, so I think we should
+     skip parsing the string if `p` is NULL or value of `p` is `\0`.  */
+  while (p != NULL && *p != '\0')
     {
       char subset[2] = {0, 0};
 
@@ -1210,29 +1239,35 @@ riscv_parse_std_ext (riscv_parse_subset_t *rps,
       if (std_ext != *std_exts)
        {
          if (strchr (all_std_exts, std_ext) == NULL)
-           rps->error_handler (
-             "-march=%s: unsupported ISA subset `%c'", march, *p);
+           rps->error_handler
+             (_("-march=%s: unsupported ISA subset `%c'"), march, *p);
          else
-           rps->error_handler (
-             "-march=%s: ISA string is not in canonical order. `%c'",
-             march, *p);
+           rps->error_handler
+             (_("-march=%s: ISA string is not in canonical order. `%c'"),
+              march, *p);
          return NULL;
        }
 
       std_exts++;
 
-      p++;
-      p = riscv_parsing_subset_version (
-           rps,
-           march,
-           p, &major_version, &minor_version,
-           /* default_major_version= */ 2,
-           /* default_minor_version= */ 0,
-           /* std_ext_p= */TRUE);
-
+      use_default_version = FALSE;
       subset[0] = std_ext;
-
-      riscv_add_subset (rps->subset_list, subset, major_version, minor_version);
+      p = riscv_parsing_subset_version (rps,
+                                       march,
+                                       ++p,
+                                       &major_version,
+                                       &minor_version,
+                                       TRUE,
+                                       &use_default_version);
+
+      /* Find the default version if needed.  */
+      if (use_default_version
+         && rps->get_default_version != NULL)
+       rps->get_default_version (subset,
+                                 &major_version,
+                                 &minor_version);
+      riscv_add_subset (rps->subset_list, subset,
+                       major_version, minor_version);
     }
   return p;
 }
@@ -1272,9 +1307,10 @@ typedef struct riscv_parse_config
 } riscv_parse_config_t;
 
 /* Parse a generic prefixed extension.
-   march: The full architecture string as passed in by "-march=...".
-   p: Point from which to start parsing the -march string.
-   config: What class of extensions to parse, predicate funcs,
+   `rps`: Hooks and status for parsing subset.
+   `march`: The full architecture string as passed in by "-march=...".
+   `p`: Point from which to start parsing the -march string.
+   `config`: What class of extensions to parse, predicate funcs,
    and strings to use in error reporting.  */
 
 static const char *
@@ -1287,6 +1323,7 @@ riscv_parse_prefixed_ext (riscv_parse_subset_t *rps,
   unsigned minor_version = 0;
   const char *last_name;
   riscv_isa_ext_class_t class;
+  bfd_boolean use_default_version;
 
   while (*p)
     {
@@ -1309,15 +1346,11 @@ riscv_parse_prefixed_ext (riscv_parse_subset_t *rps,
       while (*++q != '\0' && *q != '_' && !ISDIGIT (*q))
        ;
 
+      use_default_version = FALSE;
       end_of_version =
-       riscv_parsing_subset_version (
-         rps,
-         march,
-         q, &major_version, &minor_version,
-         /* default_major_version= */ 2,
-         /* default_minor_version= */ 0,
-         /* std_ext_p= */FALSE);
-
+       riscv_parsing_subset_version (rps, march, q, &major_version,
+                                     &minor_version, FALSE,
+                                     &use_default_version);
       *q = '\0';
 
       /* Check that the name is valid.
@@ -1329,7 +1362,7 @@ riscv_parse_prefixed_ext (riscv_parse_subset_t *rps,
       if (!config->ext_valid_p (subset))
        {
          rps->error_handler
-           ("-march=%s: Invalid or unknown %s ISA extension: '%s'",
+           (_("-march=%s: Invalid or unknown %s ISA extension: '%s'"),
             march, config->prefix, subset);
          free (subset);
          return NULL;
@@ -1337,11 +1370,11 @@ riscv_parse_prefixed_ext (riscv_parse_subset_t *rps,
 
       /* Check that the last item is not the same as this.  */
       last_name = rps->subset_list->tail->name;
-
       if (!strcasecmp (last_name, subset))
        {
-         rps->error_handler ("-march=%s: Duplicate %s ISA extension: \'%s\'",
-                             march, config->prefix, subset);
+         rps->error_handler
+           (_("-march=%s: Duplicate %s ISA extension: \'%s\'"),
+            march, config->prefix, subset);
          free (subset);
          return NULL;
        }
@@ -1350,20 +1383,29 @@ riscv_parse_prefixed_ext (riscv_parse_subset_t *rps,
       if (!strncasecmp (last_name, config->prefix, 1)
          && strcasecmp (last_name, subset) > 0)
        {
-         rps->error_handler ("-march=%s: %s ISA extension not in alphabetical "
-                             "order: \'%s\' must come before \'%s\'.",
-                             march, config->prefix, subset, last_name);
+         rps->error_handler
+           (_("\
+-march=%s: %s ISA extension not in alphabetical order: \'%s\' must come before \'%s\'."),
+            march, config->prefix, subset, last_name);
          free (subset);
          return NULL;
        }
 
-      riscv_add_subset (rps->subset_list, subset, major_version, minor_version);
+      /* Find the default version if needed.  */
+      if (use_default_version
+         && rps->get_default_version != NULL)
+       rps->get_default_version (subset,
+                                 &major_version,
+                                 &minor_version);
+      riscv_add_subset (rps->subset_list, subset,
+                       major_version, minor_version);
+
       free (subset);
       p += end_of_version - subset;
 
       if (*p != '\0' && *p != '_')
        {
-         rps->error_handler ("-march=%s: %s must separate with _",
+         rps->error_handler (_("-march=%s: %s must separate with _"),
                              march, config->prefix);
          return NULL;
        }
@@ -1384,7 +1426,7 @@ riscv_parse_prefixed_ext (riscv_parse_subset_t *rps,
 
 static const char * const riscv_std_z_ext_strtab[] =
   {
-    NULL
+    "zicsr", NULL
   };
 
 /* Same as `riscv_std_z_ext_strtab', but for S-class extensions.  */
@@ -1478,8 +1520,9 @@ riscv_parse_subset (riscv_parse_subset_t *rps,
     }
   else
     {
-      rps->error_handler ("-march=%s: ISA string must begin with rv32 or rv64",
-                         arch);
+      rps->error_handler
+       (_("-march=%s: ISA string must begin with rv32 or rv64"),
+        arch);
       return FALSE;
     }
 
@@ -1490,7 +1533,6 @@ riscv_parse_subset (riscv_parse_subset_t *rps,
     return FALSE;
 
   /* Parse the different classes of extensions in the specified order.  */
-
   for (i = 0; i < ARRAY_SIZE (parse_config); ++i) {
     p = riscv_parse_prefixed_ext (rps, arch, p, &parse_config[i]);
 
@@ -1500,7 +1542,7 @@ riscv_parse_subset (riscv_parse_subset_t *rps,
 
   if (*p != '\0')
     {
-      rps->error_handler ("-march=%s: unexpected ISA string at end: %s",
+      rps->error_handler (_("-march=%s: unexpected ISA string at end: %s"),
                          arch, p);
       return FALSE;
     }
@@ -1508,31 +1550,35 @@ riscv_parse_subset (riscv_parse_subset_t *rps,
   if (riscv_lookup_subset (rps->subset_list, "e")
       && riscv_lookup_subset (rps->subset_list, "f"))
     {
-      rps->error_handler ("-march=%s: rv32e does not support the `f' extension",
-                         arch);
+      rps->error_handler
+       (_("-march=%s: rv32e does not support the `f' extension"),
+        arch);
       return FALSE;
     }
 
   if (riscv_lookup_subset (rps->subset_list, "d")
       && !riscv_lookup_subset (rps->subset_list, "f"))
     {
-      rps->error_handler ("-march=%s: `d' extension requires `f' extension",
-                         arch);
+      rps->error_handler
+       (_("-march=%s: `d' extension requires `f' extension"),
+        arch);
       return FALSE;
     }
 
   if (riscv_lookup_subset (rps->subset_list, "q")
       && !riscv_lookup_subset (rps->subset_list, "d"))
     {
-      rps->error_handler ("-march=%s: `q' extension requires `d' extension",
-                         arch);
+      rps->error_handler
+       (_("-march=%s: `q' extension requires `d' extension"),
+        arch);
       return FALSE;
     }
 
   if (riscv_lookup_subset (rps->subset_list, "q") && *rps->xlen < 64)
     {
-      rps->error_handler ("-march=%s: rv32 does not support the `q' extension",
-                         arch);
+      rps->error_handler
+       (_("-march=%s: rv32 does not support the `q' extension"),
+        arch);
       return FALSE;
     }
   return TRUE;
@@ -1543,7 +1589,8 @@ riscv_parse_subset (riscv_parse_subset_t *rps,
 void
 riscv_add_subset (riscv_subset_list_t *subset_list,
                  const char *subset,
-                 int major, int minor)
+                 int major,
+                 int minor)
 {
   riscv_subset_t *s = xmalloc (sizeof *s);
 
@@ -1567,10 +1614,10 @@ riscv_subset_t *
 riscv_lookup_subset (const riscv_subset_list_t *subset_list,
                     const char *subset)
 {
-  return riscv_lookup_subset_version (
-          subset_list, subset,
-          RISCV_DONT_CARE_VERSION,
-          RISCV_DONT_CARE_VERSION);
+  return riscv_lookup_subset_version
+    (subset_list, subset,
+     RISCV_DONT_CARE_VERSION,
+     RISCV_DONT_CARE_VERSION);
 }
 
 /* Find subset in list with version checking, return NULL if not found.  */
@@ -1617,7 +1664,7 @@ riscv_release_subset_list (riscv_subset_list_t *subset_list)
 
 /* Return the number of digits for the input.  */
 
-static size_t
+size_t
 riscv_estimate_digit (unsigned num)
 {
   size_t digit = 0;
index 76ee27404cb3c7cc9809d3e82d679c7d5f99f647..7b8f09b82c4b11a2986ff958f4c839203369b561 100644 (file)
@@ -72,6 +72,9 @@ typedef struct {
   void (*error_handler) (const char *,
                         ...) ATTRIBUTE_PRINTF_1;
   unsigned *xlen;
+  void (*get_default_version) (const char *,
+                              unsigned int *,
+                              unsigned int *);
 } riscv_parse_subset_t;
 
 extern bfd_boolean
@@ -87,6 +90,9 @@ riscv_release_subset_list (riscv_subset_list_t *);
 extern char *
 riscv_arch_str (unsigned, const riscv_subset_list_t *);
 
+extern size_t
+riscv_estimate_digit (unsigned);
+
 /* ISA extension name class. E.g. "zbb" corresponds to RV_ISA_CLASS_Z,
    "xargs" corresponds to RV_ISA_CLASS_X, etc.  Order is important
    here.  */
index ef909fa069849b454a33bdce9c62d9920a86bf4b..3b4f0afba351327392df56b10d8395b9ba01ede6 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: 2020-01-18 13:58+0000\n"
+"POT-Creation-Date: 2020-05-20 15:51+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,53 +18,58 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
 
-#: aout-cris.c:200
+#: aout-cris.c:196
 #, c-format
 msgid "%pB: unsupported relocation type exported: %#x"
 msgstr ""
 
-#: aout-cris.c:244
+#: aout-cris.c:242
 #, c-format
 msgid "%pB: unsupported relocation type imported: %#x"
 msgstr ""
 
-#: aout-cris.c:256
+#: aout-cris.c:254
 #, c-format
 msgid "%pB: bad relocation record imported: %d"
 msgstr ""
 
-#: aoutx.h:1265 aoutx.h:1618 pdp11.c:1139 pdp11.c:1392
+#: aoutx.h:1254 aoutx.h:1602 pdp11.c:1190 pdp11.c:1439
 #, c-format
 msgid "%pB: can not represent section `%pA' in a.out object file format"
 msgstr ""
 
-#: aoutx.h:1582 pdp11.c:1364
+#: aoutx.h:1566 pdp11.c:1411
 #, c-format
 msgid ""
 "%pB: can not represent section for symbol `%s' in a.out object file format"
 msgstr ""
 
-#: aoutx.h:1585 vms-alpha.c:7957
+#: aoutx.h:1569 vms-alpha.c:8011
 msgid "*unknown*"
 msgstr ""
 
-#: aoutx.h:1721
+#: aoutx.h:1705
 #, c-format
 msgid "%pB: invalid string offset %<PRIu64> >= %<PRIu64>"
 msgstr ""
 
-#: aoutx.h:2412 aoutx.h:2430
+#: aoutx.h:1952
+#, c-format
+msgid "%pB: unsupported AOUT relocation size: %d"
+msgstr ""
+
+#: aoutx.h:2401 aoutx.h:2419
 #, c-format
 msgid "%pB: attempt to write out unknown reloc type"
 msgstr ""
 
-#: aoutx.h:4085
+#: aoutx.h:4077
 #, c-format
 msgid "%pB: unsupported relocation type"
 msgstr ""
 
 #. Unknown relocation.
-#: aoutx.h:4406 coff-alpha.c:601 coff-alpha.c:1514 coff-rs6000.c:2776
+#: aoutx.h:4398 coff-alpha.c:601 coff-alpha.c:1514 coff-rs6000.c:2758
 #: coff-sh.c:504 coff-tic4x.c:184 coff-tic54x.c:279 elf-hppa.h:798
 #: elf-hppa.h:826 elf-m10200.c:226 elf-m10300.c:812 elf32-arc.c:536
 #: elf32-arm.c:1985 elf32-avr.c:964 elf32-bfin.c:1062 elf32-bfin.c:4693
@@ -77,30 +82,28 @@ msgstr ""
 #: elf32-m68hc12.c:510 elf32-m68k.c:354 elf32-mcore.c:354 elf32-mcore.c:440
 #: elf32-mep.c:389 elf32-metag.c:878 elf32-microblaze.c:692
 #: elf32-microblaze.c:969 elf32-mips.c:2229 elf32-moxie.c:137
-#: elf32-msp430.c:651 elf32-msp430.c:661 elf32-mt.c:241 elf32-nds32.c:3240
-#: elf32-nds32.c:3266 elf32-nds32.c:5177 elf32-nios2.c:3015 elf32-or1k.c:1037
+#: elf32-msp430.c:653 elf32-msp430.c:663 elf32-mt.c:241 elf32-nds32.c:3240
+#: elf32-nds32.c:3266 elf32-nds32.c:5177 elf32-nios2.c:3026 elf32-or1k.c:1044
 #: elf32-pj.c:326 elf32-ppc.c:901 elf32-ppc.c:914 elf32-pru.c:423
 #: elf32-rl78.c:291 elf32-rx.c:313 elf32-rx.c:322 elf32-s12z.c:296
 #: elf32-s390.c:347 elf32-sh.c:440 elf32-spu.c:163 elf32-tic6x.c:1508
 #: elf32-tic6x.c:1518 elf32-tic6x.c:1537 elf32-tic6x.c:1547 elf32-tic6x.c:2642
-#: elf32-tilepro.c:803 elf32-v850.c:1898 elf32-v850.c:1920 elf32-v850.c:4268
+#: elf32-tilepro.c:803 elf32-v850.c:1898 elf32-v850.c:1920 elf32-v850.c:4273
 #: elf32-vax.c:290 elf32-visium.c:481 elf32-wasm32.c:105 elf32-xc16x.c:250
-#: elf32-xgate.c:418 elf32-xstormy16.c:395 elf32-xtensa.c:464
-#: elf32-xtensa.c:498 elf32-z80.c:320 elf64-alpha.c:1113 elf64-alpha.c:4102
-#: elf64-alpha.c:4250 elf64-bpf.c:322 elf64-ia64-vms.c:254
-#: elf64-ia64-vms.c:3438 elf64-mips.c:3958 elf64-mips.c:3974 elf64-mmix.c:1264
-#: elf64-nfp.c:238 elf64-ppc.c:1014 elf64-ppc.c:1349 elf64-ppc.c:1358
-#: elf64-s390.c:328 elf64-s390.c:378 elf64-x86-64.c:285 elfn32-mips.c:3786
+#: elf32-xgate.c:418 elf32-xstormy16.c:395 elf32-xtensa.c:502
+#: elf32-xtensa.c:536 elf32-z80.c:331 elf64-alpha.c:1113 elf64-alpha.c:4117
+#: elf64-alpha.c:4265 elf64-bpf.c:322 elf64-ia64-vms.c:254
+#: elf64-ia64-vms.c:3437 elf64-mips.c:3958 elf64-mips.c:3974 elf64-mmix.c:1264
+#: elf64-nfp.c:238 elf64-ppc.c:1015 elf64-ppc.c:1350 elf64-ppc.c:1359
+#: elf64-s390.c:328 elf64-s390.c:378 elf64-x86-64.c:282 elfn32-mips.c:3786
 #: elfxx-ia64.c:324 elfxx-riscv.c:955 elfxx-sparc.c:589 elfxx-sparc.c:639
-#: elfxx-tilegx.c:912 elfxx-tilegx.c:952
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:2215
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:2313 elf32-ia64.c:214
-#: elf32-ia64.c:3862 elf64-ia64.c:214 elf64-ia64.c:3862
+#: elfxx-tilegx.c:912 elfxx-tilegx.c:952 elfnn-aarch64.c:2215
+#: elfnn-aarch64.c:2313 elfnn-ia64.c:214 elfnn-ia64.c:3861
 #, c-format
 msgid "%pB: unsupported relocation type %#x"
 msgstr ""
 
-#: aoutx.h:5432 pdp11.c:3685
+#: aoutx.h:5425 pdp11.c:3725
 #, c-format
 msgid "%pB: relocatable link from %s to %s not supported"
 msgstr ""
@@ -110,141 +113,141 @@ msgstr ""
 msgid "%pB: cannot allocate memory for local GOT entries"
 msgstr ""
 
-#: archive.c:2227
+#: archive.c:2250
 msgid "warning: writing archive was slow: rewriting timestamp"
 msgstr ""
 
-#: archive.c:2294 archive.c:2355 elflink.c:4437 linker.c:1428
+#: archive.c:2317 archive.c:2378 elflink.c:4539 linker.c:1428
 #, c-format
 msgid "%pB: plugin needed to handle lto object"
 msgstr ""
 
-#: archive.c:2585
+#: archive.c:2608
 msgid "Reading archive file mod timestamp"
 msgstr ""
 
-#: archive.c:2609
+#: archive.c:2632
 msgid "Writing updated armap timestamp"
 msgstr ""
 
-#: bfd.c:673
+#: bfd.c:677
 msgid "no error"
 msgstr ""
 
-#: bfd.c:674
+#: bfd.c:678
 msgid "system call error"
 msgstr ""
 
-#: bfd.c:675
+#: bfd.c:679
 msgid "invalid bfd target"
 msgstr ""
 
-#: bfd.c:676
+#: bfd.c:680
 msgid "file in wrong format"
 msgstr ""
 
-#: bfd.c:677
+#: bfd.c:681
 msgid "archive object file in wrong format"
 msgstr ""
 
-#: bfd.c:678
+#: bfd.c:682
 msgid "invalid operation"
 msgstr ""
 
-#: bfd.c:679
+#: bfd.c:683
 msgid "memory exhausted"
 msgstr ""
 
-#: bfd.c:680
+#: bfd.c:684
 msgid "no symbols"
 msgstr ""
 
-#: bfd.c:681
+#: bfd.c:685
 msgid "archive has no index; run ranlib to add one"
 msgstr ""
 
-#: bfd.c:682
+#: bfd.c:686
 msgid "no more archived files"
 msgstr ""
 
-#: bfd.c:683
+#: bfd.c:687
 msgid "malformed archive"
 msgstr ""
 
-#: bfd.c:684
+#: bfd.c:688
 msgid "DSO missing from command line"
 msgstr ""
 
-#: bfd.c:685
+#: bfd.c:689
 msgid "file format not recognized"
 msgstr ""
 
-#: bfd.c:686
+#: bfd.c:690
 msgid "file format is ambiguous"
 msgstr ""
 
-#: bfd.c:687
+#: bfd.c:691
 msgid "section has no contents"
 msgstr ""
 
-#: bfd.c:688
+#: bfd.c:692
 msgid "nonrepresentable section on output"
 msgstr ""
 
-#: bfd.c:689
+#: bfd.c:693
 msgid "symbol needs debug section which does not exist"
 msgstr ""
 
-#: bfd.c:690
+#: bfd.c:694
 msgid "bad value"
 msgstr ""
 
-#: bfd.c:691
+#: bfd.c:695
 msgid "file truncated"
 msgstr ""
 
-#: bfd.c:692
+#: bfd.c:696
 msgid "file too big"
 msgstr ""
 
-#: bfd.c:693
+#: bfd.c:697
 msgid "sorry, cannot handle this file"
 msgstr ""
 
-#: bfd.c:694
+#: bfd.c:698
 #, c-format
 msgid "error reading %s: %s"
 msgstr ""
 
-#: bfd.c:695
+#: bfd.c:699
 msgid "#<invalid error code>"
 msgstr ""
 
-#: bfd.c:1654
+#: bfd.c:1658
 #, c-format
 msgid "BFD %s assertion fail %s:%d"
 msgstr ""
 
-#: bfd.c:1667
+#: bfd.c:1671
 #, c-format
 msgid "BFD %s internal error, aborting at %s:%d in %s\n"
 msgstr ""
 
-#: bfd.c:1672
+#: bfd.c:1676
 #, c-format
 msgid "BFD %s internal error, aborting at %s:%d\n"
 msgstr ""
 
-#: bfd.c:1674
+#: bfd.c:1678
 msgid "Please report this bug.\n"
 msgstr ""
 
-#: bfdwin.c:206
+#: bfdwin.c:207
 #, c-format
 msgid "not mapping: data=%lx mapped=%d\n"
 msgstr ""
 
-#: bfdwin.c:209
+#: bfdwin.c:210
 #, c-format
 msgid "not mapping: env var not set\n"
 msgstr ""
@@ -274,23 +277,28 @@ msgstr ""
 msgid "using multiple gp values"
 msgstr ""
 
-#: coff-alpha.c:1501 coff-alpha.c:1507 elf.c:9274 elf32-mcore.c:100
-#: elf32-mcore.c:455 elf32-ppc.c:7670 elf32-ppc.c:8821 elf64-ppc.c:15566
+#: coff-alpha.c:1501 coff-alpha.c:1507 elf.c:9437 elf32-mcore.c:100
+#: elf32-mcore.c:455 elf32-ppc.c:7679 elf32-ppc.c:8830 elf64-ppc.c:16024
 #, c-format
 msgid "%pB: %s unsupported"
 msgstr ""
 
+#: coff-go32.c:156 coffswap.h:785
+#, c-format
+msgid "%pB: warning: %s: line number overflow: 0x%lx > 0xffff"
+msgstr ""
+
 #: coff-mips.c:643 elf32-mips.c:1742 elf32-score.c:430 elf32-score7.c:330
 #: elf64-mips.c:3451 elfn32-mips.c:3276
 msgid "GP relative relocation when _gp not defined"
 msgstr ""
 
-#: coff-rs6000.c:2862
+#: coff-rs6000.c:2844
 #, c-format
 msgid "%pB: TOC reloc at %#<PRIx64> to symbol `%s' with no TOC entry"
 msgstr ""
 
-#: coff-rs6000.c:3624 coff64-rs6000.c:2154
+#: coff-rs6000.c:3607 coff64-rs6000.c:2153
 #, c-format
 msgid "%pB: symbol `%s' has unrecognized smclas %d"
 msgstr ""
@@ -345,29 +353,29 @@ msgstr ""
 msgid "%pB: illegal symbol index %ld in relocs"
 msgstr ""
 
-#: coff-tic4x.c:228 coff-tic54x.c:366 coffcode.h:5008
+#: coff-tic4x.c:228 coff-tic54x.c:366 coffcode.h:5086
 #, c-format
 msgid "%pB: warning: illegal symbol index %ld in relocs"
 msgstr ""
 
-#: coffcode.h:952
+#: coffcode.h:961
 #, c-format
 msgid "%pB: unable to load COMDAT section name"
 msgstr ""
 
 #. Malformed input files can trigger this test.
 #. cf PR 21781.
-#: coffcode.h:987
+#: coffcode.h:996
 #, c-format
 msgid "%pB: error: unexpected symbol '%s' in COMDAT section"
 msgstr ""
 
-#: coffcode.h:999
+#: coffcode.h:1008
 #, c-format
 msgid "%pB: warning: COMDAT symbol '%s' does not match section name '%s'"
 msgstr ""
 
-#: coffcode.h:1009
+#: coffcode.h:1018
 #, c-format
 msgid "%pB: warning: no symbol for section '%s' found"
 msgstr ""
@@ -375,139 +383,126 @@ msgstr ""
 #. Generate a warning message rather using the 'unhandled'
 #. variable as this will allow some .sys files generate by
 #. other toolchains to be processed.  See bugzilla issue 196.
-#: coffcode.h:1240
+#: coffcode.h:1249
 #, c-format
 msgid "%pB: warning: ignoring section flag %s in section %s"
 msgstr ""
 
-#: coffcode.h:1309
+#: coffcode.h:1318
 #, c-format
 msgid "%pB (%s): section flag %s (%#lx) ignored"
 msgstr ""
 
-#: coffcode.h:1920
+#: coffcode.h:1934 coffcode.h:1999
 #, c-format
 msgid "%pB: warning: claims to have 0xffff relocs, without overflow"
 msgstr ""
 
-#: coffcode.h:2329
+#: coffcode.h:2365
 #, c-format
 msgid "unrecognized TI COFF target id '0x%x'"
 msgstr ""
 
-#: coffcode.h:2607
+#: coffcode.h:2643
 #, c-format
 msgid "%pB: reloc against a non-existent symbol index: %ld"
 msgstr ""
 
-#: coffcode.h:2915
+#: coffcode.h:2952
 #, c-format
 msgid "%pB: page size is too large (0x%x)"
 msgstr ""
 
-#: coffcode.h:3075
+#: coffcode.h:3112
 #, c-format
 msgid "%pB: too many sections (%d)"
 msgstr ""
 
-#: coffcode.h:3494
+#: coffcode.h:3531
 #, c-format
 msgid "%pB: section %pA: string table overflow at offset %ld"
 msgstr ""
 
-#: coffcode.h:3594
+#: coffcode.h:3631
 #, c-format
 msgid "%pB:%s section %s: alignment 2**%u not representable"
 msgstr ""
 
-#: coffcode.h:4275
+#: coffcode.h:4330
 #, c-format
 msgid "%pB: warning: line number count (%#lx) exceeds section size (%#lx)"
 msgstr ""
 
-#: coffcode.h:4292
+#: coffcode.h:4350
 #, c-format
 msgid "%pB: warning: line number table read failed"
 msgstr ""
 
-#: coffcode.h:4326 coffcode.h:4340
+#: coffcode.h:4384 coffcode.h:4398
 #, c-format
 msgid "%pB: warning: illegal symbol index 0x%lx in line number entry %d"
 msgstr ""
 
-#: coffcode.h:4354
+#: coffcode.h:4412
 #, c-format
 msgid "%pB: warning: illegal symbol in line number entry %d"
 msgstr ""
 
-#: coffcode.h:4367
+#: coffcode.h:4425
 #, c-format
 msgid "%pB: warning: duplicate line number information for `%s'"
 msgstr ""
 
-#: coffcode.h:4772
+#: coffcode.h:4846
 #, c-format
 msgid "%pB: unrecognized storage class %d for %s symbol `%s'"
 msgstr ""
 
-#: coffcode.h:4902
+#: coffcode.h:4976
 #, c-format
 msgid "warning: %pB: local symbol `%s' has no section"
 msgstr ""
 
-#: coffcode.h:5048
+#: coffcode.h:5126
 #, c-format
 msgid "%pB: illegal relocation type %d at address %#<PRIx64>"
 msgstr ""
 
-#: coffgen.c:179 elf.c:1248
+#: coffgen.c:179 elf.c:1239
 #, c-format
 msgid "%pB: unable to initialize compress status for section %s"
 msgstr ""
 
-#: coffgen.c:203 elf.c:1259
+#: coffgen.c:203 elf.c:1250
 #, c-format
 msgid "%pB: unable to initialize decompress status for section %s"
 msgstr ""
 
-#: coffgen.c:1664
-#, c-format
-msgid "%pB: corrupt symbol count: %#<PRIx64>"
-msgstr ""
-
-#. PR 21013: Provide an error message when the alloc fails.
-#: coffgen.c:1673
-#, c-format
-msgid ""
-"%pB: not enough memory to allocate space for %#<PRIx64> symbols of size "
-"%#<PRIx64>"
-msgstr ""
-
-#: coffgen.c:1742
+#: coffgen.c:1709
 #, c-format
 msgid "%pB: bad string table size %<PRIu64>"
 msgstr ""
 
-#: coffgen.c:1911 coffgen.c:1971 coffgen.c:1989 cofflink.c:2049 elf.c:1925
-#: xcofflink.c:4506
+#: coffgen.c:1881 coffgen.c:1941 coffgen.c:1959 cofflink.c:2049 elf.c:1925
+#: xcofflink.c:4510
 msgid "<corrupt>"
 msgstr ""
 
-#: coffgen.c:2120
+#: coffgen.c:2090
 #, c-format
 msgid "<corrupt info> %s"
 msgstr ""
 
-#: coffgen.c:2706 elflink.c:14466 linker.c:2960
+#: coffgen.c:2676 elflink.c:14613 linker.c:2960
 msgid "%F%P: already_linked_table: %E\n"
 msgstr ""
 
-#: coffgen.c:3047 elflink.c:13460
+#: coffgen.c:3017 elflink.c:13606
 #, c-format
 msgid "removing unused section '%pA' in file '%pB'"
 msgstr ""
 
-#: coffgen.c:3124 elflink.c:13678
+#: coffgen.c:3094 elflink.c:13824
 msgid "warning: gc-sections option ignored"
 msgstr ""
 
@@ -516,7 +511,7 @@ msgstr ""
 msgid "warning: symbol `%s' is both section and non-section"
 msgstr ""
 
-#: cofflink.c:458 elf64-ia64-vms.c:5205 elflink.c:5023
+#: cofflink.c:458 elf64-ia64-vms.c:5208 elflink.c:5125
 #, c-format
 msgid "warning: type of symbol `%s' changed from %d to %d in %pB"
 msgstr ""
@@ -526,7 +521,7 @@ msgstr ""
 msgid "%pB: relocs in section `%pA', but it has no contents"
 msgstr ""
 
-#: cofflink.c:2440 elflink.c:10947
+#: cofflink.c:2440 elflink.c:11060
 #, c-format
 msgid ""
 "%X`%s' referenced in section `%pA' of %pB: defined in discarded section `"
@@ -548,24 +543,19 @@ msgstr ""
 msgid "%pB: bad reloc address %#<PRIx64> in section `%pA'"
 msgstr ""
 
-#: coffswap.h:783
-#, c-format
-msgid "%pB: warning: %s: line number overflow: 0x%lx > 0xffff"
-msgstr ""
-
-#: coffswap.h:797
+#: coffswap.h:799
 #, c-format
 msgid "%pB: %s: reloc overflow: 0x%lx > 0xffff"
 msgstr ""
 
-#: compress.c:268
+#: compress.c:271
 #, c-format
 msgid ""
 "error: %pB(%pA) section size (%#<PRIx64> bytes) is larger than file size "
 "(%#<PRIx64> bytes)"
 msgstr ""
 
-#: compress.c:279
+#: compress.c:282
 #, c-format
 msgid "error: %pB(%pA) is too large (%#<PRIx64> bytes)"
 msgstr ""
@@ -601,188 +591,193 @@ msgstr ""
 msgid "DWARF error: invalid or unhandled FORM value: %#x"
 msgstr ""
 
-#: dwarf2.c:1641
+#: dwarf2.c:1646
 msgid "DWARF error: mangled line number section (bad file number)"
 msgstr ""
 
-#: dwarf2.c:1989
+#: dwarf2.c:1994
 msgid "DWARF error: zero format count"
 msgstr ""
 
-#: dwarf2.c:1999
+#: dwarf2.c:2004
 #, c-format
 msgid "DWARF error: data count (%<PRIx64>) larger than buffer size"
 msgstr ""
 
-#: dwarf2.c:2040
+#: dwarf2.c:2045
 #, c-format
 msgid "DWARF error: unknown format content type %<PRIu64>"
 msgstr ""
 
-#: dwarf2.c:2107
+#: dwarf2.c:2112
 #, c-format
 msgid "DWARF error: line info section is too small (%<PRId64>)"
 msgstr ""
 
-#: dwarf2.c:2137
+#: dwarf2.c:2142
 #, c-format
 msgid ""
 "DWARF error: line info data is bigger (%#<PRIx64>) than the space remaining "
 "in the section (%#lx)"
 msgstr ""
 
-#: dwarf2.c:2150
+#: dwarf2.c:2155
 #, c-format
 msgid "DWARF error: unhandled .debug_line version %d"
 msgstr ""
 
-#: dwarf2.c:2160
+#: dwarf2.c:2165
 msgid "DWARF error: ran out of room reading prologue"
 msgstr ""
 
-#: dwarf2.c:2178
+#: dwarf2.c:2183
 #, c-format
 msgid "DWARF error: line info unsupported segment selector size %u"
 msgstr ""
 
-#: dwarf2.c:2205
+#: dwarf2.c:2210
 msgid "DWARF error: invalid maximum operations per instruction"
 msgstr ""
 
-#: dwarf2.c:2224
+#: dwarf2.c:2229
 msgid "DWARF error: ran out of room reading opcodes"
 msgstr ""
 
-#: dwarf2.c:2415
+#: dwarf2.c:2420
 msgid "DWARF error: mangled line number section"
 msgstr ""
 
-#: dwarf2.c:2905
+#: dwarf2.c:2910
 msgid "DWARF error: abstract instance recursion detected"
 msgstr ""
 
-#: dwarf2.c:2939 dwarf2.c:3033
+#: dwarf2.c:2944 dwarf2.c:3038
 msgid "DWARF error: invalid abstract instance DIE ref"
 msgstr ""
 
-#: dwarf2.c:2955
+#: dwarf2.c:2960
 #, c-format
 msgid "DWARF error: unable to read alt ref %<PRIu64>"
 msgstr ""
 
-#: dwarf2.c:3011
+#: dwarf2.c:3016
 #, c-format
 msgid "DWARF error: unable to locate abstract instance DIE ref %<PRIu64>"
 msgstr ""
 
-#: dwarf2.c:3050 dwarf2.c:3216 dwarf2.c:3571
+#: dwarf2.c:3055 dwarf2.c:3237 dwarf2.c:3623
 #, c-format
 msgid "DWARF error: could not find abbrev number %u"
 msgstr ""
 
-#: dwarf2.c:3490
+#: dwarf2.c:3386
+#, c-format
+msgid "DWARF error: could not find variable specification at offset %lx"
+msgstr ""
+
+#: dwarf2.c:3542
 #, c-format
 msgid ""
 "DWARF error: found dwarf version '%u', this reader only handles version 2, "
 "3, 4 and 5 information"
 msgstr ""
 
-#: dwarf2.c:3534
+#: dwarf2.c:3586
 #, c-format
 msgid ""
 "DWARF error: found address size '%u', this reader can not handle sizes "
 "greater than '%u'"
 msgstr ""
 
-#: dwarf2.c:3638
+#: dwarf2.c:3690
 msgid ""
 "DWARF error: DW_AT_comp_dir attribute encountered with a non-string form"
 msgstr ""
 
-#: ecoff.c:971
+#: ecoff.c:984
 #, c-format
 msgid "%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)"
 msgstr ""
 
-#: ecoff.c:1268
+#: ecoff.c:1281
 #, c-format
 msgid "unknown basic type %d"
 msgstr ""
 
-#: ecoff.c:1525
+#: ecoff.c:1538
 #, c-format
 msgid ""
 "\n"
 "      End+1 symbol: %ld"
 msgstr ""
 
-#: ecoff.c:1532 ecoff.c:1535
+#: ecoff.c:1545 ecoff.c:1548
 #, c-format
 msgid ""
 "\n"
 "      First symbol: %ld"
 msgstr ""
 
-#: ecoff.c:1548
+#: ecoff.c:1561
 #, c-format
 msgid ""
 "\n"
 "      End+1 symbol: %-7ld   Type:  %s"
 msgstr ""
 
-#: ecoff.c:1555
+#: ecoff.c:1568
 #, c-format
 msgid ""
 "\n"
 "      Local symbol: %ld"
 msgstr ""
 
-#: ecoff.c:1563
+#: ecoff.c:1576
 #, c-format
 msgid ""
 "\n"
 "      struct; End+1 symbol: %ld"
 msgstr ""
 
-#: ecoff.c:1568
+#: ecoff.c:1581
 #, c-format
 msgid ""
 "\n"
 "      union; End+1 symbol: %ld"
 msgstr ""
 
-#: ecoff.c:1573
+#: ecoff.c:1586
 #, c-format
 msgid ""
 "\n"
 "      enum; End+1 symbol: %ld"
 msgstr ""
 
-#: ecoff.c:1579
+#: ecoff.c:1592
 #, c-format
 msgid ""
 "\n"
 "      Type: %s"
 msgstr ""
 
-#: elf-attrs.c:446
+#: elf-attrs.c:449
 #, c-format
 msgid "%pB: error: attribute section '%pA' too big: %#llx"
 msgstr ""
 
-#: elf-attrs.c:487
+#: elf-attrs.c:490
 #, c-format
 msgid "%pB: error: attribute section length too small: %<PRId64>"
 msgstr ""
 
-#: elf-attrs.c:615
+#: elf-attrs.c:618
 #, c-format
 msgid ""
 "error: %pB: object has vendor-specific contents that must be processed by "
 "the '%s' toolchain"
 msgstr ""
 
-#: elf-attrs.c:625
+#: elf-attrs.c:628
 #, c-format
 msgid "error: %pB: object tag '%d, %s' is incompatible with tag '%d, %s'"
 msgstr ""
@@ -827,21 +822,21 @@ msgstr ""
 msgid "DW_EH_PE_datarel unspecified for this architecture"
 msgstr ""
 
-#: elf-eh-frame.c:2317
+#: elf-eh-frame.c:2318
 #, c-format
 msgid "invalid output section for .eh_frame_entry: %pA"
 msgstr ""
 
-#: elf-eh-frame.c:2340
+#: elf-eh-frame.c:2341
 #, c-format
 msgid "invalid contents in %pA section"
 msgstr ""
 
-#: elf-eh-frame.c:2496
+#: elf-eh-frame.c:2497
 msgid ".eh_frame_hdr entry overflow"
 msgstr ""
 
-#: elf-eh-frame.c:2498
+#: elf-eh-frame.c:2499
 msgid ".eh_frame_hdr refers to overlapping FDEs"
 msgstr ""
 
@@ -859,8 +854,8 @@ msgstr ""
 #: elf32-h8300.c:523 elf32-ip2k.c:1482 elf32-iq2000.c:691 elf32-lm32.c:1112
 #: elf32-m32c.c:624 elf32-m32r.c:3045 elf32-m68hc1x.c:1272 elf32-mep.c:526
 #: elf32-metag.c:1990 elf32-microblaze.c:1631 elf32-moxie.c:288 elf32-mt.c:402
-#: elf32-nds32.c:6192 elf32-or1k.c:1759 elf32-score.c:2733 elf32-score7.c:2542
-#: elf32-spu.c:5086 elf32-tilepro.c:3505 elf32-v850.c:2290 elf32-visium.c:680
+#: elf32-nds32.c:6192 elf32-or1k.c:1821 elf32-score.c:2734 elf32-score7.c:2543
+#: elf32-spu.c:5088 elf32-tilepro.c:3505 elf32-v850.c:2290 elf32-visium.c:680
 #: elf32-xstormy16.c:929 elf64-bpf.c:487 elf64-mmix.c:1541 elfxx-tilegx.c:3869
 msgid "internal error: out of range error"
 msgstr ""
@@ -870,18 +865,18 @@ msgstr ""
 #: elf32-fr30.c:598 elf32-frv.c:4049 elf32-ft32.c:498 elf32-h8300.c:527
 #: elf32-iq2000.c:695 elf32-lm32.c:1116 elf32-m32c.c:628 elf32-m32r.c:3049
 #: elf32-m68hc1x.c:1276 elf32-mep.c:530 elf32-metag.c:1994
-#: elf32-microblaze.c:1635 elf32-moxie.c:292 elf32-msp430.c:1365
-#: elf32-nds32.c:6196 elf32-or1k.c:1763 elf32-score.c:2737 elf32-score7.c:2546
-#: elf32-spu.c:5090 elf32-tilepro.c:3509 elf32-v850.c:2294 elf32-visium.c:684
-#: elf32-xstormy16.c:933 elf64-mmix.c:1545 elfxx-mips.c:10575
+#: elf32-microblaze.c:1635 elf32-moxie.c:292 elf32-msp430.c:1371
+#: elf32-nds32.c:6196 elf32-or1k.c:1825 elf32-score.c:2738 elf32-score7.c:2547
+#: elf32-spu.c:5092 elf32-tilepro.c:3509 elf32-v850.c:2294 elf32-visium.c:684
+#: elf32-xstormy16.c:933 elf64-mmix.c:1545 elfxx-mips.c:10590
 #: elfxx-tilegx.c:3873
 msgid "internal error: unsupported relocation error"
 msgstr ""
 
 #: elf-m10200.c:442 elf32-cr16.c:1473 elf32-crx.c:933 elf32-d10v.c:518
 #: elf32-h8300.c:531 elf32-lm32.c:1120 elf32-m32r.c:3053 elf32-m68hc1x.c:1280
-#: elf32-microblaze.c:1639 elf32-nds32.c:6200 elf32-score.c:2741
-#: elf32-score7.c:2550 elf32-spu.c:5094
+#: elf32-microblaze.c:1639 elf32-nds32.c:6200 elf32-score.c:2742
+#: elf32-score7.c:2551 elf32-spu.c:5096
 msgid "internal error: dangerous error"
 msgstr ""
 
@@ -891,8 +886,8 @@ msgstr ""
 #: elf32-h8300.c:535 elf32-ip2k.c:1497 elf32-iq2000.c:703 elf32-lm32.c:1124
 #: elf32-m32c.c:636 elf32-m32r.c:3057 elf32-m68hc1x.c:1284 elf32-mep.c:538
 #: elf32-metag.c:2002 elf32-microblaze.c:1643 elf32-moxie.c:300
-#: elf32-msp430.c:1373 elf32-mt.c:410 elf32-nds32.c:6204 elf32-or1k.c:1771
-#: elf32-score.c:2750 elf32-score7.c:2554 elf32-spu.c:5098 elf32-tilepro.c:3517
+#: elf32-msp430.c:1379 elf32-mt.c:410 elf32-nds32.c:6204 elf32-or1k.c:1833
+#: elf32-score.c:2751 elf32-score7.c:2555 elf32-spu.c:5100 elf32-tilepro.c:3517
 #: elf32-v850.c:2314 elf32-visium.c:692 elf32-xstormy16.c:941 elf64-bpf.c:500
 #: elf64-mmix.c:1553 elfxx-tilegx.c:3881
 msgid "internal error: unknown error"
@@ -908,11 +903,10 @@ msgstr ""
 msgid "%pB: %s' accessed both as normal and thread local symbol"
 msgstr ""
 
-#: elf-m10300.c:2092 elf32-arm.c:13450 elf32-i386.c:3403 elf32-m32r.c:2539
-#: elf32-m68k.c:3912 elf32-s390.c:3210 elf32-sh.c:3802 elf32-tilepro.c:3408
-#: elf32-xtensa.c:2969 elf64-s390.c:3159 elf64-x86-64.c:3961 elfxx-sparc.c:3903
-#: elfxx-tilegx.c:3792 /work/sources/binutils/current/bfd/elfnn-aarch64.c:5493
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:7081
+#: elf-m10300.c:2092 elf32-arm.c:13464 elf32-i386.c:3421 elf32-m32r.c:2539
+#: elf32-m68k.c:3912 elf32-s390.c:3210 elf32-sh.c:3788 elf32-tilepro.c:3408
+#: elf32-xtensa.c:3013 elf64-s390.c:3159 elf64-x86-64.c:4078 elfxx-sparc.c:3903
+#: elfxx-tilegx.c:3792 elfnn-aarch64.c:5551 elfnn-aarch64.c:7148
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
 msgstr ""
@@ -935,8 +929,7 @@ msgid "internal error: suspicious relocation type used in shared library"
 msgstr ""
 
 #: elf-m10300.c:2647 elf32-avr.c:2491 elf32-frv.c:5637 elf64-ia64-vms.c:364
-#: elfxx-sparc.c:2792 reloc.c:8216 reloc16.c:155 elf32-ia64.c:365
-#: elf64-ia64.c:365
+#: elfxx-sparc.c:2792 reloc.c:8244 reloc16.c:155 elfnn-ia64.c:365
 msgid "%P%F: --relax and -r may not be used together\n"
 msgstr ""
 
@@ -1008,219 +1001,214 @@ msgid "Merging program properties\n"
 msgstr ""
 
 #. PR 17512: file: f057ec89.
-#: elf.c:342
+#: elf.c:336
 #, c-format
 msgid "%pB: attempt to load strings from a non-string section (number %d)"
 msgstr ""
 
-#: elf.c:367
+#: elf.c:361
 #, c-format
 msgid "%pB: invalid string offset %u >= %<PRIu64> for section `%s'"
 msgstr ""
 
-#: elf.c:506 /work/sources/binutils/current/bfd/elfnn-aarch64.c:8092
+#: elf.c:513 elfnn-aarch64.c:8161
 #, c-format
 msgid "%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section"
 msgstr ""
 
-#: elf.c:671
-#, c-format
-msgid "%pB: corrupt size field in group section header: %#<PRIx64>"
-msgstr ""
-
-#: elf.c:687
+#: elf.c:678
 #, c-format
 msgid "%pB: invalid size field in group section header: %#<PRIx64>"
 msgstr ""
 
-#: elf.c:735
+#: elf.c:723
 #, c-format
 msgid "%pB: invalid entry in SHT_GROUP section [%u]"
 msgstr ""
 
-#: elf.c:754
+#: elf.c:742
 #, c-format
 msgid "%pB: no valid group sections found"
 msgstr ""
 
 #. See PR 21957 for a reproducer.
-#: elf.c:783
+#: elf.c:771
 #, c-format
 msgid "%pB: group section '%pA' has no contents"
 msgstr ""
 
-#: elf.c:844
+#: elf.c:832
 #, c-format
 msgid "%pB: no group info for section '%pA'"
 msgstr ""
 
-#: elf.c:875 elf.c:3953
+#: elf.c:862 elf.c:3959
 #, c-format
 msgid "%pB: warning: sh_link not set for section `%pA'"
 msgstr ""
 
-#: elf.c:895
+#: elf.c:882
 #, c-format
 msgid "%pB: sh_link [%d] in section `%pA' is incorrect"
 msgstr ""
 
-#: elf.c:908
+#: elf.c:895
 #, c-format
 msgid "%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections"
 msgstr ""
 
-#: elf.c:929
+#: elf.c:916
 #, c-format
 msgid "%pB: section group entry number %u is corrupt"
 msgstr ""
 
-#: elf.c:952
+#: elf.c:939
 #, c-format
 msgid "%pB: unknown type [%#x] section `%s' in group [%pA]"
 msgstr ""
 
-#: elf.c:1451
+#: elf.c:1441
 #, c-format
 msgid "%pB: invalid sh_link field (%d) in section number %d"
 msgstr ""
 
-#: elf.c:1467
+#: elf.c:1457
 #, c-format
 msgid "%pB: failed to find link section for section %d"
 msgstr ""
 
-#: elf.c:1494
+#: elf.c:1484
 #, c-format
 msgid "%pB: failed to find info section for section %d"
 msgstr ""
 
-#: elf.c:1666
+#: elf.c:1656
 #, c-format
 msgid ""
 "\n"
 "Program Header:\n"
 msgstr ""
 
-#: elf.c:1708
+#: elf.c:1698
 #, c-format
 msgid ""
 "\n"
 "Dynamic Section:\n"
 msgstr ""
 
-#: elf.c:1849
+#: elf.c:1839
 #, c-format
 msgid ""
 "\n"
 "Version definitions:\n"
 msgstr ""
 
-#: elf.c:1874
+#: elf.c:1864
 #, c-format
 msgid ""
 "\n"
 "Version References:\n"
 msgstr ""
 
-#: elf.c:1879
+#: elf.c:1869
 #, c-format
 msgid "  required from %s:\n"
 msgstr ""
 
-#: elf.c:2079
+#: elf.c:2086
 #, c-format
 msgid "%pB: warning: loop in section dependencies detected"
 msgstr ""
 
-#: elf.c:2187
+#: elf.c:2194
 #, c-format
 msgid ""
 "%pB: warning: multiple symbol tables detected - ignoring the table in "
 "section %u"
 msgstr ""
 
-#: elf.c:2271
+#: elf.c:2278
 #, c-format
 msgid ""
 "%pB: warning: multiple dynamic symbol tables detected - ignoring the table "
 "in section %u"
 msgstr ""
 
-#: elf.c:2384
+#: elf.c:2391
 #, c-format
 msgid "%pB: invalid link %u for reloc section %s (index %u)"
 msgstr ""
 
-#: elf.c:2473
+#: elf.c:2482
 #, c-format
 msgid ""
-"%pB: warning: multiple relocation sections for section %pA found - ignoring "
-"all but the first"
+"%pB: warning: secondary relocation section '%s' for section %pA found - "
+"ignoring"
 msgstr ""
 
-#: elf.c:2555 elf.c:2570 elf.c:2581 elf.c:2594
+#: elf.c:2566 elf.c:2581 elf.c:2592 elf.c:2605
 #, c-format
 msgid "%pB: unknown type [%#x] section `%s'"
 msgstr ""
 
-#: elf.c:3314
+#: elf.c:3312
 #, c-format
 msgid "%pB: error: alignment power %d of section `%pA' is too big"
 msgstr ""
 
-#: elf.c:3344
+#: elf.c:3345
 #, c-format
 msgid "warning: section `%pA' type changed to PROGBITS"
 msgstr ""
 
-#: elf.c:3821
+#: elf.c:3828
 #, c-format
 msgid "%pB: too many sections: %u"
 msgstr ""
 
-#: elf.c:3906
+#: elf.c:3913
 #, c-format
 msgid ""
 "%pB: sh_link of section `%pA' points to discarded section `%pA' of `%pB'"
 msgstr ""
 
-#: elf.c:3931
+#: elf.c:3938
 #, c-format
 msgid "%pB: sh_link of section `%pA' points to removed section `%pA' of `%pB'"
 msgstr ""
 
-#: elf.c:4494
+#: elf.c:4499
 #, c-format
 msgid "%pB: GNU_MBIND section `%pA' has invalid sh_info field: %d"
 msgstr ""
 
-#: elf.c:5082
+#: elf.c:5090
 #, c-format
 msgid "%pB: TLS sections are not adjacent:"
 msgstr ""
 
-#: elf.c:5089
+#: elf.c:5097
 #, c-format
 msgid "\t    TLS: %pA"
 msgstr ""
 
-#: elf.c:5093
+#: elf.c:5101
 #, c-format
 msgid "\tnon-TLS: %pA"
 msgstr ""
 
-#: elf.c:5671
+#: elf.c:5692
 #, c-format
 msgid ""
 "%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section"
 msgstr ""
 
-#: elf.c:5697
+#: elf.c:5718
 #, c-format
 msgid "%pB: not enough room for program headers, try linking with -N"
 msgstr ""
 
-#: elf.c:5808
+#: elf.c:5835
 #, c-format
 msgid "%pB: section %pA lma %#<PRIx64> adjusted to %#<PRIx64>"
 msgstr ""
@@ -1228,80 +1216,156 @@ msgstr ""
 #. The fix for this error is usually to edit the linker script being
 #. used and set up the program headers manually.  Either that or
 #. leave room for the headers at the start of the SECTIONS.
-#: elf.c:5928
+#: elf.c:5972
 #, c-format
 msgid "%pB: error: PHDR segment not covered by LOAD segment"
 msgstr ""
 
-#: elf.c:5964
+#: elf.c:6012
 #, c-format
 msgid "%pB: section `%pA' can't be allocated in segment %d"
 msgstr ""
 
-#: elf.c:6095
+#: elf.c:6144
 #, c-format
 msgid "%pB: warning: allocated section `%s' not in segment"
 msgstr ""
 
-#: elf.c:6256
+#: elf.c:6305
 #, c-format
 msgid ""
 "%pB: error: non-load segment %d includes file header and/or program header"
 msgstr ""
 
-#: elf.c:6760
+#: elf.c:6809
 #, c-format
 msgid "%pB: symbol `%s' required but not present"
 msgstr ""
 
-#: elf.c:7102
+#: elf.c:7152
 #, c-format
 msgid ""
 "%pB: warning: empty loadable segment detected at vaddr=%#<PRIx64>, is this "
 "intentional?"
 msgstr ""
 
-#: elf.c:7722
+#: elf.c:7778
 #, c-format
 msgid "%pB: warning: segment alignment of %#<PRIx64> is too large"
 msgstr ""
 
-#: elf.c:8222
+#: elf.c:8291
+#, c-format
+msgid ""
+"%pB: Unable to handle section index %x in ELF symbol.  Using ABS instead."
+msgstr ""
+
+#: elf.c:8321
 #, c-format
 msgid ""
 "unable to find equivalent output section for symbol '%s' from section '%s'"
 msgstr ""
 
-#: elf.c:8577
+#: elf.c:8708
 #, c-format
 msgid "%pB: .gnu.version_r invalid entry"
 msgstr ""
 
-#: elf.c:8593
+#: elf.c:8841
 #, c-format
-msgid "error: %pB version reference section is too large (%#<PRIx64> bytes)"
+msgid "%pB: .gnu.version_d invalid entry"
 msgstr ""
 
-#: elf.c:8716
+#: elf.c:9299
 #, c-format
-msgid "%pB: .gnu.version_d invalid entry"
+msgid ""
+"%pB:%pA: error: attempting to write into an unallocated compressed section"
+msgstr ""
+
+#: elf.c:9308
+#, c-format
+msgid "%pB:%pA: error: attempting to write over the end of the section"
+msgstr ""
+
+#: elf.c:9319
+#, c-format
+msgid "%pB:%pA: error: attempting to write section into an empty buffer"
 msgstr ""
 
-#: elf.c:12238
+#: elf.c:12434
 msgid "GNU_MBIND section is unsupported"
 msgstr ""
 
-#: elf.c:12240
+#: elf.c:12436
 msgid "symbol type STT_GNU_IFUNC is unsupported"
 msgstr ""
 
-#: elf.c:12242
+#: elf.c:12438
 msgid "symbol binding STB_GNU_UNIQUE is unsupported"
 msgstr ""
 
-#: elf32-arc.c:459 elf32-frv.c:6624 elf32-iq2000.c:868 elf32-m32c.c:914
-#: elf32-mt.c:562 elf32-rl78.c:1260 elf32-rx.c:3199 elf32-visium.c:844
-#: elf64-ppc.c:5278
+#: elf.c:12622 elf64-sparc.c:123 elfcode.h:1485
+#, c-format
+msgid "%pB(%pA): relocation %d has invalid symbol index %ld"
+msgstr ""
+
+#: elf.c:12696
+#, c-format
+msgid ""
+"%pB(%pA): link section cannot be set because the output file does not have a "
+"symbol table"
+msgstr ""
+
+#: elf.c:12708
+#, c-format
+msgid "%pB(%pA): info section index is invalid"
+msgstr ""
+
+#: elf.c:12722
+#, c-format
+msgid ""
+"%pB(%pA): info section index cannot be set because the section is not in the "
+"output"
+msgstr ""
+
+#: elf.c:12788
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section processed twice"
+msgstr ""
+
+#: elf.c:12800
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section is empty!"
+msgstr ""
+
+#: elf.c:12823
+#, c-format
+msgid "%pB(%pA): error: internal relocs missing for secondary reloc section"
+msgstr ""
+
+#: elf.c:12842
+#, c-format
+msgid "%pB(%pA): error: reloc table entry %u is empty"
+msgstr ""
+
+#: elf.c:12867
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %u references a missing symbol"
+msgstr ""
+
+#: elf.c:12884
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %u references a deleted symbol"
+msgstr ""
+
+#: elf.c:12897
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %u is of an unknown type"
+msgstr ""
+
+#: elf32-arc.c:459 elf32-frv.c:6628 elf32-iq2000.c:868 elf32-m32c.c:914
+#: elf32-mt.c:562 elf32-rl78.c:1260 elf32-rx.c:3207 elf32-visium.c:844
+#: elf64-ppc.c:5293
 #, c-format
 msgid "private flags = 0x%lx:"
 msgstr ""
@@ -1348,7 +1412,7 @@ msgid ""
 msgstr ""
 
 #: elf32-arc.c:942 elf32-iq2000.c:844 elf32-m32c.c:889 elf32-m68hc1x.c:1391
-#: elf32-ppc.c:3859 elf64-sparc.c:727 elfxx-mips.c:15519
+#: elf32-ppc.c:3868 elf64-sparc.c:725 elfxx-mips.c:15534
 #, c-format
 msgid "%pB: uses different e_flags (%#x) fields than previous modules (%#x)"
 msgstr ""
@@ -1379,35 +1443,34 @@ msgstr ""
 msgid "GOT and PLT relocations cannot be fixed with a non dynamic linker"
 msgstr ""
 
-#: elf32-arc.c:1912 elf32-rl78.c:1098 elf32-rx.c:1470
+#: elf32-arc.c:1912 elf32-rl78.c:1098 elf32-rx.c:1475
 #, c-format
 msgid ""
 "%pB(%pA): warning: unaligned access to symbol '%s' in the small data area"
 msgstr ""
 
-#: elf32-arc.c:1917 elf32-rl78.c:1103 elf32-rx.c:1475
+#: elf32-arc.c:1917 elf32-rl78.c:1103 elf32-rx.c:1480
 #, c-format
 msgid "%pB(%pA): internal error: out of range error"
 msgstr ""
 
-#: elf32-arc.c:1922 elf32-rl78.c:1108 elf32-rx.c:1480
+#: elf32-arc.c:1922 elf32-rl78.c:1108 elf32-rx.c:1485
 #, c-format
 msgid "%pB(%pA): internal error: unsupported relocation error"
 msgstr ""
 
-#: elf32-arc.c:1927 elf32-rl78.c:1113 elf32-rx.c:1485
+#: elf32-arc.c:1927 elf32-rl78.c:1113 elf32-rx.c:1490
 #, c-format
 msgid "%pB(%pA): internal error: dangerous relocation"
 msgstr ""
 
-#: elf32-arc.c:1932 elf32-rl78.c:1118 elf32-rx.c:1490
+#: elf32-arc.c:1932 elf32-rl78.c:1118 elf32-rx.c:1495
 #, c-format
 msgid "%pB(%pA): internal error: unknown error"
 msgstr ""
 
-#: elf32-arc.c:2025 elf32-arc.c:2093 elf32-arm.c:15563 elf32-metag.c:2257
-#: elf32-nds32.c:5642 /work/sources/binutils/current/bfd/elfnn-aarch64.c:7735
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:510
+#: elf32-arc.c:2025 elf32-arc.c:2093 elf32-arm.c:15577 elf32-metag.c:2257
+#: elf32-nds32.c:5642 elfnn-aarch64.c:7802 elfnn-riscv.c:518
 #, c-format
 msgid ""
 "%pB: relocation %s against `%s' can not be used when making a shared object; "
@@ -1432,7 +1495,7 @@ msgid ""
 "movw instruction"
 msgstr ""
 
-#: elf32-arm.c:4426 elf32-arm.c:4480 elf32-arm.c:9172 elf32-arm.c:9262
+#: elf32-arm.c:4426 elf32-arm.c:4480 elf32-arm.c:9180 elf32-arm.c:9270
 #, c-format
 msgid ""
 "%pB(%s): warning: interworking not enabled; first occurrence: %pB: %s call "
@@ -1451,129 +1514,137 @@ msgstr ""
 msgid "no address assigned to the veneers output section %s"
 msgstr ""
 
-#: elf32-arm.c:4850 elf32-arm.c:6991 elf32-csky.c:3286 elf32-hppa.c:588
-#: elf32-m68hc1x.c:165 elf32-metag.c:1186 elf32-nios2.c:2208 elf64-ppc.c:3746
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:3236
+#: elf32-arm.c:4850 elf32-arm.c:6999 elf32-csky.c:3286 elf32-hppa.c:588
+#: elf32-m68hc1x.c:165 elf32-metag.c:1186 elf32-nios2.c:2208 elf64-ppc.c:3768
+#: elfnn-aarch64.c:3236
 #, c-format
 msgid "%pB: cannot create stub entry %s"
 msgstr ""
 
-#: elf32-arm.c:6033
+#: elf32-arm.c:5071 elf32-csky.c:3628 elf32-hppa.c:738 elf32-m68hc11.c:422
+#: elf32-m68hc12.c:542 elf32-metag.c:3480 elf32-nios2.c:2501 elf64-ppc.c:11374
+#: elfnn-aarch64.c:3305
+msgid ""
+"%F%P: Could not assign '%pA' to an output section. Retry without --enable-"
+"non-contiguous-regions.\n"
+msgstr ""
+
+#: elf32-arm.c:6041
 #, c-format
 msgid "%pB: special symbol `%s' only allowed for ARMv8-M architecture or later"
 msgstr ""
 
-#: elf32-arm.c:6042
+#: elf32-arm.c:6050
 #, c-format
 msgid ""
 "%pB: invalid special symbol `%s'; it must be a global or weak function symbol"
 msgstr ""
 
-#: elf32-arm.c:6081
+#: elf32-arm.c:6089
 #, c-format
 msgid ""
 "%pB: invalid standard symbol `%s'; it must be a global or weak function "
 "symbol"
 msgstr ""
 
-#: elf32-arm.c:6087
+#: elf32-arm.c:6095
 #, c-format
 msgid "%pB: absent standard symbol `%s'"
 msgstr ""
 
-#: elf32-arm.c:6099
+#: elf32-arm.c:6107
 #, c-format
 msgid "%pB: `%s' and its special symbol are in different sections"
 msgstr ""
 
-#: elf32-arm.c:6111
+#: elf32-arm.c:6119
 #, c-format
 msgid "%pB: entry function `%s' not output"
 msgstr ""
 
-#: elf32-arm.c:6118
+#: elf32-arm.c:6126
 #, c-format
 msgid "%pB: entry function `%s' is empty"
 msgstr ""
 
-#: elf32-arm.c:6247
+#: elf32-arm.c:6255
 #, c-format
 msgid "%pB: --in-implib only supported for Secure Gateway import libraries"
 msgstr ""
 
-#: elf32-arm.c:6296
+#: elf32-arm.c:6304
 #, c-format
 msgid ""
 "%pB: invalid import library entry: `%s'; symbol should be absolute, global "
 "and refer to Thumb functions"
 msgstr ""
 
-#: elf32-arm.c:6318
+#: elf32-arm.c:6326
 #, c-format
 msgid "entry function `%s' disappeared from secure code"
 msgstr ""
 
-#: elf32-arm.c:6342
+#: elf32-arm.c:6350
 #, c-format
 msgid "`%s' refers to a non entry function"
 msgstr ""
 
-#: elf32-arm.c:6357
+#: elf32-arm.c:6365
 #, c-format
 msgid "%pB: visibility of symbol `%s' has changed"
 msgstr ""
 
-#: elf32-arm.c:6366
+#: elf32-arm.c:6374
 #, c-format
 msgid "%pB: incorrect size for symbol `%s'"
 msgstr ""
 
-#: elf32-arm.c:6385
+#: elf32-arm.c:6393
 #, c-format
 msgid "offset of veneer for entry function `%s' not a multiple of its size"
 msgstr ""
 
-#: elf32-arm.c:6405
+#: elf32-arm.c:6413
 msgid ""
 "new entry function(s) introduced but no output import library specified:"
 msgstr ""
 
-#: elf32-arm.c:6413
+#: elf32-arm.c:6421
 #, c-format
 msgid "start address of `%s' is different from previous link"
 msgstr ""
 
-#: elf32-arm.c:7124 elf32-arm.c:7159
+#: elf32-arm.c:7132 elf32-arm.c:7167
 #, c-format
 msgid "unable to find %s glue '%s' for '%s'"
 msgstr ""
 
-#: elf32-arm.c:7870
+#: elf32-arm.c:7878
 #, c-format
 msgid "%pB: BE8 images only valid in big-endian mode"
 msgstr ""
 
 #. Give a warning, but do as the user requests anyway.
-#: elf32-arm.c:8101
+#: elf32-arm.c:8109
 #, c-format
 msgid ""
 "%pB: warning: selected VFP11 erratum workaround is not necessary for target "
 "architecture"
 msgstr ""
 
-#: elf32-arm.c:8128
+#: elf32-arm.c:8136
 #, c-format
 msgid ""
 "%pB: warning: selected STM32L4XX erratum workaround is not necessary for "
 "target architecture"
 msgstr ""
 
-#: elf32-arm.c:8666 elf32-arm.c:8686 elf32-arm.c:8753 elf32-arm.c:8772
+#: elf32-arm.c:8674 elf32-arm.c:8694 elf32-arm.c:8761 elf32-arm.c:8780
 #, c-format
 msgid "%pB: unable to find %s veneer `%s'"
 msgstr ""
 
-#: elf32-arm.c:8979
+#: elf32-arm.c:8987
 #, c-format
 msgid ""
 "%pB(%pA+%#x): error: multiple load detected in non-last IT block "
@@ -1581,202 +1652,199 @@ msgid ""
 "it to generate only one instruction per IT block"
 msgstr ""
 
-#: elf32-arm.c:9079
+#: elf32-arm.c:9087
 #, c-format
 msgid "invalid TARGET2 relocation type '%s'"
 msgstr ""
 
 #. FIXME: We ought to be able to generate thumb-1 PLT
 #. instructions...
-#: elf32-arm.c:9881
+#: elf32-arm.c:9889
 #, c-format
 msgid "%pB: warning: thumb-1 mode PLT generation not currently supported"
 msgstr ""
 
-#: elf32-arm.c:10185 elf32-arm.c:10227
+#: elf32-arm.c:10199 elf32-arm.c:10241
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' in TLS trampoline"
 msgstr ""
 
-#: elf32-arm.c:10571
+#: elf32-arm.c:10585
 msgid "shared object"
 msgstr ""
 
-#: elf32-arm.c:10574
+#: elf32-arm.c:10588
 msgid "PIE executable"
 msgstr ""
 
-#: elf32-arm.c:10577
+#: elf32-arm.c:10591
 #, c-format
 msgid ""
 "%pB: relocation %s against external or undefined symbol `%s' can not be used "
 "when making a %s; recompile with -fPIC"
 msgstr ""
 
-#: elf32-arm.c:10714 elf32-arm.c:11141
+#: elf32-arm.c:10728 elf32-arm.c:11155
 #, c-format
 msgid "%pB: warning: %s BLX instruction targets %s function '%s'"
 msgstr ""
 
-#: elf32-arm.c:12053 elf32-arm.c:12079
+#: elf32-arm.c:12067 elf32-arm.c:12093
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' referenced by "
 "TLS_GOTDESC"
 msgstr ""
 
-#: elf32-arm.c:12125 elf32-csky.c:4852 elf32-m68k.c:3716 elf32-metag.c:1919
-#: elf32-nios2.c:4378
+#: elf32-arm.c:12139 elf32-csky.c:4860 elf32-m68k.c:3716 elf32-metag.c:1919
+#: elf32-nios2.c:4389
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s relocation not permitted in shared object"
 msgstr ""
 
-#: elf32-arm.c:12339
+#: elf32-arm.c:12353
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): only ADD or SUB instructions are allowed for ALU group "
 "relocations"
 msgstr ""
 
-#: elf32-arm.c:12380 elf32-arm.c:12472 elf32-arm.c:12560 elf32-arm.c:12650
+#: elf32-arm.c:12394 elf32-arm.c:12486 elf32-arm.c:12574 elf32-arm.c:12664
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): overflow whilst splitting %#<PRIx64> for group "
 "relocation %s"
 msgstr ""
 
-#: elf32-arm.c:13282 elf32-sh.c:3691
+#: elf32-arm.c:13296 elf32-sh.c:3682
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s relocation against SEC_MERGE section"
 msgstr ""
 
-#: elf32-arm.c:13395 elf32-m68k.c:3949 elf32-xtensa.c:2707
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:6808
+#: elf32-arm.c:13409 elf32-m68k.c:3949 elf32-xtensa.c:2751 elfnn-aarch64.c:6875
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s used with TLS symbol %s"
 msgstr ""
 
-#: elf32-arm.c:13397 elf32-m68k.c:3951 elf32-xtensa.c:2709
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:6810
+#: elf32-arm.c:13411 elf32-m68k.c:3951 elf32-xtensa.c:2753 elfnn-aarch64.c:6877
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s used with non-TLS symbol %s"
 msgstr ""
 
-#: elf32-arm.c:13480 elf32-tic6x.c:2708
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:7145
+#: elf32-arm.c:13494 elf32-tic6x.c:2708 elfnn-aarch64.c:7212
 msgid "out of range"
 msgstr ""
 
-#: elf32-arm.c:13484 elf32-nios2.c:4512 elf32-pru.c:936 elf32-tic6x.c:2712
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:7149
+#: elf32-arm.c:13498 elf32-nios2.c:4523 elf32-pru.c:936 elf32-tic6x.c:2712
+#: elfnn-aarch64.c:7216
 msgid "unsupported relocation"
 msgstr ""
 
-#: elf32-arm.c:13492 elf32-nios2.c:4522 elf32-pru.c:946 elf32-tic6x.c:2720
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:7157
+#: elf32-arm.c:13506 elf32-nios2.c:4533 elf32-pru.c:946 elf32-tic6x.c:2720
+#: elfnn-aarch64.c:7224
 msgid "unknown error"
 msgstr ""
 
-#: elf32-arm.c:13970
+#: elf32-arm.c:13984
 #, c-format
 msgid ""
 "warning: not setting interworking flag of %pB since it has already been "
 "specified as non-interworking"
 msgstr ""
 
-#: elf32-arm.c:13974
+#: elf32-arm.c:13988
 #, c-format
 msgid "warning: clearing the interworking flag of %pB due to outside request"
 msgstr ""
 
-#: elf32-arm.c:14019
+#: elf32-arm.c:14033
 #, c-format
 msgid ""
 "warning: clearing the interworking flag of %pB because non-interworking code "
 "in %pB has been linked with it"
 msgstr ""
 
-#: elf32-arm.c:14106
+#: elf32-arm.c:14120
 #, c-format
 msgid "%pB: unknown mandatory EABI object attribute %d"
 msgstr ""
 
-#: elf32-arm.c:14114
+#: elf32-arm.c:14128
 #, c-format
 msgid "warning: %pB: unknown EABI object attribute %d"
 msgstr ""
 
-#: elf32-arm.c:14414
+#: elf32-arm.c:14428
 #, c-format
 msgid "error: %pB: unknown CPU architecture"
 msgstr ""
 
-#: elf32-arm.c:14452 elf32-nios2.c:2946
+#: elf32-arm.c:14466 elf32-nios2.c:2957
 #, c-format
 msgid "error: %pB: conflicting CPU architectures %d/%d"
 msgstr ""
 
-#: elf32-arm.c:14549
+#: elf32-arm.c:14563
 #, c-format
 msgid ""
 "Error: %pB has both the current and legacy Tag_MPextension_use attributes"
 msgstr ""
 
-#: elf32-arm.c:14578
+#: elf32-arm.c:14592
 #, c-format
 msgid "error: %pB uses VFP register arguments, %pB does not"
 msgstr ""
 
-#: elf32-arm.c:14737
+#: elf32-arm.c:14751
 #, c-format
 msgid "error: %pB: unable to merge virtualization attributes with %pB"
 msgstr ""
 
-#: elf32-arm.c:14763
+#: elf32-arm.c:14777
 #, c-format
 msgid "error: %pB: conflicting architecture profiles %c/%c"
 msgstr ""
 
-#: elf32-arm.c:14902
+#: elf32-arm.c:14916
 #, c-format
 msgid "warning: %pB: conflicting platform configuration"
 msgstr ""
 
-#: elf32-arm.c:14911
+#: elf32-arm.c:14925
 #, c-format
 msgid "error: %pB: conflicting use of R9"
 msgstr ""
 
-#: elf32-arm.c:14923
+#: elf32-arm.c:14937
 #, c-format
 msgid "error: %pB: SB relative addressing conflicts with use of R9"
 msgstr ""
 
-#: elf32-arm.c:14936
+#: elf32-arm.c:14950
 #, c-format
 msgid ""
 "warning: %pB uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; "
 "use of wchar_t values across objects may fail"
 msgstr ""
 
-#: elf32-arm.c:14967
+#: elf32-arm.c:14981
 #, c-format
 msgid ""
 "warning: %pB uses %s enums yet the output is to use %s enums; use of enum "
 "values across objects may fail"
 msgstr ""
 
-#: elf32-arm.c:14979
+#: elf32-arm.c:14993
 #, c-format
 msgid "error: %pB uses iWMMXt register arguments, %pB does not"
 msgstr ""
 
-#: elf32-arm.c:14996
+#: elf32-arm.c:15010
 #, c-format
 msgid "error: fp16 format mismatch between %pB and %pB"
 msgstr ""
 
-#: elf32-arm.c:15032
+#: elf32-arm.c:15046
 #, c-format
 msgid "%pB has both the current and legacy Tag_MPextension_use attributes"
 msgstr ""
@@ -1786,266 +1854,263 @@ 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:15119 elf32-bfin.c:4735 elf32-cris.c:3906 elf32-m68hc1x.c:1416
-#: elf32-m68k.c:1205 elf32-score.c:3999 elf32-score7.c:3804 elf32-vax.c:537
-#: elf32-xgate.c:494 elfxx-mips.c:16204
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:7311
+#: elf32-arm.c:15133 elf32-bfin.c:4735 elf32-cris.c:3906 elf32-m68hc1x.c:1416
+#: elf32-m68k.c:1205 elf32-score.c:4000 elf32-score7.c:3805 elf32-vax.c:537
+#: elf32-xgate.c:494 elfxx-mips.c:16220 elfnn-aarch64.c:7378
 #, c-format
 msgid "private flags = %lx:"
 msgstr ""
 
-#: elf32-arm.c:15128
+#: elf32-arm.c:15142
 #, c-format
 msgid " [interworking enabled]"
 msgstr ""
 
-#: elf32-arm.c:15136
+#: elf32-arm.c:15150
 #, c-format
 msgid " [VFP float format]"
 msgstr ""
 
-#: elf32-arm.c:15138
+#: elf32-arm.c:15152
 #, c-format
 msgid " [Maverick float format]"
 msgstr ""
 
-#: elf32-arm.c:15140
+#: elf32-arm.c:15154
 #, c-format
 msgid " [FPA float format]"
 msgstr ""
 
-#: elf32-arm.c:15143
+#: elf32-arm.c:15157
 #, c-format
 msgid " [floats passed in float registers]"
 msgstr ""
 
-#: elf32-arm.c:15146 elf32-arm.c:15232
+#: elf32-arm.c:15160 elf32-arm.c:15246
 #, c-format
 msgid " [position independent]"
 msgstr ""
 
-#: elf32-arm.c:15149
+#: elf32-arm.c:15163
 #, c-format
 msgid " [new ABI]"
 msgstr ""
 
-#: elf32-arm.c:15152
+#: elf32-arm.c:15166
 #, c-format
 msgid " [old ABI]"
 msgstr ""
 
-#: elf32-arm.c:15155
+#: elf32-arm.c:15169
 #, c-format
 msgid " [software FP]"
 msgstr ""
 
-#: elf32-arm.c:15164
+#: elf32-arm.c:15178
 #, c-format
 msgid " [Version1 EABI]"
 msgstr ""
 
-#: elf32-arm.c:15167 elf32-arm.c:15178
+#: elf32-arm.c:15181 elf32-arm.c:15192
 #, c-format
 msgid " [sorted symbol table]"
 msgstr ""
 
-#: elf32-arm.c:15169 elf32-arm.c:15180
+#: elf32-arm.c:15183 elf32-arm.c:15194
 #, c-format
 msgid " [unsorted symbol table]"
 msgstr ""
 
-#: elf32-arm.c:15175
+#: elf32-arm.c:15189
 #, c-format
 msgid " [Version2 EABI]"
 msgstr ""
 
-#: elf32-arm.c:15183
+#: elf32-arm.c:15197
 #, c-format
 msgid " [dynamic symbols use segment index]"
 msgstr ""
 
-#: elf32-arm.c:15186
+#: elf32-arm.c:15200
 #, c-format
 msgid " [mapping symbols precede others]"
 msgstr ""
 
-#: elf32-arm.c:15193
+#: elf32-arm.c:15207
 #, c-format
 msgid " [Version3 EABI]"
 msgstr ""
 
-#: elf32-arm.c:15197
+#: elf32-arm.c:15211
 #, c-format
 msgid " [Version4 EABI]"
 msgstr ""
 
-#: elf32-arm.c:15201
+#: elf32-arm.c:15215
 #, c-format
 msgid " [Version5 EABI]"
 msgstr ""
 
-#: elf32-arm.c:15204
+#: elf32-arm.c:15218
 #, c-format
 msgid " [soft-float ABI]"
 msgstr ""
 
-#: elf32-arm.c:15207
+#: elf32-arm.c:15221
 #, c-format
 msgid " [hard-float ABI]"
 msgstr ""
 
-#: elf32-arm.c:15213
+#: elf32-arm.c:15227
 #, c-format
 msgid " [BE8]"
 msgstr ""
 
-#: elf32-arm.c:15216
+#: elf32-arm.c:15230
 #, c-format
 msgid " [LE8]"
 msgstr ""
 
-#: elf32-arm.c:15222
+#: elf32-arm.c:15236
 #, c-format
 msgid " <EABI version unrecognised>"
 msgstr ""
 
-#: elf32-arm.c:15229
+#: elf32-arm.c:15243
 #, c-format
 msgid " [relocatable executable]"
 msgstr ""
 
-#: elf32-arm.c:15235
+#: elf32-arm.c:15249
 #, c-format
 msgid " [FDPIC ABI supplement]"
 msgstr ""
 
-#: elf32-arm.c:15240 /work/sources/binutils/current/bfd/elfnn-aarch64.c:7314
+#: elf32-arm.c:15254 elfnn-aarch64.c:7381
 #, c-format
 msgid "<Unrecognised flag bits set>"
 msgstr ""
 
-#: elf32-arm.c:15357 elf32-i386.c:1529 elf32-s390.c:960 elf32-tic6x.c:2783
-#: elf32-tilepro.c:1478 elf32-xtensa.c:1034 elf64-s390.c:882
-#: elf64-x86-64.c:1874 elfxx-sparc.c:1421 elfxx-tilegx.c:1699
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:7602
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:552
+#: elf32-arm.c:15371 elf32-i386.c:1542 elf32-s390.c:960 elf32-tic6x.c:2783
+#: elf32-tilepro.c:1478 elf32-xtensa.c:1072 elf64-s390.c:882
+#: elf64-x86-64.c:1918 elfxx-sparc.c:1421 elfxx-tilegx.c:1699
+#: elfnn-aarch64.c:7669 elfnn-riscv.c:560
 #, c-format
 msgid "%pB: bad symbol index: %d"
 msgstr ""
 
-#: elf32-arm.c:15746
+#: elf32-arm.c:15760
 #, c-format
 msgid ""
 "FDPIC does not yet support %s relocation to become dynamic for executable"
 msgstr ""
 
-#: elf32-arm.c:16740 elf32-csky.c:1932 elf32-hppa.c:2096 elf32-lm32.c:1999
-#: elf32-m32r.c:2110 elf32-metag.c:2795 elf32-nds32.c:4334 elf32-or1k.c:2858
-#: elf32-ppc.c:5442 elf32-s390.c:1853 elf32-sh.c:2977 elf32-tic6x.c:3252
-#: elf32-tilepro.c:2244 elf64-ppc.c:9713 elf64-s390.c:1789 elfxx-sparc.c:2432
-#: elfxx-tilegx.c:2490 elfxx-x86.c:571
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:8865
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:1155
+#: elf32-arm.c:16754 elf32-csky.c:1932 elf32-hppa.c:2123 elf32-lm32.c:1999
+#: elf32-m32r.c:2110 elf32-metag.c:2795 elf32-nds32.c:4334 elf32-or1k.c:2967
+#: elf32-ppc.c:5451 elf32-s390.c:1853 elf32-sh.c:2977 elf32-tic6x.c:3252
+#: elf32-tilepro.c:2244 elf64-alpha.c:2020 elf64-alpha.c:2715 elf64-ppc.c:9917
+#: elf64-s390.c:1789 elfxx-sparc.c:2432 elfxx-tilegx.c:2490 elfxx-x86.c:574
+#: elfnn-aarch64.c:8934 elfnn-riscv.c:1163
 #, c-format
 msgid "%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"
 msgstr ""
 
-#: elf32-arm.c:17036
+#: elf32-arm.c:17050
 #, c-format
 msgid "errors encountered processing file %pB"
 msgstr ""
 
-#: elf32-arm.c:17483 elflink.c:12692 elflink.c:12739
+#: elf32-arm.c:17497 elflink.c:12808 elflink.c:12855
 #, c-format
 msgid "could not find section %s"
 msgstr ""
 
-#: elf32-arm.c:18702
+#: elf32-arm.c:18716
 #, c-format
 msgid "%pB: error: Cortex-A8 erratum stub is allocated in unsafe location"
 msgstr ""
 
 #. There's not much we can do apart from complain if this
 #. happens.
-#: elf32-arm.c:18729
+#: elf32-arm.c:18743
 #, c-format
 msgid "%pB: error: Cortex-A8 erratum stub out of range (input file too large)"
 msgstr ""
 
-#: elf32-arm.c:19556 elf32-arm.c:19578
+#: elf32-arm.c:19570 elf32-arm.c:19592
 #, c-format
 msgid "%pB: error: VFP11 veneer out of range"
 msgstr ""
 
-#: elf32-arm.c:19629
+#: elf32-arm.c:19643
 #, c-format
 msgid ""
 "%pB(%#<PRIx64>): error: cannot create STM32L4XX veneer; jump out of range by "
 "%<PRId64> bytes; cannot encode branch instruction"
 msgstr ""
 
-#: elf32-arm.c:19668
+#: elf32-arm.c:19682
 #, c-format
 msgid "%pB: error: cannot create STM32L4XX veneer"
 msgstr ""
 
-#: elf32-arm.c:20749
+#: elf32-arm.c:20763
 #, c-format
 msgid "error: %pB is already in final BE8 format"
 msgstr ""
 
-#: elf32-arm.c:20825
+#: elf32-arm.c:20839
 #, c-format
 msgid ""
 "error: source object %pB has EABI version %d, but target %pB has EABI "
 "version %d"
 msgstr ""
 
-#: elf32-arm.c:20840
+#: elf32-arm.c:20854
 #, c-format
 msgid "error: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%d"
 msgstr ""
 
-#: elf32-arm.c:20850
+#: elf32-arm.c:20864
 #, c-format
 msgid ""
 "error: %pB passes floats in float registers, whereas %pB passes them in "
 "integer registers"
 msgstr ""
 
-#: elf32-arm.c:20854
+#: elf32-arm.c:20868
 #, c-format
 msgid ""
 "error: %pB passes floats in integer registers, whereas %pB passes them in "
 "float registers"
 msgstr ""
 
-#: elf32-arm.c:20864 elf32-arm.c:20868 elf32-arm.c:20878
+#: elf32-arm.c:20878 elf32-arm.c:20882 elf32-arm.c:20892
 #, c-format
 msgid "error: %pB uses %s instructions, whereas %pB does not"
 msgstr ""
 
-#: elf32-arm.c:20882
+#: elf32-arm.c:20896
 #, c-format
 msgid "error: %pB does not use %s instructions, whereas %pB does"
 msgstr ""
 
-#: elf32-arm.c:20901
+#: elf32-arm.c:20915
 #, c-format
 msgid "error: %pB uses software FP, whereas %pB uses hardware FP"
 msgstr ""
 
-#: elf32-arm.c:20905
+#: elf32-arm.c:20919
 #, c-format
 msgid "error: %pB uses hardware FP, whereas %pB uses software FP"
 msgstr ""
 
-#: elf32-arm.c:20919
+#: elf32-arm.c:20933
 #, c-format
 msgid "warning: %pB supports interworking, whereas %pB does not"
 msgstr ""
 
-#: elf32-arm.c:20925
+#: elf32-arm.c:20939
 #, c-format
 msgid "warning: %pB does not support interworking, whereas %pB does"
 msgstr ""
@@ -2053,13 +2118,13 @@ msgstr ""
 #: elf32-avr.c:1518 elf32-bfin.c:3130 elf32-cris.c:2041 elf32-epiphany.c:577
 #: elf32-fr30.c:602 elf32-frv.c:4053 elf32-ft32.c:502 elf32-ip2k.c:1493
 #: elf32-iq2000.c:699 elf32-m32c.c:632 elf32-mep.c:534 elf32-metag.c:1998
-#: elf32-moxie.c:296 elf32-msp430.c:1369 elf32-mt.c:406 elf32-or1k.c:1767
+#: elf32-moxie.c:296 elf32-msp430.c:1375 elf32-mt.c:406 elf32-or1k.c:1829
 #: elf32-tilepro.c:3513 elf32-v850.c:2298 elf32-visium.c:688
 #: elf32-xstormy16.c:937 elf64-bpf.c:496 elf64-mmix.c:1549 elfxx-tilegx.c:3877
 msgid "internal error: dangerous relocation"
 msgstr ""
 
-#: elf32-avr.c:3338 /work/sources/binutils/current/bfd/elfnn-aarch64.c:3267
+#: elf32-avr.c:3338 elfnn-aarch64.c:3267
 #, c-format
 msgid "cannot create stub entry %s"
 msgstr ""
@@ -2073,8 +2138,8 @@ msgstr ""
 msgid "%pB(%pA+%#<PRIx64>): unresolvable relocation against symbol `%s'"
 msgstr ""
 
-#: elf32-bfin.c:1616 elf32-i386.c:3443 elf32-m68k.c:3989 elf32-s390.c:3268
-#: elf64-s390.c:3217 elf64-x86-64.c:4011
+#: elf32-bfin.c:1616 elf32-i386.c:3461 elf32-m68k.c:3989 elf32-s390.c:3268
+#: elf64-s390.c:3217 elf64-x86-64.c:4128
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): reloc against `%s': error %d"
 msgstr ""
@@ -2098,7 +2163,7 @@ msgstr ""
 msgid "cannot emit fixups in read-only section"
 msgstr ""
 
-#: elf32-bfin.c:2821 elf32-bfin.c:2949 elf32-lm32.c:1049 elf32-sh.c:4513
+#: elf32-bfin.c:2821 elf32-bfin.c:2949 elf32-lm32.c:1049 elf32-sh.c:4500
 msgid "cannot emit dynamic relocations in read-only section"
 msgstr ""
 
@@ -2114,27 +2179,27 @@ msgstr ""
 msgid "warning: relocation references a different segment"
 msgstr ""
 
-#: elf32-bfin.c:4782 elf32-frv.c:6597
+#: elf32-bfin.c:4786 elf32-frv.c:6601
 #, c-format
 msgid "%pB: cannot link non-fdpic object file into fdpic executable"
 msgstr ""
 
-#: elf32-bfin.c:4786 elf32-frv.c:6601
+#: elf32-bfin.c:4790 elf32-frv.c:6605
 #, c-format
 msgid "%pB: cannot link fdpic object file into non-fdpic executable"
 msgstr ""
 
-#: elf32-bfin.c:4936
+#: elf32-bfin.c:4940
 #, c-format
 msgid "*** check this relocation %s"
 msgstr ""
 
-#: elf32-bfin.c:5052
+#: elf32-bfin.c:5056
 msgid ""
 "the bfin target does not currently support the generation of copy relocations"
 msgstr ""
 
-#: elf32-bfin.c:5346 elf32-cr16.c:2801 elf32-m68k.c:4403
+#: elf32-bfin.c:5350 elf32-cr16.c:2801 elf32-m68k.c:4403
 msgid "unsupported relocation type"
 msgstr ""
 
@@ -2304,7 +2369,7 @@ msgid ""
 msgstr ""
 
 #. The r_type is error, not support it.
-#: elf32-csky.c:4224 elf32-i386.c:351
+#: elf32-csky.c:4232 elf32-i386.c:351
 #, c-format
 msgid "%pB: unsupported relocation type: %#x"
 msgstr ""
@@ -2407,18 +2472,18 @@ msgstr ""
 msgid "%H: reloc against `%s': %s\n"
 msgstr ""
 
-#: elf32-frv.c:6508
+#: elf32-frv.c:6512
 #, c-format
 msgid ""
 "%pB: compiled with %s and linked with modules that use non-pic relocations"
 msgstr ""
 
-#: elf32-frv.c:6562 elf32-iq2000.c:830 elf32-m32c.c:876
+#: elf32-frv.c:6566 elf32-iq2000.c:830 elf32-m32c.c:876
 #, c-format
 msgid "%pB: compiled with %s and linked with modules compiled with %s"
 msgstr ""
 
-#: elf32-frv.c:6575
+#: elf32-frv.c:6579
 #, c-format
 msgid ""
 "%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)"
@@ -2429,118 +2494,124 @@ msgstr ""
 msgid "%pB: relocations in generic ELF (EM: %d)"
 msgstr ""
 
-#: elf32-hppa.c:842 elf32-hppa.c:3518
+#: elf32-hppa.c:767 elf32-hppa.c:848 elf64-ppc.c:11918
+msgid ""
+"%F%P: Could not assign %pA to an output section. Retry without --enable-non-"
+"contiguous-regions.\n"
+msgstr ""
+
+#: elf32-hppa.c:869 elf32-hppa.c:3545
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): cannot reach %s, recompile with -ffunction-sections"
 msgstr ""
 
-#: elf32-hppa.c:1256
+#: elf32-hppa.c:1283
 #, c-format
 msgid ""
 "%pB: relocation %s can not be used when making a shared object; recompile "
 "with -fPIC"
 msgstr ""
 
-#: elf32-hppa.c:2695
+#: elf32-hppa.c:2722
 #, c-format
 msgid "%pB: duplicate export stub %s"
 msgstr ""
 
-#: elf32-hppa.c:3351
+#: elf32-hppa.c:3378
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): %s fixup for insn %#x is not supported in a non-shared "
 "link"
 msgstr ""
 
-#: elf32-hppa.c:4147
+#: elf32-hppa.c:4174
 #, c-format
 msgid "%s has both normal and TLS relocs"
 msgstr ""
 
-#: elf32-hppa.c:4165
+#: elf32-hppa.c:4192
 #, c-format
 msgid "%pB:%s has both normal and TLS relocs"
 msgstr ""
 
-#: elf32-hppa.c:4224
+#: elf32-hppa.c:4251
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot handle %s for %s"
 msgstr ""
 
-#: elf32-hppa.c:4528
+#: elf32-hppa.c:4555
 msgid ".got section not immediately after .plt section"
 msgstr ""
 
-#: elf32-i386.c:1178 elf64-x86-64.c:1377
+#: elf32-i386.c:1178 elf64-x86-64.c:1389
 #, c-format
 msgid ""
 "%pB: TLS transition from %s to %s against `%s' at %#<PRIx64> in section `"
 "%pA' failed"
 msgstr ""
 
-#: elf32-i386.c:1269
+#: elf32-i386.c:1281
 #, c-format
 msgid ""
 "%pB: direct GOT relocation R_386_GOT32X against `%s' without base register "
 "can not be used when making a shared object"
 msgstr ""
 
-#: elf32-i386.c:1722 elf32-s390.c:1188 elf32-sh.c:5662 elf32-tilepro.c:1591
-#: elf32-xtensa.c:1206 elf64-s390.c:1120 elfxx-sparc.c:1590 elfxx-tilegx.c:1804
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:464
+#: elf32-i386.c:1739 elf32-s390.c:1188 elf32-sh.c:5649 elf32-tilepro.c:1591
+#: elf32-xtensa.c:1244 elf64-s390.c:1120 elfxx-sparc.c:1590 elfxx-tilegx.c:1804
+#: elfnn-riscv.c:472
 #, c-format
 msgid "%pB: `%s' accessed both as normal and thread local symbol"
 msgstr ""
 
-#: elf32-i386.c:1794
+#: elf32-i386.c:1811
 #, c-format
 msgid "%pB: unsupported non-PIC call to IFUNC `%s'"
 msgstr ""
 
-#: elf32-i386.c:2373 elf64-x86-64.c:2674
+#: elf32-i386.c:2391 elf64-x86-64.c:2737
 #, c-format
 msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported"
 msgstr ""
 
-#: elf32-i386.c:2406 elf32-i386.c:3654 elf32-i386.c:3795 elf64-x86-64.c:2731
-#: elf64-x86-64.c:4184 elf64-x86-64.c:4340
+#: elf32-i386.c:2424 elf32-i386.c:3672 elf32-i386.c:3813 elf64-x86-64.c:2794
+#: elf64-x86-64.c:4301 elf64-x86-64.c:4457
 #, c-format
 msgid "Local IFUNC function `%s' in %pB\n"
 msgstr ""
 
-#: elf32-i386.c:2563
+#: elf32-i386.c:2581
 #, c-format
 msgid ""
 "%pB: direct GOT relocation %s against `%s' without base register can not be "
 "used when making a shared object"
 msgstr ""
 
-#: elf32-i386.c:2598 elf64-x86-64.c:2923
+#: elf32-i386.c:2616 elf64-x86-64.c:2993
 msgid "hidden symbol"
 msgstr ""
 
-#: elf32-i386.c:2601 elf64-x86-64.c:2926
+#: elf32-i386.c:2619 elf64-x86-64.c:2996
 msgid "internal symbol"
 msgstr ""
 
-#: elf32-i386.c:2604 elf64-x86-64.c:2929
+#: elf32-i386.c:2622 elf64-x86-64.c:2999
 msgid "protected symbol"
 msgstr ""
 
-#: elf32-i386.c:2607 elf64-x86-64.c:2932
+#: elf32-i386.c:2625 elf64-x86-64.c:3002
 msgid "symbol"
 msgstr ""
 
-#: elf32-i386.c:2613
+#: elf32-i386.c:2631
 #, c-format
 msgid ""
 "%pB: relocation R_386_GOTOFF against undefined %s `%s' can not be used when "
 "making a shared object"
 msgstr ""
 
-#: elf32-i386.c:2626
+#: elf32-i386.c:2644
 #, c-format
 msgid ""
 "%pB: relocation R_386_GOTOFF against protected %s `%s' can not be used when "
@@ -2567,11 +2638,11 @@ msgid ""
 "ip2k linker: redundant page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
 msgstr ""
 
-#: elf32-lm32.c:651 elf32-nios2.c:3141
+#: elf32-lm32.c:651 elf32-nios2.c:3152
 msgid "global pointer relative relocation when _gp not defined"
 msgstr ""
 
-#: elf32-lm32.c:706 elf32-nios2.c:3578
+#: elf32-lm32.c:706 elf32-nios2.c:3589
 msgid "global pointer relative address out of range"
 msgstr ""
 
@@ -2594,7 +2665,7 @@ msgstr ""
 msgid "%pB: instruction set mismatch with previous modules"
 msgstr ""
 
-#: elf32-m32r.c:3508 elf32-nds32.c:6995
+#: elf32-m32r.c:3508 elf32-nds32.c:6999
 #, c-format
 msgid "private flags = %lx"
 msgstr ""
@@ -2718,7 +2789,7 @@ msgstr ""
 msgid " [XGATE RAM offsetting]"
 msgstr ""
 
-#: elf32-m68k.c:1220 elf32-m68k.c:1221 vms-alpha.c:7581 vms-alpha.c:7597
+#: elf32-m68k.c:1220 elf32-m68k.c:1221 vms-alpha.c:7635 vms-alpha.c:7651
 msgid "unknown"
 msgstr ""
 
@@ -2785,50 +2856,50 @@ msgstr ""
 msgid "32bits gp relative relocation occurs for an external symbol"
 msgstr ""
 
-#: elf32-msp430.c:840 elf32-msp430.c:1154
+#: elf32-msp430.c:846 elf32-msp430.c:1160
 msgid "try enabling relaxation to avoid relocation truncations"
 msgstr ""
 
-#: elf32-msp430.c:1361
+#: elf32-msp430.c:1367
 msgid "internal error: branch/jump to an odd address detected"
 msgstr ""
 
-#: elf32-msp430.c:2360
+#: elf32-msp430.c:2535
 #, c-format
 msgid "warning: %pB: unknown MSPABI object attribute %d"
 msgstr ""
 
-#: elf32-msp430.c:2461
+#: elf32-msp430.c:2636
 #, c-format
 msgid "error: %pB uses %s instructions but %pB uses %s"
 msgstr ""
 
-#: elf32-msp430.c:2473
+#: elf32-msp430.c:2648
 #, c-format
 msgid "error: %pB uses the %s code model whereas %pB uses the %s code model"
 msgstr ""
 
-#: elf32-msp430.c:2486
+#: elf32-msp430.c:2661
 #, c-format
 msgid "error: %pB uses the large code model but %pB uses MSP430 instructions"
 msgstr ""
 
-#: elf32-msp430.c:2497
+#: elf32-msp430.c:2672
 #, c-format
 msgid "error: %pB uses the %s data model whereas %pB uses the %s data model"
 msgstr ""
 
-#: elf32-msp430.c:2510
+#: elf32-msp430.c:2685
 #, c-format
 msgid "error: %pB uses the small code model but %pB uses the %s data model"
 msgstr ""
 
-#: elf32-msp430.c:2522
+#: elf32-msp430.c:2697
 #, c-format
 msgid "error: %pB uses the %s data model but %pB only uses MSP430 instructions"
 msgstr ""
 
-#: elf32-msp430.c:2547
+#: elf32-msp430.c:2722
 #, c-format
 msgid ""
 "error: %pB can use the upper region for data, but %pB assumes data is "
@@ -2867,151 +2938,151 @@ msgid ""
 "current %u-byte"
 msgstr ""
 
-#: elf32-nds32.c:6831
+#: elf32-nds32.c:6835
 #, c-format
 msgid "%pB: warning: endian mismatch with previous modules"
 msgstr ""
 
-#: elf32-nds32.c:6845
+#: elf32-nds32.c:6849
 #, c-format
 msgid ""
 "%pB: warning: older version of object file encountered, please recompile "
 "with current tool chain"
 msgstr ""
 
-#: elf32-nds32.c:6933
+#: elf32-nds32.c:6937
 #, c-format
 msgid "%pB: error: ABI mismatch with previous modules"
 msgstr ""
 
-#: elf32-nds32.c:6943
+#: elf32-nds32.c:6947
 #, c-format
 msgid "%pB: error: instruction set mismatch with previous modules"
 msgstr ""
 
-#: elf32-nds32.c:6970
+#: elf32-nds32.c:6974
 #, c-format
 msgid "%pB: warning: incompatible elf-versions %s and %s"
 msgstr ""
 
-#: elf32-nds32.c:7001
+#: elf32-nds32.c:7005
 #, c-format
 msgid ": n1 instructions"
 msgstr ""
 
-#: elf32-nds32.c:7004
+#: elf32-nds32.c:7008
 #, c-format
 msgid ": n1h instructions"
 msgstr ""
 
-#: elf32-nds32.c:9465
+#: elf32-nds32.c:9469
 #, c-format
 msgid "%pB: error: search_nds32_elf_blank reports wrong node"
 msgstr ""
 
-#: elf32-nds32.c:9725
+#: elf32-nds32.c:9729
 #, c-format
 msgid "%pB: warning: %s points to unrecognized reloc at %#<PRIx64>"
 msgstr ""
 
-#: elf32-nds32.c:12978
+#: elf32-nds32.c:12994
 #, c-format
 msgid "%pB: nested OMIT_FP in %pA"
 msgstr ""
 
-#: elf32-nds32.c:12997
+#: elf32-nds32.c:13013
 #, c-format
 msgid "%pB: unmatched OMIT_FP in %pA"
 msgstr ""
 
-#: elf32-nds32.c:13279 reloc.c:8442
+#: elf32-nds32.c:13295 reloc.c:8470
 #, c-format
 msgid "%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"
 msgstr ""
 
-#: elf32-nios2.c:2930
+#: elf32-nios2.c:2941
 #, c-format
 msgid "error: %pB: big-endian R2 is not supported"
 msgstr ""
 
-#: elf32-nios2.c:3822
+#: elf32-nios2.c:3833
 #, c-format
 msgid ""
 "global pointer relative relocation at address %#<PRIx64> when _gp not "
 "defined\n"
 msgstr ""
 
-#: elf32-nios2.c:3852
+#: elf32-nios2.c:3863
 #, c-format
 msgid ""
 "unable to reach %s (at %#<PRIx64>) from the global pointer (at %#<PRIx64>) "
 "because the offset (%<PRId64>) is out of the allowed range, -32678 to 32767\n"
 msgstr ""
 
-#: elf32-nios2.c:4507 elf32-pru.c:931
+#: elf32-nios2.c:4518 elf32-pru.c:931
 msgid "relocation out of range"
 msgstr ""
 
-#: elf32-nios2.c:4517 elf32-pru.c:941 elf32-tic6x.c:2716
+#: elf32-nios2.c:4528 elf32-pru.c:941 elf32-tic6x.c:2716
 msgid "dangerous relocation"
 msgstr ""
 
-#: elf32-nios2.c:5392
+#: elf32-nios2.c:5403
 #, c-format
 msgid "dynamic variable `%s' is zero size"
 msgstr ""
 
-#: elf32-or1k.c:1177
+#: elf32-or1k.c:1214
 #, c-format
 msgid "%pB: Cannot handle relocation value size of %d"
 msgstr ""
 
-#: elf32-or1k.c:1286
+#: elf32-or1k.c:1321
 #, c-format
 msgid "%pB: unknown relocation type %d"
 msgstr ""
 
-#: elf32-or1k.c:1340
+#: elf32-or1k.c:1375
 #, c-format
 msgid "%pB: addend should be zero for plt relocations"
 msgstr ""
 
-#: elf32-or1k.c:1445
+#: elf32-or1k.c:1480
 #, c-format
 msgid "%pB: addend should be zero for got relocations"
 msgstr ""
 
-#: elf32-or1k.c:1462
+#: elf32-or1k.c:1497
 #, c-format
 msgid "%pB: gotoff relocation against dynamic symbol %s"
 msgstr ""
 
-#: elf32-or1k.c:1479 elf64-alpha.c:4456 elf64-alpha.c:4600
+#: elf32-or1k.c:1514 elf64-alpha.c:4471 elf64-alpha.c:4615
 #, c-format
 msgid "%pB: pc-relative relocation against dynamic symbol %s"
 msgstr ""
 
-#: elf32-or1k.c:1493
+#: elf32-or1k.c:1528
 #, c-format
 msgid "%pB: non-pic relocation against symbol %s"
 msgstr ""
 
-#: elf32-or1k.c:1577
+#: elf32-or1k.c:1612
 #, c-format
 msgid "%pB: support for local dynamic not implemented"
 msgstr ""
 
-#: elf32-or1k.c:1729
+#: elf32-or1k.c:1791
 #, c-format
 msgid "%pB: will not resolve runtime TLS relocation"
 msgstr ""
 
-#: elf32-or1k.c:2071
+#: elf32-or1k.c:2133
 #, c-format
 msgid "%pB: bad relocation section name `%s'"
 msgstr ""
 
-#: elf32-or1k.c:3218
+#: elf32-or1k.c:3322
 #, c-format
 msgid "%pB: %s flag mismatch with previous modules"
 msgstr ""
@@ -3021,97 +3092,97 @@ msgstr ""
 msgid "generic linker can't handle %s"
 msgstr ""
 
-#: elf32-ppc.c:1622
+#: elf32-ppc.c:1628
 #, c-format
 msgid "corrupt %s section in %pB"
 msgstr ""
 
-#: elf32-ppc.c:1642
+#: elf32-ppc.c:1648
 #, c-format
 msgid "unable to read in %s section from %pB"
 msgstr ""
 
-#: elf32-ppc.c:1684
+#: elf32-ppc.c:1690
 #, c-format
 msgid "warning: unable to set size of %s section in %pB"
 msgstr ""
 
-#: elf32-ppc.c:1734
+#: elf32-ppc.c:1740
 msgid "failed to allocate space for new APUinfo section"
 msgstr ""
 
-#: elf32-ppc.c:1753
+#: elf32-ppc.c:1759
 msgid "failed to compute new APUinfo section"
 msgstr ""
 
-#: elf32-ppc.c:1756
+#: elf32-ppc.c:1762
 msgid "failed to install new APUinfo section"
 msgstr ""
 
-#: elf32-ppc.c:2864
+#: elf32-ppc.c:2870
 #, c-format
 msgid "%pB: relocation %s cannot be used when making a shared object"
 msgstr ""
 
-#: elf32-ppc.c:3581 elf32-ppc.c:3589
+#: elf32-ppc.c:3587 elf32-ppc.c:3595
 #, c-format
 msgid "%pB uses hard float, %pB uses soft float"
 msgstr ""
 
-#: elf32-ppc.c:3597 elf32-ppc.c:3605
+#: elf32-ppc.c:3603 elf32-ppc.c:3611
 #, c-format
 msgid ""
 "%pB uses double-precision hard float, %pB uses single-precision hard float"
 msgstr ""
 
-#: elf32-ppc.c:3624 elf32-ppc.c:3632
+#: elf32-ppc.c:3630 elf32-ppc.c:3638
 #, c-format
 msgid "%pB uses 64-bit long double, %pB uses 128-bit long double"
 msgstr ""
 
-#: elf32-ppc.c:3640 elf32-ppc.c:3648
+#: elf32-ppc.c:3646 elf32-ppc.c:3654
 #, c-format
 msgid "%pB uses IBM long double, %pB uses IEEE long double"
 msgstr ""
 
-#: elf32-ppc.c:3715 elf32-ppc.c:3724
+#: elf32-ppc.c:3721 elf32-ppc.c:3730
 #, c-format
 msgid "%pB uses AltiVec vector ABI, %pB uses SPE vector ABI"
 msgstr ""
 
-#: elf32-ppc.c:3753 elf32-ppc.c:3762
+#: elf32-ppc.c:3759 elf32-ppc.c:3768
 #, c-format
 msgid "%pB uses r3/r4 for small structure returns, %pB uses memory"
 msgstr ""
 
-#: elf32-ppc.c:3823
+#: elf32-ppc.c:3832
 #, c-format
 msgid ""
 "%pB: compiled with -mrelocatable and linked with modules compiled normally"
 msgstr ""
 
-#: elf32-ppc.c:3831
+#: elf32-ppc.c:3840
 #, c-format
 msgid ""
 "%pB: compiled normally and linked with modules compiled with -mrelocatable"
 msgstr ""
 
-#: elf32-ppc.c:3900
+#: elf32-ppc.c:3909
 #, c-format
 msgid "%pB(%pA+0x%lx): expected 16A style relocation on 0x%08x insn"
 msgstr ""
 
-#: elf32-ppc.c:3919
+#: elf32-ppc.c:3928
 #, c-format
 msgid "%pB(%pA+0x%lx): expected 16D style relocation on 0x%08x insn"
 msgstr ""
 
-#: elf32-ppc.c:4022
+#: elf32-ppc.c:4031
 #, c-format
 msgid "bss-plt forced due to %pB"
 msgstr ""
 
-#: elf32-ppc.c:4024
+#: elf32-ppc.c:4033
 msgid "bss-plt forced by profiling"
 msgstr ""
 
@@ -3119,40 +3190,40 @@ msgstr ""
 #. could just mark this symbol to exclude it
 #. from tls optimization but it's safer to skip
 #. the entire optimization.
-#: elf32-ppc.c:4599 elf64-ppc.c:8099
+#: elf32-ppc.c:4608 elf64-ppc.c:8277
 #, c-format
 msgid "%H arg lost __tls_get_addr, TLS optimization disabled\n"
 msgstr ""
 
-#: elf32-ppc.c:5550 elf32-sh.c:3080 elf32-tilepro.c:2338 elfxx-sparc.c:2531
+#: elf32-ppc.c:5559 elf32-sh.c:3080 elf32-tilepro.c:2338 elfxx-sparc.c:2531
 #: elfxx-tilegx.c:2578
 #, c-format
 msgid "%pB: dynamic relocation in read-only section `%pA'\n"
 msgstr ""
 
-#: elf32-ppc.c:7430
+#: elf32-ppc.c:7439
 msgid "%P: %H: error: %s with unexpected instruction %x\n"
 msgstr ""
 
-#: elf32-ppc.c:7467
+#: elf32-ppc.c:7476
 msgid "%H: fixup branch overflow\n"
 msgstr ""
 
-#: elf32-ppc.c:7507 elf32-ppc.c:7543
+#: elf32-ppc.c:7516 elf32-ppc.c:7552
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): error: %s with unexpected instruction %#x"
 msgstr ""
 
-#: elf32-ppc.c:7607
+#: elf32-ppc.c:7616
 #, c-format
 msgid "%X%H: unsupported bss-plt -fPIC ifunc %s\n"
 msgstr ""
 
-#: elf32-ppc.c:7646 elf64-ppc.c:16456
+#: elf32-ppc.c:7655 elf64-ppc.c:16914
 msgid "%H: warning: %s unexpected insn %#x.\n"
 msgstr ""
 
-#: elf32-ppc.c:7955
+#: elf32-ppc.c:7964
 #, c-format
 msgid "%H: non-zero addend on %s reloc against `%s'\n"
 msgstr ""
@@ -3165,54 +3236,54 @@ msgstr ""
 #. local won't have the +32k reloc addend trick marking
 #. -fPIC code, so the linker won't know whether r30 is
 #. _GLOBAL_OFFSET_TABLE_ or pointing into a .got2 section.
-#: elf32-ppc.c:7987
+#: elf32-ppc.c:7996
 #, c-format
 msgid "%X%H: @local call to ifunc %s\n"
 msgstr ""
 
-#: elf32-ppc.c:8165
+#: elf32-ppc.c:8174
 #, c-format
 msgid "%H: relocation %s for indirect function %s unsupported\n"
 msgstr ""
 
-#: elf32-ppc.c:8499 elf32-ppc.c:8530 elf32-ppc.c:8621 elf32-ppc.c:8717
+#: elf32-ppc.c:8508 elf32-ppc.c:8539 elf32-ppc.c:8630 elf32-ppc.c:8726
 #, c-format
 msgid ""
 "%pB: the target (%s) of a %s relocation is in the wrong output section (%s)"
 msgstr ""
 
-#: elf32-ppc.c:8847 elf32-ppc.c:8865
+#: elf32-ppc.c:8856 elf32-ppc.c:8874
 msgid "%X%P: %H: %s relocation unsupported for bss-plt\n"
 msgstr ""
 
-#: elf32-ppc.c:8946
+#: elf32-ppc.c:8955
 #, c-format
 msgid "%H: error: %s against `%s' not a multiple of %u\n"
 msgstr ""
 
-#: elf32-ppc.c:8975
+#: elf32-ppc.c:8984
 #, c-format
 msgid "%H: unresolvable %s relocation against symbol `%s'\n"
 msgstr ""
 
-#: elf32-ppc.c:9056
+#: elf32-ppc.c:9065
 #, c-format
 msgid "%H: %s reloc against `%s': error %d\n"
 msgstr ""
 
-#: elf32-ppc.c:9947 elf64-ppc.c:17009
+#: elf32-ppc.c:9956 elf64-ppc.c:17465
 msgid ""
 "%X%P: text relocations and GNU indirect functions will result in a segfault "
 "at runtime\n"
 msgstr ""
 
-#: elf32-ppc.c:9951 elf64-ppc.c:17013
+#: elf32-ppc.c:9960 elf64-ppc.c:17469
 msgid ""
 "%P: warning: text relocations and GNU indirect functions may result in a "
 "segfault at runtime\n"
 msgstr ""
 
-#: elf32-ppc.c:9996
+#: elf32-ppc.c:10005
 #, c-format
 msgid "%s not defined in linker created %pA"
 msgstr ""
@@ -3234,7 +3305,7 @@ msgstr ""
 msgid "warning: RL78_SYM reloc with an unknown symbol"
 msgstr ""
 
-#: elf32-rl78.c:1084 elf32-rx.c:1456
+#: elf32-rl78.c:1084 elf32-rx.c:1461
 #, c-format
 msgid "%pB(%pA): error: call to undefined function '%s'"
 msgstr ""
@@ -3263,17 +3334,17 @@ msgstr ""
 msgid " [64-bit doubles]"
 msgstr ""
 
-#: elf32-rx.c:605
+#: elf32-rx.c:607
 #, c-format
 msgid "%pB:%pA: table entry %s outside table"
 msgstr ""
 
-#: elf32-rx.c:612
+#: elf32-rx.c:614
 #, c-format
 msgid "%pB:%pA: table entry %s not word-aligned within table"
 msgstr ""
 
-#: elf32-rx.c:684
+#: elf32-rx.c:689
 #, c-format
 msgid "%pB:%pA: warning: deprecated Red Hat reloc %s detected against: %s"
 msgstr ""
@@ -3282,36 +3353,36 @@ msgstr ""
 #. an absolute address is being computed.  There are special cases
 #. for relocs against symbols that are known to be referenced in
 #. crt0.o before the PID base address register has been initialised.
-#: elf32-rx.c:704
+#: elf32-rx.c:709
 #, c-format
 msgid "%pB(%pA): unsafe PID relocation %s at %#<PRIx64> (against %s in %s)"
 msgstr ""
 
-#: elf32-rx.c:1288
+#: elf32-rx.c:1293
 msgid "warning: RX_SYM reloc with an unknown symbol"
 msgstr ""
 
-#: elf32-rx.c:3167
+#: elf32-rx.c:3175
 #, c-format
 msgid "there is a conflict merging the ELF header flags from %pB"
 msgstr ""
 
-#: elf32-rx.c:3170
+#: elf32-rx.c:3178
 #, c-format
 msgid "  the input  file's flags: %s"
 msgstr ""
 
-#: elf32-rx.c:3172
+#: elf32-rx.c:3180
 #, c-format
 msgid "  the output file's flags: %s"
 msgstr ""
 
-#: elf32-rx.c:3790
+#: elf32-rx.c:3786
 #, c-format
 msgid "%pB:%pA: table %s missing corresponding %s"
 msgstr ""
 
-#: elf32-rx.c:3798
+#: elf32-rx.c:3794
 #, c-format
 msgid "%pB:%pA: %s and %s must be in the same input section"
 msgstr ""
@@ -3321,35 +3392,35 @@ msgstr ""
 msgid "%pB(%pA+%#<PRIx64>): invalid instruction for TLS relocation %s"
 msgstr ""
 
-#: elf32-score.c:1521 elf32-score7.c:1382 elfxx-mips.c:3819
+#: elf32-score.c:1521 elf32-score7.c:1382 elfxx-mips.c:3824
 msgid "not enough GOT space for local GOT entries"
 msgstr ""
 
-#: elf32-score.c:2746
+#: elf32-score.c:2747
 msgid "address not word aligned"
 msgstr ""
 
-#: elf32-score.c:2827 elf32-score7.c:2632
+#: elf32-score.c:2828 elf32-score7.c:2633
 #, c-format
 msgid "%pB: malformed reloc detected for section %pA"
 msgstr ""
 
-#: elf32-score.c:2881 elf32-score7.c:2686
+#: elf32-score.c:2882 elf32-score7.c:2687
 #, c-format
 msgid "%pB: CALL15 reloc at %#<PRIx64> not against global symbol"
 msgstr ""
 
-#: elf32-score.c:4002 elf32-score7.c:3807
+#: elf32-score.c:4003 elf32-score7.c:3808
 #, c-format
 msgid " [pic]"
 msgstr ""
 
-#: elf32-score.c:4006 elf32-score7.c:3811
+#: elf32-score.c:4007 elf32-score7.c:3812
 #, c-format
 msgid " [fix dep]"
 msgstr ""
 
-#: elf32-score.c:4049 elf32-score7.c:3854
+#: elf32-score.c:4054 elf32-score7.c:3859
 #, c-format
 msgid "%pB: warning: linking PIC files with non-PIC files"
 msgstr ""
@@ -3359,44 +3430,40 @@ msgstr ""
 msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn 0x%x"
 msgstr ""
 
-#: elf32-sh.c:3635
-msgid "unexpected STO_SH5_ISA32 on local symbol is not handled"
-msgstr ""
-
-#: elf32-sh.c:3882
+#: elf32-sh.c:3869
 #, c-format
 msgid ""
 "%pB: %#<PRIx64>: fatal: unaligned branch target for relax-support relocation"
 msgstr ""
 
-#: elf32-sh.c:3912 elf32-sh.c:3928
+#: elf32-sh.c:3899 elf32-sh.c:3915
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: unaligned %s relocation %#<PRIx64>"
 msgstr ""
 
-#: elf32-sh.c:3944
+#: elf32-sh.c:3931
 #, c-format
 msgid ""
 "%pB: %#<PRIx64>: fatal: R_SH_PSHA relocation %<PRId64> not in range -32..32"
 msgstr ""
 
-#: elf32-sh.c:3960
+#: elf32-sh.c:3947
 #, c-format
 msgid ""
 "%pB: %#<PRIx64>: fatal: R_SH_PSHL relocation %<PRId64> not in range -32..32"
 msgstr ""
 
-#: elf32-sh.c:4090 elf32-sh.c:4485
+#: elf32-sh.c:4077 elf32-sh.c:4472
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot emit fixup to `%s' in read-only section"
 msgstr ""
 
-#: elf32-sh.c:4588
+#: elf32-sh.c:4575
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s relocation against external symbol \"%s\""
 msgstr ""
 
-#: elf32-sh.c:4707
+#: elf32-sh.c:4694
 #, c-format
 msgid ""
 "%pB(%pA): offset in relocation for GD->LE translation is too small: "
@@ -3404,125 +3471,125 @@ msgid ""
 msgstr ""
 
 #. The backslash is to prevent bogus trigraph detection.
-#: elf32-sh.c:4725
+#: elf32-sh.c:4712
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd4??)"
 msgstr ""
 
-#: elf32-sh.c:4733
+#: elf32-sh.c:4720
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xc7??)"
 msgstr ""
 
-#: elf32-sh.c:4740
+#: elf32-sh.c:4727
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd1??)"
 msgstr ""
 
-#: elf32-sh.c:4747
+#: elf32-sh.c:4734
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x310c)"
 msgstr ""
 
-#: elf32-sh.c:4754
+#: elf32-sh.c:4741
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x410b)"
 msgstr ""
 
-#: elf32-sh.c:4761
+#: elf32-sh.c:4748
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x34cc)"
 msgstr ""
 
-#: elf32-sh.c:4796
+#: elf32-sh.c:4783
 #, c-format
 msgid ""
 "%pB(%pA): offset in relocation for IE->LE translation is too small: "
 "%#<PRIx64>"
 msgstr ""
 
-#: elf32-sh.c:4814
+#: elf32-sh.c:4801
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd0??: mov.l)"
 msgstr ""
 
-#: elf32-sh.c:4823
+#: elf32-sh.c:4810
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?12: stc)"
 msgstr ""
 
-#: elf32-sh.c:4830
+#: elf32-sh.c:4817
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?ce: mov.l)"
 msgstr ""
 
-#: elf32-sh.c:4945
+#: elf32-sh.c:4932
 #, c-format
 msgid ""
 "%pB(%pA): offset in relocation for GD->IE translation is too small: "
 "%#<PRIx64>"
 msgstr ""
 
-#: elf32-sh.c:5013
+#: elf32-sh.c:5000
 #, c-format
 msgid ""
 "%pB(%pA): offset in relocation for LD->LE translation is too small: "
 "%#<PRIx64>"
 msgstr ""
 
-#: elf32-sh.c:5141
+#: elf32-sh.c:5128
 #, c-format
 msgid "%X%C: relocation to \"%s\" references a different segment\n"
 msgstr ""
 
-#: elf32-sh.c:5148
+#: elf32-sh.c:5135
 #, c-format
 msgid "%C: warning: relocation to \"%s\" references a different segment\n"
 msgstr ""
 
-#: elf32-sh.c:5651 elf32-sh.c:5733
+#: elf32-sh.c:5638 elf32-sh.c:5720
 #, c-format
 msgid "%pB: `%s' accessed both as normal and FDPIC symbol"
 msgstr ""
 
-#: elf32-sh.c:5657 elf32-sh.c:5738
+#: elf32-sh.c:5644 elf32-sh.c:5725
 #, c-format
 msgid "%pB: `%s' accessed both as FDPIC and thread local symbol"
 msgstr ""
 
-#: elf32-sh.c:5688
+#: elf32-sh.c:5675
 #, c-format
 msgid "%pB: Function descriptor relocation with non-zero addend"
 msgstr ""
 
-#: elf32-sh.c:5895 elf64-alpha.c:4692
+#: elf32-sh.c:5882 elf64-alpha.c:4707
 #, c-format
 msgid "%pB: TLS local exec code cannot be linked into shared objects"
 msgstr ""
 
-#: elf32-sh.c:6010
+#: elf32-sh.c:5997
 #, c-format
 msgid "%pB: uses %s instructions while previous modules use %s instructions"
 msgstr ""
 
-#: elf32-sh.c:6022
+#: elf32-sh.c:6009
 #, c-format
 msgid ""
 "internal error: merge of architecture '%s' with architecture '%s' produced "
 "unknown architecture"
 msgstr ""
 
-#: elf32-sh.c:6059
+#: elf32-sh.c:6050
 #, c-format
 msgid ""
 "%pB: uses instructions which are incompatible with instructions used in "
 "previous modules"
 msgstr ""
 
-#: elf32-sh.c:6072
+#: elf32-sh.c:6063
 #, c-format
 msgid "%pB: attempt to mix FDPIC and non-FDPIC objects"
 msgstr ""
@@ -3537,6 +3604,12 @@ msgstr ""
 msgid "%pB: linking little endian files with big endian files"
 msgstr ""
 
+#: elf32-sparc.c:157
+#, c-format
+msgid ""
+"%pB: unhandled sparc machine value '%lu' detected during write processing"
+msgstr ""
+
 #: elf32-spu.c:735
 msgid "%X%P: overlay section %pA does not start on a cache line\n"
 msgstr ""
@@ -3583,7 +3656,7 @@ msgstr ""
 msgid "overlay stub relocation overflow"
 msgstr ""
 
-#: elf32-spu.c:1992 elf64-ppc.c:14110
+#: elf32-spu.c:1992 elf64-ppc.c:14558
 msgid "stubs don't match calculated size"
 msgstr ""
 
@@ -3616,63 +3689,63 @@ msgstr ""
 msgid "  calls:\n"
 msgstr ""
 
-#: elf32-spu.c:4344
+#: elf32-spu.c:4345
 #, c-format
 msgid "%s duplicated in %s\n"
 msgstr ""
 
-#: elf32-spu.c:4348
+#: elf32-spu.c:4349
 #, c-format
 msgid "%s duplicated\n"
 msgstr ""
 
-#: elf32-spu.c:4355
+#: elf32-spu.c:4356
 msgid "sorry, no support for duplicate object files in auto-overlay script\n"
 msgstr ""
 
-#: elf32-spu.c:4397
+#: elf32-spu.c:4398
 #, c-format
 msgid ""
 "non-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local "
 "store\n"
 msgstr ""
 
-#: elf32-spu.c:4553
+#: elf32-spu.c:4554
 #, c-format
 msgid "%pB:%pA%s exceeds overlay size\n"
 msgstr ""
 
-#: elf32-spu.c:4694
+#: elf32-spu.c:4695
 msgid "%F%P: auto overlay error: %E\n"
 msgstr ""
 
-#: elf32-spu.c:4715
+#: elf32-spu.c:4716
 msgid "Stack size for call graph root nodes.\n"
 msgstr ""
 
-#: elf32-spu.c:4716
+#: elf32-spu.c:4717
 msgid ""
 "\n"
 "Stack size for functions.  Annotations: '*' max stack, 't' tail call\n"
 msgstr ""
 
-#: elf32-spu.c:4726
+#: elf32-spu.c:4727
 msgid "Maximum stack required is 0x%v\n"
 msgstr ""
 
-#: elf32-spu.c:4745
+#: elf32-spu.c:4746
 msgid "%X%P: stack/lrlive analysis error: %E\n"
 msgstr ""
 
-#: elf32-spu.c:4748
+#: elf32-spu.c:4749
 msgid "%F%P: can not build overlay stubs: %E\n"
 msgstr ""
 
-#: elf32-spu.c:4817
+#: elf32-spu.c:4818
 msgid "fatal error while creating .fixup"
 msgstr ""
 
-#: elf32-spu.c:5052
+#: elf32-spu.c:5054
 #, c-format
 msgid "%pB(%s+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
 msgstr ""
@@ -3700,39 +3773,38 @@ msgstr ""
 msgid "%pB: warning: unknown EABI object attribute %d"
 msgstr ""
 
-#: elf32-tic6x.c:3752 elf32-tic6x.c:3761
+#: elf32-tic6x.c:3756 elf32-tic6x.c:3765
 #, c-format
 msgid "error: %pB requires more stack alignment than %pB preserves"
 msgstr ""
 
-#: elf32-tic6x.c:3771 elf32-tic6x.c:3780
+#: elf32-tic6x.c:3775 elf32-tic6x.c:3784
 #, c-format
 msgid "error: unknown Tag_ABI_array_object_alignment value in %pB"
 msgstr ""
 
-#: elf32-tic6x.c:3789 elf32-tic6x.c:3798
+#: elf32-tic6x.c:3793 elf32-tic6x.c:3802
 #, c-format
 msgid "error: unknown Tag_ABI_array_object_align_expected value in %pB"
 msgstr ""
 
-#: elf32-tic6x.c:3807 elf32-tic6x.c:3815
+#: elf32-tic6x.c:3811 elf32-tic6x.c:3819
 #, c-format
 msgid "error: %pB requires more array alignment than %pB preserves"
 msgstr ""
 
-#: elf32-tic6x.c:3838
+#: elf32-tic6x.c:3842
 #, c-format
 msgid "warning: %pB and %pB differ in wchar_t size"
 msgstr ""
 
-#: elf32-tic6x.c:3857
+#: elf32-tic6x.c:3861
 #, c-format
 msgid "warning: %pB and %pB differ in whether code is compiled for DSBT"
 msgstr ""
 
-#: elf32-tilepro.c:3760 elfxx-tilegx.c:4144 elfxx-x86.c:1432
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:9762
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2639
+#: elf32-tilepro.c:3760 elfxx-tilegx.c:4144 elfxx-x86.c:1529
+#: elfnn-aarch64.c:9831 elfnn-riscv.c:2647
 #, c-format
 msgid "discarded output section: `%pA'"
 msgstr ""
@@ -3934,22 +4006,22 @@ msgstr ""
 msgid "v850e3v5 architecture"
 msgstr ""
 
-#: elf32-v850.c:3607 elf32-v850.c:3846
+#: elf32-v850.c:3612 elf32-v850.c:3851
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insns"
 msgstr ""
 
-#: elf32-v850.c:3617 elf32-v850.c:3856
+#: elf32-v850.c:3622 elf32-v850.c:3861
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insn %#x"
 msgstr ""
 
-#: elf32-v850.c:3663 elf32-v850.c:3891
+#: elf32-v850.c:3668 elf32-v850.c:3896
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc"
 msgstr ""
 
-#: elf32-v850.c:3703
+#: elf32-v850.c:3708
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc %#<PRIx64>"
 msgstr ""
@@ -4007,119 +4079,132 @@ msgstr ""
 msgid "error reading cpu type from elf private data"
 msgstr ""
 
-#: elf32-xstormy16.c:457 elf64-ia64-vms.c:2083 elf32-ia64.c:2353
-#: elf64-ia64.c:2353
+#: elf32-xstormy16.c:457 elf64-ia64-vms.c:2082 elfnn-ia64.c:2352
 msgid "non-zero addend in @fptr reloc"
 msgstr ""
 
-#: elf32-xtensa.c:942
+#: elf32-xtensa.c:980
 #, c-format
 msgid "%pB(%pA): invalid property table"
 msgstr ""
 
-#: elf32-xtensa.c:2679
+#: elf32-xtensa.c:2723
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): relocation offset out of range (size=%#<PRIx64>)"
 msgstr ""
 
-#: elf32-xtensa.c:2762 elf32-xtensa.c:2885
+#: elf32-xtensa.c:2806 elf32-xtensa.c:2929
 msgid "dynamic relocation in read-only section"
 msgstr ""
 
-#: elf32-xtensa.c:2862
+#: elf32-xtensa.c:2906
 msgid "TLS relocation invalid without dynamic sections"
 msgstr ""
 
-#: elf32-xtensa.c:3074
+#: elf32-xtensa.c:3118
 msgid "internal inconsistency in size of .got.loc section"
 msgstr ""
 
-#: elf32-xtensa.c:3381
+#: elf32-xtensa.c:3425
 #, c-format
 msgid "%pB: incompatible machine type; output is 0x%x; input is 0x%x"
 msgstr ""
 
-#: elf32-xtensa.c:4675 elf32-xtensa.c:4683
+#: elf32-xtensa.c:4719 elf32-xtensa.c:4727
 msgid "attempt to convert L32R/CALLX to CALL failed"
 msgstr ""
 
-#: elf32-xtensa.c:6511 elf32-xtensa.c:6590 elf32-xtensa.c:8021
+#: elf32-xtensa.c:6555 elf32-xtensa.c:6634 elf32-xtensa.c:8065
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): could not decode instruction; possible configuration "
 "mismatch"
 msgstr ""
 
-#: elf32-xtensa.c:7760
+#: elf32-xtensa.c:7804
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): could not decode instruction for XTENSA_ASM_SIMPLIFY "
 "relocation; possible configuration mismatch"
 msgstr ""
 
-#: elf32-xtensa.c:9615
+#: elf32-xtensa.c:9665
 msgid "invalid relocation address"
 msgstr ""
 
-#: elf32-xtensa.c:9665
+#: elf32-xtensa.c:9756
 msgid "overflow after relaxation"
 msgstr ""
 
-#: elf32-xtensa.c:10812
+#: elf32-xtensa.c:10902
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected fix for %s relocation"
 msgstr ""
 
+#: elf32-z80.c:473
+#, c-format
+msgid "%pB: unsupported bfd mach %#lx"
+msgstr ""
+
+#: elf32-z80.c:518
+#, c-format
+msgid "%pB: unsupported mach %#x"
+msgstr ""
+
+#: elf32-z80.c:546
+#, c-format
+msgid "%pB: unsupported arch %#x"
+msgstr ""
+
 #: elf64-alpha.c:473
 msgid "GPDISP relocation did not find ldah and lda instructions"
 msgstr ""
 
-#: elf64-alpha.c:2464
+#: elf64-alpha.c:2472
 #, c-format
 msgid "%pB: .got subsegment exceeds 64K (size %d)"
 msgstr ""
 
-#: elf64-alpha.c:3019 elf64-alpha.c:3215
+#: elf64-alpha.c:3034 elf64-alpha.c:3230
 #, c-format
 msgid "%pB: %pA+%#<PRIx64>: warning: %s relocation against unexpected insn"
 msgstr ""
 
-#: elf64-alpha.c:4416 elf64-alpha.c:4429
+#: elf64-alpha.c:4431 elf64-alpha.c:4444
 #, c-format
 msgid "%pB: gp-relative relocation against dynamic symbol %s"
 msgstr ""
 
-#: elf64-alpha.c:4485
+#: elf64-alpha.c:4500
 #, c-format
 msgid "%pB: change in gp: BRSGP %s"
 msgstr ""
 
-#: elf64-alpha.c:4510 mach-o.c:616
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:512
+#: elf64-alpha.c:4525 mach-o.c:616 elfnn-riscv.c:520
 msgid "<unknown>"
 msgstr ""
 
-#: elf64-alpha.c:4516
+#: elf64-alpha.c:4531
 #, c-format
 msgid "%pB: !samegp reloc against symbol without .prologue: %s"
 msgstr ""
 
-#: elf64-alpha.c:4574
+#: elf64-alpha.c:4589
 #, c-format
 msgid "%pB: unhandled dynamic relocation against %s"
 msgstr ""
 
-#: elf64-alpha.c:4609
+#: elf64-alpha.c:4624
 #, c-format
 msgid "%pB: pc-relative relocation against undefined weak symbol %s"
 msgstr ""
 
-#: elf64-alpha.c:4675
+#: elf64-alpha.c:4690
 #, c-format
 msgid "%pB: dtp-relative relocation against dynamic symbol %s"
 msgstr ""
 
-#: elf64-alpha.c:4700
+#: elf64-alpha.c:4715
 #, c-format
 msgid "%pB: tp-relative relocation against dynamic symbol %s"
 msgstr ""
@@ -4134,130 +4219,130 @@ msgstr ""
 msgid "%pB: Relocations in generic ELF (EM: %d)"
 msgstr ""
 
-#: elf64-hppa.c:2079
+#: elf64-hppa.c:2081
 #, c-format
 msgid "stub entry for %s cannot load .plt, dp offset = %<PRId64>"
 msgstr ""
 
-#: elf64-hppa.c:3283
+#: elf64-hppa.c:3285
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot reach %s"
 msgstr ""
 
-#: elf64-ia64-vms.c:598 elf32-ia64.c:640 elf64-ia64.c:640
+#: elf64-ia64-vms.c:598 elfnn-ia64.c:640
 #, c-format
 msgid ""
 "%pB: can't relax br at %#<PRIx64> in section `%pA'; please use brl or "
 "indirect branch"
 msgstr ""
 
-#: elf64-ia64-vms.c:2038 elf32-ia64.c:2301 elf64-ia64.c:2301
+#: elf64-ia64-vms.c:2037 elfnn-ia64.c:2300
 msgid "@pltoff reloc against local symbol"
 msgstr ""
 
-#: elf64-ia64-vms.c:3290 elf32-ia64.c:3712 elf64-ia64.c:3712
+#: elf64-ia64-vms.c:3289 elfnn-ia64.c:3711
 #, c-format
 msgid "%pB: short data segment overflowed (%#<PRIx64> >= 0x400000)"
 msgstr ""
 
-#: elf64-ia64-vms.c:3300 elf32-ia64.c:3722 elf64-ia64.c:3722
+#: elf64-ia64-vms.c:3299 elfnn-ia64.c:3721
 #, c-format
 msgid "%pB: __gp does not cover short data segment"
 msgstr ""
 
-#: elf64-ia64-vms.c:3570 elf32-ia64.c:3996 elf64-ia64.c:3996
+#: elf64-ia64-vms.c:3569 elfnn-ia64.c:3995
 #, c-format
 msgid "%pB: non-pic code with imm relocation against dynamic symbol `%s'"
 msgstr ""
 
-#: elf64-ia64-vms.c:3634 elf32-ia64.c:4064 elf64-ia64.c:4064
+#: elf64-ia64-vms.c:3633 elfnn-ia64.c:4063
 #, c-format
 msgid "%pB: @gprel relocation against dynamic symbol %s"
 msgstr ""
 
-#: elf64-ia64-vms.c:3693 elf32-ia64.c:4127 elf64-ia64.c:4127
+#: elf64-ia64-vms.c:3692 elfnn-ia64.c:4126
 #, c-format
 msgid "%pB: linking non-pic code in a position independent executable"
 msgstr ""
 
-#: elf64-ia64-vms.c:3795 elf32-ia64.c:4265 elf64-ia64.c:4265
+#: elf64-ia64-vms.c:3794 elfnn-ia64.c:4264
 #, c-format
 msgid "%pB: @internal branch to dynamic symbol %s"
 msgstr ""
 
-#: elf64-ia64-vms.c:3798 elf32-ia64.c:4268 elf64-ia64.c:4268
+#: elf64-ia64-vms.c:3797 elfnn-ia64.c:4267
 #, c-format
 msgid "%pB: speculation fixup to dynamic symbol %s"
 msgstr ""
 
-#: elf64-ia64-vms.c:3801 elf32-ia64.c:4271 elf64-ia64.c:4271
+#: elf64-ia64-vms.c:3800 elfnn-ia64.c:4270
 #, c-format
 msgid "%pB: @pcrel relocation against dynamic symbol %s"
 msgstr ""
 
-#: elf64-ia64-vms.c:3925 elf32-ia64.c:4468 elf64-ia64.c:4468
+#: elf64-ia64-vms.c:3924 elfnn-ia64.c:4467
 msgid "unsupported reloc"
 msgstr ""
 
-#: elf64-ia64-vms.c:3962 elf32-ia64.c:4506 elf64-ia64.c:4506
+#: elf64-ia64-vms.c:3961 elfnn-ia64.c:4505
 #, c-format
 msgid ""
 "%pB: missing TLS section for relocation %s against `%s' at %#<PRIx64> in "
 "section `%pA'."
 msgstr ""
 
-#: elf64-ia64-vms.c:3979 elf32-ia64.c:4523 elf64-ia64.c:4523
+#: elf64-ia64-vms.c:3978 elfnn-ia64.c:4522
 #, c-format
 msgid ""
 "%pB: Can't relax br (%s) to `%s' at %#<PRIx64> in section `%pA' with size "
 "%#<PRIx64> (> 0x1000000)."
 msgstr ""
 
-#: elf64-ia64-vms.c:4271 elf32-ia64.c:4780 elf64-ia64.c:4780
+#: elf64-ia64-vms.c:4274 elfnn-ia64.c:4783
 #, c-format
 msgid "%pB: linking trap-on-NULL-dereference with non-trapping files"
 msgstr ""
 
-#: elf64-ia64-vms.c:4280 elf32-ia64.c:4789 elf64-ia64.c:4789
+#: elf64-ia64-vms.c:4283 elfnn-ia64.c:4792
 #, c-format
 msgid "%pB: linking big-endian files with little-endian files"
 msgstr ""
 
-#: elf64-ia64-vms.c:4289 elf32-ia64.c:4798 elf64-ia64.c:4798
+#: elf64-ia64-vms.c:4292 elfnn-ia64.c:4801
 #, c-format
 msgid "%pB: linking 64-bit files with 32-bit files"
 msgstr ""
 
-#: elf64-ia64-vms.c:4298 elf32-ia64.c:4807 elf64-ia64.c:4807
+#: elf64-ia64-vms.c:4301 elfnn-ia64.c:4810
 #, c-format
 msgid "%pB: linking constant-gp files with non-constant-gp files"
 msgstr ""
 
-#: elf64-ia64-vms.c:4308 elf32-ia64.c:4817 elf64-ia64.c:4817
+#: elf64-ia64-vms.c:4311 elfnn-ia64.c:4820
 #, c-format
 msgid "%pB: linking auto-pic files with non-auto-pic files"
 msgstr ""
 
-#: elf64-ia64-vms.c:5155 elflink.c:4964
+#: elf64-ia64-vms.c:5158 elflink.c:5066
 #, c-format
 msgid ""
 "warning: alignment %u of common symbol `%s' in %pB is greater than the "
 "alignment (%u) of its section %pA"
 msgstr ""
 
-#: elf64-ia64-vms.c:5162 elflink.c:4971
+#: elf64-ia64-vms.c:5165 elflink.c:5073
 #, c-format
 msgid "warning: alignment %u of symbol `%s' in %pB is smaller than %u in %pB"
 msgstr ""
 
-#: elf64-ia64-vms.c:5178 elflink.c:4988
+#: elf64-ia64-vms.c:5181 elflink.c:5090
 #, c-format
 msgid ""
 "warning: size of symbol `%s' changed from %<PRIu64> in %pB to %<PRIu64> in "
 "%pB"
 msgstr ""
 
-#: elf64-mips.c:4098
+#: elf64-mips.c:4095
 #, c-format
 msgid "%pB(%pA): relocation %<PRIu64> has invalid symbol index %ld"
 msgstr ""
@@ -4333,142 +4418,152 @@ msgid ""
 "internal inconsistency: remaining %lu != max %lu; please report this bug"
 msgstr ""
 
-#: elf64-ppc.c:4072
+#: elf64-ppc.c:4094
 #, c-format
 msgid "symbol '%s' has invalid st_other for ABI version 1"
 msgstr ""
 
-#: elf64-ppc.c:4247
+#: elf64-ppc.c:4274
 #, c-format
 msgid "%pB .opd not allowed in ABI version %d"
 msgstr ""
 
-#: elf64-ppc.c:4835
+#: elf64-ppc.c:4854
 #, c-format
 msgid "%H: %s reloc unsupported in shared libraries and PIEs\n"
 msgstr ""
 
-#: elf64-ppc.c:5247
+#: elf64-ppc.c:5262
 #, c-format
 msgid "%pB uses unknown e_flags 0x%lx"
 msgstr ""
 
-#: elf64-ppc.c:5255
+#: elf64-ppc.c:5270
 #, c-format
 msgid "%pB: ABI version %ld is not compatible with ABI version %ld output"
 msgstr ""
 
-#: elf64-ppc.c:5282
+#: elf64-ppc.c:5297
 #, c-format
 msgid " [abiv%ld]"
 msgstr ""
 
-#: elf64-ppc.c:6483
+#: elf64-ppc.c:6594
 msgid ""
 "%P: copy reloc against `%pT' requires lazy plt linking; avoid setting "
 "LD_BIND_NOW=1 or upgrade gcc\n"
 msgstr ""
 
-#: elf64-ppc.c:6755
+#: elf64-ppc.c:6861
 #, c-format
 msgid "%pB: undefined symbol on R_PPC64_TOCSAVE relocation"
 msgstr ""
 
-#: elf64-ppc.c:7003
+#: elf64-ppc.c:7109
 #, c-format
 msgid "dynreloc miscount for %pB, section %pA"
 msgstr ""
 
-#: elf64-ppc.c:7092
+#: elf64-ppc.c:7198
 #, c-format
 msgid "%pB: .opd is not a regular array of opd entries"
 msgstr ""
 
-#: elf64-ppc.c:7102
+#: elf64-ppc.c:7208
 #, c-format
 msgid "%pB: unexpected reloc type %u in .opd section"
 msgstr ""
 
-#: elf64-ppc.c:7124
+#: elf64-ppc.c:7230
 #, c-format
 msgid "%pB: undefined sym `%s' in .opd section"
 msgstr ""
 
-#: elf64-ppc.c:7613
+#: elf64-ppc.c:7720
 msgid ""
 "warning: --plt-localentry is especially dangerous without ld.so support to "
 "detect ABI violations"
 msgstr ""
 
-#: elf64-ppc.c:7866
+#: elf64-ppc.c:8042
 msgid "%H __tls_get_addr lost arg, TLS optimization disabled\n"
 msgstr ""
 
-#: elf64-ppc.c:8251 elf64-ppc.c:8959
+#: elf64-ppc.c:8443 elf64-ppc.c:9160
 #, c-format
 msgid "%s defined on removed toc entry"
 msgstr ""
 
-#: elf64-ppc.c:8916
+#: elf64-ppc.c:9117
 #, c-format
 msgid "%H: %s references optimized away TOC entry\n"
 msgstr ""
 
-#: elf64-ppc.c:9140
+#: elf64-ppc.c:9341
 #, c-format
 msgid "%H: got/toc optimization is not supported for %s instruction\n"
 msgstr ""
 
-#: elf64-ppc.c:9991
+#: elf64-ppc.c:10195
 #, c-format
 msgid "warning: discarding dynamic section %s"
 msgstr ""
 
-#: elf64-ppc.c:11055
+#: elf64-ppc.c:11336
 msgid "%P: cannot find opd entry toc for `%pT'\n"
 msgstr ""
 
-#: elf64-ppc.c:11144
+#: elf64-ppc.c:11382 elf64-ppc.c:11926
+msgid ""
+"%F%P: Could not assign group %pA target %pA to an output section. Retry "
+"without --enable-non-contiguous-regions.\n"
+msgstr ""
+
+#: elf64-ppc.c:11444
 #, c-format
 msgid "long branch stub `%s' offset overflow"
 msgstr ""
 
-#: elf64-ppc.c:11171
+#: elf64-ppc.c:11471
 #, c-format
 msgid "can't find branch stub `%s'"
 msgstr ""
 
-#: elf64-ppc.c:11235 elf64-ppc.c:11502 elf64-ppc.c:13671
+#: elf64-ppc.c:11535 elf64-ppc.c:11802 elf64-ppc.c:14033
 #, c-format
 msgid "%P: linkage table error against `%pT'\n"
 msgstr ""
 
-#: elf64-ppc.c:11680
+#: elf64-ppc.c:11998
 #, c-format
 msgid "can't build branch stub `%s'"
 msgstr ""
 
-#: elf64-ppc.c:12659
+#: elf64-ppc.c:12980
 #, c-format
 msgid "%pB section %pA exceeds stub group size"
 msgstr ""
 
-#: elf64-ppc.c:14069 elf64-ppc.c:14088
+#: elf64-ppc.c:14215
+msgid "__tls_get_addr call offset overflow"
+msgstr ""
+
+#: elf64-ppc.c:14517 elf64-ppc.c:14536
 #, c-format
 msgid "%s offset too large for .eh_frame sdata4 encoding"
 msgstr ""
 
-#: elf64-ppc.c:14124
+#: elf64-ppc.c:14568
 #, c-format
 msgid "linker stubs in %u group\n"
 msgid_plural "linker stubs in %u groups\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: elf64-ppc.c:14128
+#: elf64-ppc.c:14575
 #, c-format
 msgid ""
-"  branch         %lu\n"
+"%s  branch         %lu\n"
 "  branch toc adj %lu\n"
 "  branch notoc   %lu\n"
 "  branch both    %lu\n"
@@ -4483,54 +4578,54 @@ msgid ""
 "  global entry   %lu"
 msgstr ""
 
-#: elf64-ppc.c:14523
+#: elf64-ppc.c:14975
 #, c-format
 msgid "%H: %s used with TLS symbol `%pT'\n"
 msgstr ""
 
-#: elf64-ppc.c:14525
+#: elf64-ppc.c:14977
 #, c-format
 msgid "%H: %s used with non-TLS symbol `%pT'\n"
 msgstr ""
 
-#: elf64-ppc.c:15279
+#: elf64-ppc.c:15732
 #, c-format
 msgid "%H: call to `%pT' lacks nop, can't restore toc; (plt call stub)\n"
 msgstr ""
 
-#: elf64-ppc.c:15285
+#: elf64-ppc.c:15738
 #, c-format
 msgid ""
 "%H: call to `%pT' lacks nop, can't restore toc; (toc save/adjust stub)\n"
 msgstr ""
 
-#: elf64-ppc.c:16170
+#: elf64-ppc.c:16628
 #, c-format
 msgid "%H: %s for indirect function `%pT' unsupported\n"
 msgstr ""
 
-#: elf64-ppc.c:16257
+#: elf64-ppc.c:16715
 #, c-format
 msgid ""
 "%X%P: %pB: %s against %pT is not supported by glibc as a dynamic relocation\n"
 msgstr ""
 
-#: elf64-ppc.c:16312
+#: elf64-ppc.c:16770
 #, c-format
 msgid "%P: %pB: %s is not supported for `%pT'\n"
 msgstr ""
 
-#: elf64-ppc.c:16571
+#: elf64-ppc.c:17029
 #, c-format
 msgid "%H: error: %s not a multiple of %u\n"
 msgstr ""
 
-#: elf64-ppc.c:16594
+#: elf64-ppc.c:17052
 #, c-format
 msgid "%H: unresolvable %s against `%pT'\n"
 msgstr ""
 
-#: elf64-ppc.c:16739
+#: elf64-ppc.c:17197
 #, c-format
 msgid "%H: %s against `%pT': error %d\n"
 msgstr ""
@@ -4542,152 +4637,147 @@ msgid ""
 "from executable (rebuild file with -fPIC ?)"
 msgstr ""
 
-#: elf64-sparc.c:125 elfcode.h:1467
-#, c-format
-msgid "%pB(%pA): relocation %d has invalid symbol index %ld"
-msgstr ""
-
-#: elf64-sparc.c:483
+#: elf64-sparc.c:481
 #, c-format
 msgid "%pB: only registers %%g[2367] can be declared using STT_REGISTER"
 msgstr ""
 
-#: elf64-sparc.c:504
+#: elf64-sparc.c:502
 #, c-format
 msgid "register %%g%d used incompatibly: %s in %pB, previously %s in %pB"
 msgstr ""
 
-#: elf64-sparc.c:528
+#: elf64-sparc.c:526
 #, c-format
 msgid "symbol `%s' has differing types: REGISTER in %pB, previously %s in %pB"
 msgstr ""
 
-#: elf64-sparc.c:575
+#: elf64-sparc.c:573
 #, c-format
 msgid "Symbol `%s' has differing types: %s in %pB, previously REGISTER in %pB"
 msgstr ""
 
-#: elf64-sparc.c:707
+#: elf64-sparc.c:705
 #, c-format
 msgid "%pB: linking UltraSPARC specific with HAL specific code"
 msgstr ""
 
-#: elf64-x86-64.c:1412
+#: elf64-x86-64.c:1424
 msgid "hidden symbol "
 msgstr ""
 
-#: elf64-x86-64.c:1415
+#: elf64-x86-64.c:1427
 msgid "internal symbol "
 msgstr ""
 
-#: elf64-x86-64.c:1418 elf64-x86-64.c:1422
+#: elf64-x86-64.c:1430 elf64-x86-64.c:1434
 msgid "protected symbol "
 msgstr ""
 
-#: elf64-x86-64.c:1424
+#: elf64-x86-64.c:1436
 msgid "symbol "
 msgstr ""
 
-#: elf64-x86-64.c:1430
+#: elf64-x86-64.c:1442
 msgid "undefined "
 msgstr ""
 
-#: elf64-x86-64.c:1440
+#: elf64-x86-64.c:1452
 msgid "a shared object"
 msgstr ""
 
-#: elf64-x86-64.c:1442
+#: elf64-x86-64.c:1454
 msgid "; recompile with -fPIC"
 msgstr ""
 
-#: elf64-x86-64.c:1447
+#: elf64-x86-64.c:1459
 msgid "a PIE object"
 msgstr ""
 
-#: elf64-x86-64.c:1449
+#: elf64-x86-64.c:1461
 msgid "a PDE object"
 msgstr ""
 
-#: elf64-x86-64.c:1451
+#: elf64-x86-64.c:1463
 msgid "; recompile with -fPIE"
 msgstr ""
 
-#: elf64-x86-64.c:1455
+#: elf64-x86-64.c:1467
 #, c-format
 msgid "%pB: relocation %s against %s%s`%s' can not be used when making %s%s"
 msgstr ""
 
-#: elf64-x86-64.c:1940
+#: elf64-x86-64.c:1984
 #, c-format
 msgid "%pB: relocation %s against symbol `%s' isn't supported in x32 mode"
 msgstr ""
 
-#: elf64-x86-64.c:2078
+#: elf64-x86-64.c:2140
 #, c-format
 msgid "%pB: '%s' accessed both as normal and thread local symbol"
 msgstr ""
 
-#: elf64-x86-64.c:2700 /work/sources/binutils/current/bfd/elfnn-aarch64.c:5534
+#: elf64-x86-64.c:2763 elfnn-aarch64.c:5592
 #, c-format
 msgid ""
 "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: "
 "%<PRId64>"
 msgstr ""
 
-#: elf64-x86-64.c:2938
+#: elf64-x86-64.c:3008
 #, c-format
 msgid ""
 "%pB: relocation R_X86_64_GOTOFF64 against undefined %s `%s' can not be used "
 "when making a shared object"
 msgstr ""
 
-#: elf64-x86-64.c:2952
+#: elf64-x86-64.c:3022
 #, c-format
 msgid ""
 "%pB: relocation R_X86_64_GOTOFF64 against protected %s `%s' can not be used "
 "when making a shared object"
 msgstr ""
 
-#: elf64-x86-64.c:3229
+#: elf64-x86-64.c:3299
 #, c-format
 msgid ""
 "%pB: addend %s%#x in relocation %s against symbol `%s' at %#<PRIx64> in "
 "section `%pA' is out of range"
 msgstr ""
 
-#: elf64-x86-64.c:3363 elflink.c:13138
+#: elf64-x86-64.c:3433 elflink.c:13256
 msgid "%F%P: corrupt input: %pB\n"
 msgstr ""
 
-#: elf64-x86-64.c:4000
+#: elf64-x86-64.c:4117
 msgid "%F%P: failed to convert GOTPCREL relocation; relink with --no-relax\n"
 msgstr ""
 
-#: elf64-x86-64.c:4158
+#: elf64-x86-64.c:4275
 #, c-format
 msgid "%F%pB: PC-relative offset overflow in PLT entry for `%s'\n"
 msgstr ""
 
-#: elf64-x86-64.c:4221
+#: elf64-x86-64.c:4338
 #, c-format
 msgid "%F%pB: branch displacement overflow in PLT entry for `%s'\n"
 msgstr ""
 
-#: elf64-x86-64.c:4274
+#: elf64-x86-64.c:4391
 #, c-format
 msgid "%F%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"
 msgstr ""
 
-#: elfcode.h:323
+#: elfcode.h:326
 msgid "warning: %pB has a corrupt section with a size (%"
 msgstr ""
 
-#: elfcode.h:764
+#: elfcode.h:768
 #, c-format
 msgid "warning: %pB has a corrupt string table index - ignoring"
 msgstr ""
 
-#: elfcode.h:1208
+#: elfcode.h:1229
 #, c-format
 msgid "%pB: version count (%<PRId64>) does not match symbol count (%ld)"
 msgstr ""
@@ -4761,216 +4851,226 @@ msgstr ""
 msgid "%P: copy reloc against protected `%pT' is dangerous\n"
 msgstr ""
 
-#: elflink.c:3969
+#: elflink.c:4058
 #, c-format
 msgid "alternate ELF machine code found (%d) in %pB, expecting %d"
 msgstr ""
 
-#: elflink.c:4426
+#: elflink.c:4528
 #, c-format
 msgid "%pB: invalid version offset %lx (max %lx)"
 msgstr ""
 
-#: elflink.c:4494
+#: elflink.c:4596
 #, c-format
 msgid "%pB: %s local symbol at index %lu (>= sh_info of %lu)"
 msgstr ""
 
-#: elflink.c:4642
+#: elflink.c:4744
 #, c-format
 msgid "%pB: not enough version information"
 msgstr ""
 
-#: elflink.c:4680
+#: elflink.c:4782
 #, c-format
 msgid "%pB: %s: invalid version %u (max %d)"
 msgstr ""
 
-#: elflink.c:4717
+#: elflink.c:4819
 #, c-format
 msgid "%pB: %s: invalid needed version %d"
 msgstr ""
 
-#: elflink.c:5124
+#: elflink.c:5225
 #, c-format
 msgid "%pB: undefined reference to symbol '%s'"
 msgstr ""
 
-#: elflink.c:6217
+#: elflink.c:6320
 #, c-format
 msgid "%pB: stack size specified and %s set"
 msgstr ""
 
-#: elflink.c:6221
+#: elflink.c:6324
 #, c-format
 msgid "%pB: %s not absolute"
 msgstr ""
 
-#: elflink.c:6418
+#: elflink.c:6521
 #, c-format
 msgid "%s: undefined version: %s"
 msgstr ""
 
-#: elflink.c:6989
+#: elflink.c:7093
 #, c-format
 msgid "%pB: .preinit_array section is not allowed in DSO"
 msgstr ""
 
-#: elflink.c:8475
+#: elflink.c:8580
 #, c-format
 msgid "undefined %s reference in complex symbol: %s"
 msgstr ""
 
-#: elflink.c:8630
+#: elflink.c:8735
 #, c-format
 msgid "unknown operator '%c' in complex symbol"
 msgstr ""
 
 #. PR 21524: Let the user know if a symbol was removed by garbage collection.
-#: elflink.c:8968
+#: elflink.c:9073
 #, c-format
 msgid ""
 "%pB:%pA: error: relocation references symbol %s which was removed by garbage "
 "collection"
 msgstr ""
 
-#: elflink.c:8971
+#: elflink.c:9076
 #, c-format
 msgid "%pB:%pA: error: try relinking with --gc-keep-exported enabled"
 msgstr ""
 
-#: elflink.c:9216 elflink.c:9234 elflink.c:9273 elflink.c:9291
+#: elflink.c:9321 elflink.c:9339 elflink.c:9378 elflink.c:9396
 #, c-format
 msgid "%pB: unable to sort relocs - they are in more than one size"
 msgstr ""
 
 #. The section size is not divisible by either -
 #. something is wrong.
-#: elflink.c:9250 elflink.c:9307
+#: elflink.c:9355 elflink.c:9412
 #, c-format
 msgid "%pB: unable to sort relocs - they are of an unknown size"
 msgstr ""
 
-#: elflink.c:9359
+#: elflink.c:9464
 msgid "not enough memory to sort relocations"
 msgstr ""
 
-#: elflink.c:9640
+#: elflink.c:9745
 #, c-format
 msgid "%pB: too many sections: %d (>= %d)"
 msgstr ""
 
-#: elflink.c:9920
+#: elflink.c:10021
 #, c-format
 msgid "%pB: internal symbol `%s' in %pB is referenced by DSO"
 msgstr ""
 
-#: elflink.c:9923
+#: elflink.c:10024
 #, c-format
 msgid "%pB: hidden symbol `%s' in %pB is referenced by DSO"
 msgstr ""
 
-#: elflink.c:9926
+#: elflink.c:10027
 #, c-format
 msgid "%pB: local symbol `%s' in %pB is referenced by DSO"
 msgstr ""
 
-#: elflink.c:10012
+#: elflink.c:10113
 #, c-format
 msgid "%pB: could not find output section %pA for input section %pA"
 msgstr ""
 
-#: elflink.c:10166
+#: elflink.c:10267
 #, c-format
 msgid "%pB: protected symbol `%s' isn't defined"
 msgstr ""
 
-#: elflink.c:10169
+#: elflink.c:10270
 #, c-format
 msgid "%pB: internal symbol `%s' isn't defined"
 msgstr ""
 
-#: elflink.c:10172
+#: elflink.c:10273
 #, c-format
 msgid "%pB: hidden symbol `%s' isn't defined"
 msgstr ""
 
-#: elflink.c:10204
+#: elflink.c:10305
 #, c-format
 msgid "%pB: no symbol version section for versioned symbol `%s'"
 msgstr ""
 
-#: elflink.c:10816
+#: elflink.c:10677
+#, c-format
+msgid ""
+"warning: --enable-non-contiguous-regions discards section `%s' from '%s'\n"
+msgstr ""
+
+#: elflink.c:10929
 #, c-format
 msgid "error: %pB: size of section %pA is not multiple of address size"
 msgstr ""
 
-#: elflink.c:10861
+#: elflink.c:10974
 #, c-format
 msgid ""
 "error: %pB contains a reloc (%#<PRIx64>) for section %pA that references a "
 "non-existent global symbol"
 msgstr ""
 
-#: elflink.c:11604
+#: elflink.c:11717
 #, c-format
 msgid ""
 "%pA has both ordered [`%pA' in %pB] and unordered [`%pA' in %pB] sections"
 msgstr ""
 
-#: elflink.c:11610
+#: elflink.c:11723
 #, c-format
 msgid "%pA has both ordered and unordered sections"
 msgstr ""
 
-#: elflink.c:11714
+#: elflink.c:11829
 #, c-format
 msgid "%pB: no symbol found for import library"
 msgstr ""
 
-#: elflink.c:12361
+#: elflink.c:12477
 #, c-format
 msgid "%pB: file class %s incompatible with %s"
 msgstr ""
 
-#: elflink.c:12578
+#: elflink.c:12694
 #, c-format
 msgid "%pB: failed to generate import library"
 msgstr ""
 
-#: elflink.c:12697
+#: elflink.c:12813
 #, c-format
 msgid "warning: %s section has zero size"
 msgstr ""
 
-#: elflink.c:12745
+#: elflink.c:12861
 #, c-format
 msgid "warning: section '%s' is being made into a note"
 msgstr ""
 
-#: elflink.c:12837
+#: elflink.c:12955
 msgid "%P%X: read-only segment has dynamic relocations\n"
 msgstr ""
 
-#: elflink.c:12840
+#: elflink.c:12958
 msgid "%P: warning: creating a DT_TEXTREL in a shared object\n"
 msgstr ""
 
-#: elflink.c:12965
+#: elflink.c:13083
 msgid "%P%X: can not read symbols: %E\n"
 msgstr ""
 
-#: elflink.c:13804
+#: elflink.c:13489
+msgid "%F%P: %pB(%pA): error: need linked-to section for --gc-sections\n"
+msgstr ""
+
+#: elflink.c:13950
 #, c-format
 msgid "%pB: %pA+%#<PRIx64>: no symbol found for INHERIT"
 msgstr ""
 
-#: elflink.c:13845
+#: elflink.c:13991
 #, c-format
 msgid "%pB: section '%pA': corrupt VTENTRY entry"
 msgstr ""
 
-#: elflink.c:13988
+#: elflink.c:14134
 #, c-format
 msgid "unrecognized INPUT_SECTION_FLAG %s\n"
 msgstr ""
@@ -4981,19 +5081,18 @@ msgid ""
 "%pB: warning: Weak TLS is implementation defined and may not work as expected"
 msgstr ""
 
-#: elfxx-aarch64.c:738 /work/sources/binutils/current/bfd/elfnn-aarch64.c:9960
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:9967
+#: elfxx-aarch64.c:738 elfnn-aarch64.c:10029 elfnn-aarch64.c:10036
 #, c-format
 msgid ""
 "%pB: warning: BTI turned on by -z force-bti when all inputs do not have BTI "
 "in NOTE section."
 msgstr ""
 
-#: elfxx-aarch64.c:758 elfxx-x86.c:2625
+#: elfxx-aarch64.c:758 elfxx-x86.c:2722
 msgid "%F%P: failed to create GNU property section\n"
 msgstr ""
 
-#: elfxx-aarch64.c:762 elfxx-x86.c:2630
+#: elfxx-aarch64.c:762 elfxx-x86.c:2727
 #, c-format
 msgid "%F%pA: failed to align section\n"
 msgstr ""
@@ -5003,350 +5102,437 @@ msgstr ""
 msgid "error: %pB: <corrupt AArch64 used size: 0x%x>"
 msgstr ""
 
-#: elfxx-mips.c:1515
+#: elfxx-mips.c:1520
 msgid "static procedure (no name)"
 msgstr ""
 
-#: elfxx-mips.c:5800
+#: elfxx-mips.c:5806
 msgid "MIPS16 and microMIPS functions cannot call each other"
 msgstr ""
 
-#: elfxx-mips.c:6565
+#: elfxx-mips.c:6571
 msgid "%X%H: unsupported JALX to the same ISA mode\n"
 msgstr ""
 
-#: elfxx-mips.c:6598
+#: elfxx-mips.c:6604
 msgid ""
 "%X%H: unsupported jump between ISA modes; consider recompiling with "
 "interlinking enabled\n"
 msgstr ""
 
-#: elfxx-mips.c:6643
+#: elfxx-mips.c:6649
 msgid ""
 "%X%H: cannot convert branch between ISA modes to JALX: relocation out of "
 "range\n"
 msgstr ""
 
-#: elfxx-mips.c:6655
+#: elfxx-mips.c:6661
 msgid "%X%H: unsupported branch between ISA modes\n"
 msgstr ""
 
-#: elfxx-mips.c:7303
+#: elfxx-mips.c:7309
 #, c-format
 msgid ""
 "%pB: incorrect `.reginfo' section size; expected %<PRIu64>, got %<PRIu64>"
 msgstr ""
 
-#: elfxx-mips.c:7347 elfxx-mips.c:7584
+#: elfxx-mips.c:7353 elfxx-mips.c:7590
 #, c-format
 msgid "%pB: warning: bad `%s' option size %u smaller than its header"
 msgstr ""
 
-#: elfxx-mips.c:8391 elfxx-mips.c:8517
+#: elfxx-mips.c:8397 elfxx-mips.c:8523
 #, c-format
 msgid ""
 "%pB: warning: cannot determine the target function for stub section `%s'"
 msgstr ""
 
-#: elfxx-mips.c:8649
+#: elfxx-mips.c:8655
 #, c-format
 msgid "%pB: malformed reloc detected for section %s"
 msgstr ""
 
-#: elfxx-mips.c:8749
+#: elfxx-mips.c:8755
 #, c-format
 msgid "%pB: GOT reloc at %#<PRIx64> not expected in executables"
 msgstr ""
 
-#: elfxx-mips.c:8887
+#: elfxx-mips.c:8893
 #, c-format
 msgid "%pB: CALL16 reloc at %#<PRIx64> not against global symbol"
 msgstr ""
 
-#: elfxx-mips.c:9190
+#: elfxx-mips.c:9196
 #, c-format
 msgid ""
 "%X%H: relocation %s against `%s' cannot be used when making a shared object; "
 "recompile with -fPIC\n"
 msgstr ""
 
-#: elfxx-mips.c:9526
+#: elfxx-mips.c:9322
+#, c-format
+msgid "IFUNC symbol %s in dynamic symbol table - IFUNCS are not supported"
+msgstr ""
+
+#: elfxx-mips.c:9325
+#, c-format
+msgid "non-dynamic symbol %s in dynamic symbol table"
+msgstr ""
+
+#: elfxx-mips.c:9541
 #, c-format
 msgid "non-dynamic relocations refer to dynamic symbol %s"
 msgstr ""
 
-#: elfxx-mips.c:10456
+#: elfxx-mips.c:10471
 #, c-format
 msgid ""
 "%pB: can't find matching LO16 reloc against `%s' for %s at %#<PRIx64> in "
 "section `%pA'"
 msgstr ""
 
-#: elfxx-mips.c:10596
+#: elfxx-mips.c:10611
 msgid ""
 "small-data section exceeds 64KB; lower small-data size limit (see option -G)"
 msgstr ""
 
-#: elfxx-mips.c:10615
+#: elfxx-mips.c:10630
 msgid "cannot convert a jump to JALX for a non-word-aligned address"
 msgstr ""
 
-#: elfxx-mips.c:10618
+#: elfxx-mips.c:10633
 msgid "jump to a non-word-aligned address"
 msgstr ""
 
-#: elfxx-mips.c:10619
+#: elfxx-mips.c:10634
 msgid "jump to a non-instruction-aligned address"
 msgstr ""
 
-#: elfxx-mips.c:10622
+#: elfxx-mips.c:10637
 msgid "cannot convert a branch to JALX for a non-word-aligned address"
 msgstr ""
 
-#: elfxx-mips.c:10624
+#: elfxx-mips.c:10639
 msgid "branch to a non-instruction-aligned address"
 msgstr ""
 
-#: elfxx-mips.c:10626
+#: elfxx-mips.c:10641
 msgid "PC-relative load from unaligned address"
 msgstr ""
 
-#: elfxx-mips.c:10926
+#: elfxx-mips.c:10941
 #, c-format
 msgid ""
 "%pB: `%pA' entry VMA of %#<PRIx64> outside the 32-bit range supported; "
 "consider using `-Ttext-segment=...'"
 msgstr ""
 
-#: elfxx-mips.c:11041 elfxx-mips.c:11628
+#: elfxx-mips.c:11056 elfxx-mips.c:11643
 #, c-format
 msgid "%pB: `%pA' offset of %<PRId64> from `%pA' beyond the range of ADDIUPC"
 msgstr ""
 
-#: elfxx-mips.c:11600
+#: elfxx-mips.c:11615
 #, c-format
 msgid ""
 "%pB: `%pA' start VMA of %#<PRIx64> outside the 32-bit range supported; "
 "consider using `-Ttext-segment=...'"
 msgstr ""
 
-#: elfxx-mips.c:14562
+#: elfxx-mips.c:14577
 #, c-format
 msgid "%pB: unknown architecture %s"
 msgstr ""
 
-#: elfxx-mips.c:15096
+#: elfxx-mips.c:15111
 #, c-format
 msgid "%pB: illegal section name `%pA'"
 msgstr ""
 
-#: elfxx-mips.c:15373
+#: elfxx-mips.c:15388
 #, c-format
 msgid "%pB: warning: linking abicalls files with non-abicalls files"
 msgstr ""
 
-#: elfxx-mips.c:15390
+#: elfxx-mips.c:15405
 #, c-format
 msgid "%pB: linking 32-bit code with 64-bit code"
 msgstr ""
 
-#: elfxx-mips.c:15422 elfxx-mips.c:15488 elfxx-mips.c:15503
+#: elfxx-mips.c:15437 elfxx-mips.c:15503 elfxx-mips.c:15518
 #, c-format
 msgid "%pB: linking %s module with previous %s modules"
 msgstr ""
 
-#: elfxx-mips.c:15446
+#: elfxx-mips.c:15461
 #, c-format
 msgid "%pB: ABI mismatch: linking %s module with previous %s modules"
 msgstr ""
 
-#: elfxx-mips.c:15471
+#: elfxx-mips.c:15486
 #, c-format
 msgid "%pB: ASE mismatch: linking %s module with previous %s modules"
 msgstr ""
 
-#: elfxx-mips.c:15605
+#: elfxx-mips.c:15620
 #, c-format
 msgid ""
 "warning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses "
 "unknown floating point ABI %d"
 msgstr ""
 
-#: elfxx-mips.c:15611
+#: elfxx-mips.c:15626
 #, c-format
 msgid ""
 "warning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses %s"
 msgstr ""
 
-#: elfxx-mips.c:15617
+#: elfxx-mips.c:15632
 #, c-format
 msgid ""
 "warning: %pB uses %s (set by %pB), %pB uses unknown floating point ABI %d"
 msgstr ""
 
-#: elfxx-mips.c:15631
+#: elfxx-mips.c:15646
 #, c-format
 msgid "warning: %pB uses %s (set by %pB), %pB uses %s"
 msgstr ""
 
-#: elfxx-mips.c:15650
+#: elfxx-mips.c:15665
 #, c-format
 msgid "warning: %pB uses %s (set by %pB), %pB uses unknown MSA ABI %d"
 msgstr ""
 
-#: elfxx-mips.c:15662
+#: elfxx-mips.c:15677
 #, c-format
 msgid "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses %s"
 msgstr ""
 
-#: elfxx-mips.c:15671
+#: elfxx-mips.c:15686
 #, c-format
 msgid ""
 "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA ABI "
 "%d"
 msgstr ""
 
-#: elfxx-mips.c:15733
+#: elfxx-mips.c:15748
 #, c-format
 msgid "%pB: endianness incompatible with that of the selected emulation"
 msgstr ""
 
-#: elfxx-mips.c:15747
+#: elfxx-mips.c:15762
 #, c-format
 msgid "%pB: ABI is incompatible with that of the selected emulation"
 msgstr ""
 
-#: elfxx-mips.c:15799
+#: elfxx-mips.c:15815
 #, c-format
 msgid "%pB: warning: inconsistent ISA between e_flags and .MIPS.abiflags"
 msgstr ""
 
-#: elfxx-mips.c:15804
+#: elfxx-mips.c:15820
 #, c-format
 msgid ""
 "%pB: warning: inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags"
 msgstr ""
 
-#: elfxx-mips.c:15808
+#: elfxx-mips.c:15824
 #, c-format
 msgid "%pB: warning: inconsistent ASEs between e_flags and .MIPS.abiflags"
 msgstr ""
 
-#: elfxx-mips.c:15815
+#: elfxx-mips.c:15831
 #, c-format
 msgid ""
 "%pB: warning: inconsistent ISA extensions between e_flags and .MIPS.abiflags"
 msgstr ""
 
-#: elfxx-mips.c:15819
+#: elfxx-mips.c:15835
 #, c-format
 msgid ""
 "%pB: warning: unexpected flag in the flags2 field of .MIPS.abiflags (0x%lx)"
 msgstr ""
 
-#: elfxx-mips.c:16010
+#: elfxx-mips.c:16026
 msgid "-mips32r2 -mfp64 (12 callee-saved)"
 msgstr ""
 
-#: elfxx-mips.c:16072 elfxx-mips.c:16083
+#: elfxx-mips.c:16088 elfxx-mips.c:16099
 msgid "None"
 msgstr ""
 
-#: elfxx-mips.c:16074 elfxx-mips.c:16143
+#: elfxx-mips.c:16090 elfxx-mips.c:16159
 msgid "Unknown"
 msgstr ""
 
-#: elfxx-mips.c:16154
+#: elfxx-mips.c:16170
 #, c-format
 msgid "Hard or soft float\n"
 msgstr ""
 
-#: elfxx-mips.c:16157
+#: elfxx-mips.c:16173
 #, c-format
 msgid "Hard float (double precision)\n"
 msgstr ""
 
-#: elfxx-mips.c:16160
+#: elfxx-mips.c:16176
 #, c-format
 msgid "Hard float (single precision)\n"
 msgstr ""
 
-#: elfxx-mips.c:16163
+#: elfxx-mips.c:16179
 #, c-format
 msgid "Soft float\n"
 msgstr ""
 
-#: elfxx-mips.c:16166
+#: elfxx-mips.c:16182
 #, c-format
 msgid "Hard float (MIPS32r2 64-bit FPU 12 callee-saved)\n"
 msgstr ""
 
-#: elfxx-mips.c:16169
+#: elfxx-mips.c:16185
 #, c-format
 msgid "Hard float (32-bit CPU, Any FPU)\n"
 msgstr ""
 
-#: elfxx-mips.c:16172
+#: elfxx-mips.c:16188
 #, c-format
 msgid "Hard float (32-bit CPU, 64-bit FPU)\n"
 msgstr ""
 
-#: elfxx-mips.c:16175
+#: elfxx-mips.c:16191
 #, c-format
 msgid "Hard float compat (32-bit CPU, 64-bit FPU)\n"
 msgstr ""
 
-#: elfxx-mips.c:16207
+#: elfxx-mips.c:16223
 #, c-format
 msgid " [abi=O32]"
 msgstr ""
 
-#: elfxx-mips.c:16209
+#: elfxx-mips.c:16225
 #, c-format
 msgid " [abi=O64]"
 msgstr ""
 
-#: elfxx-mips.c:16211
+#: elfxx-mips.c:16227
 #, c-format
 msgid " [abi=EABI32]"
 msgstr ""
 
-#: elfxx-mips.c:16213
+#: elfxx-mips.c:16229
 #, c-format
 msgid " [abi=EABI64]"
 msgstr ""
 
-#: elfxx-mips.c:16215
+#: elfxx-mips.c:16231
 #, c-format
 msgid " [abi unknown]"
 msgstr ""
 
-#: elfxx-mips.c:16217
+#: elfxx-mips.c:16233
 #, c-format
 msgid " [abi=N32]"
 msgstr ""
 
-#: elfxx-mips.c:16219
+#: elfxx-mips.c:16235
 #, c-format
 msgid " [abi=64]"
 msgstr ""
 
-#: elfxx-mips.c:16221
+#: elfxx-mips.c:16237
 #, c-format
 msgid " [no abi set]"
 msgstr ""
 
-#: elfxx-mips.c:16246
+#: elfxx-mips.c:16262
 #, c-format
 msgid " [unknown ISA]"
 msgstr ""
 
-#: elfxx-mips.c:16266
+#: elfxx-mips.c:16282
 #, c-format
 msgid " [not 32bitmode]"
 msgstr ""
 
-#: elfxx-sparc.c:3110 /work/sources/binutils/current/bfd/elfnn-aarch64.c:5518
+#: elfxx-riscv.c:1064
+#, c-format
+msgid "-march=%s: Expect number after `%dp'."
+msgstr ""
+
+#: elfxx-riscv.c:1175
+#, c-format
+msgid "-march=%s: rv%de is not a valid base ISA"
+msgstr ""
+
+#: elfxx-riscv.c:1215
+#, c-format
+msgid "-march=%s: first ISA subset must be `e', `i' or `g'"
+msgstr ""
+
+#: elfxx-riscv.c:1243
+#, c-format
+msgid "-march=%s: unsupported ISA subset `%c'"
+msgstr ""
+
+#: elfxx-riscv.c:1246
+#, c-format
+msgid "-march=%s: ISA string is not in canonical order. `%c'"
+msgstr ""
+
+#: elfxx-riscv.c:1365
+#, c-format
+msgid "-march=%s: Invalid or unknown %s ISA extension: '%s'"
+msgstr ""
+
+#: elfxx-riscv.c:1376
+#, c-format
+msgid "-march=%s: Duplicate %s ISA extension: '%s'"
+msgstr ""
+
+#: elfxx-riscv.c:1387
+#, c-format
+msgid ""
+"-march=%s: %s ISA extension not in alphabetical order: '%s' must come before "
+"'%s'."
+msgstr ""
+
+#: elfxx-riscv.c:1408
+#, c-format
+msgid "-march=%s: %s must separate with _"
+msgstr ""
+
+#: elfxx-riscv.c:1524
+#, c-format
+msgid "-march=%s: ISA string must begin with rv32 or rv64"
+msgstr ""
+
+#: elfxx-riscv.c:1545
+#, c-format
+msgid "-march=%s: unexpected ISA string at end: %s"
+msgstr ""
+
+#: elfxx-riscv.c:1554
+#, c-format
+msgid "-march=%s: rv32e does not support the `f' extension"
+msgstr ""
+
+#: elfxx-riscv.c:1563
+#, c-format
+msgid "-march=%s: `d' extension requires `f' extension"
+msgstr ""
+
+#: elfxx-riscv.c:1572
+#, c-format
+msgid "-march=%s: `q' extension requires `d' extension"
+msgstr ""
+
+#: elfxx-riscv.c:1580
+#, c-format
+msgid "-march=%s: rv32 does not support the `q' extension"
+msgstr ""
+
+#: elfxx-sparc.c:3110 elfnn-aarch64.c:5576
 #, c-format
 msgid ""
 "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s"
@@ -5357,81 +5543,92 @@ msgstr ""
 msgid "%pB: cannot link together %s and %s objects"
 msgstr ""
 
-#: elfxx-x86.c:578
+#: elfxx-x86.c:581
 #, c-format
 msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n"
 msgstr ""
 
-#: elfxx-x86.c:1027
+#: elfxx-x86.c:1041
+#, c-format
+msgid ""
+"%F%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is "
+"disallowed\n"
+msgstr ""
+
+#: elfxx-x86.c:1124
 msgid "%P: %pB: warning: relocation in read-only section `%pA'\n"
 msgstr ""
 
-#: elfxx-x86.c:1382
+#: elfxx-x86.c:1479
 msgid ""
 "%P%X: read-only segment has dynamic IFUNC relocations; recompile with %s\n"
 msgstr ""
 
-#: elfxx-x86.c:2385
+#: elfxx-x86.c:2482
 #, c-format
 msgid "error: %pB: <corrupt x86 property (0x%x) size: 0x%x>"
 msgstr ""
 
-#: elfxx-x86.c:2651
+#: elfxx-x86.c:2748
 msgid "%P: %pB: warning: missing %s\n"
 msgstr ""
 
-#: elfxx-x86.c:2653
+#: elfxx-x86.c:2750
 msgid "%X%P: %pB: error: missing %s\n"
 msgstr ""
 
-#: elfxx-x86.c:2676
+#: elfxx-x86.c:2773
 msgid "IBT and SHSTK properties"
 msgstr ""
 
-#: elfxx-x86.c:2678
+#: elfxx-x86.c:2775
 msgid "IBT property"
 msgstr ""
 
-#: elfxx-x86.c:2680
+#: elfxx-x86.c:2777
 msgid "SHSTK property"
 msgstr ""
 
-#: elfxx-x86.c:2824
+#: elfxx-x86.c:2921
 msgid "%F%P: failed to create VxWorks dynamic sections\n"
 msgstr ""
 
-#: elfxx-x86.c:2833
+#: elfxx-x86.c:2930
 msgid "%F%P: failed to create GOT sections\n"
 msgstr ""
 
-#: elfxx-x86.c:2851
+#: elfxx-x86.c:2948
 msgid "%F%P: failed to create ifunc sections\n"
 msgstr ""
 
-#: elfxx-x86.c:2891
+#: elfxx-x86.c:2988
 msgid "%F%P: failed to create GOT PLT section\n"
 msgstr ""
 
-#: elfxx-x86.c:2911
+#: elfxx-x86.c:3008
 msgid "%F%P: failed to create IBT-enabled PLT section\n"
 msgstr ""
 
-#: elfxx-x86.c:2925
+#: elfxx-x86.c:3022
 msgid "%F%P: failed to create BND PLT section\n"
 msgstr ""
 
-#: elfxx-x86.c:2945
+#: elfxx-x86.c:3042
 msgid "%F%P: failed to create PLT .eh_frame section\n"
 msgstr ""
 
-#: elfxx-x86.c:2958
+#: elfxx-x86.c:3055
 msgid "%F%P: failed to create GOT PLT .eh_frame section\n"
 msgstr ""
 
-#: elfxx-x86.c:2972
+#: elfxx-x86.c:3069
 msgid "%F%P: failed to create the second PLT .eh_frame section\n"
 msgstr ""
 
+#: elfxx-x86.c:3111
+msgid "%X%P: attempted static link of dynamic object `%pB'\n"
+msgstr ""
+
 #: ihex.c:230
 #, c-format
 msgid "%pB:%d: unexpected character `%s' in Intel Hex file"
@@ -5482,22 +5679,22 @@ msgstr ""
 msgid "%pB 64-bit address %#<PRIx64> out of range for Intel Hex file"
 msgstr ""
 
-#: ihex.c:852
+#: ihex.c:851
 #, c-format
 msgid "%pB: address %#<PRIx64> out of range for Intel Hex file"
 msgstr ""
 
-#: libbfd.c:937
+#: libbfd.c:884
 #, c-format
 msgid "%pB: unable to get decompressed section %pA"
 msgstr ""
 
-#: libbfd.c:1101
+#: libbfd.c:1048
 #, c-format
 msgid "Deprecated %s called at %s line %d in %s\n"
 msgstr ""
 
-#: libbfd.c:1104
+#: libbfd.c:1051
 #, c-format
 msgid "Deprecated %s called\n"
 msgstr ""
@@ -5645,93 +5842,89 @@ msgid ""
 "malformed mach-o reloc: section index is greater than the number of sections"
 msgstr ""
 
-#: mach-o.c:2123
+#: mach-o.c:2139
 msgid ""
 "sorry: modtab, toc and extrefsyms are not yet implemented for dysymtab "
 "commands."
 msgstr ""
 
-#: mach-o.c:2569
+#: mach-o.c:2587
 #, c-format
 msgid "mach-o: there are too many sections (%u) maximum is 255,\n"
 msgstr ""
 
-#: mach-o.c:2676
+#: mach-o.c:2694
 #, c-format
 msgid "unable to allocate data for load command %#x"
 msgstr ""
 
-#: mach-o.c:2781
+#: mach-o.c:2799
 #, c-format
 msgid "unable to write unknown load command %#x"
 msgstr ""
 
-#: mach-o.c:2965
+#: mach-o.c:2983
 #, c-format
 msgid "section address (%#<PRIx64>) below start of segment (%#<PRIx64>)"
 msgstr ""
 
-#: mach-o.c:3107
+#: mach-o.c:3125
 #, c-format
 msgid "unable to layout unknown load command %#x"
 msgstr ""
 
-#: mach-o.c:3642
+#: mach-o.c:3660
 #, c-format
 msgid ""
 "bfd_mach_o_read_section_32: overlarge alignment value: %#lx, using 32 instead"
 msgstr ""
 
-#: mach-o.c:3685
+#: mach-o.c:3703
 #, c-format
 msgid ""
 "bfd_mach_o_read_section_64: overlarge alignment value: %#lx, using 32 instead"
 msgstr ""
 
-#: mach-o.c:3736
+#: mach-o.c:3754
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: unable to read %d bytes at %u"
 msgstr ""
 
-#: mach-o.c:3755
+#: mach-o.c:3773
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: name out of range (%lu >= %u)"
 msgstr ""
 
-#: mach-o.c:3838
+#: mach-o.c:3856
 #, c-format
 msgid ""
 "bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid section %d "
 "(max %lu): setting to undefined"
 msgstr ""
 
-#: mach-o.c:3857
+#: mach-o.c:3875
 #, c-format
 msgid ""
 "bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid type field 0x"
 "%x: setting to undefined"
 msgstr ""
 
-#: mach-o.c:3934
-msgid "bfd_mach_o_read_symtab_symbols: unable to allocate memory for symbols"
-msgstr ""
-
-#: mach-o.c:4994
+#: mach-o.c:5062
 #, c-format
 msgid "%pB: unknown load command %#x"
 msgstr ""
 
-#: mach-o.c:5185
+#: mach-o.c:5261
 #, c-format
 msgid "bfd_mach_o_scan: unknown architecture 0x%lx/0x%lx"
 msgstr ""
 
-#: mach-o.c:5290
+#: mach-o.c:5383
 #, c-format
 msgid "unknown header byte-order value %#x"
 msgstr ""
 
-#: merge.c:889
+#: merge.c:895
 #, c-format
 msgid "%pB: access beyond end of merged section (%<PRId64>)"
 msgstr ""
@@ -5773,111 +5966,111 @@ msgstr ""
 msgid "%pB: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n"
 msgstr ""
 
-#: mmo.c:1677
+#: mmo.c:1679
 #, c-format
 msgid ""
 "%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n"
 msgstr ""
 
-#: mmo.c:1728
+#: mmo.c:1730
 #, c-format
 msgid ""
 "%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n"
 msgstr ""
 
-#: mmo.c:1769
+#: mmo.c:1771
 #, c-format
 msgid "%pB: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n"
 msgstr ""
 
-#: mmo.c:1780
+#: mmo.c:1782
 #, c-format
 msgid ""
 "%pB: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n"
 msgstr ""
 
-#: mmo.c:1805
+#: mmo.c:1807
 #, c-format
 msgid ""
 "%pB: invalid mmo file: leading byte of operand word must be 0 or 1, got %d "
 "for lop_fixrx\n"
 msgstr ""
 
-#: mmo.c:1830
+#: mmo.c:1832
 #, c-format
 msgid "%pB: cannot allocate file name for file number %d, %d bytes\n"
 msgstr ""
 
-#: mmo.c:1852
+#: mmo.c:1854
 #, c-format
 msgid ""
 "%pB: invalid mmo file: file number %d `%s', was already entered as `%s'\n"
 msgstr ""
 
-#: mmo.c:1866
+#: mmo.c:1868
 #, c-format
 msgid ""
 "%pB: invalid mmo file: file name for number %d was not specified before use\n"
 msgstr ""
 
-#: mmo.c:1973
+#: mmo.c:1975
 #, c-format
 msgid ""
 "%pB: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n"
 msgstr ""
 
-#: mmo.c:2010
+#: mmo.c:2012
 #, c-format
 msgid "%pB: invalid mmo file: lop_end not last item in file\n"
 msgstr ""
 
-#: mmo.c:2024
+#: mmo.c:2026
 #, c-format
 msgid ""
 "%pB: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras "
 "to the preceding lop_stab (%ld)\n"
 msgstr ""
 
-#: mmo.c:2732
+#: mmo.c:2736
 #, c-format
 msgid "%pB: invalid symbol table: duplicate symbol `%s'\n"
 msgstr ""
 
-#: mmo.c:2975
+#: mmo.c:2979
 #, c-format
 msgid ""
 "%pB: bad symbol definition: `Main' set to %s rather than the start address "
 "%s\n"
 msgstr ""
 
-#: mmo.c:3074
+#: mmo.c:3078
 #, c-format
 msgid ""
 "%pB: warning: symbol table too large for mmo, larger than 65535 32-bit "
 "words: %d.  Only `Main' will be emitted.\n"
 msgstr ""
 
-#: mmo.c:3120
+#: mmo.c:3124
 #, c-format
 msgid "%pB: internal error, symbol table changed size from %d to %d words\n"
 msgstr ""
 
-#: mmo.c:3173
+#: mmo.c:3177
 #, c-format
 msgid "%pB: internal error, internal register section %pA had contents\n"
 msgstr ""
 
-#: mmo.c:3224
+#: mmo.c:3228
 #, c-format
 msgid "%pB: no initialized registers; section length 0\n"
 msgstr ""
 
-#: mmo.c:3231
+#: mmo.c:3235
 #, c-format
 msgid "%pB: too many initialized registers; section length %<PRId64>"
 msgstr ""
 
-#: mmo.c:3236
+#: mmo.c:3240
 #, c-format
 msgid ""
 "%pB: invalid start address for initialized registers of length %<PRId64>: "
@@ -5889,7 +6082,7 @@ msgstr ""
 msgid "unhandled OSF/1 core file section type %d"
 msgstr ""
 
-#: pef.c:534
+#: pef.c:532
 #, c-format
 msgid "bfd_pef_scan: unknown architecture 0x%lx"
 msgstr ""
@@ -5984,12 +6177,12 @@ msgstr ""
 msgid "%pB: size field is zero in Import Library Format header"
 msgstr ""
 
-#: peicode.h:1295
+#: peicode.h:1289
 #, c-format
 msgid "%pB: string not null terminated in ILF object file"
 msgstr ""
 
-#: peicode.h:1351
+#: peicode.h:1345
 #, c-format
 msgid "%pB: error: debug data ends beyond end of debug directory"
 msgstr ""
@@ -6043,32 +6236,32 @@ msgstr ""
 msgid "Partition[%d] length = 0x%.8lx (%ld)\n"
 msgstr ""
 
-#: reloc.c:8263
+#: reloc.c:8291
 msgid "INPUT_SECTION_FLAGS are not supported"
 msgstr ""
 
-#: reloc.c:8364
+#: reloc.c:8392
 #, c-format
 msgid "%X%P: %pB(%pA): error: relocation for offset %V has no value\n"
 msgstr ""
 
-#: reloc.c:8452
+#: reloc.c:8480
 #, c-format
 msgid "%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"
 msgstr ""
 
-#: reloc.c:8461
+#: reloc.c:8489
 #, c-format
 msgid "%X%P: %pB(%pA): relocation \"%pR\" returns an unrecognized value %x\n"
 msgstr ""
 
-#: reloc.c:8523
+#: reloc.c:8551
 #, c-format
 msgid "%pB: unrecognized relocation type %#x in section `%pA'"
 msgstr ""
 
 #. PR 21803: Suggest the most likely cause of this error.
-#: reloc.c:8527
+#: reloc.c:8555
 #, c-format
 msgid "is this version of the linker - %s - out of date ?"
 msgstr ""
@@ -6078,14 +6271,14 @@ msgstr ""
 msgid "%pB: warning core file truncated"
 msgstr ""
 
-#: som.c:5482
+#: som.c:5509
 #, c-format
 msgid ""
 "\n"
 "Exec Auxiliary Header\n"
 msgstr ""
 
-#: som.c:5791
+#: som.c:5818
 msgid "som_sizeof_headers unimplemented"
 msgstr ""
 
@@ -6109,78 +6302,83 @@ msgstr ""
 msgid "%pB(%pA+%#lx): stabs entry has invalid string index"
 msgstr ""
 
-#: syms.c:1098
+#: syms.c:1087
 msgid "unsupported .stab relocation"
 msgstr ""
 
-#: vms-alpha.c:479
+#: vms-alpha.c:476
 msgid "corrupt EIHD record - size is too small"
 msgstr ""
 
-#: vms-alpha.c:665
+#: vms-alpha.c:662
 #, c-format
 msgid "unable to read EIHS record at offset %#x"
 msgstr ""
 
-#: vms-alpha.c:1157
+#: vms-alpha.c:1154
 msgid "record is too small for symbol name length"
 msgstr ""
 
-#: vms-alpha.c:1190
+#: vms-alpha.c:1187
 #, c-format
 msgid "corrupt EGSD record: its size (%#x) is too small"
 msgstr ""
 
-#: vms-alpha.c:1214
+#: vms-alpha.c:1211
 #, c-format
 msgid ""
 "corrupt EGSD record type %d: size (%#x) is larger than remaining space (%#x)"
 msgstr ""
 
-#: vms-alpha.c:1224
+#: vms-alpha.c:1221
 #, c-format
 msgid "corrupt EGSD record type %d: size (%#x) is too small"
 msgstr ""
 
-#: vms-alpha.c:1366
+#: vms-alpha.c:1363
 #, c-format
 msgid "corrupt EGSD record: its psindx field is too big (%#lx)"
 msgstr ""
 
-#: vms-alpha.c:1442
+#: vms-alpha.c:1439
 #, c-format
 msgid "unknown EGSD subtype %d"
 msgstr ""
 
-#: vms-alpha.c:1475
+#: vms-alpha.c:1472
 #, c-format
 msgid "stack overflow (%d) in _bfd_vms_push"
 msgstr ""
 
-#: vms-alpha.c:1489
+#: vms-alpha.c:1486
 msgid "stack underflow in _bfd_vms_pop"
 msgstr ""
 
+#: vms-alpha.c:1560
+#, c-format
+msgid "dst_define_location %u too large"
+msgstr ""
+
 #. These names have not yet been added to this switch statement.
-#: vms-alpha.c:1733
+#: vms-alpha.c:1761
 #, c-format
 msgid "unknown ETIR command %d"
 msgstr ""
 
-#: vms-alpha.c:1764
+#: vms-alpha.c:1792
 msgid "corrupt vms value"
 msgstr ""
 
-#: vms-alpha.c:1895
+#: vms-alpha.c:1923
 msgid "corrupt ETIR record encountered"
 msgstr ""
 
-#: vms-alpha.c:1956
+#: vms-alpha.c:1984
 #, c-format
 msgid "bad section index in %s"
 msgstr ""
 
-#: vms-alpha.c:1970
+#: vms-alpha.c:1998
 #, c-format
 msgid "unsupported STA cmd %s"
 msgstr ""
@@ -6190,1935 +6388,1947 @@ msgstr ""
 #. Rotate.
 #. Redefine symbol to current location.
 #. Define a literal.
-#: vms-alpha.c:2156 vms-alpha.c:2187 vms-alpha.c:2278 vms-alpha.c:2467
+#: vms-alpha.c:2201 vms-alpha.c:2232 vms-alpha.c:2325 vms-alpha.c:2528
 #, c-format
 msgid "%s: not supported"
 msgstr ""
 
-#: vms-alpha.c:2162
+#: vms-alpha.c:2207
 #, c-format
 msgid "%s: not implemented"
 msgstr ""
 
-#: vms-alpha.c:2450
+#: vms-alpha.c:2370 vms-alpha.c:2385
+#, c-format
+msgid "invalid %s"
+msgstr ""
+
+#. Divide by zero is supposed to give a result of zero,
+#. and a non-fatal warning message.
+#: vms-alpha.c:2445
+#, c-format
+msgid "%s divide by zero"
+msgstr ""
+
+#: vms-alpha.c:2511
 #, c-format
 msgid "invalid use of %s with contexts"
 msgstr ""
 
-#: vms-alpha.c:2491
+#: vms-alpha.c:2552
 #, c-format
 msgid "reserved cmd %d"
 msgstr ""
 
-#: vms-alpha.c:2575
+#: vms-alpha.c:2636
 msgid "corrupt EEOM record - size is too small"
 msgstr ""
 
-#: vms-alpha.c:2584
+#: vms-alpha.c:2645
 msgid "object module not error-free !"
 msgstr ""
 
-#: vms-alpha.c:3926
+#: vms-alpha.c:3972
 #, c-format
 msgid "SEC_RELOC with no relocs in section %pA"
 msgstr ""
 
-#: vms-alpha.c:3978 vms-alpha.c:4193
+#: vms-alpha.c:4024 vms-alpha.c:4239
 #, c-format
 msgid "size error in section %pA"
 msgstr ""
 
-#: vms-alpha.c:4138
+#: vms-alpha.c:4184
 msgid "spurious ALPHA_R_BSR reloc"
 msgstr ""
 
-#: vms-alpha.c:4179
+#: vms-alpha.c:4225
 #, c-format
 msgid "unhandled relocation %s"
 msgstr ""
 
-#: vms-alpha.c:4474
+#: vms-alpha.c:4522
 #, c-format
 msgid "unknown source command %d"
 msgstr ""
 
-#: vms-alpha.c:4535 vms-alpha.c:4541 vms-alpha.c:4547 vms-alpha.c:4553
-#: vms-alpha.c:4559 vms-alpha.c:4586 vms-alpha.c:4592 vms-alpha.c:4598
-#: vms-alpha.c:4604
+#: vms-alpha.c:4583 vms-alpha.c:4589 vms-alpha.c:4595 vms-alpha.c:4601
+#: vms-alpha.c:4607 vms-alpha.c:4634 vms-alpha.c:4640 vms-alpha.c:4646
+#: vms-alpha.c:4652
 #, c-format
 msgid "%s not implemented"
 msgstr ""
 
-#: vms-alpha.c:4647
+#: vms-alpha.c:4695
 #, c-format
 msgid "unknown line command %d"
 msgstr ""
 
-#: vms-alpha.c:5107 vms-alpha.c:5125 vms-alpha.c:5140 vms-alpha.c:5156
-#: vms-alpha.c:5169 vms-alpha.c:5181 vms-alpha.c:5194
+#: vms-alpha.c:5159 vms-alpha.c:5177 vms-alpha.c:5192 vms-alpha.c:5208
+#: vms-alpha.c:5221 vms-alpha.c:5233 vms-alpha.c:5246
 #, c-format
 msgid "unknown reloc %s + %s"
 msgstr ""
 
-#: vms-alpha.c:5249
+#: vms-alpha.c:5301
 #, c-format
 msgid "unknown reloc %s"
 msgstr ""
 
-#: vms-alpha.c:5263
+#: vms-alpha.c:5315
 msgid "invalid section index in ETIR"
 msgstr ""
 
-#: vms-alpha.c:5272
+#: vms-alpha.c:5324
 msgid "relocation for non-REL psect"
 msgstr ""
 
-#: vms-alpha.c:5319
+#: vms-alpha.c:5373
 #, c-format
 msgid "unknown symbol in command %s"
 msgstr ""
 
-#: vms-alpha.c:5733
+#: vms-alpha.c:5787
 #, c-format
 msgid "reloc (%d) is *UNKNOWN*"
 msgstr ""
 
-#: vms-alpha.c:5849
+#: vms-alpha.c:5903
 #, c-format
 msgid "  EMH %u (len=%u): "
 msgstr ""
 
-#: vms-alpha.c:5854
+#: vms-alpha.c:5908
 #, c-format
 msgid "   Error: The length is less than the length of an EMH record\n"
 msgstr ""
 
-#: vms-alpha.c:5871
+#: vms-alpha.c:5925
 #, c-format
 msgid ""
 "   Error: The record length is less than the size of an EMH_MHD record\n"
 msgstr ""
 
-#: vms-alpha.c:5874
+#: vms-alpha.c:5928
 #, c-format
 msgid "Module header\n"
 msgstr ""
 
-#: vms-alpha.c:5875
+#: vms-alpha.c:5929
 #, c-format
 msgid "   structure level: %u\n"
 msgstr ""
 
-#: vms-alpha.c:5876
+#: vms-alpha.c:5930
 #, c-format
 msgid "   max record size: %u\n"
 msgstr ""
 
-#: vms-alpha.c:5882
+#: vms-alpha.c:5936
 #, c-format
 msgid "   Error: The module name is missing\n"
 msgstr ""
 
-#: vms-alpha.c:5888
+#: vms-alpha.c:5942
 #, c-format
 msgid "   Error: The module name is too long\n"
 msgstr ""
 
-#: vms-alpha.c:5891
+#: vms-alpha.c:5945
 #, c-format
 msgid "   module name    : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:5895
+#: vms-alpha.c:5949
 #, c-format
 msgid "   Error: The module version is missing\n"
 msgstr ""
 
-#: vms-alpha.c:5901
+#: vms-alpha.c:5955
 #, c-format
 msgid "   Error: The module version is too long\n"
 msgstr ""
 
-#: vms-alpha.c:5904
+#: vms-alpha.c:5958
 #, c-format
 msgid "   module version : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:5907
+#: vms-alpha.c:5961
 #, c-format
 msgid "   Error: The compile date is truncated\n"
 msgstr ""
 
-#: vms-alpha.c:5909
+#: vms-alpha.c:5963
 #, c-format
 msgid "   compile date   : %.17s\n"
 msgstr ""
 
-#: vms-alpha.c:5914
+#: vms-alpha.c:5968
 #, c-format
 msgid "Language Processor Name\n"
 msgstr ""
 
-#: vms-alpha.c:5915
+#: vms-alpha.c:5969
 #, c-format
 msgid "   language name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:5919
+#: vms-alpha.c:5973
 #, c-format
 msgid "Source Files Header\n"
 msgstr ""
 
-#: vms-alpha.c:5920
+#: vms-alpha.c:5974
 #, c-format
 msgid "   file: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:5924
+#: vms-alpha.c:5978
 #, c-format
 msgid "Title Text Header\n"
 msgstr ""
 
-#: vms-alpha.c:5925
+#: vms-alpha.c:5979
 #, c-format
 msgid "   title: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:5929
+#: vms-alpha.c:5983
 #, c-format
 msgid "Copyright Header\n"
 msgstr ""
 
-#: vms-alpha.c:5930
+#: vms-alpha.c:5984
 #, c-format
 msgid "   copyright: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:5934
+#: vms-alpha.c:5988
 #, c-format
 msgid "unhandled emh subtype %u\n"
 msgstr ""
 
-#: vms-alpha.c:5944
+#: vms-alpha.c:5998
 #, c-format
 msgid "  EEOM (len=%u):\n"
 msgstr ""
 
-#: vms-alpha.c:5949
+#: vms-alpha.c:6003
 #, c-format
 msgid "   Error: The length is less than the length of an EEOM record\n"
 msgstr ""
 
-#: vms-alpha.c:5953
+#: vms-alpha.c:6007
 #, c-format
 msgid "   number of cond linkage pairs: %u\n"
 msgstr ""
 
-#: vms-alpha.c:5955
+#: vms-alpha.c:6009
 #, c-format
 msgid "   completion code: %u\n"
 msgstr ""
 
-#: vms-alpha.c:5959
+#: vms-alpha.c:6013
 #, c-format
 msgid "   transfer addr flags: 0x%02x\n"
 msgstr ""
 
-#: vms-alpha.c:5960
+#: vms-alpha.c:6014
 #, c-format
 msgid "   transfer addr psect: %u\n"
 msgstr ""
 
-#: vms-alpha.c:5962
+#: vms-alpha.c:6016
 #, c-format
 msgid "   transfer address   : 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:5971
+#: vms-alpha.c:6025
 msgid " WEAK"
 msgstr ""
 
-#: vms-alpha.c:5973
+#: vms-alpha.c:6027
 msgid " DEF"
 msgstr ""
 
-#: vms-alpha.c:5975
+#: vms-alpha.c:6029
 msgid " UNI"
 msgstr ""
 
-#: vms-alpha.c:5977 vms-alpha.c:5998
+#: vms-alpha.c:6031 vms-alpha.c:6052
 msgid " REL"
 msgstr ""
 
-#: vms-alpha.c:5979
+#: vms-alpha.c:6033
 msgid " COMM"
 msgstr ""
 
-#: vms-alpha.c:5981
+#: vms-alpha.c:6035
 msgid " VECEP"
 msgstr ""
 
-#: vms-alpha.c:5983
+#: vms-alpha.c:6037
 msgid " NORM"
 msgstr ""
 
-#: vms-alpha.c:5985
+#: vms-alpha.c:6039
 msgid " QVAL"
 msgstr ""
 
-#: vms-alpha.c:5992
+#: vms-alpha.c:6046
 msgid " PIC"
 msgstr ""
 
-#: vms-alpha.c:5994
+#: vms-alpha.c:6048
 msgid " LIB"
 msgstr ""
 
-#: vms-alpha.c:5996
+#: vms-alpha.c:6050
 msgid " OVR"
 msgstr ""
 
-#: vms-alpha.c:6000
+#: vms-alpha.c:6054
 msgid " GBL"
 msgstr ""
 
-#: vms-alpha.c:6002
+#: vms-alpha.c:6056
 msgid " SHR"
 msgstr ""
 
-#: vms-alpha.c:6004
+#: vms-alpha.c:6058
 msgid " EXE"
 msgstr ""
 
-#: vms-alpha.c:6006
+#: vms-alpha.c:6060
 msgid " RD"
 msgstr ""
 
-#: vms-alpha.c:6008
+#: vms-alpha.c:6062
 msgid " WRT"
 msgstr ""
 
-#: vms-alpha.c:6010
+#: vms-alpha.c:6064
 msgid " VEC"
 msgstr ""
 
-#: vms-alpha.c:6012
+#: vms-alpha.c:6066
 msgid " NOMOD"
 msgstr ""
 
-#: vms-alpha.c:6014
+#: vms-alpha.c:6068
 msgid " COM"
 msgstr ""
 
-#: vms-alpha.c:6016
+#: vms-alpha.c:6070
 msgid " 64B"
 msgstr ""
 
-#: vms-alpha.c:6025
+#: vms-alpha.c:6079
 #, c-format
 msgid "  EGSD (len=%u):\n"
 msgstr ""
 
-#: vms-alpha.c:6038
+#: vms-alpha.c:6092
 #, c-format
 msgid "  EGSD entry %2u (type: %u, len: %u): "
 msgstr ""
 
-#: vms-alpha.c:6044 vms-alpha.c:6295
+#: vms-alpha.c:6098 vms-alpha.c:6349
 #, c-format
 msgid "   Error: length larger than remaining space in record\n"
 msgstr ""
 
-#: vms-alpha.c:6056
+#: vms-alpha.c:6110
 #, c-format
 msgid "PSC - Program section definition\n"
 msgstr ""
 
-#: vms-alpha.c:6057 vms-alpha.c:6074
+#: vms-alpha.c:6111 vms-alpha.c:6128
 #, c-format
 msgid "   alignment  : 2**%u\n"
 msgstr ""
 
-#: vms-alpha.c:6058 vms-alpha.c:6075
+#: vms-alpha.c:6112 vms-alpha.c:6129
 #, c-format
 msgid "   flags      : 0x%04x"
 msgstr ""
 
-#: vms-alpha.c:6062
+#: vms-alpha.c:6116
 #, c-format
 msgid "   alloc (len): %u (0x%08x)\n"
 msgstr ""
 
-#: vms-alpha.c:6063 vms-alpha.c:6120 vms-alpha.c:6169
+#: vms-alpha.c:6117 vms-alpha.c:6174 vms-alpha.c:6223
 #, c-format
 msgid "   name       : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6073
+#: vms-alpha.c:6127
 #, c-format
 msgid "SPSC - Shared Image Program section def\n"
 msgstr ""
 
-#: vms-alpha.c:6079
+#: vms-alpha.c:6133
 #, c-format
 msgid "   alloc (len)   : %u (0x%08x)\n"
 msgstr ""
 
-#: vms-alpha.c:6080
+#: vms-alpha.c:6134
 #, c-format
 msgid "   image offset  : 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6082
+#: vms-alpha.c:6136
 #, c-format
 msgid "   symvec offset : 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6084
+#: vms-alpha.c:6138
 #, c-format
 msgid "   name          : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6097
+#: vms-alpha.c:6151
 #, c-format
 msgid "SYM - Global symbol definition\n"
 msgstr ""
 
-#: vms-alpha.c:6098 vms-alpha.c:6158 vms-alpha.c:6179 vms-alpha.c:6198
+#: vms-alpha.c:6152 vms-alpha.c:6212 vms-alpha.c:6233 vms-alpha.c:6252
 #, c-format
 msgid "   flags: 0x%04x"
 msgstr ""
 
-#: vms-alpha.c:6101
+#: vms-alpha.c:6155
 #, c-format
 msgid "   psect offset: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6105
+#: vms-alpha.c:6159
 #, c-format
 msgid "   code address: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6107
+#: vms-alpha.c:6161
 #, c-format
 msgid "   psect index for entry point : %u\n"
 msgstr ""
 
-#: vms-alpha.c:6110 vms-alpha.c:6186 vms-alpha.c:6205
+#: vms-alpha.c:6164 vms-alpha.c:6240 vms-alpha.c:6259
 #, c-format
 msgid "   psect index : %u\n"
 msgstr ""
 
-#: vms-alpha.c:6112 vms-alpha.c:6188 vms-alpha.c:6207
+#: vms-alpha.c:6166 vms-alpha.c:6242 vms-alpha.c:6261
 #, c-format
 msgid "   name        : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6119
+#: vms-alpha.c:6173
 #, c-format
 msgid "SYM - Global symbol reference\n"
 msgstr ""
 
-#: vms-alpha.c:6131
+#: vms-alpha.c:6185
 #, c-format
 msgid "IDC - Ident Consistency check\n"
 msgstr ""
 
-#: vms-alpha.c:6132
+#: vms-alpha.c:6186
 #, c-format
 msgid "   flags         : 0x%08x"
 msgstr ""
 
-#: vms-alpha.c:6136
+#: vms-alpha.c:6190
 #, c-format
 msgid "   id match      : %x\n"
 msgstr ""
 
-#: vms-alpha.c:6138
+#: vms-alpha.c:6192
 #, c-format
 msgid "   error severity: %x\n"
 msgstr ""
 
-#: vms-alpha.c:6141
+#: vms-alpha.c:6195
 #, c-format
 msgid "   entity name   : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6143
+#: vms-alpha.c:6197
 #, c-format
 msgid "   object name   : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6146
+#: vms-alpha.c:6200
 #, c-format
 msgid "   binary ident  : 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6149
+#: vms-alpha.c:6203
 #, c-format
 msgid "   ascii ident   : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6157
+#: vms-alpha.c:6211
 #, c-format
 msgid "SYMG - Universal symbol definition\n"
 msgstr ""
 
-#: vms-alpha.c:6161
+#: vms-alpha.c:6215
 #, c-format
 msgid "   symbol vector offset: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6163
+#: vms-alpha.c:6217
 #, c-format
 msgid "   entry point: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6165
+#: vms-alpha.c:6219
 #, c-format
 msgid "   proc descr : 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6167
+#: vms-alpha.c:6221
 #, c-format
 msgid "   psect index: %u\n"
 msgstr ""
 
-#: vms-alpha.c:6178
+#: vms-alpha.c:6232
 #, c-format
 msgid "SYMV - Vectored symbol definition\n"
 msgstr ""
 
-#: vms-alpha.c:6182
+#: vms-alpha.c:6236
 #, c-format
 msgid "   vector      : 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6184 vms-alpha.c:6203
+#: vms-alpha.c:6238 vms-alpha.c:6257
 #, c-format
 msgid "   psect offset: %u\n"
 msgstr ""
 
-#: vms-alpha.c:6197
+#: vms-alpha.c:6251
 #, c-format
 msgid "SYMM - Global symbol definition with version\n"
 msgstr ""
 
-#: vms-alpha.c:6201
+#: vms-alpha.c:6255
 #, c-format
 msgid "   version mask: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6212
+#: vms-alpha.c:6266
 #, c-format
 msgid "unhandled egsd entry type %u\n"
 msgstr ""
 
-#: vms-alpha.c:6247
+#: vms-alpha.c:6301
 #, c-format
 msgid "    linkage index: %u, replacement insn: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6251
+#: vms-alpha.c:6305
 #, c-format
 msgid "    psect idx 1: %u, offset 1: 0x%08x %08x\n"
 msgstr ""
 
-#: vms-alpha.c:6256
+#: vms-alpha.c:6310
 #, c-format
 msgid "    psect idx 2: %u, offset 2: 0x%08x %08x\n"
 msgstr ""
 
-#: vms-alpha.c:6262
+#: vms-alpha.c:6316
 #, c-format
 msgid "    psect idx 3: %u, offset 3: 0x%08x %08x\n"
 msgstr ""
 
-#: vms-alpha.c:6267
+#: vms-alpha.c:6321
 #, c-format
 msgid "    global name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6278
+#: vms-alpha.c:6332
 #, c-format
 msgid "  %s (len=%u+%u):\n"
 msgstr ""
 
-#: vms-alpha.c:6300
+#: vms-alpha.c:6354
 #, c-format
 msgid "   (type: %3u, size: 4+%3u): "
 msgstr ""
 
-#: vms-alpha.c:6304
+#: vms-alpha.c:6358
 #, c-format
 msgid "STA_GBL (stack global) %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6308
+#: vms-alpha.c:6362
 #, c-format
 msgid "STA_LW (stack longword) 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6312
+#: vms-alpha.c:6366
 #, c-format
 msgid "STA_QW (stack quadword) 0x%08x %08x\n"
 msgstr ""
 
-#: vms-alpha.c:6317
+#: vms-alpha.c:6371
 #, c-format
 msgid "STA_PQ (stack psect base + offset)\n"
 msgstr ""
 
-#: vms-alpha.c:6319
+#: vms-alpha.c:6373
 #, c-format
 msgid "    psect: %u, offset: 0x%08x %08x\n"
 msgstr ""
 
-#: vms-alpha.c:6325
+#: vms-alpha.c:6379
 #, c-format
 msgid "STA_LI (stack literal)\n"
 msgstr ""
 
-#: vms-alpha.c:6328
+#: vms-alpha.c:6382
 #, c-format
 msgid "STA_MOD (stack module)\n"
 msgstr ""
 
-#: vms-alpha.c:6331
+#: vms-alpha.c:6385
 #, c-format
 msgid "STA_CKARG (compare procedure argument)\n"
 msgstr ""
 
-#: vms-alpha.c:6335
+#: vms-alpha.c:6389
 #, c-format
 msgid "STO_B (store byte)\n"
 msgstr ""
 
-#: vms-alpha.c:6338
+#: vms-alpha.c:6392
 #, c-format
 msgid "STO_W (store word)\n"
 msgstr ""
 
-#: vms-alpha.c:6341
+#: vms-alpha.c:6395
 #, c-format
 msgid "STO_LW (store longword)\n"
 msgstr ""
 
-#: vms-alpha.c:6344
+#: vms-alpha.c:6398
 #, c-format
 msgid "STO_QW (store quadword)\n"
 msgstr ""
 
-#: vms-alpha.c:6350
+#: vms-alpha.c:6404
 #, c-format
 msgid "STO_IMMR (store immediate repeat) %u bytes\n"
 msgstr ""
 
-#: vms-alpha.c:6357
+#: vms-alpha.c:6411
 #, c-format
 msgid "STO_GBL (store global) %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6361
+#: vms-alpha.c:6415
 #, c-format
 msgid "STO_CA (store code address) %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6365
+#: vms-alpha.c:6419
 #, c-format
 msgid "STO_RB (store relative branch)\n"
 msgstr ""
 
-#: vms-alpha.c:6368
+#: vms-alpha.c:6422
 #, c-format
 msgid "STO_AB (store absolute branch)\n"
 msgstr ""
 
-#: vms-alpha.c:6371
+#: vms-alpha.c:6425
 #, c-format
 msgid "STO_OFF (store offset to psect)\n"
 msgstr ""
 
-#: vms-alpha.c:6377
+#: vms-alpha.c:6431
 #, c-format
 msgid "STO_IMM (store immediate) %u bytes\n"
 msgstr ""
 
-#: vms-alpha.c:6384
+#: vms-alpha.c:6438
 #, c-format
 msgid "STO_GBL_LW (store global longword) %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6388
+#: vms-alpha.c:6442
 #, c-format
 msgid "STO_OFF (store LP with procedure signature)\n"
 msgstr ""
 
-#: vms-alpha.c:6391
+#: vms-alpha.c:6445
 #, c-format
 msgid "STO_BR_GBL (store branch global) *todo*\n"
 msgstr ""
 
-#: vms-alpha.c:6394
+#: vms-alpha.c:6448
 #, c-format
 msgid "STO_BR_PS (store branch psect + offset) *todo*\n"
 msgstr ""
 
-#: vms-alpha.c:6398
+#: vms-alpha.c:6452
 #, c-format
 msgid "OPR_NOP (no-operation)\n"
 msgstr ""
 
-#: vms-alpha.c:6401
+#: vms-alpha.c:6455
 #, c-format
 msgid "OPR_ADD (add)\n"
 msgstr ""
 
-#: vms-alpha.c:6404
+#: vms-alpha.c:6458
 #, c-format
 msgid "OPR_SUB (subtract)\n"
 msgstr ""
 
-#: vms-alpha.c:6407
+#: vms-alpha.c:6461
 #, c-format
 msgid "OPR_MUL (multiply)\n"
 msgstr ""
 
-#: vms-alpha.c:6410
+#: vms-alpha.c:6464
 #, c-format
 msgid "OPR_DIV (divide)\n"
 msgstr ""
 
-#: vms-alpha.c:6413
+#: vms-alpha.c:6467
 #, c-format
 msgid "OPR_AND (logical and)\n"
 msgstr ""
 
-#: vms-alpha.c:6416
+#: vms-alpha.c:6470
 #, c-format
 msgid "OPR_IOR (logical inclusive or)\n"
 msgstr ""
 
-#: vms-alpha.c:6419
+#: vms-alpha.c:6473
 #, c-format
 msgid "OPR_EOR (logical exclusive or)\n"
 msgstr ""
 
-#: vms-alpha.c:6422
+#: vms-alpha.c:6476
 #, c-format
 msgid "OPR_NEG (negate)\n"
 msgstr ""
 
-#: vms-alpha.c:6425
+#: vms-alpha.c:6479
 #, c-format
 msgid "OPR_COM (complement)\n"
 msgstr ""
 
-#: vms-alpha.c:6428
+#: vms-alpha.c:6482
 #, c-format
 msgid "OPR_INSV (insert field)\n"
 msgstr ""
 
-#: vms-alpha.c:6431
+#: vms-alpha.c:6485
 #, c-format
 msgid "OPR_ASH (arithmetic shift)\n"
 msgstr ""
 
-#: vms-alpha.c:6434
+#: vms-alpha.c:6488
 #, c-format
 msgid "OPR_USH (unsigned shift)\n"
 msgstr ""
 
-#: vms-alpha.c:6437
+#: vms-alpha.c:6491
 #, c-format
 msgid "OPR_ROT (rotate)\n"
 msgstr ""
 
-#: vms-alpha.c:6440
+#: vms-alpha.c:6494
 #, c-format
 msgid "OPR_SEL (select)\n"
 msgstr ""
 
-#: vms-alpha.c:6443
+#: vms-alpha.c:6497
 #, c-format
 msgid "OPR_REDEF (redefine symbol to curr location)\n"
 msgstr ""
 
-#: vms-alpha.c:6446
+#: vms-alpha.c:6500
 #, c-format
 msgid "OPR_REDEF (define a literal)\n"
 msgstr ""
 
-#: vms-alpha.c:6450
+#: vms-alpha.c:6504
 #, c-format
 msgid "STC_LP (store cond linkage pair)\n"
 msgstr ""
 
-#: vms-alpha.c:6454
+#: vms-alpha.c:6508
 #, c-format
 msgid "STC_LP_PSB (store cond linkage pair + signature)\n"
 msgstr ""
 
-#: vms-alpha.c:6456
+#: vms-alpha.c:6510
 #, c-format
 msgid "   linkage index: %u, procedure: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6459
+#: vms-alpha.c:6513
 #, c-format
 msgid "   signature: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6462
+#: vms-alpha.c:6516
 #, c-format
 msgid "STC_GBL (store cond global)\n"
 msgstr ""
 
-#: vms-alpha.c:6464
+#: vms-alpha.c:6518
 #, c-format
 msgid "   linkage index: %u, global: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6468
+#: vms-alpha.c:6522
 #, c-format
 msgid "STC_GCA (store cond code address)\n"
 msgstr ""
 
-#: vms-alpha.c:6470
+#: vms-alpha.c:6524
 #, c-format
 msgid "   linkage index: %u, procedure name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6474
+#: vms-alpha.c:6528
 #, c-format
 msgid "STC_PS (store cond psect + offset)\n"
 msgstr ""
 
-#: vms-alpha.c:6477
+#: vms-alpha.c:6531
 #, c-format
 msgid "   linkage index: %u, psect: %u, offset: 0x%08x %08x\n"
 msgstr ""
 
-#: vms-alpha.c:6484
+#: vms-alpha.c:6538
 #, c-format
 msgid "STC_NOP_GBL (store cond NOP at global addr)\n"
 msgstr ""
 
-#: vms-alpha.c:6488
+#: vms-alpha.c:6542
 #, c-format
 msgid "STC_NOP_PS (store cond NOP at psect + offset)\n"
 msgstr ""
 
-#: vms-alpha.c:6492
+#: vms-alpha.c:6546
 #, c-format
 msgid "STC_BSR_GBL (store cond BSR at global addr)\n"
 msgstr ""
 
-#: vms-alpha.c:6496
+#: vms-alpha.c:6550
 #, c-format
 msgid "STC_BSR_PS (store cond BSR at psect + offset)\n"
 msgstr ""
 
-#: vms-alpha.c:6500
+#: vms-alpha.c:6554
 #, c-format
 msgid "STC_LDA_GBL (store cond LDA at global addr)\n"
 msgstr ""
 
-#: vms-alpha.c:6504
+#: vms-alpha.c:6558
 #, c-format
 msgid "STC_LDA_PS (store cond LDA at psect + offset)\n"
 msgstr ""
 
-#: vms-alpha.c:6508
+#: vms-alpha.c:6562
 #, c-format
 msgid "STC_BOH_GBL (store cond BOH at global addr)\n"
 msgstr ""
 
-#: vms-alpha.c:6512
+#: vms-alpha.c:6566
 #, c-format
 msgid "STC_BOH_PS (store cond BOH at psect + offset)\n"
 msgstr ""
 
-#: vms-alpha.c:6517
+#: vms-alpha.c:6571
 #, c-format
 msgid "STC_NBH_GBL (store cond or hint at global addr)\n"
 msgstr ""
 
-#: vms-alpha.c:6521
+#: vms-alpha.c:6575
 #, c-format
 msgid "STC_NBH_PS (store cond or hint at psect + offset)\n"
 msgstr ""
 
-#: vms-alpha.c:6525
+#: vms-alpha.c:6579
 #, c-format
 msgid "CTL_SETRB (set relocation base)\n"
 msgstr ""
 
-#: vms-alpha.c:6531
+#: vms-alpha.c:6585
 #, c-format
 msgid "CTL_AUGRB (augment relocation base) %u\n"
 msgstr ""
 
-#: vms-alpha.c:6535
+#: vms-alpha.c:6589
 #, c-format
 msgid "CTL_DFLOC (define location)\n"
 msgstr ""
 
-#: vms-alpha.c:6538
+#: vms-alpha.c:6592
 #, c-format
 msgid "CTL_STLOC (set location)\n"
 msgstr ""
 
-#: vms-alpha.c:6541
+#: vms-alpha.c:6595
 #, c-format
 msgid "CTL_STKDL (stack defined location)\n"
 msgstr ""
 
-#: vms-alpha.c:6544 vms-alpha.c:6968 vms-alpha.c:7094
+#: vms-alpha.c:6598 vms-alpha.c:7022 vms-alpha.c:7148
 #, c-format
 msgid "*unhandled*\n"
 msgstr ""
 
-#: vms-alpha.c:6574 vms-alpha.c:6613
+#: vms-alpha.c:6628 vms-alpha.c:6667
 #, c-format
 msgid "cannot read GST record length\n"
 msgstr ""
 
 #. Ill-formed.
-#: vms-alpha.c:6595
+#: vms-alpha.c:6649
 #, c-format
 msgid "cannot find EMH in first GST record\n"
 msgstr ""
 
-#: vms-alpha.c:6621
+#: vms-alpha.c:6675
 #, c-format
 msgid "cannot read GST record header\n"
 msgstr ""
 
-#: vms-alpha.c:6634
+#: vms-alpha.c:6688
 #, c-format
 msgid " corrupted GST\n"
 msgstr ""
 
-#: vms-alpha.c:6642
+#: vms-alpha.c:6696
 #, c-format
 msgid "cannot read GST record\n"
 msgstr ""
 
-#: vms-alpha.c:6671
+#: vms-alpha.c:6725
 #, c-format
 msgid " unhandled EOBJ record type %u\n"
 msgstr ""
 
-#: vms-alpha.c:6695
+#: vms-alpha.c:6749
 #, c-format
 msgid "  bitcount: %u, base addr: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6709
+#: vms-alpha.c:6763
 #, c-format
 msgid "   bitmap: 0x%08x (count: %u):\n"
 msgstr ""
 
-#: vms-alpha.c:6716
+#: vms-alpha.c:6770
 #, c-format
 msgid " %08x"
 msgstr ""
 
-#: vms-alpha.c:6742
+#: vms-alpha.c:6796
 #, c-format
 msgid "  image %u (%u entries)\n"
 msgstr ""
 
-#: vms-alpha.c:6748
+#: vms-alpha.c:6802
 #, c-format
 msgid "   offset: 0x%08x, val: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6770
+#: vms-alpha.c:6824
 #, c-format
 msgid "  image %u (%u entries), offsets:\n"
 msgstr ""
 
-#: vms-alpha.c:6777
+#: vms-alpha.c:6831
 #, c-format
 msgid " 0x%08x"
 msgstr ""
 
 #. 64 bits.
-#: vms-alpha.c:6899
+#: vms-alpha.c:6953
 #, c-format
 msgid "64 bits *unhandled*\n"
 msgstr ""
 
-#: vms-alpha.c:6904
+#: vms-alpha.c:6958
 #, c-format
 msgid "class: %u, dtype: %u, length: %u, pointer: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6915
+#: vms-alpha.c:6969
 #, c-format
 msgid "non-contiguous array of %s\n"
 msgstr ""
 
-#: vms-alpha.c:6920
+#: vms-alpha.c:6974
 #, c-format
 msgid "dimct: %u, aflags: 0x%02x, digits: %u, scale: %u\n"
 msgstr ""
 
-#: vms-alpha.c:6925
+#: vms-alpha.c:6979
 #, c-format
 msgid "arsize: %u, a0: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6929
+#: vms-alpha.c:6983
 #, c-format
 msgid "Strides:\n"
 msgstr ""
 
-#: vms-alpha.c:6939
+#: vms-alpha.c:6993
 #, c-format
 msgid "Bounds:\n"
 msgstr ""
 
-#: vms-alpha.c:6945
+#: vms-alpha.c:6999
 #, c-format
 msgid "[%u]: Lower: %u, upper: %u\n"
 msgstr ""
 
-#: vms-alpha.c:6957
+#: vms-alpha.c:7011
 #, c-format
 msgid "unaligned bit-string of %s\n"
 msgstr ""
 
-#: vms-alpha.c:6962
+#: vms-alpha.c:7016
 #, c-format
 msgid "base: %u, pos: %u\n"
 msgstr ""
 
-#: vms-alpha.c:6983
+#: vms-alpha.c:7037
 #, c-format
 msgid "vflags: 0x%02x, value: 0x%08x "
 msgstr ""
 
-#: vms-alpha.c:6989
+#: vms-alpha.c:7043
 #, c-format
 msgid "(no value)\n"
 msgstr ""
 
-#: vms-alpha.c:6992
+#: vms-alpha.c:7046
 #, c-format
 msgid "(not active)\n"
 msgstr ""
 
-#: vms-alpha.c:6995
+#: vms-alpha.c:7049
 #, c-format
 msgid "(not allocated)\n"
 msgstr ""
 
-#: vms-alpha.c:6998
+#: vms-alpha.c:7052
 #, c-format
 msgid "(descriptor)\n"
 msgstr ""
 
-#: vms-alpha.c:7002
+#: vms-alpha.c:7056
 #, c-format
 msgid "(trailing value)\n"
 msgstr ""
 
-#: vms-alpha.c:7005
+#: vms-alpha.c:7059
 #, c-format
 msgid "(value spec follows)\n"
 msgstr ""
 
-#: vms-alpha.c:7008
+#: vms-alpha.c:7062
 #, c-format
 msgid "(at bit offset %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7012
+#: vms-alpha.c:7066
 #, c-format
 msgid "(reg: %u, disp: %u, indir: %u, kind: "
 msgstr ""
 
-#: vms-alpha.c:7019
+#: vms-alpha.c:7073
 msgid "literal"
 msgstr ""
 
-#: vms-alpha.c:7022
+#: vms-alpha.c:7076
 msgid "address"
 msgstr ""
 
-#: vms-alpha.c:7025
+#: vms-alpha.c:7079
 msgid "desc"
 msgstr ""
 
-#: vms-alpha.c:7028
+#: vms-alpha.c:7082
 msgid "reg"
 msgstr ""
 
-#: vms-alpha.c:7045
+#: vms-alpha.c:7099
 #, c-format
 msgid "len: %2u, kind: %2u "
 msgstr ""
 
-#: vms-alpha.c:7051
+#: vms-alpha.c:7105
 #, c-format
 msgid "atomic, type=0x%02x %s\n"
 msgstr ""
 
-#: vms-alpha.c:7055
+#: vms-alpha.c:7109
 #, c-format
 msgid "indirect, defined at 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7059
+#: vms-alpha.c:7113
 #, c-format
 msgid "typed pointer\n"
 msgstr ""
 
-#: vms-alpha.c:7063
+#: vms-alpha.c:7117
 #, c-format
 msgid "pointer\n"
 msgstr ""
 
-#: vms-alpha.c:7071
+#: vms-alpha.c:7125
 #, c-format
 msgid "array, dim: %u, bitmap: "
 msgstr ""
 
-#: vms-alpha.c:7078
+#: vms-alpha.c:7132
 #, c-format
 msgid "array descriptor:\n"
 msgstr ""
 
-#: vms-alpha.c:7085
+#: vms-alpha.c:7139
 #, c-format
 msgid "type spec for element:\n"
 msgstr ""
 
-#: vms-alpha.c:7087
+#: vms-alpha.c:7141
 #, c-format
 msgid "type spec for subscript %u:\n"
 msgstr ""
 
-#: vms-alpha.c:7105
+#: vms-alpha.c:7159
 #, c-format
 msgid "Debug symbol table:\n"
 msgstr ""
 
-#: vms-alpha.c:7116
+#: vms-alpha.c:7170
 #, c-format
 msgid "cannot read DST header\n"
 msgstr ""
 
-#: vms-alpha.c:7122
+#: vms-alpha.c:7176
 #, c-format
 msgid " type: %3u, len: %3u (at 0x%08x): "
 msgstr ""
 
-#: vms-alpha.c:7136
+#: vms-alpha.c:7190
 #, c-format
 msgid "cannot read DST symbol\n"
 msgstr ""
 
-#: vms-alpha.c:7179
+#: vms-alpha.c:7233
 #, c-format
 msgid "standard data: %s\n"
 msgstr ""
 
-#: vms-alpha.c:7182 vms-alpha.c:7270
+#: vms-alpha.c:7236 vms-alpha.c:7324
 #, c-format
 msgid "    name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7189
+#: vms-alpha.c:7243
 #, c-format
 msgid "modbeg\n"
 msgstr ""
 
-#: vms-alpha.c:7191
+#: vms-alpha.c:7245
 #, c-format
 msgid "   flags: %d, language: %u, major: %u, minor: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7197 vms-alpha.c:7471
+#: vms-alpha.c:7251 vms-alpha.c:7525
 #, c-format
 msgid "   module name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7200
+#: vms-alpha.c:7254
 #, c-format
 msgid "   compiler   : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7205
+#: vms-alpha.c:7259
 #, c-format
 msgid "modend\n"
 msgstr ""
 
-#: vms-alpha.c:7212
+#: vms-alpha.c:7266
 msgid "rtnbeg\n"
 msgstr ""
 
-#: vms-alpha.c:7214
+#: vms-alpha.c:7268
 #, c-format
 msgid "    flags: %u, address: 0x%08x, pd-address: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7219
+#: vms-alpha.c:7273
 #, c-format
 msgid "    routine name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7227
+#: vms-alpha.c:7281
 #, c-format
 msgid "rtnend: size 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7235
+#: vms-alpha.c:7289
 #, c-format
 msgid "prolog: bkpt address 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7244
+#: vms-alpha.c:7298
 #, c-format
 msgid "epilog: flags: %u, count: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7254
+#: vms-alpha.c:7308
 #, c-format
 msgid "blkbeg: address: 0x%08x, name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7263
+#: vms-alpha.c:7317
 #, c-format
 msgid "blkend: size: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7269
+#: vms-alpha.c:7323
 #, c-format
 msgid "typspec (len: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7276
+#: vms-alpha.c:7330
 #, c-format
 msgid "septyp, name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7285
+#: vms-alpha.c:7339
 #, c-format
 msgid "recbeg: name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7287
+#: vms-alpha.c:7341
 #, c-format
 msgid "    len: %u bits\n"
 msgstr ""
 
-#: vms-alpha.c:7292
+#: vms-alpha.c:7346
 #, c-format
 msgid "recend\n"
 msgstr ""
 
-#: vms-alpha.c:7296
+#: vms-alpha.c:7350
 #, c-format
 msgid "enumbeg, len: %u, name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7300
+#: vms-alpha.c:7354
 #, c-format
 msgid "enumelt, name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7304
+#: vms-alpha.c:7358
 #, c-format
 msgid "enumend\n"
 msgstr ""
 
-#: vms-alpha.c:7309
+#: vms-alpha.c:7363
 #, c-format
 msgid "label, name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7311
+#: vms-alpha.c:7365
 #, c-format
 msgid "    address: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7321
+#: vms-alpha.c:7375
 #, c-format
 msgid "discontiguous range (nbr: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7324
+#: vms-alpha.c:7378
 #, c-format
 msgid "    address: 0x%08x, size: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7334
+#: vms-alpha.c:7388
 #, c-format
 msgid "line num  (len: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7351
+#: vms-alpha.c:7405
 #, c-format
 msgid "delta_pc_w %u\n"
 msgstr ""
 
-#: vms-alpha.c:7358
+#: vms-alpha.c:7412
 #, c-format
 msgid "incr_linum(b): +%u\n"
 msgstr ""
 
-#: vms-alpha.c:7364
+#: vms-alpha.c:7418
 #, c-format
 msgid "incr_linum_w: +%u\n"
 msgstr ""
 
-#: vms-alpha.c:7370
+#: vms-alpha.c:7424
 #, c-format
 msgid "incr_linum_l: +%u\n"
 msgstr ""
 
-#: vms-alpha.c:7376
+#: vms-alpha.c:7430
 #, c-format
 msgid "set_line_num(w) %u\n"
 msgstr ""
 
-#: vms-alpha.c:7381
+#: vms-alpha.c:7435
 #, c-format
 msgid "set_line_num_b %u\n"
 msgstr ""
 
-#: vms-alpha.c:7386
+#: vms-alpha.c:7440
 #, c-format
 msgid "set_line_num_l %u\n"
 msgstr ""
 
-#: vms-alpha.c:7391
+#: vms-alpha.c:7445
 #, c-format
 msgid "set_abs_pc: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7395
+#: vms-alpha.c:7449
 #, c-format
 msgid "delta_pc_l: +0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7400
+#: vms-alpha.c:7454
 #, c-format
 msgid "term(b): 0x%02x"
 msgstr ""
 
-#: vms-alpha.c:7402
+#: vms-alpha.c:7456
 #, c-format
 msgid "        pc: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7407
+#: vms-alpha.c:7461
 #, c-format
 msgid "term_w: 0x%04x"
 msgstr ""
 
-#: vms-alpha.c:7409
+#: vms-alpha.c:7463
 #, c-format
 msgid "    pc: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7415
+#: vms-alpha.c:7469
 #, c-format
 msgid "delta pc +%-4d"
 msgstr ""
 
-#: vms-alpha.c:7419
+#: vms-alpha.c:7473
 #, c-format
 msgid "    pc: 0x%08x line: %5u\n"
 msgstr ""
 
-#: vms-alpha.c:7424
+#: vms-alpha.c:7478
 #, c-format
 msgid "    *unhandled* cmd %u\n"
 msgstr ""
 
-#: vms-alpha.c:7439
+#: vms-alpha.c:7493
 #, c-format
 msgid "source (len: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7454
+#: vms-alpha.c:7508
 #, c-format
 msgid "   declfile: len: %u, flags: %u, fileid: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7459
+#: vms-alpha.c:7513
 #, c-format
 msgid "   rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7468
+#: vms-alpha.c:7522
 #, c-format
 msgid "   filename   : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7477
+#: vms-alpha.c:7531
 #, c-format
 msgid "   setfile %u\n"
 msgstr ""
 
-#: vms-alpha.c:7482 vms-alpha.c:7487
+#: vms-alpha.c:7536 vms-alpha.c:7541
 #, c-format
 msgid "   setrec %u\n"
 msgstr ""
 
-#: vms-alpha.c:7492 vms-alpha.c:7497
+#: vms-alpha.c:7546 vms-alpha.c:7551
 #, c-format
 msgid "   setlnum %u\n"
 msgstr ""
 
-#: vms-alpha.c:7502 vms-alpha.c:7507
+#: vms-alpha.c:7556 vms-alpha.c:7561
 #, c-format
 msgid "   deflines %u\n"
 msgstr ""
 
-#: vms-alpha.c:7511
+#: vms-alpha.c:7565
 #, c-format
 msgid "   formfeed\n"
 msgstr ""
 
-#: vms-alpha.c:7515
+#: vms-alpha.c:7569
 #, c-format
 msgid "   *unhandled* cmd %u\n"
 msgstr ""
 
-#: vms-alpha.c:7527
+#: vms-alpha.c:7581
 #, c-format
 msgid "*unhandled* dst type %u\n"
 msgstr ""
 
-#: vms-alpha.c:7559
+#: vms-alpha.c:7613
 #, c-format
 msgid "cannot read EIHD\n"
 msgstr ""
 
-#: vms-alpha.c:7563
+#: vms-alpha.c:7617
 #, c-format
 msgid "EIHD: (size: %u, nbr blocks: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7567
+#: vms-alpha.c:7621
 #, c-format
 msgid " majorid: %u, minorid: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7575
+#: vms-alpha.c:7629
 msgid "executable"
 msgstr ""
 
-#: vms-alpha.c:7578
+#: vms-alpha.c:7632
 msgid "linkable image"
 msgstr ""
 
-#: vms-alpha.c:7585
+#: vms-alpha.c:7639
 #, c-format
 msgid " image type: %u (%s)"
 msgstr ""
 
-#: vms-alpha.c:7591
+#: vms-alpha.c:7645
 msgid "native"
 msgstr ""
 
-#: vms-alpha.c:7594
+#: vms-alpha.c:7648
 msgid "CLI"
 msgstr ""
 
-#: vms-alpha.c:7601
+#: vms-alpha.c:7655
 #, c-format
 msgid ", subtype: %u (%s)\n"
 msgstr ""
 
-#: vms-alpha.c:7608
+#: vms-alpha.c:7662
 #, c-format
 msgid " offsets: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7612
+#: vms-alpha.c:7666
 #, c-format
 msgid " fixup info rva: "
 msgstr ""
 
-#: vms-alpha.c:7614
+#: vms-alpha.c:7668
 #, c-format
 msgid ", symbol vector rva: "
 msgstr ""
 
-#: vms-alpha.c:7617
+#: vms-alpha.c:7671
 #, c-format
 msgid ""
 "\n"
 " version array off: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7622
+#: vms-alpha.c:7676
 #, c-format
 msgid " img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7628
+#: vms-alpha.c:7682
 #, c-format
 msgid " linker flags: %08x:"
 msgstr ""
 
-#: vms-alpha.c:7659
+#: vms-alpha.c:7713
 #, c-format
 msgid " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7665
+#: vms-alpha.c:7719
 #, c-format
 msgid " BPAGE: %u"
 msgstr ""
 
-#: vms-alpha.c:7672
+#: vms-alpha.c:7726
 #, c-format
 msgid ", ext fixup offset: %u, no_opt psect off: %u"
 msgstr ""
 
-#: vms-alpha.c:7675
+#: vms-alpha.c:7729
 #, c-format
 msgid ", alias: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7683
+#: vms-alpha.c:7737
 #, c-format
 msgid "system version array information:\n"
 msgstr ""
 
-#: vms-alpha.c:7687
+#: vms-alpha.c:7741
 #, c-format
 msgid "cannot read EIHVN header\n"
 msgstr ""
 
-#: vms-alpha.c:7697
+#: vms-alpha.c:7751
 #, c-format
 msgid "cannot read EIHVN version\n"
 msgstr ""
 
-#: vms-alpha.c:7700
+#: vms-alpha.c:7754
 #, c-format
 msgid "   %02u "
 msgstr ""
 
-#: vms-alpha.c:7704
+#: vms-alpha.c:7758
 msgid "BASE_IMAGE       "
 msgstr ""
 
-#: vms-alpha.c:7707
+#: vms-alpha.c:7761
 msgid "MEMORY_MANAGEMENT"
 msgstr ""
 
-#: vms-alpha.c:7710
+#: vms-alpha.c:7764
 msgid "IO               "
 msgstr ""
 
-#: vms-alpha.c:7713
+#: vms-alpha.c:7767
 msgid "FILES_VOLUMES    "
 msgstr ""
 
-#: vms-alpha.c:7716
+#: vms-alpha.c:7770
 msgid "PROCESS_SCHED    "
 msgstr ""
 
-#: vms-alpha.c:7719
+#: vms-alpha.c:7773
 msgid "SYSGEN           "
 msgstr ""
 
-#: vms-alpha.c:7722
+#: vms-alpha.c:7776
 msgid "CLUSTERS_LOCKMGR "
 msgstr ""
 
-#: vms-alpha.c:7725
+#: vms-alpha.c:7779
 msgid "LOGICAL_NAMES    "
 msgstr ""
 
-#: vms-alpha.c:7728
+#: vms-alpha.c:7782
 msgid "SECURITY         "
 msgstr ""
 
-#: vms-alpha.c:7731
+#: vms-alpha.c:7785
 msgid "IMAGE_ACTIVATOR  "
 msgstr ""
 
-#: vms-alpha.c:7734
+#: vms-alpha.c:7788
 msgid "NETWORKS         "
 msgstr ""
 
-#: vms-alpha.c:7737
+#: vms-alpha.c:7791
 msgid "COUNTERS         "
 msgstr ""
 
-#: vms-alpha.c:7740
+#: vms-alpha.c:7794
 msgid "STABLE           "
 msgstr ""
 
-#: vms-alpha.c:7743
+#: vms-alpha.c:7797
 msgid "MISC             "
 msgstr ""
 
-#: vms-alpha.c:7746
+#: vms-alpha.c:7800
 msgid "CPU              "
 msgstr ""
 
-#: vms-alpha.c:7749
+#: vms-alpha.c:7803
 msgid "VOLATILE         "
 msgstr ""
 
-#: vms-alpha.c:7752
+#: vms-alpha.c:7806
 msgid "SHELL            "
 msgstr ""
 
-#: vms-alpha.c:7755
+#: vms-alpha.c:7809
 msgid "POSIX            "
 msgstr ""
 
-#: vms-alpha.c:7758
+#: vms-alpha.c:7812
 msgid "MULTI_PROCESSING "
 msgstr ""
 
-#: vms-alpha.c:7761
+#: vms-alpha.c:7815
 msgid "GALAXY           "
 msgstr ""
 
-#: vms-alpha.c:7764
+#: vms-alpha.c:7818
 msgid "*unknown*        "
 msgstr ""
 
-#: vms-alpha.c:7780 vms-alpha.c:8055
+#: vms-alpha.c:7834 vms-alpha.c:8108
 #, c-format
 msgid "cannot read EIHA\n"
 msgstr ""
 
-#: vms-alpha.c:7783
+#: vms-alpha.c:7837
 #, c-format
 msgid "Image activation:  (size=%u)\n"
 msgstr ""
 
-#: vms-alpha.c:7786
+#: vms-alpha.c:7840
 #, c-format
 msgid " First address : 0x%08x 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7790
+#: vms-alpha.c:7844
 #, c-format
 msgid " Second address: 0x%08x 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7794
+#: vms-alpha.c:7848
 #, c-format
 msgid " Third address : 0x%08x 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7798
+#: vms-alpha.c:7852
 #, c-format
 msgid " Fourth address: 0x%08x 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7802
+#: vms-alpha.c:7856
 #, c-format
 msgid " Shared image  : 0x%08x 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7813
+#: vms-alpha.c:7867
 #, c-format
 msgid "cannot read EIHI\n"
 msgstr ""
 
-#: vms-alpha.c:7817
+#: vms-alpha.c:7871
 #, c-format
 msgid "Image identification: (major: %u, minor: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7820
+#: vms-alpha.c:7874
 #, c-format
 msgid " image name       : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7822
+#: vms-alpha.c:7876
 #, c-format
 msgid " link time        : %s\n"
 msgstr ""
 
-#: vms-alpha.c:7824
+#: vms-alpha.c:7878
 #, c-format
 msgid " image ident      : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7826
+#: vms-alpha.c:7880
 #, c-format
 msgid " linker ident     : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7828
+#: vms-alpha.c:7882
 #, c-format
 msgid " image build ident: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7838
+#: vms-alpha.c:7892
 #, c-format
 msgid "cannot read EIHS\n"
 msgstr ""
 
-#: vms-alpha.c:7842
+#: vms-alpha.c:7896
 #, c-format
 msgid "Image symbol & debug table: (major: %u, minor: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7848
+#: vms-alpha.c:7902
 #, c-format
 msgid " debug symbol table : vbn: %u, size: %u (0x%x)\n"
 msgstr ""
 
-#: vms-alpha.c:7853
+#: vms-alpha.c:7907
 #, c-format
 msgid " global symbol table: vbn: %u, records: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7858
+#: vms-alpha.c:7912
 #, c-format
 msgid " debug module table : vbn: %u, size: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7871
+#: vms-alpha.c:7925
 #, c-format
 msgid "cannot read EISD\n"
 msgstr ""
 
-#: vms-alpha.c:7882
+#: vms-alpha.c:7936
 #, c-format
 msgid ""
 "Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7890
+#: vms-alpha.c:7944
 #, c-format
 msgid " section: base: 0x%08x%08x size: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7895
+#: vms-alpha.c:7949
 #, c-format
 msgid " flags: 0x%04x"
 msgstr ""
 
-#: vms-alpha.c:7933
+#: vms-alpha.c:7987
 #, c-format
 msgid " vbn: %u, pfc: %u, matchctl: %u type: %u ("
 msgstr ""
 
-#: vms-alpha.c:7939
+#: vms-alpha.c:7993
 msgid "NORMAL"
 msgstr ""
 
-#: vms-alpha.c:7942
+#: vms-alpha.c:7996
 msgid "SHRFXD"
 msgstr ""
 
-#: vms-alpha.c:7945
+#: vms-alpha.c:7999
 msgid "PRVFXD"
 msgstr ""
 
-#: vms-alpha.c:7948
+#: vms-alpha.c:8002
 msgid "SHRPIC"
 msgstr ""
 
-#: vms-alpha.c:7951
+#: vms-alpha.c:8005
 msgid "PRVPIC"
 msgstr ""
 
-#: vms-alpha.c:7954
+#: vms-alpha.c:8008
 msgid "USRSTACK"
 msgstr ""
 
-#: vms-alpha.c:7960
+#: vms-alpha.c:8014
 msgid ")\n"
 msgstr ""
 
-#: vms-alpha.c:7963
+#: vms-alpha.c:8017
 #, c-format
 msgid " ident: 0x%08x, name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7973
+#: vms-alpha.c:8027
 #, c-format
 msgid "cannot read DMT\n"
 msgstr ""
 
-#: vms-alpha.c:7977
+#: vms-alpha.c:8031
 #, c-format
 msgid "Debug module table:\n"
 msgstr ""
 
-#: vms-alpha.c:7986
+#: vms-alpha.c:8040
 #, c-format
 msgid "cannot read DMT header\n"
 msgstr ""
 
-#: vms-alpha.c:7992
+#: vms-alpha.c:8046
 #, c-format
 msgid " module offset: 0x%08x, size: 0x%08x, (%u psects)\n"
 msgstr ""
 
-#: vms-alpha.c:8002
+#: vms-alpha.c:8056
 #, c-format
 msgid "cannot read DMT psect\n"
 msgstr ""
 
-#: vms-alpha.c:8006
+#: vms-alpha.c:8060
 #, c-format
 msgid "  psect start: 0x%08x, length: %u\n"
 msgstr ""
 
-#: vms-alpha.c:8019
+#: vms-alpha.c:8073
 #, c-format
 msgid "cannot read DST\n"
 msgstr ""
 
-#: vms-alpha.c:8029
+#: vms-alpha.c:8083
 #, c-format
 msgid "cannot read GST\n"
 msgstr ""
 
-#: vms-alpha.c:8033
+#: vms-alpha.c:8087
 #, c-format
 msgid "Global symbol table:\n"
 msgstr ""
 
-#: vms-alpha.c:8062
+#: vms-alpha.c:8114
 #, c-format
 msgid "Image activator fixup: (major: %u, minor: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:8066
+#: vms-alpha.c:8118
 #, c-format
 msgid "  iaflink : 0x%08x %08x\n"
 msgstr ""
 
-#: vms-alpha.c:8070
+#: vms-alpha.c:8122
 #, c-format
 msgid "  fixuplnk: 0x%08x %08x\n"
 msgstr ""
 
-#: vms-alpha.c:8073
+#: vms-alpha.c:8125
 #, c-format
 msgid "  size : %u\n"
 msgstr ""
 
-#: vms-alpha.c:8075
+#: vms-alpha.c:8127
 #, c-format
 msgid "  flags: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:8080
+#: vms-alpha.c:8132
 #, c-format
 msgid "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 msgstr ""
 
-#: vms-alpha.c:8085
+#: vms-alpha.c:8137
 #, c-format
 msgid "  qdotadroff: %5u, ldotadroff: %5u\n"
 msgstr ""
 
-#: vms-alpha.c:8090
+#: vms-alpha.c:8142
 #, c-format
 msgid "  codeadroff: %5u, lpfixoff  : %5u\n"
 msgstr ""
 
-#: vms-alpha.c:8093
+#: vms-alpha.c:8145
 #, c-format
 msgid "  chgprtoff : %5u\n"
 msgstr ""
 
-#: vms-alpha.c:8097
+#: vms-alpha.c:8149
 #, c-format
 msgid "  shlstoff  : %5u, shrimgcnt : %5u\n"
 msgstr ""
 
-#: vms-alpha.c:8100
+#: vms-alpha.c:8152
 #, c-format
 msgid "  shlextra  : %5u, permctx   : %5u\n"
 msgstr ""
 
-#: vms-alpha.c:8103
+#: vms-alpha.c:8155
 #, c-format
 msgid "  base_va : 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:8105
+#: vms-alpha.c:8157
 #, c-format
 msgid "  lppsbfixoff: %5u\n"
 msgstr ""
 
-#: vms-alpha.c:8113
+#: vms-alpha.c:8165
 #, c-format
 msgid " Shareable images:\n"
 msgstr ""
 
-#: vms-alpha.c:8118
+#: vms-alpha.c:8170
 #, c-format
 msgid "  %u: size: %u, flags: 0x%02x, name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:8125
+#: vms-alpha.c:8177
 #, c-format
 msgid " quad-word relocation fixups:\n"
 msgstr ""
 
-#: vms-alpha.c:8130
+#: vms-alpha.c:8182
 #, c-format
 msgid " long-word relocation fixups:\n"
 msgstr ""
 
-#: vms-alpha.c:8135
+#: vms-alpha.c:8187
 #, c-format
 msgid " quad-word .address reference fixups:\n"
 msgstr ""
 
-#: vms-alpha.c:8140
+#: vms-alpha.c:8192
 #, c-format
 msgid " long-word .address reference fixups:\n"
 msgstr ""
 
-#: vms-alpha.c:8145
+#: vms-alpha.c:8197
 #, c-format
 msgid " Code Address Reference Fixups:\n"
 msgstr ""
 
-#: vms-alpha.c:8150
+#: vms-alpha.c:8202
 #, c-format
 msgid " Linkage Pairs Reference Fixups:\n"
 msgstr ""
 
-#: vms-alpha.c:8159
+#: vms-alpha.c:8211
 #, c-format
 msgid " Change Protection (%u entries):\n"
 msgstr ""
 
-#: vms-alpha.c:8165
+#: vms-alpha.c:8217
 #, c-format
 msgid "  base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x "
 msgstr ""
 
 #. FIXME: we do not yet support relocatable link.  It is not obvious
 #. how to do it for debug infos.
-#: vms-alpha.c:9027
+#: vms-alpha.c:9094
 msgid "%P: relocatable link is not supported\n"
 msgstr ""
 
-#: vms-alpha.c:9098
+#: vms-alpha.c:9165
 #, c-format
 msgid "%P: multiple entry points: in modules %pB and %pB\n"
 msgstr ""
 
-#: vms-lib.c:1453
+#: vms-lib.c:1525
 #, c-format
 msgid "could not open shared image '%s' from '%s'"
 msgstr ""
@@ -8141,449 +8351,446 @@ msgstr ""
 msgid "%pB: dynamic object with no .loader section"
 msgstr ""
 
-#: xcofflink.c:1414
+#: xcofflink.c:1418
 #, c-format
 msgid "%pB: `%s' has line numbers but no enclosing section"
 msgstr ""
 
-#: xcofflink.c:1467
+#: xcofflink.c:1471
 #, c-format
 msgid "%pB: class %d symbol `%s' has no aux entries"
 msgstr ""
 
-#: xcofflink.c:1490
+#: xcofflink.c:1494
 #, c-format
 msgid "%pB: symbol `%s' has unrecognized csect type %d"
 msgstr ""
 
-#: xcofflink.c:1503
+#: xcofflink.c:1507
 #, c-format
 msgid "%pB: bad XTY_ER symbol `%s': class %d scnum %d scnlen %<PRId64>"
 msgstr ""
 
-#: xcofflink.c:1534
+#: xcofflink.c:1538
 #, c-format
 msgid "%pB: XMC_TC0 symbol `%s' is class %d scnlen %<PRId64>"
 msgstr ""
 
-#: xcofflink.c:1681
+#: xcofflink.c:1685
 #, c-format
 msgid "%pB: csect `%s' not in enclosing section"
 msgstr ""
 
-#: xcofflink.c:1789
+#: xcofflink.c:1793
 #, c-format
 msgid "%pB: misplaced XTY_LD `%s'"
 msgstr ""
 
-#: xcofflink.c:2110
+#: xcofflink.c:2114
 #, c-format
 msgid "%pB: reloc %s:%<PRId64> not in csect"
 msgstr ""
 
-#: xcofflink.c:3197
+#: xcofflink.c:3201
 #, c-format
 msgid "%s: no such symbol"
 msgstr ""
 
-#: xcofflink.c:3302
+#: xcofflink.c:3306
 #, c-format
 msgid "warning: attempt to export undefined symbol `%s'"
 msgstr ""
 
-#: xcofflink.c:3681
+#: xcofflink.c:3685
 msgid "error: undefined symbol __rtinit"
 msgstr ""
 
-#: xcofflink.c:4061
+#: xcofflink.c:4065
 #, c-format
 msgid "%pB: loader reloc in unrecognized section `%s'"
 msgstr ""
 
-#: xcofflink.c:4073
+#: xcofflink.c:4077
 #, c-format
 msgid "%pB: `%s' in loader reloc but not loader sym"
 msgstr ""
 
-#: xcofflink.c:4090
+#: xcofflink.c:4094
 #, c-format
 msgid "%pB: loader reloc in read-only section %pA"
 msgstr ""
 
-#: xcofflink.c:5114
+#: xcofflink.c:5122
 #, c-format
 msgid "TOC overflow: %#<PRIx64> > 0x10000; try -mminimal-toc when compiling"
 msgstr ""
 
 #. Not fatal, this callback cannot fail.
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:2918
+#: elfnn-aarch64.c:2918
 #, c-format
 msgid "unknown attribute for symbol `%s': 0x%02x"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:5237
+#: elfnn-aarch64.c:5292
 #, c-format
 msgid "%pB: error: erratum 835769 stub out of range (input file too large)"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:5329
+#: elfnn-aarch64.c:5384
 #, c-format
 msgid "%pB: error: erratum 843419 stub out of range (input file too large)"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:5342
+#: elfnn-aarch64.c:5397
 msgid "%pB: error: erratum 843419 immediate 0x%"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:5876
+#: elfnn-aarch64.c:5945
 #, c-format
 msgid ""
 "%pB: relocation %s against symbol `%s' which may bind externally can not be "
 "used when making a shared object; recompile with -fPIC"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:5969
+#: elfnn-aarch64.c:6036
 #, c-format
 msgid ""
 "%pB: local symbol descriptor table be NULL when applying relocation %s "
 "against local symbol"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:6082
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:6119
+#: elfnn-aarch64.c:6149 elfnn-aarch64.c:6186
 #, c-format
 msgid "%pB: TLS relocation %s against undefined symbol `%s'"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:7104
+#: elfnn-aarch64.c:7171
 msgid "too many GOT entries for -fpic, please recompile with -fPIC"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:7132
+#: elfnn-aarch64.c:7199
 msgid ""
 "one possible cause of this error is that the symbol is being referenced in "
 "the indicated code as if it had a larger alignment than was declared where "
 "it was defined"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:7716
+#: elfnn-aarch64.c:7783
 #, c-format
 msgid ""
 "%pB: relocation %s against `%s' can not be used when making a shared object"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:182
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:217
+#: elfnn-riscv.c:190 elfnn-riscv.c:225
 #, c-format
 msgid "%pB: warning: RVE PLT generation not supported"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2093
+#: elfnn-riscv.c:2101
 #, c-format
 msgid "%pcrel_lo section symbol with an addend"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2314
+#: elfnn-riscv.c:2322
 #, c-format
 msgid ""
 "%%X%%P: relocation %s against `%s' can not be used when making a shared "
 "object; recompile with -fPIC\n"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2324
+#: elfnn-riscv.c:2332
 #, c-format
 msgid "%%X%%P: unresolvable %s relocation against symbol `%s'\n"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2363
+#: elfnn-riscv.c:2371
 msgid "%X%P: internal error: out of range error\n"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2368
+#: elfnn-riscv.c:2376
 msgid "%X%P: internal error: unsupported relocation error\n"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2374
+#: elfnn-riscv.c:2382
 msgid "dangerous relocation error"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2380
+#: elfnn-riscv.c:2388
 msgid "%X%P: internal error: unknown error\n"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2771
+#: elfnn-riscv.c:2755
 #, c-format
 msgid "error: %pB: Mis-matched ISA version for '%s' extension. %d.%d vs %d.%d"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2789
+#: elfnn-riscv.c:2773
 #, c-format
 msgid ""
 "error: %pB: corrupted ISA string '%s'. First letter should be 'i' or 'e' but "
 "got '%s'."
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2833
+#: elfnn-riscv.c:2817
 #, c-format
 msgid "error: %pB: Mis-matched ISA string to merge '%s' and '%s'."
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2981
+#: elfnn-riscv.c:3018
 #, c-format
 msgid "error: %pB: ISA string of input (%s) doesn't match output (%s)."
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:3006
+#: elfnn-riscv.c:3038
 #, c-format
 msgid "error: %pB: XLEN of input (%u) doesn't match output (%u)."
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:3014
+#: elfnn-riscv.c:3046
 #, c-format
 msgid "error: %pB: Unsupported XLEN (%u), you might be using wrong emulation."
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:3099
+#: elfnn-riscv.c:3131
 #, c-format
 msgid "error: %pB: conflicting priv spec version (major/minor/revision)."
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:3115
+#: elfnn-riscv.c:3147
 #, c-format
 msgid ""
 "error: %pB use %u-byte stack aligned but the output use %u-byte stack "
 "aligned."
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:3155
+#: elfnn-riscv.c:3187
 #, c-format
 msgid ""
 "%pB: ABI is incompatible with that of the selected emulation:\n"
 "  target emulation `%s' does not match `%s'"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:3209
+#: elfnn-riscv.c:3241
 #, c-format
 msgid "%pB: can't link %s modules with %s modules"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:3219
+#: elfnn-riscv.c:3251
 #, c-format
 msgid "%pB: can't link RVE with other target"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:3757
+#: elfnn-riscv.c:3789
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): %<PRId64> bytes required for alignment to %<PRId64>-"
 "byte boundary, but only %<PRId64> present"
 msgstr ""
 
-#: peigen.c:164 pepigen.c:164 pex64igen.c:164
+#: peXXigen.c:164
 #, c-format
 msgid "%pB: unable to find name for empty section"
 msgstr ""
 
-#: peigen.c:190 pepigen.c:190 pex64igen.c:190
+#: peXXigen.c:191
 #, c-format
 msgid "%pB: out of memory creating name for empty section"
 msgstr ""
 
-#: peigen.c:201 pepigen.c:201 pex64igen.c:201
+#: peXXigen.c:201
 #, c-format
 msgid "%pB: unable to create fake empty section"
 msgstr ""
 
-#: peigen.c:539 pepigen.c:539 pex64igen.c:539
+#: peXXigen.c:539
 #, c-format
 msgid ""
 "%pB: aout header specifies an invalid number of data-directory entries: %u"
 msgstr ""
 
-#: peigen.c:1088 pepigen.c:1088 pex64igen.c:1088
+#: peXXigen.c:1088
 #, c-format
 msgid "%pB: line number overflow: 0x%lx > 0xffff"
 msgstr ""
 
-#: peigen.c:1235 pepigen.c:1235 pex64igen.c:1235
+#: peXXigen.c:1235
 msgid "Export Directory [.edata (or where ever we found it)]"
 msgstr ""
 
-#: peigen.c:1236 pepigen.c:1236 pex64igen.c:1236
+#: peXXigen.c:1236
 msgid "Import Directory [parts of .idata]"
 msgstr ""
 
-#: peigen.c:1237 pepigen.c:1237 pex64igen.c:1237
+#: peXXigen.c:1237
 msgid "Resource Directory [.rsrc]"
 msgstr ""
 
-#: peigen.c:1238 pepigen.c:1238 pex64igen.c:1238
+#: peXXigen.c:1238
 msgid "Exception Directory [.pdata]"
 msgstr ""
 
-#: peigen.c:1239 pepigen.c:1239 pex64igen.c:1239
+#: peXXigen.c:1239
 msgid "Security Directory"
 msgstr ""
 
-#: peigen.c:1240 pepigen.c:1240 pex64igen.c:1240
+#: peXXigen.c:1240
 msgid "Base Relocation Directory [.reloc]"
 msgstr ""
 
-#: peigen.c:1241 pepigen.c:1241 pex64igen.c:1241
+#: peXXigen.c:1241
 msgid "Debug Directory"
 msgstr ""
 
-#: peigen.c:1242 pepigen.c:1242 pex64igen.c:1242
+#: peXXigen.c:1242
 msgid "Description Directory"
 msgstr ""
 
-#: peigen.c:1243 pepigen.c:1243 pex64igen.c:1243
+#: peXXigen.c:1243
 msgid "Special Directory"
 msgstr ""
 
-#: peigen.c:1244 pepigen.c:1244 pex64igen.c:1244
+#: peXXigen.c:1244
 msgid "Thread Storage Directory [.tls]"
 msgstr ""
 
-#: peigen.c:1245 pepigen.c:1245 pex64igen.c:1245
+#: peXXigen.c:1245
 msgid "Load Configuration Directory"
 msgstr ""
 
-#: peigen.c:1246 pepigen.c:1246 pex64igen.c:1246
+#: peXXigen.c:1246
 msgid "Bound Import Directory"
 msgstr ""
 
-#: peigen.c:1247 pepigen.c:1247 pex64igen.c:1247
+#: peXXigen.c:1247
 msgid "Import Address Table Directory"
 msgstr ""
 
-#: peigen.c:1248 pepigen.c:1248 pex64igen.c:1248
+#: peXXigen.c:1248
 msgid "Delay Import Directory"
 msgstr ""
 
-#: peigen.c:1249 pepigen.c:1249 pex64igen.c:1249
+#: peXXigen.c:1249
 msgid "CLR Runtime Header"
 msgstr ""
 
-#: peigen.c:1250 pepigen.c:1250 pex64igen.c:1250
+#: peXXigen.c:1250
 msgid "Reserved"
 msgstr ""
 
-#: peigen.c:1310 pepigen.c:1310 pex64igen.c:1310
+#: peXXigen.c:1310
 #, c-format
 msgid ""
 "\n"
 "There is an import table, but the section containing it could not be found\n"
 msgstr ""
 
-#: peigen.c:1316 pepigen.c:1316 pex64igen.c:1316
+#: peXXigen.c:1316
 #, c-format
 msgid ""
 "\n"
 "There is an import table in %s, but that section has no contents\n"
 msgstr ""
 
-#: peigen.c:1323 pepigen.c:1323 pex64igen.c:1323
+#: peXXigen.c:1323
 #, c-format
 msgid ""
 "\n"
 "There is an import table in %s at 0x%lx\n"
 msgstr ""
 
-#: peigen.c:1365 pepigen.c:1365 pex64igen.c:1365
+#: peXXigen.c:1365
 #, c-format
 msgid ""
 "\n"
 "Function descriptor located at the start address: %04lx\n"
 msgstr ""
 
-#: peigen.c:1369 pepigen.c:1369 pex64igen.c:1369
+#: peXXigen.c:1369
 #, c-format
 msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n"
 msgstr ""
 
-#: peigen.c:1377 pepigen.c:1377 pex64igen.c:1377
+#: peXXigen.c:1377
 #, c-format
 msgid ""
 "\n"
 "No reldata section! Function descriptor not decoded.\n"
 msgstr ""
 
-#: peigen.c:1382 pepigen.c:1382 pex64igen.c:1382
+#: peXXigen.c:1382
 #, c-format
 msgid ""
 "\n"
 "The Import Tables (interpreted %s section contents)\n"
 msgstr ""
 
-#: peigen.c:1385 pepigen.c:1385 pex64igen.c:1385
+#: peXXigen.c:1385
 #, c-format
 msgid ""
 " vma:            Hint    Time      Forward  DLL       First\n"
 "                 Table   Stamp     Chain    Name      Thunk\n"
 msgstr ""
 
-#: peigen.c:1435 pepigen.c:1435 pex64igen.c:1435
+#: peXXigen.c:1435
 #, c-format
 msgid ""
 "\n"
 "\tDLL Name: %.*s\n"
 msgstr ""
 
-#: peigen.c:1451 pepigen.c:1451 pex64igen.c:1451
+#: peXXigen.c:1451
 #, c-format
 msgid "\tvma:  Hint/Ord Member-Name Bound-To\n"
 msgstr ""
 
-#: peigen.c:1476 pepigen.c:1476 pex64igen.c:1476
+#: peXXigen.c:1476
 #, c-format
 msgid ""
 "\n"
 "There is a first thunk, but the section containing it could not be found\n"
 msgstr ""
 
-#: peigen.c:1520 peigen.c:1559 pepigen.c:1520 pepigen.c:1559 pex64igen.c:1520
-#: pex64igen.c:1559
+#: peXXigen.c:1520 peXXigen.c:1559
 #, c-format
 msgid "\t<corrupt: 0x%04lx>"
 msgstr ""
 
-#: peigen.c:1652 pepigen.c:1652 pex64igen.c:1652
+#: peXXigen.c:1652
 #, c-format
 msgid ""
 "\n"
 "There is an export table, but the section containing it could not be found\n"
 msgstr ""
 
-#: peigen.c:1658 pepigen.c:1658 pex64igen.c:1658
+#: peXXigen.c:1658
 #, c-format
 msgid ""
 "\n"
 "There is an export table in %s, but that section has no contents\n"
 msgstr ""
 
-#: peigen.c:1669 pepigen.c:1669 pex64igen.c:1669
+#: peXXigen.c:1669
 #, c-format
 msgid ""
 "\n"
 "There is an export table in %s, but it does not fit into that section\n"
 msgstr ""
 
-#: peigen.c:1680 pepigen.c:1680 pex64igen.c:1680
+#: peXXigen.c:1680
 #, c-format
 msgid ""
 "\n"
 "There is an export table in %s, but it is too small (%d)\n"
 msgstr ""
 
-#: peigen.c:1686 pepigen.c:1686 pex64igen.c:1686
+#: peXXigen.c:1686
 #, c-format
 msgid ""
 "\n"
 "There is an export table in %s at 0x%lx\n"
 msgstr ""
 
-#: peigen.c:1714 pepigen.c:1714 pex64igen.c:1714
+#: peXXigen.c:1714
 #, c-format
 msgid ""
 "\n"
@@ -8591,162 +8798,160 @@ msgid ""
 "\n"
 msgstr ""
 
-#: peigen.c:1718 pepigen.c:1718 pex64igen.c:1718
+#: peXXigen.c:1718
 #, c-format
 msgid "Export Flags \t\t\t%lx\n"
 msgstr ""
 
-#: peigen.c:1721 pepigen.c:1721 pex64igen.c:1721
+#: peXXigen.c:1721
 #, c-format
 msgid "Time/Date stamp \t\t%lx\n"
 msgstr ""
 
-#: peigen.c:1725 pepigen.c:1725 pex64igen.c:1725
+#: peXXigen.c:1725
 #, c-format
 msgid "Major/Minor \t\t\t%d/%d\n"
 msgstr ""
 
-#: peigen.c:1728 pepigen.c:1728 pex64igen.c:1728
+#: peXXigen.c:1728
 #, c-format
 msgid "Name \t\t\t\t"
 msgstr ""
 
-#: peigen.c:1739 pepigen.c:1739 pex64igen.c:1739
+#: peXXigen.c:1739
 #, c-format
 msgid "Ordinal Base \t\t\t%ld\n"
 msgstr ""
 
-#: peigen.c:1742 pepigen.c:1742 pex64igen.c:1742
+#: peXXigen.c:1742
 #, c-format
 msgid "Number in:\n"
 msgstr ""
 
-#: peigen.c:1745 pepigen.c:1745 pex64igen.c:1745
+#: peXXigen.c:1745
 #, c-format
 msgid "\tExport Address Table \t\t%08lx\n"
 msgstr ""
 
-#: peigen.c:1749 pepigen.c:1749 pex64igen.c:1749
+#: peXXigen.c:1749
 #, c-format
 msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n"
 msgstr ""
 
-#: peigen.c:1752 pepigen.c:1752 pex64igen.c:1752
+#: peXXigen.c:1752
 #, c-format
 msgid "Table Addresses\n"
 msgstr ""
 
-#: peigen.c:1755 pepigen.c:1755 pex64igen.c:1755
+#: peXXigen.c:1755
 #, c-format
 msgid "\tExport Address Table \t\t"
 msgstr ""
 
-#: peigen.c:1760 pepigen.c:1760 pex64igen.c:1760
+#: peXXigen.c:1760
 #, c-format
 msgid "\tName Pointer Table \t\t"
 msgstr ""
 
-#: peigen.c:1765 pepigen.c:1765 pex64igen.c:1765
+#: peXXigen.c:1765
 #, c-format
 msgid "\tOrdinal Table \t\t\t"
 msgstr ""
 
-#: peigen.c:1779 pepigen.c:1779 pex64igen.c:1779
+#: peXXigen.c:1779
 #, c-format
 msgid ""
 "\n"
 "Export Address Table -- Ordinal Base %ld\n"
 msgstr ""
 
-#: peigen.c:1788 pepigen.c:1788 pex64igen.c:1788
+#: peXXigen.c:1788
 #, c-format
 msgid "\tInvalid Export Address Table rva (0x%lx) or entry count (0x%lx)\n"
 msgstr ""
 
-#: peigen.c:1807 pepigen.c:1807 pex64igen.c:1807
+#: peXXigen.c:1807
 msgid "Forwarder RVA"
 msgstr ""
 
-#: peigen.c:1819 pepigen.c:1819 pex64igen.c:1819
+#: peXXigen.c:1819
 msgid "Export RVA"
 msgstr ""
 
-#: peigen.c:1826 pepigen.c:1826 pex64igen.c:1826
+#: peXXigen.c:1826
 #, c-format
 msgid ""
 "\n"
 "[Ordinal/Name Pointer] Table\n"
 msgstr ""
 
-#: peigen.c:1834 pepigen.c:1834 pex64igen.c:1834
+#: peXXigen.c:1834
 #, c-format
 msgid "\tInvalid Name Pointer Table rva (0x%lx) or entry count (0x%lx)\n"
 msgstr ""
 
-#: peigen.c:1841 pepigen.c:1841 pex64igen.c:1841
+#: peXXigen.c:1841
 #, c-format
 msgid "\tInvalid Ordinal Table rva (0x%lx) or entry count (0x%lx)\n"
 msgstr ""
 
-#: peigen.c:1855 pepigen.c:1855 pex64igen.c:1855
+#: peXXigen.c:1855
 #, c-format
 msgid "\t[%4ld] <corrupt offset: %lx>\n"
 msgstr ""
 
-#: peigen.c:1909 peigen.c:2106 pepigen.c:1909 pepigen.c:2106 pex64igen.c:1909
-#: pex64igen.c:2106
+#: peXXigen.c:1909 peXXigen.c:2106
 #, c-format
 msgid "warning, .pdata section size (%ld) is not a multiple of %d\n"
 msgstr ""
 
-#: peigen.c:1913 peigen.c:2110 pepigen.c:1913 pepigen.c:2110 pex64igen.c:1913
-#: pex64igen.c:2110
+#: peXXigen.c:1913 peXXigen.c:2110
 #, c-format
 msgid ""
 "\n"
 "The Function Table (interpreted .pdata section contents)\n"
 msgstr ""
 
-#: peigen.c:1916 pepigen.c:1916 pex64igen.c:1916
+#: peXXigen.c:1916
 #, c-format
 msgid " vma:\t\t\tBegin Address    End Address      Unwind Info\n"
 msgstr ""
 
-#: peigen.c:1918 pepigen.c:1918 pex64igen.c:1918
+#: peXXigen.c:1918
 #, c-format
 msgid ""
 " vma:\t\tBegin    End      EH       EH       PrologEnd  Exception\n"
 "     \t\tAddress  Address  Handler  Data     Address    Mask\n"
 msgstr ""
 
-#: peigen.c:1931 pepigen.c:1931 pex64igen.c:1931
+#: peXXigen.c:1931
 #, c-format
 msgid "Virtual size of .pdata section (%ld) larger than real size (%ld)\n"
 msgstr ""
 
-#: peigen.c:2001 pepigen.c:2001 pex64igen.c:2001
+#: peXXigen.c:2001
 #, c-format
 msgid " Register save millicode"
 msgstr ""
 
-#: peigen.c:2004 pepigen.c:2004 pex64igen.c:2004
+#: peXXigen.c:2004
 #, c-format
 msgid " Register restore millicode"
 msgstr ""
 
-#: peigen.c:2007 pepigen.c:2007 pex64igen.c:2007
+#: peXXigen.c:2007
 #, c-format
 msgid " Glue code sequence"
 msgstr ""
 
-#: peigen.c:2112 pepigen.c:2112 pex64igen.c:2112
+#: peXXigen.c:2112
 #, c-format
 msgid ""
 " vma:\t\tBegin    Prolog   Function Flags    Exception EH\n"
 "     \t\tAddress  Length   Length   32b exc  Handler   Data\n"
 msgstr ""
 
-#: peigen.c:2234 pepigen.c:2234 pex64igen.c:2234
+#: peXXigen.c:2234
 #, c-format
 msgid ""
 "\n"
@@ -8754,86 +8959,86 @@ msgid ""
 "PE File Base Relocations (interpreted .reloc section contents)\n"
 msgstr ""
 
-#: peigen.c:2264 pepigen.c:2264 pex64igen.c:2264
+#: peXXigen.c:2264
 #, c-format
 msgid ""
 "\n"
 "Virtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld\n"
 msgstr ""
 
-#: peigen.c:2282 pepigen.c:2282 pex64igen.c:2282
+#: peXXigen.c:2282
 #, c-format
 msgid "\treloc %4d offset %4x [%4lx] %s"
 msgstr ""
 
-#: peigen.c:2343 pepigen.c:2343 pex64igen.c:2343
+#: peXXigen.c:2343
 #, c-format
 msgid "%03x %*.s Entry: "
 msgstr ""
 
-#: peigen.c:2367 pepigen.c:2367 pex64igen.c:2367
+#: peXXigen.c:2367
 #, c-format
 msgid "name: [val: %08lx len %d]: "
 msgstr ""
 
-#: peigen.c:2387 pepigen.c:2387 pex64igen.c:2387
+#: peXXigen.c:2387
 #, c-format
 msgid "<corrupt string length: %#x>\n"
 msgstr ""
 
-#: peigen.c:2397 pepigen.c:2397 pex64igen.c:2397
+#: peXXigen.c:2397
 #, c-format
 msgid "<corrupt string offset: %#lx>\n"
 msgstr ""
 
-#: peigen.c:2402 pepigen.c:2402 pex64igen.c:2402
+#: peXXigen.c:2402
 #, c-format
 msgid "ID: %#08lx"
 msgstr ""
 
-#: peigen.c:2405 pepigen.c:2405 pex64igen.c:2405
+#: peXXigen.c:2405
 #, c-format
 msgid ", Value: %#08lx\n"
 msgstr ""
 
-#: peigen.c:2427 pepigen.c:2427 pex64igen.c:2427
+#: peXXigen.c:2427
 #, c-format
 msgid "%03x %*.s  Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d\n"
 msgstr ""
 
-#: peigen.c:2469 pepigen.c:2469 pex64igen.c:2469
+#: peXXigen.c:2469
 #, c-format
 msgid "<unknown directory type: %d>\n"
 msgstr ""
 
-#: peigen.c:2477 pepigen.c:2477 pex64igen.c:2477
+#: peXXigen.c:2477
 #, c-format
 msgid " Table: Char: %d, Time: %08lx, Ver: %d/%d, Num Names: %d, IDs: %d\n"
 msgstr ""
 
-#: peigen.c:2566 pepigen.c:2566 pex64igen.c:2566
+#: peXXigen.c:2566
 #, c-format
 msgid "Corrupt .rsrc section detected!\n"
 msgstr ""
 
-#: peigen.c:2590 pepigen.c:2590 pex64igen.c:2590
+#: peXXigen.c:2590
 #, c-format
 msgid ""
 "\n"
 "WARNING: Extra data in .rsrc section - it will be ignored by Windows:\n"
 msgstr ""
 
-#: peigen.c:2596 pepigen.c:2596 pex64igen.c:2596
+#: peXXigen.c:2596
 #, c-format
 msgid " String table starts at offset: %#03x\n"
 msgstr ""
 
-#: peigen.c:2599 pepigen.c:2599 pex64igen.c:2599
+#: peXXigen.c:2599
 #, c-format
 msgid " Resources start at offset: %#03x\n"
 msgstr ""
 
-#: peigen.c:2651 pepigen.c:2651 pex64igen.c:2651
+#: peXXigen.c:2656
 #, c-format
 msgid ""
 "\n"
@@ -8841,14 +9046,14 @@ msgid ""
 "found\n"
 msgstr ""
 
-#: peigen.c:2657 pepigen.c:2657 pex64igen.c:2657
+#: peXXigen.c:2662
 #, c-format
 msgid ""
 "\n"
 "There is a debug directory in %s, but that section has no contents\n"
 msgstr ""
 
-#: peigen.c:2664 pepigen.c:2664 pex64igen.c:2664
+#: peXXigen.c:2669
 #, c-format
 msgid ""
 "\n"
@@ -8856,7 +9061,7 @@ msgid ""
 "small\n"
 msgstr ""
 
-#: peigen.c:2669 pepigen.c:2669 pex64igen.c:2669
+#: peXXigen.c:2674
 #, c-format
 msgid ""
 "\n"
@@ -8864,23 +9069,23 @@ msgid ""
 "\n"
 msgstr ""
 
-#: peigen.c:2676 pepigen.c:2676 pex64igen.c:2676
+#: peXXigen.c:2681
 #, c-format
 msgid ""
 "The debug data size field in the data directory is too big for the section"
 msgstr ""
 
-#: peigen.c:2681 pepigen.c:2681 pex64igen.c:2681
+#: peXXigen.c:2686
 #, c-format
 msgid "Type                Size     Rva      Offset\n"
 msgstr ""
 
-#: peigen.c:2729 pepigen.c:2729 pex64igen.c:2729
+#: peXXigen.c:2734
 #, c-format
 msgid "(format %c%c%c%c signature %s age %ld)\n"
 msgstr ""
 
-#: peigen.c:2737 pepigen.c:2737 pex64igen.c:2737
+#: peXXigen.c:2744
 #, c-format
 msgid ""
 "The debug directory size is not a multiple of the debug directory entry "
@@ -8890,99 +9095,99 @@ msgstr ""
 #. The MS dumpbin program reportedly ands with 0xff0f before
 #. printing the characteristics field.  Not sure why.  No reason to
 #. emulate it here.
-#: peigen.c:2757 pepigen.c:2757 pex64igen.c:2757
+#: peXXigen.c:2829
 #, c-format
 msgid ""
 "\n"
 "Characteristics 0x%x\n"
 msgstr ""
 
-#: peigen.c:2994 pepigen.c:2994 pex64igen.c:2994
+#: peXXigen.c:3076
 #, c-format
 msgid ""
 "%pB: Data Directory size (%lx) exceeds space left in section (%<PRIx64>)"
 msgstr ""
 
-#: peigen.c:3026 pepigen.c:3026 pex64igen.c:3026
+#: peXXigen.c:3108
 msgid "failed to update file offsets in debug directory"
 msgstr ""
 
-#: peigen.c:3034 pepigen.c:3034 pex64igen.c:3034
+#: peXXigen.c:3116
 #, c-format
 msgid "%pB: failed to read debug data section"
 msgstr ""
 
-#: peigen.c:3850 pepigen.c:3850 pex64igen.c:3850
+#: peXXigen.c:3932
 #, c-format
 msgid ".rsrc merge failure: duplicate string resource: %d"
 msgstr ""
 
-#: peigen.c:3985 pepigen.c:3985 pex64igen.c:3985
+#: peXXigen.c:4067
 msgid ".rsrc merge failure: multiple non-default manifests"
 msgstr ""
 
-#: peigen.c:4003 pepigen.c:4003 pex64igen.c:4003
+#: peXXigen.c:4085
 msgid ".rsrc merge failure: a directory matches a leaf"
 msgstr ""
 
-#: peigen.c:4045 pepigen.c:4045 pex64igen.c:4045
+#: peXXigen.c:4127
 msgid ".rsrc merge failure: duplicate leaf"
 msgstr ""
 
-#: peigen.c:4047 pepigen.c:4047 pex64igen.c:4047
+#: peXXigen.c:4129
 #, c-format
 msgid ".rsrc merge failure: duplicate leaf: %s"
 msgstr ""
 
-#: peigen.c:4113 pepigen.c:4113 pex64igen.c:4113
+#: peXXigen.c:4195
 msgid ".rsrc merge failure: dirs with differing characteristics"
 msgstr ""
 
-#: peigen.c:4120 pepigen.c:4120 pex64igen.c:4120
+#: peXXigen.c:4202
 msgid ".rsrc merge failure: differing directory versions"
 msgstr ""
 
 #. Corrupted .rsrc section - cannot merge.
-#: peigen.c:4237 pepigen.c:4237 pex64igen.c:4237
+#: peXXigen.c:4319
 #, c-format
 msgid "%pB: .rsrc merge failure: corrupt .rsrc section"
 msgstr ""
 
-#: peigen.c:4245 pepigen.c:4245 pex64igen.c:4245
+#: peXXigen.c:4327
 #, c-format
 msgid "%pB: .rsrc merge failure: unexpected .rsrc size"
 msgstr ""
 
-#: peigen.c:4384 pepigen.c:4384 pex64igen.c:4384
+#: peXXigen.c:4466
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[1] because .idata$2 is missing"
 msgstr ""
 
-#: peigen.c:4404 pepigen.c:4404 pex64igen.c:4404
+#: peXXigen.c:4486
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[1] because .idata$4 is missing"
 msgstr ""
 
-#: peigen.c:4425 pepigen.c:4425 pex64igen.c:4425
+#: peXXigen.c:4507
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[12] because .idata$5 is missing"
 msgstr ""
 
-#: peigen.c:4445 pepigen.c:4445 pex64igen.c:4445
+#: peXXigen.c:4527
 #, c-format
 msgid ""
 "%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because ."
 "idata$6 is missing"
 msgstr ""
 
-#: peigen.c:4487 pepigen.c:4487 pex64igen.c:4487
+#: peXXigen.c:4569
 #, c-format
 msgid ""
 "%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because ."
 "idata$6 is missing"
 msgstr ""
 
-#: peigen.c:4512 pepigen.c:4512 pex64igen.c:4512
+#: peXXigen.c:4594
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[9] because __tls_used is missing"
 msgstr ""
index 76de37e449a6dd27b6cd63cd2a8b2f79482adc78..2b903512bf56381e0560ba5c1444757e278d50df 100644 (file)
@@ -1,3 +1,7 @@
+2020-05-20  Nelson Chu  <nelson.chu@sifive.com>
+
+       * dwarf.c: Updated since DECLARE_CSR is changed.
+
 2020-05-19  H.J. Lu  <hjl.tools@gmail.com>
 
        PR binutils/25809
index 7b5f7af8a1e2f0bd19a4a32f3fe954e45221c873..598f8562abf2bee8b8a9240ec3cf118f6ba12fc2 100644 (file)
@@ -7409,7 +7409,8 @@ regname_internal_riscv (unsigned int regno)
         document.  */
       switch (regno)
        {
-#define DECLARE_CSR(NAME,VALUE,CLASS) case VALUE + 4096: name = #NAME; break;
+#define DECLARE_CSR(NAME,VALUE,CLASS,DEFINE_VER,ABORT_VER) \
+  case VALUE + 4096: name = #NAME; break;
 #include "opcode/riscv-opc.h"
 #undef DECLARE_CSR
 
index 6b159fe357186207d5dae18446b647167a97af12..05ba3e9ce6dafba8f47f4f5b965d491d93f376a9 100644 (file)
@@ -1,3 +1,166 @@
+2020-05-20  Nelson Chu  <nelson.chu@sifive.com>
+
+       * testsuite/gas/riscv/priv-reg-fail-read-only-01.s: Updated.
+       * config/tc-riscv.c (default_arch_with_ext, default_isa_spec):
+       Static variables which are used to set the ISA extensions. You can
+       use -march (or ELF build attributes) and -misa-spec to set them,
+       respectively.
+       (ext_version_hash): The hash table used to handle the extensions
+       with versions.
+       (init_ext_version_hash): Initialize the ext_version_hash according
+       to riscv_ext_version_table.
+       (riscv_get_default_ext_version): The callback function of
+       riscv_parse_subset_t.  According to the choosed ISA spec,
+       get the default version for the specific extension.
+       (riscv_set_arch): Set the callback function.
+       (enum options, struct option md_longopts): Add new option -misa-spec.
+       (md_parse_option): Do not call riscv_set_arch for -march.  We will
+       call it later in riscv_after_parse_args.  Call riscv_get_isa_spec_class
+       to set default_isa_spec class.
+       (riscv_after_parse_args): Call init_ext_version_hash to initialize the
+       ext_version_hash, and then call riscv_set_arch to set the architecture
+       with versions according to default_arch_with_ext.
+       * testsuite/gas/riscv/attribute-02.d: Set 0p0 as default version for
+       x extensions.
+       * testsuite/gas/riscv/attribute-03.d: Likewise.
+       * testsuite/gas/riscv/attribute-09.d: New testcase.  For i-ext, we
+       already set it's version to 2p1 by march, so no need to use the default
+       2p2 version.  For m-ext, we do not set the version by -march and ELF arch
+       attribute, so set the default 2p0 to it.  For zicsr, it is not defined in
+       ISA spec 2p2, so set 0p0 to it.
+       * testsuite/gas/riscv/attribute-10.d: New testcase.  The version of
+       zicsr is 2p0 according to ISA spec 20191213.
+       * config/tc-riscv.c (DEFAULT_RISCV_ARCH_WITH_EXT)
+       (DEFAULT_RISCV_ISA_SPEC): Default configure option settings.
+       You can set them by configure options --with-arch and
+       --with-isa-spec, respectively.
+       (riscv_set_default_isa_spec): New function used to set the
+       default ISA spec.
+       (md_parse_option): Call riscv_set_default_isa_spec rather than
+       call riscv_get_isa_spec_class directly.
+       (riscv_after_parse_args): If the -isa-spec is not set, then we
+       set the default ISA spec according to DEFAULT_RISCV_ISA_SPEC by
+       calling riscv_set_default_isa_spec.
+       * testsuite/gas/riscv/attribute-01.d: Add -misa-spec=2.2, since
+       the --with-isa-spec may be set to different ISA spec.
+       * testsuite/gas/riscv/attribute-02.d: Likewise.
+       * testsuite/gas/riscv/attribute-03.d: Likewise.
+       * testsuite/gas/riscv/attribute-04.d: Likewise.
+       * testsuite/gas/riscv/attribute-05.d: Likewise.
+       * testsuite/gas/riscv/attribute-06.d: Likewise.
+       * testsuite/gas/riscv/attribute-07.d: Likewise.
+       * configure.ac: Add configure options, --with-arch and
+       --with-isa-spec.
+       * configure: Regenerated.
+       * config.in: Regenerated.
+       * config/tc-riscv.c (default_priv_spec): Static variable which is
+       used to check if the CSR is valid for the chosen privilege spec. You
+       can use -mpriv-spec to set it.
+       (enum reg_class): We now get the CSR address from csr_extra_hash rather
+       than reg_names_hash.  Therefore, move RCLASS_CSR behind RCLASS_MAX.
+       (riscv_init_csr_hashes): Only need to initialize one hash table
+       csr_extra_hash.
+       (riscv_csr_class_check): Change the return type to void.  Don't check
+       the ISA dependency if -mcsr-check isn't set.
+       (riscv_csr_version_check): New function.  Check and find the CSR address
+       from csr_extra_hash, according to default_priv_spec.  Report warning
+       for the invalid CSR if -mcsr-check is set.
+       (reg_csr_lookup_internal): Updated.
+       (reg_lookup_internal): Likewise.
+       (md_begin): Updated since DECLARE_CSR and DECLARE_CSR_ALIAS are changed.
+       (enum options, struct option md_longopts): Add new GAS option -mpriv-spec.
+       (md_parse_option): Call riscv_set_default_priv_version to set
+       default_priv_spec.
+       (riscv_after_parse_args): If -mpriv-spec isn't set, then set the default
+       privilege spec to the newest one.
+       (enum riscv_csr_class, struct riscv_csr_extra): Move them to
+       include/opcode/riscv.h.
+       * testsuite/gas/riscv/priv-reg-fail-fext.d: This test case just want
+       to check the ISA dependency for CSR, so fix the spec version by adding
+       -mpriv-spec=1.11.
+       * testsuite/gas/riscv/priv-reg-fail-fext.l: Likewise.  There are some
+       version warnings for the test case.
+       * gas/testsuite/gas/riscv/priv-reg-fail-read-only-01.d: Likewise.
+       * gas/testsuite/gas/riscv/priv-reg-fail-read-only-01.l: Likewise.
+       * gas/testsuite/gas/riscv/priv-reg-fail-read-only-02.d: Likewise.
+       * gas/testsuite/gas/riscv/priv-reg-fail-rv32-only.d: Likewise.
+       * gas/testsuite/gas/riscv/priv-reg-fail-rv32-only.l: Likewise.
+       * gas/testsuite/gas/riscv/priv-reg-fail-version-1p9.d: New test case.
+       Check whether the CSR is valid when privilege version 1.9 is choosed.
+       * gas/testsuite/gas/riscv/priv-reg-fail-version-1p9.l: Likewise.
+       * gas/testsuite/gas/riscv/priv-reg-fail-version-1p9p1.d: New test case.
+       Check whether the CSR is valid when privilege version 1.9.1 is choosed.
+       * gas/testsuite/gas/riscv/priv-reg-fail-version-1p9p1.l: Likewise.
+       * gas/testsuite/gas/riscv/priv-reg-fail-version-1p10.d: New test case.
+       Check whether the CSR is valid when privilege version 1.10 is choosed.
+       * gas/testsuite/gas/riscv/priv-reg-fail-version-1p10.l: Likewise.
+       * gas/testsuite/gas/riscv/priv-reg-fail-version-1p11.d: New test case.
+       Check whether the CSR is valid when privilege version 1.11 is choosed.
+       * gas/testsuite/gas/riscv/priv-reg-fail-version-1p11.l: Likewise.
+       * config/tc-riscv.c (DEFAULT_RISCV_ISA_SPEC): Default configure option
+       setting.  You can set it by configure option --with-priv-spec.
+       (riscv_set_default_priv_spec): New function used to set the default
+       privilege spec.
+       (md_parse_option): Call riscv_set_default_priv_spec rather than
+       call riscv_get_priv_spec_class directly.
+       (riscv_after_parse_args): If -mpriv-spec isn't set, then we set the
+       default privilege spec according to DEFAULT_RISCV_PRIV_SPEC by
+       calling riscv_set_default_priv_spec.
+       * testsuite/gas/riscv/csr-dw-regnums.d: Add -mpriv-spec=1.11, since
+       the --with-priv-spec may be set to different privilege spec.
+       * testsuite/gas/riscv/priv-reg.d: Likewise.
+       * configure.ac: Add configure option --with-priv-spec.
+       * configure: Regenerated.
+       * config.in: Regenerated.
+       * config/tc-riscv.c (explicit_attr): Rename explicit_arch_attr to
+       explicit_attr.  Set it to TRUE if any ELF attribute is found.
+       (riscv_set_default_priv_spec): Try to set the default_priv_spec if
+       the priv attributes are set.
+       (md_assemble): Set the default_priv_spec according to the priv
+       attributes when we start to assemble instruction.
+       (riscv_write_out_attrs): Rename riscv_write_out_arch_attr to
+       riscv_write_out_attrs.  Update the arch and priv attributes.  If we
+       don't set the corresponding ELF attributes, then try to output the
+       default ones.
+       (riscv_set_public_attributes): If any ELF attribute or -march-attr
+       options is set (explicit_attr is TRUE), then call riscv_write_out_attrs
+       to update the arch and priv attributes.
+       (s_riscv_attribute): Make sure all arch and priv attributes are set
+       before any instruction.
+       * testsuite/gas/riscv/attribute-01.d: Update the priv attributes if any
+       ELF attribute or -march-attr is set.  If the priv attributes are not
+       set, then try to update them by the default setting (-mpriv-spec or
+       --with-priv-spec).
+       * testsuite/gas/riscv/attribute-02.d: Likewise.
+       * testsuite/gas/riscv/attribute-03.d: Likewise.
+       * testsuite/gas/riscv/attribute-04.d: Likewise.
+       * testsuite/gas/riscv/attribute-06.d: Likewise.
+       * testsuite/gas/riscv/attribute-07.d: Likewise.
+       * testsuite/gas/riscv/attribute-08.d: Likewise.
+       * testsuite/gas/riscv/attribute-09.d: Likewise.
+       * testsuite/gas/riscv/attribute-10.d: Likewise.
+       * testsuite/gas/riscv/attribute-unknown.d: Likewise.
+       * testsuite/gas/riscv/attribute-05.d: Likewise.  Also, the priv spec
+       set by priv attributes must be supported.
+       * testsuite/gas/riscv/attribute-05.s: Likewise.
+       * testsuite/gas/riscv/priv-reg-fail-version-1p9.d: Likewise.  Updated
+       priv attributes according to the -mpriv-spec option.
+       * testsuite/gas/riscv/priv-reg-fail-version-1p9p1.d: Likewise.
+       * testsuite/gas/riscv/priv-reg-fail-version-1p10.d: Likewise.
+       * testsuite/gas/riscv/priv-reg-fail-version-1p11.d: Likewise.
+       * testsuite/gas/riscv/priv-reg.d: Removed.
+       * testsuite/gas/riscv/priv-reg-version-1p9.d: New test case.  Dump the
+       CSR according to the priv spec 1.9.
+       * testsuite/gas/riscv/priv-reg-version-1p9p1.d: New test case.  Dump the
+       CSR according to the priv spec 1.9.1.
+       * testsuite/gas/riscv/priv-reg-version-1p10.d: New test case.  Dump the
+       CSR according to the priv spec 1.10.
+       * testsuite/gas/riscv/priv-reg-version-1p11.d: New test case.  Dump the
+       CSR according to the priv spec 1.11.
+       * config/tc-riscv.c (md_show_usage): Add descriptions about
+       the new GAS options.
+       * doc/c-riscv.texi: Likewise.
+
 2020-05-19  Peter Bergner  <bergner@linux.ibm.com>
 
        * testsuite/gas/ppc/power9.s <dcbf, dcbfl, dcbflp>: Add tests.
index 8724eb153ae6a56ce5645025484cba15ebec3bc6..bd125047d56585d712aab9a8c85bc21f28dc1371 100644 (file)
 /* Define to 1 if you want to fix Loongson3 LLSC Errata by default. */
 #undef DEFAULT_MIPS_FIX_LOONGSON3_LLSC
 
+/* Define default value for RISC-V -march. */
+#undef DEFAULT_RISCV_ARCH_WITH_EXT
+
 /* Define to 1 if you want to generate RISC-V arch attribute by default. */
 #undef DEFAULT_RISCV_ATTR
 
+/* Define default value for RISC-V -misa-spec. */
+#undef DEFAULT_RISCV_ISA_SPEC
+
+/* Define default value for RISC-V -mpriv-spec */
+#undef DEFAULT_RISCV_PRIV_SPEC
+
 /* Define to 1 if you want to generate GNU x86 used ISA and feature properties
    by default. */
 #undef DEFAULT_X86_USED_NOTE
index 168561e7b562e2a285dc2d812bf7b71a515628d2..04df0884f372fc9f8bd7b3c286a9777c9a4e8474 100644 (file)
@@ -63,7 +63,30 @@ struct riscv_cl_insn
 #define DEFAULT_RISCV_ATTR 0
 #endif
 
+/* Let riscv_after_parse_args set the default value according to xlen.  */
+
+#ifndef DEFAULT_RISCV_ARCH_WITH_EXT
+#define DEFAULT_RISCV_ARCH_WITH_EXT NULL
+#endif
+
+/* The default ISA spec is set to 2.2 rather than the lastest version.
+   The reason is that compiler generates the ISA string with fixed 2p0
+   verisons only for the RISCV ELF architecture attributes, but not for
+   the -march option.  Therefore, we should update the compiler or linker
+   to resolve this problem.  */
+
+#ifndef DEFAULT_RISCV_ISA_SPEC
+#define DEFAULT_RISCV_ISA_SPEC "2.2"
+#endif
+
+#ifndef DEFAULT_RISCV_PRIV_SPEC
+#define DEFAULT_RISCV_PRIV_SPEC "1.11"
+#endif
+
 static const char default_arch[] = DEFAULT_ARCH;
+static const char *default_arch_with_ext = DEFAULT_RISCV_ARCH_WITH_EXT;
+static enum riscv_isa_spec_class default_isa_spec = ISA_SPEC_CLASS_NONE;
+static enum riscv_priv_spec_class default_priv_spec = PRIV_SPEC_CLASS_NONE;
 
 static unsigned xlen = 0; /* width of an x-register */
 static unsigned abi_xlen = 0; /* width of a pointer in the ABI */
@@ -74,6 +97,95 @@ static bfd_boolean rve_abi = FALSE;
 
 static unsigned elf_flags = 0;
 
+/* Set the default_isa_spec.  Return 0 if the input spec string isn't
+   supported.  Otherwise, return 1.  */
+
+static int
+riscv_set_default_isa_spec (const char *s)
+{
+  enum riscv_isa_spec_class class;
+  if (!riscv_get_isa_spec_class (s, &class))
+    {
+      as_bad ("Unknown default ISA spec `%s' set by "
+             "-misa-spec or --with-isa-spec", s);
+      return 0;
+    }
+  else
+    default_isa_spec = class;
+  return 1;
+}
+
+/* Set the default_priv_spec, assembler will find the suitable CSR address
+   according to default_priv_spec.  We will try to check priv attributes if
+   the input string is NULL.  Return 0 if the input priv spec string isn't
+   supported.  Otherwise, return 1.  */
+
+static int
+riscv_set_default_priv_spec (const char *s)
+{
+  enum riscv_priv_spec_class class;
+  unsigned major, minor, revision;
+  obj_attribute *attr;
+  size_t buf_size;
+  char *buf;
+
+  /* Find the corresponding priv spec class.  */
+  if (riscv_get_priv_spec_class (s, &class))
+    {
+      default_priv_spec = class;
+      return 1;
+    }
+
+  if (s != NULL)
+    {
+      as_bad (_("Unknown default privilege spec `%s' set by "
+               "-mpriv-spec or --with-priv-spec"), s);
+      return 0;
+    }
+
+  /* Try to set the default_priv_spec according to the priv attributes.  */
+  attr = elf_known_obj_attributes_proc (stdoutput);
+  major = (unsigned) attr[Tag_RISCV_priv_spec].i;
+  minor = (unsigned) attr[Tag_RISCV_priv_spec_minor].i;
+  revision = (unsigned) attr[Tag_RISCV_priv_spec_revision].i;
+
+  /* The priv attributes setting 0.0.0 is meaningless.  We should have set
+     the default_priv_spec by md_parse_option and riscv_after_parse_args,
+     so just skip the following setting.  */
+  if (major == 0 && minor == 0 && revision == 0)
+    return 1;
+
+  buf_size = riscv_estimate_digit (major)
+            + 1 /* '.' */
+            + riscv_estimate_digit (minor)
+            + 1; /* string terminator */
+  if (revision != 0)
+    {
+      buf_size += 1 /* '.' */
+                 + riscv_estimate_digit (revision);
+      buf = xmalloc (buf_size);
+      snprintf (buf, buf_size, "%d.%d.%d", major, minor, revision);
+    }
+  else
+    {
+      buf = xmalloc (buf_size);
+      snprintf (buf, buf_size, "%d.%d", major, minor);
+    }
+
+  if (riscv_get_priv_spec_class (buf, &class))
+    {
+      default_priv_spec = class;
+      free (buf);
+      return 1;
+    }
+
+  /* Still can not find the priv spec class.  */
+  as_bad (_("Unknown default privilege spec `%d.%d.%d' set by  "
+           "privilege attributes"),  major, minor, revision);
+  free (buf);
+  return 0;
+}
+
 /* This is the set of options which the .option pseudo-op may modify.  */
 
 struct riscv_set_options
@@ -147,6 +259,67 @@ riscv_multi_subset_supports (enum riscv_insn_class insn_class)
     }
 }
 
+/* Handle of the extension with version hash table.  */
+static struct hash_control *ext_version_hash = NULL;
+
+static struct hash_control *
+init_ext_version_hash (const struct riscv_ext_version *table)
+{
+  int i = 0;
+  struct hash_control *hash = hash_new ();
+
+  while (table[i].name)
+    {
+      const char *name = table[i].name;
+      const char *hash_error =
+       hash_insert (hash, name, (void *) &table[i]);
+
+      if (hash_error != NULL)
+       {
+         fprintf (stderr, _("internal error: can't hash `%s': %s\n"),
+                  table[i].name, hash_error);
+         /* Probably a memory allocation problem?  Give up now.  */
+         as_fatal (_("Broken assembler.  No assembly attempted."));
+         return NULL;
+       }
+
+      i++;
+      while (table[i].name
+            && strcmp (table[i].name, name) == 0)
+       i++;
+    }
+
+  return hash;
+}
+
+static void
+riscv_get_default_ext_version (const char *name,
+                              unsigned int *major_version,
+                              unsigned int *minor_version)
+{
+  struct riscv_ext_version *ext;
+
+  *major_version = 0;
+  *minor_version = 0;
+
+  if (name == NULL || default_isa_spec == ISA_SPEC_CLASS_NONE)
+    return;
+
+  ext = (struct riscv_ext_version *) hash_find (ext_version_hash, name);
+  while (ext
+        && ext->name
+        && strcmp (ext->name, name) == 0)
+    {
+      if (ext->isa_spec_class == default_isa_spec)
+       {
+         *major_version = ext->major_version;
+         *minor_version = ext->minor_version;
+         return;
+       }
+      ext++;
+    }
+}
+
 /* Set which ISA and extensions are available.  */
 
 static void
@@ -156,6 +329,10 @@ riscv_set_arch (const char *s)
   rps.subset_list = &riscv_subsets;
   rps.error_handler = as_fatal;
   rps.xlen = &xlen;
+  rps.get_default_version = riscv_get_default_ext_version;
+
+  if (s == NULL)
+    return;
 
   riscv_release_subset_list (&riscv_subsets);
   riscv_parse_subset (&rps, s);
@@ -194,8 +371,8 @@ const char FLT_CHARS[] = "rRsSfFdDxXpP";
 /* Indicate we are already assemble any instructions or not.  */
 static bfd_boolean start_assemble = FALSE;
 
-/* Indicate arch attribute is explictly set.  */
-static bfd_boolean explicit_arch_attr = FALSE;
+/* Indicate ELF attributes are explictly set.  */
+static bfd_boolean explicit_attr = FALSE;
 
 /* Macros for encoding relaxation state for RVC branches and far jumps.  */
 #define RELAX_BRANCH_ENCODE(uncond, rvc, length)       \
@@ -452,8 +629,9 @@ enum reg_class
 {
   RCLASS_GPR,
   RCLASS_FPR,
-  RCLASS_CSR,
-  RCLASS_MAX
+  RCLASS_MAX,
+
+  RCLASS_CSR
 };
 
 static struct hash_control *reg_names_hash = NULL;
@@ -483,102 +661,165 @@ hash_reg_names (enum reg_class class, const char * const names[], unsigned n)
     hash_reg_name (class, names[i], i);
 }
 
-/* All RISC-V CSRs belong to one of these classes.  */
-
-enum riscv_csr_class
-{
-  CSR_CLASS_NONE,
-
-  CSR_CLASS_I,
-  CSR_CLASS_I_32,      /* rv32 only */
-  CSR_CLASS_F,         /* f-ext only */
-};
-
-/* This structure holds all restricted conditions for a CSR.  */
+/* Init hash table csr_extra_hash to handle CSR.  */
+static void
+riscv_init_csr_hash (const char *name,
+                    unsigned address,
+                    enum riscv_csr_class class,
+                    enum riscv_priv_spec_class define_version,
+                    enum riscv_priv_spec_class abort_version)
+{
+  struct riscv_csr_extra *entry, *pre_entry;
+  const char *hash_error = NULL;
+  bfd_boolean need_enrty = TRUE;
+
+  pre_entry = NULL;
+  entry = (struct riscv_csr_extra *) hash_find (csr_extra_hash, name);
+  while (need_enrty && entry != NULL)
+    {
+      if (entry->csr_class == class
+         && entry->address == address
+         && entry->define_version == define_version
+         && entry->abort_version == abort_version)
+       need_enrty = FALSE;
+      pre_entry = entry;
+      entry = entry->next;
+    }
+  /* Duplicate setting for the CSR, just return and do nothing.  */
+  if (!need_enrty)
+    return;
 
-struct riscv_csr_extra
-{
-  /* Class to which this CSR belongs.  Used to decide whether or
-     not this CSR is legal in the current -march context.  */
-  enum riscv_csr_class csr_class;
-};
+  entry = XNEW (struct riscv_csr_extra);
+  entry->csr_class = class;
+  entry->address = address;
+  entry->define_version = define_version;
+  entry->abort_version = abort_version;
+
+  /* If the CSR hasn't been inserted in the hash table, then insert it.
+     Otherwise, attach the extra information to the entry which is already
+     in the hash table.  */
+  if (pre_entry == NULL)
+    {
+      hash_error = hash_insert (csr_extra_hash, name, (void *) entry);
+      if (hash_error != NULL)
+       {
+         fprintf (stderr, _("internal error: can't hash `%s': %s\n"),
+                  name, hash_error);
+         /* Probably a memory allocation problem?  Give up now.  */
+         as_fatal (_("Broken assembler.  No assembly attempted."));
+       }
+    }
+  else
+    pre_entry->next = entry;
+}
 
-/* Init two hashes, csr_extra_hash and reg_names_hash, for CSR.  */
+/* Check wether the CSR is valid according to the ISA.  */
 
 static void
-riscv_init_csr_hashes (const char *name,
-                      unsigned address,
-                      enum riscv_csr_class class)
+riscv_csr_class_check (const char *s,
+                      enum riscv_csr_class csr_class)
 {
-  struct riscv_csr_extra *entry = XNEW (struct riscv_csr_extra);
-  entry->csr_class = class;
+  bfd_boolean result = TRUE;
+
+  /* Don't check the ISA dependency when -mcsr-check isn't set.  */
+  if (!riscv_opts.csr_check)
+    return;
 
-  const char *hash_error =
-    hash_insert (csr_extra_hash, name, (void *) entry);
-  if (hash_error != NULL)
+  switch (csr_class)
     {
-      fprintf (stderr, _("internal error: can't hash `%s': %s\n"),
-                     name, hash_error);
-      /* Probably a memory allocation problem?  Give up now.  */
-       as_fatal (_("Broken assembler.  No assembly attempted."));
+    case CSR_CLASS_I:
+      result = riscv_subset_supports ("i");
+      break;
+    case CSR_CLASS_F:
+      result = riscv_subset_supports ("f");
+      break;
+    case CSR_CLASS_I_32:
+      result = (xlen == 32 && riscv_subset_supports ("i"));
+      break;
+    default:
+      as_bad (_("internal: bad RISC-V CSR class (0x%x)"), csr_class);
     }
 
-  hash_reg_name (RCLASS_CSR, name, address);
+  if (!result)
+    as_warn (_("Invalid CSR `%s' for the current ISA"), s);
 }
 
-/* Check wether the CSR is valid according to the ISA.  */
+/* Check and find the CSR address according to the privilege spec version.  */
 
-static bfd_boolean
-riscv_csr_class_check (enum riscv_csr_class csr_class)
+static void
+riscv_csr_version_check (const char *csr_name,
+                        struct riscv_csr_extra **entryP)
 {
-  switch (csr_class)
+  struct riscv_csr_extra *entry = *entryP;
+
+  while (entry != NULL)
     {
-    case CSR_CLASS_I: return riscv_subset_supports ("i");
-    case CSR_CLASS_F: return riscv_subset_supports ("f");
-    case CSR_CLASS_I_32:
-      return (xlen == 32 && riscv_subset_supports ("i"));
+      if (default_priv_spec >= entry->define_version
+         && default_priv_spec < entry->abort_version)
+       {
+         /* Find the suitable CSR according to the specific version.  */
+         *entryP = entry;
+         return;
+       }
+      entry = entry->next;
+    }
 
-    default:
-      return FALSE;
+  /* We can not find the suitable CSR address according to the privilege
+     version.  Therefore, we use the last defined value.  Report the warning
+     only when the -mcsr-check is set.  Enable the -mcsr-check is recommended,
+     otherwise, you may get the unexpected CSR address.  */
+  if (riscv_opts.csr_check)
+    {
+      const char *priv_name = riscv_get_priv_spec_name (default_priv_spec);
+
+      if (priv_name != NULL)
+       as_warn (_("Invalid CSR `%s' for the privilege spec `%s'"),
+                csr_name, priv_name);
     }
 }
 
-/* If the CSR is defined, then we call `riscv_csr_class_check` to do the
-   further checking.  Return FALSE if the CSR is not defined.  Otherwise,
-   return TRUE.  */
+/* Once the CSR is defined, including the old privilege spec, then we call
+   riscv_csr_class_check and riscv_csr_version_check to do the further checking
+   and get the corresponding address.  Return -1 if the CSR is never been
+   defined.  Otherwise, return the address.  */
 
-static bfd_boolean
+static unsigned int
 reg_csr_lookup_internal (const char *s)
 {
   struct riscv_csr_extra *r =
     (struct riscv_csr_extra *) hash_find (csr_extra_hash, s);
 
   if (r == NULL)
-    return FALSE;
+    return -1U;
 
-  /* We just report the warning when the CSR is invalid.  */
-  if (!riscv_csr_class_check (r->csr_class))
-    as_warn (_("Invalid CSR `%s' for the current ISA"), s);
+  /* We just report the warning when the CSR is invalid.  "Invalid CSR" means
+     the CSR was defined, but isn't allowed for the current ISA setting or
+     the privilege spec.  If the CSR is never been defined, then assembler
+     will regard it as a "Unknown CSR" and report error.  If user use number
+     to set the CSR, but over the range (> 0xfff), then assembler will report
+     "Improper CSR" error for it.  */
+  riscv_csr_class_check (s, r->csr_class);
+  riscv_csr_version_check (s, &r);
 
-  return TRUE;
+  return r->address;
 }
 
 static unsigned int
 reg_lookup_internal (const char *s, enum reg_class class)
 {
-  void *r = hash_find (reg_names_hash, s);
+  void *r;
+
+  if (class == RCLASS_CSR)
+    return reg_csr_lookup_internal (s);
 
+  r = hash_find (reg_names_hash, s);
   if (r == NULL || DECODE_REG_CLASS (r) != class)
     return -1;
 
   if (riscv_opts.rve && class == RCLASS_GPR && DECODE_REG_NUM (r) > 15)
     return -1;
 
-  if (class == RCLASS_CSR
-      && riscv_opts.csr_check
-      && !reg_csr_lookup_internal (s))
-    return -1;
-
   return DECODE_REG_NUM (r);
 }
 
@@ -862,8 +1103,10 @@ md_begin (void)
 
   /* Create and insert CSR hash tables.  */
   csr_extra_hash = hash_new ();
-#define DECLARE_CSR(name, num, class) riscv_init_csr_hashes (#name, num, class);
-#define DECLARE_CSR_ALIAS(name, num, class) DECLARE_CSR(name, num, class);
+#define DECLARE_CSR(name, num, class, define_version, abort_version) \
+  riscv_init_csr_hash (#name, num, class, define_version, abort_version);
+#define DECLARE_CSR_ALIAS(name, num, class, define_version, abort_version) \
+  DECLARE_CSR(name, num, class, define_version, abort_version);
 #include "opcode/riscv-opc.h"
 #undef DECLARE_CSR
 
@@ -2306,9 +2549,17 @@ md_assemble (char *str)
   expressionS imm_expr;
   bfd_reloc_code_real_type imm_reloc = BFD_RELOC_UNUSED;
 
-  const char *error = riscv_ip (str, &insn, &imm_expr, &imm_reloc, op_hash);
+  /* The arch and priv attributes should be set before assembling.  */
+  if (!start_assemble)
+    {
+      start_assemble = TRUE;
 
-  start_assemble = TRUE;
+      /* Set the default_priv_spec according to the priv attributes.  */
+      if (!riscv_set_default_priv_spec (NULL))
+       return;
+    }
+
+  const char *error = riscv_ip (str, &insn, &imm_expr, &imm_reloc, op_hash);
 
   if (error)
     {
@@ -2348,6 +2599,8 @@ enum options
   OPTION_NO_ARCH_ATTR,
   OPTION_CSR_CHECK,
   OPTION_NO_CSR_CHECK,
+  OPTION_MISA_SPEC,
+  OPTION_MPRIV_SPEC,
   OPTION_END_OF_ENUM
 };
 
@@ -2364,6 +2617,8 @@ struct option md_longopts[] =
   {"mno-arch-attr", no_argument, NULL, OPTION_NO_ARCH_ATTR},
   {"mcsr-check", no_argument, NULL, OPTION_CSR_CHECK},
   {"mno-csr-check", no_argument, NULL, OPTION_NO_CSR_CHECK},
+  {"misa-spec", required_argument, NULL, OPTION_MISA_SPEC},
+  {"mpriv-spec", required_argument, NULL, OPTION_MPRIV_SPEC},
 
   {NULL, no_argument, NULL, 0}
 };
@@ -2392,7 +2647,9 @@ md_parse_option (int c, const char *arg)
   switch (c)
     {
     case OPTION_MARCH:
-      riscv_set_arch (arg);
+      /* riscv_after_parse_args will call riscv_set_arch to parse
+        the architecture.  */
+      default_arch_with_ext = arg;
       break;
 
     case OPTION_NO_PIC:
@@ -2450,6 +2707,12 @@ md_parse_option (int c, const char *arg)
       riscv_opts.csr_check = FALSE;
       break;
 
+    case OPTION_MISA_SPEC:
+      return riscv_set_default_isa_spec (arg);
+
+    case OPTION_MPRIV_SPEC:
+      return riscv_set_default_priv_spec (arg);
+
     default:
       return 0;
     }
@@ -2460,6 +2723,10 @@ md_parse_option (int c, const char *arg)
 void
 riscv_after_parse_args (void)
 {
+  /* The --with-arch is optional for now, so we have to set the xlen
+     according to the default_arch, which is set by the --targte, first.
+     Then, we use the xlen to set the default_arch_with_ext if the
+     -march and --with-arch are not set.  */
   if (xlen == 0)
     {
       if (strcmp (default_arch, "riscv32") == 0)
@@ -2469,9 +2736,19 @@ riscv_after_parse_args (void)
       else
        as_bad ("unknown default architecture `%s'", default_arch);
     }
+  if (default_arch_with_ext == NULL)
+    default_arch_with_ext = xlen == 64 ? "rv64g" : "rv32g";
+
+  /* Initialize the hash table for extensions with default version.  */
+  ext_version_hash = init_ext_version_hash (riscv_ext_version_table);
+
+  /* If the -misa-spec isn't set, then we set the default ISA spec according
+     to DEFAULT_RISCV_ISA_SPEC.  */
+  if (default_isa_spec == ISA_SPEC_CLASS_NONE)
+    riscv_set_default_isa_spec (DEFAULT_RISCV_ISA_SPEC);
 
-  if (riscv_subsets.head == NULL)
-    riscv_set_arch (xlen == 64 ? "rv64g" : "rv32g");
+  /* Set the architecture according to -march or or --with-arch.  */
+  riscv_set_arch (default_arch_with_ext);
 
   /* Add the RVC extension, regardless of -march, to support .option rvc.  */
   riscv_set_rvc (FALSE);
@@ -2483,6 +2760,11 @@ riscv_after_parse_args (void)
   if (riscv_subset_supports ("e"))
     riscv_set_rve (TRUE);
 
+  /* If the -mpriv-spec isn't set, then we set the default privilege spec
+     according to DEFAULT_PRIV_SPEC.  */
+  if (default_priv_spec == PRIV_SPEC_CLASS_NONE)
+    riscv_set_default_priv_spec (DEFAULT_RISCV_PRIV_SPEC);
+
   /* Infer ABI from ISA if not specified on command line.  */
   if (abi_xlen == 0)
     abi_xlen = xlen;
@@ -3189,14 +3471,16 @@ md_show_usage (FILE *stream)
 {
   fprintf (stream, _("\
 RISC-V options:\n\
-  -fpic          generate position-independent code\n\
-  -fno-pic       don't generate position-independent code (default)\n\
-  -march=ISA     set the RISC-V architecture\n\
-  -mabi=ABI      set the RISC-V ABI\n\
-  -mrelax        enable relax (default)\n\
-  -mno-relax     disable relax\n\
-  -march-attr    generate RISC-V arch attribute\n\
-  -mno-arch-attr don't generate RISC-V arch attribute\n\
+  -fpic                       generate position-independent code\n\
+  -fno-pic                    don't generate position-independent code (default)\n\
+  -march=ISA                  set the RISC-V architecture\n\
+  -misa-spec=ISAspec          set the RISC-V ISA spec (2.2, 20190608, 20191213)\n\
+  -mpriv-spec=PRIVspec        set the RISC-V privilege spec (1.9, 1.9.1, 1.10, 1.11)\n\
+  -mabi=ABI                   set the RISC-V ABI\n\
+  -mrelax                     enable relax (default)\n\
+  -mno-relax                  disable relax\n\
+  -march-attr                 generate RISC-V arch attribute\n\
+  -mno-arch-attr              don't generate RISC-V arch attribute\n\
 "));
 }
 
@@ -3284,26 +3568,66 @@ s_riscv_insn (int x ATTRIBUTE_UNUSED)
   demand_empty_rest_of_line ();
 }
 
-/* Update arch attributes.  */
+/* Update arch and priv attributes.  If we don't set the corresponding ELF
+   attributes, then try to output the default ones.  */
 
 static void
-riscv_write_out_arch_attr (void)
+riscv_write_out_attrs (void)
 {
-  const char *arch_str = riscv_arch_str (xlen, &riscv_subsets);
+  const char *arch_str, *priv_str, *p;
+  /* versions[0] is major, versions[1] is minor,
+     and versions[3] is revision.  */
+  unsigned versions[3] = {0}, number = 0;
+  unsigned int i;
 
+  /* Re-write arch attribute to normalize the arch string.  */
+  arch_str = riscv_arch_str (xlen, &riscv_subsets);
   bfd_elf_add_proc_attr_string (stdoutput, Tag_RISCV_arch, arch_str);
-
   xfree ((void *)arch_str);
+
+  /* For the file without any instruction, we don't set the default_priv_spec
+     according to the priv attributes since the md_assemble isn't called.
+     Call riscv_set_default_priv_spec here for the above case, although
+     it seems strange.  */
+  if (!start_assemble
+      && !riscv_set_default_priv_spec (NULL))
+    return;
+
+  /* Re-write priv attributes by default_priv_spec.  */
+  priv_str = riscv_get_priv_spec_name (default_priv_spec);
+  p = priv_str;
+  for (i = 0; *p; ++p)
+    {
+      if (*p == '.' && i < 3)
+       {
+         versions[i++] = number;
+         number = 0;
+       }
+      else if (ISDIGIT (*p))
+       number = (number * 10) + (*p - '0');
+      else
+       {
+         as_bad (_("internal: bad RISC-V priv spec string (%s)"), priv_str);
+         return;
+       }
+    }
+  versions[i] = number;
+
+  /* Set the priv attributes.  */
+  bfd_elf_add_proc_attr_int (stdoutput, Tag_RISCV_priv_spec, versions[0]);
+  bfd_elf_add_proc_attr_int (stdoutput, Tag_RISCV_priv_spec_minor, versions[1]);
+  bfd_elf_add_proc_attr_int (stdoutput, Tag_RISCV_priv_spec_revision, versions[2]);
 }
 
-/* Add the default contents for the .riscv.attributes section.  */
+/* Add the default contents for the .riscv.attributes section.  If any
+   ELF attribute or -march-attr options is set, call riscv_write_out_attrs
+   to update the arch and priv attributes.  */
 
 static void
 riscv_set_public_attributes (void)
 {
-  if (riscv_opts.arch_attr || explicit_arch_attr)
-    /* Re-write arch attribute to normalize the arch string.  */
-    riscv_write_out_arch_attr ();
+  if (riscv_opts.arch_attr || explicit_attr)
+    riscv_write_out_attrs ();
 }
 
 /* Called after all assembly has been done.  */
@@ -3357,13 +3681,14 @@ static void
 s_riscv_attribute (int ignored ATTRIBUTE_UNUSED)
 {
   int tag = obj_elf_vendor_attribute (OBJ_ATTR_PROC);
+  unsigned old_xlen;
+  obj_attribute *attr;
 
-  if (tag == Tag_RISCV_arch)
+  explicit_attr = TRUE;
+  switch (tag)
     {
-      unsigned old_xlen = xlen;
-
-      explicit_arch_attr = TRUE;
-      obj_attribute *attr;
+    case Tag_RISCV_arch:
+      old_xlen = xlen;
       attr = elf_known_obj_attributes_proc (stdoutput);
       if (!start_assemble)
        riscv_set_arch (attr[Tag_RISCV_arch].s);
@@ -3379,6 +3704,17 @@ s_riscv_attribute (int ignored ATTRIBUTE_UNUSED)
          if (! bfd_set_arch_mach (stdoutput, bfd_arch_riscv, mach))
            as_warn (_("Could not set architecture and machine"));
        }
+      break;
+
+    case Tag_RISCV_priv_spec:
+    case Tag_RISCV_priv_spec_minor:
+    case Tag_RISCV_priv_spec_revision:
+      if (start_assemble)
+       as_fatal (_(".attribute priv spec must set before any instructions"));
+      break;
+
+    default:
+      break;
     }
 }
 
index 1515787cee42f5e65f4ca3d17e6a732fa83117de..e480b1d9971a9de2b26f2778b87457dae4e0c108 100755 (executable)
@@ -13009,7 +13009,7 @@ $as_echo "#define NDS32_DEFAULT_ZOL_EXT 1" >>confdefs.h
 $as_echo "$enable_zol_ext" >&6; }
        ;;
 
-      aarch64 | i386 | riscv | s390 | sparc)
+      aarch64 | i386 | s390 | sparc)
        if test $this_target = $target ; then
 
 cat >>confdefs.h <<_ACEOF
@@ -13019,6 +13019,56 @@ _ACEOF
        fi
        ;;
 
+      riscv)
+        # --target=riscv[32|64]-*-*.  */
+        if test $this_target = $target ; then
+
+cat >>confdefs.h <<_ACEOF
+#define DEFAULT_ARCH "${arch}"
+_ACEOF
+
+        fi
+
+        # --with-arch=<value>.  The syntax of <value> is same as Gas option -march.
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for default configuration of --with-arch" >&5
+$as_echo_n "checking for default configuration of --with-arch... " >&6; }
+        if test "x${with_arch}" != x; then
+
+cat >>confdefs.h <<_ACEOF
+#define DEFAULT_RISCV_ARCH_WITH_EXT "$with_arch"
+_ACEOF
+
+        fi
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_arch" >&5
+$as_echo "$with_arch" >&6; }
+
+        # --with-isa-spec=[2.2|20190608|20191213].
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for default configuration of --with-isa-spec" >&5
+$as_echo_n "checking for default configuration of --with-isa-spec... " >&6; }
+        if test "x${with_isa_spec}" != x; then
+
+cat >>confdefs.h <<_ACEOF
+#define DEFAULT_RISCV_ISA_SPEC "$with_isa_spec"
+_ACEOF
+
+        fi
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_isa_spec" >&5
+$as_echo "$with_isa_spec" >&6; }
+
+        # --with-priv-spec=[1.9|1.9.1|1.10|1.11].
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for default configuration of --with-priv-spec" >&5
+$as_echo_n "checking for default configuration of --with-priv-spec... " >&6; }
+        if test "x${with_priv_spec}" != x; then
+
+cat >>confdefs.h <<_ACEOF
+#define DEFAULT_RISCV_PRIV_SPEC "$with_priv_spec"
+_ACEOF
+
+        fi
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_priv_spec" >&5
+$as_echo "$with_priv_spec" >&6; }
+        ;;
+
       rl78)
        f=rl78-parse.o
        case " $extra_objects " in
index 6f32e55a1ae5d2f80340067fb6ea5b90db941d8a..b65108fecb21e81768c94659f04a6fb46bfb6bc5 100644 (file)
@@ -569,12 +569,43 @@ changequote([,])dnl
        AC_MSG_RESULT($enable_zol_ext)
        ;;
 
-      aarch64 | i386 | riscv | s390 | sparc)
+      aarch64 | i386 | s390 | sparc)
        if test $this_target = $target ; then
          AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
        fi
        ;;
 
+      riscv)
+        # --target=riscv[32|64]-*-*.  */
+        if test $this_target = $target ; then
+          AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
+        fi
+
+        # --with-arch=<value>.  The syntax of <value> is same as Gas option -march.
+        AC_MSG_CHECKING(for default configuration of --with-arch)
+        if test "x${with_arch}" != x; then
+        AC_DEFINE_UNQUOTED(DEFAULT_RISCV_ARCH_WITH_EXT, "$with_arch",
+                           [Define default value for RISC-V -march.])
+        fi
+        AC_MSG_RESULT($with_arch)
+
+        # --with-isa-spec=[2.2|20190608|20191213].
+        AC_MSG_CHECKING(for default configuration of --with-isa-spec)
+        if test "x${with_isa_spec}" != x; then
+          AC_DEFINE_UNQUOTED(DEFAULT_RISCV_ISA_SPEC, "$with_isa_spec",
+                             [Define default value for RISC-V -misa-spec.])
+        fi
+        AC_MSG_RESULT($with_isa_spec)
+
+        # --with-priv-spec=[1.9|1.9.1|1.10|1.11].
+        AC_MSG_CHECKING(for default configuration of --with-priv-spec)
+        if test "x${with_priv_spec}" != x; then
+          AC_DEFINE_UNQUOTED(DEFAULT_RISCV_PRIV_SPEC, "$with_priv_spec",
+                             [Define default value for RISC-V -mpriv-spec])
+        fi
+        AC_MSG_RESULT($with_priv_spec)
+        ;;
+
       rl78)
        f=rl78-parse.o
        case " $extra_objects " in
index 488cf56051fa5f73629503cb33a4866a098f1d48..bf942c3b7e93ea4ffc788cf0b33ea7ace89beaee 100644 (file)
@@ -42,6 +42,22 @@ Don't generate position-independent code (default)
 @cindex @samp{-march=ISA} option, RISC-V
 @item -march=ISA
 Select the base isa, as specified by ISA.  For example -march=rv32ima.
+If this option and the architecture attributes aren’t set, then assembler
+will check the default configure setting --with-arch=ISA.
+
+@cindex @samp{-misa-spec=ISAspec} option, RISC-V
+@item -misa-spec=ISAspec
+Select the default isa spec version.  If the version of ISA isn't set
+by -march, then assembler helps to set the version according to
+the default chosen spec.  If this option isn't set, then assembler will
+check the default configure setting --with-isa-spec=ISAspec.
+
+@cindex @samp{-mpriv-spec=PRIVspec} option, RISC-V
+@item -mpriv-spec=PRIVspec
+Select the privileged spec version.  We can decide whether the CSR is valid or
+not according to the chosen spec.  If this option and the privilege attributes
+aren't set, then assembler will check the default configure setting
+--with-priv-spec=PRIVspec.
 
 @cindex @samp{-mabi=ABI} option, RISC-V
 @item -mabi=ABI
index 0b9d5d7e35c3d161f8222fc3148920918d6a00d5..f93cfac6dde3fbdb77415529dca84f60ec135fbb 100644 (file)
@@ -3,13 +3,12 @@
 # This file is distributed under the same license as the PACKAGE package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
-#: config/tc-arm.c:708
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
-"POT-Creation-Date: 2020-01-18 14:01+0000\n"
+"POT-Creation-Date: 2020-05-20 15:53+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"
@@ -57,26 +56,26 @@ msgstr ""
 msgid "end of file in comment; newline inserted"
 msgstr ""
 
-#: as.c:170
+#: as.c:173
 msgid "missing emulation mode name"
 msgstr ""
 
-#: as.c:185
+#: as.c:188
 #, c-format
 msgid "unrecognized emulation name `%s'"
 msgstr ""
 
-#: as.c:232
+#: as.c:235
 #, c-format
 msgid "GNU assembler version %s (%s) using BFD version %s\n"
 msgstr ""
 
-#: as.c:244
+#: as.c:247
 #, c-format
 msgid "Usage: %s [option...] [asmfile...]\n"
 msgstr ""
 
-#: as.c:246
+#: as.c:249
 #, c-format
 msgid ""
 "Options:\n"
@@ -93,12 +92,12 @@ msgid ""
 "                      \t  =FILE  list to FILE (must be last sub-option)\n"
 msgstr ""
 
-#: as.c:260
+#: as.c:263
 #, c-format
 msgid "  --alternate             initially turn on alternate macro syntax\n"
 msgstr ""
 
-#: as.c:263
+#: as.c:266
 #, c-format
 msgid ""
 "  --compress-debug-sections[={none|zlib|zlib-gnu|zlib-gabi}]\n"
@@ -106,213 +105,215 @@ msgid ""
 "[default]\n"
 msgstr ""
 
-#: as.c:266
+#: as.c:269
 #, c-format
 msgid ""
 "  --nocompress-debug-sections\n"
 "                          don't compress DWARF debug sections\n"
 msgstr ""
 
-#: as.c:270
+#: as.c:273
 #, c-format
 msgid ""
 "  --compress-debug-sections[={none|zlib|zlib-gnu|zlib-gabi}]\n"
 "                          compress DWARF debug sections using zlib\n"
 msgstr ""
 
-#: as.c:273
+#: as.c:276
 #, c-format
 msgid ""
 "  --nocompress-debug-sections\n"
 "                          don't compress DWARF debug sections [default]\n"
 msgstr ""
 
-#: as.c:277
+#: as.c:280
 #, c-format
 msgid "  -D                      produce assembler debugging messages\n"
 msgstr ""
 
-#: as.c:279
+#: as.c:282
 #, c-format
 msgid ""
 "  --debug-prefix-map OLD=NEW\n"
 "                          map OLD to NEW in debug information\n"
 msgstr ""
 
-#: as.c:282
+#: as.c:285
 #, c-format
 msgid "  --defsym SYM=VAL        define symbol SYM to given value\n"
 msgstr ""
 
-#: as.c:298
+#: as.c:301
 #, c-format
 msgid "                          emulate output (default %s)\n"
 msgstr ""
 
-#: as.c:303
+#: as.c:306
 #, c-format
 msgid "  --execstack             require executable stack for this object\n"
 msgstr ""
 
-#: as.c:305
+#: as.c:308
 #, c-format
 msgid ""
 "  --noexecstack           don't require executable stack for this object\n"
 msgstr ""
 
-#: as.c:307
+#: as.c:310
 #, c-format
 msgid ""
 "  --size-check=[error|warning]\n"
 "\t\t\t  ELF .size directive check (default --size-check=error)\n"
 msgstr ""
 
-#: as.c:310
+#: as.c:313
 #, c-format
 msgid "  --elf-stt-common=[no|yes] "
 msgstr ""
 
-#: as.c:313 as.c:324 config/tc-i386.c:12769 config/tc-i386.c:12789
+#: as.c:316 as.c:327 config/tc-i386.c:13385 config/tc-i386.c:13405
 #, c-format
 msgid "(default: yes)\n"
 msgstr ""
 
-#: as.c:315 as.c:326 config/tc-i386.c:12771 config/tc-i386.c:12791
+#: as.c:318 as.c:329 config/tc-i386.c:13387 config/tc-i386.c:13407
 #, c-format
 msgid "(default: no)\n"
 msgstr ""
 
-#: as.c:316
+#: as.c:319
 #, c-format
 msgid ""
 "                          generate ELF common symbols with STT_COMMON type\n"
 msgstr ""
 
-#: as.c:318
+#: as.c:321
 #, c-format
 msgid "  --sectname-subst        enable section name substitution sequences\n"
 msgstr ""
 
-#: as.c:321
+#: as.c:324
 #, c-format
 msgid "  --generate-missing-build-notes=[no|yes] "
 msgstr ""
 
-#: as.c:328
+#: as.c:331
 #, c-format
 msgid ""
 "                          generate GNU Build notes if none are present in "
 "the input\n"
 msgstr ""
 
-#: as.c:332
+#: as.c:335
 #, c-format
 msgid "  -f                      skip whitespace and comment preprocessing\n"
 msgstr ""
 
-#: as.c:334
+#: as.c:337
 #, c-format
 msgid "  -g --gen-debug          generate debugging information\n"
 msgstr ""
 
-#: as.c:336
+#: as.c:339
 #, c-format
 msgid "  --gstabs                generate STABS debugging information\n"
 msgstr ""
 
-#: as.c:338
+#: as.c:341
 #, c-format
 msgid ""
 "  --gstabs+               generate STABS debug info with GNU extensions\n"
 msgstr ""
 
-#: as.c:340
+#: as.c:343
 #, c-format
-msgid "  --gdwarf-2              generate DWARF2 debugging information\n"
+msgid ""
+"  --gdwarf-<N>            generate DWARF<N> debugging information. 2 <= <N> "
+"<= 5\n"
 msgstr ""
 
-#: as.c:342
+#: as.c:345
 #, c-format
 msgid ""
 "  --gdwarf-sections       generate per-function section names for DWARF line "
 "information\n"
 msgstr ""
 
-#: as.c:344
+#: as.c:347
 #, c-format
 msgid "  --hash-size=<value>     set the hash table size close to <value>\n"
 msgstr ""
 
-#: as.c:346
+#: as.c:349
 #, c-format
 msgid "  --help                  show this message and exit\n"
 msgstr ""
 
-#: as.c:348
+#: as.c:351
 #, c-format
 msgid "  --target-help           show target specific options\n"
 msgstr ""
 
-#: as.c:350
+#: as.c:353
 #, c-format
 msgid ""
 "  -I DIR                  add DIR to search list for .include directives\n"
 msgstr ""
 
-#: as.c:352
+#: as.c:355
 #, c-format
 msgid "  -J                      don't warn about signed overflow\n"
 msgstr ""
 
-#: as.c:354
+#: as.c:357
 #, c-format
 msgid ""
 "  -K                      warn when differences altered for long "
 "displacements\n"
 msgstr ""
 
-#: as.c:356
+#: as.c:359
 #, c-format
 msgid "  -L,--keep-locals        keep local symbols (e.g. starting with `L')\n"
 msgstr ""
 
-#: as.c:358
+#: as.c:361
 #, c-format
 msgid "  -M,--mri                assemble in MRI compatibility mode\n"
 msgstr ""
 
-#: as.c:360
+#: as.c:363
 #, c-format
 msgid ""
 "  --MD FILE               write dependency information in FILE (default "
 "none)\n"
 msgstr ""
 
-#: as.c:362
+#: as.c:365
 #, c-format
 msgid "  -nocpp                  ignored\n"
 msgstr ""
 
-#: as.c:364
+#: as.c:367
 #, c-format
 msgid ""
 "  -no-pad-sections        do not pad the end of sections to alignment "
 "boundaries\n"
 msgstr ""
 
-#: as.c:366
+#: as.c:369
 #, c-format
 msgid ""
 "  -o OBJFILE              name the object-file output OBJFILE (default a."
 "out)\n"
 msgstr ""
 
-#: as.c:368
+#: as.c:371
 #, c-format
 msgid "  -R                      fold data section into text section\n"
 msgstr ""
 
-#: as.c:370
+#: as.c:373
 #, c-format
 msgid ""
 "  --reduce-memory-overheads \n"
@@ -320,44 +321,44 @@ msgid ""
 "                          assembly times\n"
 msgstr ""
 
-#: as.c:374
+#: as.c:377
 #, c-format
 msgid ""
 "  --statistics            print various measured statistics from execution\n"
 msgstr ""
 
-#: as.c:376
+#: as.c:379
 #, c-format
 msgid "  --strip-local-absolute  strip local absolute symbols\n"
 msgstr ""
 
-#: as.c:378
+#: as.c:381
 #, c-format
 msgid ""
 "  --traditional-format    Use same format as native assembler when possible\n"
 msgstr ""
 
-#: as.c:380
+#: as.c:383
 #, c-format
 msgid "  --version               print assembler version number and exit\n"
 msgstr ""
 
-#: as.c:382
+#: as.c:385
 #, c-format
 msgid "  -W  --no-warn           suppress warnings\n"
 msgstr ""
 
-#: as.c:384
+#: as.c:387
 #, c-format
 msgid "  --warn                  don't suppress warnings\n"
 msgstr ""
 
-#: as.c:386
+#: as.c:389
 #, c-format
 msgid "  --fatal-warnings        treat warnings as errors\n"
 msgstr ""
 
-#: as.c:389
+#: as.c:392
 #, c-format
 msgid ""
 "  --itbl INSTTBL          extend instruction set to include instructions\n"
@@ -365,22 +366,22 @@ msgid ""
 "INSTTBL\n"
 msgstr ""
 
-#: as.c:393
+#: as.c:396
 #, c-format
 msgid "  -w                      ignored\n"
 msgstr ""
 
-#: as.c:395
+#: as.c:398
 #, c-format
 msgid "  -X                      ignored\n"
 msgstr ""
 
-#: as.c:397
+#: as.c:400
 #, c-format
 msgid "  -Z                      generate object file even after errors\n"
 msgstr ""
 
-#: as.c:399
+#: as.c:402
 #, c-format
 msgid ""
 "  --listing-lhs-width     set the width in words of the output data column "
@@ -388,7 +389,7 @@ msgid ""
 "                          the listing\n"
 msgstr ""
 
-#: as.c:402
+#: as.c:405
 #, c-format
 msgid ""
 "  --listing-lhs-width2    set the width in words of the continuation lines\n"
@@ -397,47 +398,47 @@ msgid ""
 "                          the width of the first line\n"
 msgstr ""
 
-#: as.c:406
+#: as.c:409
 #, c-format
 msgid ""
 "  --listing-rhs-width     set the max width in characters of the lines from\n"
 "                          the source file\n"
 msgstr ""
 
-#: as.c:409
+#: as.c:412
 #, c-format
 msgid ""
 "  --listing-cont-lines    set the maximum number of continuation lines used\n"
 "                          for the output data column of the listing\n"
 msgstr ""
 
-#: as.c:412
+#: as.c:415
 #, c-format
 msgid "  @FILE                   read options from FILE\n"
 msgstr ""
 
-#: as.c:420
+#: as.c:423
 #, c-format
 msgid "Report bugs to %s\n"
 msgstr ""
 
-#: as.c:644
+#: as.c:653
 #, c-format
 msgid "unrecognized option -%c%s"
 msgstr ""
 
 #. This output is intended to follow the GNU standards document.
-#: as.c:686
+#: as.c:695
 #, c-format
 msgid "GNU assembler %s\n"
 msgstr ""
 
-#: as.c:687
+#: as.c:696
 #, c-format
 msgid "Copyright (C) 2020 Free Software Foundation, Inc.\n"
 msgstr ""
 
-#: as.c:688
+#: as.c:697
 #, c-format
 msgid ""
 "This program is free software; you may redistribute it under the terms of\n"
@@ -445,137 +446,137 @@ msgid ""
 "This program has absolutely no warranty.\n"
 msgstr ""
 
-#: as.c:693
+#: as.c:702
 #, c-format
 msgid ""
 "This assembler was configured for a target of `%s' and default,\n"
 "cpu type `%s'.\n"
 msgstr ""
 
-#: as.c:697
+#: as.c:706
 #, c-format
 msgid "This assembler was configured for a target of `%s'.\n"
 msgstr ""
 
-#: as.c:705
+#: as.c:714
 msgid "multiple emulation names specified"
 msgstr ""
 
-#: as.c:707
+#: as.c:716
 msgid "emulations not handled in this configuration"
 msgstr ""
 
-#: as.c:712
+#: as.c:721
 #, c-format
 msgid "alias = %s\n"
 msgstr ""
 
-#: as.c:713
+#: as.c:722
 #, c-format
 msgid "canonical = %s\n"
 msgstr ""
 
-#: as.c:714
+#: as.c:723
 #, c-format
 msgid "cpu-type = %s\n"
 msgstr ""
 
-#: as.c:716
+#: as.c:725
 #, c-format
 msgid "format = %s\n"
 msgstr ""
 
-#: as.c:719
+#: as.c:728
 #, c-format
 msgid "bfd-target = %s\n"
 msgstr ""
 
-#: as.c:736
+#: as.c:745
 #, c-format
 msgid "Invalid --compress-debug-sections option: `%s'"
 msgstr ""
 
-#: as.c:739
+#: as.c:748
 #, c-format
 msgid "--compress-debug-sections=%s is unsupported"
 msgstr ""
 
-#: as.c:764
+#: as.c:773
 msgid "bad defsym; format is --defsym name=value"
 msgstr ""
 
-#: as.c:784
+#: as.c:793
 msgid "no file name following -t option"
 msgstr ""
 
-#: as.c:799
+#: as.c:808
 #, c-format
 msgid "failed to read instruction table %s\n"
 msgstr ""
 
-#: as.c:847
+#: as.c:875
 #, c-format
 msgid "Invalid --gdwarf-cie-version `%s'"
 msgstr ""
 
-#: as.c:925
+#: as.c:968
 #, c-format
 msgid "Invalid --size-check= option: `%s'"
 msgstr ""
 
-#: as.c:934
+#: as.c:977
 #, c-format
 msgid "Invalid --elf-stt-common= option: `%s'"
 msgstr ""
 
-#: as.c:948
+#: as.c:991
 #, c-format
 msgid "Invalid --generate-missing-build-notes option: `%s'"
 msgstr ""
 
-#: as.c:1019
+#: as.c:1062
 #, c-format
 msgid "invalid listing option `%c'"
 msgstr ""
 
-#: as.c:1072
+#: as.c:1115
 msgid "--hash-size needs a numeric argument"
 msgstr ""
 
-#: as.c:1094
+#: as.c:1137
 #, c-format
 msgid "%s: total time in assembly: %ld.%06ld\n"
 msgstr ""
 
-#: as.c:1260
+#: as.c:1303
 msgid "libbfd ABI mismatch"
 msgstr ""
 
-#: as.c:1299
+#: as.c:1348
 #, c-format
 msgid "The input '%s' and output '%s' files are the same"
 msgstr ""
 
-#: as.c:1409
+#: as.c:1458
 #, c-format
 msgid "%d warning"
 msgid_plural "%d warnings"
 msgstr[0] ""
 msgstr[1] ""
 
-#: as.c:1411
+#: as.c:1460
 #, c-format
 msgid "%d error"
 msgid_plural "%d errors"
 msgstr[0] ""
 msgstr[1] ""
 
-#: as.c:1415
+#: as.c:1464
 #, c-format
 msgid "%s, treating warnings as errors"
 msgstr ""
 
-#: as.c:1426
+#: as.c:1475
 #, c-format
 msgid "%s, %s, generating bad object file\n"
 msgstr ""
@@ -596,7 +597,7 @@ msgstr ""
 #: cgen.c:106 config/tc-alpha.c:2097 config/tc-alpha.c:2121
 #: config/tc-arc.c:4060 config/tc-arc.c:4134 config/tc-d10v.c:550
 #: config/tc-d30v.c:537 config/tc-mn10200.c:1098 config/tc-mn10300.c:1752
-#: config/tc-ppc.c:3518 config/tc-ppc.c:4020 config/tc-s390.c:1342
+#: config/tc-ppc.c:3531 config/tc-ppc.c:4033 config/tc-s390.c:1342
 #: config/tc-s390.c:1465 config/tc-s390.c:1599 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
@@ -604,19 +605,19 @@ msgid "too many fixups"
 msgstr ""
 
 #: cgen.c:371 cgen.c:391 config/tc-d10v.c:461 config/tc-d30v.c:453
-#: config/tc-mn10200.c:1040 config/tc-mn10300.c:1677 config/tc-ppc.c:3560
+#: config/tc-mn10200.c:1040 config/tc-mn10300.c:1677 config/tc-ppc.c:3573
 #: config/tc-s390.c:1326 config/tc-v850.c:2647 config/tc-v850.c:2681
-#: config/tc-v850.c:2721 config/tc-v850.c:2966 config/tc-z80.c:741
+#: config/tc-v850.c:2721 config/tc-v850.c:2966 config/tc-z80.c:770
 msgid "illegal operand"
 msgstr ""
 
 #: cgen.c:395 config/tc-avr.c:898 config/tc-d10v.c:463 config/tc-d30v.c:455
 #: config/tc-h8300.c:497 config/tc-mcore.c:661 config/tc-microblaze.c:613
 #: config/tc-mmix.c:495 config/tc-mn10200.c:1043 config/tc-mn10300.c:1680
-#: config/tc-msp430.c:417 config/tc-ppc.c:3562 config/tc-s390.c:1331
+#: config/tc-msp430.c:417 config/tc-ppc.c:3575 config/tc-s390.c:1331
 #: config/tc-sh.c:988 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:851 config/tc-z8k.c:349
+#: config/tc-z80.c:912 config/tc-z8k.c:349
 msgid "missing operand"
 msgstr ""
 
@@ -629,22 +630,22 @@ msgid "operand mask overflow"
 msgstr ""
 
 #. We can't actually support subtracting a symbol.
-#: cgen.c:857 config/tc-arm.c:2048 config/tc-arm.c:11269 config/tc-arm.c:11321
-#: config/tc-arm.c:11603 config/tc-arm.c:12499 config/tc-arm.c:13639
-#: config/tc-arm.c:13679 config/tc-arm.c:14052 config/tc-arm.c:14094
-#: config/tc-arm.c:21317 config/tc-arm.c:21377 config/tc-avr.c:1549
+#: cgen.c:857 config/tc-arm.c:2075 config/tc-arm.c:11318 config/tc-arm.c:11370
+#: config/tc-arm.c:11652 config/tc-arm.c:12548 config/tc-arm.c:13688
+#: config/tc-arm.c:13728 config/tc-arm.c:14101 config/tc-arm.c:14143
+#: config/tc-arm.c:21376 config/tc-arm.c:21436 config/tc-avr.c:1549
 #: config/tc-avr.c:1561 config/tc-avr.c:1825 config/tc-cris.c:4060
 #: config/tc-d10v.c:1507 config/tc-d30v.c:1912 config/tc-ft32.c:574
-#: config/tc-ft32.c:587 config/tc-mips.c:9681 config/tc-mips.c:10991
-#: config/tc-mips.c:12288 config/tc-mips.c:12971 config/tc-nds32.c:7827
+#: config/tc-ft32.c:587 config/tc-mips.c:9720 config/tc-mips.c:11030
+#: config/tc-mips.c:12327 config/tc-mips.c:13010 config/tc-nds32.c:7827
 #: config/tc-pru.c:746 config/tc-pru.c:756 config/tc-spu.c:972
 #: config/tc-spu.c:996 config/tc-tilegx.c:1483 config/tc-tilepro.c:1344
 #: config/tc-v850.c:3451 config/tc-vax.c:282 config/tc-xstormy16.c:482
-#: config/tc-xtensa.c:5967 config/tc-xtensa.c:13044
+#: config/tc-xtensa.c:5987 config/tc-xtensa.c:13070 config/tc-z80.c:3798
 msgid "expression too complex"
 msgstr ""
 
-#: cgen.c:956 config/tc-ppc.c:7722 config/tc-s390.c:2380 config/tc-v850.c:3503
+#: cgen.c:956 config/tc-ppc.c:7735 config/tc-s390.c:2380 config/tc-v850.c:3503
 #: config/tc-xstormy16.c:539
 msgid "unresolved expression that must be resolved"
 msgstr ""
@@ -734,7 +735,7 @@ msgstr ""
 msgid "Infinities are not supported by this target"
 msgstr ""
 
-#: config/atof-ieee.c:829 config/atof-vax.c:449 config/tc-arm.c:1294
+#: config/atof-ieee.c:829 config/atof-vax.c:449 config/tc-arm.c:1321
 #: config/tc-ia64.c:11603 config/tc-tic30.c:1263 config/tc-tic4x.c:2583
 msgid "Unrecognized or unsupported floating point constant"
 msgstr ""
@@ -759,8 +760,8 @@ msgstr ""
 msgid "Inserting \"%s\" into structure table failed: %s"
 msgstr ""
 
-#: config/obj-coff.c:212 config/obj-coff.c:1675 config/tc-ppc.c:6259
-#: config/tc-tic54x.c:3984 read.c:2961
+#: config/obj-coff.c:212 config/obj-coff.c:1680 config/tc-ppc.c:6272
+#: config/tc-tic54x.c:3984 read.c:2962
 #, c-format
 msgid "error setting flags for \"%s\": %s"
 msgstr ""
@@ -854,22 +855,22 @@ msgstr ""
 #. STYP_INFO
 #. STYP_LIB
 #. STYP_OVER
-#: config/obj-coff.c:1640
+#: config/obj-coff.c:1642
 #, c-format
 msgid "unsupported section attribute '%c'"
 msgstr ""
 
-#: config/obj-coff.c:1644 config/tc-ppc.c:6241
+#: config/obj-coff.c:1646 config/tc-ppc.c:6254
 #, c-format
 msgid "unknown section attribute '%c'"
 msgstr ""
 
-#: config/obj-coff.c:1687 config/obj-macho.c:269
+#: config/obj-coff.c:1692 config/obj-macho.c:269
 #, c-format
 msgid "Ignoring changed section attributes for %s"
 msgstr ""
 
-#: config/obj-coff.c:1825
+#: config/obj-coff.c:1830
 #, c-format
 msgid "0x%lx: \"%s\" type = %ld, class = %d, segment = %d\n"
 msgstr ""
@@ -891,236 +892,276 @@ msgstr ""
 msgid "Missing symbol name in directive"
 msgstr ""
 
-#: config/obj-elf.c:644
+#: config/obj-elf.c:649
 #, c-format
 msgid "setting incorrect section type for %s"
 msgstr ""
 
-#: config/obj-elf.c:649
+#: config/obj-elf.c:654
 #, c-format
 msgid "ignoring incorrect section type for %s"
 msgstr ""
 
-#: config/obj-elf.c:700
+#: config/obj-elf.c:705
 #, c-format
 msgid "setting incorrect section attributes for %s"
 msgstr ""
 
-#: config/obj-elf.c:757
+#. This is a special section with known type.  User
+#. assembly might get the section type wrong; Even high
+#. profile projects like glibc have done so in the past.
+#. So don't error in this case.
+#: config/obj-elf.c:776
 #, c-format
 msgid "ignoring changed section type for %s"
 msgstr ""
 
-#: config/obj-elf.c:769
+#. Do error when assembly isn't self-consistent.
+#: config/obj-elf.c:779
+#, c-format
+msgid "changed section type for %s"
+msgstr ""
+
+#: config/obj-elf.c:794
 #, c-format
 msgid "ignoring changed section attributes for %s"
 msgstr ""
 
-#: config/obj-elf.c:776
+#: config/obj-elf.c:796
+#, c-format
+msgid "changed section attributes for %s"
+msgstr ""
+
+#: config/obj-elf.c:804
 #, c-format
-msgid "ignoring changed section entity size for %s"
+msgid "changed section entity size for %s"
 msgstr ""
 
-#: config/obj-elf.c:841
-msgid "unrecognized .section attribute: want a,e,w,x,M,S,G,T or number"
+#: config/obj-elf.c:872
+msgid "unrecognized .section attribute: want a,e,o,w,x,M,S,G,T or number"
 msgstr ""
 
-#: config/obj-elf.c:901
+#: config/obj-elf.c:932
 msgid "extraneous characters at end of numeric section type"
 msgstr ""
 
-#: config/obj-elf.c:907 read.c:2945
+#: config/obj-elf.c:938 read.c:2946
 msgid "unrecognized section type"
 msgstr ""
 
-#: config/obj-elf.c:939
+#: config/obj-elf.c:970
 msgid "unrecognized section attribute"
 msgstr ""
 
-#: config/obj-elf.c:970 config/tc-alpha.c:4208
+#: config/obj-elf.c:1001 config/tc-alpha.c:4208
 msgid "missing name"
 msgstr ""
 
-#: config/obj-elf.c:1050
+#: config/obj-elf.c:1083
 #, c-format
 msgid "section name '%s' already defined as another symbol"
 msgstr ""
 
-#: config/obj-elf.c:1143
+#: config/obj-elf.c:1175
 msgid "invalid merge entity size"
 msgstr ""
 
-#: config/obj-elf.c:1150
+#: config/obj-elf.c:1182
 msgid "entity size for SHF_MERGE not specified"
 msgstr ""
 
-#: config/obj-elf.c:1156
+#: config/obj-elf.c:1201
 msgid "? section flag ignored with G present"
 msgstr ""
 
-#: config/obj-elf.c:1180
+#: config/obj-elf.c:1225
 msgid "group name for SHF_GROUP not specified"
 msgstr ""
 
-#: config/obj-elf.c:1205
+#: config/obj-elf.c:1251
 #, c-format
 msgid "unsupported mbind section info: %s"
 msgstr ""
 
-#: config/obj-elf.c:1220
+#: config/obj-elf.c:1300
+#, c-format
+msgid "unsupported section id: %s"
+msgstr ""
+
+#: config/obj-elf.c:1325
 msgid "character following name is not '#'"
 msgstr ""
 
-#: config/obj-elf.c:1249
+#: config/obj-elf.c:1354
 #, c-format
 msgid "SHF_ALLOC isn't set for GNU_MBIND section: %s"
 msgstr ""
 
-#: config/obj-elf.c:1256
+#: config/obj-elf.c:1361
 msgid "GNU_MBIND section is supported only by GNU and FreeBSD targets"
 msgstr ""
 
-#: config/obj-elf.c:1359
+#: config/obj-elf.c:1464
 msgid ".previous without corresponding .section; ignored"
 msgstr ""
 
-#: config/obj-elf.c:1385
+#: config/obj-elf.c:1490
 msgid ".popsection without corresponding .pushsection; ignored"
 msgstr ""
 
-#: config/obj-elf.c:1431
-msgid "expected comma after name in .symver"
+#: config/obj-elf.c:1534 config/obj-elf.c:1629
+#, c-format
+msgid "missing version name in `%s' for symbol `%s'"
 msgstr ""
 
-#: config/obj-elf.c:1447 config/obj-elf.c:2365
+#: config/obj-elf.c:1553
 #, c-format
-msgid "`%s' can't be versioned to common symbol '%s'"
+msgid "only one version name with `@@@' is allowed for symbol `%s'"
 msgstr ""
 
-#: config/obj-elf.c:1462
+#: config/obj-elf.c:1561
 #, c-format
-msgid "missing version name in `%s' for symbol `%s'"
+msgid "invalid version name '%s' for symbol `%s'"
 msgstr ""
 
-#: config/obj-elf.c:1473
+#: config/obj-elf.c:1603
+msgid "expected comma after name in .symver"
+msgstr ""
+
+#: config/obj-elf.c:1620 config/obj-elf.c:2513
 #, c-format
-msgid "multiple versions [`%s'|`%s'] for symbol `%s'"
+msgid "`%s' can't be versioned to common symbol '%s'"
 msgstr ""
 
-#: config/obj-elf.c:1509
+#: config/obj-elf.c:1697
 #, c-format
 msgid "expected `%s' to have already been set for .vtable_inherit"
 msgstr ""
 
-#: config/obj-elf.c:1519
+#: config/obj-elf.c:1707
 msgid "expected comma after name in .vtable_inherit"
 msgstr ""
 
-#: config/obj-elf.c:1580
+#: config/obj-elf.c:1768
 msgid "expected comma after name in .vtable_entry"
 msgstr ""
 
-#: config/obj-elf.c:1719
+#: config/obj-elf.c:1907
 #, c-format
 msgid "Attribute name not recognised: %s"
 msgstr ""
 
-#: config/obj-elf.c:1736
+#: config/obj-elf.c:1924
 msgid "expected numeric constant"
 msgstr ""
 
-#: config/obj-elf.c:1745 config/tc-arm.c:7015
+#: config/obj-elf.c:1933 config/tc-arm.c:7042
 msgid "expected comma"
 msgstr ""
 
-#: config/obj-elf.c:1778
+#: config/obj-elf.c:1966
 msgid "bad string constant"
 msgstr ""
 
-#: config/obj-elf.c:1782
+#: config/obj-elf.c:1970
 msgid "expected <tag> , <value>"
 msgstr ""
 
-#: config/obj-elf.c:1900
+#: config/obj-elf.c:2088
 msgid "expected quoted string"
 msgstr ""
 
-#: config/obj-elf.c:1920
+#: config/obj-elf.c:2108
 #, c-format
 msgid "expected comma after name `%s' in .size directive"
 msgstr ""
 
-#: config/obj-elf.c:1929
+#: config/obj-elf.c:2117
 msgid "missing expression in .size directive"
 msgstr ""
 
-#: config/obj-elf.c:2052
+#: config/obj-elf.c:2240
 #, c-format
 msgid "symbol '%s' is already defined"
 msgstr ""
 
-#: config/obj-elf.c:2073
+#: config/obj-elf.c:2261
 #, c-format
 msgid "symbol type \"%s\" is supported only by GNU and FreeBSD targets"
 msgstr ""
 
-#: config/obj-elf.c:2086
+#: config/obj-elf.c:2265
+#, c-format
+msgid "symbol type \"%s\" is not supported by MIPS targets"
+msgstr ""
+
+#: config/obj-elf.c:2278
 #, c-format
 msgid "symbol type \"%s\" is supported only by GNU targets"
 msgstr ""
 
-#: config/obj-elf.c:2096
+#: config/obj-elf.c:2288
 #, c-format
 msgid "unrecognized symbol type \"%s\""
 msgstr ""
 
-#: config/obj-elf.c:2117
+#: config/obj-elf.c:2309
 #, c-format
 msgid "cannot change type of common symbol '%s'"
 msgstr ""
 
-#: config/obj-elf.c:2129
+#: config/obj-elf.c:2321
 #, c-format
 msgid "symbol '%s' already has its type set"
 msgstr ""
 
-#: config/obj-elf.c:2293 config/obj-elf.c:2296
+#: config/obj-elf.c:2486 config/obj-elf.c:2489
 #, c-format
 msgid ".size expression for %s does not evaluate to a constant"
 msgstr ""
 
-#: config/obj-elf.c:2330
+#: config/obj-elf.c:2585 ecoff.c:3600
 #, c-format
-msgid ""
-"invalid attempt to declare external version name as default in symbol `%s'"
+msgid "symbol `%s' can not be both weak and common"
 msgstr ""
 
-#: config/obj-elf.c:2399 ecoff.c:3600
+#: config/obj-elf.c:2620
 #, c-format
-msgid "symbol `%s' can not be both weak and common"
+msgid "undefined linked-to symbol `%s' on section `%s'"
 msgstr ""
 
-#: config/obj-elf.c:2494
+#: config/obj-elf.c:2695
 #, c-format
 msgid "assuming all members of group `%s' are COMDAT"
 msgstr ""
 
-#: config/obj-elf.c:2506
+#: config/obj-elf.c:2707
 #, c-format
 msgid "can't create group: %s"
 msgstr ""
 
-#: config/obj-elf.c:2657
+#: config/obj-elf.c:2781
+#, c-format
+msgid ""
+"invalid attempt to declare external version name as default in symbol `%s'"
+msgstr ""
+
+#: config/obj-elf.c:2791
+#, c-format
+msgid "multiple versions [`%s'|`%s'] for symbol `%s'"
+msgstr ""
+
+#: config/obj-elf.c:2883
 #, c-format
 msgid "failed to set up debugging information: %s"
 msgstr ""
 
-#: config/obj-elf.c:2677
+#: config/obj-elf.c:2903
 #, c-format
 msgid "can't start writing .mdebug section: %s"
 msgstr ""
 
-#: config/obj-elf.c:2685
+#: config/obj-elf.c:2911
 #, c-format
 msgid "could not write .mdebug section: %s"
 msgstr ""
@@ -1170,7 +1211,7 @@ msgid "missing sizeof_stub expression"
 msgstr ""
 
 #: config/obj-macho.c:478 config/tc-ia64.c:1083 config/tc-ia64.c:11765
-#: config/tc-score.c:6099 expr.c:1179 read.c:1716
+#: config/tc-score.c:6087 expr.c:1179 read.c:1717
 msgid "expected symbol name"
 msgstr ""
 
@@ -1178,23 +1219,23 @@ msgstr ""
 msgid "bad or irreducible absolute expression"
 msgstr ""
 
-#: config/obj-macho.c:497 config/tc-score.c:6116 read.c:1754
+#: config/obj-macho.c:497 config/tc-score.c:6104 read.c:1755
 msgid "missing size expression"
 msgstr ""
 
-#: config/obj-macho.c:506 config/tc-ia64.c:1118 read.c:1760
+#: config/obj-macho.c:506 config/tc-ia64.c:1118 read.c:1761
 #, c-format
 msgid "size (%ld) out of range, ignored"
 msgstr ""
 
-#: config/obj-macho.c:516 config/tc-score.c:6260 dwarf2dbg.c:997 ecoff.c:3359
-#: read.c:1772 read.c:1877 read.c:2628 read.c:3201 read.c:3632 symbols.c:474
+#: config/obj-macho.c:516 config/tc-score.c:6242 dwarf2dbg.c:1267 ecoff.c:3359
+#: read.c:1773 read.c:1878 read.c:2629 read.c:3202 read.c:3633 symbols.c:474
 #: symbols.c:569
 #, c-format
 msgid "symbol `%s' is already defined"
 msgstr ""
 
-#: config/obj-macho.c:526 read.c:1787
+#: config/obj-macho.c:526 read.c:1788
 #, c-format
 msgid "size of \"%s\" is already %ld; not changing to %ld"
 msgstr ""
@@ -1405,7 +1446,7 @@ msgstr ""
 msgid "128-bit SIMD scalar or floating-point quad precision register expected"
 msgstr ""
 
-#: config/tc-aarch64.c:427 config/tc-arm.c:4722
+#: config/tc-aarch64.c:427 config/tc-arm.c:4749
 msgid "register expected"
 msgstr ""
 
@@ -1432,8 +1473,8 @@ msgstr ""
 msgid "invalid register type %d"
 msgstr ""
 
-#: config/tc-aarch64.c:604 config/tc-aarch64.c:606 config/tc-arm.c:1168
-#: config/tc-score.c:6510 expr.c:1350 read.c:2610
+#: config/tc-aarch64.c:604 config/tc-aarch64.c:606 config/tc-arm.c:1195
+#: config/tc-score.c:6492 expr.c:1350 read.c:2611
 msgid "bad expression"
 msgstr ""
 
@@ -1441,7 +1482,7 @@ msgstr ""
 msgid "bad segment"
 msgstr ""
 
-#: config/tc-aarch64.c:651 config/tc-arm.c:1234
+#: config/tc-aarch64.c:651 config/tc-arm.c:1261
 msgid "invalid floating point number"
 msgstr ""
 
@@ -1482,8 +1523,8 @@ msgid "index not allowed inside register list"
 msgstr ""
 
 #: config/tc-aarch64.c:1075 config/tc-aarch64.c:2045 config/tc-aarch64.c:2246
-#: config/tc-arm.c:1788 config/tc-arm.c:3998 config/tc-arm.c:5172
-#: config/tc-arm.c:7294
+#: config/tc-arm.c:1815 config/tc-arm.c:4025 config/tc-arm.c:5199
+#: config/tc-arm.c:7329
 msgid "constant expression required"
 msgstr ""
 
@@ -1496,7 +1537,7 @@ msgstr ""
 msgid "invalid use of vector register"
 msgstr ""
 
-#: config/tc-aarch64.c:1186 config/tc-arm.c:2104
+#: config/tc-aarch64.c:1186 config/tc-arm.c:2131
 msgid "expecting {"
 msgstr ""
 
@@ -1536,30 +1577,30 @@ msgstr ""
 msgid "empty vector register list"
 msgstr ""
 
-#: config/tc-aarch64.c:1321 config/tc-arm.c:2540
+#: config/tc-aarch64.c:1321 config/tc-arm.c:2567
 #, c-format
 msgid "ignoring attempt to redefine built-in register '%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:1327 config/tc-arm.c:2545
+#: config/tc-aarch64.c:1327 config/tc-arm.c:2572
 #, c-format
 msgid "ignoring redefinition of register alias '%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:1373 config/tc-arm.c:2611
+#: config/tc-aarch64.c:1373 config/tc-arm.c:2638
 #, c-format
 msgid "unknown register '%s' -- .req ignored"
 msgstr ""
 
-#: config/tc-aarch64.c:1431 config/tc-arm.c:2819
+#: config/tc-aarch64.c:1431 config/tc-arm.c:2846
 msgid "invalid syntax for .req directive"
 msgstr ""
 
-#: config/tc-aarch64.c:1456 config/tc-arm.c:2857
+#: config/tc-aarch64.c:1456 config/tc-arm.c:2884
 msgid "invalid syntax for .unreq directive"
 msgstr ""
 
-#: config/tc-aarch64.c:1462 config/tc-arm.c:2864
+#: config/tc-aarch64.c:1462 config/tc-arm.c:2891
 #, c-format
 msgid "unknown register alias '%s'"
 msgstr ""
@@ -1569,13 +1610,13 @@ msgstr ""
 msgid "ignoring attempt to undefine built-in register '%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:1788 config/tc-arm.c:3610 config/tc-arm.c:3637
-#: config/tc-arm.c:3650
+#: config/tc-aarch64.c:1788 config/tc-arm.c:3637 config/tc-arm.c:3664
+#: config/tc-arm.c:3677
 msgid "literal pool overflow"
 msgstr ""
 
-#: config/tc-aarch64.c:1970 config/tc-aarch64.c:6223 config/tc-arm.c:3871
-#: config/tc-arm.c:7711
+#: config/tc-aarch64.c:1970 config/tc-aarch64.c:6224 config/tc-arm.c:3898
+#: config/tc-arm.c:7760
 msgid "unrecognized relocation suffix"
 msgstr ""
 
@@ -1596,7 +1637,7 @@ msgstr ""
 msgid "invalid floating-point constant"
 msgstr ""
 
-#: config/tc-aarch64.c:3121 config/tc-arm.c:5512 config/tc-arm.c:5521
+#: config/tc-aarch64.c:3121 config/tc-arm.c:5539 config/tc-arm.c:5548
 msgid "shift expression expected"
 msgstr ""
 
@@ -1699,7 +1740,7 @@ msgstr ""
 msgid "invalid expression in the address"
 msgstr ""
 
-#: config/tc-aarch64.c:3720 config/tc-arm.c:6102 config/tc-arm.c:6695
+#: config/tc-aarch64.c:3720 config/tc-arm.c:6129 config/tc-arm.c:6722
 msgid "']' expected"
 msgstr ""
 
@@ -1707,7 +1748,7 @@ msgstr ""
 msgid "register offset not allowed in pre-indexed addressing mode"
 msgstr ""
 
-#: config/tc-aarch64.c:3743 config/tc-arm.c:6138
+#: config/tc-aarch64.c:3743 config/tc-arm.c:6165
 msgid "cannot combine pre- and post-indexing"
 msgstr ""
 
@@ -1717,11 +1758,11 @@ msgid "missing offset in the pre-indexed address"
 msgstr ""
 
 #: config/tc-aarch64.c:4029
-msgid "unknown or missing option to PSB"
+msgid "unknown or missing option to PSB/TSB"
 msgstr ""
 
 #: config/tc-aarch64.c:4037
-msgid "the specified option is not accepted for PSB"
+msgid "the specified option is not accepted for PSB/TSB"
 msgstr ""
 
 #: config/tc-aarch64.c:4064 config/tc-aarch64.c:4078
@@ -1754,7 +1795,7 @@ msgstr ""
 msgid "Info: "
 msgstr ""
 
-#: config/tc-aarch64.c:4764 config/tc-score.c:2749 config/tc-score.c:6499
+#: config/tc-aarch64.c:4764 config/tc-score.c:2749 config/tc-score.c:6481
 #, c-format
 msgid "%s -- `%s'"
 msgstr ""
@@ -1798,7 +1839,7 @@ msgstr ""
 msgid "%s out of range %d to %d at operand %d -- `%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:4882 config/tc-aarch64.c:4886 config/tc-aarch64.c:6825
+#: config/tc-aarch64.c:4882 config/tc-aarch64.c:4886 config/tc-aarch64.c:6826
 msgid "immediate value"
 msgstr ""
 
@@ -1846,7 +1887,7 @@ msgstr ""
 msgid "the top half of a 128-bit FP/SIMD register is expected"
 msgstr ""
 
-#: config/tc-aarch64.c:5808 config/tc-arm.c:2213 config/tc-arm.c:2258
+#: config/tc-aarch64.c:5808 config/tc-arm.c:2240 config/tc-arm.c:2285
 #: config/tc-h8300.c:1043
 msgid "invalid register list"
 msgstr ""
@@ -1875,316 +1916,316 @@ msgstr ""
 msgid "can't mix relocation modifier with explicit shift"
 msgstr ""
 
-#: config/tc-aarch64.c:6184 config/tc-arm.c:15831 config/tc-arm.c:15856
-#: config/tc-arm.c:15867 config/tc-arm.c:15874
+#: config/tc-aarch64.c:6185 config/tc-arm.c:15898 config/tc-arm.c:15923
+#: config/tc-arm.c:15934 config/tc-arm.c:15941
 msgid "invalid condition"
 msgstr ""
 
-#: config/tc-aarch64.c:6210
+#: config/tc-aarch64.c:6211
 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:6218
+#: config/tc-aarch64.c:6219
 msgid "invalid use of \"=immediate\""
 msgstr ""
 
-#: config/tc-aarch64.c:6283 config/tc-aarch64.c:6315 config/tc-aarch64.c:6333
-#: config/tc-aarch64.c:6357 config/tc-aarch64.c:6377 config/tc-aarch64.c:6396
-#: config/tc-aarch64.c:6419 config/tc-aarch64.c:6455 config/tc-aarch64.c:6462
-#: config/tc-aarch64.c:6490 config/tc-aarch64.c:6510 config/tc-aarch64.c:6535
-#: config/tc-aarch64.c:6553 config/tc-aarch64.c:6561 config/tc-aarch64.c:6578
-#: config/tc-aarch64.c:6602
+#: config/tc-aarch64.c:6284 config/tc-aarch64.c:6316 config/tc-aarch64.c:6334
+#: config/tc-aarch64.c:6358 config/tc-aarch64.c:6378 config/tc-aarch64.c:6397
+#: config/tc-aarch64.c:6420 config/tc-aarch64.c:6456 config/tc-aarch64.c:6463
+#: config/tc-aarch64.c:6491 config/tc-aarch64.c:6511 config/tc-aarch64.c:6536
+#: config/tc-aarch64.c:6554 config/tc-aarch64.c:6562 config/tc-aarch64.c:6579
+#: config/tc-aarch64.c:6603
 msgid "invalid addressing mode"
 msgstr ""
 
-#: config/tc-aarch64.c:6299
+#: config/tc-aarch64.c:6300
 msgid "the optional immediate offset can only be 0"
 msgstr ""
 
-#: config/tc-aarch64.c:6338 config/tc-aarch64.c:6362 config/tc-aarch64.c:6382
+#: config/tc-aarch64.c:6339 config/tc-aarch64.c:6363 config/tc-aarch64.c:6383
 msgid "relocation not allowed"
 msgstr ""
 
-#: config/tc-aarch64.c:6429
+#: config/tc-aarch64.c:6430
 msgid "writeback value must be an immediate constant"
 msgstr ""
 
 #. Make sure this has priority over
 #. "invalid addressing mode".
-#: config/tc-aarch64.c:6470
+#: config/tc-aarch64.c:6471
 msgid "constant offset required"
 msgstr ""
 
-#: config/tc-aarch64.c:6614
+#: config/tc-aarch64.c:6615
 msgid "unknown or missing system register name"
 msgstr ""
 
-#: config/tc-aarch64.c:6626
+#: config/tc-aarch64.c:6627
 msgid "unknown or missing PSTATE field name"
 msgstr ""
 
-#: config/tc-aarch64.c:6658
+#: config/tc-aarch64.c:6659
 msgid "unknown or missing operation name"
 msgstr ""
 
-#: config/tc-aarch64.c:6671
+#: config/tc-aarch64.c:6672
 msgid "the specified option is not accepted in ISB"
 msgstr ""
 
-#: config/tc-aarch64.c:6703 config/tc-aarch64.c:7884 config/tc-arm.c:7993
+#: config/tc-aarch64.c:6704 config/tc-aarch64.c:7886 config/tc-arm.c:8042
 #, c-format
 msgid "unhandled operand code %d"
 msgstr ""
 
-#: config/tc-aarch64.c:6745
+#: config/tc-aarch64.c:6746
 msgid "unexpected comma before the omitted optional operand"
 msgstr ""
 
-#: config/tc-aarch64.c:6773
+#: config/tc-aarch64.c:6774
 msgid "unexpected characters following instruction"
 msgstr ""
 
-#: config/tc-aarch64.c:6851 config/tc-arm.c:5636 config/tc-arm.c:6246
-#: config/tc-arm.c:8797
+#: config/tc-aarch64.c:6852 config/tc-arm.c:5663 config/tc-arm.c:6273
+#: config/tc-arm.c:8846
 msgid "constant expression expected"
 msgstr ""
 
-#: config/tc-aarch64.c:6858
+#: config/tc-aarch64.c:6859
 msgid "literal pool insertion failed"
 msgstr ""
 
-#: config/tc-aarch64.c:6929 config/tc-aarch64.c:6944
+#: config/tc-aarch64.c:6930 config/tc-aarch64.c:6945
 #, c-format
 msgid "unpredictable transfer with writeback -- `%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:6948
+#: config/tc-aarch64.c:6949
 #, c-format
 msgid "unpredictable load of register pair -- `%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:6960
+#: config/tc-aarch64.c:6961
 #, c-format
 msgid "unpredictable: identical transfer and status registers --`%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:6976
+#: config/tc-aarch64.c:6977
 #, c-format
 msgid "previous `%s' sequence has not been closed"
 msgstr ""
 
-#: config/tc-aarch64.c:7055
+#: config/tc-aarch64.c:7056
 #, c-format
 msgid "unknown mnemonic `%s' -- `%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:7063
+#: config/tc-aarch64.c:7064
 #, c-format
 msgid "unexpected comma after the mnemonic name `%s' -- `%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:7121
+#: config/tc-aarch64.c:7122
 #, c-format
 msgid "selected processor does not support `%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:7544 config/tc-arm.c:27479
+#: config/tc-aarch64.c:7545 config/tc-arm.c:28017
 msgid "GOT already in the symbol table"
 msgstr ""
 
-#: config/tc-aarch64.c:7707
+#: config/tc-aarch64.c:7708
 msgid "immediate cannot be moved by a single instruction"
 msgstr ""
 
-#: config/tc-aarch64.c:7750 config/tc-aarch64.c:7795 config/tc-aarch64.c:7821
-#: config/tc-arm.c:16375 config/tc-arm.c:18072 config/tc-arm.c:18658
-#: config/tc-arm.c:18685 config/tc-arm.c:19471 config/tc-arm.c:20305
-#: config/tc-arm.c:21320 config/tc-arm.c:21380 config/tc-metag.c:2444
+#: config/tc-aarch64.c:7752 config/tc-aarch64.c:7797 config/tc-aarch64.c:7823
+#: config/tc-arm.c:16442 config/tc-arm.c:18139 config/tc-arm.c:18719
+#: config/tc-arm.c:18746 config/tc-arm.c:19532 config/tc-arm.c:20364
+#: config/tc-arm.c:21379 config/tc-arm.c:21439 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:7814 config/tc-metag.c:4656 config/tc-xtensa.c:4203
+#: config/tc-aarch64.c:7816 config/tc-metag.c:4656 config/tc-xtensa.c:4221
 msgid "invalid immediate"
 msgstr ""
 
-#: config/tc-aarch64.c:7879 config/tc-tic6x.c:3861 config/tc-tic6x.c:3926
+#: config/tc-aarch64.c:7881 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:7953 config/tc-arm.c:27817 config/tc-arm.c:27885
-#: config/tc-arm.c:28167
+#: config/tc-aarch64.c:7955 config/tc-arm.c:28355 config/tc-arm.c:28423
+#: config/tc-arm.c:28705
 #, c-format
 msgid "undefined symbol %s used as an immediate value"
 msgstr ""
 
-#: config/tc-aarch64.c:7965
+#: config/tc-aarch64.c:7967
 msgid "pc-relative load offset not word aligned"
 msgstr ""
 
-#: config/tc-aarch64.c:7968
+#: config/tc-aarch64.c:7970
 msgid "pc-relative load offset out of range"
 msgstr ""
 
-#: config/tc-aarch64.c:7980
+#: config/tc-aarch64.c:7982
 msgid "pc-relative address offset out of range"
 msgstr ""
 
-#: config/tc-aarch64.c:7992 config/tc-aarch64.c:8007
+#: config/tc-aarch64.c:7994 config/tc-aarch64.c:8009
 msgid "conditional branch target not word aligned"
 msgstr ""
 
-#: config/tc-aarch64.c:7995 config/tc-aarch64.c:8010 config/tc-arm.c:28462
+#: config/tc-aarch64.c:7997 config/tc-aarch64.c:8012 config/tc-arm.c:29000
 msgid "conditional branch out of range"
 msgstr ""
 
-#: config/tc-aarch64.c:8023
+#: config/tc-aarch64.c:8025
 msgid "branch target not word aligned"
 msgstr ""
 
-#: config/tc-aarch64.c:8026 config/tc-arm.c:899 config/tc-arm.c:29265
-#: config/tc-mips.c:16047 config/tc-mips.c:16063 config/tc-mips.c:16153
+#: config/tc-aarch64.c:8028 config/tc-arm.c:924 config/tc-arm.c:29806
+#: config/tc-mips.c:16086 config/tc-mips.c:16102 config/tc-mips.c:16192
 msgid "branch out of range"
 msgstr ""
 
-#: config/tc-aarch64.c:8085 config/tc-arm.c:28058 config/tc-arm.c:28073
-#: config/tc-arm.c:28088 config/tc-arm.c:28099 config/tc-arm.c:28122
-#: config/tc-arm.c:28969 config/tc-moxie.c:716 config/tc-pj.c:452
-#: config/tc-sh.c:3727
+#: config/tc-aarch64.c:8087 config/tc-arm.c:28596 config/tc-arm.c:28611
+#: config/tc-arm.c:28626 config/tc-arm.c:28637 config/tc-arm.c:28660
+#: config/tc-arm.c:29510 config/tc-moxie.c:714 config/tc-pj.c:452
+#: config/tc-sh.c:3728
 msgid "offset out of range"
 msgstr ""
 
-#: config/tc-aarch64.c:8100
+#: config/tc-aarch64.c:8102
 msgid "unsigned value out of range"
 msgstr ""
 
-#: config/tc-aarch64.c:8111
+#: config/tc-aarch64.c:8113
 msgid "signed value out of range"
 msgstr ""
 
-#: config/tc-aarch64.c:8261
+#: config/tc-aarch64.c:8263
 #, c-format
 msgid "unexpected %s fixup"
 msgstr ""
 
-#: config/tc-aarch64.c:8327 config/tc-arm.c:29685 config/tc-arm.c:29706
-#: config/tc-mips.c:18414 config/tc-or1k.c:345 config/tc-score.c:7468
+#: config/tc-aarch64.c:8329 config/tc-arm.c:30226 config/tc-arm.c:30247
+#: config/tc-mips.c:18453 config/tc-or1k.c:345 config/tc-score.c:7450
 #, c-format
 msgid "cannot represent %s relocation in this object file format"
 msgstr ""
 
-#: config/tc-aarch64.c:8360
+#: config/tc-aarch64.c:8362
 #, c-format
 msgid "cannot do %u-byte relocation"
 msgstr ""
 
-#: config/tc-aarch64.c:8683 config/tc-arm.c:30180 config/tc-score.c:6293
-#: config/tc-score.c:6523 config/tc-score.c:6528
+#: config/tc-aarch64.c:8685 config/tc-arm.c:30721 config/tc-score.c:6275
+#: config/tc-score.c:6505 config/tc-score.c:6510
 msgid "virtual memory exhausted"
 msgstr ""
 
-#: config/tc-aarch64.c:8849 config/tc-arm.c:30523
+#: config/tc-aarch64.c:8851 config/tc-arm.c:31064
 msgid "assemble for big-endian"
 msgstr ""
 
-#: config/tc-aarch64.c:8850 config/tc-arm.c:30524
+#: config/tc-aarch64.c:8852 config/tc-arm.c:31065
 msgid "assemble for little-endian"
 msgstr ""
 
-#: config/tc-aarch64.c:8853
+#: config/tc-aarch64.c:8855
 msgid "temporary switch for dumping"
 msgstr ""
 
-#: config/tc-aarch64.c:8855
+#: config/tc-aarch64.c:8857
 msgid "output verbose error messages"
 msgstr ""
 
-#: config/tc-aarch64.c:8857
+#: config/tc-aarch64.c:8859
 msgid "do not output verbose error messages"
 msgstr ""
 
-#: config/tc-aarch64.c:9137 config/tc-arm.c:31607
+#: config/tc-aarch64.c:9139 config/tc-arm.c:32164
 msgid "invalid architectural extension"
 msgstr ""
 
-#: config/tc-aarch64.c:9162 config/tc-arm.c:31639
+#: config/tc-aarch64.c:9164 config/tc-arm.c:32196
 msgid "must specify extensions to add before specifying those to remove"
 msgstr ""
 
-#: config/tc-aarch64.c:9170 config/tc-arm.c:31647
+#: config/tc-aarch64.c:9172 config/tc-arm.c:32204
 msgid "missing architectural extension"
 msgstr ""
 
-#: config/tc-aarch64.c:9197 config/tc-arm.c:31733
+#: config/tc-aarch64.c:9199 config/tc-arm.c:32290
 #, c-format
 msgid "unknown architectural extension `%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:9221 config/tc-arm.c:31783 config/tc-metag.c:5834
+#: config/tc-aarch64.c:9223 config/tc-arm.c:32340 config/tc-metag.c:5834
 #, c-format
 msgid "missing cpu name `%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:9235 config/tc-aarch64.c:9452 config/tc-arm.c:31818
-#: config/tc-arm.c:32617 config/tc-csky.c:896 config/tc-metag.c:5845
+#: config/tc-aarch64.c:9237 config/tc-aarch64.c:9454 config/tc-arm.c:32375
+#: config/tc-arm.c:33176 config/tc-csky.c:896 config/tc-metag.c:5845
 #, c-format
 msgid "unknown cpu `%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:9253 config/tc-arm.c:31836
+#: config/tc-aarch64.c:9255 config/tc-arm.c:32393
 #, c-format
 msgid "missing architecture name `%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:9267 config/tc-aarch64.c:9499 config/tc-arm.c:31858
-#: config/tc-arm.c:32652 config/tc-arm.c:32682 config/tc-score.c:7703
+#: config/tc-aarch64.c:9269 config/tc-aarch64.c:9501 config/tc-arm.c:32415
+#: config/tc-arm.c:33211 config/tc-arm.c:33241 config/tc-score.c:7685
 #, c-format
 msgid "unknown architecture `%s'\n"
 msgstr ""
 
-#: config/tc-aarch64.c:9290
+#: config/tc-aarch64.c:9292
 #, c-format
 msgid "missing abi name `%s'"
 msgstr ""
 
-#: config/tc-aarch64.c:9301
+#: config/tc-aarch64.c:9303
 #, c-format
 msgid "unknown abi `%s'\n"
 msgstr ""
 
-#: config/tc-aarch64.c:9307
+#: config/tc-aarch64.c:9309
 msgid "<abi name>\t  specify for ABI <abi name>"
 msgstr ""
 
-#: config/tc-aarch64.c:9310 config/tc-arm.c:31945 config/tc-metag.c:5911
+#: config/tc-aarch64.c:9312 config/tc-arm.c:32502 config/tc-metag.c:5911
 msgid "<cpu name>\t  assemble for CPU <cpu name>"
 msgstr ""
 
-#: config/tc-aarch64.c:9312 config/tc-arm.c:31947
+#: config/tc-aarch64.c:9314 config/tc-arm.c:32504
 msgid "<arch name>\t  assemble for architecture <arch name>"
 msgstr ""
 
-#: config/tc-aarch64.c:9351 config/tc-aarch64.c:9371 config/tc-arm.c:32015
-#: config/tc-arm.c:32033 config/tc-arm.c:32053 config/tc-metag.c:5936
+#: config/tc-aarch64.c:9353 config/tc-aarch64.c:9373 config/tc-arm.c:32572
+#: config/tc-arm.c:32590 config/tc-arm.c:32610 config/tc-metag.c:5936
 #, c-format
 msgid "option `-%c%s' is deprecated: %s"
 msgstr ""
 
-#: config/tc-aarch64.c:9391
+#: config/tc-aarch64.c:9393
 #, c-format
 msgid " AArch64-specific assembler options:\n"
 msgstr ""
 
-#: config/tc-aarch64.c:9402 config/tc-arc.c:3583 config/tc-arm.c:32084
+#: config/tc-aarch64.c:9404 config/tc-arc.c:3583 config/tc-arm.c:32641
 #, c-format
 msgid "  -EB                     assemble code for a big-endian cpu\n"
 msgstr ""
 
-#: config/tc-aarch64.c:9407 config/tc-arc.c:3585 config/tc-arm.c:32089
+#: config/tc-aarch64.c:9409 config/tc-arc.c:3585 config/tc-arm.c:32646
 #, c-format
 msgid "  -EL                     assemble code for a little-endian cpu\n"
 msgstr ""
@@ -2340,7 +2381,7 @@ msgid "sequence number in use for !tlsgd!%ld"
 msgstr ""
 
 #: config/tc-alpha.c:1994 config/tc-arc.c:2850 config/tc-mn10200.c:854
-#: config/tc-mn10300.c:1150 config/tc-ppc.c:2079 config/tc-s390.c:676
+#: config/tc-mn10300.c:1150 config/tc-ppc.c:2089 config/tc-s390.c:676
 #: config/tc-tilegx.c:426 config/tc-tilegx.c:476 config/tc-tilepro.c:382
 msgid "operand"
 msgstr ""
@@ -2357,8 +2398,8 @@ msgstr ""
 msgid "can not resolve expression"
 msgstr ""
 
-#: config/tc-alpha.c:3514 config/tc-microblaze.c:204 config/tc-ppc.c:2414
-#: config/tc-ppc.c:6006
+#: config/tc-alpha.c:3514 config/tc-microblaze.c:204 config/tc-ppc.c:2424
+#: config/tc-ppc.c:6019
 #, c-format
 msgid ".COMMon length (%ld.) <0! Ignored."
 msgstr ""
@@ -2397,7 +2438,7 @@ msgstr ""
 msgid ".fmask outside of .ent"
 msgstr ""
 
-#: config/tc-alpha.c:3831 config/tc-score.c:5594 ecoff.c:3209
+#: config/tc-alpha.c:3831 config/tc-score.c:5596 ecoff.c:3209
 msgid ".mask outside of .ent"
 msgstr ""
 
@@ -2409,12 +2450,12 @@ msgstr ""
 msgid "bad .mask directive"
 msgstr ""
 
-#: config/tc-alpha.c:3874 config/tc-mips.c:19896 config/tc-score.c:5735
+#: config/tc-alpha.c:3874 config/tc-mips.c:19935 config/tc-score.c:5730
 #: ecoff.c:3173
 msgid ".frame outside of .ent"
 msgstr ""
 
-#: config/tc-alpha.c:3885 config/tc-mips.c:19907 ecoff.c:3184
+#: config/tc-alpha.c:3885 config/tc-mips.c:19946 ecoff.c:3184
 msgid "bad .frame directive"
 msgstr ""
 
@@ -2517,7 +2558,7 @@ msgstr ""
 msgid "No symbol after .code_address"
 msgstr ""
 
-#: config/tc-alpha.c:4771 config/tc-score.c:5600
+#: config/tc-alpha.c:4771 config/tc-score.c:5602
 msgid "Bad .mask directive"
 msgstr ""
 
@@ -2580,8 +2621,8 @@ msgid "internal error: can't hash macro `%s': %s"
 msgstr ""
 
 #: config/tc-alpha.c:5551 config/tc-arc.c:2503 config/tc-arc.c:2517
-#: config/tc-arm.c:872 config/tc-xtensa.c:5445 config/tc-xtensa.c:5521
-#: config/tc-xtensa.c:5638 config/tc-z80.c:3286
+#: config/tc-arm.c:896 config/tc-xtensa.c:5465 config/tc-xtensa.c:5541
+#: config/tc-xtensa.c:5658 config/tc-z80.c:3626
 msgid "syntax error"
 msgstr ""
 
@@ -2630,7 +2671,7 @@ msgstr ""
 
 #: config/tc-alpha.c:6242 config/tc-arc.c:3261 config/tc-csky.c:5152
 #: config/tc-tilegx.c:1749 config/tc-tilepro.c:1529 config/tc-wasm32.c:813
-#: config/tc-xtensa.c:6142
+#: config/tc-xtensa.c:6168
 #, c-format
 msgid "cannot represent `%s' relocation in object file"
 msgstr ""
@@ -2680,8 +2721,8 @@ msgstr ""
 msgid "unknown architecture: %s\n"
 msgstr ""
 
-#: config/tc-arc.c:898 config/tc-ia64.c:7490 config/tc-riscv.c:762
-#: config/tc-riscv.c:3205 config/tc-tilegx.c:262
+#: config/tc-arc.c:898 config/tc-ia64.c:7490 config/tc-riscv.c:1091
+#: config/tc-riscv.c:3705 config/tc-tilegx.c:262
 msgid "Could not set architecture and machine"
 msgstr ""
 
@@ -2713,16 +2754,16 @@ msgstr ""
 msgid "Brackets in operand field incorrect"
 msgstr ""
 
-#: config/tc-arc.c:1340 config/tc-xtensa.c:2058
+#: config/tc-arc.c:1340 config/tc-xtensa.c:2064
 msgid "extra comma"
 msgstr ""
 
 #: config/tc-arc.c:1342 config/tc-pru.c:1450 config/tc-pru.c:1719
-#: config/tc-xtensa.c:2062
+#: config/tc-xtensa.c:2068
 msgid "missing argument"
 msgstr ""
 
-#: config/tc-arc.c:1344 config/tc-xtensa.c:2064
+#: config/tc-arc.c:1344 config/tc-xtensa.c:2070
 msgid "missing comma or colon"
 msgstr ""
 
@@ -2777,7 +2818,7 @@ msgstr ""
 #: config/tc-h8300.c:117 config/tc-h8300.c:128 config/tc-h8300.c:243
 #: config/tc-hppa.c:6821 config/tc-hppa.c:6827 config/tc-hppa.c:6833
 #: config/tc-hppa.c:6839 config/tc-hppa.c:8227 config/tc-lm32.c:197
-#: config/tc-mips.c:3691 config/tc-mips.c:4199 config/tc-mn10300.c:935
+#: config/tc-mips.c:3694 config/tc-mips.c:4202 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"
@@ -2913,7 +2954,7 @@ msgid "Insn %s has an instruction %s with limm in its delay slot."
 msgstr ""
 
 #: config/tc-arc.c:4279 config/tc-microblaze.c:2554 config/tc-mn10300.c:1069
-#: config/tc-sh.c:418 config/tc-z80.c:1040 read.c:4577
+#: config/tc-sh.c:418 config/tc-z80.c:1101 read.c:4578
 #, c-format
 msgid "unsupported BFD relocation size %u"
 msgstr ""
@@ -3021,935 +3062,947 @@ msgstr ""
 msgid "Overwrite explicitly set Tag_ARC_ABI_rf16 to full register file"
 msgstr ""
 
-#: config/tc-arm.c:684
+#: config/tc-arm.c:708
 msgid "ARM register expected"
 msgstr ""
 
-#: config/tc-arm.c:685
+#: config/tc-arm.c:709
 msgid "bad or missing co-processor number"
 msgstr ""
 
-#: config/tc-arm.c:686
+#: config/tc-arm.c:710
 msgid "co-processor register expected"
 msgstr ""
 
-#: config/tc-arm.c:687
+#: config/tc-arm.c:711
 msgid "FPA register expected"
 msgstr ""
 
-#: config/tc-arm.c:688
+#: config/tc-arm.c:712
 msgid "VFP single precision register expected"
 msgstr ""
 
-#: config/tc-arm.c:689
+#: config/tc-arm.c:713
 msgid "VFP/Neon double precision register expected"
 msgstr ""
 
-#: config/tc-arm.c:690
+#: config/tc-arm.c:714
 msgid "Neon quad precision register expected"
 msgstr ""
 
-#: config/tc-arm.c:691
+#: config/tc-arm.c:715
 msgid "VFP single or double precision register expected"
 msgstr ""
 
-#: config/tc-arm.c:692
+#: config/tc-arm.c:716
 msgid "Neon double or quad precision register expected"
 msgstr ""
 
-#: config/tc-arm.c:693
+#: config/tc-arm.c:717
 msgid "Neon single or double precision register expected"
 msgstr ""
 
-#: config/tc-arm.c:694
+#: config/tc-arm.c:718
 msgid "VFP single, double or Neon quad precision register expected"
 msgstr ""
 
-#: config/tc-arm.c:696
+#: config/tc-arm.c:720
 msgid "VFP system register expected"
 msgstr ""
 
-#: config/tc-arm.c:697
+#: config/tc-arm.c:721
 msgid "Maverick MVF register expected"
 msgstr ""
 
-#: config/tc-arm.c:698
+#: config/tc-arm.c:722
 msgid "Maverick MVD register expected"
 msgstr ""
 
-#: config/tc-arm.c:699
+#: config/tc-arm.c:723
 msgid "Maverick MVFX register expected"
 msgstr ""
 
-#: config/tc-arm.c:700
+#: config/tc-arm.c:724
 msgid "Maverick MVDX register expected"
 msgstr ""
 
-#: config/tc-arm.c:701
+#: config/tc-arm.c:725
 msgid "Maverick MVAX register expected"
 msgstr ""
 
-#: config/tc-arm.c:702
+#: config/tc-arm.c:726
 msgid "Maverick DSPSC register expected"
 msgstr ""
 
-#: config/tc-arm.c:703
+#: config/tc-arm.c:727
 msgid "iWMMXt data register expected"
 msgstr ""
 
-#: config/tc-arm.c:704 config/tc-arm.c:7793
+#: config/tc-arm.c:728 config/tc-arm.c:7842
 msgid "iWMMXt control register expected"
 msgstr ""
 
-#: config/tc-arm.c:705
+#: config/tc-arm.c:729
 msgid "iWMMXt scalar register expected"
 msgstr ""
 
-#: config/tc-arm.c:706
+#: config/tc-arm.c:730
 msgid "XScale accumulator register expected"
 msgstr ""
 
-#: config/tc-arm.c:707
+#: config/tc-arm.c:731
 msgid "MVE vector register expected"
 msgstr ""
 
 #. For score5u : div/mul will pop warning message, mmu/alw/asw will pop error message.
-#: config/tc-arm.c:873 config/tc-score.c:259
+#: config/tc-arm.c:897 config/tc-score.c:259
 msgid "bad arguments to instruction"
 msgstr ""
 
-#: config/tc-arm.c:874
+#: config/tc-arm.c:898
 msgid "r13 not allowed here"
 msgstr ""
 
-#: config/tc-arm.c:875
+#: config/tc-arm.c:899
 msgid "r15 not allowed here"
 msgstr ""
 
-#: config/tc-arm.c:876
+#: config/tc-arm.c:900
 msgid "Odd register not allowed here"
 msgstr ""
 
-#: config/tc-arm.c:877
+#: config/tc-arm.c:901
 msgid "Even register not allowed here"
 msgstr ""
 
-#: config/tc-arm.c:878
+#: config/tc-arm.c:902
 msgid "instruction cannot be conditional"
 msgstr ""
 
-#: config/tc-arm.c:879
+#: config/tc-arm.c:903
 msgid "registers may not be the same"
 msgstr ""
 
-#: config/tc-arm.c:880
+#: config/tc-arm.c:904
 msgid "lo register required"
 msgstr ""
 
-#: config/tc-arm.c:881
+#: config/tc-arm.c:905
 msgid "instruction not supported in Thumb16 mode"
 msgstr ""
 
-#: config/tc-arm.c:882
+#: config/tc-arm.c:906
 msgid "instruction does not accept this addressing mode"
 msgstr ""
 
-#: config/tc-arm.c:883
+#: config/tc-arm.c:907
 msgid "branch must be last instruction in IT block"
 msgstr ""
 
-#: config/tc-arm.c:884
+#: config/tc-arm.c:908
 msgid "branch out of range or not a multiple of 2"
 msgstr ""
 
-#: config/tc-arm.c:885
+#: config/tc-arm.c:909
+msgid "instruction not allowed in VPT block"
+msgstr ""
+
+#: config/tc-arm.c:910
 msgid "instruction not allowed in IT block"
 msgstr ""
 
-#: config/tc-arm.c:886
+#: config/tc-arm.c:911
 msgid "instruction missing MVE vector predication code"
 msgstr ""
 
-#: config/tc-arm.c:887
+#: config/tc-arm.c:912
 msgid "selected FPU does not support instruction"
 msgstr ""
 
-#: config/tc-arm.c:888
+#: config/tc-arm.c:913
 msgid "thumb conditional instruction should be in IT block"
 msgstr ""
 
-#: config/tc-arm.c:890
+#: config/tc-arm.c:915
 msgid "vector predicated instruction should be in VPT/VPST block"
 msgstr ""
 
-#: config/tc-arm.c:891
+#: config/tc-arm.c:916
 msgid "incorrect condition in IT block"
 msgstr ""
 
-#: config/tc-arm.c:892
+#: config/tc-arm.c:917
 msgid "incorrect condition in VPT/VPST block"
 msgstr ""
 
-#: config/tc-arm.c:893
+#: config/tc-arm.c:918
 msgid "IT falling in the range of a previous IT block"
 msgstr ""
 
-#: config/tc-arm.c:894
+#: config/tc-arm.c:919
 msgid "missing .fnstart before unwinding directive"
 msgstr ""
 
-#: config/tc-arm.c:896
+#: config/tc-arm.c:921
 msgid "cannot use register index with PC-relative addressing"
 msgstr ""
 
-#: config/tc-arm.c:898
+#: config/tc-arm.c:923
 msgid "cannot use writeback with PC-relative addressing"
 msgstr ""
 
-#: config/tc-arm.c:900
+#: config/tc-arm.c:925
 msgid "selected processor does not support fp16 instruction"
 msgstr ""
 
-#: config/tc-arm.c:901
+#: config/tc-arm.c:926
 msgid "selected processor does not support bf16 instruction"
 msgstr ""
 
-#: config/tc-arm.c:902
+#: config/tc-arm.c:927
+msgid "selected processor does not support cde instruction"
+msgstr ""
+
+#: config/tc-arm.c:928
+msgid "coprocessor for insn is not enabled for cde"
+msgstr ""
+
+#: config/tc-arm.c:929
 msgid "using "
 msgstr ""
 
-#: config/tc-arm.c:903
+#: config/tc-arm.c:930
 msgid "relocation valid in thumb1 code only"
 msgstr ""
 
-#: config/tc-arm.c:904
+#: config/tc-arm.c:931
 msgid "Warning: instruction is UNPREDICTABLE in an IT block"
 msgstr ""
 
-#: config/tc-arm.c:906
+#: config/tc-arm.c:933
 msgid "Warning: instruction is UNPREDICTABLE in a VPT block"
 msgstr ""
 
-#: config/tc-arm.c:908
+#: config/tc-arm.c:935
 msgid "Warning: instruction is UNPREDICTABLE with PC operand"
 msgstr ""
 
-#: config/tc-arm.c:910
+#: config/tc-arm.c:937
 msgid "Warning: instruction is UNPREDICTABLE with SP operand"
 msgstr ""
 
-#: config/tc-arm.c:912
+#: config/tc-arm.c:939
 msgid "bad type in SIMD instruction"
 msgstr ""
 
-#: config/tc-arm.c:914
+#: config/tc-arm.c:941
 msgid ""
 "GAS auto-detection mode and -march=all is deprecated for MVE, please use a "
 "valid -march or -mcpu option."
 msgstr ""
 
-#: config/tc-arm.c:916
+#: config/tc-arm.c:943
 msgid ""
 "Warning: 32-bit element size and same destination and source operands makes "
 "instruction UNPREDICTABLE"
 msgstr ""
 
-#: config/tc-arm.c:918
+#: config/tc-arm.c:945
 msgid "bad element type for instruction"
 msgstr ""
 
-#: config/tc-arm.c:919
+#: config/tc-arm.c:946
 msgid "MVE vector register Q[0..7] expected"
 msgstr ""
 
-#: config/tc-arm.c:1139
+#: config/tc-arm.c:1166
 msgid "immediate expression requires a # prefix"
 msgstr ""
 
-#: config/tc-arm.c:1168 read.c:3800
+#: config/tc-arm.c:1195 read.c:3801
 msgid "missing expression"
 msgstr ""
 
-#: config/tc-arm.c:1182 config/tc-arm.c:5649 config/tc-score.c:1209
+#: config/tc-arm.c:1209 config/tc-arm.c:5676 config/tc-score.c:1209
 msgid "invalid constant"
 msgstr ""
 
-#: config/tc-arm.c:1360
+#: config/tc-arm.c:1387
 msgid "expected #constant"
 msgstr ""
 
-#: config/tc-arm.c:1532 config/tc-arm.c:1563
+#: config/tc-arm.c:1559 config/tc-arm.c:1590
 #, c-format
 msgid "bad size %d in type specifier"
 msgstr ""
 
-#: config/tc-arm.c:1539
+#: config/tc-arm.c:1566
 msgid "unexpected type character `b' -- did you mean `bf'?"
 msgstr ""
 
-#: config/tc-arm.c:1546
+#: config/tc-arm.c:1573
 #, c-format
 msgid "unexpected character `%c' in type specifier"
 msgstr ""
 
-#: config/tc-arm.c:1613
+#: config/tc-arm.c:1640
 msgid "only one type should be specified for operand"
 msgstr ""
 
-#: config/tc-arm.c:1619
+#: config/tc-arm.c:1646
 msgid "vector type expected"
 msgstr ""
 
-#: config/tc-arm.c:1728
+#: config/tc-arm.c:1755
 msgid "expected MVE register [q0..q7]"
 msgstr ""
 
-#: config/tc-arm.c:1748
+#: config/tc-arm.c:1775
 msgid "can't redefine type for operand"
 msgstr ""
 
-#: config/tc-arm.c:1764
+#: config/tc-arm.c:1791
 msgid "only D and Q registers may be indexed"
 msgstr ""
 
-#: config/tc-arm.c:1766
+#: config/tc-arm.c:1793
 msgid "only D registers may be indexed"
 msgstr ""
 
-#: config/tc-arm.c:1772
+#: config/tc-arm.c:1799
 msgid "can't change index for operand"
 msgstr ""
 
-#: config/tc-arm.c:1835
+#: config/tc-arm.c:1862
 msgid "register operand expected, but got scalar"
 msgstr ""
 
-#: config/tc-arm.c:1886
+#: config/tc-arm.c:1913
 msgid "scalar must have an index"
 msgstr ""
 
-#: config/tc-arm.c:1891 config/tc-arm.c:20150 config/tc-arm.c:20233
-#: config/tc-arm.c:20898
+#: config/tc-arm.c:1918 config/tc-arm.c:20209 config/tc-arm.c:20292
+#: config/tc-arm.c:20957
 msgid "scalar index out of range"
 msgstr ""
 
-#: config/tc-arm.c:1961
+#: config/tc-arm.c:1988
 msgid "r0-r12, lr or APSR expected"
 msgstr ""
 
-#: config/tc-arm.c:1980
+#: config/tc-arm.c:2007
 msgid "bad range in register list"
 msgstr ""
 
-#: config/tc-arm.c:1988 config/tc-arm.c:1997 config/tc-arm.c:2038
+#: config/tc-arm.c:2015 config/tc-arm.c:2024 config/tc-arm.c:2065
 #, c-format
 msgid "Warning: duplicated register (r%d) in register list"
 msgstr ""
 
-#: config/tc-arm.c:2000
+#: config/tc-arm.c:2027
 msgid "Warning: register range not in ascending order"
 msgstr ""
 
-#: config/tc-arm.c:2011
+#: config/tc-arm.c:2038
 msgid "missing `}'"
 msgstr ""
 
-#: config/tc-arm.c:2027
+#: config/tc-arm.c:2054
 msgid "invalid register mask"
 msgstr ""
 
-#: config/tc-arm.c:2171 config/tc-arm.c:2279
+#: config/tc-arm.c:2198 config/tc-arm.c:2306
 msgid "VPR expected last"
 msgstr ""
 
-#: config/tc-arm.c:2177
+#: config/tc-arm.c:2204
 msgid "VFP single precision register or VPR expected"
 msgstr ""
 
 #. regtype == REG_TYPE_VFD.
-#: config/tc-arm.c:2180
+#: config/tc-arm.c:2207
 msgid "VFP/Neon double precision register or VPR expected"
 msgstr ""
 
-#: config/tc-arm.c:2197 config/tc-arm.c:2241
+#: config/tc-arm.c:2224 config/tc-arm.c:2268
 msgid "register out of range in list"
 msgstr ""
 
-#: config/tc-arm.c:2219 config/tc-arm.c:4518 config/tc-arm.c:4652
+#: config/tc-arm.c:2246 config/tc-arm.c:4545 config/tc-arm.c:4679
 msgid "register list not in ascending order"
 msgstr ""
 
-#: config/tc-arm.c:2250
+#: config/tc-arm.c:2277
 msgid "register range not in ascending order"
 msgstr ""
 
-#: config/tc-arm.c:2289
+#: config/tc-arm.c:2316
 msgid "non-contiguous register range"
 msgstr ""
 
-#: config/tc-arm.c:2349
+#: config/tc-arm.c:2376
 msgid "register stride must be 1"
 msgstr ""
 
-#: config/tc-arm.c:2350
+#: config/tc-arm.c:2377
 msgid "register stride must be 1 or 2"
 msgstr ""
 
-#: config/tc-arm.c:2351
+#: config/tc-arm.c:2378
 msgid "mismatched element/structure types in list"
 msgstr ""
 
-#: config/tc-arm.c:2421
+#: config/tc-arm.c:2448
 msgid "don't use Rn-Rm syntax with non-unit stride"
 msgstr ""
 
-#: config/tc-arm.c:2476
+#: config/tc-arm.c:2503
 msgid "error parsing element/structure list"
 msgstr ""
 
-#: config/tc-arm.c:2482
+#: config/tc-arm.c:2509
 msgid "expected }"
 msgstr ""
 
-#: config/tc-arm.c:2573
+#: config/tc-arm.c:2600
 msgid "attempt to redefine typed alias"
 msgstr ""
 
-#: config/tc-arm.c:2708
+#: config/tc-arm.c:2735
 msgid "bad type for register"
 msgstr ""
 
-#: config/tc-arm.c:2719 config/tc-nios2.c:1802
+#: config/tc-arm.c:2746 config/tc-nios2.c:1802
 msgid "expression must be constant"
 msgstr ""
 
-#: config/tc-arm.c:2736
+#: config/tc-arm.c:2763
 msgid "can't redefine the type of a register alias"
 msgstr ""
 
-#: config/tc-arm.c:2743
+#: config/tc-arm.c:2770
 msgid "you must specify a single type only"
 msgstr ""
 
-#: config/tc-arm.c:2756
+#: config/tc-arm.c:2783
 msgid "can't redefine the index of a scalar alias"
 msgstr ""
 
-#: config/tc-arm.c:2764
+#: config/tc-arm.c:2791
 msgid "scalar index must be constant"
 msgstr ""
 
-#: config/tc-arm.c:2773
+#: config/tc-arm.c:2800
 msgid "expecting ]"
 msgstr ""
 
-#: config/tc-arm.c:2825
+#: config/tc-arm.c:2852
 msgid "invalid syntax for .dn directive"
 msgstr ""
 
-#: config/tc-arm.c:2831
+#: config/tc-arm.c:2858
 msgid "invalid syntax for .qn directive"
 msgstr ""
 
-#: config/tc-arm.c:2866
+#: config/tc-arm.c:2893
 #, c-format
 msgid "ignoring attempt to use .unreq on fixed register name: '%s'"
 msgstr ""
 
-#: config/tc-arm.c:3131
+#: config/tc-arm.c:3158
 #, c-format
 msgid "Failed to find real start of function: %s\n"
 msgstr ""
 
-#: config/tc-arm.c:3148
+#: config/tc-arm.c:3175
 msgid "selected processor does not support THUMB opcodes"
 msgstr ""
 
-#: config/tc-arm.c:3161
+#: config/tc-arm.c:3188
 msgid "selected processor does not support ARM opcodes"
 msgstr ""
 
-#: config/tc-arm.c:3173
+#: config/tc-arm.c:3200
 #, c-format
 msgid "invalid instruction size selected (%d)"
 msgstr ""
 
-#: config/tc-arm.c:3205
+#: config/tc-arm.c:3232
 #, c-format
 msgid "invalid operand to .code directive (%d) (expecting 16 or 32)"
 msgstr ""
 
-#: config/tc-arm.c:3260
+#: config/tc-arm.c:3287
 #, c-format
 msgid "expected comma after name \"%s\""
 msgstr ""
 
-#: config/tc-arm.c:3310 config/tc-m32r.c:584
+#: config/tc-arm.c:3337 config/tc-m32r.c:584
 #, c-format
 msgid "symbol `%s' already defined"
 msgstr ""
 
-#: config/tc-arm.c:3343
+#: config/tc-arm.c:3370
 #, c-format
 msgid "unrecognized syntax mode \"%s\""
 msgstr ""
 
-#: config/tc-arm.c:3386
+#: config/tc-arm.c:3413
 msgid ".ref pseudo-op only available with -mccs flag."
 msgstr ""
 
-#: config/tc-arm.c:3427
+#: config/tc-arm.c:3454
 msgid ".asmfunc repeated."
 msgstr ""
 
-#: config/tc-arm.c:3431
+#: config/tc-arm.c:3458
 msgid ".asmfunc without function."
 msgstr ""
 
-#: config/tc-arm.c:3437
+#: config/tc-arm.c:3464
 msgid ".asmfunc pseudo-op only available with -mccs flag."
 msgstr ""
 
-#: config/tc-arm.c:3448
+#: config/tc-arm.c:3475
 msgid ".endasmfunc without a .asmfunc."
 msgstr ""
 
-#: config/tc-arm.c:3452
+#: config/tc-arm.c:3479
 msgid ".endasmfunc without function."
 msgstr ""
 
-#: config/tc-arm.c:3463
+#: config/tc-arm.c:3490
 msgid ".endasmfunc pseudo-op only available with -mccs flag."
 msgstr ""
 
-#: config/tc-arm.c:3472
+#: config/tc-arm.c:3499
 msgid ".def pseudo-op only available with -mccs flag."
 msgstr ""
 
-#: config/tc-arm.c:3630
+#: config/tc-arm.c:3657
 msgid "invalid type for literal pool"
 msgstr ""
 
-#: config/tc-arm.c:3710 config/tc-tic54x.c:5354
+#: config/tc-arm.c:3737 config/tc-tic54x.c:5354
 #, c-format
 msgid "Invalid label '%s'"
 msgstr ""
 
-#: config/tc-arm.c:3886
+#: config/tc-arm.c:3913
 msgid "(plt) is only valid on branch targets"
 msgstr ""
 
-#: config/tc-arm.c:3892 config/tc-csky.c:6992 config/tc-s390.c:1210
-#: config/tc-s390.c:1880 config/tc-xtensa.c:1684
+#: config/tc-arm.c:3919 config/tc-csky.c:6992 config/tc-s390.c:1210
+#: config/tc-s390.c:1880 config/tc-xtensa.c:1690
 #, c-format
 msgid "%s relocations do not fit in %d byte"
 msgid_plural "%s relocations do not fit in %d bytes"
 msgstr[0] ""
 msgstr[1] ""
 
-#: config/tc-arm.c:3974
+#: config/tc-arm.c:4001
 msgid ".inst.n operand too big. Use .inst.w instead"
 msgstr ""
 
-#: config/tc-arm.c:3994
+#: config/tc-arm.c:4021
 msgid "cannot determine Thumb instruction size. Use .inst.n/.inst.w instead"
 msgstr ""
 
-#: config/tc-arm.c:4024
+#: config/tc-arm.c:4051
 msgid "width suffixes are invalid in ARM mode"
 msgstr ""
 
-#: config/tc-arm.c:4066 dwarf2dbg.c:1033
+#: config/tc-arm.c:4093 dwarf2dbg.c:1303
 msgid "expected 0 or 1"
 msgstr ""
 
-#: config/tc-arm.c:4070
+#: config/tc-arm.c:4097
 msgid "missing comma"
 msgstr ""
 
-#: config/tc-arm.c:4103
+#: config/tc-arm.c:4130
 msgid "duplicate .fnstart directive"
 msgstr ""
 
-#: config/tc-arm.c:4134 config/tc-tic6x.c:412
+#: config/tc-arm.c:4161 config/tc-tic6x.c:412
 msgid "duplicate .handlerdata directive"
 msgstr ""
 
-#: config/tc-arm.c:4153
+#: config/tc-arm.c:4180
 msgid ".fnend directive without .fnstart"
 msgstr ""
 
-#: config/tc-arm.c:4220 config/tc-tic6x.c:393
+#: config/tc-arm.c:4247 config/tc-tic6x.c:393
 msgid "personality routine specified for cantunwind frame"
 msgstr ""
 
-#: config/tc-arm.c:4237 config/tc-tic6x.c:454
+#: config/tc-arm.c:4264 config/tc-tic6x.c:454
 msgid "duplicate .personalityindex directive"
 msgstr ""
 
-#: config/tc-arm.c:4244 config/tc-tic6x.c:461
+#: config/tc-arm.c:4271 config/tc-tic6x.c:461
 msgid "bad personality routine number"
 msgstr ""
 
-#: config/tc-arm.c:4266 config/tc-tic6x.c:478
+#: config/tc-arm.c:4293 config/tc-tic6x.c:478
 msgid "duplicate .personality directive"
 msgstr ""
 
-#: config/tc-arm.c:4290 config/tc-arm.c:4420 config/tc-arm.c:4470
+#: config/tc-arm.c:4317 config/tc-arm.c:4447 config/tc-arm.c:4497
 msgid "expected register list"
 msgstr ""
 
-#: config/tc-arm.c:4372
+#: config/tc-arm.c:4399
 msgid "expected , <constant>"
 msgstr ""
 
-#: config/tc-arm.c:4381
+#: config/tc-arm.c:4408
 msgid "number of registers must be in the range [1:4]"
 msgstr ""
 
-#: config/tc-arm.c:4532 config/tc-arm.c:4666
+#: config/tc-arm.c:4559 config/tc-arm.c:4693
 msgid "bad register range"
 msgstr ""
 
-#: config/tc-arm.c:4732
+#: config/tc-arm.c:4759
 msgid "FPA .unwind_save does not take a register list"
 msgstr ""
 
-#: config/tc-arm.c:4760
+#: config/tc-arm.c:4787
 msgid ".unwind_save does not support this kind of register"
 msgstr ""
 
-#: config/tc-arm.c:4799
+#: config/tc-arm.c:4826
 msgid "SP and PC not permitted in .unwind_movsp directive"
 msgstr ""
 
-#: config/tc-arm.c:4804
+#: config/tc-arm.c:4831
 msgid "unexpected .unwind_movsp directive"
 msgstr ""
 
-#: config/tc-arm.c:4831
+#: config/tc-arm.c:4858
 msgid "stack increment must be multiple of 4"
 msgstr ""
 
-#: config/tc-arm.c:4863
+#: config/tc-arm.c:4890
 msgid "expected <reg>, <reg>"
 msgstr ""
 
-#: config/tc-arm.c:4881
+#: config/tc-arm.c:4908
 msgid "register must be either sp or set by a previousunwind_movsp directive"
 msgstr ""
 
-#: config/tc-arm.c:4920
+#: config/tc-arm.c:4947
 msgid "expected <offset>, <opcode>"
 msgstr ""
 
-#: config/tc-arm.c:4932
+#: config/tc-arm.c:4959
 msgid "unwind opcode too long"
 msgstr ""
 
-#: config/tc-arm.c:4937
+#: config/tc-arm.c:4964
 msgid "invalid unwind opcode"
 msgstr ""
 
-#: config/tc-arm.c:5052 config/tc-arm.c:31762
+#: config/tc-arm.c:5079 config/tc-arm.c:32319
 #, c-format
 msgid "unrecognised float16 format \"%s\""
 msgstr ""
 
-#: config/tc-arm.c:5063
+#: config/tc-arm.c:5090
 msgid "float16 format cannot be set more than once, ignoring."
 msgstr ""
 
-#: config/tc-arm.c:5178 config/tc-arm.c:6252 config/tc-arm.c:11606
-#: config/tc-arm.c:12139 config/tc-arm.c:14259 config/tc-arm.c:16192
-#: config/tc-arm.c:16227 config/tc-arm.c:17155 config/tc-arm.c:19082
-#: config/tc-arm.c:19090 config/tc-arm.c:19097 config/tc-arm.c:20739
-#: config/tc-arm.c:28846 config/tc-arm.c:28910 config/tc-arm.c:28918
+#: config/tc-arm.c:5205 config/tc-arm.c:6279 config/tc-arm.c:11655
+#: config/tc-arm.c:12188 config/tc-arm.c:14308 config/tc-arm.c:16259
+#: config/tc-arm.c:16294 config/tc-arm.c:17222 config/tc-arm.c:19143
+#: config/tc-arm.c:19151 config/tc-arm.c:19158 config/tc-arm.c:20798
+#: config/tc-arm.c:29387 config/tc-arm.c:29451 config/tc-arm.c:29459
 #: config/tc-metag.c:5176 config/tc-z8k.c:1151 config/tc-z8k.c:1161
 msgid "immediate value out of range"
 msgstr ""
 
-#: config/tc-arm.c:5348
+#: config/tc-arm.c:5375
 msgid "invalid FPA immediate expression"
 msgstr ""
 
-#: config/tc-arm.c:5533
+#: config/tc-arm.c:5560
 msgid "'UXTW' not allowed here"
 msgstr ""
 
-#: config/tc-arm.c:5541
+#: config/tc-arm.c:5568
 msgid "'LSL' or 'ASR' required"
 msgstr ""
 
-#: config/tc-arm.c:5549
+#: config/tc-arm.c:5576
 msgid "'LSL' required"
 msgstr ""
 
-#: config/tc-arm.c:5557
+#: config/tc-arm.c:5584
 msgid "'ASR' required"
 msgstr ""
 
-#: config/tc-arm.c:5564
+#: config/tc-arm.c:5591
 msgid "'UXTW' required"
 msgstr ""
 
-#: config/tc-arm.c:5643
+#: config/tc-arm.c:5670
 msgid "invalid rotation"
 msgstr ""
 
-#: config/tc-arm.c:5825 config/tc-arm.c:6030
+#: config/tc-arm.c:5852 config/tc-arm.c:6057
 msgid "unknown group relocation"
 msgstr ""
 
-#: config/tc-arm.c:5861
+#: config/tc-arm.c:5888
 msgid "alignment must be constant"
 msgstr ""
 
-#: config/tc-arm.c:6064
+#: config/tc-arm.c:6091
 msgid "this group relocation is not allowed on this instruction"
 msgstr ""
 
-#: config/tc-arm.c:6120
+#: config/tc-arm.c:6147
 msgid "'}' expected at end of 'option' field"
 msgstr ""
 
-#: config/tc-arm.c:6125
+#: config/tc-arm.c:6152
 msgid "cannot combine index with option"
 msgstr ""
 
-#: config/tc-arm.c:6390
+#: config/tc-arm.c:6417
 msgid "unexpected bit specified after APSR"
 msgstr ""
 
-#: config/tc-arm.c:6402
+#: config/tc-arm.c:6429
 msgid "selected processor does not support DSP extension"
 msgstr ""
 
-#: config/tc-arm.c:6414
+#: config/tc-arm.c:6441
 msgid "bad bitmask specified after APSR"
 msgstr ""
 
-#: config/tc-arm.c:6438
+#: config/tc-arm.c:6465
 msgid "writing to APSR without specifying a bitmask is deprecated"
 msgstr ""
 
-#: config/tc-arm.c:6450 config/tc-arm.c:13362 config/tc-arm.c:13407
-#: config/tc-arm.c:13411
+#: config/tc-arm.c:6477 config/tc-arm.c:13411 config/tc-arm.c:13456
+#: config/tc-arm.c:13460
 msgid "selected processor does not support requested special purpose register"
 msgstr ""
 
-#: config/tc-arm.c:6455
+#: config/tc-arm.c:6482
 msgid "flag for {c}psr instruction expected"
 msgstr ""
 
-#: config/tc-arm.c:6513
+#: config/tc-arm.c:6540
 msgid "unrecognized CPS flag"
 msgstr ""
 
-#: config/tc-arm.c:6520
+#: config/tc-arm.c:6547
 msgid "missing CPS flags"
 msgstr ""
 
-#: config/tc-arm.c:6543 config/tc-arm.c:6549
+#: config/tc-arm.c:6570 config/tc-arm.c:6576
 msgid "valid endian specifiers are be or le"
 msgstr ""
 
-#: config/tc-arm.c:6571
+#: config/tc-arm.c:6598
 msgid "missing rotation field after comma"
 msgstr ""
 
-#: config/tc-arm.c:6586
+#: config/tc-arm.c:6613
 msgid "rotation can only be 0, 8, 16, or 24"
 msgstr ""
 
-#: config/tc-arm.c:6615
+#: config/tc-arm.c:6642
 msgid "condition required"
 msgstr ""
 
-#: config/tc-arm.c:6657 config/tc-arm.c:9775
+#: config/tc-arm.c:6684 config/tc-arm.c:9824
 msgid "'[' expected"
 msgstr ""
 
-#: config/tc-arm.c:6670
+#: config/tc-arm.c:6697
 msgid "',' expected"
 msgstr ""
 
-#: config/tc-arm.c:6687
+#: config/tc-arm.c:6714
 msgid "invalid shift"
 msgstr ""
 
-#: config/tc-arm.c:6767
+#: config/tc-arm.c:6794
 msgid "expected ARM or MVE vector register"
 msgstr ""
 
-#: config/tc-arm.c:6816
+#: config/tc-arm.c:6843
 msgid "can't use Neon quad register here"
 msgstr ""
 
-#: config/tc-arm.c:6885
+#: config/tc-arm.c:6912
 msgid "expected <Rm> or <Dm> or <Qm> operand"
 msgstr ""
 
-#: config/tc-arm.c:6985
+#: config/tc-arm.c:7012
 msgid "VFP single, double or MVE vector register expected"
 msgstr ""
 
-#: config/tc-arm.c:7005
+#: config/tc-arm.c:7032
 msgid "parse error"
 msgstr ""
 
-#: config/tc-arm.c:7299
+#: config/tc-arm.c:7334
 msgid "immediate value 48 or 64 expected"
 msgstr ""
 
 #. ISB can only take SY as an option.
-#: config/tc-arm.c:7348
+#: config/tc-arm.c:7383
 msgid "invalid barrier type"
 msgstr ""
 
-#: config/tc-arm.c:7511
+#: config/tc-arm.c:7557
 msgid "only floating point zero is allowed as immediate value"
 msgstr ""
 
-#: config/tc-arm.c:7606
+#: config/tc-arm.c:7652
 msgid "immediate value is out of range"
 msgstr ""
 
-#: config/tc-arm.c:7778
+#: config/tc-arm.c:7827
 msgid "iWMMXt data or control register expected"
 msgstr ""
 
-#: config/tc-arm.c:7819
+#: config/tc-arm.c:7868
 msgid "Banked registers are not available with this architecture."
 msgstr ""
 
-#: config/tc-arm.c:8067
+#: config/tc-arm.c:8116
 msgid "operand must be LR register"
 msgstr ""
 
-#: config/tc-arm.c:8138 config/tc-score.c:264
+#: config/tc-arm.c:8187 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:8188
+#: config/tc-arm.c:8237
 msgid "use of r13 is deprecated"
 msgstr ""
 
-#: config/tc-arm.c:8206 config/tc-arm.c:20447
+#: config/tc-arm.c:8255 config/tc-arm.c:20506
 msgid ""
 "ARMv8.2 scalar fp16 instruction cannot be conditional, the behaviour is "
 "UNPREDICTABLE"
 msgstr ""
 
-#: config/tc-arm.c:8281
+#: config/tc-arm.c:8330
 msgid "D register out of range for selected VFP version"
 msgstr ""
 
-#: config/tc-arm.c:8378 config/tc-arm.c:11301
+#: config/tc-arm.c:8427 config/tc-arm.c:11350
 msgid "Instruction does not support =N addresses"
 msgstr ""
 
-#: config/tc-arm.c:8386
+#: config/tc-arm.c:8435
 msgid "instruction does not accept preindexed addressing"
 msgstr ""
 
 #. unindexed - only for coprocessor
-#: config/tc-arm.c:8402 config/tc-arm.c:11364
+#: config/tc-arm.c:8451 config/tc-arm.c:11413
 msgid "instruction does not accept unindexed addressing"
 msgstr ""
 
-#: config/tc-arm.c:8410
+#: config/tc-arm.c:8459
 msgid "destination register same as write-back base"
 msgstr ""
 
-#: config/tc-arm.c:8411
+#: config/tc-arm.c:8460
 msgid "source register same as write-back base"
 msgstr ""
 
-#: config/tc-arm.c:8461
+#: config/tc-arm.c:8510
 msgid "use of PC in this instruction is deprecated"
 msgstr ""
 
-#: config/tc-arm.c:8484
+#: config/tc-arm.c:8533
 msgid "instruction does not accept scaled register index"
 msgstr ""
 
-#: config/tc-arm.c:8789
+#: config/tc-arm.c:8838
 msgid "invalid pseudo operation"
 msgstr ""
 
-#: config/tc-arm.c:9032
+#: config/tc-arm.c:9081
 msgid "invalid co-processor operand"
 msgstr ""
 
-#: config/tc-arm.c:9048
+#: config/tc-arm.c:9097
 msgid "instruction does not support unindexed addressing"
 msgstr ""
 
-#: config/tc-arm.c:9063
+#: config/tc-arm.c:9112
 msgid "pc may not be used with write-back"
 msgstr ""
 
-#: config/tc-arm.c:9068
+#: config/tc-arm.c:9117
 msgid "instruction does not support writeback"
 msgstr ""
 
-#: config/tc-arm.c:9174
+#: config/tc-arm.c:9223
 msgid "Rn must not overlap other operands"
 msgstr ""
 
-#: config/tc-arm.c:9179
+#: config/tc-arm.c:9228
 msgid "swp{b} use is obsoleted for ARMv8 and later"
 msgstr ""
 
-#: config/tc-arm.c:9182
+#: config/tc-arm.c:9231
 msgid "swp{b} use is deprecated for ARMv6 and ARMv7"
 msgstr ""
 
-#: config/tc-arm.c:9301 config/tc-arm.c:9320 config/tc-arm.c:9333
-#: config/tc-arm.c:11976 config/tc-arm.c:12007 config/tc-arm.c:12029
+#: config/tc-arm.c:9350 config/tc-arm.c:9369 config/tc-arm.c:9382
+#: config/tc-arm.c:12025 config/tc-arm.c:12056 config/tc-arm.c:12078
 msgid "bit-field extends past end of register"
 msgstr ""
 
-#: config/tc-arm.c:9363
+#: config/tc-arm.c:9412
 msgid "the only valid suffixes here are '(plt)' and '(tlscall)'"
 msgstr ""
 
-#: config/tc-arm.c:9416
+#: config/tc-arm.c:9465
 msgid "use of r15 in blx in ARM mode is not really useful"
 msgstr ""
 
-#: config/tc-arm.c:9438
+#: config/tc-arm.c:9487
 msgid "use of r15 in bx in ARM mode is not really useful"
 msgstr ""
 
-#: config/tc-arm.c:9464
+#: config/tc-arm.c:9513
 msgid "use of r15 in bxj is not really useful"
 msgstr ""
 
-#: config/tc-arm.c:9512
+#: config/tc-arm.c:9561
 msgid "This coprocessor register access is deprecated in ARMv8"
 msgstr ""
 
-#: config/tc-arm.c:9720 config/tc-arm.c:9729
+#: config/tc-arm.c:9769 config/tc-arm.c:9778
 msgid "writeback of base register is UNPREDICTABLE"
 msgstr ""
 
-#: config/tc-arm.c:9723
+#: config/tc-arm.c:9772
 msgid "writeback of base register when in register list is UNPREDICTABLE"
 msgstr ""
 
-#: config/tc-arm.c:9733
+#: config/tc-arm.c:9782
 msgid "if writeback register is in list, it must be the lowest reg in the list"
 msgstr ""
 
-#: config/tc-arm.c:9770
+#: config/tc-arm.c:9819
 msgid "first transfer register must be even"
 msgstr ""
 
-#: config/tc-arm.c:9773
+#: config/tc-arm.c:9822
 msgid "can only transfer two consecutive registers"
 msgstr ""
 
@@ -3957,1359 +4010,1421 @@ 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:9774 config/tc-arm.c:9844 config/tc-arm.c:10575
-#: config/tc-arm.c:12851
+#: config/tc-arm.c:9823 config/tc-arm.c:9893 config/tc-arm.c:10624
+#: config/tc-arm.c:12900
 msgid "r14 not allowed here"
 msgstr ""
 
-#: config/tc-arm.c:9786
+#: config/tc-arm.c:9835
 msgid "base register written back, and overlaps second transfer register"
 msgstr ""
 
-#: config/tc-arm.c:9796
+#: config/tc-arm.c:9845
 msgid "index register overlaps transfer register"
 msgstr ""
 
-#: config/tc-arm.c:9825 config/tc-arm.c:10542
+#: config/tc-arm.c:9874 config/tc-arm.c:10591
 msgid "offset must be zero in ARM encoding"
 msgstr ""
 
-#: config/tc-arm.c:9838 config/tc-arm.c:10569
+#: config/tc-arm.c:9887 config/tc-arm.c:10618
 msgid "even register required"
 msgstr ""
 
-#: config/tc-arm.c:9841
+#: config/tc-arm.c:9890
 msgid "can only load two consecutive registers"
 msgstr ""
 
-#: config/tc-arm.c:9859
+#: config/tc-arm.c:9908
 msgid "ldr to register 15 must be 4-byte aligned"
 msgstr ""
 
-#: config/tc-arm.c:9882 config/tc-arm.c:9914
+#: config/tc-arm.c:9931 config/tc-arm.c:9963
 msgid "this instruction requires a post-indexed address"
 msgstr ""
 
-#: config/tc-arm.c:9941
+#: config/tc-arm.c:9990
 msgid "Rd and Rm should be different in mla"
 msgstr ""
 
-#: config/tc-arm.c:9968 config/tc-arm.c:13226
+#: config/tc-arm.c:10017 config/tc-arm.c:13275
 msgid ":lower16: not allowed in this instruction"
 msgstr ""
 
-#: config/tc-arm.c:9970 config/tc-arm.c:13231
+#: config/tc-arm.c:10019 config/tc-arm.c:13280
 msgid ":upper16: not allowed in this instruction"
 msgstr ""
 
-#: config/tc-arm.c:9987
+#: config/tc-arm.c:10036
 msgid "operand 1 must be FPSCR"
 msgstr ""
 
-#: config/tc-arm.c:10040 config/tc-arm.c:10049 config/tc-arm.c:10103
-#: config/tc-arm.c:10112
+#: config/tc-arm.c:10089 config/tc-arm.c:10098 config/tc-arm.c:10152
+#: config/tc-arm.c:10161
 msgid "selected processor does not support instruction"
 msgstr ""
 
-#: config/tc-arm.c:10052 config/tc-arm.c:10115
+#: config/tc-arm.c:10101 config/tc-arm.c:10164
 msgid "accessing MVE system register without MVE is UNPREDICTABLE"
 msgstr ""
 
-#: config/tc-arm.c:10143 config/tc-arm.c:13345
+#: config/tc-arm.c:10192 config/tc-arm.c:13394
 msgid "bad register for mrs"
 msgstr ""
 
-#: config/tc-arm.c:10150 config/tc-arm.c:13369
+#: config/tc-arm.c:10199 config/tc-arm.c:13418
 msgid "'APSR', 'CPSR' or 'SPSR' expected"
 msgstr ""
 
-#: config/tc-arm.c:10191
+#: config/tc-arm.c:10240
 msgid "Rd and Rm should be different in mul"
 msgstr ""
 
-#: config/tc-arm.c:10210 config/tc-arm.c:10487 config/tc-arm.c:13508
+#: config/tc-arm.c:10259 config/tc-arm.c:10536 config/tc-arm.c:13557
 msgid "rdhi and rdlo must be different"
 msgstr ""
 
-#: config/tc-arm.c:10216
+#: config/tc-arm.c:10265
 msgid "rdhi, rdlo and rm must all be different"
 msgstr ""
 
-#: config/tc-arm.c:10282
+#: config/tc-arm.c:10331
 msgid "'[' expected after PLD mnemonic"
 msgstr ""
 
-#: config/tc-arm.c:10284 config/tc-arm.c:10299
+#: config/tc-arm.c:10333 config/tc-arm.c:10348
 msgid "post-indexed expression used in preload instruction"
 msgstr ""
 
-#: config/tc-arm.c:10286 config/tc-arm.c:10301
+#: config/tc-arm.c:10335 config/tc-arm.c:10350
 msgid "writeback used in preload instruction"
 msgstr ""
 
-#: config/tc-arm.c:10288 config/tc-arm.c:10303
+#: config/tc-arm.c:10337 config/tc-arm.c:10352
 msgid "unindexed addressing used in preload instruction"
 msgstr ""
 
-#: config/tc-arm.c:10297
+#: config/tc-arm.c:10346
 msgid "'[' expected after PLI mnemonic"
 msgstr ""
 
-#: config/tc-arm.c:10312 config/tc-arm.c:13677
+#: config/tc-arm.c:10361 config/tc-arm.c:13726
 msgid "push/pop do not support {reglist}^"
 msgstr ""
 
-#: config/tc-arm.c:10390 config/tc-arm.c:13854
+#: config/tc-arm.c:10439 config/tc-arm.c:13903
 msgid "setend use is deprecated for ARMv8"
 msgstr ""
 
-#: config/tc-arm.c:10411 config/tc-arm.c:13915 config/tc-arm.c:13947
-#: config/tc-arm.c:13990
+#: config/tc-arm.c:10460 config/tc-arm.c:13964 config/tc-arm.c:13996
+#: config/tc-arm.c:14039
 msgid "extraneous shift as part of operand to shift insn"
 msgstr ""
 
-#: config/tc-arm.c:10421 config/tc-arm.c:14053
+#: config/tc-arm.c:10470 config/tc-arm.c:14102
 msgid "immediate too large (bigger than 0xF)"
 msgstr ""
 
-#: config/tc-arm.c:10445 config/tc-arm.c:10454
+#: config/tc-arm.c:10494 config/tc-arm.c:10503
 msgid "selected processor does not support SETPAN instruction"
 msgstr ""
 
-#: config/tc-arm.c:10513
+#: config/tc-arm.c:10562
 msgid "SRS base register must be r13"
 msgstr ""
 
-#: config/tc-arm.c:10572
+#: config/tc-arm.c:10621
 msgid "can only store two consecutive registers"
 msgstr ""
 
-#: config/tc-arm.c:10694 config/tc-arm.c:10715
+#: config/tc-arm.c:10743 config/tc-arm.c:10764
 msgid "only two consecutive VFP SP registers allowed here"
 msgstr ""
 
-#: config/tc-arm.c:10743 config/tc-arm.c:10758
+#: config/tc-arm.c:10792 config/tc-arm.c:10807
 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:10887
+#: config/tc-arm.c:10936
 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:10894
+#: config/tc-arm.c:10943
 msgid "immediate value out of range, expected range [1, 32]"
 msgstr ""
 
-#: config/tc-arm.c:10960
+#: config/tc-arm.c:11009
 msgid "this instruction does not support indexing"
 msgstr ""
 
-#: config/tc-arm.c:10983
+#: config/tc-arm.c:11032
 msgid "only r15 allowed here"
 msgstr ""
 
-#: config/tc-arm.c:11118
+#: config/tc-arm.c:11167
 msgid "immediate operand requires iWMMXt2"
 msgstr ""
 
-#: config/tc-arm.c:11262
+#: config/tc-arm.c:11311
 msgid "shift by register not allowed in thumb mode"
 msgstr ""
 
-#: config/tc-arm.c:11274 config/tc-arm.c:14099 config/tc-arm.c:28140
+#: config/tc-arm.c:11323 config/tc-arm.c:14148 config/tc-arm.c:28678
 msgid "shift expression is too large"
 msgstr ""
 
-#: config/tc-arm.c:11307
+#: config/tc-arm.c:11356
 msgid "cannot use register index with this instruction"
 msgstr ""
 
-#: config/tc-arm.c:11309
+#: config/tc-arm.c:11358
 msgid "Thumb does not support negative register indexing"
 msgstr ""
 
-#: config/tc-arm.c:11311
+#: config/tc-arm.c:11360
 msgid "Thumb does not support register post-indexing"
 msgstr ""
 
-#: config/tc-arm.c:11313
+#: config/tc-arm.c:11362
 msgid "Thumb does not support register indexing with writeback"
 msgstr ""
 
-#: config/tc-arm.c:11315
+#: config/tc-arm.c:11364
 msgid "Thumb supports only LSL in shifted register indexing"
 msgstr ""
 
-#: config/tc-arm.c:11324 config/tc-arm.c:19815
+#: config/tc-arm.c:11373 config/tc-arm.c:19874
 msgid "shift out of range"
 msgstr ""
 
-#: config/tc-arm.c:11333
+#: config/tc-arm.c:11382
 msgid "cannot use writeback with this instruction"
 msgstr ""
 
-#: config/tc-arm.c:11354
+#: config/tc-arm.c:11403
 msgid "cannot use post-indexing with PC-relative addressing"
 msgstr ""
 
-#: config/tc-arm.c:11355
+#: config/tc-arm.c:11404
 msgid "cannot use post-indexing with this instruction"
 msgstr ""
 
-#: config/tc-arm.c:11601
+#: config/tc-arm.c:11650
 msgid "only SUBS PC, LR, #const allowed"
 msgstr ""
 
-#: config/tc-arm.c:11684 config/tc-arm.c:11844 config/tc-arm.c:11941
-#: config/tc-arm.c:13306 config/tc-arm.c:13614
+#: config/tc-arm.c:11733 config/tc-arm.c:11893 config/tc-arm.c:11990
+#: config/tc-arm.c:13355 config/tc-arm.c:13663
 msgid "shift must be constant"
 msgstr ""
 
-#: config/tc-arm.c:11689
+#: config/tc-arm.c:11738
 msgid "shift value over 3 not allowed in thumb mode"
 msgstr ""
 
-#: config/tc-arm.c:11691
+#: config/tc-arm.c:11740
 msgid "only LSL shift allowed in thumb mode"
 msgstr ""
 
-#: config/tc-arm.c:11715 config/tc-arm.c:11859 config/tc-arm.c:11956
-#: config/tc-arm.c:13319
+#: config/tc-arm.c:11764 config/tc-arm.c:11908 config/tc-arm.c:12005
+#: config/tc-arm.c:13368
 msgid "unshifted register required"
 msgstr ""
 
-#: config/tc-arm.c:11730 config/tc-arm.c:11967 config/tc-arm.c:13469
+#: config/tc-arm.c:11779 config/tc-arm.c:12016 config/tc-arm.c:13518
 msgid "dest must overlap one source register"
 msgstr ""
 
-#: config/tc-arm.c:11862 config/tc-csky.c:5510
+#: config/tc-arm.c:11911 config/tc-csky.c:5510
 msgid "dest and source1 must be the same register"
 msgstr ""
 
-#: config/tc-arm.c:12102
+#: config/tc-arm.c:12151
 msgid ""
 "selected architecture does not support wide conditional branch instruction"
 msgstr ""
 
-#: config/tc-arm.c:12135
+#: config/tc-arm.c:12184
 msgid "instruction is always unconditional"
 msgstr ""
 
-#: config/tc-arm.c:12310
+#: config/tc-arm.c:12359
 msgid "selected processor does not support 'A' form of this instruction"
 msgstr ""
 
-#: config/tc-arm.c:12313
+#: config/tc-arm.c:12362
 msgid "Thumb does not support the 2-argument form of this instruction"
 msgstr ""
 
-#: config/tc-arm.c:12438
+#: config/tc-arm.c:12487
 msgid "SP not allowed in register list"
 msgstr ""
 
-#: config/tc-arm.c:12442 config/tc-arm.c:12549
+#: config/tc-arm.c:12491 config/tc-arm.c:12598
 msgid ""
 "having the base register in the register list when using write back is "
 "UNPREDICTABLE"
 msgstr ""
 
-#: config/tc-arm.c:12450
+#: config/tc-arm.c:12499
 msgid "LR and PC should not both be in register list"
 msgstr ""
 
-#: config/tc-arm.c:12458
+#: config/tc-arm.c:12507
 msgid "PC not allowed in register list"
 msgstr ""
 
-#: config/tc-arm.c:12501
+#: config/tc-arm.c:12550
 msgid "Thumb load/store multiple does not support {reglist}^"
 msgstr ""
 
-#: config/tc-arm.c:12526 config/tc-arm.c:12604
+#: config/tc-arm.c:12575 config/tc-arm.c:12653
 #, c-format
 msgid "value stored for r%d is UNKNOWN"
 msgstr ""
 
-#: config/tc-arm.c:12597
+#: config/tc-arm.c:12646
 msgid "Thumb-2 instruction only valid in unified syntax"
 msgstr ""
 
-#: config/tc-arm.c:12601 config/tc-arm.c:12611
+#: config/tc-arm.c:12650 config/tc-arm.c:12660
 msgid "this instruction will write back the base register"
 msgstr ""
 
-#: config/tc-arm.c:12614
+#: config/tc-arm.c:12663
 msgid "this instruction will not write back the base register"
 msgstr ""
 
-#: config/tc-arm.c:12645
+#: config/tc-arm.c:12694
 msgid "r14 not allowed as first register when second register is omitted"
 msgstr ""
 
-#: config/tc-arm.c:12745
+#: config/tc-arm.c:12794
 msgid ""
 "This instruction may be unpredictable if executed on M-profile cores with "
 "interrupts enabled."
 msgstr ""
 
-#: config/tc-arm.c:12774 config/tc-arm.c:12787 config/tc-arm.c:12823
+#: config/tc-arm.c:12823 config/tc-arm.c:12836 config/tc-arm.c:12872
 msgid "Thumb does not support this addressing mode"
 msgstr ""
 
-#: config/tc-arm.c:12791
+#: config/tc-arm.c:12840
 msgid "byte or halfword not valid for base register"
 msgstr ""
 
-#: config/tc-arm.c:12794
+#: config/tc-arm.c:12843
 msgid "r15 based store not allowed"
 msgstr ""
 
-#: config/tc-arm.c:12796
+#: config/tc-arm.c:12845
 msgid "invalid base register for register offset"
 msgstr ""
 
-#: config/tc-arm.c:12853
+#: config/tc-arm.c:12902
 msgid "r12 not allowed here"
 msgstr ""
 
-#: config/tc-arm.c:12859
+#: config/tc-arm.c:12908
 msgid "base register written back, and overlaps one of transfer registers"
 msgstr ""
 
-#: config/tc-arm.c:12987
+#: config/tc-arm.c:13036
 #, 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:13182
+#: config/tc-arm.c:13231
 msgid "shifts in CMP/MOV instructions are only supported in unified syntax"
 msgstr ""
 
-#: config/tc-arm.c:13210
+#: config/tc-arm.c:13259
 msgid "only lo regs allowed with immediate"
 msgstr ""
 
-#: config/tc-arm.c:13387
+#: config/tc-arm.c:13436
 msgid "Thumb encoding does not support an immediate here"
 msgstr ""
 
-#: config/tc-arm.c:13474
+#: config/tc-arm.c:13523
 msgid "Thumb-2 MUL must not set flags"
 msgstr ""
 
-#: config/tc-arm.c:13539
+#: config/tc-arm.c:13588
 msgid "Thumb does not support NOP with hints"
 msgstr ""
 
-#: config/tc-arm.c:13699 config/tc-arm.c:13711
+#: config/tc-arm.c:13748 config/tc-arm.c:13760
 msgid "invalid register list to push/pop instruction"
 msgstr ""
 
-#: config/tc-arm.c:13974
+#: config/tc-arm.c:14023
 msgid "source1 and dest must be same register"
 msgstr ""
 
-#: config/tc-arm.c:13999
+#: config/tc-arm.c:14048
 msgid "ror #imm not supported"
 msgstr ""
 
-#: config/tc-arm.c:14050
+#: config/tc-arm.c:14099
 msgid "SMC is not permitted on this architecture"
 msgstr ""
 
-#: config/tc-arm.c:14216
+#: config/tc-arm.c:14265
 msgid "Thumb encoding does not support rotation"
 msgstr ""
 
-#: config/tc-arm.c:14236
+#: config/tc-arm.c:14285
 msgid "instruction requires register index"
 msgstr ""
 
-#: config/tc-arm.c:14246
+#: config/tc-arm.c:14295
 msgid "instruction does not allow shifted index"
 msgstr ""
 
-#: config/tc-arm.c:14402 config/tc-arm.c:29281
+#: config/tc-arm.c:14451 config/tc-arm.c:29822
 msgid "out of range label-relative fixup value"
 msgstr ""
 
-#: config/tc-arm.c:14726
+#: config/tc-arm.c:14775
 msgid "invalid neon suffix for non neon instruction"
 msgstr ""
 
-#: config/tc-arm.c:15105 config/tc-arm.c:15458 config/tc-arm.c:16941
-#: config/tc-arm.c:17021 config/tc-arm.c:17078 config/tc-arm.c:18965
-#: config/tc-arm.c:21143 config/tc-arm.c:21330
+#: config/tc-arm.c:15170 config/tc-arm.c:15523 config/tc-arm.c:17008
+#: config/tc-arm.c:17088 config/tc-arm.c:17145 config/tc-arm.c:19026
+#: config/tc-arm.c:21202 config/tc-arm.c:21389
 msgid "invalid instruction shape"
 msgstr ""
 
-#: config/tc-arm.c:15357
+#: config/tc-arm.c:15422
 msgid "types specified in both the mnemonic and operands"
 msgstr ""
 
-#: config/tc-arm.c:15394
+#: config/tc-arm.c:15459
 msgid "operand types can't be inferred"
 msgstr ""
 
-#: config/tc-arm.c:15400
+#: config/tc-arm.c:15465
 msgid "type specifier has the wrong number of parts"
 msgstr ""
 
-#: config/tc-arm.c:15486 config/tc-arm.c:19234 config/tc-arm.c:19241
+#: config/tc-arm.c:15551 config/tc-arm.c:19295 config/tc-arm.c:19302
 msgid "operand size must match register width"
 msgstr ""
 
-#: config/tc-arm.c:15508
+#: config/tc-arm.c:15573
 msgid "inconsistent types in Neon instruction"
 msgstr ""
 
-#: config/tc-arm.c:15927
+#: config/tc-arm.c:15994
 msgid "Type is not allowed for this instruction"
 msgstr ""
 
-#: config/tc-arm.c:16002
+#: config/tc-arm.c:16069
 msgid "MVE vector or ARM register expected"
 msgstr ""
 
-#: config/tc-arm.c:16119
+#: config/tc-arm.c:16186
 msgid "immediate must be either 1, 2, 4 or 8"
 msgstr ""
 
-#: config/tc-arm.c:16276
+#: config/tc-arm.c:16343
 msgid "immediate operand expected in the range [1,8]"
 msgstr ""
 
-#: config/tc-arm.c:16277
+#: config/tc-arm.c:16344
 msgid "immediate operand expected in the range [1,16]"
 msgstr ""
 
-#: config/tc-arm.c:16419
+#: config/tc-arm.c:16486
 msgid "expected LR"
 msgstr ""
 
-#: config/tc-arm.c:16918 config/tc-arm.c:16998 config/tc-arm.c:18601
-#: config/tc-arm.c:20432
+#: config/tc-arm.c:16985 config/tc-arm.c:17065 config/tc-arm.c:18662
+#: config/tc-arm.c:20491
 msgid "immediate out of range for shift"
 msgstr ""
 
-#: config/tc-arm.c:17212
+#: config/tc-arm.c:17279
 msgid "first and second operands shall be the same register"
 msgstr ""
 
-#: config/tc-arm.c:17326 config/tc-arm.c:17388
+#: config/tc-arm.c:17393 config/tc-arm.c:17455
 msgid "destination register and offset register may not be the same"
 msgstr ""
 
-#: config/tc-arm.c:17338 config/tc-arm.c:17457
+#: config/tc-arm.c:17405 config/tc-arm.c:17524
 msgid "immediate must be a multiple of 4 in the range of +/-[0,508]"
 msgstr ""
 
-#: config/tc-arm.c:17340
+#: config/tc-arm.c:17407
 msgid "immediate must be a multiple of 8 in the range of +/-[0,1016]"
 msgstr ""
 
-#: config/tc-arm.c:17361
+#: config/tc-arm.c:17428
 msgid "can not shift offsets when accessing less than half-word"
 msgstr ""
 
-#: config/tc-arm.c:17363
+#: config/tc-arm.c:17430
 msgid ""
 "shift immediate must be 1, 2 or 3 for half-word, word or double-word "
 "accesses respectively"
 msgstr ""
 
-#: config/tc-arm.c:17450
+#: config/tc-arm.c:17517
 msgid "immediate must be in the range of +/-[0,127]"
 msgstr ""
 
-#: config/tc-arm.c:17453
+#: config/tc-arm.c:17520
 msgid "immediate must be a multiple of 2 in the range of +/-[0,254]"
 msgstr ""
 
-#: config/tc-arm.c:17467 config/tc-arm.c:18299
+#: config/tc-arm.c:17534 config/tc-arm.c:18360
 msgid "MVE vector register in the range [Q0..Q7] expected"
 msgstr ""
 
-#: config/tc-arm.c:17783 config/tc-arm.c:19652
+#: config/tc-arm.c:17850 config/tc-arm.c:19713
 msgid "scalar out of range for multiply instruction"
 msgstr ""
 
-#: config/tc-arm.c:17871
+#: config/tc-arm.c:17938
 msgid "index must be in the range 0 to 3"
 msgstr ""
 
-#: config/tc-arm.c:17874
+#: config/tc-arm.c:17941
 msgid "indexed register must be less than 8"
 msgstr ""
 
-#: config/tc-arm.c:18075 config/tc-arm.c:21394
+#: config/tc-arm.c:18142 config/tc-arm.c:21453
 msgid ""
 "Warning: 32-bit element size and same first and third operand makes "
 "instruction UNPREDICTABLE"
 msgstr ""
 
-#: config/tc-arm.c:18440
+#: config/tc-arm.c:18501
 msgid "instruction form not available on this architecture."
 msgstr ""
 
-#: config/tc-arm.c:18443
+#: config/tc-arm.c:18504
 msgid "this instruction implies use of ARMv8.1 AdvSIMD."
 msgstr ""
 
-#: config/tc-arm.c:18550 config/tc-arm.c:18575
+#: config/tc-arm.c:18611 config/tc-arm.c:18636
 msgid "immediate out of range for insert"
 msgstr ""
 
-#: config/tc-arm.c:18722
+#: config/tc-arm.c:18783
 msgid "immediate out of range for narrowing operation"
 msgstr ""
 
-#: config/tc-arm.c:18869
+#: config/tc-arm.c:18930
 msgid "operands 0 and 1 must be the same register"
 msgstr ""
 
-#: config/tc-arm.c:18975 config/tc-arm.c:21242
+#: config/tc-arm.c:19036 config/tc-arm.c:21301
 msgid "invalid rounding mode"
 msgstr ""
 
-#: config/tc-arm.c:19445
+#: config/tc-arm.c:19506
 msgid "operand size must be specified for immediate VMOV"
 msgstr ""
 
-#: config/tc-arm.c:19455
+#: config/tc-arm.c:19516
 msgid "immediate has bits set outside the operand size"
 msgstr ""
 
-#: config/tc-arm.c:19687
+#: config/tc-arm.c:19748
 msgid ""
 "vfmal/vfmsl with FP16 type cannot be conditional, the behaviour is "
 "UNPREDICTABLE"
 msgstr ""
 
-#: config/tc-arm.c:19797
+#: config/tc-arm.c:19856
 msgid "Instruction form not available on this architecture."
 msgstr ""
 
-#: config/tc-arm.c:19851
+#: config/tc-arm.c:19910
 msgid ""
 "Warning: 64-bit element size and same destination and source operands makes "
 "instruction UNPREDICTABLE"
 msgstr ""
 
-#: config/tc-arm.c:19856
+#: config/tc-arm.c:19915
 msgid "elements must be smaller than reversal region"
 msgstr ""
 
-#: config/tc-arm.c:19948
+#: config/tc-arm.c:20007
 msgid "Index one must be [2,3] and index two must be two less than index one."
 msgstr ""
 
-#: config/tc-arm.c:19951
+#: config/tc-arm.c:20010
 msgid "General purpose registers may not be the same"
 msgstr ""
 
-#: config/tc-arm.c:20149 config/tc-arm.c:20232
+#: config/tc-arm.c:20208 config/tc-arm.c:20291
 msgid "bad type for scalar"
 msgstr ""
 
-#: config/tc-arm.c:20288
+#: config/tc-arm.c:20347
 msgid ""
 "immediate constant is valid both as a bit-pattern and a floating point value "
 "(using the fp value)"
 msgstr ""
 
-#: config/tc-arm.c:20340 config/tc-arm.c:20351
+#: config/tc-arm.c:20399 config/tc-arm.c:20410
 msgid "VFP registers must be adjacent"
 msgstr ""
 
-#: config/tc-arm.c:20441
+#: config/tc-arm.c:20500
 msgid "invalid suffix"
 msgstr ""
 
-#: config/tc-arm.c:20593
+#: config/tc-arm.c:20652
 msgid "bad list length for table lookup"
 msgstr ""
 
-#: config/tc-arm.c:20626
+#: config/tc-arm.c:20685
 msgid "writeback (!) must be used for VLDMDB and VSTMDB"
 msgstr ""
 
-#: config/tc-arm.c:20629 config/tc-arm.c:20654 config/tc-arm.c:20675
+#: config/tc-arm.c:20688 config/tc-arm.c:20713 config/tc-arm.c:20734
 msgid "register list must contain at least 1 and at most 16 registers"
 msgstr ""
 
-#: config/tc-arm.c:20697 config/tc-arm.c:20730
+#: config/tc-arm.c:20756 config/tc-arm.c:20789
 msgid "Use of PC here is UNPREDICTABLE"
 msgstr ""
 
-#: config/tc-arm.c:20699
+#: config/tc-arm.c:20758
 msgid "Use of PC here is deprecated"
 msgstr ""
 
-#: config/tc-arm.c:20733
+#: config/tc-arm.c:20792
 msgid "instruction does not accept register index"
 msgstr ""
 
-#: config/tc-arm.c:20736
+#: config/tc-arm.c:20795
 msgid "instruction does not accept PC-relative addressing"
 msgstr ""
 
-#: config/tc-arm.c:20758 config/tc-arm.c:20767
+#: config/tc-arm.c:20817 config/tc-arm.c:20826
 msgid "Instruction not permitted on this architecture"
 msgstr ""
 
-#: config/tc-arm.c:20816
+#: config/tc-arm.c:20875
 msgid "bad alignment"
 msgstr ""
 
-#: config/tc-arm.c:20833
+#: config/tc-arm.c:20892
 msgid "bad list type for instruction"
 msgstr ""
 
-#: config/tc-arm.c:20877
+#: config/tc-arm.c:20936
 msgid "unsupported alignment for instruction"
 msgstr ""
 
-#: config/tc-arm.c:20896 config/tc-arm.c:20990 config/tc-arm.c:21002
-#: config/tc-arm.c:21012 config/tc-arm.c:21026
+#: config/tc-arm.c:20955 config/tc-arm.c:21049 config/tc-arm.c:21061
+#: config/tc-arm.c:21071 config/tc-arm.c:21085
 msgid "bad list length"
 msgstr ""
 
-#: config/tc-arm.c:20901
+#: config/tc-arm.c:20960
 msgid "stride of 2 unavailable when element size is 8"
 msgstr ""
 
-#: config/tc-arm.c:20934 config/tc-arm.c:21010
+#: config/tc-arm.c:20993 config/tc-arm.c:21069
 msgid "can't use alignment with this instruction"
 msgstr ""
 
-#: config/tc-arm.c:21082
+#: config/tc-arm.c:21141
 msgid "post-index must be a register"
 msgstr ""
 
-#: config/tc-arm.c:21084
+#: config/tc-arm.c:21143
 msgid "bad register for post-index"
 msgstr ""
 
-#: config/tc-arm.c:21306
+#: config/tc-arm.c:21365
 msgid "scalar out of range"
 msgstr ""
 
-#: config/tc-arm.c:21439
+#: config/tc-arm.c:21498
 msgid ""
 "Dot Product instructions cannot be conditional,  the behaviour is "
 "UNPREDICTABLE"
 msgstr ""
 
-#: config/tc-arm.c:21514 config/tc-arm.c:21542 config/tc-arm.c:21777
+#: config/tc-arm.c:21573 config/tc-arm.c:21601 config/tc-arm.c:22283
 msgid "index must be 0 or 1"
 msgstr ""
 
-#: config/tc-arm.c:21517 config/tc-arm.c:21545 config/tc-arm.c:21780
+#: config/tc-arm.c:21576 config/tc-arm.c:21604 config/tc-arm.c:22286
 msgid "indexed register must be less than 16"
 msgstr ""
 
-#: config/tc-arm.c:22130 config/tc-arm.c:22234
+#: config/tc-arm.c:21642
+msgid "Register must be r0-r14 except r13, or APSR_nzcv."
+msgstr ""
+
+#: config/tc-arm.c:21645
+msgid "Register must be an even register between r0-r10."
+msgstr ""
+
+#: config/tc-arm.c:21670
+msgid "CDE Coprocessor must be in range 0-7"
+msgstr ""
+
+#: config/tc-arm.c:21704
+msgid "cx1d requires consecutive destination registers."
+msgstr ""
+
+#: config/tc-arm.c:21734
+msgid "cx2d requires consecutive destination registers."
+msgstr ""
+
+#: config/tc-arm.c:21773
+msgid "cx3d requires consecutive destination registers."
+msgstr ""
+
+#: config/tc-arm.c:21965
+msgid "'q' register must be in range 0-7"
+msgstr ""
+
+#: config/tc-arm.c:21968
+msgid "'d' register must be in range 0-15"
+msgstr ""
+
+#: config/tc-arm.c:21970
+msgid "'s' register must be in range 0-31"
+msgstr ""
+
+#: config/tc-arm.c:22025
+msgid "vcx instructions with Q registers require MVE"
+msgstr ""
+
+#: config/tc-arm.c:22030
+msgid ""
+"vcx instructions with S or D registers require either MVE or Armv8-M "
+"floating point etension."
+msgstr ""
+
+#: config/tc-arm.c:22046
+msgid "vcx1 with S or D registers takes immediate within 0-2047"
+msgstr ""
+
+#: config/tc-arm.c:22062
+msgid "vcx2 with S or D registers takes immediate within 0-63"
+msgstr ""
+
+#: config/tc-arm.c:22077
+msgid "vcx2 with S or D registers takes immediate within 0-7"
+msgstr ""
+
+#: config/tc-arm.c:22636 config/tc-arm.c:22740
 msgid "conditional infixes are deprecated in unified syntax"
 msgstr ""
 
-#: config/tc-arm.c:22445
+#: config/tc-arm.c:22951
 msgid "Warning: conditional outside an IT block for Thumb."
 msgstr ""
 
-#: config/tc-arm.c:22771
+#: config/tc-arm.c:23278
 msgid "Short branches, Undefined, SVC, LDM/STM"
 msgstr ""
 
-#: config/tc-arm.c:22772
+#: config/tc-arm.c:23279
 msgid "Miscellaneous 16-bit instructions"
 msgstr ""
 
-#: config/tc-arm.c:22773
+#: config/tc-arm.c:23280
 msgid "ADR"
 msgstr ""
 
-#: config/tc-arm.c:22774
+#: config/tc-arm.c:23281
 msgid "Literal loads"
 msgstr ""
 
-#: config/tc-arm.c:22775
+#: config/tc-arm.c:23282
 msgid "Hi-register ADD, MOV, CMP, BX, BLX using pc"
 msgstr ""
 
-#: config/tc-arm.c:22776
+#: config/tc-arm.c:23283
 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:22779
+#: config/tc-arm.c:23286
 msgid "ADD/SUB sp, sp #imm"
 msgstr ""
 
-#: config/tc-arm.c:22800
+#: config/tc-arm.c:23308
 msgid ""
 "IT blocks containing 32-bit Thumb instructions are performance deprecated in "
 "ARMv8-A and ARMv8-R"
 msgstr ""
 
-#: config/tc-arm.c:22812
+#: config/tc-arm.c:23320
 #, c-format
 msgid ""
 "IT blocks containing 16-bit Thumb instructions of the following class are "
 "performance deprecated in ARMv8-A and ARMv8-R: %s"
 msgstr ""
 
-#: config/tc-arm.c:22826
+#: config/tc-arm.c:23334
 msgid ""
 "IT blocks containing more than one conditional instruction are performance "
 "deprecated in ARMv8-A and ARMv8-R"
 msgstr ""
 
-#: config/tc-arm.c:22944
+#: config/tc-arm.c:23452
 #, c-format
 msgid "bad instruction `%s'"
 msgstr ""
 
-#: config/tc-arm.c:22950
+#: config/tc-arm.c:23458
 msgid "s suffix on comparison instruction is deprecated"
 msgstr ""
 
-#: config/tc-arm.c:22970
+#: config/tc-arm.c:23478
 msgid "SVC is not permitted on this architecture"
 msgstr ""
 
-#: config/tc-arm.c:22972
+#: config/tc-arm.c:23480
 #, c-format
 msgid "selected processor does not support `%s' in Thumb mode"
 msgstr ""
 
-#: config/tc-arm.c:22978
+#: config/tc-arm.c:23486
 msgid "Thumb does not support conditional execution"
 msgstr ""
 
-#: config/tc-arm.c:22998
+#: config/tc-arm.c:23506
 #, c-format
 msgid ""
 "selected processor does not support 32bit wide variant of instruction `%s'"
 msgstr ""
 
-#: config/tc-arm.c:23001
+#: config/tc-arm.c:23509
 #, c-format
 msgid "selected processor does not support `%s' in Thumb-2 mode"
 msgstr ""
 
-#: config/tc-arm.c:23026
+#: config/tc-arm.c:23534
 #, c-format
 msgid "cannot honor width suffix -- `%s'"
 msgstr ""
 
-#: config/tc-arm.c:23068
+#: config/tc-arm.c:23576
 #, c-format
 msgid "selected processor does not support `%s' in ARM mode"
 msgstr ""
 
-#: config/tc-arm.c:23073
+#: config/tc-arm.c:23581
 #, c-format
 msgid "width suffixes are invalid in ARM mode -- `%s'"
 msgstr ""
 
-#: config/tc-arm.c:23106
+#: config/tc-arm.c:23614
 #, c-format
 msgid "attempt to use an ARM instruction on a Thumb-only processor -- `%s'"
 msgstr ""
 
-#: config/tc-arm.c:23124
+#: config/tc-arm.c:23632
 #, c-format
 msgid "section '%s' finished with an open IT block."
 msgstr ""
 
-#: config/tc-arm.c:23127
+#: config/tc-arm.c:23635
 #, c-format
 msgid "section '%s' finished with an open VPT/VPST block."
 msgstr ""
 
-#: config/tc-arm.c:23134
+#: config/tc-arm.c:23642
 msgid "file finished with an open IT block."
 msgstr ""
 
-#: config/tc-arm.c:23136
+#: config/tc-arm.c:23644
 msgid "file finished with an open VPT/VPST block."
 msgstr ""
 
-#: config/tc-arm.c:26787
+#: config/tc-arm.c:27325
 #, c-format
 msgid "alignments greater than %d bytes not supported in .text sections."
 msgstr ""
 
-#: config/tc-arm.c:27054 config/tc-ia64.c:3594
+#: config/tc-arm.c:27592 config/tc-ia64.c:3594
 #, c-format
 msgid "Group section `%s' has no group signature"
 msgstr ""
 
-#: config/tc-arm.c:27100
+#: config/tc-arm.c:27638
 msgid "handlerdata in cantunwind frame"
 msgstr ""
 
-#: config/tc-arm.c:27117
+#: config/tc-arm.c:27655
 msgid "too many unwind opcodes for personality routine 0"
 msgstr ""
 
-#: config/tc-arm.c:27148
+#: config/tc-arm.c:27686
 msgid "attempt to recreate an unwind entry"
 msgstr ""
 
-#: config/tc-arm.c:27158
+#: config/tc-arm.c:27696
 msgid "too many unwind opcodes"
 msgstr ""
 
-#: config/tc-arm.c:27457
+#: config/tc-arm.c:27995
 #, c-format
 msgid "[-mwarn-syms]: Assignment makes a symbol match an ARM instruction: %s"
 msgstr ""
 
-#: config/tc-arm.c:27819 config/tc-arm.c:27887
+#: config/tc-arm.c:28357 config/tc-arm.c:28425
 #, c-format
 msgid "symbol %s is in a different section"
 msgstr ""
 
-#: config/tc-arm.c:27821 config/tc-arm.c:27889
+#: config/tc-arm.c:28359 config/tc-arm.c:28427
 #, c-format
 msgid "symbol %s is weak and may be overridden later"
 msgstr ""
 
-#: config/tc-arm.c:27866 config/tc-arm.c:28238
+#: config/tc-arm.c:28404 config/tc-arm.c:28776
 #, c-format
 msgid "invalid constant (%lx) after fixup"
 msgstr ""
 
-#: config/tc-arm.c:27922
+#: config/tc-arm.c:28460
 #, c-format
 msgid "unable to compute ADRL instructions for PC offset of 0x%lx"
 msgstr ""
 
-#: config/tc-arm.c:27958 config/tc-arm.c:27988
+#: config/tc-arm.c:28496 config/tc-arm.c:28526
 msgid "invalid literal constant: pool needs to be closer"
 msgstr ""
 
-#: config/tc-arm.c:27961 config/tc-arm.c:28010
+#: config/tc-arm.c:28499 config/tc-arm.c:28548
 #, c-format
 msgid "bad immediate value for offset (%ld)"
 msgstr ""
 
-#: config/tc-arm.c:27991
+#: config/tc-arm.c:28529
 #, c-format
 msgid "bad immediate value for 8-bit offset (%ld)"
 msgstr ""
 
-#: config/tc-arm.c:28051
+#: config/tc-arm.c:28589
 msgid "offset not a multiple of 4"
 msgstr ""
 
-#: config/tc-arm.c:28254
+#: config/tc-arm.c:28792
 msgid "invalid smc expression"
 msgstr ""
 
-#: config/tc-arm.c:28264
+#: config/tc-arm.c:28802
 msgid "invalid hvc expression"
 msgstr ""
 
-#: config/tc-arm.c:28275 config/tc-arm.c:28284
+#: config/tc-arm.c:28813 config/tc-arm.c:28822
 msgid "invalid swi expression"
 msgstr ""
 
-#: config/tc-arm.c:28294
+#: config/tc-arm.c:28832
 msgid "invalid expression in load/store multiple"
 msgstr ""
 
-#: config/tc-arm.c:28356
+#: config/tc-arm.c:28894
 #, c-format
 msgid "blx to '%s' an ARM ISA state function changed to bl"
 msgstr ""
 
-#: config/tc-arm.c:28375
+#: config/tc-arm.c:28913
 msgid "misaligned branch destination"
 msgstr ""
 
-#: config/tc-arm.c:28496
+#: config/tc-arm.c:29034
 #, c-format
 msgid "blx to Thumb func '%s' from Thumb ISA state changed to bl"
 msgstr ""
 
-#: config/tc-arm.c:28545
+#: config/tc-arm.c:29083
 msgid "Thumb2 branch out of range"
 msgstr ""
 
-#: config/tc-arm.c:28597 config/tc-arm.c:28630
+#: config/tc-arm.c:29135 config/tc-arm.c:29168
 msgid "Relocation supported only in FDPIC mode"
 msgstr ""
 
-#: config/tc-arm.c:28660
+#: config/tc-arm.c:29198
 msgid "rel31 relocation overflow"
 msgstr ""
 
-#: config/tc-arm.c:28682 config/tc-arm.c:28688 config/tc-arm.c:28692
-#: config/tc-arm.c:28739
+#: config/tc-arm.c:29220 config/tc-arm.c:29226 config/tc-arm.c:29230
+#: config/tc-arm.c:29277
 msgid "co-processor offset out of range"
 msgstr ""
 
-#: config/tc-arm.c:28756
+#: config/tc-arm.c:29294
 #, c-format
 msgid "invalid offset, target not word aligned (0x%08lX)"
 msgstr ""
 
-#: config/tc-arm.c:28763 config/tc-arm.c:28772 config/tc-arm.c:28780
-#: config/tc-arm.c:28788 config/tc-arm.c:28796
+#: config/tc-arm.c:29300
+msgid "section does not have enough alignment to ensure safe PC-relative loads"
+msgstr ""
+
+#: config/tc-arm.c:29304 config/tc-arm.c:29313 config/tc-arm.c:29321
+#: config/tc-arm.c:29329 config/tc-arm.c:29337
 #, c-format
 msgid "invalid offset, value too big (0x%08lX)"
 msgstr ""
 
-#: config/tc-arm.c:28837
+#: config/tc-arm.c:29378
 msgid "invalid Hi register with immediate"
 msgstr ""
 
-#: config/tc-arm.c:28853
+#: config/tc-arm.c:29394
 msgid "invalid immediate for stack address calculation"
 msgstr ""
 
-#: config/tc-arm.c:28872
+#: config/tc-arm.c:29413
 msgid "address calculation needs a strongly defined nearby symbol"
 msgstr ""
 
-#: config/tc-arm.c:28888
+#: config/tc-arm.c:29429
 msgid "symbol too far away"
 msgstr ""
 
-#: config/tc-arm.c:28900
+#: config/tc-arm.c:29441
 #, c-format
 msgid "invalid immediate for address calculation (value = 0x%08lX)"
 msgstr ""
 
-#: config/tc-arm.c:28930
+#: config/tc-arm.c:29471
 #, c-format
 msgid "invalid immediate: %ld is out of range"
 msgstr ""
 
-#: config/tc-arm.c:28942
+#: config/tc-arm.c:29483
 #, c-format
 msgid "invalid shift value: %ld"
 msgstr ""
 
-#: config/tc-arm.c:29012 config/tc-arm.c:29083
+#: config/tc-arm.c:29553 config/tc-arm.c:29624
 #, c-format
 msgid "the offset 0x%08lX is not representable"
 msgstr ""
 
-#: config/tc-arm.c:29044
+#: config/tc-arm.c:29585
 #, c-format
 msgid "Unable to process relocation for thumb opcode: %lx"
 msgstr ""
 
-#: config/tc-arm.c:29123
+#: config/tc-arm.c:29664
 #, c-format
 msgid "bad offset 0x%08lX (only 12 bits available for the magnitude)"
 msgstr ""
 
-#: config/tc-arm.c:29162
+#: config/tc-arm.c:29703
 #, c-format
 msgid "bad offset 0x%08lX (only 8 bits available for the magnitude)"
 msgstr ""
 
-#: config/tc-arm.c:29202
+#: config/tc-arm.c:29743
 #, c-format
 msgid "bad offset 0x%08lX (must be word-aligned)"
 msgstr ""
 
-#: config/tc-arm.c:29207
+#: config/tc-arm.c:29748
 #, c-format
 msgid "bad offset 0x%08lX (must be an 8-bit number of words)"
 msgstr ""
 
-#: config/tc-arm.c:29428 config/tc-score.c:7379
+#: config/tc-arm.c:29969 config/tc-score.c:7361
 #, c-format
 msgid "bad relocation fixup type (%d)"
 msgstr ""
 
-#: config/tc-arm.c:29546
+#: config/tc-arm.c:30087
 msgid "literal referenced across section boundary"
 msgstr ""
 
-#: config/tc-arm.c:29626
+#: config/tc-arm.c:30167
 msgid "internal relocation (type: IMMEDIATE) not fixed up"
 msgstr ""
 
-#: config/tc-arm.c:29631
+#: config/tc-arm.c:30172
 msgid "ADRL used for a symbol not defined in the same file"
 msgstr ""
 
-#: config/tc-arm.c:29638
+#: config/tc-arm.c:30179
 #, c-format
 msgid "%s used for a symbol not defined in the same file"
 msgstr ""
 
-#: config/tc-arm.c:29654
+#: config/tc-arm.c:30195
 #, c-format
 msgid "undefined local label `%s'"
 msgstr ""
 
-#: config/tc-arm.c:29660
+#: config/tc-arm.c:30201
 msgid "internal_relocation (type: OFFSET_IMM) not fixed up"
 msgstr ""
 
-#: config/tc-arm.c:29682 config/tc-cris.c:4006 config/tc-csky.c:877
+#: config/tc-arm.c:30223 config/tc-cris.c:4006 config/tc-csky.c:877
 #: config/tc-ft32.c:709 config/tc-mcore.c:1928 config/tc-microblaze.c:1995
-#: config/tc-mmix.c:2894 config/tc-moxie.c:825 config/tc-ns32k.c:2248
-#: config/tc-score.c:7466
+#: config/tc-mmix.c:2894 config/tc-moxie.c:823 config/tc-ns32k.c:2248
+#: config/tc-score.c:7448
 msgid "<unknown>"
 msgstr ""
 
-#: config/tc-arm.c:30084
+#: config/tc-arm.c:30625
 #, c-format
 msgid "%s: unexpected function type: %d"
 msgstr ""
 
-#: config/tc-arm.c:30224
+#: config/tc-arm.c:30765
 msgid "use of old and new-style options to set CPU type"
 msgstr ""
 
-#: config/tc-arm.c:30243
+#: config/tc-arm.c:30784
 msgid "use of old and new-style options to set FPU type"
 msgstr ""
 
-#: config/tc-arm.c:30322
+#: config/tc-arm.c:30863
 msgid "hard-float conflicts with specified fpu"
 msgstr ""
 
-#: config/tc-arm.c:30513
+#: config/tc-arm.c:31054
 msgid "generate PIC code"
 msgstr ""
 
-#: config/tc-arm.c:30514
+#: config/tc-arm.c:31055
 msgid "assemble Thumb code"
 msgstr ""
 
-#: config/tc-arm.c:30515
+#: config/tc-arm.c:31056
 msgid "support ARM/Thumb interworking"
 msgstr ""
 
-#: config/tc-arm.c:30517
+#: config/tc-arm.c:31058
 msgid "code uses 32-bit program counter"
 msgstr ""
 
-#: config/tc-arm.c:30518
+#: config/tc-arm.c:31059
 msgid "code uses 26-bit program counter"
 msgstr ""
 
-#: config/tc-arm.c:30519
+#: config/tc-arm.c:31060
 msgid "floating point args are in fp regs"
 msgstr ""
 
-#: config/tc-arm.c:30521
+#: config/tc-arm.c:31062
 msgid "re-entrant code"
 msgstr ""
 
-#: config/tc-arm.c:30522
+#: config/tc-arm.c:31063
 msgid "code is ATPCS conformant"
 msgstr ""
 
 #. These are recognized by the assembler, but have no affect on code.
-#: config/tc-arm.c:30528
+#: config/tc-arm.c:31069
 msgid "use frame pointer"
 msgstr ""
 
-#: config/tc-arm.c:30529
+#: config/tc-arm.c:31070
 msgid "use stack size checking"
 msgstr ""
 
-#: config/tc-arm.c:30532
+#: config/tc-arm.c:31073
 msgid "do not warn on use of deprecated feature"
 msgstr ""
 
-#: config/tc-arm.c:30535
+#: config/tc-arm.c:31076
 msgid ""
 "warn about performance deprecated IT instructions in ARMv8-A and ARMv8-R"
 msgstr ""
 
-#: config/tc-arm.c:30539
+#: config/tc-arm.c:31080
 msgid "warn about symbols that match instruction names [default]"
 msgstr ""
 
-#: config/tc-arm.c:30540
+#: config/tc-arm.c:31081
 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:30556 config/tc-arm.c:30557
+#: config/tc-arm.c:31097 config/tc-arm.c:31098
 msgid "use -mcpu=arm1"
 msgstr ""
 
-#: config/tc-arm.c:30558 config/tc-arm.c:30559
+#: config/tc-arm.c:31099 config/tc-arm.c:31100
 msgid "use -mcpu=arm2"
 msgstr ""
 
-#: config/tc-arm.c:30560 config/tc-arm.c:30561
+#: config/tc-arm.c:31101 config/tc-arm.c:31102
 msgid "use -mcpu=arm250"
 msgstr ""
 
-#: config/tc-arm.c:30562 config/tc-arm.c:30563
+#: config/tc-arm.c:31103 config/tc-arm.c:31104
 msgid "use -mcpu=arm3"
 msgstr ""
 
-#: config/tc-arm.c:30564 config/tc-arm.c:30565
+#: config/tc-arm.c:31105 config/tc-arm.c:31106
 msgid "use -mcpu=arm6"
 msgstr ""
 
-#: config/tc-arm.c:30566 config/tc-arm.c:30567
+#: config/tc-arm.c:31107 config/tc-arm.c:31108
 msgid "use -mcpu=arm600"
 msgstr ""
 
-#: config/tc-arm.c:30568 config/tc-arm.c:30569
+#: config/tc-arm.c:31109 config/tc-arm.c:31110
 msgid "use -mcpu=arm610"
 msgstr ""
 
-#: config/tc-arm.c:30570 config/tc-arm.c:30571
+#: config/tc-arm.c:31111 config/tc-arm.c:31112
 msgid "use -mcpu=arm620"
 msgstr ""
 
-#: config/tc-arm.c:30572 config/tc-arm.c:30573
+#: config/tc-arm.c:31113 config/tc-arm.c:31114
 msgid "use -mcpu=arm7"
 msgstr ""
 
-#: config/tc-arm.c:30574 config/tc-arm.c:30575
+#: config/tc-arm.c:31115 config/tc-arm.c:31116
 msgid "use -mcpu=arm70"
 msgstr ""
 
-#: config/tc-arm.c:30576 config/tc-arm.c:30577
+#: config/tc-arm.c:31117 config/tc-arm.c:31118
 msgid "use -mcpu=arm700"
 msgstr ""
 
-#: config/tc-arm.c:30578 config/tc-arm.c:30579
+#: config/tc-arm.c:31119 config/tc-arm.c:31120
 msgid "use -mcpu=arm700i"
 msgstr ""
 
-#: config/tc-arm.c:30580 config/tc-arm.c:30581
+#: config/tc-arm.c:31121 config/tc-arm.c:31122
 msgid "use -mcpu=arm710"
 msgstr ""
 
-#: config/tc-arm.c:30582 config/tc-arm.c:30583
+#: config/tc-arm.c:31123 config/tc-arm.c:31124
 msgid "use -mcpu=arm710c"
 msgstr ""
 
-#: config/tc-arm.c:30584 config/tc-arm.c:30585
+#: config/tc-arm.c:31125 config/tc-arm.c:31126
 msgid "use -mcpu=arm720"
 msgstr ""
 
-#: config/tc-arm.c:30586 config/tc-arm.c:30587
+#: config/tc-arm.c:31127 config/tc-arm.c:31128
 msgid "use -mcpu=arm7d"
 msgstr ""
 
-#: config/tc-arm.c:30588 config/tc-arm.c:30589
+#: config/tc-arm.c:31129 config/tc-arm.c:31130
 msgid "use -mcpu=arm7di"
 msgstr ""
 
-#: config/tc-arm.c:30590 config/tc-arm.c:30591
+#: config/tc-arm.c:31131 config/tc-arm.c:31132
 msgid "use -mcpu=arm7m"
 msgstr ""
 
-#: config/tc-arm.c:30592 config/tc-arm.c:30593
+#: config/tc-arm.c:31133 config/tc-arm.c:31134
 msgid "use -mcpu=arm7dm"
 msgstr ""
 
-#: config/tc-arm.c:30594 config/tc-arm.c:30595
+#: config/tc-arm.c:31135 config/tc-arm.c:31136
 msgid "use -mcpu=arm7dmi"
 msgstr ""
 
-#: config/tc-arm.c:30596 config/tc-arm.c:30597
+#: config/tc-arm.c:31137 config/tc-arm.c:31138
 msgid "use -mcpu=arm7100"
 msgstr ""
 
-#: config/tc-arm.c:30598 config/tc-arm.c:30599
+#: config/tc-arm.c:31139 config/tc-arm.c:31140
 msgid "use -mcpu=arm7500"
 msgstr ""
 
-#: config/tc-arm.c:30600 config/tc-arm.c:30601
+#: config/tc-arm.c:31141 config/tc-arm.c:31142
 msgid "use -mcpu=arm7500fe"
 msgstr ""
 
-#: config/tc-arm.c:30602 config/tc-arm.c:30603 config/tc-arm.c:30604
-#: config/tc-arm.c:30605
+#: config/tc-arm.c:31143 config/tc-arm.c:31144 config/tc-arm.c:31145
+#: config/tc-arm.c:31146
 msgid "use -mcpu=arm7tdmi"
 msgstr ""
 
-#: config/tc-arm.c:30606 config/tc-arm.c:30607
+#: config/tc-arm.c:31147 config/tc-arm.c:31148
 msgid "use -mcpu=arm710t"
 msgstr ""
 
-#: config/tc-arm.c:30608 config/tc-arm.c:30609
+#: config/tc-arm.c:31149 config/tc-arm.c:31150
 msgid "use -mcpu=arm720t"
 msgstr ""
 
-#: config/tc-arm.c:30610 config/tc-arm.c:30611
+#: config/tc-arm.c:31151 config/tc-arm.c:31152
 msgid "use -mcpu=arm740t"
 msgstr ""
 
-#: config/tc-arm.c:30612 config/tc-arm.c:30613
+#: config/tc-arm.c:31153 config/tc-arm.c:31154
 msgid "use -mcpu=arm8"
 msgstr ""
 
-#: config/tc-arm.c:30614 config/tc-arm.c:30615
+#: config/tc-arm.c:31155 config/tc-arm.c:31156
 msgid "use -mcpu=arm810"
 msgstr ""
 
-#: config/tc-arm.c:30616 config/tc-arm.c:30617
+#: config/tc-arm.c:31157 config/tc-arm.c:31158
 msgid "use -mcpu=arm9"
 msgstr ""
 
-#: config/tc-arm.c:30618 config/tc-arm.c:30619
+#: config/tc-arm.c:31159 config/tc-arm.c:31160
 msgid "use -mcpu=arm9tdmi"
 msgstr ""
 
-#: config/tc-arm.c:30620 config/tc-arm.c:30621
+#: config/tc-arm.c:31161 config/tc-arm.c:31162
 msgid "use -mcpu=arm920"
 msgstr ""
 
-#: config/tc-arm.c:30622 config/tc-arm.c:30623
+#: config/tc-arm.c:31163 config/tc-arm.c:31164
 msgid "use -mcpu=arm940"
 msgstr ""
 
-#: config/tc-arm.c:30624
+#: config/tc-arm.c:31165
 msgid "use -mcpu=strongarm"
 msgstr ""
 
-#: config/tc-arm.c:30626
+#: config/tc-arm.c:31167
 msgid "use -mcpu=strongarm110"
 msgstr ""
 
-#: config/tc-arm.c:30628
+#: config/tc-arm.c:31169
 msgid "use -mcpu=strongarm1100"
 msgstr ""
 
-#: config/tc-arm.c:30630
+#: config/tc-arm.c:31171
 msgid "use -mcpu=strongarm1110"
 msgstr ""
 
-#: config/tc-arm.c:30631
+#: config/tc-arm.c:31172
 msgid "use -mcpu=xscale"
 msgstr ""
 
-#: config/tc-arm.c:30632
+#: config/tc-arm.c:31173
 msgid "use -mcpu=iwmmxt"
 msgstr ""
 
-#: config/tc-arm.c:30633
+#: config/tc-arm.c:31174
 msgid "use -mcpu=all"
 msgstr ""
 
 #. Architecture variants -- don't add any more to this list either.
-#: config/tc-arm.c:30636 config/tc-arm.c:30637
+#: config/tc-arm.c:31177 config/tc-arm.c:31178
 msgid "use -march=armv2"
 msgstr ""
 
-#: config/tc-arm.c:30638 config/tc-arm.c:30639
+#: config/tc-arm.c:31179 config/tc-arm.c:31180
 msgid "use -march=armv2a"
 msgstr ""
 
-#: config/tc-arm.c:30640 config/tc-arm.c:30641
+#: config/tc-arm.c:31181 config/tc-arm.c:31182
 msgid "use -march=armv3"
 msgstr ""
 
-#: config/tc-arm.c:30642 config/tc-arm.c:30643
+#: config/tc-arm.c:31183 config/tc-arm.c:31184
 msgid "use -march=armv3m"
 msgstr ""
 
-#: config/tc-arm.c:30644 config/tc-arm.c:30645
+#: config/tc-arm.c:31185 config/tc-arm.c:31186
 msgid "use -march=armv4"
 msgstr ""
 
-#: config/tc-arm.c:30646 config/tc-arm.c:30647
+#: config/tc-arm.c:31187 config/tc-arm.c:31188
 msgid "use -march=armv4t"
 msgstr ""
 
-#: config/tc-arm.c:30648 config/tc-arm.c:30649
+#: config/tc-arm.c:31189 config/tc-arm.c:31190
 msgid "use -march=armv5"
 msgstr ""
 
-#: config/tc-arm.c:30650 config/tc-arm.c:30651
+#: config/tc-arm.c:31191 config/tc-arm.c:31192
 msgid "use -march=armv5t"
 msgstr ""
 
-#: config/tc-arm.c:30652 config/tc-arm.c:30653
+#: config/tc-arm.c:31193 config/tc-arm.c:31194
 msgid "use -march=armv5te"
 msgstr ""
 
 #. Floating point variants -- don't add any more to this list either.
-#: config/tc-arm.c:30656
+#: config/tc-arm.c:31197
 msgid "use -mfpu=fpe"
 msgstr ""
 
-#: config/tc-arm.c:30657
+#: config/tc-arm.c:31198
 msgid "use -mfpu=fpa10"
 msgstr ""
 
-#: config/tc-arm.c:30658
+#: config/tc-arm.c:31199
 msgid "use -mfpu=fpa11"
 msgstr ""
 
-#: config/tc-arm.c:30660
+#: config/tc-arm.c:31201
 msgid "use either -mfpu=softfpa or -mfpu=softvfp"
 msgstr ""
 
-#: config/tc-arm.c:31706
+#: config/tc-arm.c:32263
 msgid "extension does not apply to the base architecture"
 msgstr ""
 
-#: config/tc-arm.c:31735
+#: config/tc-arm.c:32292
 msgid "architectural extensions must be specified in alphabetical order"
 msgstr ""
 
-#: config/tc-arm.c:31874 config/tc-arm.c:32815
+#: config/tc-arm.c:32431 config/tc-arm.c:33374
 #, c-format
 msgid "unknown floating point format `%s'\n"
 msgstr ""
 
-#: config/tc-arm.c:31890
+#: config/tc-arm.c:32447
 #, c-format
 msgid "unknown floating point abi `%s'\n"
 msgstr ""
 
-#: config/tc-arm.c:31906
+#: config/tc-arm.c:32463
 #, c-format
 msgid "unknown EABI `%s'\n"
 msgstr ""
 
-#: config/tc-arm.c:31926
+#: config/tc-arm.c:32483
 #, c-format
 msgid "unknown implicit IT mode `%s', should be arm, thumb, always, or never."
 msgstr ""
 
-#: config/tc-arm.c:31949 config/tc-metag.c:5913
+#: config/tc-arm.c:32506 config/tc-metag.c:5913
 msgid "<fpu name>\t  assemble for FPU architecture <fpu name>"
 msgstr ""
 
-#: config/tc-arm.c:31951
+#: config/tc-arm.c:32508
 msgid "<abi>\t  assemble for floating point ABI <abi>"
 msgstr ""
 
-#: config/tc-arm.c:31954
+#: config/tc-arm.c:32511
 msgid "<ver>\t\t  assemble for eabi version <ver>"
 msgstr ""
 
-#: config/tc-arm.c:31957
+#: config/tc-arm.c:32514
 msgid "<mode>\t  controls implicit insertion of IT instructions"
 msgstr ""
 
-#: config/tc-arm.c:31959
+#: config/tc-arm.c:32516
 msgid "\t\t\t  TI CodeComposer Studio syntax compatibility mode"
 msgstr ""
 
-#: config/tc-arm.c:31962
+#: config/tc-arm.c:32519
 msgid ""
 "[ieee|alternative]\n"
 "                          set the encoding for half precision floating point "
@@ -5317,32 +5432,32 @@ msgid ""
 "                          or Arm alternative format."
 msgstr ""
 
-#: config/tc-arm.c:32073
+#: config/tc-arm.c:32630
 #, c-format
 msgid " ARM-specific assembler options:\n"
 msgstr ""
 
-#: config/tc-arm.c:32093
+#: config/tc-arm.c:32650
 #, c-format
 msgid "  --fix-v4bx              Allow BX in ARMv4 code\n"
 msgstr ""
 
-#: config/tc-arm.c:32097
+#: config/tc-arm.c:32654
 #, c-format
 msgid "  --fdpic                 generate an FDPIC object file\n"
 msgstr ""
 
-#: config/tc-arm.c:32403
+#: config/tc-arm.c:32962
 msgid "no architecture contains all the instructions used\n"
 msgstr ""
 
-#: config/tc-arm.c:32755
+#: config/tc-arm.c:33314
 #, c-format
 msgid ""
 "architectural extension `%s' is not allowed for the current base architecture"
 msgstr ""
 
-#: config/tc-arm.c:32778
+#: config/tc-arm.c:33337
 #, c-format
 msgid "unknown architecture extension `%s'\n"
 msgstr ""
@@ -5418,7 +5533,7 @@ msgstr ""
 msgid "constant out of 8-bit range: %d"
 msgstr ""
 
-#: config/tc-avr.c:954 config/tc-score.c:1198 read.c:3798
+#: config/tc-avr.c:954 config/tc-score.c:1198 read.c:3799
 msgid "illegal expression"
 msgstr ""
 
@@ -5527,16 +5642,16 @@ msgstr ""
 #. xgettext:c-format.
 #: config/tc-avr.c:1853 config/tc-bfin.c:824 config/tc-d10v.c:1462
 #: config/tc-d30v.c:1771 config/tc-metag.c:7019 config/tc-mn10200.c:779
-#: config/tc-mn10300.c:2177 config/tc-msp430.c:4644 config/tc-ppc.c:7949
+#: config/tc-mn10300.c:2177 config/tc-msp430.c:4644 config/tc-ppc.c:7962
 #: config/tc-spu.c:894 config/tc-spu.c:1105 config/tc-v850.c:3367
-#: config/tc-z80.c:3452
+#: config/tc-z80.c:3811
 #, c-format
 msgid "reloc %d not supported by object file format"
 msgstr ""
 
 #: config/tc-avr.c:1875 config/tc-ft32.c:232 config/tc-h8300.c:1930
-#: config/tc-mcore.c:880 config/tc-microblaze.c:941 config/tc-moxie.c:182
-#: config/tc-pj.c:253 config/tc-sh.c:2196 config/tc-wasm32.c:747
+#: config/tc-mcore.c:880 config/tc-microblaze.c:941 config/tc-moxie.c:180
+#: config/tc-pj.c:253 config/tc-sh.c:2197 config/tc-wasm32.c:747
 #: config/tc-z8k.c:1223
 msgid "can't find opcode "
 msgstr ""
@@ -5672,7 +5787,7 @@ msgstr ""
 msgid "convert_frag called"
 msgstr ""
 
-#: config/tc-bpf.c:286 config/tc-sparc.h:68 config/tc-z80.h:56
+#: config/tc-bpf.c:286 config/tc-sparc.h:68 config/tc-z80.h:55
 msgid "estimate_size_before_relax called"
 msgstr ""
 
@@ -5707,7 +5822,7 @@ msgstr ""
 msgid "internal error: reloc %d (`%s') not supported by object file format"
 msgstr ""
 
-#: config/tc-cr16.c:696 config/tc-i386.c:12966 config/tc-s390.c:2121
+#: config/tc-cr16.c:696 config/tc-i386.c:13591 config/tc-s390.c:2121
 msgid "GOT already in symbol table"
 msgstr ""
 
@@ -6120,13 +6235,13 @@ msgstr ""
 msgid "invalid <arch> in --march=<arch>: %s"
 msgstr ""
 
-#: config/tc-cris.c:3958 config/tc-ft32.c:689 config/tc-moxie.c:778
+#: config/tc-cris.c:3958 config/tc-ft32.c:689 config/tc-moxie.c:776
 msgid ""
 "Semantics error.  This type of operand can not be relocated, it must be an "
 "assembly-time constant"
 msgstr ""
 
-#: config/tc-cris.c:4007 config/tc-ft32.c:710 config/tc-moxie.c:826
+#: config/tc-cris.c:4007 config/tc-ft32.c:710 config/tc-moxie.c:824
 #, c-format
 msgid "Cannot generate relocation type for symbol %s, code %s"
 msgstr ""
@@ -6526,7 +6641,7 @@ msgstr ""
 msgid "more than 65K literal pools"
 msgstr ""
 
-#: config/tc-csky.c:1804 read.c:3558 read.c:4867
+#: config/tc-csky.c:1804 read.c:3559 read.c:4868
 #, c-format
 msgid "bad floating literal: %s"
 msgstr ""
@@ -6535,8 +6650,8 @@ msgstr ""
 msgid "missing ']'"
 msgstr ""
 
-#: config/tc-csky.c:1951 config/tc-mips.c:14328 config/tc-mips.c:14392
-#: config/tc-mips.c:14403 config/tc-score.c:2690 config/tc-score.c:2736
+#: config/tc-csky.c:1951 config/tc-mips.c:14367 config/tc-mips.c:14431
+#: config/tc-mips.c:14442 config/tc-score.c:2690 config/tc-score.c:2736
 msgid "unrecognized opcode"
 msgstr ""
 
@@ -6557,7 +6672,7 @@ msgstr ""
 msgid "second operand must be 1"
 msgstr ""
 
-#: config/tc-csky.c:5505 config/tc-xtensa.c:1974
+#: config/tc-csky.c:5505 config/tc-xtensa.c:1980
 msgid "register number out of range"
 msgstr ""
 
@@ -6849,9 +6964,10 @@ msgstr ""
 msgid ".endfunc missing for previous .proc"
 msgstr ""
 
-#: config/tc-dlx.c:295 config/tc-mips.c:3703 config/tc-nios2.c:3637
+#: config/tc-dlx.c:295 config/tc-mips.c:3706 config/tc-nios2.c:3637
 #: config/tc-nios2.c:3651 config/tc-nios2.c:3666 config/tc-pru.c:1574
-#: config/tc-pru.c:1588 config/tc-riscv.c:726
+#: config/tc-pru.c:1588 config/tc-riscv.c:279 config/tc-riscv.c:707
+#: config/tc-riscv.c:1055
 #, c-format
 msgid "internal error: can't hash `%s': %s\n"
 msgstr ""
@@ -6859,8 +6975,9 @@ msgstr ""
 #. Probably a memory allocation problem?  Give up now.
 #: config/tc-dlx.c:302 config/tc-hppa.c:8269 config/tc-nios2.c:1438
 #: config/tc-nios2.c:3640 config/tc-nios2.c:3654 config/tc-nios2.c:3669
-#: config/tc-pru.c:1577 config/tc-pru.c:1591 config/tc-riscv.c:729
-#: config/tc-riscv.c:741 config/tc-sparc.c:1008
+#: config/tc-pru.c:1577 config/tc-pru.c:1591 config/tc-riscv.c:282
+#: config/tc-riscv.c:710 config/tc-riscv.c:1058 config/tc-riscv.c:1070
+#: config/tc-sparc.c:1008
 msgid "Broken assembler.  No assembly attempted."
 msgstr ""
 
@@ -6930,7 +7047,7 @@ msgstr ""
 msgid "Invalid expression after # number\n"
 msgstr ""
 
-#: config/tc-dlx.c:1189 config/tc-m32r.c:2273 config/tc-nds32.c:7879
+#: config/tc-dlx.c:1189 config/tc-m32r.c:2275 config/tc-nds32.c:7879
 #: config/tc-sparc.c:4020
 #, c-format
 msgid "internal error: can't export reloc type %d (`%s')"
@@ -6966,7 +7083,7 @@ msgstr ""
 msgid "ldrd/strd requires even:odd register pair"
 msgstr ""
 
-#: config/tc-epiphany.c:820 config/tc-m32r.c:1784
+#: config/tc-epiphany.c:820 config/tc-m32r.c:1786
 msgid "Addend to unresolved symbol not on word boundary."
 msgstr ""
 
@@ -7125,16 +7242,16 @@ msgstr ""
 msgid "Relocation %s is not safe for %s"
 msgstr ""
 
-#: config/tc-ft32.c:146 config/tc-moxie.c:104
+#: config/tc-ft32.c:146 config/tc-moxie.c:102
 msgid "expecting register"
 msgstr ""
 
-#: config/tc-ft32.c:167 config/tc-ft32.c:183 config/tc-moxie.c:123
-#: config/tc-moxie.c:139
+#: config/tc-ft32.c:167 config/tc-ft32.c:183 config/tc-moxie.c:121
+#: config/tc-moxie.c:137
 msgid "illegal register number"
 msgstr ""
 
-#: config/tc-ft32.c:239 config/tc-moxie.c:188 config/tc-pj.c:260
+#: config/tc-ft32.c:239 config/tc-moxie.c:186 config/tc-pj.c:260
 #, c-format
 msgid "unknown opcode %s"
 msgstr ""
@@ -7152,15 +7269,15 @@ msgstr ""
 msgid "expected comma separator"
 msgstr ""
 
-#: config/tc-ft32.c:412 config/tc-moxie.c:232 config/tc-moxie.c:292
-#: config/tc-moxie.c:304 config/tc-moxie.c:337 config/tc-moxie.c:369
-#: config/tc-moxie.c:402 config/tc-moxie.c:456 config/tc-moxie.c:510
-#: config/tc-moxie.c:520 config/tc-moxie.c:543 config/tc-moxie.c:556
+#: config/tc-ft32.c:412 config/tc-moxie.c:230 config/tc-moxie.c:290
+#: config/tc-moxie.c:302 config/tc-moxie.c:335 config/tc-moxie.c:367
+#: config/tc-moxie.c:400 config/tc-moxie.c:454 config/tc-moxie.c:508
+#: config/tc-moxie.c:518 config/tc-moxie.c:541 config/tc-moxie.c:554
 #: config/tc-pj.c:308
 msgid "extra stuff on line ignored"
 msgstr ""
 
-#: config/tc-ft32.c:472 config/tc-lm32.c:236 config/tc-moxie.c:587
+#: config/tc-ft32.c:472 config/tc-lm32.c:236 config/tc-moxie.c:585
 #: config/tc-nios2.c:284
 msgid "bad call to md_atof"
 msgstr ""
@@ -7314,7 +7431,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:1816 config/tc-mips.c:14344 config/tc-mips.c:14412
+#: config/tc-h8300.c:1816 config/tc-mips.c:14383 config/tc-mips.c:14451
 #: config/tc-mmix.c:479 config/tc-mmix.c:491 config/tc-mmix.c:2532
 #: config/tc-mmix.c:2556 config/tc-mmix.c:2829
 msgid "invalid operands"
@@ -7324,7 +7441,7 @@ msgstr ""
 msgid "operand/size mis-match"
 msgstr ""
 
-#: config/tc-h8300.c:1947 config/tc-sh.c:2551 config/tc-z8k.c:1233
+#: config/tc-h8300.c:1947 config/tc-sh.c:2552 config/tc-z8k.c:1233
 msgid "unknown opcode"
 msgstr ""
 
@@ -7383,7 +7500,7 @@ msgid "Difference of symbols in different sections is not supported"
 msgstr ""
 
 #: config/tc-h8300.c:2325 config/tc-mcore.c:2204 config/tc-microblaze.c:2481
-#: config/tc-pj.c:491 config/tc-sh.c:3900 config/tc-tic6x.c:4520
+#: config/tc-pj.c:491 config/tc-sh.c:3901 config/tc-tic6x.c:4520
 #: config/tc-xc16x.c:315
 #, c-format
 msgid "Cannot represent relocation type %s"
@@ -7805,811 +7922,854 @@ msgstr ""
 msgid "internal error: losing opcode: `%s' \"%s\"\n"
 msgstr ""
 
-#: config/tc-i386.c:1388
+#: config/tc-i386.c:1446
 #, c-format
 msgid "i386_output_nops called to generate nops of at most %d bytes!"
 msgstr ""
 
-#: config/tc-i386.c:1597
+#: config/tc-i386.c:1655
 #, c-format
 msgid "invalid single nop size: %d (expect within [0, %d])"
 msgstr ""
 
-#: config/tc-i386.c:1638
+#: config/tc-i386.c:1696
 msgid "jump over nop padding out of range"
 msgstr ""
 
-#: config/tc-i386.c:2472
+#: config/tc-i386.c:2533
 #, c-format
 msgid "%s shortened to %s"
 msgstr ""
 
-#: config/tc-i386.c:2563
+#: config/tc-i386.c:2624
 msgid "same type of prefix used twice"
 msgstr ""
 
-#: config/tc-i386.c:2590
+#: config/tc-i386.c:2651
 #, c-format
 msgid "64bit mode not supported on `%s'."
 msgstr ""
 
-#: config/tc-i386.c:2599
+#: config/tc-i386.c:2660
 #, c-format
 msgid "32bit mode not supported on `%s'."
 msgstr ""
 
-#: config/tc-i386.c:2639
+#: config/tc-i386.c:2700
 msgid "bad argument to syntax directive."
 msgstr ""
 
-#: config/tc-i386.c:2702
+#: config/tc-i386.c:2763
 #, c-format
 msgid "bad argument to %s_check directive."
 msgstr ""
 
-#: config/tc-i386.c:2706
+#: config/tc-i386.c:2767
 #, c-format
 msgid "missing argument for %s_check directive"
 msgstr ""
 
-#: config/tc-i386.c:2746
+#: config/tc-i386.c:2807
 #, c-format
 msgid "`%s' is not supported on `%s'"
 msgstr ""
 
-#: config/tc-i386.c:2852
+#: config/tc-i386.c:2913
 #, c-format
 msgid "no such architecture: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:2857
+#: config/tc-i386.c:2918
 msgid "missing cpu architecture"
 msgstr ""
 
-#: config/tc-i386.c:2874
+#: config/tc-i386.c:2935
 #, c-format
 msgid "no such architecture modifier: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:2889 config/tc-i386.c:2919
+#: config/tc-i386.c:2950 config/tc-i386.c:2980
 msgid "Intel L1OM is 64bit ELF only"
 msgstr ""
 
-#: config/tc-i386.c:2896 config/tc-i386.c:2926
+#: config/tc-i386.c:2957 config/tc-i386.c:2987
 msgid "Intel K1OM is 64bit ELF only"
 msgstr ""
 
-#: config/tc-i386.c:2903 config/tc-i386.c:2940
+#: config/tc-i386.c:2964 config/tc-i386.c:3001
 msgid "Intel MCU is 32bit ELF only"
 msgstr ""
 
-#: config/tc-i386.c:2947 config/tc-i386.c:12855
+#: config/tc-i386.c:3008 config/tc-i386.c:13480
 msgid "unknown architecture"
 msgstr ""
 
-#: config/tc-i386.c:2984 config/tc-i386.c:3006
+#: config/tc-i386.c:3045 config/tc-i386.c:3067
 #, c-format
 msgid "can't hash %s: %s"
 msgstr ""
 
-#: config/tc-i386.c:3303
+#: config/tc-i386.c:3364
 msgid "there are no pc-relative size relocations"
 msgstr ""
 
-#: config/tc-i386.c:3315
+#: config/tc-i386.c:3376
 #, c-format
 msgid "unknown relocation (%u)"
 msgstr ""
 
-#: config/tc-i386.c:3317
+#: config/tc-i386.c:3378
 #, c-format
 msgid "%u-byte relocation cannot be applied to %u-byte field"
 msgstr ""
 
-#: config/tc-i386.c:3321
+#: config/tc-i386.c:3382
 msgid "non-pc-relative relocation for pc-relative field"
 msgstr ""
 
-#: config/tc-i386.c:3326
+#: config/tc-i386.c:3387
 msgid "relocated field and relocation type differ in signedness"
 msgstr ""
 
-#: config/tc-i386.c:3335
+#: config/tc-i386.c:3396
 msgid "there are no unsigned pc-relative relocations"
 msgstr ""
 
-#: config/tc-i386.c:3343
+#: config/tc-i386.c:3404
 #, c-format
 msgid "cannot do %u byte pc-relative relocation"
 msgstr ""
 
-#: config/tc-i386.c:3360
+#: config/tc-i386.c:3421
 #, c-format
 msgid "cannot do %s %u byte relocation"
 msgstr ""
 
-#: config/tc-i386.c:3958 config/tc-i386.c:4404
+#: config/tc-i386.c:4017 config/tc-i386.c:4767
 #, c-format
 msgid "invalid instruction `%s' after `%s'"
 msgstr ""
 
-#: config/tc-i386.c:3964
+#: config/tc-i386.c:4023
 #, c-format
 msgid "missing `lock' with `%s'"
 msgstr ""
 
-#: config/tc-i386.c:3971
+#: config/tc-i386.c:4030
 #, c-format
 msgid "instruction `%s' after `xacquire' not allowed"
 msgstr ""
 
-#: config/tc-i386.c:3977
+#: config/tc-i386.c:4036
 #, c-format
 msgid "memory destination needed for instruction `%s' after `xrelease'"
 msgstr ""
 
-#: config/tc-i386.c:4378
+#: config/tc-i386.c:4529
 #, c-format
-msgid "SSE instruction `%s' is used"
+msgid "`%s` changes flags which would affect control flow behavior"
 msgstr ""
 
-#: config/tc-i386.c:4392 config/tc-i386.c:6482
+#: config/tc-i386.c:4571
 #, c-format
-msgid "ambiguous operand size for `%s'"
+msgid "indirect `%s` with memory operand should be avoided"
 msgstr ""
 
-#: config/tc-i386.c:4417
+#: config/tc-i386.c:4582
+#, c-format
+msgid "`%s` skips -mlfence-before-indirect-branch on `%s`"
+msgstr ""
+
+#: config/tc-i386.c:4603
+#, c-format
+msgid "`%s` skips -mlfence-before-ret on `%s`"
+msgstr ""
+
+#: config/tc-i386.c:4757
+#, c-format
+msgid "SSE instruction `%s' is used"
+msgstr ""
+
+#: config/tc-i386.c:4780
 msgid "expecting lockable instruction after `lock'"
 msgstr ""
 
-#: config/tc-i386.c:4424
+#: config/tc-i386.c:4787
 #, c-format
 msgid "data size prefix invalid with `%s'"
 msgstr ""
 
-#: config/tc-i386.c:4434
+#: config/tc-i386.c:4797
 msgid "expecting valid branch instruction after `bnd'"
 msgstr ""
 
-#: config/tc-i386.c:4438
+#: config/tc-i386.c:4801
 msgid "expecting indirect branch instruction after `notrack'"
 msgstr ""
 
-#: config/tc-i386.c:4443
+#: config/tc-i386.c:4806
 msgid "32-bit address isn't allowed in 64-bit MPX instructions."
 msgstr ""
 
-#: config/tc-i386.c:4447
+#: config/tc-i386.c:4810
 msgid "16-bit address isn't allowed in MPX instructions"
 msgstr ""
 
-#: config/tc-i386.c:4457
+#: config/tc-i386.c:4820
 msgid "replacing `rep'/`repe' prefix by `bnd'"
 msgstr ""
 
 #. UnixWare fsub no args is alias for fsubp, fadd -> faddp, etc.
-#: config/tc-i386.c:4511
+#: config/tc-i386.c:4874
 #, c-format
 msgid "translating to `%sp'"
 msgstr ""
 
-#: config/tc-i386.c:4518
+#: config/tc-i386.c:4881
 #, c-format
 msgid "instruction `%s' isn't supported outside of protected mode."
 msgstr ""
 
-#: config/tc-i386.c:4579
+#: config/tc-i386.c:4939
 #, c-format
 msgid "can't encode register '%s%s' in an instruction requiring REX prefix."
 msgstr ""
 
-#: config/tc-i386.c:4651 config/tc-i386.c:4850
+#: config/tc-i386.c:5015 config/tc-i386.c:5214
 #, c-format
 msgid "no such instruction: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:4662 config/tc-i386.c:4883
+#: config/tc-i386.c:5026 config/tc-i386.c:5247
 #, c-format
 msgid "invalid character %s in mnemonic"
 msgstr ""
 
-#: config/tc-i386.c:4669
+#: config/tc-i386.c:5033
 msgid "expecting prefix; got nothing"
 msgstr ""
 
-#: config/tc-i386.c:4671
+#: config/tc-i386.c:5035
 msgid "expecting mnemonic; got nothing"
 msgstr ""
 
-#: config/tc-i386.c:4686 config/tc-i386.c:4905
+#: config/tc-i386.c:5050 config/tc-i386.c:5269
 #, c-format
 msgid "`%s' is only supported in 64-bit mode"
 msgstr ""
 
-#: config/tc-i386.c:4687 config/tc-i386.c:4904
+#: config/tc-i386.c:5051 config/tc-i386.c:5268
 #, c-format
 msgid "`%s' is not supported in 64-bit mode"
 msgstr ""
 
-#: config/tc-i386.c:4699
+#: config/tc-i386.c:5063
 #, c-format
 msgid "redundant %s prefix"
 msgstr ""
 
-#: config/tc-i386.c:4896
+#: config/tc-i386.c:5260
 msgid "use .code16 to ensure correct addressing mode"
 msgstr ""
 
-#: config/tc-i386.c:4908
+#: config/tc-i386.c:5272
 #, c-format
 msgid "`%s' is not supported on `%s%s'"
 msgstr ""
 
-#: config/tc-i386.c:4934
+#: config/tc-i386.c:5298
 #, c-format
 msgid "invalid character %s before operand %d"
 msgstr ""
 
-#: config/tc-i386.c:4948
+#: config/tc-i386.c:5312
 #, c-format
 msgid "unbalanced parenthesis in operand %d."
 msgstr ""
 
-#: config/tc-i386.c:4951
+#: config/tc-i386.c:5315
 #, c-format
 msgid "unbalanced brackets in operand %d."
 msgstr ""
 
-#: config/tc-i386.c:4960
+#: config/tc-i386.c:5324
 #, c-format
 msgid "invalid character %s in operand %d"
 msgstr ""
 
-#: config/tc-i386.c:4987
+#: config/tc-i386.c:5351
 #, c-format
 msgid "spurious operands; (%d operands/instruction max)"
 msgstr ""
 
-#: config/tc-i386.c:4997 config/tc-i386.c:10624
+#: config/tc-i386.c:5361 config/tc-i386.c:11153
 #, c-format
 msgid "too many memory references for `%s'"
 msgstr ""
 
-#: config/tc-i386.c:5018
+#: config/tc-i386.c:5382
 msgid "expecting operand after ','; got nothing"
 msgstr ""
 
-#: config/tc-i386.c:5023
+#: config/tc-i386.c:5387
 msgid "expecting operand before ','; got nothing"
 msgstr ""
 
-#: config/tc-i386.c:5453
+#: config/tc-i386.c:5816
 msgid "mask, index, and destination registers should be distinct"
 msgstr ""
 
-#: config/tc-i386.c:5470
+#: config/tc-i386.c:5833
 msgid "index and destination registers should be distinct"
 msgstr ""
 
-#: config/tc-i386.c:6144
+#: config/tc-i386.c:6526
 msgid "operand size mismatch"
 msgstr ""
 
-#: config/tc-i386.c:6147
+#: config/tc-i386.c:6529
 msgid "operand type mismatch"
 msgstr ""
 
-#: config/tc-i386.c:6150
+#: config/tc-i386.c:6532
 msgid "register type mismatch"
 msgstr ""
 
-#: config/tc-i386.c:6153
+#: config/tc-i386.c:6535
 msgid "number of operands mismatch"
 msgstr ""
 
-#: config/tc-i386.c:6156
+#: config/tc-i386.c:6538
 msgid "invalid instruction suffix"
 msgstr ""
 
-#: config/tc-i386.c:6159
+#: config/tc-i386.c:6541
 msgid "constant doesn't fit in 4 bits"
 msgstr ""
 
-#: config/tc-i386.c:6162
+#: config/tc-i386.c:6544
 msgid "unsupported with Intel mnemonic"
 msgstr ""
 
-#: config/tc-i386.c:6165
+#: config/tc-i386.c:6547
 msgid "unsupported syntax"
 msgstr ""
 
-#: config/tc-i386.c:6168
+#: config/tc-i386.c:6550
 #, c-format
 msgid "unsupported instruction `%s'"
 msgstr ""
 
-#: config/tc-i386.c:6172
+#: config/tc-i386.c:6554
 msgid "invalid VSIB address"
 msgstr ""
 
-#: config/tc-i386.c:6175
+#: config/tc-i386.c:6557
 msgid "mask, index, and destination registers must be distinct"
 msgstr ""
 
-#: config/tc-i386.c:6178
+#: config/tc-i386.c:6560
 msgid "unsupported vector index register"
 msgstr ""
 
-#: config/tc-i386.c:6181
+#: config/tc-i386.c:6563
 msgid "unsupported broadcast"
 msgstr ""
 
-#: config/tc-i386.c:6184
+#: config/tc-i386.c:6566
 msgid "broadcast is needed for operand of such type"
 msgstr ""
 
-#: config/tc-i386.c:6187
+#: config/tc-i386.c:6569
 msgid "unsupported masking"
 msgstr ""
 
-#: config/tc-i386.c:6190
+#: config/tc-i386.c:6572
 msgid "mask not on destination operand"
 msgstr ""
 
-#: config/tc-i386.c:6193
+#: config/tc-i386.c:6575
 msgid "default mask isn't allowed"
 msgstr ""
 
-#: config/tc-i386.c:6196
+#: config/tc-i386.c:6578
 msgid "unsupported static rounding/sae"
 msgstr ""
 
-#: config/tc-i386.c:6200
+#: config/tc-i386.c:6582
 msgid "RC/SAE operand must precede immediate operands"
 msgstr ""
 
-#: config/tc-i386.c:6202
+#: config/tc-i386.c:6584
 msgid "RC/SAE operand must follow immediate operands"
 msgstr ""
 
-#: config/tc-i386.c:6205 config/tc-metag.c:4789 config/tc-metag.c:5530
+#: config/tc-i386.c:6587 config/tc-metag.c:4789 config/tc-metag.c:5530
 #: config/tc-metag.c:5552
 msgid "invalid register operand"
 msgstr ""
 
-#: config/tc-i386.c:6208
+#: config/tc-i386.c:6590
 #, c-format
 msgid "%s for `%s'"
 msgstr ""
 
-#: config/tc-i386.c:6217
+#: config/tc-i386.c:6599
 #, 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:6224
+#: config/tc-i386.c:6606
 #, c-format
 msgid "stand-alone `%s' prefix"
 msgstr ""
 
-#: config/tc-i386.c:6266
+#: config/tc-i386.c:6648
 #, c-format
 msgid "`%s' operand %u must use `%ses' segment"
 msgstr ""
 
-#. We have to know the operand size for crc32.
-#: config/tc-i386.c:6324
-#, c-format
-msgid "ambiguous memory operand size for `%s`"
-msgstr ""
-
-#: config/tc-i386.c:6413
+#: config/tc-i386.c:6792
 msgid "generating 16-bit `iret' for .code16gcc directive"
 msgstr ""
 
-#: config/tc-i386.c:6417
+#: config/tc-i386.c:6796
 #, c-format
 msgid "generating 32-bit `%s', unlike earlier gas versions"
 msgstr ""
 
-#: config/tc-i386.c:6455
+#: config/tc-i386.c:6909
+#, c-format
+msgid "ambiguous operand size for `%s'"
+msgstr ""
+
+#: config/tc-i386.c:6914
+#, c-format
 msgid ""
-"no instruction mnemonic suffix given and no register operands; can't size "
-"instruction"
+"no instruction mnemonic suffix given and no register operands; can't size `"
+"%s'"
 msgstr ""
 
-#: config/tc-i386.c:6593
+#: config/tc-i386.c:6919
 #, c-format
-msgid "invalid register operand size for `%s'"
+msgid "%s; using default for `%s'"
+msgstr ""
+
+#: config/tc-i386.c:6921
+msgid "ambiguous operand size"
+msgstr ""
+
+#: config/tc-i386.c:6922
+msgid "no instruction mnemonic suffix given and no register operands"
 msgstr ""
 
-#: config/tc-i386.c:6638 config/tc-i386.c:6710 config/tc-i386.c:6832
+#: config/tc-i386.c:7048
 #, c-format
-msgid "using `%s%s' instead of `%s%s' due to `%c' suffix"
+msgid "16-bit addressing unavailable for `%s'"
+msgstr ""
+
+#: config/tc-i386.c:7094
+#, c-format
+msgid "invalid register operand size for `%s'"
 msgstr ""
 
-#: config/tc-i386.c:6658 config/tc-i386.c:6686 config/tc-i386.c:6757
-#: config/tc-i386.c:6807
+#: config/tc-i386.c:7139 config/tc-i386.c:7167 config/tc-i386.c:7226
+#: config/tc-i386.c:7276
 #, c-format
 msgid "`%s%s' not allowed with `%s%c'"
 msgstr ""
 
-#: config/tc-i386.c:6704 config/tc-i386.c:6731 config/tc-i386.c:6782
-#: config/tc-i386.c:6826
+#: config/tc-i386.c:7180 config/tc-i386.c:7200 config/tc-i386.c:7251
+#: config/tc-i386.c:7290
 #, c-format
 msgid "incorrect register `%s%s' used with `%c' suffix"
 msgstr ""
 
-#: config/tc-i386.c:6895
+#: config/tc-i386.c:7352
 msgid "no instruction mnemonic suffix given; can't determine immediate size"
 msgstr ""
 
-#: config/tc-i386.c:7047
+#: config/tc-i386.c:7504
 #, c-format
 msgid ""
 "source register `%s%s' implicitly denotes `%s%.3s%u' to `%s%.3s%u' source "
 "group in `%s'"
 msgstr ""
 
-#: config/tc-i386.c:7091
+#: config/tc-i386.c:7548
 #, c-format
 msgid "you can't `%s %s%s'"
 msgstr ""
 
 #. Reversed arguments on faddp, fsubp, etc.
-#: config/tc-i386.c:7129
+#: config/tc-i386.c:7586
 #, c-format
 msgid "translating to `%s %s%s,%s%s'"
 msgstr ""
 
 #. Extraneous `l' suffix on fp insn.
-#: config/tc-i386.c:7136
+#: config/tc-i386.c:7593
 #, c-format
 msgid "translating to `%s %s%s'"
 msgstr ""
 
-#: config/tc-i386.c:7145
+#: config/tc-i386.c:7604
 #, c-format
 msgid "segment override on `%s' is ineffectual"
 msgstr ""
 
-#: config/tc-i386.c:7912 config/tc-i386.c:8055 config/tc-i386.c:8116
+#: config/tc-i386.c:8379 config/tc-i386.c:8522 config/tc-i386.c:8583
 #, c-format
 msgid "skipping prefixes on `%s'"
 msgstr ""
 
-#: config/tc-i386.c:8136
+#: config/tc-i386.c:8603
 msgid "16-bit jump out of range"
 msgstr ""
 
-#: config/tc-i386.c:8145
+#: config/tc-i386.c:8612
 #, c-format
 msgid "can't handle non absolute segment in `%s'"
 msgstr ""
 
-#: config/tc-i386.c:8357 config/tc-i386.c:8389 config/tc-i386.c:8475
+#: config/tc-i386.c:8854 config/tc-i386.c:8886 config/tc-i386.c:8976
 #, c-format
 msgid "`%s` skips -malign-branch-boundary on `%s`"
 msgstr ""
 
-#: config/tc-i386.c:8707
+#: config/tc-i386.c:9217
 msgid "pseudo prefix without instruction"
 msgstr ""
 
-#: config/tc-i386.c:8823
+#: config/tc-i386.c:9336
 #, c-format
 msgid "instruction length of %u bytes exceeds the limit of 15"
 msgstr ""
 
-#: config/tc-i386.c:9404 config/tc-i386.c:9506
+#: config/tc-i386.c:9918 config/tc-i386.c:10020
 #, c-format
 msgid "@%s reloc is not supported with %d-bit output format"
 msgstr ""
 
-#: config/tc-i386.c:9557
+#: config/tc-i386.c:10071
 #, c-format
 msgid "missing or invalid expression `%s'"
 msgstr ""
 
-#: config/tc-i386.c:9566
+#: config/tc-i386.c:10080
 #, c-format
 msgid "invalid PLT expression `%s'"
 msgstr ""
 
-#: config/tc-i386.c:9652
+#: config/tc-i386.c:10166
 #, c-format
 msgid "Unsupported broadcast: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:9668
+#: config/tc-i386.c:10182
 #, c-format
 msgid "`%s%s' can't be used for write mask"
 msgstr ""
 
-#: config/tc-i386.c:9691
+#: config/tc-i386.c:10205
 #, c-format
 msgid "invalid write mask `%s'"
 msgstr ""
 
-#: config/tc-i386.c:9713 config/tc-i386.c:10403
+#: config/tc-i386.c:10227 config/tc-i386.c:10932
 #, c-format
 msgid "duplicated `%s'"
 msgstr ""
 
-#: config/tc-i386.c:9723
+#: config/tc-i386.c:10237
 #, c-format
 msgid "invalid zeroing-masking `%s'"
 msgstr ""
 
-#: config/tc-i386.c:9736
+#: config/tc-i386.c:10250
 #, c-format
 msgid "missing `}' in `%s'"
 msgstr ""
 
 #. We don't know this one.
-#: config/tc-i386.c:9750
+#: config/tc-i386.c:10264
 #, c-format
 msgid "unknown vector operation: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:9756
+#: config/tc-i386.c:10270
 msgid "zeroing-masking only allowed with write mask"
 msgstr ""
 
-#: config/tc-i386.c:9776
+#: config/tc-i386.c:10290
 #, c-format
 msgid "at most %d immediate operands are allowed"
 msgstr ""
 
-#: config/tc-i386.c:9808 config/tc-i386.c:10076
+#: config/tc-i386.c:10322 config/tc-i386.c:10590
 #, c-format
 msgid "junk `%s' after expression"
 msgstr ""
 
-#: config/tc-i386.c:9829
+#: config/tc-i386.c:10343
 #, c-format
 msgid "missing or invalid immediate expression `%s'"
 msgstr ""
 
-#: config/tc-i386.c:9852 config/tc-i386.c:10166
+#: config/tc-i386.c:10366 config/tc-i386.c:10680
 #, c-format
 msgid "unimplemented segment %s in operand"
 msgstr ""
 
-#: config/tc-i386.c:9859
+#: config/tc-i386.c:10373
 #, c-format
 msgid "illegal immediate register operand %s"
 msgstr ""
 
-#: config/tc-i386.c:9907
+#: config/tc-i386.c:10421
 #, c-format
 msgid "expecting scale factor of 1, 2, 4, or 8: got `%s'"
 msgstr ""
 
-#: config/tc-i386.c:9916
+#: config/tc-i386.c:10430
 #, c-format
 msgid "scale factor of %d without an index register"
 msgstr ""
 
-#: config/tc-i386.c:9938
+#: config/tc-i386.c:10452
 #, c-format
 msgid "at most %d displacement operands are allowed"
 msgstr ""
 
-#: config/tc-i386.c:10132
+#: config/tc-i386.c:10646
 #, c-format
 msgid "missing or invalid displacement expression `%s'"
 msgstr ""
 
-#: config/tc-i386.c:10149
+#: config/tc-i386.c:10663
 #, c-format
 msgid "0x%lx out range of signed 32bit displacement"
 msgstr ""
 
-#: config/tc-i386.c:10304
+#: config/tc-i386.c:10833
 #, c-format
 msgid "`%s' is not valid here (expected `%c%s%s%c')"
 msgstr ""
 
-#: config/tc-i386.c:10316
+#: config/tc-i386.c:10845
 #, c-format
 msgid "`%s' is not a valid %s expression"
 msgstr ""
 
-#: config/tc-i386.c:10348
+#: config/tc-i386.c:10877
 #, c-format
 msgid "`%s' cannot be used here"
 msgstr ""
 
-#: config/tc-i386.c:10355
+#: config/tc-i386.c:10884
 msgid "register scaling is being ignored here"
 msgstr ""
 
-#: config/tc-i386.c:10416
+#: config/tc-i386.c:10945
 #, c-format
 msgid "Missing '}': '%s'"
 msgstr ""
 
-#: config/tc-i386.c:10422
+#: config/tc-i386.c:10951
 #, c-format
 msgid "Junk after '}': '%s'"
 msgstr ""
 
-#: config/tc-i386.c:10548
+#: config/tc-i386.c:11077
 #, c-format
 msgid "bad memory operand `%s'"
 msgstr ""
 
-#: config/tc-i386.c:10572
+#: config/tc-i386.c:11101
 #, c-format
 msgid "junk `%s' after register"
 msgstr ""
 
-#: config/tc-i386.c:10585 config/tc-i386.c:10722 config/tc-i386.c:10766
+#: config/tc-i386.c:11114 config/tc-i386.c:11251 config/tc-i386.c:11295
 #, c-format
 msgid "bad register name `%s'"
 msgstr ""
 
-#: config/tc-i386.c:10593
+#: config/tc-i386.c:11122
 msgid "immediate operand illegal with absolute jump"
 msgstr ""
 
-#: config/tc-i386.c:10711
+#: config/tc-i386.c:11240
 #, c-format
 msgid "expecting `,' or `)' after index register in `%s'"
 msgstr ""
 
-#: config/tc-i386.c:10739
+#: config/tc-i386.c:11268
 #, c-format
 msgid "expecting `)' after scale factor in `%s'"
 msgstr ""
 
-#: config/tc-i386.c:10747
+#: config/tc-i386.c:11276
 #, c-format
 msgid "expecting index register or scale factor after `,'; got '%c'"
 msgstr ""
 
-#: config/tc-i386.c:10755
+#: config/tc-i386.c:11284
 #, c-format
 msgid "expecting `,' or `)' after base register in `%s'"
 msgstr ""
 
 #. It's not a memory operand; argh!
-#: config/tc-i386.c:10804
+#: config/tc-i386.c:11333
 #, c-format
 msgid "invalid char %s beginning operand %d `%s'"
 msgstr ""
 
-#: config/tc-i386.c:11418
+#: config/tc-i386.c:11986
 #, c-format
 msgid "%s:%u: add %d%s at 0x%llx to align %s within %d-byte boundary\n"
 msgstr ""
 
-#: config/tc-i386.c:11421
+#: config/tc-i386.c:11989
 #, c-format
 msgid ""
 "%s:%u: add additional %d%s at 0x%llx to align %s within %d-byte boundary\n"
 msgstr ""
 
-#: config/tc-i386.c:11427
+#: config/tc-i386.c:11995
 #, c-format
 msgid ""
 "%s:%u: add %d%s-byte nop at 0x%llx to align %s within %d-byte boundary\n"
 msgstr ""
 
-#: config/tc-i386.c:11494
+#: config/tc-i386.c:12062
 msgid "long jump required"
 msgstr ""
 
-#: config/tc-i386.c:11549
+#: config/tc-i386.c:12117
 msgid "jump target out of range"
 msgstr ""
 
-#: config/tc-i386.c:12127
+#: config/tc-i386.c:12702
 #, c-format
 msgid "invalid -mx86-used-note= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:12150
+#: config/tc-i386.c:12725
 msgid "no compiled in support for x86_64"
 msgstr ""
 
-#: config/tc-i386.c:12170
+#: config/tc-i386.c:12745
 msgid "no compiled in support for 32bit x86_64"
 msgstr ""
 
-#: config/tc-i386.c:12174
+#: config/tc-i386.c:12749
 msgid "32bit x86_64 is only supported for ELF"
 msgstr ""
 
-#: config/tc-i386.c:12208 config/tc-i386.c:12296
+#: config/tc-i386.c:12783 config/tc-i386.c:12871
 #, c-format
 msgid "invalid -march= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:12306 config/tc-i386.c:12318
+#: config/tc-i386.c:12881 config/tc-i386.c:12893
 #, c-format
 msgid "invalid -mtune= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:12327
+#: config/tc-i386.c:12902
 #, c-format
 msgid "invalid -mmnemonic= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:12336
+#: config/tc-i386.c:12911
 #, c-format
 msgid "invalid -msyntax= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:12359
+#: config/tc-i386.c:12934
 #, c-format
 msgid "invalid -msse-check= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:12370
+#: config/tc-i386.c:12945
 #, c-format
 msgid "invalid -moperand-check= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:12379
+#: config/tc-i386.c:12954
 #, c-format
 msgid "invalid -mavxscalar= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:12388
+#: config/tc-i386.c:12963
 #, c-format
 msgid "invalid -mvexwig= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:12403
+#: config/tc-i386.c:12978
 #, c-format
 msgid "invalid -mevexlig= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:12416
+#: config/tc-i386.c:12991
 #, c-format
 msgid "invalid -mevexrcig= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:12425
+#: config/tc-i386.c:13000
 #, c-format
 msgid "invalid -mevexwig= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:12440
+#: config/tc-i386.c:13015
 #, c-format
 msgid "invalid -momit-lock-prefix= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:12449
+#: config/tc-i386.c:13024
 #, c-format
 msgid "invalid -mfence-as-lock-add= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:12458
+#: config/tc-i386.c:13033
+#, c-format
+msgid "invalid -mlfence-after-load= option: `%s'"
+msgstr ""
+
+#: config/tc-i386.c:13050
+#, c-format
+msgid "invalid -mlfence-before-indirect-branch= option: `%s'"
+msgstr ""
+
+#: config/tc-i386.c:13064
+#, c-format
+msgid "invalid -mlfence-before-ret= option: `%s'"
+msgstr ""
+
+#: config/tc-i386.c:13074
 #, c-format
 msgid "invalid -mrelax-relocations= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:12487
+#: config/tc-i386.c:13103
 #, c-format
 msgid "invalid -malign-branch-boundary= value: %s"
 msgstr ""
 
-#: config/tc-i386.c:12501
+#: config/tc-i386.c:13117
 #, c-format
 msgid "invalid -malign-branch-prefix-size= value: %s"
 msgstr ""
 
-#: config/tc-i386.c:12528
+#: config/tc-i386.c:13144
 #, c-format
 msgid "invalid -malign-branch= option: `%s'"
 msgstr ""
 
-#: config/tc-i386.c:12684
+#: config/tc-i386.c:13300
 #, c-format
 msgid ""
 "  -Qy, -Qn                ignored\n"
@@ -8617,34 +8777,34 @@ msgid ""
 "  -k                      ignored\n"
 msgstr ""
 
-#: config/tc-i386.c:12689
+#: config/tc-i386.c:13305
 #, c-format
 msgid ""
 "  -n                      Do not optimize code alignment\n"
 "  -q                      quieten some warnings\n"
 msgstr ""
 
-#: config/tc-i386.c:12693
+#: config/tc-i386.c:13309
 #, c-format
 msgid "  -s                      ignored\n"
 msgstr ""
 
-#: config/tc-i386.c:12698
+#: config/tc-i386.c:13314
 #, c-format
 msgid "  --32/--64/--x32         generate 32bit/64bit/x32 code\n"
 msgstr ""
 
-#: config/tc-i386.c:12702
+#: config/tc-i386.c:13318
 #, c-format
 msgid "  --divide                do not treat `/' as a comment character\n"
 msgstr ""
 
-#: config/tc-i386.c:12705
+#: config/tc-i386.c:13321
 #, c-format
 msgid "  --divide                ignored\n"
 msgstr ""
 
-#: config/tc-i386.c:12708
+#: config/tc-i386.c:13324
 #, c-format
 msgid ""
 "  -march=CPU[,+EXTENSION...]\n"
@@ -8652,36 +8812,36 @@ msgid ""
 "of:\n"
 msgstr ""
 
-#: config/tc-i386.c:12712
+#: config/tc-i386.c:13328
 #, c-format
 msgid "                          EXTENSION is combination of:\n"
 msgstr ""
 
-#: config/tc-i386.c:12715
+#: config/tc-i386.c:13331
 #, c-format
 msgid "  -mtune=CPU              optimize for CPU, CPU is one of:\n"
 msgstr ""
 
-#: config/tc-i386.c:12718
+#: config/tc-i386.c:13334
 #, c-format
 msgid "  -msse2avx               encode SSE instructions with VEX prefix\n"
 msgstr ""
 
-#: config/tc-i386.c:12720
+#: config/tc-i386.c:13336
 #, c-format
 msgid ""
 "  -msse-check=[none|error|warning] (default: warning)\n"
 "                          check SSE instructions\n"
 msgstr ""
 
-#: config/tc-i386.c:12723
+#: config/tc-i386.c:13339
 #, c-format
 msgid ""
 "  -moperand-check=[none|error|warning] (default: warning)\n"
 "                          check operand combinations for validity\n"
 msgstr ""
 
-#: config/tc-i386.c:12726
+#: config/tc-i386.c:13342
 #, c-format
 msgid ""
 "  -mavxscalar=[128|256] (default: 128)\n"
@@ -8690,7 +8850,7 @@ msgid ""
 "                           length\n"
 msgstr ""
 
-#: config/tc-i386.c:12730
+#: config/tc-i386.c:13346
 #, c-format
 msgid ""
 "  -mvexwig=[0|1] (default: 0)\n"
@@ -8698,7 +8858,7 @@ msgid ""
 "                           for VEX.W bit ignored instructions\n"
 msgstr ""
 
-#: config/tc-i386.c:12734
+#: config/tc-i386.c:13350
 #, c-format
 msgid ""
 "  -mevexlig=[128|256|512] (default: 128)\n"
@@ -8707,7 +8867,7 @@ msgid ""
 "                           length\n"
 msgstr ""
 
-#: config/tc-i386.c:12738
+#: config/tc-i386.c:13354
 #, c-format
 msgid ""
 "  -mevexwig=[0|1] (default: 0)\n"
@@ -8716,7 +8876,7 @@ msgid ""
 "                           for EVEX.W bit ignored instructions\n"
 msgstr ""
 
-#: config/tc-i386.c:12742
+#: config/tc-i386.c:13358
 #, c-format
 msgid ""
 "  -mevexrcig=[rne|rd|ru|rz] (default: rne)\n"
@@ -8725,77 +8885,77 @@ msgid ""
 "                           for SAE-only ignored instructions\n"
 msgstr ""
 
-#: config/tc-i386.c:12746
+#: config/tc-i386.c:13362
 #, c-format
 msgid "  -mmnemonic=[att|intel] "
 msgstr ""
 
-#: config/tc-i386.c:12749
+#: config/tc-i386.c:13365
 #, c-format
 msgid "(default: att)\n"
 msgstr ""
 
-#: config/tc-i386.c:12751
+#: config/tc-i386.c:13367
 #, c-format
 msgid "(default: intel)\n"
 msgstr ""
 
-#: config/tc-i386.c:12752
+#: config/tc-i386.c:13368
 #, c-format
 msgid "                          use AT&T/Intel mnemonic\n"
 msgstr ""
 
-#: config/tc-i386.c:12754
+#: config/tc-i386.c:13370
 #, c-format
 msgid ""
 "  -msyntax=[att|intel] (default: att)\n"
 "                          use AT&T/Intel syntax\n"
 msgstr ""
 
-#: config/tc-i386.c:12757
+#: config/tc-i386.c:13373
 #, c-format
 msgid "  -mindex-reg             support pseudo index registers\n"
 msgstr ""
 
-#: config/tc-i386.c:12759
+#: config/tc-i386.c:13375
 #, c-format
 msgid "  -mnaked-reg             don't require `%%' prefix for registers\n"
 msgstr ""
 
-#: config/tc-i386.c:12761
+#: config/tc-i386.c:13377
 #, c-format
 msgid "  -madd-bnd-prefix        add BND prefix for all valid branches\n"
 msgstr ""
 
-#: config/tc-i386.c:12764
+#: config/tc-i386.c:13380
 #, c-format
 msgid "  -mshared                disable branch optimization for shared code\n"
 msgstr ""
 
-#: config/tc-i386.c:12766
+#: config/tc-i386.c:13382
 #, c-format
 msgid "  -mx86-used-note=[no|yes] "
 msgstr ""
 
-#: config/tc-i386.c:12772
+#: config/tc-i386.c:13388
 #, c-format
 msgid ""
 "                          generate x86 used ISA and feature properties\n"
 msgstr ""
 
-#: config/tc-i386.c:12776
+#: config/tc-i386.c:13392
 #, c-format
 msgid "  -mbig-obj               generate big object files\n"
 msgstr ""
 
-#: config/tc-i386.c:12779
+#: config/tc-i386.c:13395
 #, c-format
 msgid ""
 "  -momit-lock-prefix=[no|yes] (default: no)\n"
 "                          strip all lock prefixes\n"
 msgstr ""
 
-#: config/tc-i386.c:12782
+#: config/tc-i386.c:13398
 #, c-format
 msgid ""
 "  -mfence-as-lock-add=[no|yes] (default: no)\n"
@@ -8803,24 +8963,24 @@ msgid ""
 "                           lock addl $0x0, (%%{re}sp)\n"
 msgstr ""
 
-#: config/tc-i386.c:12786
+#: config/tc-i386.c:13402
 #, c-format
 msgid "  -mrelax-relocations=[no|yes] "
 msgstr ""
 
-#: config/tc-i386.c:12792
+#: config/tc-i386.c:13408
 #, c-format
 msgid "                          generate relax relocations\n"
 msgstr ""
 
-#: config/tc-i386.c:12794
+#: config/tc-i386.c:13410
 #, c-format
 msgid ""
 "  -malign-branch-boundary=NUM (default: 0)\n"
 "                          align branches within NUM byte boundary\n"
 msgstr ""
 
-#: config/tc-i386.c:12797
+#: config/tc-i386.c:13413
 #, c-format
 msgid ""
 "  -malign-branch=TYPE[+TYPE...] (default: jcc+fused+jmp)\n"
@@ -8830,80 +8990,116 @@ msgid ""
 "                          specify types of branches to align\n"
 msgstr ""
 
-#: config/tc-i386.c:12802
+#: config/tc-i386.c:13418
 #, c-format
 msgid ""
 "  -malign-branch-prefix-size=NUM (default: 5)\n"
 "                          align branches with NUM prefixes per instruction\n"
 msgstr ""
 
-#: config/tc-i386.c:12805
+#: config/tc-i386.c:13421
 #, c-format
 msgid ""
 "  -mbranches-within-32B-boundaries\n"
 "                          align branches within 32 byte boundary\n"
 msgstr ""
 
-#: config/tc-i386.c:12808
+#: config/tc-i386.c:13424
+#, c-format
+msgid ""
+"  -mlfence-after-load=[no|yes] (default: no)\n"
+"                          generate lfence after load\n"
+msgstr ""
+
+#: config/tc-i386.c:13427
+#, c-format
+msgid ""
+"  -mlfence-before-indirect-branch=[none|all|register|memory] (default: "
+"none)\n"
+"                          generate lfence before indirect near branch\n"
+msgstr ""
+
+#: config/tc-i386.c:13430
+#, c-format
+msgid ""
+"  -mlfence-before-ret=[none|or|not|shl|yes] (default: none)\n"
+"                          generate lfence before ret\n"
+msgstr ""
+
+#: config/tc-i386.c:13433
 #, c-format
 msgid "  -mamd64                 accept only AMD64 ISA [default]\n"
 msgstr ""
 
-#: config/tc-i386.c:12810
+#: config/tc-i386.c:13435
 #, c-format
 msgid "  -mintel64               accept only Intel64 ISA\n"
 msgstr ""
 
-#: config/tc-i386.c:12851
+#: config/tc-i386.c:13476
 #, c-format
 msgid "Intel MCU doesn't support `%s' architecture"
 msgstr ""
 
-#: config/tc-i386.c:12917
+#: config/tc-i386.c:13542
 msgid "Intel L1OM is 64bit only"
 msgstr ""
 
-#: config/tc-i386.c:12923
+#: config/tc-i386.c:13548
 msgid "Intel K1OM is 64bit only"
 msgstr ""
 
-#: config/tc-i386.c:12929
+#: config/tc-i386.c:13554
 msgid "Intel MCU is 32bit only"
 msgstr ""
 
-#: config/tc-i386.c:13101
+#: config/tc-i386.c:13666
+msgid ""
+"constant directive skips -mlfence-before-ret and -mlfence-before-indirect-"
+"branch"
+msgstr ""
+
+#: config/tc-i386.c:13669
+msgid "constant directive skips -mlfence-before-ret"
+msgstr ""
+
+#: config/tc-i386.c:13672
+msgid "constant directive skips -mlfence-before-indirect-branch"
+msgstr ""
+
+#: config/tc-i386.c:13736
 msgid "symbol size computation overflow"
 msgstr ""
 
-#: config/tc-i386.c:13169 config/tc-sparc.c:3861
+#: config/tc-i386.c:13804 config/tc-sparc.c:3861
 #, c-format
 msgid "can not do %d byte pc-relative relocation"
 msgstr ""
 
-#: config/tc-i386.c:13187
+#: config/tc-i386.c:13822
 #, c-format
 msgid "can not do %d byte relocation"
 msgstr ""
 
-#: config/tc-i386.c:13255
+#: config/tc-i386.c:13890
 #, c-format
 msgid "cannot represent relocation type %s in x32 mode"
 msgstr ""
 
-#: config/tc-i386.c:13292 config/tc-s390.c:2613
+#: config/tc-i386.c:13927 config/tc-s390.c:2613
 #, c-format
 msgid "cannot represent relocation type %s"
 msgstr ""
 
-#: config/tc-i386.c:13409
+#: config/tc-i386.c:14044
 msgid "bad .section directive: want a,l,w,x,M,S,G,T in string"
 msgstr ""
 
-#: config/tc-i386.c:13412
+#: config/tc-i386.c:14047
 msgid "bad .section directive: want a,w,x,M,S,G,T in string"
 msgstr ""
 
-#: config/tc-i386.c:13431
+#: config/tc-i386.c:14066
 msgid ".largecomm supported only in 64bit mode, producing .comm"
 msgstr ""
 
@@ -9610,8 +9806,8 @@ msgstr ""
 msgid "Expected '('"
 msgstr ""
 
-#: config/tc-ia64.c:7917 config/tc-pdp11.c:446 config/tc-pdp11.c:510
-#: config/tc-pdp11.c:544 config/tc-tilegx.c:1048 config/tc-tilepro.c:939
+#: config/tc-ia64.c:7917 config/tc-pdp11.c:450 config/tc-pdp11.c:514
+#: config/tc-pdp11.c:548 config/tc-tilegx.c:1048 config/tc-tilepro.c:939
 #: config/tc-xstormy16.c:154
 msgid "Missing ')'"
 msgstr ""
@@ -9732,7 +9928,7 @@ msgstr ""
 msgid "Can't add stop bit to mark end of instruction group"
 msgstr ""
 
-#: config/tc-ia64.c:11775 read.c:2600 read.c:3239 read.c:3643 stabs.c:469
+#: config/tc-ia64.c:11775 read.c:2601 read.c:3240 read.c:3644 stabs.c:469
 #, c-format
 msgid "expected comma after \"%s\""
 msgstr ""
@@ -9810,19 +10006,19 @@ msgstr ""
 msgid "Unmatched high relocation"
 msgstr ""
 
-#: config/tc-iq2000.c:826 config/tc-mips.c:19761 config/tc-score.c:5810
+#: config/tc-iq2000.c:826 config/tc-mips.c:19800 config/tc-score.c:5798
 msgid ".end not in text section"
 msgstr ""
 
-#: config/tc-iq2000.c:830 config/tc-score.c:5813
+#: config/tc-iq2000.c:830 config/tc-score.c:5801
 msgid ".end directive without a preceding .ent directive."
 msgstr ""
 
-#: config/tc-iq2000.c:839 config/tc-score.c:5821
+#: config/tc-iq2000.c:839 config/tc-score.c:5809
 msgid ".end symbol does not match .ent symbol."
 msgstr ""
 
-#: config/tc-iq2000.c:842 config/tc-mips.c:19781 config/tc-score.c:5826
+#: config/tc-iq2000.c:842 config/tc-mips.c:19820 config/tc-score.c:5814
 msgid ".end directive missing or unknown symbol"
 msgstr ""
 
@@ -9830,7 +10026,7 @@ msgstr ""
 msgid "Expected simple number."
 msgstr ""
 
-#: config/tc-iq2000.c:889 config/tc-mips.c:19686 config/tc-score.c:5662
+#: config/tc-iq2000.c:889 config/tc-mips.c:19725 config/tc-score.c:5664
 #, c-format
 msgid " *input_line_pointer == '%c' 0x%02x\n"
 msgstr ""
@@ -9839,7 +10035,7 @@ msgstr ""
 msgid "Invalid number"
 msgstr ""
 
-#: config/tc-iq2000.c:925 config/tc-score.c:5700
+#: config/tc-iq2000.c:925 config/tc-score.c:5695
 msgid ".ent or .aent not in text section."
 msgstr ""
 
@@ -10008,100 +10204,100 @@ msgstr ""
 msgid "  -KPIC                   generate PIC\n"
 msgstr ""
 
-#: config/tc-m32r.c:846
+#: config/tc-m32r.c:848
 msgid "instructions write to the same destination register."
 msgstr ""
 
-#: config/tc-m32r.c:854
+#: config/tc-m32r.c:856
 msgid "Instructions do not use parallel execution pipelines."
 msgstr ""
 
-#: config/tc-m32r.c:862
+#: config/tc-m32r.c:864
 msgid "Instructions share the same execution pipeline"
 msgstr ""
 
-#: config/tc-m32r.c:927 config/tc-m32r.c:1041
+#: config/tc-m32r.c:929 config/tc-m32r.c:1043
 #, c-format
 msgid "not a 16 bit instruction '%s'"
 msgstr ""
 
-#: config/tc-m32r.c:939 config/tc-m32r.c:1053 config/tc-m32r.c:1237
+#: config/tc-m32r.c:941 config/tc-m32r.c:1055 config/tc-m32r.c:1239
 #, c-format
 msgid "instruction '%s' is for the M32R2 only"
 msgstr ""
 
-#: config/tc-m32r.c:952 config/tc-m32r.c:1066 config/tc-m32r.c:1250
+#: config/tc-m32r.c:954 config/tc-m32r.c:1068 config/tc-m32r.c:1252
 #, c-format
 msgid "unknown instruction '%s'"
 msgstr ""
 
-#: config/tc-m32r.c:961 config/tc-m32r.c:1073 config/tc-m32r.c:1257
+#: config/tc-m32r.c:963 config/tc-m32r.c:1075 config/tc-m32r.c:1259
 #, c-format
 msgid "instruction '%s' is for the M32RX only"
 msgstr ""
 
-#: config/tc-m32r.c:970 config/tc-m32r.c:1082
+#: config/tc-m32r.c:972 config/tc-m32r.c:1084
 #, c-format
 msgid "instruction '%s' cannot be executed in parallel."
 msgstr ""
 
-#: config/tc-m32r.c:1025 config/tc-m32r.c:1107 config/tc-m32r.c:1314
+#: config/tc-m32r.c:1027 config/tc-m32r.c:1109 config/tc-m32r.c:1316
 msgid "internal error: lookup/get operands failed"
 msgstr ""
 
-#: config/tc-m32r.c:1092
+#: config/tc-m32r.c:1094
 #, c-format
 msgid "'%s': only the NOP instruction can be issued in parallel on the m32r"
 msgstr ""
 
-#: config/tc-m32r.c:1121
+#: config/tc-m32r.c:1123
 #, c-format
 msgid ""
 "%s: output of 1st instruction is the same as an input to 2nd instruction - "
 "is this intentional ?"
 msgstr ""
 
-#: config/tc-m32r.c:1125
+#: config/tc-m32r.c:1127
 #, c-format
 msgid ""
 "%s: output of 2nd instruction is the same as an input to 1st instruction - "
 "is this intentional ?"
 msgstr ""
 
-#: config/tc-m32r.c:1488 config/tc-microblaze.c:196
+#: config/tc-m32r.c:1490 config/tc-microblaze.c:196
 msgid "Expected comma after symbol-name: rest of line ignored."
 msgstr ""
 
-#: config/tc-m32r.c:1498
+#: config/tc-m32r.c:1500
 #, c-format
 msgid ".SCOMMon length (%ld.) <0! Ignored."
 msgstr ""
 
-#: config/tc-m32r.c:1512 config/tc-microblaze.c:218 config/tc-ppc.c:2428
-#: config/tc-ppc.c:4423 config/tc-ppc.c:4465 config/tc-ppc.c:6022
+#: config/tc-m32r.c:1514 config/tc-microblaze.c:218 config/tc-ppc.c:2438
+#: config/tc-ppc.c:4436 config/tc-ppc.c:4478 config/tc-ppc.c:6035
 msgid "ignoring bad alignment"
 msgstr ""
 
-#: config/tc-m32r.c:1524 config/tc-microblaze.c:253 config/tc-v850.c:383
+#: config/tc-m32r.c:1526 config/tc-microblaze.c:253 config/tc-v850.c:383
 msgid "Common alignment not a power of 2"
 msgstr ""
 
-#: config/tc-m32r.c:1539 config/tc-microblaze.c:229
+#: config/tc-m32r.c:1541 config/tc-microblaze.c:229
 #, c-format
 msgid "Ignoring attempt to re-define symbol `%s'."
 msgstr ""
 
-#: config/tc-m32r.c:1548
+#: config/tc-m32r.c:1550
 #, c-format
 msgid "Length of .scomm \"%s\" is already %ld. Not changed to %ld."
 msgstr ""
 
-#: config/tc-m32r.c:1925 config/tc-m32r.c:1978 config/tc-nds32.c:4797
+#: config/tc-m32r.c:1927 config/tc-m32r.c:1980 config/tc-nds32.c:4797
 #: config/tc-nds32.c:4841 config/tc-sh.c:391 config/tc-sh.c:2062
 msgid "Invalid PIC expression."
 msgstr ""
 
-#: config/tc-m32r.c:2069
+#: config/tc-m32r.c:2071
 msgid "Unmatched high/shigh reloc"
 msgstr ""
 
@@ -10490,7 +10686,7 @@ msgstr ""
 msgid "Line %d: unknown relocation type: 0x%x."
 msgstr ""
 
-#: config/tc-m68hc11.c:4494 config/tc-z80.c:3086 config/tc-z80.c:3106
+#: config/tc-m68hc11.c:4494 config/tc-z80.c:3402 config/tc-z80.c:3422
 msgid "Invalid directive"
 msgstr ""
 
@@ -10907,7 +11103,7 @@ msgstr ""
 msgid "Processor variants are: "
 msgstr ""
 
-#: config/tc-m68k.c:7638 config/tc-xtensa.c:6380
+#: config/tc-m68k.c:7638 config/tc-xtensa.c:6406
 #, c-format
 msgid "\n"
 msgstr ""
@@ -10926,7 +11122,7 @@ msgstr ""
 msgid "Not a defined coldfire architecture"
 msgstr ""
 
-#: config/tc-m68k.c:7927 read.c:4549
+#: config/tc-m68k.c:7927 read.c:4550
 #, c-format
 msgid "%s relocations do not fit in %u byte"
 msgid_plural "%s relocations do not fit in %u bytes"
@@ -11757,724 +11953,724 @@ msgstr ""
 msgid "Absolute value in relaxation code.  Assembler error....."
 msgstr ""
 
-#: config/tc-mips.c:2175
+#: config/tc-mips.c:2178
 #, c-format
 msgid "the %d-bit %s architecture does not support the `%s' extension"
 msgstr ""
 
-#: config/tc-mips.c:2178
+#: config/tc-mips.c:2181
 #, c-format
 msgid "the `%s' extension requires %s%d revision %d or greater"
 msgstr ""
 
-#: config/tc-mips.c:2187
+#: config/tc-mips.c:2190
 #, c-format
 msgid "the `%s' extension was removed in %s%d revision %d"
 msgstr ""
 
-#: config/tc-mips.c:2196
+#: config/tc-mips.c:2199
 #, c-format
 msgid "the `%s' extension requires 64-bit FPRs"
 msgstr ""
 
-#: config/tc-mips.c:3048 config/tc-mips.c:16618
+#: config/tc-mips.c:3051 config/tc-mips.c:16657
 #, c-format
 msgid "unrecognized register name `%s'"
 msgstr ""
 
-#: config/tc-mips.c:3275
+#: config/tc-mips.c:3278
 msgid "invalid register range"
 msgstr ""
 
-#: config/tc-mips.c:3303
+#: config/tc-mips.c:3306
 msgid "vector element must be constant"
 msgstr ""
 
-#: config/tc-mips.c:3313
+#: config/tc-mips.c:3316
 msgid "missing `]'"
 msgstr ""
 
-#: config/tc-mips.c:3536
+#: config/tc-mips.c:3539
 #, c-format
 msgid "internal: bad mips opcode (mask error): %s %s"
 msgstr ""
 
-#: config/tc-mips.c:3563
+#: config/tc-mips.c:3566
 #, c-format
 msgid "internal: unknown operand type: %s %s"
 msgstr ""
 
-#: config/tc-mips.c:3596
+#: config/tc-mips.c:3599
 #, c-format
 msgid "internal: bad mips opcode (bits 0x%08lx doubly defined): %s %s"
 msgstr ""
 
-#: config/tc-mips.c:3604
+#: config/tc-mips.c:3607
 #, c-format
 msgid "internal: bad mips opcode (bits 0x%08lx undefined): %s %s"
 msgstr ""
 
-#: config/tc-mips.c:3611
+#: config/tc-mips.c:3614
 #, c-format
 msgid "internal: bad mips opcode (bits 0x%08lx defined): %s %s"
 msgstr ""
 
-#: config/tc-mips.c:3646
+#: config/tc-mips.c:3649
 #, c-format
 msgid "internal error: bad microMIPS opcode (incorrect length: %u): %s %s"
 msgstr ""
 
-#: config/tc-mips.c:3654
+#: config/tc-mips.c:3657
 #, c-format
 msgid "internal error: bad microMIPS opcode (opcode/length mismatch): %s %s"
 msgstr ""
 
-#: config/tc-mips.c:3680
+#: config/tc-mips.c:3683
 msgid "-G may not be used in position-independent code"
 msgstr ""
 
-#: config/tc-mips.c:3686
+#: config/tc-mips.c:3689
 msgid "-G may not be used with abicalls"
 msgstr ""
 
 #. Probably a memory allocation problem?  Give up now.
-#: config/tc-mips.c:3706 config/tc-mips.c:3802
+#: config/tc-mips.c:3709 config/tc-mips.c:3805
 msgid "broken assembler, no assembly attempted"
 msgstr ""
 
-#: config/tc-mips.c:3741 config/tc-mips.c:3770
+#: config/tc-mips.c:3744 config/tc-mips.c:3773
 #, c-format
 msgid "internal: can't hash `%s': %s"
 msgstr ""
 
-#: config/tc-mips.c:3950
+#: config/tc-mips.c:3953
 #, c-format
 msgid ".gnu_attribute %d,%d is incompatible with `%s'"
 msgstr ""
 
-#: config/tc-mips.c:3957
+#: config/tc-mips.c:3960
 #, c-format
 msgid ".gnu_attribute %d,%d requires `%s'"
 msgstr ""
 
-#: config/tc-mips.c:4018
+#: config/tc-mips.c:4021
 #, c-format
 msgid ".gnu_attribute %d,%d is no longer supported"
 msgstr ""
 
-#: config/tc-mips.c:4027
+#: config/tc-mips.c:4030
 #, c-format
 msgid ".gnu_attribute %d,%d is not a recognized floating-point ABI"
 msgstr ""
 
-#: config/tc-mips.c:4040
+#: config/tc-mips.c:4043
 msgid "`gp=64' used with a 32-bit processor"
 msgstr ""
 
-#: config/tc-mips.c:4043
+#: config/tc-mips.c:4046
 msgid "`gp=32' used with a 64-bit ABI"
 msgstr ""
 
-#: config/tc-mips.c:4046
+#: config/tc-mips.c:4049
 msgid "`gp=64' used with a 32-bit ABI"
 msgstr ""
 
-#: config/tc-mips.c:4053
+#: config/tc-mips.c:4056
 msgid "`fp=xx' used with a cpu lacking ldc1/sdc1 instructions"
 msgstr ""
 
-#: config/tc-mips.c:4055
+#: config/tc-mips.c:4058
 msgid "`fp=xx' cannot be used with `singlefloat'"
 msgstr ""
 
-#: config/tc-mips.c:4059
+#: config/tc-mips.c:4062
 msgid "`fp=64' used with a 32-bit fpu"
 msgstr ""
 
-#: config/tc-mips.c:4063
+#: config/tc-mips.c:4066
 msgid "`fp=64' used with a 32-bit ABI"
 msgstr ""
 
-#: config/tc-mips.c:4068
+#: config/tc-mips.c:4071
 msgid "`fp=32' used with a 64-bit ABI"
 msgstr ""
 
-#: config/tc-mips.c:4070
+#: config/tc-mips.c:4073
 msgid "`fp=32' used with a MIPS R6 cpu"
 msgstr ""
 
-#: config/tc-mips.c:4073
+#: config/tc-mips.c:4076
 msgid "Unknown size of floating point registers"
 msgstr ""
 
-#: config/tc-mips.c:4078
+#: config/tc-mips.c:4081
 msgid "`nooddspreg` cannot be used with a 64-bit ABI"
 msgstr ""
 
-#: config/tc-mips.c:4081 config/tc-mips.c:4085
+#: config/tc-mips.c:4084 config/tc-mips.c:4088
 #, c-format
 msgid "`%s' cannot be used with `%s'"
 msgstr ""
 
-#: config/tc-mips.c:4090
+#: config/tc-mips.c:4093
 #, c-format
 msgid "branch relaxation is not supported in `%s'"
 msgstr ""
 
-#: config/tc-mips.c:4166
+#: config/tc-mips.c:4169
 msgid "trap exception not supported at ISA 1"
 msgstr ""
 
-#: config/tc-mips.c:4179 config/tc-mips.c:17501
+#: config/tc-mips.c:4182 config/tc-mips.c:17540
 #, c-format
 msgid "`%s' does not support legacy NaN"
 msgstr ""
 
-#: config/tc-mips.c:4226
+#: config/tc-mips.c:4229
 #, c-format
 msgid "returned from mips_ip(%s) insn_opcode = 0x%x\n"
 msgstr ""
 
-#: config/tc-mips.c:4932
+#: config/tc-mips.c:4935
 #, c-format
 msgid "operand %d out of range"
 msgstr ""
 
-#: config/tc-mips.c:4940
+#: config/tc-mips.c:4943
 #, c-format
 msgid "operand %d must be constant"
 msgstr ""
 
-#: config/tc-mips.c:4984 read.c:4317 read.c:5163 write.c:263 write.c:1024
+#: config/tc-mips.c:4987 read.c:4318 read.c:5164 write.c:263 write.c:1024
 msgid "register value used as expression"
 msgstr ""
 
-#: config/tc-mips.c:4997
+#: config/tc-mips.c:5000
 #, c-format
 msgid "operand %d must be an immediate expression"
 msgstr ""
 
-#: config/tc-mips.c:5118 config/tc-mips.c:5120
+#: config/tc-mips.c:5121 config/tc-mips.c:5123
 #, c-format
 msgid "float register should be even, was %d"
 msgstr ""
 
-#: config/tc-mips.c:5133
+#: config/tc-mips.c:5136
 #, c-format
 msgid "condition code register should be even for %s, was %d"
 msgstr ""
 
-#: config/tc-mips.c:5138
+#: config/tc-mips.c:5141
 #, c-format
 msgid "condition code register should be 0 or 4 for %s, was %d"
 msgstr ""
 
-#: config/tc-mips.c:5459
+#: config/tc-mips.c:5462
 msgid "invalid performance register"
 msgstr ""
 
-#: config/tc-mips.c:5555 config/tc-mips.c:6026
+#: config/tc-mips.c:5558 config/tc-mips.c:6029
 msgid "the source register must not be $0"
 msgstr ""
 
-#: config/tc-mips.c:5831
+#: config/tc-mips.c:5834
 msgid "missing frame size"
 msgstr ""
 
-#: config/tc-mips.c:5836
+#: config/tc-mips.c:5839
 msgid "frame size specified twice"
 msgstr ""
 
-#: config/tc-mips.c:5841
+#: config/tc-mips.c:5844
 msgid "invalid frame size"
 msgstr ""
 
-#: config/tc-mips.c:5881
+#: config/tc-mips.c:5884
 #, c-format
 msgid "operand %d must be an immediate"
 msgstr ""
 
-#: config/tc-mips.c:5896
+#: config/tc-mips.c:5899
 msgid "invalid element selector"
 msgstr ""
 
-#: config/tc-mips.c:5909
+#: config/tc-mips.c:5912
 #, c-format
 msgid "operand %d must be scalar"
 msgstr ""
 
-#: config/tc-mips.c:6089
+#: config/tc-mips.c:6092
 msgid "floating-point expression required"
 msgstr ""
 
-#: config/tc-mips.c:6189
+#: config/tc-mips.c:6192
 #, c-format
 msgid "cannot use `%s' in this section"
 msgstr ""
 
-#: config/tc-mips.c:6336
+#: config/tc-mips.c:6339
 msgid "used $at without \".set noat\""
 msgstr ""
 
-#: config/tc-mips.c:6338
+#: config/tc-mips.c:6341
 #, c-format
 msgid "used $%u with \".set at=$%u\""
 msgstr ""
 
-#: config/tc-mips.c:7485
+#: config/tc-mips.c:7524
 #, c-format
 msgid "wrong size instruction in a %u-bit branch delay slot"
 msgstr ""
 
-#: config/tc-mips.c:7505 config/tc-mips.c:7515 config/tc-mips.c:15916
+#: config/tc-mips.c:7544 config/tc-mips.c:7554 config/tc-mips.c:15955
 #, c-format
 msgid "jump to misaligned address (0x%lx)"
 msgstr ""
 
-#: config/tc-mips.c:7530 config/tc-mips.c:7550 config/tc-mips.c:7567
-#: config/tc-mips.c:9117 config/tc-mips.c:15770 config/tc-mips.c:15777
-#: config/tc-mips.c:16170 config/tc-mips.c:19016
+#: config/tc-mips.c:7569 config/tc-mips.c:7589 config/tc-mips.c:7606
+#: config/tc-mips.c:9156 config/tc-mips.c:15809 config/tc-mips.c:15816
+#: config/tc-mips.c:16209 config/tc-mips.c:19055
 #, c-format
 msgid "branch to misaligned address (0x%lx)"
 msgstr ""
 
-#: config/tc-mips.c:7536 config/tc-mips.c:7554 config/tc-mips.c:7571
-#: config/tc-mips.c:9120
+#: config/tc-mips.c:7575 config/tc-mips.c:7593 config/tc-mips.c:7610
+#: config/tc-mips.c:9159
 #, c-format
 msgid "branch address range overflow (0x%lx)"
 msgstr ""
 
-#: config/tc-mips.c:7816
+#: config/tc-mips.c:7855
 msgid "extended instruction in delay slot"
 msgstr ""
 
-#: config/tc-mips.c:8280
+#: config/tc-mips.c:8319
 msgid "source and destination must be different"
 msgstr ""
 
-#: config/tc-mips.c:8283
+#: config/tc-mips.c:8322
 msgid "a destination register must be supplied"
 msgstr ""
 
-#: config/tc-mips.c:8288
+#: config/tc-mips.c:8327
 msgid "the source register must not be $31"
 msgstr ""
 
-#: config/tc-mips.c:8536 config/tc-mips.c:14506 config/tc-mips.c:19163
+#: config/tc-mips.c:8575 config/tc-mips.c:14545 config/tc-mips.c:19202
 msgid "invalid unextended operand value"
 msgstr ""
 
-#: config/tc-mips.c:8654
+#: config/tc-mips.c:8693
 #, c-format
 msgid "opcode not supported on this processor: %s (%s)"
 msgstr ""
 
-#: config/tc-mips.c:8733
+#: config/tc-mips.c:8772
 msgid "opcode not supported in the `insn32' mode"
 msgstr ""
 
-#: config/tc-mips.c:8736
+#: config/tc-mips.c:8775
 #, c-format
 msgid "unrecognized %d-bit version of microMIPS opcode"
 msgstr ""
 
-#: config/tc-mips.c:8792
+#: config/tc-mips.c:8831
 msgid "unrecognized unextended version of MIPS16 opcode"
 msgstr ""
 
-#: config/tc-mips.c:8795
+#: config/tc-mips.c:8834
 msgid "unrecognized extended version of MIPS16 opcode"
 msgstr ""
 
-#: config/tc-mips.c:8845 config/tc-mips.c:19034
+#: config/tc-mips.c:8884 config/tc-mips.c:19073
 msgid ""
 "macro instruction expanded into multiple instructions in a branch delay slot"
 msgstr ""
 
-#: config/tc-mips.c:8848 config/tc-mips.c:19042
+#: config/tc-mips.c:8887 config/tc-mips.c:19081
 msgid "macro instruction expanded into multiple instructions"
 msgstr ""
 
-#: config/tc-mips.c:8852
+#: config/tc-mips.c:8891
 msgid ""
 "macro instruction expanded into a wrong size instruction in a 16-bit branch "
 "delay slot"
 msgstr ""
 
-#: config/tc-mips.c:8854
+#: config/tc-mips.c:8893
 msgid ""
 "macro instruction expanded into a wrong size instruction in a 32-bit branch "
 "delay slot"
 msgstr ""
 
-#: config/tc-mips.c:9317
+#: config/tc-mips.c:9356
 msgid "operand overflow"
 msgstr ""
 
-#: config/tc-mips.c:9336 config/tc-mips.c:9920 config/tc-mips.c:13987
+#: config/tc-mips.c:9375 config/tc-mips.c:9959 config/tc-mips.c:14026
 msgid "macro used $at after \".set noat\""
 msgstr ""
 
-#: config/tc-mips.c:9484 config/tc-mips.c:12298 config/tc-mips.c:12981
+#: config/tc-mips.c:9523 config/tc-mips.c:12337 config/tc-mips.c:13020
 #, c-format
 msgid "number (0x%s) larger than 32 bits"
 msgstr ""
 
-#: config/tc-mips.c:9504
+#: config/tc-mips.c:9543
 msgid "number larger than 64 bits"
 msgstr ""
 
-#: config/tc-mips.c:9798 config/tc-mips.c:9826 config/tc-mips.c:9864
-#: config/tc-mips.c:9909 config/tc-mips.c:12541 config/tc-mips.c:12580
-#: config/tc-mips.c:12619 config/tc-mips.c:13077 config/tc-mips.c:13129
+#: config/tc-mips.c:9837 config/tc-mips.c:9865 config/tc-mips.c:9903
+#: config/tc-mips.c:9948 config/tc-mips.c:12580 config/tc-mips.c:12619
+#: config/tc-mips.c:12658 config/tc-mips.c:13116 config/tc-mips.c:13168
 msgid "PIC code offset overflow (max 16 signed bits)"
 msgstr ""
 
-#: config/tc-mips.c:10442
+#: config/tc-mips.c:10481
 #, c-format
 msgid "BALIGN immediate not 0, 1, 2 or 3 (%lu)"
 msgstr ""
 
 #. Result is always true.
-#: config/tc-mips.c:10538
+#: config/tc-mips.c:10577
 #, c-format
 msgid "branch %s is always true"
 msgstr ""
 
-#: config/tc-mips.c:10766 config/tc-mips.c:10876
+#: config/tc-mips.c:10805 config/tc-mips.c:10915
 msgid "divide by zero"
 msgstr ""
 
-#: config/tc-mips.c:10966
+#: config/tc-mips.c:11005
 msgid "dla used to load 32-bit register; recommend using la instead"
 msgstr ""
 
-#: config/tc-mips.c:10970
+#: config/tc-mips.c:11009
 msgid "la used to load 64-bit address; recommend using dla instead"
 msgstr ""
 
-#: config/tc-mips.c:11079 config/tc-riscv.c:1111 config/tc-z80.c:1150
+#: config/tc-mips.c:11118 config/tc-riscv.c:1443
 msgid "offset too large"
 msgstr ""
 
-#: config/tc-mips.c:11253 config/tc-mips.c:11531
+#: config/tc-mips.c:11292 config/tc-mips.c:11570
 msgid "PIC code offset overflow (max 32 signed bits)"
 msgstr ""
 
-#: config/tc-mips.c:11601 config/tc-mips.c:11677
+#: config/tc-mips.c:11640 config/tc-mips.c:11716
 #, c-format
 msgid "opcode not supported in the `insn32' mode `%s'"
 msgstr ""
 
-#: config/tc-mips.c:11629
+#: config/tc-mips.c:11668
 msgid "MIPS PIC call to register other than $25"
 msgstr ""
 
-#: config/tc-mips.c:11645 config/tc-mips.c:11656 config/tc-mips.c:11789
-#: config/tc-mips.c:11800
+#: config/tc-mips.c:11684 config/tc-mips.c:11695 config/tc-mips.c:11828
+#: config/tc-mips.c:11839
 msgid "no .cprestore pseudo-op used in PIC code"
 msgstr ""
 
-#: config/tc-mips.c:11650 config/tc-mips.c:11794
+#: config/tc-mips.c:11689 config/tc-mips.c:11833
 msgid "no .frame pseudo-op used in PIC code"
 msgstr ""
 
-#: config/tc-mips.c:11815
+#: config/tc-mips.c:11854
 msgid "non-PIC jump used in PIC library"
 msgstr ""
 
-#: config/tc-mips.c:12798
+#: config/tc-mips.c:12837
 #, c-format
 msgid "Unable to generate `%s' compliant code without mthc1"
 msgstr ""
 
-#: config/tc-mips.c:13541
+#: config/tc-mips.c:13580
 #, c-format
 msgid "instruction %s: result is always false"
 msgstr ""
 
-#: config/tc-mips.c:13694
+#: config/tc-mips.c:13733
 #, 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:13983
+#: config/tc-mips.c:14022
 #, c-format
 msgid "macro %s not implemented yet"
 msgstr ""
 
-#: config/tc-mips.c:14516
+#: config/tc-mips.c:14555
 msgid "extended operand requested but not required"
 msgstr ""
 
-#: config/tc-mips.c:14525
+#: config/tc-mips.c:14564
 msgid "operand value out of range for instruction"
 msgstr ""
 
-#: config/tc-mips.c:14624
+#: config/tc-mips.c:14663
 #, c-format
 msgid "relocation %s isn't supported by the current ABI"
 msgstr ""
 
-#: config/tc-mips.c:14680
+#: config/tc-mips.c:14719
 msgid "unclosed '('"
 msgstr ""
 
-#: config/tc-mips.c:14746
+#: config/tc-mips.c:14785
 #, c-format
 msgid "a different %s was already specified, is now %s"
 msgstr ""
 
-#: config/tc-mips.c:14913
+#: config/tc-mips.c:14952
 msgid "-mmicromips cannot be used with -mips16"
 msgstr ""
 
-#: config/tc-mips.c:14928
+#: config/tc-mips.c:14967
 msgid "-mips16 cannot be used with -micromips"
 msgstr ""
 
-#: config/tc-mips.c:15097 config/tc-mips.c:15155
+#: config/tc-mips.c:15136 config/tc-mips.c:15194
 msgid "no compiled in support for 64 bit object file format"
 msgstr ""
 
-#: config/tc-mips.c:15162
+#: config/tc-mips.c:15201
 #, c-format
 msgid "invalid abi -mabi=%s"
 msgstr ""
 
-#: config/tc-mips.c:15202
+#: config/tc-mips.c:15241
 #, c-format
 msgid "invalid NaN setting -mnan=%s"
 msgstr ""
 
-#: config/tc-mips.c:15236
+#: config/tc-mips.c:15275
 msgid "-G not supported in this configuration"
 msgstr ""
 
-#: config/tc-mips.c:15262
+#: config/tc-mips.c:15301
 #, c-format
 msgid "-%s conflicts with the other architecture options, which imply -%s"
 msgstr ""
 
-#: config/tc-mips.c:15278
+#: config/tc-mips.c:15317
 #, c-format
 msgid "-march=%s is not compatible with the selected ABI"
 msgstr ""
 
-#: config/tc-mips.c:15774 config/tc-mips.c:16164 config/tc-mips.c:19013
+#: config/tc-mips.c:15813 config/tc-mips.c:16203 config/tc-mips.c:19052
 msgid "branch to a symbol in another ISA mode"
 msgstr ""
 
-#: config/tc-mips.c:15781 config/tc-mips.c:15921 config/tc-mips.c:16174
+#: config/tc-mips.c:15820 config/tc-mips.c:15960 config/tc-mips.c:16213
 #, c-format
 msgid "cannot encode misaligned addend in the relocatable field (0x%lx)"
 msgstr ""
 
-#: config/tc-mips.c:15818
+#: config/tc-mips.c:15857
 msgid "PC-relative reference to a different section"
 msgstr ""
 
-#: config/tc-mips.c:15890 config/tc-riscv.c:2412
+#: config/tc-mips.c:15929 config/tc-riscv.c:2865
 msgid "TLS relocation against a constant"
 msgstr ""
 
-#: config/tc-mips.c:15910
+#: config/tc-mips.c:15949
 msgid "jump to a symbol in another ISA mode"
 msgstr ""
 
-#: config/tc-mips.c:15913
+#: config/tc-mips.c:15952
 msgid "JALX to a symbol in the same ISA mode"
 msgstr ""
 
-#: config/tc-mips.c:15997
+#: config/tc-mips.c:16036
 msgid "unsupported constant in relocation"
 msgstr ""
 
-#: config/tc-mips.c:16069
+#: config/tc-mips.c:16108
 #, c-format
 msgid "PC-relative access using misaligned symbol (%lx)"
 msgstr ""
 
-#: config/tc-mips.c:16073
+#: config/tc-mips.c:16112
 #, c-format
 msgid "PC-relative access using misaligned offset (%lx)"
 msgstr ""
 
-#: config/tc-mips.c:16086 config/tc-mips.c:16105
+#: config/tc-mips.c:16125 config/tc-mips.c:16144
 msgid "PC-relative access out of range"
 msgstr ""
 
-#: config/tc-mips.c:16092
+#: config/tc-mips.c:16131
 #, c-format
 msgid "PC-relative access to misaligned address (%lx)"
 msgstr ""
 
-#: config/tc-mips.c:16259
+#: config/tc-mips.c:16298
 #, c-format
 msgid "alignment too large, %d assumed"
 msgstr ""
 
-#: config/tc-mips.c:16262
+#: config/tc-mips.c:16301
 msgid "alignment negative, 0 assumed"
 msgstr ""
 
-#: config/tc-mips.c:16498
+#: config/tc-mips.c:16537
 #, c-format
 msgid "%s: no such section"
 msgstr ""
 
-#: config/tc-mips.c:16554
+#: config/tc-mips.c:16593
 #, c-format
 msgid ".option pic%d not supported"
 msgstr ""
 
-#: config/tc-mips.c:16556
+#: config/tc-mips.c:16595
 #, c-format
 msgid ".option pic%d not supported in VxWorks PIC mode"
 msgstr ""
 
-#: config/tc-mips.c:16568 config/tc-mips.c:16908
+#: config/tc-mips.c:16607 config/tc-mips.c:16947
 msgid "-G may not be used with SVR4 PIC code"
 msgstr ""
 
-#: config/tc-mips.c:16574
+#: config/tc-mips.c:16613
 #, c-format
 msgid "unrecognized option \"%s\""
 msgstr ""
 
-#: config/tc-mips.c:16680
+#: config/tc-mips.c:16719
 #, c-format
 msgid "unknown architecture %s"
 msgstr ""
 
-#: config/tc-mips.c:16695 config/tc-mips.c:16859
+#: config/tc-mips.c:16734 config/tc-mips.c:16898
 #, c-format
 msgid "unknown ISA level %s"
 msgstr ""
 
-#: config/tc-mips.c:16705
+#: config/tc-mips.c:16744
 #, c-format
 msgid "unknown ISA or architecture %s"
 msgstr ""
 
-#: config/tc-mips.c:16764
+#: config/tc-mips.c:16803
 msgid "`noreorder' must be set before `nomacro'"
 msgstr ""
 
-#: config/tc-mips.c:16794
+#: config/tc-mips.c:16833
 msgid ".set pop with no .set push"
 msgstr ""
 
-#: config/tc-mips.c:16813
+#: config/tc-mips.c:16852
 #, c-format
 msgid "tried to set unrecognized symbol: %s\n"
 msgstr ""
 
-#: config/tc-mips.c:16886
+#: config/tc-mips.c:16925
 #, c-format
 msgid ".module used with unrecognized symbol: %s\n"
 msgstr ""
 
-#: config/tc-mips.c:16892
+#: config/tc-mips.c:16931
 msgid ".module is not permitted after generating code"
 msgstr ""
 
-#: config/tc-mips.c:16952 config/tc-mips.c:17031 config/tc-mips.c:17135
-#: config/tc-mips.c:17165 config/tc-mips.c:17214
+#: config/tc-mips.c:16991 config/tc-mips.c:17070 config/tc-mips.c:17174
+#: config/tc-mips.c:17204 config/tc-mips.c:17253
 #, c-format
 msgid "%s not supported in MIPS16 mode"
 msgstr ""
 
-#: config/tc-mips.c:16959
+#: config/tc-mips.c:16998
 msgid ".cpload not in noreorder section"
 msgstr ""
 
-#: config/tc-mips.c:17040 config/tc-mips.c:17059
+#: config/tc-mips.c:17079 config/tc-mips.c:17098
 msgid "missing argument separator ',' for .cpsetup"
 msgstr ""
 
-#: config/tc-mips.c:17257
+#: config/tc-mips.c:17296
 #, c-format
 msgid "unsupported use of %s"
 msgstr ""
 
-#: config/tc-mips.c:17348
+#: config/tc-mips.c:17387
 msgid "unsupported use of .gpword"
 msgstr ""
 
-#: config/tc-mips.c:17386
+#: config/tc-mips.c:17425
 msgid "unsupported use of .gpdword"
 msgstr ""
 
-#: config/tc-mips.c:17418
+#: config/tc-mips.c:17457
 msgid "unsupported use of .ehword"
 msgstr ""
 
-#: config/tc-mips.c:17505
+#: config/tc-mips.c:17544
 msgid "bad .nan directive"
 msgstr ""
 
-#: config/tc-mips.c:17554
+#: config/tc-mips.c:17593
 #, c-format
 msgid "ignoring attempt to redefine symbol %s"
 msgstr ""
 
-#: config/tc-mips.c:17569 ecoff.c:3372
+#: config/tc-mips.c:17608 ecoff.c:3372
 msgid "bad .weakext directive"
 msgstr ""
 
-#: config/tc-mips.c:18538 config/tc-mips.c:18815
+#: config/tc-mips.c:18577 config/tc-mips.c:18854
 msgid "relaxed out-of-range branch into a jump"
 msgstr ""
 
-#: config/tc-mips.c:19038
+#: config/tc-mips.c:19077
 msgid "extended instruction in a branch delay slot"
 msgstr ""
 
-#: config/tc-mips.c:19152 config/tc-xtensa.c:1676 config/tc-xtensa.c:1954
+#: config/tc-mips.c:19191 config/tc-xtensa.c:1682 config/tc-xtensa.c:1960
 msgid "unsupported relocation"
 msgstr ""
 
-#: config/tc-mips.c:19660 config/tc-score.c:5636
+#: config/tc-mips.c:19699 config/tc-score.c:5638
 msgid "expected simple number"
 msgstr ""
 
-#: config/tc-mips.c:19688 config/tc-score.c:5663
+#: config/tc-mips.c:19727 config/tc-score.c:5665
 msgid "invalid number"
 msgstr ""
 
-#: config/tc-mips.c:19765 ecoff.c:2999
+#: config/tc-mips.c:19804 ecoff.c:2999
 msgid ".end directive without a preceding .ent directive"
 msgstr ""
 
-#: config/tc-mips.c:19774
+#: config/tc-mips.c:19813
 msgid ".end symbol does not match .ent symbol"
 msgstr ""
 
-#: config/tc-mips.c:19851
+#: config/tc-mips.c:19890
 msgid ".ent or .aent not in text section"
 msgstr ""
 
-#: config/tc-mips.c:19854 config/tc-score.c:5702
+#: config/tc-mips.c:19893 config/tc-score.c:5697
 msgid "missing .end"
 msgstr ""
 
-#: config/tc-mips.c:19937
+#: config/tc-mips.c:19976
 msgid ".mask/.fmask outside of .ent"
 msgstr ""
 
-#: config/tc-mips.c:19944
+#: config/tc-mips.c:19983
 msgid "bad .mask/.fmask directive"
 msgstr ""
 
-#: config/tc-mips.c:20247
+#: config/tc-mips.c:20286
 #, c-format
 msgid "bad value (%s) for %s"
 msgstr ""
 
-#: config/tc-mips.c:20311
+#: config/tc-mips.c:20350
 #, c-format
 msgid ""
 "MIPS options:\n"
@@ -12485,7 +12681,7 @@ msgid ""
 "\t\t\timplicitly with the gp register [default 8]\n"
 msgstr ""
 
-#: config/tc-mips.c:20318
+#: config/tc-mips.c:20357
 #, c-format
 msgid ""
 "-mips1\t\t\tgenerate MIPS ISA I instructions\n"
@@ -12506,7 +12702,7 @@ msgid ""
 "-march=CPU/-mtune=CPU\tgenerate code/schedule for CPU, where CPU is one of:\n"
 msgstr ""
 
-#: config/tc-mips.c:20343
+#: config/tc-mips.c:20382
 #, c-format
 msgid ""
 "-mCPU\t\t\tequivalent to -march=CPU -mtune=CPU. Deprecated.\n"
@@ -12514,105 +12710,105 @@ msgid ""
 "\t\t\tFor -mCPU and -no-mCPU, CPU must be one of:\n"
 msgstr ""
 
-#: config/tc-mips.c:20356
+#: config/tc-mips.c:20395
 #, c-format
 msgid ""
 "-mips16\t\t\tgenerate mips16 instructions\n"
 "-no-mips16\t\tdo not generate mips16 instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:20359
+#: config/tc-mips.c:20398
 #, c-format
 msgid ""
 "-mmips16e2\t\tgenerate MIPS16e2 instructions\n"
 "-mno-mips16e2\t\tdo not generate MIPS16e2 instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:20362
+#: config/tc-mips.c:20401
 #, c-format
 msgid ""
 "-mmicromips\t\tgenerate microMIPS instructions\n"
 "-mno-micromips\t\tdo not generate microMIPS instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:20365
+#: config/tc-mips.c:20404
 #, c-format
 msgid ""
 "-msmartmips\t\tgenerate smartmips instructions\n"
 "-mno-smartmips\t\tdo not generate smartmips instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:20368
+#: config/tc-mips.c:20407
 #, c-format
 msgid ""
 "-mdsp\t\t\tgenerate DSP instructions\n"
 "-mno-dsp\t\tdo not generate DSP instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:20371
+#: config/tc-mips.c:20410
 #, 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:20374
+#: config/tc-mips.c:20413
 #, 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:20377
+#: config/tc-mips.c:20416
 #, 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:20380
+#: config/tc-mips.c:20419
 #, c-format
 msgid ""
 "-mmcu\t\t\tgenerate MCU instructions\n"
 "-mno-mcu\t\tdo not generate MCU instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:20383
+#: config/tc-mips.c:20422
 #, c-format
 msgid ""
 "-mmsa\t\t\tgenerate MSA instructions\n"
 "-mno-msa\t\tdo not generate MSA instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:20386
+#: config/tc-mips.c:20425
 #, 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:20389
+#: config/tc-mips.c:20428
 #, c-format
 msgid ""
 "-mvirt\t\t\tgenerate Virtualization instructions\n"
 "-mno-virt\t\tdo not generate Virtualization instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:20392
+#: config/tc-mips.c:20431
 #, c-format
 msgid ""
 "-mcrc\t\t\tgenerate CRC instructions\n"
 "-mno-crc\t\tdo not generate CRC instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:20395
+#: config/tc-mips.c:20434
 #, c-format
 msgid ""
 "-mginv\t\t\tgenerate Global INValidate (GINV) instructions\n"
 "-mno-ginv\t\tdo not generate Global INValidate instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:20398
+#: config/tc-mips.c:20437
 #, c-format
 msgid ""
 "-mloongson-mmi\t\tgenerate Loongson MultiMedia extensions Instructions (MMI) "
@@ -12621,7 +12817,7 @@ msgid ""
 "Instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:20401
+#: config/tc-mips.c:20440
 #, c-format
 msgid ""
 "-mloongson-cam\t\tgenerate Loongson Content Address Memory (CAM) "
@@ -12630,35 +12826,35 @@ msgid ""
 "Instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:20404
+#: config/tc-mips.c:20443
 #, c-format
 msgid ""
 "-mloongson-ext\t\tgenerate Loongson EXTensions (EXT) instructions\n"
 "-mno-loongson-ext\tdo not generate Loongson EXTensions Instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:20407
+#: config/tc-mips.c:20446
 #, c-format
 msgid ""
 "-mloongson-ext2\t\tgenerate Loongson EXTensions R2 (EXT2) instructions\n"
 "-mno-loongson-ext2\tdo not generate Loongson EXTensions R2 Instructions\n"
 msgstr ""
 
-#: config/tc-mips.c:20410
+#: config/tc-mips.c:20449
 #, 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:20414
+#: config/tc-mips.c:20453
 #, c-format
 msgid ""
 "-mfix-loongson3-llsc\twork around Loongson3 LL/SC errata, default\n"
 "-mno-fix-loongson3-llsc\tdisable work around Loongson3 LL/SC errata\n"
 msgstr ""
 
-#: config/tc-mips.c:20418
+#: config/tc-mips.c:20457
 #, c-format
 msgid ""
 "-mfix-loongson3-llsc\twork around Loongson3 LL/SC errata\n"
@@ -12666,7 +12862,7 @@ msgid ""
 "default\n"
 msgstr ""
 
-#: config/tc-mips.c:20422
+#: config/tc-mips.c:20461
 #, c-format
 msgid ""
 "-mfix-loongson2f-jump\twork around Loongson2F JUMP instructions\n"
@@ -12688,7 +12884,7 @@ msgid ""
 "--break, --no-trap\tbreak exception on div by 0 and mult overflow\n"
 msgstr ""
 
-#: config/tc-mips.c:20440
+#: config/tc-mips.c:20479
 #, c-format
 msgid ""
 "-mhard-float\t\tallow floating-point instructions\n"
@@ -12703,7 +12899,7 @@ msgid ""
 "-mnan=ENCODING\t\tselect an IEEE 754 NaN encoding convention, either of:\n"
 msgstr ""
 
-#: config/tc-mips.c:20458
+#: config/tc-mips.c:20497
 #, c-format
 msgid ""
 "-KPIC, -call_shared\tgenerate SVR4 position independent code\n"
@@ -12717,26 +12913,26 @@ msgid ""
 "-mabi=ABI\t\tcreate ABI conformant object file for:\n"
 msgstr ""
 
-#: config/tc-mips.c:20479
+#: config/tc-mips.c:20518
 #, c-format
 msgid "-32\t\t\tcreate o32 ABI object file%s\n"
 msgstr ""
 
-#: config/tc-mips.c:20481 config/tc-mips.c:20484 config/tc-mips.c:20487
+#: config/tc-mips.c:20520 config/tc-mips.c:20523 config/tc-mips.c:20526
 msgid " (default)"
 msgstr ""
 
-#: config/tc-mips.c:20482
+#: config/tc-mips.c:20521
 #, c-format
 msgid "-n32\t\t\tcreate n32 ABI object file%s\n"
 msgstr ""
 
-#: config/tc-mips.c:20485
+#: config/tc-mips.c:20524
 #, c-format
 msgid "-64\t\t\tcreate 64 ABI object file%s\n"
 msgstr ""
 
-#: config/tc-mips.c:20567
+#: config/tc-mips.c:20606
 msgid "missing .end at end of assembly"
 msgstr ""
 
@@ -12967,7 +13163,7 @@ msgstr ""
 #. We will only get here in rare cases involving #NO_APP,
 #. where the unterminated string is not recognized by the
 #. preformatting pass.
-#: config/tc-mmix.c:4136 config/tc-mmix.c:4294 config/tc-z80.c:2836
+#: config/tc-mmix.c:4136 config/tc-mmix.c:4294 config/tc-z80.c:3152
 msgid "unterminated string"
 msgstr ""
 
@@ -13005,7 +13201,7 @@ msgid "Unrecognized opcode: `%s'"
 msgstr ""
 
 #. xgettext:c-format.
-#: config/tc-mn10200.c:1139 config/tc-mn10300.c:1821 config/tc-ppc.c:4069
+#: config/tc-mn10200.c:1139 config/tc-mn10300.c:1821 config/tc-ppc.c:4082
 #: config/tc-s390.c:1612 config/tc-v850.c:3043
 #, c-format
 msgid "junk at end of line: `%s'"
@@ -13031,41 +13227,41 @@ msgstr ""
 msgid "Bad relocation fixup type (%d)"
 msgstr ""
 
-#: config/tc-moxie.c:206 config/tc-moxie.c:225 config/tc-moxie.c:316
-#: config/tc-moxie.c:362
+#: config/tc-moxie.c:204 config/tc-moxie.c:223 config/tc-moxie.c:314
+#: config/tc-moxie.c:360
 msgid "expecting comma delimited register operands"
 msgstr ""
 
-#: config/tc-moxie.c:252 config/tc-moxie.c:392 config/tc-moxie.c:422
-#: config/tc-moxie.c:497
+#: config/tc-moxie.c:250 config/tc-moxie.c:390 config/tc-moxie.c:420
+#: config/tc-moxie.c:495
 msgid "expecting comma delimited operands"
 msgstr ""
 
-#: config/tc-moxie.c:320 config/tc-moxie.c:348
+#: config/tc-moxie.c:318 config/tc-moxie.c:346
 msgid "expecting indirect register `($rA)'"
 msgstr ""
 
-#: config/tc-moxie.c:328 config/tc-moxie.c:356 config/tc-moxie.c:447
-#: config/tc-moxie.c:489
+#: config/tc-moxie.c:326 config/tc-moxie.c:354 config/tc-moxie.c:445
+#: config/tc-moxie.c:487
 msgid "missing closing parenthesis"
 msgstr ""
 
-#: config/tc-moxie.c:439 config/tc-moxie.c:481
+#: config/tc-moxie.c:437 config/tc-moxie.c:479
 msgid "expecting indirect register `($rX)'"
 msgstr ""
 
-#: config/tc-moxie.c:559 config/tc-pj.c:313
+#: config/tc-moxie.c:557 config/tc-pj.c:313
 msgid "Something forgot to clean up\n"
 msgstr ""
 
-#: config/tc-moxie.c:643
+#: config/tc-moxie.c:641
 #, c-format
 msgid ""
 "  -EB                     assemble for a big endian system (default)\n"
 "  -EL                     assemble for a little endian system\n"
 msgstr ""
 
-#: config/tc-moxie.c:703
+#: config/tc-moxie.c:701
 msgid "pcrel too far BFD_RELOC_MOXIE_10"
 msgstr ""
 
@@ -14144,7 +14340,7 @@ msgid "badly formed expression near %s"
 msgstr ""
 
 #: config/tc-nios2.c:3108 config/tc-nios2.c:3135 config/tc-pru.c:1413
-#: config/tc-pru.c:1438 config/tc-xtensa.c:2128
+#: config/tc-pru.c:1438 config/tc-xtensa.c:2134
 msgid "too many arguments"
 msgstr ""
 
@@ -14183,19 +14379,24 @@ msgstr ""
 msgid "Bad .section directive: want a,s,w,x,M,S,G,T in string"
 msgstr ""
 
-#: config/tc-nios2.c:4026
+#: config/tc-nios2.c:4029
 #, c-format
 msgid "Illegal operands: %%tls_ldo in %d-byte data field"
 msgstr ""
 
-#: config/tc-nios2.c:4038 config/tc-nios2.c:4056 config/tc-nios2.c:4063
+#: config/tc-nios2.c:4041
 #, c-format
-msgid "Illegal operands: %%tls_ldo requires arguments in ()"
+msgid "Illegal operands: %%gotoff in %d-byte data field"
 msgstr ""
 
-#: config/tc-nios2.c:4070
+#: config/tc-nios2.c:4054 config/tc-nios2.c:4073 config/tc-nios2.c:4081
 #, c-format
-msgid "Illegal operands: garbage after %%tls_ldo()"
+msgid "Illegal operands: %s requires arguments in ()"
+msgstr ""
+
+#: config/tc-nios2.c:4089
+#, c-format
+msgid "Illegal operands: garbage after %s()"
 msgstr ""
 
 #: config/tc-ns32k.c:437
@@ -14376,81 +14577,81 @@ msgstr ""
 msgid "Cannot find relocation type for symbol %s, code %d"
 msgstr ""
 
-#: config/tc-pdp11.c:340 config/tc-pdp11.c:357 config/tc-pdp11.c:380
-#: config/tc-pdp11.c:386 config/tc-pdp11.c:399
+#: config/tc-pdp11.c:344 config/tc-pdp11.c:361 config/tc-pdp11.c:384
+#: config/tc-pdp11.c:390 config/tc-pdp11.c:403
 msgid "Bad register name"
 msgstr ""
 
-#: config/tc-pdp11.c:418 config/tc-pdp11.c:482 config/tc-pdp11.c:493
+#: config/tc-pdp11.c:422 config/tc-pdp11.c:486 config/tc-pdp11.c:497
 msgid "Error in expression"
 msgstr ""
 
-#: config/tc-pdp11.c:490
+#: config/tc-pdp11.c:494
 msgid "Low order bits truncated in immediate float operand"
 msgstr ""
 
-#: config/tc-pdp11.c:634
+#: config/tc-pdp11.c:638
 msgid "Float AC not legal as integer operand"
 msgstr ""
 
-#: config/tc-pdp11.c:654
+#: config/tc-pdp11.c:658
 msgid "General register not legal as float operand"
 msgstr ""
 
-#: config/tc-pdp11.c:687
+#: config/tc-pdp11.c:691
 msgid "No instruction found"
 msgstr ""
 
-#: config/tc-pdp11.c:697 config/tc-z80.c:3277 config/tc-z80.c:3298
+#: config/tc-pdp11.c:701 config/tc-z80.c:3617
 #, c-format
 msgid "Unknown instruction '%s'"
 msgstr ""
 
-#: config/tc-pdp11.c:703
+#: config/tc-pdp11.c:707
 #, c-format
 msgid "Unsupported instruction set extension: %s"
 msgstr ""
 
-#: config/tc-pdp11.c:737
+#: config/tc-pdp11.c:741
 msgid "operand is not an absolute constant"
 msgstr ""
 
-#: config/tc-pdp11.c:745
+#: config/tc-pdp11.c:749
 msgid "3-bit immediate out of range"
 msgstr ""
 
-#: config/tc-pdp11.c:752
+#: config/tc-pdp11.c:756
 msgid "6-bit immediate out of range"
 msgstr ""
 
-#: config/tc-pdp11.c:759
+#: config/tc-pdp11.c:763
 msgid "8-bit immediate out of range"
 msgstr ""
 
-#: config/tc-pdp11.c:776 config/tc-pdp11.c:969
+#: config/tc-pdp11.c:780 config/tc-pdp11.c:973
 msgid "Symbol expected"
 msgstr ""
 
-#: config/tc-pdp11.c:781
+#: config/tc-pdp11.c:785
 msgid "8-bit displacement out of range"
 msgstr ""
 
-#: config/tc-pdp11.c:823 config/tc-pdp11.c:844 config/tc-pdp11.c:861
-#: config/tc-pdp11.c:882 config/tc-pdp11.c:899 config/tc-pdp11.c:920
-#: config/tc-pdp11.c:939 config/tc-pdp11.c:960
+#: config/tc-pdp11.c:827 config/tc-pdp11.c:848 config/tc-pdp11.c:865
+#: config/tc-pdp11.c:886 config/tc-pdp11.c:903 config/tc-pdp11.c:924
+#: config/tc-pdp11.c:943 config/tc-pdp11.c:964
 msgid "Missing ','"
 msgstr ""
 
-#: config/tc-pdp11.c:974
+#: config/tc-pdp11.c:978
 msgid "6-bit displacement out of range"
 msgstr ""
 
-#: config/tc-pdp11.c:995 config/tc-tilegx.c:1216 config/tc-tilepro.c:1102
+#: config/tc-pdp11.c:999 config/tc-tilegx.c:1216 config/tc-tilepro.c:1102
 #: config/tc-vax.c:1950
 msgid "Too many operands"
 msgstr ""
 
-#: config/tc-pdp11.c:1445
+#: config/tc-pdp11.c:1449
 #, c-format
 msgid "Can not represent %s relocation in this object file format"
 msgstr ""
@@ -14475,704 +14676,704 @@ msgid ""
 "-big\t\t\tgenerate big endian code\n"
 msgstr ""
 
-#: config/tc-pj.c:380 config/tc-sh.c:3594 config/tc-sh.c:3601
-#: config/tc-sh.c:3608 config/tc-sh.c:3615
+#: config/tc-pj.c:380 config/tc-sh.c:3595 config/tc-sh.c:3602
+#: config/tc-sh.c:3609 config/tc-sh.c:3616
 msgid "pcrel too far"
 msgstr ""
 
-#: config/tc-ppc.c:977 config/tc-ppc.c:985 config/tc-ppc.c:3573
+#: config/tc-ppc.c:987 config/tc-ppc.c:995 config/tc-ppc.c:3586
 msgid "invalid register expression"
 msgstr ""
 
-#: config/tc-ppc.c:1145 config/tc-ppc.c:1203 config/tc-ppc.c:1251
+#: config/tc-ppc.c:1155 config/tc-ppc.c:1213 config/tc-ppc.c:1261
 msgid "the use of -mvle requires big endian."
 msgstr ""
 
-#: config/tc-ppc.c:1183 config/tc-ppc.c:1205
+#: config/tc-ppc.c:1193 config/tc-ppc.c:1215
 msgid "the use of -mvle requires -a32."
 msgstr ""
 
-#: config/tc-ppc.c:1185
+#: config/tc-ppc.c:1195
 #, c-format
 msgid "%s unsupported"
 msgstr ""
 
-#: config/tc-ppc.c:1278 config/tc-s390.c:433 config/tc-s390.c:440
+#: config/tc-ppc.c:1288 config/tc-s390.c:433 config/tc-s390.c:440
 #, c-format
 msgid "invalid switch -m%s"
 msgstr ""
 
-#: config/tc-ppc.c:1309
+#: config/tc-ppc.c:1319
 msgid "--nops needs a numeric argument"
 msgstr ""
 
-#: config/tc-ppc.c:1345
+#: config/tc-ppc.c:1355
 #, c-format
 msgid "PowerPC options:\n"
 msgstr ""
 
-#: config/tc-ppc.c:1347
+#: config/tc-ppc.c:1357
 #, c-format
 msgid "-a32                    generate ELF32/XCOFF32\n"
 msgstr ""
 
-#: config/tc-ppc.c:1350
+#: config/tc-ppc.c:1360
 #, c-format
 msgid "-a64                    generate ELF64/XCOFF64\n"
 msgstr ""
 
-#: config/tc-ppc.c:1352
+#: config/tc-ppc.c:1362
 #, c-format
 msgid "-u                      ignored\n"
 msgstr ""
 
-#: config/tc-ppc.c:1354
+#: config/tc-ppc.c:1364
 #, c-format
 msgid "-mpwrx, -mpwr2          generate code for POWER/2 (RIOS2)\n"
 msgstr ""
 
-#: config/tc-ppc.c:1356
+#: config/tc-ppc.c:1366
 #, c-format
 msgid "-mpwr                   generate code for POWER (RIOS1)\n"
 msgstr ""
 
-#: config/tc-ppc.c:1358
+#: config/tc-ppc.c:1368
 #, c-format
 msgid "-m601                   generate code for PowerPC 601\n"
 msgstr ""
 
-#: config/tc-ppc.c:1360
+#: config/tc-ppc.c:1370
 #, c-format
 msgid ""
 "-mppc, -mppc32, -m603, -m604\n"
 "                        generate code for PowerPC 603/604\n"
 msgstr ""
 
-#: config/tc-ppc.c:1363
+#: config/tc-ppc.c:1373
 #, c-format
 msgid "-m403                   generate code for PowerPC 403\n"
 msgstr ""
 
-#: config/tc-ppc.c:1365
+#: config/tc-ppc.c:1375
 #, c-format
 msgid "-m405                   generate code for PowerPC 405\n"
 msgstr ""
 
-#: config/tc-ppc.c:1367
+#: config/tc-ppc.c:1377
 #, c-format
 msgid "-m440                   generate code for PowerPC 440\n"
 msgstr ""
 
-#: config/tc-ppc.c:1369
+#: config/tc-ppc.c:1379
 #, c-format
 msgid "-m464                   generate code for PowerPC 464\n"
 msgstr ""
 
-#: config/tc-ppc.c:1371
+#: config/tc-ppc.c:1381
 #, c-format
 msgid "-m476                   generate code for PowerPC 476\n"
 msgstr ""
 
-#: config/tc-ppc.c:1373
+#: config/tc-ppc.c:1383
 #, c-format
 msgid ""
 "-m7400, -m7410, -m7450, -m7455\n"
 "                        generate code for PowerPC 7400/7410/7450/7455\n"
 msgstr ""
 
-#: config/tc-ppc.c:1376
+#: config/tc-ppc.c:1386
 #, c-format
 msgid ""
 "-m750cl, -mgekko, -mbroadway\n"
 "                        generate code for PowerPC 750cl/Gekko/Broadway\n"
 msgstr ""
 
-#: config/tc-ppc.c:1379
+#: config/tc-ppc.c:1389
 #, c-format
 msgid "-m821, -m850, -m860     generate code for PowerPC 821/850/860\n"
 msgstr ""
 
-#: config/tc-ppc.c:1381
+#: config/tc-ppc.c:1391
 #, c-format
 msgid "-mppc64, -m620          generate code for PowerPC 620/625/630\n"
 msgstr ""
 
-#: config/tc-ppc.c:1383
+#: config/tc-ppc.c:1393
 #, c-format
 msgid ""
 "-mppc64bridge           generate code for PowerPC 64, including bridge "
 "insns\n"
 msgstr ""
 
-#: config/tc-ppc.c:1385
+#: config/tc-ppc.c:1395
 #, c-format
 msgid "-mbooke                 generate code for 32-bit PowerPC BookE\n"
 msgstr ""
 
-#: config/tc-ppc.c:1387
+#: config/tc-ppc.c:1397
 #, c-format
 msgid "-ma2                    generate code for A2 architecture\n"
 msgstr ""
 
-#: config/tc-ppc.c:1389
+#: config/tc-ppc.c:1399
 #, c-format
 msgid "-mpower4, -mpwr4        generate code for Power4 architecture\n"
 msgstr ""
 
-#: config/tc-ppc.c:1391
+#: config/tc-ppc.c:1401
 #, c-format
 msgid ""
 "-mpower5, -mpwr5, -mpwr5x\n"
 "                        generate code for Power5 architecture\n"
 msgstr ""
 
-#: config/tc-ppc.c:1394
+#: config/tc-ppc.c:1404
 #, c-format
 msgid "-mpower6, -mpwr6        generate code for Power6 architecture\n"
 msgstr ""
 
-#: config/tc-ppc.c:1396
+#: config/tc-ppc.c:1406
 #, c-format
 msgid "-mpower7, -mpwr7        generate code for Power7 architecture\n"
 msgstr ""
 
-#: config/tc-ppc.c:1398
+#: config/tc-ppc.c:1408
 #, c-format
 msgid "-mpower8, -mpwr8        generate code for Power8 architecture\n"
 msgstr ""
 
-#: config/tc-ppc.c:1400
+#: config/tc-ppc.c:1410
 #, c-format
 msgid "-mpower9, -mpwr9        generate code for Power9 architecture\n"
 msgstr ""
 
-#: config/tc-ppc.c:1402
+#: config/tc-ppc.c:1412
 #, c-format
 msgid ""
 "-mcell                  generate code for Cell Broadband Engine "
 "architecture\n"
 msgstr ""
 
-#: config/tc-ppc.c:1404
+#: config/tc-ppc.c:1414
 #, c-format
 msgid ""
 "-mcom                   generate code for Power/PowerPC common instructions\n"
 msgstr ""
 
-#: config/tc-ppc.c:1406
+#: config/tc-ppc.c:1416
 #, c-format
 msgid ""
 "-many                   generate code for any architecture (PWR/PWRX/PPC)\n"
 msgstr ""
 
-#: config/tc-ppc.c:1408
+#: config/tc-ppc.c:1418
 #, c-format
 msgid "-maltivec               generate code for AltiVec\n"
 msgstr ""
 
-#: config/tc-ppc.c:1410
+#: config/tc-ppc.c:1420
 #, c-format
 msgid ""
 "-mvsx                   generate code for Vector-Scalar (VSX) instructions\n"
 msgstr ""
 
-#: config/tc-ppc.c:1412
+#: config/tc-ppc.c:1422
 #, c-format
 msgid "-me300                  generate code for PowerPC e300 family\n"
 msgstr ""
 
-#: config/tc-ppc.c:1414
+#: config/tc-ppc.c:1424
 #, c-format
 msgid "-me500, -me500x2        generate code for Motorola e500 core complex\n"
 msgstr ""
 
-#: config/tc-ppc.c:1416
+#: config/tc-ppc.c:1426
 #, c-format
 msgid ""
 "-me500mc,               generate code for Freescale e500mc core complex\n"
 msgstr ""
 
-#: config/tc-ppc.c:1418
+#: config/tc-ppc.c:1428
 #, c-format
 msgid ""
 "-me500mc64,             generate code for Freescale e500mc64 core complex\n"
 msgstr ""
 
-#: config/tc-ppc.c:1420
+#: config/tc-ppc.c:1430
 #, c-format
 msgid ""
 "-me5500,                generate code for Freescale e5500 core complex\n"
 msgstr ""
 
-#: config/tc-ppc.c:1422
+#: config/tc-ppc.c:1432
 #, c-format
 msgid ""
 "-me6500,                generate code for Freescale e6500 core complex\n"
 msgstr ""
 
-#: config/tc-ppc.c:1424
+#: config/tc-ppc.c:1434
 #, c-format
 msgid "-mspe                   generate code for Motorola SPE instructions\n"
 msgstr ""
 
-#: config/tc-ppc.c:1426
+#: config/tc-ppc.c:1436
 #, c-format
 msgid "-mspe2                  generate code for Freescale SPE2 instructions\n"
 msgstr ""
 
-#: config/tc-ppc.c:1428
+#: config/tc-ppc.c:1438
 #, c-format
 msgid "-mvle                   generate code for Freescale VLE instructions\n"
 msgstr ""
 
-#: config/tc-ppc.c:1430
+#: config/tc-ppc.c:1440
 #, c-format
 msgid ""
 "-mtitan                 generate code for AppliedMicro Titan core complex\n"
 msgstr ""
 
-#: config/tc-ppc.c:1432
+#: config/tc-ppc.c:1442
 #, c-format
 msgid "-mregnames              Allow symbolic names for registers\n"
 msgstr ""
 
-#: config/tc-ppc.c:1434
+#: config/tc-ppc.c:1444
 #, c-format
 msgid "-mno-regnames           Do not allow symbolic names for registers\n"
 msgstr ""
 
-#: config/tc-ppc.c:1437
+#: config/tc-ppc.c:1447
 #, c-format
 msgid "-mrelocatable           support for GCC's -mrelocatble option\n"
 msgstr ""
 
-#: config/tc-ppc.c:1439
+#: config/tc-ppc.c:1449
 #, c-format
 msgid "-mrelocatable-lib       support for GCC's -mrelocatble-lib option\n"
 msgstr ""
 
-#: config/tc-ppc.c:1441
+#: config/tc-ppc.c:1451
 #, c-format
 msgid "-memb                   set PPC_EMB bit in ELF flags\n"
 msgstr ""
 
-#: config/tc-ppc.c:1443
+#: config/tc-ppc.c:1453
 #, c-format
 msgid ""
 "-mlittle, -mlittle-endian, -le\n"
 "                        generate code for a little endian machine\n"
 msgstr ""
 
-#: config/tc-ppc.c:1446
+#: config/tc-ppc.c:1456
 #, c-format
 msgid ""
 "-mbig, -mbig-endian, -be\n"
 "                        generate code for a big endian machine\n"
 msgstr ""
 
-#: config/tc-ppc.c:1449
+#: config/tc-ppc.c:1459
 #, c-format
 msgid "-msolaris               generate code for Solaris\n"
 msgstr ""
 
-#: config/tc-ppc.c:1451
+#: config/tc-ppc.c:1461
 #, c-format
 msgid "-mno-solaris            do not generate code for Solaris\n"
 msgstr ""
 
-#: config/tc-ppc.c:1453
+#: config/tc-ppc.c:1463
 #, c-format
 msgid "-K PIC                  set EF_PPC_RELOCATABLE_LIB in ELF flags\n"
 msgstr ""
 
-#: config/tc-ppc.c:1455
+#: config/tc-ppc.c:1465
 #, c-format
 msgid "-V                      print assembler version number\n"
 msgstr ""
 
-#: config/tc-ppc.c:1457
+#: config/tc-ppc.c:1467
 #, c-format
 msgid "-Qy, -Qn                ignored\n"
 msgstr ""
 
-#: config/tc-ppc.c:1460
+#: config/tc-ppc.c:1470
 #, c-format
 msgid ""
 "-nops=count             when aligning, more than COUNT nops uses a branch\n"
 msgstr ""
 
-#: config/tc-ppc.c:1462
+#: config/tc-ppc.c:1472
 #, c-format
 msgid "-ppc476-workaround      warn if emitting data to code sections\n"
 msgstr ""
 
-#: config/tc-ppc.c:1492
+#: config/tc-ppc.c:1502
 #, c-format
 msgid "unknown default cpu = %s, os = %s"
 msgstr ""
 
-#: config/tc-ppc.c:1520
+#: config/tc-ppc.c:1530
 msgid "neither Power nor PowerPC opcodes were selected."
 msgstr ""
 
-#: config/tc-ppc.c:1580
+#: config/tc-ppc.c:1590
 #, c-format
 msgid "mask trims opcode bits for %s"
 msgstr ""
 
-#: config/tc-ppc.c:1590
+#: config/tc-ppc.c:1600
 #, c-format
 msgid "operand index error for %s"
 msgstr ""
 
-#: config/tc-ppc.c:1616
+#: config/tc-ppc.c:1626
 #, c-format
 msgid "operand %d overlap in %s"
 msgstr ""
 
-#: config/tc-ppc.c:1625
+#: config/tc-ppc.c:1635
 #, c-format
 msgid "non-optional operand %d follows optional operand in %s"
 msgstr ""
 
-#: config/tc-ppc.c:1675
+#: config/tc-ppc.c:1685
 #, c-format
 msgid "powerpc_operands[%d].bitm invalid"
 msgstr ""
 
-#: config/tc-ppc.c:1682
+#: config/tc-ppc.c:1692
 #, c-format
 msgid "powerpc_operands[%d] duplicates powerpc_operands[%d]"
 msgstr ""
 
-#: config/tc-ppc.c:1708 config/tc-ppc.c:1765 config/tc-ppc.c:1809
-#: config/tc-ppc.c:1853
+#: config/tc-ppc.c:1718 config/tc-ppc.c:1775 config/tc-ppc.c:1819
+#: config/tc-ppc.c:1863
 #, c-format
 msgid "major opcode is not sorted for %s"
 msgstr ""
 
-#: config/tc-ppc.c:1714
+#: config/tc-ppc.c:1724
 #, c-format
 msgid "%s is enabled by vle flag"
 msgstr ""
 
-#: config/tc-ppc.c:1721
+#: config/tc-ppc.c:1731
 #, c-format
 msgid "%s not disabled by vle flag"
 msgstr ""
 
-#: config/tc-ppc.c:1735 config/tc-ppc.c:1779 config/tc-ppc.c:1824
-#: config/tc-ppc.c:1868
+#: config/tc-ppc.c:1745 config/tc-ppc.c:1789 config/tc-ppc.c:1834
+#: config/tc-ppc.c:1878
 #, c-format
 msgid "duplicate instruction %s"
 msgstr ""
 
-#: config/tc-ppc.c:1892
+#: config/tc-ppc.c:1902
 #, c-format
 msgid "duplicate macro %s"
 msgstr ""
 
-#: config/tc-ppc.c:2268
+#: config/tc-ppc.c:2278
 #, c-format
 msgid "symbol+offset@%s means symbol@%s+offset"
 msgstr ""
 
-#: config/tc-ppc.c:2288
+#: config/tc-ppc.c:2298
 #, c-format
 msgid "symbol+offset@%s not supported"
 msgstr ""
 
-#: config/tc-ppc.c:2365 config/tc-ppc.c:4361 config/tc-ppc.c:7888
+#: config/tc-ppc.c:2375 config/tc-ppc.c:4374 config/tc-ppc.c:7901
 msgid "data in executable section"
 msgstr ""
 
-#: config/tc-ppc.c:2406 config/tc-ppc.c:5998
+#: config/tc-ppc.c:2416 config/tc-ppc.c:6011
 msgid "expected comma after symbol-name: rest of line ignored."
 msgstr ""
 
-#: config/tc-ppc.c:2439 config/tc-ppc.c:6034
+#: config/tc-ppc.c:2449 config/tc-ppc.c:6047
 #, c-format
 msgid "ignoring attempt to re-define symbol `%s'."
 msgstr ""
 
-#: config/tc-ppc.c:2447
+#: config/tc-ppc.c:2457
 #, c-format
 msgid "length of .lcomm \"%s\" is already %ld. Not changed to %ld."
 msgstr ""
 
-#: config/tc-ppc.c:2465
+#: config/tc-ppc.c:2475
 msgid "common alignment not a power of 2"
 msgstr ""
 
-#: config/tc-ppc.c:2507
+#: config/tc-ppc.c:2517
 #, c-format
 msgid "expected comma after name `%s' in .localentry directive"
 msgstr ""
 
-#: config/tc-ppc.c:2517
+#: config/tc-ppc.c:2527
 msgid "missing expression in .localentry directive"
 msgstr ""
 
-#: config/tc-ppc.c:2538
+#: config/tc-ppc.c:2548
 #, c-format
 msgid ".localentry expression for `%s' is not a valid power of 2"
 msgstr ""
 
-#: config/tc-ppc.c:2555
+#: config/tc-ppc.c:2565
 #, c-format
 msgid ".localentry expression for `%s' does not evaluate to a constant"
 msgstr ""
 
-#: config/tc-ppc.c:2570
+#: config/tc-ppc.c:2580
 msgid "missing expression in .abiversion directive"
 msgstr ""
 
-#: config/tc-ppc.c:2579
+#: config/tc-ppc.c:2589
 msgid ".abiversion expression does not evaluate to a constant"
 msgstr ""
 
-#: config/tc-ppc.c:2601
+#: config/tc-ppc.c:2611
 msgid "unknown .gnu_attribute value"
 msgstr ""
 
-#: config/tc-ppc.c:2659
+#: config/tc-ppc.c:2669
 msgid "relocation cannot be done when using -mrelocatable"
 msgstr ""
 
-#: config/tc-ppc.c:2705
+#: config/tc-ppc.c:2715
 msgid "TOC section size exceeds 64k"
 msgstr ""
 
-#: config/tc-ppc.c:2800
+#: config/tc-ppc.c:2810
 #, c-format
 msgid "syntax error: invalid toc specifier `%s'"
 msgstr ""
 
-#: config/tc-ppc.c:2814
+#: config/tc-ppc.c:2824
 #, c-format
 msgid "syntax error: expected `]', found  `%c'"
 msgstr ""
 
-#: config/tc-ppc.c:3234
+#: config/tc-ppc.c:3244
 #, c-format
 msgid "%s howto doesn't match size/pcrel in gas"
 msgstr ""
 
-#: config/tc-ppc.c:3314
+#: config/tc-ppc.c:3327
 #, c-format
 msgid "unrecognized opcode: `%s'"
 msgstr ""
 
-#: config/tc-ppc.c:3490
+#: config/tc-ppc.c:3503
 msgid "[tocv] symbol is not a toc symbol"
 msgstr ""
 
-#: config/tc-ppc.c:3501
+#: config/tc-ppc.c:3514
 msgid "unimplemented toc32 expression modifier"
 msgstr ""
 
-#: config/tc-ppc.c:3506
+#: config/tc-ppc.c:3519
 msgid "unimplemented toc64 expression modifier"
 msgstr ""
 
-#: config/tc-ppc.c:3510
+#: config/tc-ppc.c:3523
 #, c-format
 msgid "Unexpected return value [%d] from parse_toc_entry!\n"
 msgstr ""
 
-#: config/tc-ppc.c:3759
+#: config/tc-ppc.c:3772
 #, c-format
 msgid "@tls may not be used with \"%s\" operands"
 msgstr ""
 
-#: config/tc-ppc.c:3762
+#: config/tc-ppc.c:3775
 msgid "@tls may only be used in last operand"
 msgstr ""
 
-#: config/tc-ppc.c:3800 config/tc-ppc.c:3810 config/tc-ppc.c:3820
-#: config/tc-ppc.c:3835
+#: config/tc-ppc.c:3813 config/tc-ppc.c:3823 config/tc-ppc.c:3833
+#: config/tc-ppc.c:3848
 #, c-format
 msgid "%s unsupported on this instruction"
 msgstr ""
 
-#: config/tc-ppc.c:3879
+#: config/tc-ppc.c:3892
 #, c-format
 msgid "assuming %s on symbol"
 msgstr ""
 
-#: config/tc-ppc.c:4002
+#: config/tc-ppc.c:4015
 msgid "unsupported relocation for DS offset field"
 msgstr ""
 
-#: config/tc-ppc.c:4055
+#: config/tc-ppc.c:4068
 #, c-format
 msgid "syntax error; found `%c', expected `%c'"
 msgstr ""
 
-#: config/tc-ppc.c:4060
+#: config/tc-ppc.c:4073
 #, c-format
 msgid "syntax error; end of line, expected `%c'"
 msgstr ""
 
-#: config/tc-ppc.c:4125 config/tc-ppc.c:7097
+#: config/tc-ppc.c:4138 config/tc-ppc.c:7110
 #, c-format
 msgid "instruction address is not a multiple of %d"
 msgstr ""
 
-#: config/tc-ppc.c:4245
+#: config/tc-ppc.c:4258
 msgid "wrong number of operands"
 msgstr ""
 
-#: config/tc-ppc.c:4318
+#: config/tc-ppc.c:4331
 msgid "bad .section directive: want a,e,v,w,x,M,S,G,T in string"
 msgstr ""
 
-#: config/tc-ppc.c:4398
+#: config/tc-ppc.c:4411
 msgid "missing size"
 msgstr ""
 
-#: config/tc-ppc.c:4407
+#: config/tc-ppc.c:4420
 msgid "negative size"
 msgstr ""
 
-#: config/tc-ppc.c:4439
+#: config/tc-ppc.c:4452
 msgid "missing real symbol name"
 msgstr ""
 
-#: config/tc-ppc.c:4478
+#: config/tc-ppc.c:4491
 msgid "attempt to redefine symbol"
 msgstr ""
 
-#: config/tc-ppc.c:4741
+#: config/tc-ppc.c:4754
 #, c-format
 msgid "no known dwarf XCOFF section for flag 0x%08x\n"
 msgstr ""
 
-#: config/tc-ppc.c:4754
+#: config/tc-ppc.c:4767
 #, c-format
 msgid "label %s was not defined in this dwarf section"
 msgstr ""
 
-#: config/tc-ppc.c:4868
+#: config/tc-ppc.c:4881
 msgid "the XCOFF file format does not support arbitrary sections"
 msgstr ""
 
-#: config/tc-ppc.c:4939
+#: config/tc-ppc.c:4952
 msgid ".ref outside .csect"
 msgstr ""
 
-#: config/tc-ppc.c:4960 config/tc-ppc.c:5160
+#: config/tc-ppc.c:4973 config/tc-ppc.c:5173
 msgid "missing symbol name"
 msgstr ""
 
-#: config/tc-ppc.c:4990
+#: config/tc-ppc.c:5003
 msgid "missing rename string"
 msgstr ""
 
-#: config/tc-ppc.c:5020 config/tc-ppc.c:5559 read.c:3519
+#: config/tc-ppc.c:5033 config/tc-ppc.c:5572 read.c:3520
 msgid "missing value"
 msgstr ""
 
-#: config/tc-ppc.c:5038
+#: config/tc-ppc.c:5051
 msgid "illegal .stabx expression; zero assumed"
 msgstr ""
 
-#: config/tc-ppc.c:5070
+#: config/tc-ppc.c:5083
 msgid "missing class"
 msgstr ""
 
-#: config/tc-ppc.c:5079
+#: config/tc-ppc.c:5092
 msgid "missing type"
 msgstr ""
 
-#: config/tc-ppc.c:5106
+#: config/tc-ppc.c:5119
 msgid ".stabx of storage class stsym must be within .bs/.es"
 msgstr ""
 
-#: config/tc-ppc.c:5347
+#: config/tc-ppc.c:5360
 msgid "nested .bs blocks"
 msgstr ""
 
-#: config/tc-ppc.c:5378
+#: config/tc-ppc.c:5391
 msgid ".es without preceding .bs"
 msgstr ""
 
-#: config/tc-ppc.c:5551
+#: config/tc-ppc.c:5564
 msgid "non-constant byte count"
 msgstr ""
 
-#: config/tc-ppc.c:5626
+#: config/tc-ppc.c:5639
 msgid ".tc not in .toc section"
 msgstr ""
 
-#: config/tc-ppc.c:5644
+#: config/tc-ppc.c:5657
 msgid ".tc with no label"
 msgstr ""
 
-#: config/tc-ppc.c:5728 config/tc-s390.c:1968
+#: config/tc-ppc.c:5741 config/tc-s390.c:1968
 msgid ".machine stack overflow"
 msgstr ""
 
-#: config/tc-ppc.c:5735 config/tc-s390.c:1979
+#: config/tc-ppc.c:5748 config/tc-s390.c:1979
 msgid ".machine stack underflow"
 msgstr ""
 
-#: config/tc-ppc.c:5742 config/tc-s390.c:1991
+#: config/tc-ppc.c:5755 config/tc-s390.c:1991
 #, c-format
 msgid "invalid machine `%s'"
 msgstr ""
 
-#: config/tc-ppc.c:5774
+#: config/tc-ppc.c:5787
 msgid "no previous section to return to, ignored."
 msgstr ""
 
-#: config/tc-ppc.c:6043
+#: config/tc-ppc.c:6056
 #, c-format
 msgid "length of .comm \"%s\" is already %ld. Not changed to %ld."
 msgstr ""
 
 #. Section Contents
 #. unknown
-#: config/tc-ppc.c:6171
+#: config/tc-ppc.c:6184
 msgid "unsupported section attribute -- 'a'"
 msgstr ""
 
-#: config/tc-ppc.c:6353
+#: config/tc-ppc.c:6366
 msgid "bad symbol suffix"
 msgstr ""
 
-#: config/tc-ppc.c:6446
+#: config/tc-ppc.c:6459
 msgid "unrecognized symbol suffix"
 msgstr ""
 
-#: config/tc-ppc.c:6509
+#: config/tc-ppc.c:6522
 msgid "two .function pseudo-ops with no intervening .ef"
 msgstr ""
 
-#: config/tc-ppc.c:6522
+#: config/tc-ppc.c:6535
 msgid ".ef with no preceding .function"
 msgstr ""
 
-#: config/tc-ppc.c:6649
+#: config/tc-ppc.c:6662
 #, c-format
 msgid "warning: symbol %s has no csect"
 msgstr ""
 
-#: config/tc-ppc.c:6911
+#: config/tc-ppc.c:6924
 msgid "symbol in .toc does not match any .tc"
 msgstr ""
 
-#: config/tc-ppc.c:7626
+#: config/tc-ppc.c:7639
 #, c-format
 msgid "%s unsupported as instruction fixup"
 msgstr ""
 
-#: config/tc-ppc.c:7725
+#: config/tc-ppc.c:7738
 #, c-format
 msgid "unsupported relocation against %s"
 msgstr ""
 
-#: config/tc-ppc.c:7871
+#: config/tc-ppc.c:7884
 #, c-format
 msgid "Gas failure, reloc value %d\n"
 msgstr ""
@@ -15274,212 +15475,258 @@ msgstr ""
 msgid "Label \"%s\" matches a CPU register name"
 msgstr ""
 
-#: config/tc-riscv.c:412 config/tc-riscv.c:471
+#: config/tc-riscv.c:141
+#, c-format
+msgid ""
+"Unknown default privilege spec `%s' set by -mpriv-spec or --with-priv-spec"
+msgstr ""
+
+#. Still can not find the priv spec class.
+#: config/tc-riscv.c:183
+#, c-format
+msgid "Unknown default privilege spec `%d.%d.%d' set by  privilege attributes"
+msgstr ""
+
+#: config/tc-riscv.c:591 config/tc-riscv.c:652
 #, c-format
 msgid "internal error: can't hash `%s': %s"
 msgstr ""
 
-#: config/tc-riscv.c:568
+#: config/tc-riscv.c:741
+#, c-format
+msgid "internal: bad RISC-V CSR class (0x%x)"
+msgstr ""
+
+#: config/tc-riscv.c:745
+#, c-format
+msgid "Invalid CSR `%s' for the current ISA"
+msgstr ""
+
+#: config/tc-riscv.c:777
+#, c-format
+msgid "Invalid CSR `%s' for the privilege spec `%s'"
+msgstr ""
+
+#: config/tc-riscv.c:897
 #, c-format
 msgid "internal: bad RISC-V opcode (mask error): %s %s"
 msgstr ""
 
-#: config/tc-riscv.c:617
+#: config/tc-riscv.c:946
 #, c-format
 msgid "internal: bad RISC-V opcode (unknown operand type `CF%c'): %s %s"
 msgstr ""
 
-#: config/tc-riscv.c:624
+#: config/tc-riscv.c:953
 #, c-format
 msgid "internal: bad RISC-V opcode (unknown operand type `C%c'): %s %s"
 msgstr ""
 
-#: config/tc-riscv.c:668 config/tc-riscv.c:680
+#: config/tc-riscv.c:997 config/tc-riscv.c:1009
 #, c-format
 msgid "internal: bad RISC-V opcode (unknown operand type `F%c'): %s %s"
 msgstr ""
 
-#: config/tc-riscv.c:687
+#: config/tc-riscv.c:1016
 #, c-format
 msgid "internal: bad RISC-V opcode (unknown operand type `%c'): %s %s"
 msgstr ""
 
-#: config/tc-riscv.c:695
+#: config/tc-riscv.c:1024
 #, c-format
 msgid "internal: bad RISC-V opcode (bits 0x%lx undefined): %s %s"
 msgstr ""
 
-#: config/tc-riscv.c:841
+#: config/tc-riscv.c:1173
 #, c-format
 msgid "Unsupported RISC-V relocation number %d"
 msgstr ""
 
-#: config/tc-riscv.c:928
+#: config/tc-riscv.c:1260
 msgid "internal error: invalid macro"
 msgstr ""
 
-#: config/tc-riscv.c:953
+#: config/tc-riscv.c:1285
 msgid "internal error: vasprintf failed"
 msgstr ""
 
-#: config/tc-riscv.c:982 config/tc-riscv.c:1053
+#: config/tc-riscv.c:1314 config/tc-riscv.c:1385
 msgid "unsupported large constant"
 msgstr ""
 
-#: config/tc-riscv.c:984
+#: config/tc-riscv.c:1316
 #, c-format
 msgid "unknown CSR `%s'"
 msgstr ""
 
-#: config/tc-riscv.c:987
+#: config/tc-riscv.c:1319
 #, c-format
 msgid "Instruction %s requires absolute expression"
 msgstr ""
 
-#: config/tc-riscv.c:1213
+#: config/tc-riscv.c:1545
 #, c-format
 msgid "Macro %s not implemented"
 msgstr ""
 
-#: config/tc-riscv.c:1700
+#: config/tc-riscv.c:1860
+#, c-format
+msgid "Read-only CSR is written `%s'"
+msgstr ""
+
+#: config/tc-riscv.c:2100
 msgid "bad value for funct6 field, value must be 0...64"
 msgstr ""
 
-#: config/tc-riscv.c:1715
+#: config/tc-riscv.c:2115
 msgid "bad value for funct4 field, value must be 0...15"
 msgstr ""
 
-#: config/tc-riscv.c:1730 config/tc-riscv.c:2087
+#: config/tc-riscv.c:2130 config/tc-riscv.c:2488
 msgid "bad value for funct3 field, value must be 0...7"
 msgstr ""
 
-#: config/tc-riscv.c:1744 config/tc-riscv.c:2102
+#: config/tc-riscv.c:2144 config/tc-riscv.c:2503
 msgid "bad value for funct2 field, value must be 0...3"
 msgstr ""
 
-#: config/tc-riscv.c:1753
+#: config/tc-riscv.c:2153
 #, c-format
 msgid "bad compressed FUNCT field specifier 'CF%c'\n"
 msgstr ""
 
-#: config/tc-riscv.c:1760
+#: config/tc-riscv.c:2160
 #, c-format
 msgid "bad RVC field specifier 'C%c'\n"
 msgstr ""
 
-#: config/tc-riscv.c:1783 config/tc-riscv.c:1794
+#: config/tc-riscv.c:2183 config/tc-riscv.c:2194
 #, c-format
 msgid "Improper shift amount (%lu)"
 msgstr ""
 
-#: config/tc-riscv.c:1805
+#: config/tc-riscv.c:2205
 #, c-format
 msgid "Improper CSRxI immediate (%lu)"
 msgstr ""
 
-#: config/tc-riscv.c:1820
+#: config/tc-riscv.c:2221
 #, c-format
 msgid "Improper CSR address (%lu)"
 msgstr ""
 
-#: config/tc-riscv.c:1997
+#: config/tc-riscv.c:2398
 msgid "lui expression not in range 0..1048575"
 msgstr ""
 
-#: config/tc-riscv.c:2033
+#: config/tc-riscv.c:2434
 msgid ""
 "bad value for opcode field, value must be 0...127 and lower 2 bits must be "
 "0x3"
 msgstr ""
 
-#: config/tc-riscv.c:2049
+#: config/tc-riscv.c:2450
 msgid "bad value for opcode field, value must be 0...2"
 msgstr ""
 
-#: config/tc-riscv.c:2059
+#: config/tc-riscv.c:2460
 #, c-format
 msgid "bad Opcode field specifier 'O%c'\n"
 msgstr ""
 
-#: config/tc-riscv.c:2072
+#: config/tc-riscv.c:2473
 msgid "bad value for funct7 field, value must be 0...127"
 msgstr ""
 
-#: config/tc-riscv.c:2113
+#: config/tc-riscv.c:2514
 #, c-format
 msgid "bad FUNCT field specifier 'F%c'\n"
 msgstr ""
 
-#: config/tc-riscv.c:2127
+#: config/tc-riscv.c:2528
 #, c-format
 msgid "internal error: bad argument type %c"
 msgstr ""
 
-#: config/tc-riscv.c:2132
+#: config/tc-riscv.c:2533
 msgid "illegal operands"
 msgstr ""
 
-#: config/tc-riscv.c:2508
+#: config/tc-riscv.c:2961
 #, c-format
 msgid "internal error: bad CFA value #%d"
 msgstr ""
 
-#: config/tc-riscv.c:2589
+#: config/tc-riscv.c:3042
 #, c-format
 msgid "internal error: bad relocation #%d"
 msgstr ""
 
-#: config/tc-riscv.c:2594
+#: config/tc-riscv.c:3047
 msgid "unsupported symbol subtraction"
 msgstr ""
 
-#: config/tc-riscv.c:2689
+#: config/tc-riscv.c:3146
 msgid ".option pop with no .option push"
 msgstr ""
 
-#: config/tc-riscv.c:2699
+#: config/tc-riscv.c:3156
 #, c-format
 msgid "Unrecognized .option directive: %s\n"
 msgstr ""
 
-#: config/tc-riscv.c:2719
+#: config/tc-riscv.c:3176
 #, c-format
 msgid "Unsupported use of %s"
 msgstr ""
 
-#: config/tc-riscv.c:2874
+#: config/tc-riscv.c:3331
 #, c-format
 msgid "cannot represent %s relocation in object file"
 msgstr ""
 
-#: config/tc-riscv.c:3015
+#: config/tc-riscv.c:3472
 #, c-format
 msgid ""
 "RISC-V options:\n"
-"  -fpic          generate position-independent code\n"
-"  -fno-pic       don't generate position-independent code (default)\n"
-"  -march=ISA     set the RISC-V architecture\n"
-"  -mabi=ABI      set the RISC-V ABI\n"
-"  -mrelax        enable relax (default)\n"
-"  -mno-relax     disable relax\n"
-"  -march-attr    generate RISC-V arch attribute\n"
-"  -mno-arch-attr don't generate RISC-V arch attribute\n"
+"  -fpic                       generate position-independent code\n"
+"  -fno-pic                    don't generate position-independent code "
+"(default)\n"
+"  -march=ISA                  set the RISC-V architecture\n"
+"  -misa-spec=ISAspec          set the RISC-V ISA spec (2.2, 20190608, "
+"20191213)\n"
+"  -mpriv-spec=PRIVspec        set the RISC-V privilege spec (1.9, 1.9.1, "
+"1.10, 1.11)\n"
+"  -mabi=ABI                   set the RISC-V ABI\n"
+"  -mrelax                     enable relax (default)\n"
+"  -mno-relax                  disable relax\n"
+"  -march-attr                 generate RISC-V arch attribute\n"
+"  -mno-arch-attr              don't generate RISC-V arch attribute\n"
 msgstr ""
 
-#: config/tc-riscv.c:3050
+#: config/tc-riscv.c:3509
 #, c-format
 msgid "unknown register `%s'"
 msgstr ""
 
-#: config/tc-riscv.c:3071
+#: config/tc-riscv.c:3530
 #, c-format
 msgid "non-constant .%cleb128 is not supported"
 msgstr ""
 
-#: config/tc-riscv.c:3196
+#: config/tc-riscv.c:3610
+#, c-format
+msgid "internal: bad RISC-V priv spec string (%s)"
+msgstr ""
+
+#: config/tc-riscv.c:3696
 msgid ".attribute arch must set before any instructions"
 msgstr ""
 
+#: config/tc-riscv.c:3713
+msgid ".attribute priv spec must set before any instructions"
+msgstr ""
+
 #: config/tc-rl78.c:213
 msgid "16-bit relocation used in 8-bit operand"
 msgstr ""
@@ -15488,12 +15735,12 @@ msgstr ""
 msgid "8-bit relocation used in 16-bit operand"
 msgstr ""
 
-#: config/tc-rl78.c:243 config/tc-rx.c:889
+#: config/tc-rl78.c:243 config/tc-rx.c:888
 #, c-format
 msgid "Value %d doesn't fit in unsigned %d-bit field"
 msgstr ""
 
-#: config/tc-rl78.c:249 config/tc-rx.c:895
+#: config/tc-rl78.c:249 config/tc-rx.c:894
 #, c-format
 msgid "Value %d doesn't fit in signed %d-bit field"
 msgstr ""
@@ -15543,7 +15790,7 @@ msgstr ""
 msgid "%%%s() must be outermost term in expression"
 msgstr ""
 
-#: config/tc-rl78.c:678 config/tc-rx.c:2256
+#: config/tc-rl78.c:678 config/tc-rx.c:2255
 #, c-format
 msgid "unsupported constant size %d\n"
 msgstr ""
@@ -15558,11 +15805,11 @@ msgstr ""
 msgid "%%hi8 only applies to .byte"
 msgstr ""
 
-#: config/tc-rl78.c:716 config/tc-rx.c:2263
+#: config/tc-rl78.c:716 config/tc-rx.c:2262
 msgid "difference of two symbols only supported with .long, .short, or .byte"
 msgstr ""
 
-#: config/tc-rl78.c:1237 config/tc-rx.c:2190
+#: config/tc-rl78.c:1237 config/tc-rx.c:2189
 #, c-format
 msgid "bad frag at %p : fix %ld addr %ld %ld \n"
 msgstr ""
@@ -15577,140 +15824,140 @@ msgstr ""
 msgid "value of %ld too large for 16-bit branch"
 msgstr ""
 
-#: config/tc-rl78.c:1513 config/tc-rx.c:2455
+#: config/tc-rl78.c:1513 config/tc-rx.c:2454
 #, c-format
 msgid "Unknown reloc in md_apply_fix: %s"
 msgstr ""
 
-#: config/tc-rx.c:195
+#: config/tc-rx.c:194
 #, c-format
 msgid "unrecognised RX CPU type %s"
 msgstr ""
 
-#: config/tc-rx.c:210
+#: config/tc-rx.c:209
 #, c-format
 msgid " RX specific command line options:\n"
 msgstr ""
 
-#: config/tc-rx.c:211
+#: config/tc-rx.c:210
 #, c-format
 msgid "  --mbig-endian-data\n"
 msgstr ""
 
-#: config/tc-rx.c:212
+#: config/tc-rx.c:211
 #, c-format
 msgid "  --mlittle-endian-data [default]\n"
 msgstr ""
 
-#: config/tc-rx.c:213
+#: config/tc-rx.c:212
 #, c-format
 msgid "  --m32bit-doubles [default]\n"
 msgstr ""
 
-#: config/tc-rx.c:214
+#: config/tc-rx.c:213
 #, c-format
 msgid "  --m64bit-doubles\n"
 msgstr ""
 
-#: config/tc-rx.c:215
+#: config/tc-rx.c:214
 #, c-format
 msgid "  --muse-conventional-section-names\n"
 msgstr ""
 
-#: config/tc-rx.c:216
+#: config/tc-rx.c:215
 #, c-format
 msgid "  --muse-renesas-section-names [default]\n"
 msgstr ""
 
-#: config/tc-rx.c:217
+#: config/tc-rx.c:216
 #, c-format
 msgid "  --msmall-data-limit\n"
 msgstr ""
 
-#: config/tc-rx.c:218
+#: config/tc-rx.c:217
 #, c-format
 msgid "  --mrelax\n"
 msgstr ""
 
-#: config/tc-rx.c:219
+#: config/tc-rx.c:218
 #, c-format
 msgid "  --mpid\n"
 msgstr ""
 
-#: config/tc-rx.c:220
+#: config/tc-rx.c:219
 #, c-format
 msgid "  --mint-register=<value>\n"
 msgstr ""
 
-#: config/tc-rx.c:221
+#: config/tc-rx.c:220
 #, c-format
 msgid "  --mcpu=<rx100|rx200|rx600|rx610|rxv2|rxv3|rxv3-dfpu>\n"
 msgstr ""
 
-#: config/tc-rx.c:222
+#: config/tc-rx.c:221
 #, c-format
 msgid "  --mno-allow-string-insns"
 msgstr ""
 
-#: config/tc-rx.c:302
+#: config/tc-rx.c:301
 msgid "no filename following .INCLUDE pseudo-op"
 msgstr ""
 
-#: config/tc-rx.c:405
+#: config/tc-rx.c:404
 #, c-format
 msgid "unable to locate include file: %s"
 msgstr ""
 
-#: config/tc-rx.c:456
+#: config/tc-rx.c:455
 #, c-format
 msgid "unrecognised alignment value in .SECTION directive: %s"
 msgstr ""
 
-#: config/tc-rx.c:473
+#: config/tc-rx.c:472
 #, c-format
 msgid "unknown parameter following .SECTION directive: %s"
 msgstr ""
 
-#: config/tc-rx.c:559
+#: config/tc-rx.c:558
 msgid "expecting either ON or OFF after .list"
 msgstr ""
 
-#: config/tc-rx.c:595
+#: config/tc-rx.c:594
 #, c-format
 msgid "The \".%s\" pseudo-op is not implemented\n"
 msgstr ""
 
-#: config/tc-rx.c:968 config/tc-rx.c:970
+#: config/tc-rx.c:967 config/tc-rx.c:969
 #, c-format
 msgid "Value %d and %d out of range"
 msgstr ""
 
-#: config/tc-rx.c:1125
+#: config/tc-rx.c:1124
 msgid "The .DEFINE pseudo-op is not implemented"
 msgstr ""
 
-#: config/tc-rx.c:1127
+#: config/tc-rx.c:1126
 msgid "The .MACRO pseudo-op is not implemented"
 msgstr ""
 
-#: config/tc-rx.c:1129
+#: config/tc-rx.c:1128
 msgid "The .BTEQU pseudo-op is not implemented."
 msgstr ""
 
-#: config/tc-rx.c:2121
+#: config/tc-rx.c:2120
 msgid "invalid immediate size"
 msgstr ""
 
-#: config/tc-rx.c:2140
+#: config/tc-rx.c:2139
 msgid "invalid immediate field position"
 msgstr ""
 
-#: config/tc-rx.c:2307
+#: config/tc-rx.c:2306
 #, c-format
 msgid "jump not 3..10 bytes away (is %d)"
 msgstr ""
 
-#: config/tc-rx.c:2698
+#: config/tc-rx.c:2697
 msgid ""
 "Use of an RX string instruction detected in a file being assembled without "
 "string instruction support"
@@ -16231,148 +16478,148 @@ msgstr ""
 msgid "score3d instruction."
 msgstr ""
 
-#: config/tc-score.c:6026
+#: config/tc-score.c:6014
 msgid "Unsupported use of .gpword"
 msgstr ""
 
-#: config/tc-score.c:6122
+#: config/tc-score.c:6110
 #, c-format
 msgid "BSS length (%d) < 0 ignored"
 msgstr ""
 
-#: config/tc-score.c:6137 read.c:2468
+#: config/tc-score.c:6124 read.c:2469
 #, c-format
 msgid "error setting flags for \".sbss\": %s"
 msgstr ""
 
-#: config/tc-score.c:6152 config/tc-sparc.c:4170
+#: config/tc-score.c:6138 config/tc-sparc.c:4170
 msgid "missing alignment"
 msgstr ""
 
-#: config/tc-score.c:6189
+#: config/tc-score.c:6175
 #, c-format
 msgid "alignment too large; %d assumed"
 msgstr ""
 
-#: config/tc-score.c:6194 read.c:2529
+#: config/tc-score.c:6180 read.c:2530
 msgid "alignment negative; 0 assumed"
 msgstr ""
 
 #. Error routine.
-#: config/tc-score.c:6603 config/tc-score.c:6627
+#: config/tc-score.c:6585 config/tc-score.c:6609
 msgid "size is not 4 or 6"
 msgstr ""
 
-#: config/tc-score.c:6686
+#: config/tc-score.c:6668
 msgid "bad call to MD_ATOF()"
 msgstr ""
 
-#: config/tc-score.c:7185 config/tc-score.c:7251
+#: config/tc-score.c:7167 config/tc-score.c:7233
 #, c-format
 msgid " branch relocation truncate (0x%x) [-2^9 ~ 2^9-1]"
 msgstr ""
 
-#: config/tc-score.c:7200 config/tc-score.c:7229 config/tc-score.c:7281
+#: config/tc-score.c:7182 config/tc-score.c:7211 config/tc-score.c:7263
 #, c-format
 msgid " branch relocation truncate (0x%x) [-2^19 ~ 2^19-1]"
 msgstr ""
 
-#: config/tc-score.c:7306
+#: config/tc-score.c:7288
 #, c-format
 msgid " branch relocation truncate (0x%x)  [-2^9 ~ 2^9-1]"
 msgstr ""
 
-#: config/tc-score.c:7476
+#: config/tc-score.c:7458
 #, c-format
 msgid "cannot represent %s relocation in this object file format1"
 msgstr ""
 
-#: config/tc-score.c:7767
+#: config/tc-score.c:7749
 #, c-format
 msgid "Sunplus-v2-0-0-20060510\n"
 msgstr ""
 
-#: config/tc-score.c:7787
+#: config/tc-score.c:7769
 #, c-format
 msgid " Score-specific assembler options:\n"
 msgstr ""
 
-#: config/tc-score.c:7789
+#: config/tc-score.c:7771
 #, c-format
 msgid "        -EB\t\tassemble code for a big-endian cpu\n"
 msgstr ""
 
-#: config/tc-score.c:7794
+#: config/tc-score.c:7776
 #, c-format
 msgid "        -EL\t\tassemble code for a little-endian cpu\n"
 msgstr ""
 
-#: config/tc-score.c:7798
+#: config/tc-score.c:7780
 #, c-format
 msgid "        -FIXDD\t\tfix data dependencies\n"
 msgstr ""
 
-#: config/tc-score.c:7800
+#: config/tc-score.c:7782
 #, c-format
 msgid ""
 "        -NWARN\t\tdo not print warning message when fixing data "
 "dependencies\n"
 msgstr ""
 
-#: config/tc-score.c:7802
+#: config/tc-score.c:7784
 #, c-format
 msgid "        -SCORE5\t\tassemble code for target SCORE5\n"
 msgstr ""
 
-#: config/tc-score.c:7804
+#: config/tc-score.c:7786
 #, c-format
 msgid "        -SCORE5U\tassemble code for target SCORE5U\n"
 msgstr ""
 
-#: config/tc-score.c:7806
+#: config/tc-score.c:7788
 #, c-format
 msgid "        -SCORE7\t\tassemble code for target SCORE7 [default]\n"
 msgstr ""
 
-#: config/tc-score.c:7808
+#: config/tc-score.c:7790
 #, c-format
 msgid "        -SCORE3\t\tassemble code for target SCORE3\n"
 msgstr ""
 
-#: config/tc-score.c:7810
+#: config/tc-score.c:7792
 #, c-format
 msgid "        -march=score7\tassemble code for target SCORE7 [default]\n"
 msgstr ""
 
-#: config/tc-score.c:7812
+#: config/tc-score.c:7794
 #, c-format
 msgid "        -march=score3\tassemble code for target SCORE3\n"
 msgstr ""
 
-#: config/tc-score.c:7814
+#: config/tc-score.c:7796
 #, c-format
 msgid ""
 "        -USE_R1\t\tassemble code for no warning message when using temp "
 "register r1\n"
 msgstr ""
 
-#: config/tc-score.c:7816
+#: config/tc-score.c:7798
 #, c-format
 msgid "        -KPIC\t\tgenerate PIC\n"
 msgstr ""
 
-#: config/tc-score.c:7818
+#: config/tc-score.c:7800
 #, c-format
 msgid "        -O0\t\tdo not perform any optimizations\n"
 msgstr ""
 
-#: config/tc-score.c:7820
+#: config/tc-score.c:7802
 #, c-format
 msgid ""
 "        -G gpnum\tassemble code for setting gpsize, default is 8 bytes\n"
 msgstr ""
 
-#: config/tc-score.c:7822
+#: config/tc-score.c:7804
 #, c-format
 msgid "        -V \t\tSunplus release version\n"
 msgstr ""
@@ -16431,122 +16678,122 @@ msgstr ""
 msgid "Invalid register: 'r%d'"
 msgstr ""
 
-#: config/tc-sh.c:2120
+#: config/tc-sh.c:2121
 #, c-format
 msgid "failed for %d\n"
 msgstr ""
 
-#: config/tc-sh.c:2126
+#: config/tc-sh.c:2127
 msgid "misplaced PIC operand"
 msgstr ""
 
-#: config/tc-sh.c:2237 config/tc-sh.c:2610
+#: config/tc-sh.c:2238 config/tc-sh.c:2611
 msgid "invalid operands for opcode"
 msgstr ""
 
-#: config/tc-sh.c:2242
+#: config/tc-sh.c:2243
 msgid "insn can't be combined with parallel processing insn"
 msgstr ""
 
-#: config/tc-sh.c:2249 config/tc-sh.c:2260 config/tc-sh.c:2292
+#: config/tc-sh.c:2250 config/tc-sh.c:2261 config/tc-sh.c:2293
 msgid "multiple movx specifications"
 msgstr ""
 
-#: config/tc-sh.c:2254 config/tc-sh.c:2276 config/tc-sh.c:2315
+#: config/tc-sh.c:2255 config/tc-sh.c:2277 config/tc-sh.c:2316
 msgid "multiple movy specifications"
 msgstr ""
 
-#: config/tc-sh.c:2263 config/tc-sh.c:2296
+#: config/tc-sh.c:2264 config/tc-sh.c:2297
 msgid "invalid movx address register"
 msgstr ""
 
-#: config/tc-sh.c:2265
+#: config/tc-sh.c:2266
 msgid "insn cannot be combined with non-nopy"
 msgstr ""
 
-#: config/tc-sh.c:2279 config/tc-sh.c:2335
+#: config/tc-sh.c:2280 config/tc-sh.c:2336
 msgid "invalid movy address register"
 msgstr ""
 
-#: config/tc-sh.c:2281
+#: config/tc-sh.c:2282
 msgid "insn cannot be combined with non-nopx"
 msgstr ""
 
-#: config/tc-sh.c:2294
+#: config/tc-sh.c:2295
 msgid "previous movy requires nopx"
 msgstr ""
 
-#: config/tc-sh.c:2302 config/tc-sh.c:2307
+#: config/tc-sh.c:2303 config/tc-sh.c:2308
 msgid "invalid movx dsp register"
 msgstr ""
 
-#: config/tc-sh.c:2317
+#: config/tc-sh.c:2318
 msgid "previous movx requires nopy"
 msgstr ""
 
-#: config/tc-sh.c:2326 config/tc-sh.c:2331
+#: config/tc-sh.c:2327 config/tc-sh.c:2332
 msgid "invalid movy dsp register"
 msgstr ""
 
-#: config/tc-sh.c:2341
+#: config/tc-sh.c:2342
 msgid "dsp immediate shift value not constant"
 msgstr ""
 
-#: config/tc-sh.c:2355 config/tc-sh.c:2381
+#: config/tc-sh.c:2356 config/tc-sh.c:2382
 msgid "multiple parallel processing specifications"
 msgstr ""
 
-#: config/tc-sh.c:2374
+#: config/tc-sh.c:2375
 msgid "multiple condition specifications"
 msgstr ""
 
-#: config/tc-sh.c:2412
+#: config/tc-sh.c:2413
 msgid "insn cannot be combined with pmuls"
 msgstr ""
 
-#: config/tc-sh.c:2428
+#: config/tc-sh.c:2429
 msgid "bad combined pmuls output operand"
 msgstr ""
 
-#: config/tc-sh.c:2438
+#: config/tc-sh.c:2439
 msgid "destination register is same for parallel insns"
 msgstr ""
 
-#: config/tc-sh.c:2447
+#: config/tc-sh.c:2448
 msgid "condition not followed by conditionalizable insn"
 msgstr ""
 
-#: config/tc-sh.c:2457
+#: config/tc-sh.c:2458
 msgid "unrecognized characters at end of parallel processing insn"
 msgstr ""
 
-#: config/tc-sh.c:2549
+#: config/tc-sh.c:2550
 msgid "opcode not valid for this cpu variant"
 msgstr ""
 
-#: config/tc-sh.c:2580
+#: config/tc-sh.c:2581
 msgid "Delayed branches not available on SH1"
 msgstr ""
 
-#: config/tc-sh.c:2615
+#: config/tc-sh.c:2616
 #, c-format
 msgid "excess operands: '%s'"
 msgstr ""
 
-#: config/tc-sh.c:2692
+#: config/tc-sh.c:2693
 msgid ".uses pseudo-op seen when not relaxing"
 msgstr ""
 
-#: config/tc-sh.c:2698
+#: config/tc-sh.c:2699
 msgid "bad .uses format"
 msgstr ""
 
-#: config/tc-sh.c:2816
+#: config/tc-sh.c:2817
 #, c-format
 msgid "Invalid argument to --isa option: %s"
 msgstr ""
 
-#: config/tc-sh.c:2840
+#: config/tc-sh.c:2841
 #, c-format
 msgid ""
 "SH options:\n"
@@ -16563,70 +16810,70 @@ msgid ""
 "    | fp"
 msgstr ""
 
-#: config/tc-sh.c:2865
+#: config/tc-sh.c:2866
 #, c-format
 msgid "--fdpic\t\t\tgenerate an FDPIC object file\n"
 msgstr ""
 
-#: config/tc-sh.c:2941
+#: config/tc-sh.c:2942
 msgid ".uses does not refer to a local symbol in the same section"
 msgstr ""
 
-#: config/tc-sh.c:2960
+#: config/tc-sh.c:2961
 msgid "can't find fixup pointed to by .uses"
 msgstr ""
 
-#: config/tc-sh.c:2980
+#: config/tc-sh.c:2981
 msgid ".uses target does not refer to a local symbol in the same section"
 msgstr ""
 
-#: config/tc-sh.c:3053
+#: config/tc-sh.c:3054
 msgid "displacement overflows 12-bit field"
 msgstr ""
 
-#: config/tc-sh.c:3056
+#: config/tc-sh.c:3057
 #, c-format
 msgid "displacement to defined symbol %s overflows 12-bit field"
 msgstr ""
 
-#: config/tc-sh.c:3060
+#: config/tc-sh.c:3061
 #, c-format
 msgid "displacement to undefined symbol %s overflows 12-bit field"
 msgstr ""
 
-#: config/tc-sh.c:3133
+#: config/tc-sh.c:3134
 msgid "displacement overflows 8-bit field"
 msgstr ""
 
-#: config/tc-sh.c:3136
+#: config/tc-sh.c:3137
 #, c-format
 msgid "displacement to defined symbol %s overflows 8-bit field"
 msgstr ""
 
-#: config/tc-sh.c:3140
+#: config/tc-sh.c:3141
 #, c-format
 msgid "displacement to undefined symbol %s overflows 8-bit field "
 msgstr ""
 
-#: config/tc-sh.c:3153
+#: config/tc-sh.c:3154
 #, c-format
 msgid "overflow in branch to %s; converted into longer instruction sequence"
 msgstr ""
 
-#: config/tc-sh.c:3218 config/tc-sh.c:3265 config/tc-sparc.c:4634
+#: config/tc-sh.c:3219 config/tc-sh.c:3266 config/tc-sparc.c:4634
 #: config/tc-sparc.c:4658
 msgid "misaligned data"
 msgstr ""
 
-#: config/tc-sh.c:3571
+#: config/tc-sh.c:3572
 msgid "offset to unaligned destination"
 msgstr ""
 
-#: config/tc-sh.c:3576
+#: config/tc-sh.c:3577
 msgid "negative offset"
 msgstr ""
 
-#: config/tc-sh.c:3716
+#: config/tc-sh.c:3717
 msgid "misaligned offset"
 msgstr ""
 
@@ -16980,7 +17227,7 @@ msgstr ""
 msgid "negative alignment"
 msgstr ""
 
-#: config/tc-sparc.c:4189 config/tc-sparc.c:4327 read.c:1523 read.c:2541
+#: config/tc-sparc.c:4189 config/tc-sparc.c:4327 read.c:1524 read.c:2542
 msgid "alignment not a power of 2"
 msgstr ""
 
@@ -18963,7 +19210,7 @@ msgstr ""
 msgid "displacement is too large"
 msgstr ""
 
-#: config/tc-v850.c:2975 config/tc-xtensa.c:13030
+#: config/tc-v850.c:2975 config/tc-xtensa.c:13056
 msgid "invalid operand"
 msgstr ""
 
@@ -19282,7 +19529,7 @@ msgstr ""
 msgid "missing table index"
 msgstr ""
 
-#: config/tc-wasm32.c:726 config/tc-z80.c:3306 read.c:3738
+#: config/tc-wasm32.c:726 config/tc-z80.c:3646 read.c:3739
 #, c-format
 msgid "junk at end of line, first unrecognized character is `%c'"
 msgstr ""
@@ -19401,555 +19648,555 @@ msgstr ""
 msgid "unsupported fptr fixup"
 msgstr ""
 
-#: config/tc-xtensa.c:649
+#: config/tc-xtensa.c:655
 msgid "illegal range of target hardware versions"
 msgstr ""
 
-#: config/tc-xtensa.c:825
+#: config/tc-xtensa.c:831
 msgid "--density option is ignored"
 msgstr ""
 
-#: config/tc-xtensa.c:828
+#: config/tc-xtensa.c:834
 msgid "--no-density option is ignored"
 msgstr ""
 
-#: config/tc-xtensa.c:846
+#: config/tc-xtensa.c:852
 msgid "--generics is deprecated; use --transform instead"
 msgstr ""
 
-#: config/tc-xtensa.c:849
+#: config/tc-xtensa.c:855
 msgid "--no-generics is deprecated; use --no-transform instead"
 msgstr ""
 
-#: config/tc-xtensa.c:852
+#: config/tc-xtensa.c:858
 msgid "--relax is deprecated; use --transform instead"
 msgstr ""
 
-#: config/tc-xtensa.c:855
+#: config/tc-xtensa.c:861
 msgid "--no-relax is deprecated; use --no-transform instead"
 msgstr ""
 
-#: config/tc-xtensa.c:872
+#: config/tc-xtensa.c:878
 msgid "--absolute-literals option not supported in this Xtensa configuration"
 msgstr ""
 
-#: config/tc-xtensa.c:945
+#: config/tc-xtensa.c:951
 msgid "prefer-l32r conflicts with prefer-const16"
 msgstr ""
 
-#: config/tc-xtensa.c:951
+#: config/tc-xtensa.c:957
 msgid "prefer-const16 conflicts with prefer-l32r"
 msgstr ""
 
-#: config/tc-xtensa.c:960 config/tc-xtensa.c:969 config/tc-xtensa.c:973
+#: config/tc-xtensa.c:966 config/tc-xtensa.c:975 config/tc-xtensa.c:979
 msgid "invalid target hardware version"
 msgstr ""
 
-#: config/tc-xtensa.c:1019
+#: config/tc-xtensa.c:1025
 msgid "no-auto-litpools is incompatible with auto-litpool-limit"
 msgstr ""
 
-#: config/tc-xtensa.c:1021 config/tc-xtensa.c:1024
+#: config/tc-xtensa.c:1027 config/tc-xtensa.c:1030
 msgid "invalid auto-litpool-limit argument"
 msgstr ""
 
-#: config/tc-xtensa.c:1026
+#: config/tc-xtensa.c:1032
 msgid "invalid auto-litpool-limit argument (range is 100-10000)"
 msgstr ""
 
-#: config/tc-xtensa.c:1215
+#: config/tc-xtensa.c:1221
 msgid "unmatched .end directive"
 msgstr ""
 
-#: config/tc-xtensa.c:1244
+#: config/tc-xtensa.c:1250
 msgid ".begin directive with no matching .end directive"
 msgstr ""
 
-#: config/tc-xtensa.c:1285
+#: config/tc-xtensa.c:1291
 msgid "[no-]generics is deprecated; use [no-]transform instead"
 msgstr ""
 
-#: config/tc-xtensa.c:1290
+#: config/tc-xtensa.c:1296
 msgid "[no-]relax is deprecated; use [no-]transform instead"
 msgstr ""
 
-#: config/tc-xtensa.c:1303
+#: config/tc-xtensa.c:1309
 #, c-format
 msgid "directive %s cannot be negated"
 msgstr ""
 
-#: config/tc-xtensa.c:1309
+#: config/tc-xtensa.c:1315
 msgid "unknown directive"
 msgstr ""
 
-#: config/tc-xtensa.c:1330 config/tc-xtensa.c:1426 config/tc-xtensa.c:1656
-#: config/tc-xtensa.c:5903
+#: config/tc-xtensa.c:1336 config/tc-xtensa.c:1432 config/tc-xtensa.c:1662
+#: config/tc-xtensa.c:5923
 msgid "directives are not valid inside bundles"
 msgstr ""
 
-#: config/tc-xtensa.c:1342
+#: config/tc-xtensa.c:1348
 msgid ".begin literal is deprecated; use .literal instead"
 msgstr ""
 
-#: config/tc-xtensa.c:1356
+#: config/tc-xtensa.c:1362
 msgid "cannot set literal_prefix inside literal fragment"
 msgstr ""
 
-#: config/tc-xtensa.c:1389
+#: config/tc-xtensa.c:1395
 msgid ".begin [no-]density is ignored"
 msgstr ""
 
-#: config/tc-xtensa.c:1396 config/tc-xtensa.c:1446
+#: config/tc-xtensa.c:1402 config/tc-xtensa.c:1452
 msgid "Xtensa absolute literals option not supported; ignored"
 msgstr ""
 
-#: config/tc-xtensa.c:1439
+#: config/tc-xtensa.c:1445
 msgid ".end [no-]density is ignored"
 msgstr ""
 
-#: config/tc-xtensa.c:1464
+#: config/tc-xtensa.c:1470
 #, c-format
 msgid "does not match begin %s%s at %s:%d"
 msgstr ""
 
-#: config/tc-xtensa.c:1519
+#: config/tc-xtensa.c:1525
 msgid ".literal_position inside literal directive; ignoring"
 msgstr ""
 
-#: config/tc-xtensa.c:1538
+#: config/tc-xtensa.c:1544
 msgid ".literal not allowed inside .begin literal region"
 msgstr ""
 
-#: config/tc-xtensa.c:1566
+#: config/tc-xtensa.c:1572
 msgid "expected comma or colon after symbol name; rest of line ignored"
 msgstr ""
 
-#: config/tc-xtensa.c:1625
+#: config/tc-xtensa.c:1631
 msgid "fall through frequency must be greater than 0"
 msgstr ""
 
-#: config/tc-xtensa.c:1633
+#: config/tc-xtensa.c:1639
 msgid "branch target frequency must be greater than 0"
 msgstr ""
 
-#: config/tc-xtensa.c:1681
+#: config/tc-xtensa.c:1687
 #, c-format
 msgid "opcode-specific %s relocation used outside an instruction"
 msgstr ""
 
-#: config/tc-xtensa.c:1691
+#: config/tc-xtensa.c:1697
 #, c-format
 msgid "invalid use of %s relocation"
 msgstr ""
 
-#: config/tc-xtensa.c:1887 config/tc-xtensa.c:1904
+#: config/tc-xtensa.c:1893 config/tc-xtensa.c:1910
 #, c-format
 msgid "bad register name: %s"
 msgstr ""
 
-#: config/tc-xtensa.c:1893
+#: config/tc-xtensa.c:1899
 #, c-format
 msgid "bad register number: %s"
 msgstr ""
 
-#: config/tc-xtensa.c:1957
+#: config/tc-xtensa.c:1963
 msgid "pcrel relocation not allowed in an instruction"
 msgstr ""
 
-#: config/tc-xtensa.c:2060
+#: config/tc-xtensa.c:2066
 msgid "extra colon"
 msgstr ""
 
-#: config/tc-xtensa.c:2121
+#: config/tc-xtensa.c:2127
 msgid "incorrect register number, ignoring"
 msgstr ""
 
-#: config/tc-xtensa.c:2202
+#: config/tc-xtensa.c:2208
 #, c-format
 msgid "cannot encode opcode \"%s\""
 msgstr ""
 
-#: config/tc-xtensa.c:2294
+#: config/tc-xtensa.c:2300
 #, c-format
 msgid "not enough operands (%d) for '%s'; expected %d"
 msgstr ""
 
-#: config/tc-xtensa.c:2301
+#: config/tc-xtensa.c:2307
 #, c-format
 msgid "too many operands (%d) for '%s'; expected %d"
 msgstr ""
 
-#: config/tc-xtensa.c:2352
+#: config/tc-xtensa.c:2358
 #, c-format
 msgid "invalid register '%s' for '%s' instruction"
 msgstr ""
 
-#: config/tc-xtensa.c:2359
+#: config/tc-xtensa.c:2365
 #, c-format
 msgid "invalid register number (%ld) for '%s' instruction"
 msgstr ""
 
-#: config/tc-xtensa.c:2426
+#: config/tc-xtensa.c:2432
 #, c-format
 msgid "invalid register number (%ld) for '%s'"
 msgstr ""
 
-#: config/tc-xtensa.c:2813
+#: config/tc-xtensa.c:2831
 #, c-format
 msgid "operand %d of '%s' has out of range value '%u'"
 msgstr ""
 
-#: config/tc-xtensa.c:2819
+#: config/tc-xtensa.c:2837
 #, c-format
 msgid "operand %d of '%s' has invalid value '%u'"
 msgstr ""
 
-#: config/tc-xtensa.c:2866
+#: config/tc-xtensa.c:2884
 #, c-format
 msgid "internal error: unknown option name '%s'"
 msgstr ""
 
-#: config/tc-xtensa.c:3975
+#: config/tc-xtensa.c:3993
 msgid "can't handle generation of literal/labels yet"
 msgstr ""
 
-#: config/tc-xtensa.c:3979
+#: config/tc-xtensa.c:3997
 msgid "can't handle undefined OP TYPE"
 msgstr ""
 
-#: config/tc-xtensa.c:4040 config/tc-xtensa.c:4049
+#: config/tc-xtensa.c:4058 config/tc-xtensa.c:4067
 #, c-format
 msgid "found %d operand for '%s':  Expected %d"
 msgid_plural "found %d operands for '%s':  Expected %d"
 msgstr[0] ""
 msgstr[1] ""
 
-#: config/tc-xtensa.c:4072
+#: config/tc-xtensa.c:4090
 msgid "immediate operands sum to greater than 32"
 msgstr ""
 
-#: config/tc-xtensa.c:4324
+#: config/tc-xtensa.c:4342
 #, c-format
 msgid "invalid relocation for operand %i of '%s'"
 msgstr ""
 
-#: config/tc-xtensa.c:4334
+#: config/tc-xtensa.c:4352
 #, c-format
 msgid "invalid expression for operand %i of '%s'"
 msgstr ""
 
-#: config/tc-xtensa.c:4344
+#: config/tc-xtensa.c:4362
 #, c-format
 msgid "invalid relocation in instruction slot %i"
 msgstr ""
 
-#: config/tc-xtensa.c:4351
+#: config/tc-xtensa.c:4369
 #, c-format
 msgid "undefined symbol for opcode \"%s\""
 msgstr ""
 
-#: config/tc-xtensa.c:4826
+#: config/tc-xtensa.c:4844
 msgid "opcode 'NOP.N' unavailable in this configuration"
 msgstr ""
 
-#: config/tc-xtensa.c:4886
+#: config/tc-xtensa.c:4904
 msgid "get_expanded_loop_offset: invalid opcode"
 msgstr ""
 
-#: config/tc-xtensa.c:5047
+#: config/tc-xtensa.c:5065
 #, c-format
 msgid "assembly state not set for first frag in section %s"
 msgstr ""
 
-#: config/tc-xtensa.c:5100
+#: config/tc-xtensa.c:5118
 #, c-format
 msgid "unaligned branch target: %d bytes at 0x%lx"
 msgstr ""
 
-#: config/tc-xtensa.c:5144
+#: config/tc-xtensa.c:5162
 #, c-format
 msgid "unaligned loop: %d bytes at 0x%lx"
 msgstr ""
 
-#: config/tc-xtensa.c:5169
+#: config/tc-xtensa.c:5187
 msgid "unexpected fix"
 msgstr ""
 
-#: config/tc-xtensa.c:5180 config/tc-xtensa.c:5184
+#: config/tc-xtensa.c:5198 config/tc-xtensa.c:5202
 msgid "undecodable fix"
 msgstr ""
 
-#: config/tc-xtensa.c:5343
+#: config/tc-xtensa.c:5363
 msgid "labels are not valid inside bundles"
 msgstr ""
 
-#: config/tc-xtensa.c:5363
+#: config/tc-xtensa.c:5383
 msgid "invalid last instruction for a zero-overhead loop"
 msgstr ""
 
-#: config/tc-xtensa.c:5430
+#: config/tc-xtensa.c:5450
 msgid "extra opening brace"
 msgstr ""
 
-#: config/tc-xtensa.c:5440
+#: config/tc-xtensa.c:5460
 msgid "extra closing brace"
 msgstr ""
 
-#: config/tc-xtensa.c:5467
+#: config/tc-xtensa.c:5487
 msgid "missing closing brace"
 msgstr ""
 
-#: config/tc-xtensa.c:5565 config/tc-xtensa.c:5594
+#: config/tc-xtensa.c:5585 config/tc-xtensa.c:5614
 #, c-format
 msgid "wrong number of operands for '%s'"
 msgstr ""
 
-#: config/tc-xtensa.c:5581
+#: config/tc-xtensa.c:5601
 #, c-format
 msgid "bad relocation expression for '%s'"
 msgstr ""
 
-#: config/tc-xtensa.c:5616
+#: config/tc-xtensa.c:5636
 #, c-format
 msgid "unknown opcode or format name '%s'"
 msgstr ""
 
-#: config/tc-xtensa.c:5622
+#: config/tc-xtensa.c:5642
 msgid "format names only valid inside bundles"
 msgstr ""
 
-#: config/tc-xtensa.c:5627
+#: config/tc-xtensa.c:5647
 #, c-format
 msgid "multiple formats specified for one bundle; using '%s'"
 msgstr ""
 
-#: config/tc-xtensa.c:5677
+#: config/tc-xtensa.c:5697
 msgid "entry instruction with stack decrement < 16"
 msgstr ""
 
-#: config/tc-xtensa.c:5731
+#: config/tc-xtensa.c:5751
 msgid "unaligned entry instruction"
 msgstr ""
 
-#: config/tc-xtensa.c:5796
+#: config/tc-xtensa.c:5816
 msgid "bad instruction format"
 msgstr ""
 
-#: config/tc-xtensa.c:5799
+#: config/tc-xtensa.c:5819
 msgid "invalid relocation"
 msgstr ""
 
-#: config/tc-xtensa.c:5810
+#: config/tc-xtensa.c:5830
 #, c-format
 msgid "invalid relocation for '%s' instruction"
 msgstr ""
 
-#: config/tc-xtensa.c:5822
+#: config/tc-xtensa.c:5842
 #, c-format
 msgid "invalid relocation for operand %d of '%s'"
 msgstr ""
 
-#: config/tc-xtensa.c:6099
+#: config/tc-xtensa.c:6125
 #, c-format
 msgid "unhandled local relocation fix %s"
 msgstr ""
 
-#: config/tc-xtensa.c:6150
+#: config/tc-xtensa.c:6176
 #, c-format
 msgid "internal error; cannot generate `%s' relocation"
 msgstr ""
 
-#: config/tc-xtensa.c:6367
+#: config/tc-xtensa.c:6393
 msgid "The option \"--no-allow-flix\" prohibits multi-slot flix."
 msgstr ""
 
-#: config/tc-xtensa.c:6374
+#: config/tc-xtensa.c:6400
 msgid "couldn't find a valid instruction format"
 msgstr ""
 
-#: config/tc-xtensa.c:6375
+#: config/tc-xtensa.c:6401
 #, c-format
 msgid "    ops were: "
 msgstr ""
 
-#: config/tc-xtensa.c:6377
+#: config/tc-xtensa.c:6403
 #, c-format
 msgid " %s;"
 msgstr ""
 
-#: config/tc-xtensa.c:6387
+#: config/tc-xtensa.c:6413
 #, c-format
 msgid "mismatch for format '%s': #slots = %d, #opcodes = %d"
 msgstr ""
 
-#: config/tc-xtensa.c:6396 config/tc-xtensa.c:6493
+#: config/tc-xtensa.c:6422 config/tc-xtensa.c:6519
 msgid "illegal resource usage in bundle"
 msgstr ""
 
-#: config/tc-xtensa.c:6582
+#: config/tc-xtensa.c:6608
 #, c-format
 msgid "opcodes '%s' (slot %d) and '%s' (slot %d) write the same register"
 msgstr ""
 
-#: config/tc-xtensa.c:6587
+#: config/tc-xtensa.c:6613
 #, c-format
 msgid "opcodes '%s' (slot %d) and '%s' (slot %d) write the same state"
 msgstr ""
 
-#: config/tc-xtensa.c:6592
+#: config/tc-xtensa.c:6618
 #, c-format
 msgid "opcodes '%s' (slot %d) and '%s' (slot %d) write the same port"
 msgstr ""
 
-#: config/tc-xtensa.c:6597
+#: config/tc-xtensa.c:6623
 #, c-format
 msgid ""
 "opcodes '%s' (slot %d) and '%s' (slot %d) both have volatile port accesses"
 msgstr ""
 
-#: config/tc-xtensa.c:6613
+#: config/tc-xtensa.c:6639
 msgid "multiple branches or jumps in the same bundle"
 msgstr ""
 
-#: config/tc-xtensa.c:7065
+#: config/tc-xtensa.c:7091
 msgid "cannot assemble into a literal fragment"
 msgstr ""
 
-#: config/tc-xtensa.c:7067
+#: config/tc-xtensa.c:7093
 msgid "..."
 msgstr ""
 
-#: config/tc-xtensa.c:8283
+#: config/tc-xtensa.c:8309
 msgid ""
 "instruction sequence (write a0, branch, retw) may trigger hardware errata"
 msgstr ""
 
-#: config/tc-xtensa.c:8395
+#: config/tc-xtensa.c:8421
 msgid "branching or jumping to a loop end may trigger hardware errata"
 msgstr ""
 
-#: config/tc-xtensa.c:8477
+#: config/tc-xtensa.c:8503
 msgid "loop end too close to another loop end may trigger hardware errata"
 msgstr ""
 
-#: config/tc-xtensa.c:8486
+#: config/tc-xtensa.c:8512
 #, c-format
 msgid "fr_var %lu < length %d"
 msgstr ""
 
-#: config/tc-xtensa.c:8643
+#: config/tc-xtensa.c:8669
 msgid ""
 "loop containing less than three instructions may trigger hardware errata"
 msgstr ""
 
-#: config/tc-xtensa.c:8715
+#: config/tc-xtensa.c:8741
 msgid "undecodable instruction in instruction frag"
 msgstr ""
 
-#: config/tc-xtensa.c:8825
+#: config/tc-xtensa.c:8851
 msgid "invalid empty loop"
 msgstr ""
 
-#: config/tc-xtensa.c:8830
+#: config/tc-xtensa.c:8856
 msgid "loop target does not follow loop instruction in section"
 msgstr ""
 
-#: config/tc-xtensa.c:9401
+#: config/tc-xtensa.c:9427
 msgid "cannot find suitable trampoline"
 msgstr ""
 
-#: config/tc-xtensa.c:9656
+#: config/tc-xtensa.c:9682
 msgid "bad relaxation state"
 msgstr ""
 
-#: config/tc-xtensa.c:9714
+#: config/tc-xtensa.c:9740
 #, c-format
 msgid "fr_var (%ld) < length (%d)"
 msgstr ""
 
-#: config/tc-xtensa.c:10414
+#: config/tc-xtensa.c:10440
 msgid "jump target out of range; no usable trampoline found"
 msgstr ""
 
-#: config/tc-xtensa.c:10538
+#: config/tc-xtensa.c:10564
 msgid "invalid relaxation fragment result"
 msgstr ""
 
-#: config/tc-xtensa.c:10620
+#: config/tc-xtensa.c:10646
 msgid "unable to widen instruction"
 msgstr ""
 
-#: config/tc-xtensa.c:10758
+#: config/tc-xtensa.c:10784
 msgid "multiple literals in expansion"
 msgstr ""
 
-#: config/tc-xtensa.c:10762
+#: config/tc-xtensa.c:10788
 msgid "no registered fragment for literal"
 msgstr ""
 
-#: config/tc-xtensa.c:10764
+#: config/tc-xtensa.c:10790
 msgid "number of literal tokens != 1"
 msgstr ""
 
-#: config/tc-xtensa.c:10893 config/tc-xtensa.c:10899
+#: config/tc-xtensa.c:10919 config/tc-xtensa.c:10925
 #, c-format
 msgid "unresolved loop target symbol: %s"
 msgstr ""
 
-#: config/tc-xtensa.c:11388
+#: config/tc-xtensa.c:11414
 #, c-format
 msgid "fixes not all moved from %s"
 msgstr ""
 
-#: config/tc-xtensa.c:11516
+#: config/tc-xtensa.c:11542
 msgid ""
 "literal pool location required for text-section-literals; specify with ."
 "literal_position"
 msgstr ""
 
-#: config/tc-xtensa.c:12344
+#: config/tc-xtensa.c:12370
 msgid "too many operands in instruction"
 msgstr ""
 
-#: config/tc-xtensa.c:12554
+#: config/tc-xtensa.c:12580
 msgid "invalid symbolic operand"
 msgstr ""
 
-#: config/tc-xtensa.c:12615
+#: config/tc-xtensa.c:12641
 msgid "operand number mismatch"
 msgstr ""
 
-#: config/tc-xtensa.c:12619
+#: config/tc-xtensa.c:12645
 #, c-format
 msgid "cannot encode opcode \"%s\" in the given format \"%s\""
 msgstr ""
 
-#: config/tc-xtensa.c:12644
+#: config/tc-xtensa.c:12670
 #, c-format
 msgid "xtensa-isa failure: %s"
 msgstr ""
 
-#: config/tc-xtensa.c:12721
+#: config/tc-xtensa.c:12747
 msgid "invalid opcode"
 msgstr ""
 
-#: config/tc-xtensa.c:12727
+#: config/tc-xtensa.c:12753
 msgid "too few operands"
 msgstr ""
 
-#: config/tc-xtensa.c:12733
+#: config/tc-xtensa.c:12759
 msgid "too many operands"
 msgstr ""
 
-#: config/tc-xtensa.c:12777
+#: config/tc-xtensa.c:12803
 msgid "multiple writes to the same register"
 msgstr ""
 
-#: config/tc-xtensa.c:12891 config/tc-xtensa.c:12897
+#: config/tc-xtensa.c:12917 config/tc-xtensa.c:12923
 msgid "out of memory"
 msgstr ""
 
-#: config/tc-xtensa.c:12986
+#: config/tc-xtensa.c:13012
 msgid "TLS relocation not allowed in FLIX bundle"
 msgstr ""
 
@@ -19957,89 +20204,142 @@ 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:12992
+#: config/tc-xtensa.c:13018
 msgid "unexpected TLS relocation"
 msgstr ""
 
-#: config/tc-xtensa.c:13036
+#: config/tc-xtensa.c:13062
 msgid "symbolic operand not allowed"
 msgstr ""
 
-#: config/tc-xtensa.c:13073
+#: config/tc-xtensa.c:13099
 msgid "cannot decode instruction format"
 msgstr ""
 
-#: config/tc-xtensa.c:13217
+#: config/tc-xtensa.c:13243
 msgid "ignoring extra '-rename-section' delimiter ':'"
 msgstr ""
 
-#: config/tc-xtensa.c:13222
+#: config/tc-xtensa.c:13248
 #, c-format
 msgid "ignoring invalid '-rename-section' specification: '%s'"
 msgstr ""
 
-#: config/tc-xtensa.c:13233
+#: config/tc-xtensa.c:13259
 #, c-format
 msgid "section %s renamed multiple times"
 msgstr ""
 
-#: config/tc-xtensa.c:13235
+#: config/tc-xtensa.c:13261
 #, c-format
 msgid "multiple sections remapped to output section %s"
 msgstr ""
 
 #: config/tc-z80.c:194
 #, c-format
+msgid "Invalid CPU is specified: %s"
+msgstr ""
+
+#: config/tc-z80.c:219
+#, c-format
+msgid "Invalid EXTENTION is specified: %s"
+msgstr ""
+
+#: config/tc-z80.c:274
+#, c-format
 msgid "invalid floating point numbers type `%s'"
 msgstr ""
 
-#: config/tc-z80.c:215 config/tc-z80.c:224
+#: config/tc-z80.c:295 config/tc-z80.c:304
 #, c-format
 msgid "invalid INST in command line: %s"
 msgstr ""
 
-#: config/tc-z80.c:583
+#: config/tc-z80.c:398
+#, c-format
+msgid ""
+"\n"
+"CPU model options:\n"
+"  -march=CPU[+EXT...][-EXT...]\n"
+"\t\t\t  generate code for CPU, where CPU is one of:\n"
+msgstr ""
+
+#: config/tc-z80.c:404
+#, c-format
+msgid "And EXT is combination (+EXT - add, -EXT - remove) of:\n"
+msgstr ""
+
+#: config/tc-z80.c:407
+#, c-format
+msgid ""
+"\n"
+"Compatibility options:\n"
+"  -local-prefix=TEXT\t  treat labels prefixed by TEXT as local\n"
+"  -colonless\t\t  permit colonless labels\n"
+"  -sdcc\t\t\t  accept SDCC specific instruction syntax\n"
+"  -fp-s=FORMAT\t\t  set single precission FP numbers format\n"
+"  -fp-d=FORMAT\t\t  set double precission FP numbers format\n"
+"Where FORMAT one of:\n"
+"  ieee754\t\t  IEEE754 compatible (depends on directive)\n"
+"  half\t\t\t  IEEE754 half precision (16 bit)\n"
+"  single\t\t  IEEE754 single precision (32 bit)\n"
+"  double\t\t  IEEE754 double precision (64 bit)\n"
+"  zeda32\t\t  Zeda z80float library 32 bit format\n"
+"  math48\t\t  48 bit format from Math48 library\n"
+"\n"
+"Default: -march=z80+xyhl+infc\n"
+msgstr ""
+
+#: config/tc-z80.c:610
 msgid "-- unterminated string"
 msgstr ""
 
-#: config/tc-z80.c:750
+#: config/tc-z80.c:779
 msgid "undocumented instruction"
 msgstr ""
 
-#: config/tc-z80.c:794 config/tc-z80.c:800
+#: config/tc-z80.c:823 config/tc-z80.c:829
 msgid "mismatched parentheses"
 msgstr ""
 
-#: config/tc-z80.c:854
+#: config/tc-z80.c:915
 msgid "bad expression syntax"
 msgstr ""
 
-#: config/tc-z80.c:1071
+#: config/tc-z80.c:1132
 #, c-format
 msgid "invalid data size %d"
 msgstr ""
 
-#: config/tc-z80.c:1140
+#: config/tc-z80.c:1200
 msgid "cannot make a relative jump to an absolute location"
 msgstr ""
 
-#: config/tc-z80.c:1152 config/tc-z80.c:3386 config/tc-z80.c:3689
-msgid "overflow"
+#: config/tc-z80.c:1207
+#, c-format
+msgid "index overflow (%+ld)"
+msgstr ""
+
+#: config/tc-z80.c:1209
+#, c-format
+msgid "offset overflow (%+ld)"
 msgstr ""
 
-#: config/tc-z80.c:1524 config/tc-z80.c:1567 config/tc-z80.c:1611
-#: config/tc-z80.c:1679 config/tc-z80.c:1731 config/tc-z80.c:1784
-#: config/tc-z80.c:1817 config/tc-z80.c:1873 config/tc-z80.c:2475
-#: config/tc-z80.c:2524 config/tc-z80.c:2562 config/tc-z80.c:2653
+#: config/tc-z80.c:1411 config/tc-z80.c:1658 config/tc-z80.c:1701
+#: config/tc-z80.c:1782 config/tc-z80.c:1812 config/tc-z80.c:1871
+#: config/tc-z80.c:1931 config/tc-z80.c:1984 config/tc-z80.c:2017
+#: config/tc-z80.c:2074 config/tc-z80.c:2691 config/tc-z80.c:2740
+#: config/tc-z80.c:2778 config/tc-z80.c:2838 config/tc-z80.c:2898
+#: config/tc-z80.c:2974 config/tc-z80.c:2997
 msgid "bad instruction syntax"
 msgstr ""
 
-#: config/tc-z80.c:1657
+#: config/tc-z80.c:1849
 msgid "condition code invalid for jr"
 msgstr ""
 
-#: config/tc-z80.c:2221 config/tc-z80.c:2232 config/tc-z80.c:2248
-#: config/tc-z80.c:2281
+#: config/tc-z80.c:2437 config/tc-z80.c:2448 config/tc-z80.c:2464
+#: config/tc-z80.c:2497
 msgid "ADL mode instruction"
 msgstr ""
 
@@ -20047,39 +20347,65 @@ msgstr ""
 #. LIS prefix, in Z80 it is LD C,C
 #. SIL prefix, in Z80 it is LD D,D
 #. LIL prefix, in Z80 it is LD E,E
-#: config/tc-z80.c:2356
+#: config/tc-z80.c:2572
 msgid "unsupported instruction, assembled as NOP"
 msgstr ""
 
-#: config/tc-z80.c:2849 config/tc-z80.c:2880
+#: config/tc-z80.c:3165 config/tc-z80.c:3196
 msgid "parentheses ignored"
 msgstr ""
 
-#: config/tc-z80.c:2897
+#: config/tc-z80.c:3213
 msgid "CPU mode is unsupported by target"
 msgstr ""
 
-#: config/tc-z80.c:2919
+#: config/tc-z80.c:3235
 msgid "assignment expected"
 msgstr ""
 
-#: config/tc-z80.c:3333 config/tc-z8k.c:1467 config/tc-z8k.c:1530
-msgid "relative jump out of range"
+#: config/tc-z80.c:3639
+#, c-format
+msgid "Unknown instruction `%s'"
 msgstr ""
 
-#: config/tc-z80.c:3350
-msgid "index offset out of range"
+#: config/tc-z80.c:3706
+#, c-format
+msgid "8-bit signed offset out of range (%+ld)"
 msgstr ""
 
-#: config/tc-z80.c:3429 config/tc-z8k.c:1538
+#: config/tc-z80.c:3729
 #, c-format
-msgid "md_apply_fix: unknown r_type 0x%x\n"
+msgid "8-bit overflow (%+ld)"
+msgstr ""
+
+#: config/tc-z80.c:3746
+#, c-format
+msgid "16-bit overflow (%+ld)"
 msgstr ""
 
-#: config/tc-z80.c:3611 config/tc-z80.c:3670
+#: config/tc-z80.c:3754
+#, c-format
+msgid "24-bit overflow (%+ld)"
+msgstr ""
+
+#: config/tc-z80.c:3763
+#, c-format
+msgid "32-bit overflow (%+ld)"
+msgstr ""
+
+#: config/tc-z80.c:3776
+#, c-format
+msgid "md_apply_fix: unknown reloc type 0x%x\n"
+msgstr ""
+
+#: config/tc-z80.c:3973 config/tc-z80.c:4032
 msgid "invalid syntax"
 msgstr ""
 
+#: config/tc-z80.c:4051
+msgid "overflow"
+msgstr ""
+
 #: config/tc-z8k.c:281
 #, c-format
 msgid "register rr%d out of range"
@@ -20201,6 +20527,10 @@ msgstr ""
 msgid "cannot branch to odd address"
 msgstr ""
 
+#: config/tc-z8k.c:1467 config/tc-z8k.c:1530
+msgid "relative jump out of range"
+msgstr ""
+
 #: config/tc-z8k.c:1485
 msgid "relative address out of range"
 msgstr ""
@@ -20209,6 +20539,11 @@ msgstr ""
 msgid "relative call out of range"
 msgstr ""
 
+#: config/tc-z8k.c:1538
+#, c-format
+msgid "md_apply_fix: unknown r_type 0x%x\n"
+msgstr ""
+
 #: config/tc-z8k.c:1550
 #, c-format
 msgid "call to md_estimate_size_before_relax\n"
@@ -20294,7 +20629,7 @@ msgstr ""
 msgid "can't close `%s'"
 msgstr ""
 
-#: dw2gencfi.c:319 read.c:2442
+#: dw2gencfi.c:319 read.c:2443
 #, c-format
 msgid "bfd_set_section_flags: %s"
 msgstr ""
@@ -20415,51 +20750,56 @@ msgstr ""
 msgid "CFI is not supported for this target"
 msgstr ""
 
-#: dwarf2dbg.c:372 dwarf2dbg.c:2340
+#: dwarf2dbg.c:379 dwarf2dbg.c:2747
 msgid "view number mismatch"
 msgstr ""
 
-#: dwarf2dbg.c:757 dwarf2dbg.c:815
+#: dwarf2dbg.c:635 dwarf2dbg.c:1084
 #, c-format
 msgid "file number %lu is too big"
 msgstr ""
 
-#: dwarf2dbg.c:804 dwarf2dbg.c:854
+#: dwarf2dbg.c:798
+#, c-format
+msgid ""
+"file table slot %u is already occupied by a different file (%s%s%s vs %s%s%s)"
+msgstr ""
+
+#: dwarf2dbg.c:1035 dwarf2dbg.c:1122
 msgid "file number less than one"
 msgstr ""
 
-#: dwarf2dbg.c:820
-#, c-format
-msgid "file number %u already allocated"
+#: dwarf2dbg.c:1069
+msgid "md5 value too small or not a constant"
 msgstr ""
 
-#: dwarf2dbg.c:859 dwarf2dbg.c:1727
+#: dwarf2dbg.c:1129 dwarf2dbg.c:2096
 #, c-format
 msgid "unassigned file number %ld"
 msgstr ""
 
-#: dwarf2dbg.c:928
+#: dwarf2dbg.c:1198
 msgid "is_stmt value not 0 or 1"
 msgstr ""
 
-#: dwarf2dbg.c:940
+#: dwarf2dbg.c:1210
 msgid "isa number less than zero"
 msgstr ""
 
-#: dwarf2dbg.c:952
+#: dwarf2dbg.c:1222
 msgid "discriminator less than zero"
 msgstr ""
 
-#: dwarf2dbg.c:971
+#: dwarf2dbg.c:1241
 msgid "numeric view can only be asserted to zero"
 msgstr ""
 
-#: dwarf2dbg.c:1009
+#: dwarf2dbg.c:1279
 #, c-format
 msgid "unknown .loc sub-directive `%s'"
 msgstr ""
 
-#: dwarf2dbg.c:1804
+#: dwarf2dbg.c:2200
 msgid "internal error: unknown dwarf2 format"
 msgstr ""
 
@@ -20650,11 +20990,11 @@ msgstr ""
 msgid "GP prologue size exceeds field size, using 0 instead"
 msgstr ""
 
-#: expr.c:84 read.c:3804
+#: expr.c:84 read.c:3805
 msgid "bignum invalid"
 msgstr ""
 
-#: expr.c:86 read.c:3806 read.c:4311 read.c:5157
+#: expr.c:86 read.c:3807 read.c:4312 read.c:5158
 msgid "floating point number invalid"
 msgstr ""
 
@@ -20698,7 +21038,7 @@ msgstr ""
 msgid "missing '%c'"
 msgstr ""
 
-#: expr.c:978 read.c:4608
+#: expr.c:978 read.c:4609
 msgid "EBCDIC constants are not supported"
 msgstr ""
 
@@ -20736,7 +21076,7 @@ msgstr ""
 msgid "right operand is a float; integer 0 assumed"
 msgstr ""
 
-#: expr.c:1919 symbols.c:1561
+#: expr.c:1919 symbols.c:1574
 msgid "division by zero"
 msgstr ""
 
@@ -21073,52 +21413,52 @@ msgid ""
 "single instruction is %u bytes long, but .bundle_align_mode limit is %u bytes"
 msgstr ""
 
-#: read.c:769 read.c:2812 read.c:3383
+#: read.c:769 read.c:2813 read.c:3384
 msgid "ignoring fill value in absolute section"
 msgstr ""
 
-#: read.c:771 read.c:2827 read.c:3422
+#: read.c:771 read.c:2828 read.c:3423
 #, c-format
 msgid "ignoring fill value in section `%s'"
 msgstr ""
 
-#: read.c:1131
+#: read.c:1132
 #, c-format
 msgid "unknown pseudo-op: `%s'"
 msgstr ""
 
-#: read.c:1184
+#: read.c:1185
 msgid "unable to continue with assembly."
 msgstr ""
 
-#: read.c:1226
+#: read.c:1227
 #, c-format
 msgid "label \"%d$\" redefined"
 msgstr ""
 
-#: read.c:1373
+#: read.c:1374
 msgid ".bundle_lock with no matching .bundle_unlock"
 msgstr ""
 
-#: read.c:1470
+#: read.c:1471
 msgid ".abort detected.  Abandoning ship."
 msgstr ""
 
-#: read.c:1532
+#: read.c:1533
 #, c-format
 msgid "alignment too large: %u assumed"
 msgstr ""
 
-#: read.c:1564
+#: read.c:1565
 msgid "expected fill pattern missing"
 msgstr ""
 
-#: read.c:1589
+#: read.c:1590
 #, c-format
 msgid "fill pattern too long, truncating to %u"
 msgstr ""
 
-#: read.c:1687
+#: read.c:1688
 msgid "symbol name not recognised in the current locale"
 msgstr ""
 
@@ -21131,360 +21471,360 @@ msgstr ""
 #. We do not want to barf on this, especially since such files are used
 #. in the GCC and GDB testsuites.  So we check for negative line numbers
 #. rather than non-positive line numbers.
-#: read.c:2029
+#: read.c:2030
 #, c-format
 msgid "line numbers must be positive; line number %d rejected"
 msgstr ""
 
-#: read.c:2066
+#: read.c:2067
 #, c-format
 msgid "incompatible flag %i in line directive"
 msgstr ""
 
-#: read.c:2078
+#: read.c:2079
 #, c-format
 msgid "unsupported flag %i in line directive"
 msgstr ""
 
-#: read.c:2117
+#: read.c:2118
 msgid "start address not supported"
 msgstr ""
 
-#: read.c:2126
+#: read.c:2127
 msgid ".err encountered"
 msgstr ""
 
-#: read.c:2142
+#: read.c:2143
 msgid ".error directive invoked in source file"
 msgstr ""
 
-#: read.c:2143
+#: read.c:2144
 msgid ".warning directive invoked in source file"
 msgstr ""
 
-#: read.c:2149
+#: read.c:2150
 #, c-format
 msgid "%s argument must be a string"
 msgstr ""
 
-#: read.c:2181 read.c:2183
+#: read.c:2182 read.c:2184
 #, c-format
 msgid ".fail %ld encountered"
 msgstr ""
 
-#: read.c:2223
+#: read.c:2224
 #, c-format
 msgid ".fill size clamped to %d"
 msgstr ""
 
-#: read.c:2228
+#: read.c:2229
 msgid "size negative; .fill ignored"
 msgstr ""
 
-#: read.c:2234
+#: read.c:2235
 msgid "repeat < 0; .fill ignored"
 msgstr ""
 
-#: read.c:2243
+#: read.c:2244
 msgid "non-constant fill count for absolute section"
 msgstr ""
 
-#: read.c:2245
+#: read.c:2246
 msgid "attempt to fill absolute section with non-zero value"
 msgstr ""
 
-#: read.c:2251
+#: read.c:2252
 #, c-format
 msgid "attempt to fill section `%s' with non-zero value"
 msgstr ""
 
-#: read.c:2408
+#: read.c:2409
 #, c-format
 msgid "unrecognized .linkonce type `%s'"
 msgstr ""
 
-#: read.c:2420
+#: read.c:2421
 msgid ".linkonce is not supported for this object file format"
 msgstr ""
 
-#: read.c:2515
+#: read.c:2516
 msgid "expected alignment after size"
 msgstr ""
 
-#: read.c:2734
+#: read.c:2735
 #, c-format
 msgid "attempt to redefine pseudo-op `%s' ignored"
 msgstr ""
 
-#: read.c:2753
+#: read.c:2754
 msgid "ignoring macro exit outside a macro definition."
 msgstr ""
 
-#: read.c:2807
+#: read.c:2808
 #, c-format
 msgid "invalid segment \"%s\""
 msgstr ""
 
-#: read.c:2815
+#: read.c:2816
 msgid "only constant offsets supported in absolute section"
 msgstr ""
 
-#: read.c:2858
+#: read.c:2859
 msgid "MRI style ORG pseudo-op not supported"
 msgstr ""
 
-#: read.c:3029
+#: read.c:3030
 #, c-format
 msgid ".end%c encountered without preceding %s"
 msgstr ""
 
-#: read.c:3058 read.c:3094
+#: read.c:3059 read.c:3095
 #, c-format
 msgid "negative count for %s - ignored"
 msgstr ""
 
-#: read.c:3065 read.c:3101
+#: read.c:3066 read.c:3102
 #, c-format
 msgid "%s without %s"
 msgstr ""
 
-#: read.c:3336
+#: read.c:3337
 msgid "unsupported variable size or fill value"
 msgstr ""
 
-#: read.c:3344
+#: read.c:3345
 #, c-format
 msgid "size value for space directive too large: %lx"
 msgstr ""
 
-#: read.c:3373
+#: read.c:3374
 msgid ".space repeat count is zero, ignored"
 msgstr ""
 
-#: read.c:3375
+#: read.c:3376
 msgid ".space repeat count is negative, ignored"
 msgstr ""
 
-#: read.c:3406
+#: read.c:3407
 msgid "space allocation too complex in absolute section"
 msgstr ""
 
-#: read.c:3412
+#: read.c:3413
 msgid "space allocation too complex in common section"
 msgstr ""
 
-#: read.c:3473
+#: read.c:3474
 msgid "negative nop control byte, ignored"
 msgstr ""
 
-#: read.c:3489
+#: read.c:3490
 msgid "unsupported variable nop control in .nops directive"
 msgstr ""
 
-#: read.c:3691
+#: read.c:3692
 #, c-format
 msgid "%s: would close weakref loop: %s"
 msgstr ""
 
-#: read.c:3741
+#: read.c:3742
 #, c-format
 msgid "junk at end of line, first unrecognized character valued 0x%x"
 msgstr ""
 
-#: read.c:3870 write.c:2354
+#: read.c:3871 write.c:2358
 #, c-format
 msgid "`%s' can't be equated to common symbol `%s'"
 msgstr ""
 
-#: read.c:4000
+#: read.c:4001
 msgid "unexpected `\"' in expression"
 msgstr ""
 
-#: read.c:4013
+#: read.c:4014
 msgid "rva without symbol"
 msgstr ""
 
-#: read.c:4082
+#: read.c:4083
 msgid "missing or bad offset expression"
 msgstr ""
 
-#: read.c:4103
+#: read.c:4104
 msgid "missing reloc type"
 msgstr ""
 
-#: read.c:4127
+#: read.c:4128
 msgid "unrecognized reloc type"
 msgstr ""
 
-#: read.c:4143
+#: read.c:4144
 msgid "bad reloc expression"
 msgstr ""
 
-#: read.c:4305 read.c:5151
+#: read.c:4306 read.c:5152
 msgid "zero assumed for missing expression"
 msgstr ""
 
-#: read.c:4325 read.c:5180
+#: read.c:4326 read.c:5181
 msgid "attempt to store value in absolute section"
 msgstr ""
 
-#: read.c:4332 read.c:5186
+#: read.c:4333 read.c:5187
 #, c-format
 msgid "attempt to store non-zero value in section `%s'"
 msgstr ""
 
-#: read.c:4418
+#: read.c:4419
 #, c-format
 msgid "value 0x%llx truncated to 0x%llx"
 msgstr ""
 
-#: read.c:4421
+#: read.c:4422
 msgid "value 0x%I64x truncated to 0x%I64x"
 msgstr ""
 
-#: read.c:4425
+#: read.c:4426
 #, c-format
 msgid "value 0x%lx truncated to 0x%lx"
 msgstr ""
 
-#: read.c:4470
+#: read.c:4471
 #, c-format
 msgid "bignum truncated to %d byte"
 msgid_plural "bignum truncated to %d bytes"
 msgstr[0] ""
 msgstr[1] ""
 
-#: read.c:4679 read.c:4889
+#: read.c:4680 read.c:4890
 msgid "unresolvable or nonpositive repeat count; using 1"
 msgstr ""
 
-#: read.c:4728
+#: read.c:4729
 #, c-format
 msgid "unknown floating type type '%c'"
 msgstr ""
 
-#: read.c:4750
+#: read.c:4751
 msgid "floating point constant too large"
 msgstr ""
 
-#: read.c:4814
+#: read.c:4815
 msgid "attempt to store float in absolute section"
 msgstr ""
 
-#: read.c:4821
+#: read.c:4822
 #, c-format
 msgid "attempt to store float in section `%s'"
 msgstr ""
 
-#: read.c:5269
+#: read.c:5270
 #, c-format
 msgid "attempt to store non-empty string in section `%s'"
 msgstr ""
 
-#: read.c:5331
+#: read.c:5332
 msgid "strings must be placed into a section"
 msgstr ""
 
-#: read.c:5393
+#: read.c:5394
 msgid "expected <nn>"
 msgstr ""
 
 #. To be compatible with BSD 4.2 as: give the luser a linefeed!!
-#: read.c:5434 read.c:5521
+#: read.c:5435 read.c:5522
 msgid "unterminated string; newline inserted"
 msgstr ""
 
-#: read.c:5535
+#: read.c:5536
 msgid "bad escaped character in string"
 msgstr ""
 
-#: read.c:5559
+#: read.c:5560
 msgid "expected address expression"
 msgstr ""
 
-#: read.c:5578
+#: read.c:5579
 #, c-format
 msgid "symbol \"%s\" undefined; zero assumed"
 msgstr ""
 
-#: read.c:5581
+#: read.c:5582
 msgid "some symbol undefined; zero assumed"
 msgstr ""
 
-#: read.c:5616
+#: read.c:5617
 msgid "this string may not contain '\\0'"
 msgstr ""
 
-#: read.c:5652
+#: read.c:5653
 msgid "missing string"
 msgstr ""
 
-#: read.c:5743
+#: read.c:5744
 #, c-format
 msgid ".incbin count zero, ignoring `%s'"
 msgstr ""
 
-#: read.c:5769
+#: read.c:5770
 #, c-format
 msgid "file not found: %s"
 msgstr ""
 
-#: read.c:5783
+#: read.c:5784
 #, c-format
 msgid "seek to end of .incbin file failed `%s'"
 msgstr ""
 
-#: read.c:5794
+#: read.c:5795
 #, c-format
 msgid "skip (%ld) or count (%ld) invalid for file size (%ld)"
 msgstr ""
 
-#: read.c:5801
+#: read.c:5802
 #, c-format
 msgid "could not skip to %ld in file `%s'"
 msgstr ""
 
-#: read.c:5810
+#: read.c:5811
 #, c-format
 msgid "truncated file `%s', %ld of %ld bytes read"
 msgstr ""
 
-#: read.c:5968
+#: read.c:5969
 msgid "missing .func"
 msgstr ""
 
-#: read.c:5985
+#: read.c:5986
 msgid ".endfunc missing for previous .func"
 msgstr ""
 
-#: read.c:6044
+#: read.c:6045
 #, c-format
 msgid ".bundle_align_mode alignment too large (maximum %u)"
 msgstr ""
 
-#: read.c:6049
+#: read.c:6050
 msgid "cannot change .bundle_align_mode inside .bundle_lock"
 msgstr ""
 
-#: read.c:6063
+#: read.c:6064
 msgid ".bundle_lock is meaningless without .bundle_align_mode"
 msgstr ""
 
-#: read.c:6084
+#: read.c:6085
 msgid ".bundle_unlock without preceding .bundle_lock"
 msgstr ""
 
-#: read.c:6097
+#: read.c:6098
 #, c-format
 msgid ".bundle_lock sequence is %u bytes, but bundle size is only %u bytes"
 msgstr ""
 
-#: read.c:6196
+#: read.c:6197
 #, c-format
 msgid "missing closing `%c'"
 msgstr ""
 
-#: read.c:6198
+#: read.c:6199
 msgid "stray `\\'"
 msgstr ""
 
@@ -21550,52 +21890,52 @@ msgstr ""
 msgid "invalid operand (%s section) for `%s' when setting `%s'"
 msgstr ""
 
-#: symbols.c:1259
+#: symbols.c:1266
 #, c-format
 msgid "symbol definition loop encountered at `%s'"
 msgstr ""
 
-#: symbols.c:1286
+#: symbols.c:1293
 #, c-format
 msgid "cannot convert expression symbol %s to complex relocation"
 msgstr ""
 
-#: symbols.c:1563
+#: symbols.c:1576
 #, c-format
 msgid "division by zero when setting `%s'"
 msgstr ""
 
 #. See PR 20895 for a reproducer.
-#: symbols.c:1603
+#: symbols.c:1616
 msgid "Invalid operation on symbol"
 msgstr ""
 
-#: symbols.c:1653 write.c:2403
+#: symbols.c:1666 write.c:2407
 #, c-format
 msgid "can't resolve value for symbol `%s'"
 msgstr ""
 
-#: symbols.c:2112
+#: symbols.c:2125
 #, c-format
 msgid "\"%d\" (instance number %d of a %s label)"
 msgstr ""
 
-#: symbols.c:2141
+#: symbols.c:2154
 #, c-format
 msgid "attempt to get value of unresolved symbol `%s'"
 msgstr ""
 
 #. Do not reassign section symbols.
-#: symbols.c:2429
+#: symbols.c:2442
 msgid "section symbols are already global"
 msgstr ""
 
-#: symbols.c:2542
+#: symbols.c:2555
 #, c-format
 msgid "Accessing function `%s' as thread-local object"
 msgstr ""
 
-#: symbols.c:2546
+#: symbols.c:2559
 #, c-format
 msgid "Accessing `%s' as thread-local object"
 msgstr ""
@@ -21671,65 +22011,65 @@ msgid_plural "can't write %ld bytes to section %s of %s: '%s'"
 msgstr[0] ""
 msgstr[1] ""
 
-#: write.c:1648 write.c:1675 write.c:1711
+#: write.c:1648 write.c:1677 write.c:1714
 #, c-format
 msgid "can't fill %ld byte in section %s of %s: '%s'"
 msgid_plural "can't fill %ld bytes in section %s of %s: '%s'"
 msgstr[0] ""
 msgstr[1] ""
 
-#: write.c:1914
+#: write.c:1918
 msgid "unable to create reloc for build note"
 msgstr ""
 
-#: write.c:1918
+#: write.c:1922
 msgid "<gnu build note>"
 msgstr ""
 
-#: write.c:2319
+#: write.c:2323
 #, c-format
 msgid "%s: global symbols not supported in common sections"
 msgstr ""
 
-#: write.c:2333
+#: write.c:2337
 #, c-format
 msgid "local label `%s' is not defined"
 msgstr ""
 
-#: write.c:2361
+#: write.c:2365
 #, c-format
 msgid "can't make global register symbol `%s'"
 msgstr ""
 
-#: write.c:2670
+#: write.c:2674
 #, c-format
 msgid "alignment padding (%lu byte) not a multiple of %ld"
 msgid_plural "alignment padding (%lu bytes) not a multiple of %ld"
 msgstr[0] ""
 msgstr[1] ""
 
-#: write.c:2837
+#: write.c:2841
 #, c-format
 msgid ".word %s-%s+%s didn't fit"
 msgstr ""
 
-#: write.c:2931
+#: write.c:2935
 msgid "padding added"
 msgstr ""
 
-#: write.c:2982
+#: write.c:2986
 msgid "attempt to move .org backwards"
 msgstr ""
 
-#: write.c:3007
+#: write.c:3011
 msgid ".space specifies non-absolute value"
 msgstr ""
 
-#: write.c:3022
+#: write.c:3026
 msgid ".space, .nops or .fill with negative value, ignored"
 msgstr ""
 
-#: write.c:3094
+#: write.c:3098
 #, c-format
 msgid ""
 "Infinite loop encountered whilst attempting to compute the addresses of "
index e22773e22b86ff2c63f371b933a534da30130f88..f02734744e1a9549fa89ca9a7d719e2d153166dc 100644 (file)
@@ -1,6 +1,9 @@
-#as: -march=rv32g -march-attr
+#as: -march=rv32g -march-attr -misa-spec=2.2
 #readelf: -A
 #source: empty.s
 Attribute Section: riscv
 File Attributes
   Tag_RISCV_arch: "rv32i2p0_m2p0_a2p0_f2p0_d2p0"
+  Tag_RISCV_priv_spec: [0-9_\"].*
+  Tag_RISCV_priv_spec_minor: [0-9_\"].*
+#...
index bc3295be7effb785613a3c80210399d92865143f..02b532d0a88c92703bd0877f5f6f0f0d2296e7a0 100644 (file)
@@ -1,6 +1,9 @@
-#as: -march=rv32gxargle -march-attr
+#as: -march=rv32gxargle -march-attr -misa-spec=2.2
 #readelf: -A
 #source: empty.s
 Attribute Section: riscv
 File Attributes
-  Tag_RISCV_arch: "rv32i2p0_m2p0_a2p0_f2p0_d2p0_xargle2p0"
+  Tag_RISCV_arch: "rv32i2p0_m2p0_a2p0_f2p0_d2p0_xargle0p0"
+  Tag_RISCV_priv_spec: [0-9_\"].*
+  Tag_RISCV_priv_spec_minor: [0-9_\"].*
+#...
index 78b706a73adcd3b102a47913fe1821d2b66dd25a..ded529aa61768088f9e1eecba801677b965fd5be 100644 (file)
@@ -1,6 +1,9 @@
-#as: -march=rv32gxargle_xfoo -march-attr
+#as: -march=rv32gxargle_xfoo -march-attr -misa-spec=2.2
 #readelf: -A
 #source: empty.s
 Attribute Section: riscv
 File Attributes
-  Tag_RISCV_arch: "rv32i2p0_m2p0_a2p0_f2p0_d2p0_xargle2p0_xfoo2p0"
+  Tag_RISCV_arch: "rv32i2p0_m2p0_a2p0_f2p0_d2p0_xargle0p0_xfoo0p0"
+  Tag_RISCV_priv_spec: [0-9_\"].*
+  Tag_RISCV_priv_spec_minor: [0-9_\"].*
+#...
index c97bf03d5e4c1f65b8f15559886d2e8b69d935f7..df6c8182d5b96650d6b17b0d3460306a85185b4a 100644 (file)
@@ -1,6 +1,9 @@
-#as: -march-attr
+#as: -march-attr -misa-spec=2.2
 #readelf: -A
 #source: attribute-04.s
 Attribute Section: riscv
 File Attributes
   Tag_RISCV_arch: "rv32i2p0_m2p0_a2p0_f2p0_d2p0"
+  Tag_RISCV_priv_spec: [0-9_\"].*
+  Tag_RISCV_priv_spec_minor: [0-9_\"].*
+#...
index f9b65f206b7867eafa7833af742c8b8324f2a499..247f52e0ed87259fc10e9ffc1ba724450fd03750 100644 (file)
@@ -1,4 +1,4 @@
-#as: -march-attr
+#as: -march-attr -misa-spec=2.2
 #readelf: -A
 #source: attribute-05.s
 Attribute Section: riscv
@@ -7,5 +7,5 @@ File Attributes
   Tag_RISCV_arch: "rv32i2p0_m2p0_a2p0_f2p0_d2p0"
   Tag_RISCV_unaligned_access: Unaligned access
   Tag_RISCV_priv_spec: 1
-  Tag_RISCV_priv_spec_minor: 2
-  Tag_RISCV_priv_spec_revision: 3
+  Tag_RISCV_priv_spec_minor: 9
+  Tag_RISCV_priv_spec_revision: 1
index 3b3b7f6d5616f468a5e8b36f4ec156af57c77f9a..492030979949f9502e3648c905fb55bacd1c4501 100644 (file)
@@ -1,6 +1,6 @@
        .attribute arch, "rv32g"
        .attribute priv_spec, 1
-       .attribute priv_spec_minor, 2
-       .attribute priv_spec_revision, 3
+       .attribute priv_spec_minor, 9
+       .attribute priv_spec_revision, 1
        .attribute unaligned_access, 1
        .attribute stack_align, 16
index 1abeb47383d9946aaeb3c41f8c0df86440013b53..e1d62c45db76709657555a2136e2beb1bb5c0ed1 100644 (file)
@@ -1,6 +1,9 @@
-#as: -march=rv32g2p0 -march-attr
+#as: -march=rv32g2p0 -march-attr -misa-spec=2.2
 #readelf: -A
 #source: attribute-06.s
 Attribute Section: riscv
 File Attributes
   Tag_RISCV_arch: "rv32i2p0"
+  Tag_RISCV_priv_spec: [0-9_\"].*
+  Tag_RISCV_priv_spec_minor: [0-9_\"].*
+#...
index dfd7e6bd6e58454bec411506f16de6c038997cf2..59f02b4c4e3526e00b7acf5486cb72d7ea827608 100644 (file)
@@ -1,6 +1,9 @@
-#as: -march=rv64g2p0 -march-attr
+#as: -march=rv64g2p0 -march-attr -misa-spec=2.2
 #readelf: -A
 #source: attribute-07.s
 Attribute Section: riscv
 File Attributes
   Tag_RISCV_arch: "rv64i2p0"
+  Tag_RISCV_priv_spec: [0-9_\"].*
+  Tag_RISCV_priv_spec_minor: [0-9_\"].*
+#...
index c10ac0ca353b489e04b10379a89593c150c6c740..13b82a97a63aee118ae6816f3040d94c248b44e5 100644 (file)
@@ -4,3 +4,6 @@
 Attribute Section: riscv
 File Attributes
   Tag_RISCV_arch: "rv32e1p9"
+  Tag_RISCV_priv_spec: [0-9_\"].*
+  Tag_RISCV_priv_spec_minor: [0-9_\"].*
+#...
diff --git a/gas/testsuite/gas/riscv/attribute-09.d b/gas/testsuite/gas/riscv/attribute-09.d
new file mode 100644 (file)
index 0000000..53945a2
--- /dev/null
@@ -0,0 +1,9 @@
+#as: -march-attr -march=rv32i2p1m_zicsr -misa-spec=2.2
+#readelf: -A
+#source: empty.s
+Attribute Section: riscv
+File Attributes
+  Tag_RISCV_arch: "rv32i2p1_m2p0_zicsr0p0"
+  Tag_RISCV_priv_spec: [0-9_\"].*
+  Tag_RISCV_priv_spec_minor: [0-9_\"].*
+#...
diff --git a/gas/testsuite/gas/riscv/attribute-10.d b/gas/testsuite/gas/riscv/attribute-10.d
new file mode 100644 (file)
index 0000000..91691fd
--- /dev/null
@@ -0,0 +1,9 @@
+#as: -march-attr -march=rv32gc_zicsr -misa-spec=20191213
+#readelf: -A
+#source: empty.s
+Attribute Section: riscv
+File Attributes
+  Tag_RISCV_arch: "rv32i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0"
+  Tag_RISCV_priv_spec: [0-9_\"].*
+  Tag_RISCV_priv_spec_minor: [0-9_\"].*
+#...
index 667f21acfc1dd9c34ed76657d8bbef8e6185936d..120e3dee6ca740312de6dd3eaba3f338e1ce4a9d 100644 (file)
@@ -4,5 +4,8 @@
 Attribute Section: riscv
 File Attributes
   Tag_RISCV_arch: [a-zA-Z0-9_\"].*
+  Tag_RISCV_priv_spec: [0-9_\"].*
+  Tag_RISCV_priv_spec_minor: [0-9_\"].*
+#...
   Tag_unknown_255: "test"
   Tag_unknown_256: 123 \(0x7b\)
index df9642f1e2f9bbac5a67af6b072fbbce5680c359..c03d45986e854c6f3d796e87d4389dfdd4720878 100644 (file)
@@ -1,4 +1,4 @@
-#as: -march=rv32if
+#as: -march=rv32if -mpriv-spec=1.11
 #objdump: --dwarf=frames
 
 
diff --git a/gas/testsuite/gas/riscv/march-fail-s-with-version b/gas/testsuite/gas/riscv/march-fail-s-with-version
deleted file mode 100644 (file)
index a514d4a..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Assembler messages:
-.*: Invalid or unknown s ISA extension: 'sfoo'
\ No newline at end of file
index da5356636934b73b397e728faa45e3188506107c..d9939eb7f124853a1973cf69e987f51ebd116932 100644 (file)
@@ -1,3 +1,3 @@
-#as: -march=rv32i -mcsr-check
+#as: -march=rv32i -mcsr-check -mpriv-spec=1.11
 #source: priv-reg.s
 #warning_output: priv-reg-fail-fext.l
index 76818c812c14a192be2b3c2a6b20d8ac13e3d00d..d74863ef444a7b700bbba0c069269db8abd3484d 100644 (file)
@@ -2,3 +2,28 @@
 .*Warning: Invalid CSR `fflags' for the current ISA
 .*Warning: Invalid CSR `frm' for the current ISA
 .*Warning: Invalid CSR `fcsr' for the current ISA
+
+.*Warning: Invalid CSR `ubadaddr' for the privilege spec `1.11'
+.*Warning: Invalid CSR `sbadaddr' for the privilege spec `1.11'
+.*Warning: Invalid CSR `sptbr' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mbadaddr' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mucounteren' for the privilege spec `1.11'
+.*Warning: Invalid CSR `dscratch' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hstatus' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hedeleg' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hideleg' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hie' for the privilege spec `1.11'
+.*Warning: Invalid CSR `htvec' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hscratch' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hepc' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hcause' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hbadaddr' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hip' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mbase' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mbound' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mibase' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mibound' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mdbase' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mdbound' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mscounteren' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mhcounteren' for the privilege spec `1.11'
index ae190c053c6b44a7e01ec7019df13be6b29dd927..b0f67264f2e06452dcc0e0ba53b4d2869a476091 100644 (file)
@@ -1,3 +1,3 @@
-#as: -march=rv32if -mcsr-check
+#as: -march=rv32if -mcsr-check -mpriv-spec=1.11
 #source: priv-reg-fail-read-only-01.s
 #warning_output: priv-reg-fail-read-only-01.l
index 7e52bd7bea362be9500eca13f8cddbdf479ab576..2dc82f4ec03aeb3895435c278f7635420a8e3643 100644 (file)
 .*Warning: Read-only CSR is written `csrw marchid,a1'
 .*Warning: Read-only CSR is written `csrw mimpid,a1'
 .*Warning: Read-only CSR is written `csrw mhartid,a1'
+
+.*Warning: Invalid CSR `ubadaddr' for the privilege spec `1.11'
+.*Warning: Invalid CSR `sbadaddr' for the privilege spec `1.11'
+.*Warning: Invalid CSR `sptbr' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mbadaddr' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mucounteren' for the privilege spec `1.11'
+.*Warning: Invalid CSR `dscratch' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hstatus' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hedeleg' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hideleg' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hie' for the privilege spec `1.11'
+.*Warning: Invalid CSR `htvec' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hscratch' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hepc' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hcause' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hbadaddr' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hip' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mbase' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mbound' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mibase' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mibound' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mdbase' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mdbound' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mscounteren' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mhcounteren' for the privilege spec `1.11'
index 501a52ef518533a993c2e86883d074de4b815c0d..af0fc4e14a42b4b44fe58db96f194a76e2c156e6 100644 (file)
@@ -1,7 +1,8 @@
        .macro csr val
        csrw \val, a1
        .endm
-# 1.9.1 registers
+
+       # Supported the current priv spec 1.11.
        csr ustatus
        csr uie
        csr utvec
@@ -9,7 +10,7 @@
        csr uscratch
        csr uepc
        csr ucause
-       csr ubadaddr
+       csr utval               # Added in 1.10
        csr uip
 
        csr fflags
        csr sideleg
        csr sie
        csr stvec
+       csr scounteren          # Added in 1.10
 
        csr sscratch
        csr sepc
        csr scause
-       csr sbadaddr
+       csr stval               # Added in 1.10
        csr sip
 
-       csr sptbr
-
-       csr hstatus
-       csr hedeleg
-       csr hideleg
-       csr hie
-       csr htvec
-
-       csr hscratch
-       csr hepc
-       csr hcause
-       csr hbadaddr
-       csr hip
+       csr satp                # Added in 1.10
 
        csr mvendorid
        csr marchid
        csr mhartid
 
        csr mstatus
-       csr misa
+       csr misa                # 0xf10 in 1.9, but changed to 0x301 since 1.9.1.
        csr medeleg
        csr mideleg
        csr mie
        csr mtvec
+       csr mcounteren          # Added in 1.10
 
        csr mscratch
        csr mepc
        csr mcause
-       csr mbadaddr
+       csr mtval               # Added in 1.10
        csr mip
 
-       csr mbase
-       csr mbound
-       csr mibase
-       csr mibound
-       csr mdbase
-       csr mdbound
+       csr pmpcfg0             # Added in 1.10
+       csr pmpcfg1             # Added in 1.10
+       csr pmpcfg2             # Added in 1.10
+       csr pmpcfg3             # Added in 1.10
+       csr pmpaddr0            # Added in 1.10
+       csr pmpaddr1            # Added in 1.10
+       csr pmpaddr2            # Added in 1.10
+       csr pmpaddr3            # Added in 1.10
+       csr pmpaddr4            # Added in 1.10
+       csr pmpaddr5            # Added in 1.10
+       csr pmpaddr6            # Added in 1.10
+       csr pmpaddr7            # Added in 1.10
+       csr pmpaddr8            # Added in 1.10
+       csr pmpaddr9            # Added in 1.10
+       csr pmpaddr10           # Added in 1.10
+       csr pmpaddr11           # Added in 1.10
+       csr pmpaddr12           # Added in 1.10
+       csr pmpaddr13           # Added in 1.10
+       csr pmpaddr14           # Added in 1.10
+       csr pmpaddr15           # Added in 1.10
 
        csr mcycle
        csr minstret
        csr mhpmcounter30h
        csr mhpmcounter31h
 
-       csr mucounteren
-       csr mscounteren
-       csr mhcounteren
-
+       csr mcountinhibit       # Added in 1.11
        csr mhpmevent3
        csr mhpmevent4
        csr mhpmevent5
 
        csr dcsr
        csr dpc
-       csr dscratch
-# 1.10 registers
-       csr utval
-
-       csr scounteren
-       csr stval
-       csr satp
+       csr dscratch0           # Added in 1.11
+       csr dscratch1           # Added in 1.11
 
-       csr mcounteren
-       csr mtval
+       # Supported in previous priv spec, but dropped now.
+       csr ubadaddr            # 0x043 in 1.9.1, but the value is utval since 1.10
+       csr sbadaddr            # 0x143 in 1.9.1, but the value is stval since 1.10
+       csr sptbr               # 0x180 in 1.9.1, but the value is satp since 1.10
+       csr mbadaddr            # 0x343 in 1.9.1, but the value is mtval since 1.10
+       csr mucounteren         # 0x320 in 1.9.1, dropped in 1.10, but the value is mcountinhibit since 1.11
+       csr dscratch            # 0x7b2 in 1.10,  but the value is dscratch0 since 1.11
 
-       csr pmpcfg0
-       csr pmpcfg1
-       csr pmpcfg2
-       csr pmpcfg3
-       csr pmpaddr0
-       csr pmpaddr1
-       csr pmpaddr2
-       csr pmpaddr3
-       csr pmpaddr4
-       csr pmpaddr5
-       csr pmpaddr6
-       csr pmpaddr7
-       csr pmpaddr8
-       csr pmpaddr9
-       csr pmpaddr10
-       csr pmpaddr11
-       csr pmpaddr12
-       csr pmpaddr13
-       csr pmpaddr14
-       csr pmpaddr15
+       csr hstatus             # 0x200, dropped in 1.10
+       csr hedeleg             # 0x202, dropped in 1.10
+       csr hideleg             # 0x203, dropped in 1.10
+       csr hie                 # 0x204, dropped in 1.10
+       csr htvec               # 0x205, dropped in 1.10
+       csr hscratch            # 0x240, dropped in 1.10
+       csr hepc                # 0x241, dropped in 1.10
+       csr hcause              # 0x242, dropped in 1.10
+       csr hbadaddr            # 0x243, dropped in 1.10
+       csr hip                 # 0x244, dropped in 1.10
+       csr mbase               # 0x380, dropped in 1.10
+       csr mbound              # 0x381, dropped in 1.10
+       csr mibase              # 0x382, dropped in 1.10
+       csr mibound             # 0x383, dropped in 1.10
+       csr mdbase              # 0x384, dropped in 1.10
+       csr mdbound             # 0x385, dropped in 1.10
+       csr mscounteren         # 0x321, dropped in 1.10
+       csr mhcounteren         # 0x322, dropped in 1.10
index 3c4715f04829cc892a30ab4881e5e3f3f03a8140..ec206e4d6d1bcb620fe8c46bed23e807147c1dad 100644 (file)
@@ -1,3 +1,3 @@
-#as: -march=rv32if -mcsr-check
+#as: -march=rv32if -mcsr-check -mpriv-spec=1.11
 #source: priv-reg-fail-read-only-02.s
 #warning_output: priv-reg-fail-read-only-02.l
index d71b2615c5f1463f347f9a92d070f664f9db4890..eced438ea47ffdbb0c829efd99aadee0c75c5e68 100644 (file)
@@ -1,3 +1,3 @@
-#as: -march=rv64if -mcsr-check
+#as: -march=rv64if -mcsr-check -mpriv-spec=1.11
 #source: priv-reg.s
 #warning_output: priv-reg-fail-rv32-only.l
index fa5a1b4a4b401fb10aae84f99faa7e85e6d8ff84..19f13a0ee5cce4d072108549d586197ac6ecf6c8 100644 (file)
 .*Warning: Invalid CSR `mhpmcounter29h' for the current ISA
 .*Warning: Invalid CSR `mhpmcounter30h' for the current ISA
 .*Warning: Invalid CSR `mhpmcounter31h' for the current ISA
+
+.*Warning: Invalid CSR `ubadaddr' for the privilege spec `1.11'
+.*Warning: Invalid CSR `sbadaddr' for the privilege spec `1.11'
+.*Warning: Invalid CSR `sptbr' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mbadaddr' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mucounteren' for the privilege spec `1.11'
+.*Warning: Invalid CSR `dscratch' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hstatus' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hedeleg' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hideleg' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hie' for the privilege spec `1.11'
+.*Warning: Invalid CSR `htvec' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hscratch' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hepc' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hcause' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hbadaddr' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hip' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mbase' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mbound' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mibase' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mibound' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mdbase' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mdbound' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mscounteren' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mhcounteren' for the privilege spec `1.11'
diff --git a/gas/testsuite/gas/riscv/priv-reg-fail-version-1p10.d b/gas/testsuite/gas/riscv/priv-reg-fail-version-1p10.d
new file mode 100644 (file)
index 0000000..07cf05a
--- /dev/null
@@ -0,0 +1,11 @@
+#as: -march=rv32if -mcsr-check -mpriv-spec=1.10 -march-attr
+#source: priv-reg.s
+#warning_output: priv-reg-fail-version-1p10.l
+#readelf: -A
+
+Attribute Section: riscv
+File Attributes
+  Tag_RISCV_arch: [a-zA-Z0-9_\"].*
+  Tag_RISCV_priv_spec: 1
+  Tag_RISCV_priv_spec_minor: 10
+#...
diff --git a/gas/testsuite/gas/riscv/priv-reg-fail-version-1p10.l b/gas/testsuite/gas/riscv/priv-reg-fail-version-1p10.l
new file mode 100644 (file)
index 0000000..4146174
--- /dev/null
@@ -0,0 +1,27 @@
+.*Assembler messages:
+.*Warning: Invalid CSR `mcountinhibit' for the privilege spec `1.10'
+.*Warning: Invalid CSR `dscratch0' for the privilege spec `1.10'
+.*Warning: Invalid CSR `dscratch1' for the privilege spec `1.10'
+.*Warning: Invalid CSR `ubadaddr' for the privilege spec `1.10'
+.*Warning: Invalid CSR `sbadaddr' for the privilege spec `1.10'
+.*Warning: Invalid CSR `sptbr' for the privilege spec `1.10'
+.*Warning: Invalid CSR `mbadaddr' for the privilege spec `1.10'
+.*Warning: Invalid CSR `mucounteren' for the privilege spec `1.10'
+.*Warning: Invalid CSR `hstatus' for the privilege spec `1.10'
+.*Warning: Invalid CSR `hedeleg' for the privilege spec `1.10'
+.*Warning: Invalid CSR `hideleg' for the privilege spec `1.10'
+.*Warning: Invalid CSR `hie' for the privilege spec `1.10'
+.*Warning: Invalid CSR `htvec' for the privilege spec `1.10'
+.*Warning: Invalid CSR `hscratch' for the privilege spec `1.10'
+.*Warning: Invalid CSR `hepc' for the privilege spec `1.10'
+.*Warning: Invalid CSR `hcause' for the privilege spec `1.10'
+.*Warning: Invalid CSR `hbadaddr' for the privilege spec `1.10'
+.*Warning: Invalid CSR `hip' for the privilege spec `1.10'
+.*Warning: Invalid CSR `mbase' for the privilege spec `1.10'
+.*Warning: Invalid CSR `mbound' for the privilege spec `1.10'
+.*Warning: Invalid CSR `mibase' for the privilege spec `1.10'
+.*Warning: Invalid CSR `mibound' for the privilege spec `1.10'
+.*Warning: Invalid CSR `mdbase' for the privilege spec `1.10'
+.*Warning: Invalid CSR `mdbound' for the privilege spec `1.10'
+.*Warning: Invalid CSR `mscounteren' for the privilege spec `1.10'
+.*Warning: Invalid CSR `mhcounteren' for the privilege spec `1.10'
diff --git a/gas/testsuite/gas/riscv/priv-reg-fail-version-1p11.d b/gas/testsuite/gas/riscv/priv-reg-fail-version-1p11.d
new file mode 100644 (file)
index 0000000..bf4b1db
--- /dev/null
@@ -0,0 +1,11 @@
+#as: -march=rv32if -mcsr-check -mpriv-spec=1.11 -march-attr
+#source: priv-reg.s
+#warning_output: priv-reg-fail-version-1p11.l
+#readelf: -A
+
+Attribute Section: riscv
+File Attributes
+  Tag_RISCV_arch: [a-zA-Z0-9_\"].*
+  Tag_RISCV_priv_spec: 1
+  Tag_RISCV_priv_spec_minor: 11
+#...
diff --git a/gas/testsuite/gas/riscv/priv-reg-fail-version-1p11.l b/gas/testsuite/gas/riscv/priv-reg-fail-version-1p11.l
new file mode 100644 (file)
index 0000000..eadcb5c
--- /dev/null
@@ -0,0 +1,25 @@
+.*Assembler messages:
+.*Warning: Invalid CSR `ubadaddr' for the privilege spec `1.11'
+.*Warning: Invalid CSR `sbadaddr' for the privilege spec `1.11'
+.*Warning: Invalid CSR `sptbr' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mbadaddr' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mucounteren' for the privilege spec `1.11'
+.*Warning: Invalid CSR `dscratch' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hstatus' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hedeleg' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hideleg' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hie' for the privilege spec `1.11'
+.*Warning: Invalid CSR `htvec' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hscratch' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hepc' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hcause' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hbadaddr' for the privilege spec `1.11'
+.*Warning: Invalid CSR `hip' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mbase' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mbound' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mibase' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mibound' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mdbase' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mdbound' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mscounteren' for the privilege spec `1.11'
+.*Warning: Invalid CSR `mhcounteren' for the privilege spec `1.11'
diff --git a/gas/testsuite/gas/riscv/priv-reg-fail-version-1p9.d b/gas/testsuite/gas/riscv/priv-reg-fail-version-1p9.d
new file mode 100644 (file)
index 0000000..c914334
--- /dev/null
@@ -0,0 +1,11 @@
+#as: -march=rv32if -mcsr-check -mpriv-spec=1.9 -march-attr
+#source: priv-reg.s
+#warning_output: priv-reg-fail-version-1p9.l
+#readelf: -A
+
+Attribute Section: riscv
+File Attributes
+  Tag_RISCV_arch: [a-zA-Z0-9_\"].*
+  Tag_RISCV_priv_spec: 1
+  Tag_RISCV_priv_spec_minor: 9
+#...
diff --git a/gas/testsuite/gas/riscv/priv-reg-fail-version-1p9.l b/gas/testsuite/gas/riscv/priv-reg-fail-version-1p9.l
new file mode 100644 (file)
index 0000000..d7cee80
--- /dev/null
@@ -0,0 +1,30 @@
+.*Assembler messages:
+.*Warning: Invalid CSR `utval' for the privilege spec `1.9'
+.*Warning: Invalid CSR `scounteren' for the privilege spec `1.9'
+.*Warning: Invalid CSR `stval' for the privilege spec `1.9'
+.*Warning: Invalid CSR `satp' for the privilege spec `1.9'
+.*Warning: Invalid CSR `mcounteren' for the privilege spec `1.9'
+.*Warning: Invalid CSR `mtval' for the privilege spec `1.9'
+.*Warning: Invalid CSR `pmpcfg0' for the privilege spec `1.9'
+.*Warning: Invalid CSR `pmpcfg1' for the privilege spec `1.9'
+.*Warning: Invalid CSR `pmpcfg2' for the privilege spec `1.9'
+.*Warning: Invalid CSR `pmpcfg3' for the privilege spec `1.9'
+.*Warning: Invalid CSR `pmpaddr0' for the privilege spec `1.9'
+.*Warning: Invalid CSR `pmpaddr1' for the privilege spec `1.9'
+.*Warning: Invalid CSR `pmpaddr2' for the privilege spec `1.9'
+.*Warning: Invalid CSR `pmpaddr3' for the privilege spec `1.9'
+.*Warning: Invalid CSR `pmpaddr4' for the privilege spec `1.9'
+.*Warning: Invalid CSR `pmpaddr5' for the privilege spec `1.9'
+.*Warning: Invalid CSR `pmpaddr6' for the privilege spec `1.9'
+.*Warning: Invalid CSR `pmpaddr7' for the privilege spec `1.9'
+.*Warning: Invalid CSR `pmpaddr8' for the privilege spec `1.9'
+.*Warning: Invalid CSR `pmpaddr9' for the privilege spec `1.9'
+.*Warning: Invalid CSR `pmpaddr10' for the privilege spec `1.9'
+.*Warning: Invalid CSR `pmpaddr11' for the privilege spec `1.9'
+.*Warning: Invalid CSR `pmpaddr12' for the privilege spec `1.9'
+.*Warning: Invalid CSR `pmpaddr13' for the privilege spec `1.9'
+.*Warning: Invalid CSR `pmpaddr14' for the privilege spec `1.9'
+.*Warning: Invalid CSR `pmpaddr15' for the privilege spec `1.9'
+.*Warning: Invalid CSR `mcountinhibit' for the privilege spec `1.9'
+.*Warning: Invalid CSR `dscratch0' for the privilege spec `1.9'
+.*Warning: Invalid CSR `dscratch1' for the privilege spec `1.9'
diff --git a/gas/testsuite/gas/riscv/priv-reg-fail-version-1p9p1.d b/gas/testsuite/gas/riscv/priv-reg-fail-version-1p9p1.d
new file mode 100644 (file)
index 0000000..e2c33d8
--- /dev/null
@@ -0,0 +1,12 @@
+#as: -march=rv32if -mcsr-check -mpriv-spec=1.9.1 -march-attr
+#source: priv-reg.s
+#warning_output: priv-reg-fail-version-1p9p1.l
+#readelf: -A
+
+Attribute Section: riscv
+File Attributes
+  Tag_RISCV_arch: [a-zA-Z0-9_\"].*
+  Tag_RISCV_priv_spec: 1
+  Tag_RISCV_priv_spec_minor: 9
+  Tag_RISCV_priv_spec_revision: 1
+#...
diff --git a/gas/testsuite/gas/riscv/priv-reg-fail-version-1p9p1.l b/gas/testsuite/gas/riscv/priv-reg-fail-version-1p9p1.l
new file mode 100644 (file)
index 0000000..907ed73
--- /dev/null
@@ -0,0 +1,30 @@
+.*Assembler messages:
+.*Warning: Invalid CSR `utval' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `scounteren' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `stval' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `satp' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `mcounteren' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `mtval' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `pmpcfg0' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `pmpcfg1' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `pmpcfg2' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `pmpcfg3' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `pmpaddr0' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `pmpaddr1' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `pmpaddr2' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `pmpaddr3' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `pmpaddr4' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `pmpaddr5' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `pmpaddr6' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `pmpaddr7' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `pmpaddr8' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `pmpaddr9' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `pmpaddr10' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `pmpaddr11' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `pmpaddr12' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `pmpaddr13' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `pmpaddr14' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `pmpaddr15' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `mcountinhibit' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `dscratch0' for the privilege spec `1.9.1'
+.*Warning: Invalid CSR `dscratch1' for the privilege spec `1.9.1'
diff --git a/gas/testsuite/gas/riscv/priv-reg-version-1p10.d b/gas/testsuite/gas/riscv/priv-reg-version-1p10.d
new file mode 100644 (file)
index 0000000..0071f75
--- /dev/null
@@ -0,0 +1,257 @@
+#as: -march=rv32if -mpriv-spec=1.10
+#source: priv-reg.s
+#objdump: -dr -Mpriv-spec=1.10
+
+.*:[   ]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <.text>:
+[      ]+[0-9a-f]+:[   ]+00002573[     ]+csrr[         ]+a0,ustatus
+[      ]+[0-9a-f]+:[   ]+00402573[     ]+csrr[         ]+a0,uie
+[      ]+[0-9a-f]+:[   ]+00502573[     ]+csrr[         ]+a0,utvec
+[      ]+[0-9a-f]+:[   ]+04002573[     ]+csrr[         ]+a0,uscratch
+[      ]+[0-9a-f]+:[   ]+04102573[     ]+csrr[         ]+a0,uepc
+[      ]+[0-9a-f]+:[   ]+04202573[     ]+csrr[         ]+a0,ucause
+[      ]+[0-9a-f]+:[   ]+04302573[     ]+csrr[         ]+a0,utval
+[      ]+[0-9a-f]+:[   ]+04402573[     ]+csrr[         ]+a0,uip
+[      ]+[0-9a-f]+:[   ]+00102573[     ]+frflags[      ]+a0
+[      ]+[0-9a-f]+:[   ]+00202573[     ]+frrm[         ]+a0
+[      ]+[0-9a-f]+:[   ]+00302573[     ]+frcsr[        ]+a0
+[      ]+[0-9a-f]+:[   ]+c0002573[     ]+rdcycle[      ]+a0
+[      ]+[0-9a-f]+:[   ]+c0102573[     ]+rdtime[       ]+a0
+[      ]+[0-9a-f]+:[   ]+c0202573[     ]+rdinstret[    ]+a0
+[      ]+[0-9a-f]+:[   ]+c0302573[     ]+csrr[         ]+a0,hpmcounter3
+[      ]+[0-9a-f]+:[   ]+c0402573[     ]+csrr[         ]+a0,hpmcounter4
+[      ]+[0-9a-f]+:[   ]+c0502573[     ]+csrr[         ]+a0,hpmcounter5
+[      ]+[0-9a-f]+:[   ]+c0602573[     ]+csrr[         ]+a0,hpmcounter6
+[      ]+[0-9a-f]+:[   ]+c0702573[     ]+csrr[         ]+a0,hpmcounter7
+[      ]+[0-9a-f]+:[   ]+c0802573[     ]+csrr[         ]+a0,hpmcounter8
+[      ]+[0-9a-f]+:[   ]+c0902573[     ]+csrr[         ]+a0,hpmcounter9
+[      ]+[0-9a-f]+:[   ]+c0a02573[     ]+csrr[         ]+a0,hpmcounter10
+[      ]+[0-9a-f]+:[   ]+c0b02573[     ]+csrr[         ]+a0,hpmcounter11
+[      ]+[0-9a-f]+:[   ]+c0c02573[     ]+csrr[         ]+a0,hpmcounter12
+[      ]+[0-9a-f]+:[   ]+c0d02573[     ]+csrr[         ]+a0,hpmcounter13
+[      ]+[0-9a-f]+:[   ]+c0e02573[     ]+csrr[         ]+a0,hpmcounter14
+[      ]+[0-9a-f]+:[   ]+c0f02573[     ]+csrr[         ]+a0,hpmcounter15
+[      ]+[0-9a-f]+:[   ]+c1002573[     ]+csrr[         ]+a0,hpmcounter16
+[      ]+[0-9a-f]+:[   ]+c1102573[     ]+csrr[         ]+a0,hpmcounter17
+[      ]+[0-9a-f]+:[   ]+c1202573[     ]+csrr[         ]+a0,hpmcounter18
+[      ]+[0-9a-f]+:[   ]+c1302573[     ]+csrr[         ]+a0,hpmcounter19
+[      ]+[0-9a-f]+:[   ]+c1402573[     ]+csrr[         ]+a0,hpmcounter20
+[      ]+[0-9a-f]+:[   ]+c1502573[     ]+csrr[         ]+a0,hpmcounter21
+[      ]+[0-9a-f]+:[   ]+c1602573[     ]+csrr[         ]+a0,hpmcounter22
+[      ]+[0-9a-f]+:[   ]+c1702573[     ]+csrr[         ]+a0,hpmcounter23
+[      ]+[0-9a-f]+:[   ]+c1802573[     ]+csrr[         ]+a0,hpmcounter24
+[      ]+[0-9a-f]+:[   ]+c1902573[     ]+csrr[         ]+a0,hpmcounter25
+[      ]+[0-9a-f]+:[   ]+c1a02573[     ]+csrr[         ]+a0,hpmcounter26
+[      ]+[0-9a-f]+:[   ]+c1b02573[     ]+csrr[         ]+a0,hpmcounter27
+[      ]+[0-9a-f]+:[   ]+c1c02573[     ]+csrr[         ]+a0,hpmcounter28
+[      ]+[0-9a-f]+:[   ]+c1d02573[     ]+csrr[         ]+a0,hpmcounter29
+[      ]+[0-9a-f]+:[   ]+c1e02573[     ]+csrr[         ]+a0,hpmcounter30
+[      ]+[0-9a-f]+:[   ]+c1f02573[     ]+csrr[         ]+a0,hpmcounter31
+[      ]+[0-9a-f]+:[   ]+c8002573[     ]+rdcycleh[     ]+a0
+[      ]+[0-9a-f]+:[   ]+c8102573[     ]+rdtimeh[      ]+a0
+[      ]+[0-9a-f]+:[   ]+c8202573[     ]+rdinstreth[   ]+a0
+[      ]+[0-9a-f]+:[   ]+c8302573[     ]+csrr[         ]+a0,hpmcounter3h
+[      ]+[0-9a-f]+:[   ]+c8402573[     ]+csrr[         ]+a0,hpmcounter4h
+[      ]+[0-9a-f]+:[   ]+c8502573[     ]+csrr[         ]+a0,hpmcounter5h
+[      ]+[0-9a-f]+:[   ]+c8602573[     ]+csrr[         ]+a0,hpmcounter6h
+[      ]+[0-9a-f]+:[   ]+c8702573[     ]+csrr[         ]+a0,hpmcounter7h
+[      ]+[0-9a-f]+:[   ]+c8802573[     ]+csrr[         ]+a0,hpmcounter8h
+[      ]+[0-9a-f]+:[   ]+c8902573[     ]+csrr[         ]+a0,hpmcounter9h
+[      ]+[0-9a-f]+:[   ]+c8a02573[     ]+csrr[         ]+a0,hpmcounter10h
+[      ]+[0-9a-f]+:[   ]+c8b02573[     ]+csrr[         ]+a0,hpmcounter11h
+[      ]+[0-9a-f]+:[   ]+c8c02573[     ]+csrr[         ]+a0,hpmcounter12h
+[      ]+[0-9a-f]+:[   ]+c8d02573[     ]+csrr[         ]+a0,hpmcounter13h
+[      ]+[0-9a-f]+:[   ]+c8e02573[     ]+csrr[         ]+a0,hpmcounter14h
+[      ]+[0-9a-f]+:[   ]+c8f02573[     ]+csrr[         ]+a0,hpmcounter15h
+[      ]+[0-9a-f]+:[   ]+c9002573[     ]+csrr[         ]+a0,hpmcounter16h
+[      ]+[0-9a-f]+:[   ]+c9102573[     ]+csrr[         ]+a0,hpmcounter17h
+[      ]+[0-9a-f]+:[   ]+c9202573[     ]+csrr[         ]+a0,hpmcounter18h
+[      ]+[0-9a-f]+:[   ]+c9302573[     ]+csrr[         ]+a0,hpmcounter19h
+[      ]+[0-9a-f]+:[   ]+c9402573[     ]+csrr[         ]+a0,hpmcounter20h
+[      ]+[0-9a-f]+:[   ]+c9502573[     ]+csrr[         ]+a0,hpmcounter21h
+[      ]+[0-9a-f]+:[   ]+c9602573[     ]+csrr[         ]+a0,hpmcounter22h
+[      ]+[0-9a-f]+:[   ]+c9702573[     ]+csrr[         ]+a0,hpmcounter23h
+[      ]+[0-9a-f]+:[   ]+c9802573[     ]+csrr[         ]+a0,hpmcounter24h
+[      ]+[0-9a-f]+:[   ]+c9902573[     ]+csrr[         ]+a0,hpmcounter25h
+[      ]+[0-9a-f]+:[   ]+c9a02573[     ]+csrr[         ]+a0,hpmcounter26h
+[      ]+[0-9a-f]+:[   ]+c9b02573[     ]+csrr[         ]+a0,hpmcounter27h
+[      ]+[0-9a-f]+:[   ]+c9c02573[     ]+csrr[         ]+a0,hpmcounter28h
+[      ]+[0-9a-f]+:[   ]+c9d02573[     ]+csrr[         ]+a0,hpmcounter29h
+[      ]+[0-9a-f]+:[   ]+c9e02573[     ]+csrr[         ]+a0,hpmcounter30h
+[      ]+[0-9a-f]+:[   ]+c9f02573[     ]+csrr[         ]+a0,hpmcounter31h
+[      ]+[0-9a-f]+:[   ]+10002573[     ]+csrr[         ]+a0,sstatus
+[      ]+[0-9a-f]+:[   ]+10202573[     ]+csrr[         ]+a0,sedeleg
+[      ]+[0-9a-f]+:[   ]+10302573[     ]+csrr[         ]+a0,sideleg
+[      ]+[0-9a-f]+:[   ]+10402573[     ]+csrr[         ]+a0,sie
+[      ]+[0-9a-f]+:[   ]+10502573[     ]+csrr[         ]+a0,stvec
+[      ]+[0-9a-f]+:[   ]+10602573[     ]+csrr[         ]+a0,scounteren
+[      ]+[0-9a-f]+:[   ]+14002573[     ]+csrr[         ]+a0,sscratch
+[      ]+[0-9a-f]+:[   ]+14102573[     ]+csrr[         ]+a0,sepc
+[      ]+[0-9a-f]+:[   ]+14202573[     ]+csrr[         ]+a0,scause
+[      ]+[0-9a-f]+:[   ]+14302573[     ]+csrr[         ]+a0,stval
+[      ]+[0-9a-f]+:[   ]+14402573[     ]+csrr[         ]+a0,sip
+[      ]+[0-9a-f]+:[   ]+18002573[     ]+csrr[         ]+a0,satp
+[      ]+[0-9a-f]+:[   ]+f1102573[     ]+csrr[         ]+a0,mvendorid
+[      ]+[0-9a-f]+:[   ]+f1202573[     ]+csrr[         ]+a0,marchid
+[      ]+[0-9a-f]+:[   ]+f1302573[     ]+csrr[         ]+a0,mimpid
+[      ]+[0-9a-f]+:[   ]+f1402573[     ]+csrr[         ]+a0,mhartid
+[      ]+[0-9a-f]+:[   ]+30002573[     ]+csrr[         ]+a0,mstatus
+[      ]+[0-9a-f]+:[   ]+30102573[     ]+csrr[         ]+a0,misa
+[      ]+[0-9a-f]+:[   ]+30202573[     ]+csrr[         ]+a0,medeleg
+[      ]+[0-9a-f]+:[   ]+30302573[     ]+csrr[         ]+a0,mideleg
+[      ]+[0-9a-f]+:[   ]+30402573[     ]+csrr[         ]+a0,mie
+[      ]+[0-9a-f]+:[   ]+30502573[     ]+csrr[         ]+a0,mtvec
+[      ]+[0-9a-f]+:[   ]+30602573[     ]+csrr[         ]+a0,mcounteren
+[      ]+[0-9a-f]+:[   ]+34002573[     ]+csrr[         ]+a0,mscratch
+[      ]+[0-9a-f]+:[   ]+34102573[     ]+csrr[         ]+a0,mepc
+[      ]+[0-9a-f]+:[   ]+34202573[     ]+csrr[         ]+a0,mcause
+[      ]+[0-9a-f]+:[   ]+34302573[     ]+csrr[         ]+a0,mtval
+[      ]+[0-9a-f]+:[   ]+34402573[     ]+csrr[         ]+a0,mip
+[      ]+[0-9a-f]+:[   ]+3a002573[     ]+csrr[         ]+a0,pmpcfg0
+[      ]+[0-9a-f]+:[   ]+3a102573[     ]+csrr[         ]+a0,pmpcfg1
+[      ]+[0-9a-f]+:[   ]+3a202573[     ]+csrr[         ]+a0,pmpcfg2
+[      ]+[0-9a-f]+:[   ]+3a302573[     ]+csrr[         ]+a0,pmpcfg3
+[      ]+[0-9a-f]+:[   ]+3b002573[     ]+csrr[         ]+a0,pmpaddr0
+[      ]+[0-9a-f]+:[   ]+3b102573[     ]+csrr[         ]+a0,pmpaddr1
+[      ]+[0-9a-f]+:[   ]+3b202573[     ]+csrr[         ]+a0,pmpaddr2
+[      ]+[0-9a-f]+:[   ]+3b302573[     ]+csrr[         ]+a0,pmpaddr3
+[      ]+[0-9a-f]+:[   ]+3b402573[     ]+csrr[         ]+a0,pmpaddr4
+[      ]+[0-9a-f]+:[   ]+3b502573[     ]+csrr[         ]+a0,pmpaddr5
+[      ]+[0-9a-f]+:[   ]+3b602573[     ]+csrr[         ]+a0,pmpaddr6
+[      ]+[0-9a-f]+:[   ]+3b702573[     ]+csrr[         ]+a0,pmpaddr7
+[      ]+[0-9a-f]+:[   ]+3b802573[     ]+csrr[         ]+a0,pmpaddr8
+[      ]+[0-9a-f]+:[   ]+3b902573[     ]+csrr[         ]+a0,pmpaddr9
+[      ]+[0-9a-f]+:[   ]+3ba02573[     ]+csrr[         ]+a0,pmpaddr10
+[      ]+[0-9a-f]+:[   ]+3bb02573[     ]+csrr[         ]+a0,pmpaddr11
+[      ]+[0-9a-f]+:[   ]+3bc02573[     ]+csrr[         ]+a0,pmpaddr12
+[      ]+[0-9a-f]+:[   ]+3bd02573[     ]+csrr[         ]+a0,pmpaddr13
+[      ]+[0-9a-f]+:[   ]+3be02573[     ]+csrr[         ]+a0,pmpaddr14
+[      ]+[0-9a-f]+:[   ]+3bf02573[     ]+csrr[         ]+a0,pmpaddr15
+[      ]+[0-9a-f]+:[   ]+b0002573[     ]+csrr[         ]+a0,mcycle
+[      ]+[0-9a-f]+:[   ]+b0202573[     ]+csrr[         ]+a0,minstret
+[      ]+[0-9a-f]+:[   ]+b0302573[     ]+csrr[         ]+a0,mhpmcounter3
+[      ]+[0-9a-f]+:[   ]+b0402573[     ]+csrr[         ]+a0,mhpmcounter4
+[      ]+[0-9a-f]+:[   ]+b0502573[     ]+csrr[         ]+a0,mhpmcounter5
+[      ]+[0-9a-f]+:[   ]+b0602573[     ]+csrr[         ]+a0,mhpmcounter6
+[      ]+[0-9a-f]+:[   ]+b0702573[     ]+csrr[         ]+a0,mhpmcounter7
+[      ]+[0-9a-f]+:[   ]+b0802573[     ]+csrr[         ]+a0,mhpmcounter8
+[      ]+[0-9a-f]+:[   ]+b0902573[     ]+csrr[         ]+a0,mhpmcounter9
+[      ]+[0-9a-f]+:[   ]+b0a02573[     ]+csrr[         ]+a0,mhpmcounter10
+[      ]+[0-9a-f]+:[   ]+b0b02573[     ]+csrr[         ]+a0,mhpmcounter11
+[      ]+[0-9a-f]+:[   ]+b0c02573[     ]+csrr[         ]+a0,mhpmcounter12
+[      ]+[0-9a-f]+:[   ]+b0d02573[     ]+csrr[         ]+a0,mhpmcounter13
+[      ]+[0-9a-f]+:[   ]+b0e02573[     ]+csrr[         ]+a0,mhpmcounter14
+[      ]+[0-9a-f]+:[   ]+b0f02573[     ]+csrr[         ]+a0,mhpmcounter15
+[      ]+[0-9a-f]+:[   ]+b1002573[     ]+csrr[         ]+a0,mhpmcounter16
+[      ]+[0-9a-f]+:[   ]+b1102573[     ]+csrr[         ]+a0,mhpmcounter17
+[      ]+[0-9a-f]+:[   ]+b1202573[     ]+csrr[         ]+a0,mhpmcounter18
+[      ]+[0-9a-f]+:[   ]+b1302573[     ]+csrr[         ]+a0,mhpmcounter19
+[      ]+[0-9a-f]+:[   ]+b1402573[     ]+csrr[         ]+a0,mhpmcounter20
+[      ]+[0-9a-f]+:[   ]+b1502573[     ]+csrr[         ]+a0,mhpmcounter21
+[      ]+[0-9a-f]+:[   ]+b1602573[     ]+csrr[         ]+a0,mhpmcounter22
+[      ]+[0-9a-f]+:[   ]+b1702573[     ]+csrr[         ]+a0,mhpmcounter23
+[      ]+[0-9a-f]+:[   ]+b1802573[     ]+csrr[         ]+a0,mhpmcounter24
+[      ]+[0-9a-f]+:[   ]+b1902573[     ]+csrr[         ]+a0,mhpmcounter25
+[      ]+[0-9a-f]+:[   ]+b1a02573[     ]+csrr[         ]+a0,mhpmcounter26
+[      ]+[0-9a-f]+:[   ]+b1b02573[     ]+csrr[         ]+a0,mhpmcounter27
+[      ]+[0-9a-f]+:[   ]+b1c02573[     ]+csrr[         ]+a0,mhpmcounter28
+[      ]+[0-9a-f]+:[   ]+b1d02573[     ]+csrr[         ]+a0,mhpmcounter29
+[      ]+[0-9a-f]+:[   ]+b1e02573[     ]+csrr[         ]+a0,mhpmcounter30
+[      ]+[0-9a-f]+:[   ]+b1f02573[     ]+csrr[         ]+a0,mhpmcounter31
+[      ]+[0-9a-f]+:[   ]+b8002573[     ]+csrr[         ]+a0,mcycleh
+[      ]+[0-9a-f]+:[   ]+b8202573[     ]+csrr[         ]+a0,minstreth
+[      ]+[0-9a-f]+:[   ]+b8302573[     ]+csrr[         ]+a0,mhpmcounter3h
+[      ]+[0-9a-f]+:[   ]+b8402573[     ]+csrr[         ]+a0,mhpmcounter4h
+[      ]+[0-9a-f]+:[   ]+b8502573[     ]+csrr[         ]+a0,mhpmcounter5h
+[      ]+[0-9a-f]+:[   ]+b8602573[     ]+csrr[         ]+a0,mhpmcounter6h
+[      ]+[0-9a-f]+:[   ]+b8702573[     ]+csrr[         ]+a0,mhpmcounter7h
+[      ]+[0-9a-f]+:[   ]+b8802573[     ]+csrr[         ]+a0,mhpmcounter8h
+[      ]+[0-9a-f]+:[   ]+b8902573[     ]+csrr[         ]+a0,mhpmcounter9h
+[      ]+[0-9a-f]+:[   ]+b8a02573[     ]+csrr[         ]+a0,mhpmcounter10h
+[      ]+[0-9a-f]+:[   ]+b8b02573[     ]+csrr[         ]+a0,mhpmcounter11h
+[      ]+[0-9a-f]+:[   ]+b8c02573[     ]+csrr[         ]+a0,mhpmcounter12h
+[      ]+[0-9a-f]+:[   ]+b8d02573[     ]+csrr[         ]+a0,mhpmcounter13h
+[      ]+[0-9a-f]+:[   ]+b8e02573[     ]+csrr[         ]+a0,mhpmcounter14h
+[      ]+[0-9a-f]+:[   ]+b8f02573[     ]+csrr[         ]+a0,mhpmcounter15h
+[      ]+[0-9a-f]+:[   ]+b9002573[     ]+csrr[         ]+a0,mhpmcounter16h
+[      ]+[0-9a-f]+:[   ]+b9102573[     ]+csrr[         ]+a0,mhpmcounter17h
+[      ]+[0-9a-f]+:[   ]+b9202573[     ]+csrr[         ]+a0,mhpmcounter18h
+[      ]+[0-9a-f]+:[   ]+b9302573[     ]+csrr[         ]+a0,mhpmcounter19h
+[      ]+[0-9a-f]+:[   ]+b9402573[     ]+csrr[         ]+a0,mhpmcounter20h
+[      ]+[0-9a-f]+:[   ]+b9502573[     ]+csrr[         ]+a0,mhpmcounter21h
+[      ]+[0-9a-f]+:[   ]+b9602573[     ]+csrr[         ]+a0,mhpmcounter22h
+[      ]+[0-9a-f]+:[   ]+b9702573[     ]+csrr[         ]+a0,mhpmcounter23h
+[      ]+[0-9a-f]+:[   ]+b9802573[     ]+csrr[         ]+a0,mhpmcounter24h
+[      ]+[0-9a-f]+:[   ]+b9902573[     ]+csrr[         ]+a0,mhpmcounter25h
+[      ]+[0-9a-f]+:[   ]+b9a02573[     ]+csrr[         ]+a0,mhpmcounter26h
+[      ]+[0-9a-f]+:[   ]+b9b02573[     ]+csrr[         ]+a0,mhpmcounter27h
+[      ]+[0-9a-f]+:[   ]+b9c02573[     ]+csrr[         ]+a0,mhpmcounter28h
+[      ]+[0-9a-f]+:[   ]+b9d02573[     ]+csrr[         ]+a0,mhpmcounter29h
+[      ]+[0-9a-f]+:[   ]+b9e02573[     ]+csrr[         ]+a0,mhpmcounter30h
+[      ]+[0-9a-f]+:[   ]+b9f02573[     ]+csrr[         ]+a0,mhpmcounter31h
+[      ]+[0-9a-f]+:[   ]+32002573[     ]+csrr[         ]+a0,0x320
+[      ]+[0-9a-f]+:[   ]+32302573[     ]+csrr[         ]+a0,mhpmevent3
+[      ]+[0-9a-f]+:[   ]+32402573[     ]+csrr[         ]+a0,mhpmevent4
+[      ]+[0-9a-f]+:[   ]+32502573[     ]+csrr[         ]+a0,mhpmevent5
+[      ]+[0-9a-f]+:[   ]+32602573[     ]+csrr[         ]+a0,mhpmevent6
+[      ]+[0-9a-f]+:[   ]+32702573[     ]+csrr[         ]+a0,mhpmevent7
+[      ]+[0-9a-f]+:[   ]+32802573[     ]+csrr[         ]+a0,mhpmevent8
+[      ]+[0-9a-f]+:[   ]+32902573[     ]+csrr[         ]+a0,mhpmevent9
+[      ]+[0-9a-f]+:[   ]+32a02573[     ]+csrr[         ]+a0,mhpmevent10
+[      ]+[0-9a-f]+:[   ]+32b02573[     ]+csrr[         ]+a0,mhpmevent11
+[      ]+[0-9a-f]+:[   ]+32c02573[     ]+csrr[         ]+a0,mhpmevent12
+[      ]+[0-9a-f]+:[   ]+32d02573[     ]+csrr[         ]+a0,mhpmevent13
+[      ]+[0-9a-f]+:[   ]+32e02573[     ]+csrr[         ]+a0,mhpmevent14
+[      ]+[0-9a-f]+:[   ]+32f02573[     ]+csrr[         ]+a0,mhpmevent15
+[      ]+[0-9a-f]+:[   ]+33002573[     ]+csrr[         ]+a0,mhpmevent16
+[      ]+[0-9a-f]+:[   ]+33102573[     ]+csrr[         ]+a0,mhpmevent17
+[      ]+[0-9a-f]+:[   ]+33202573[     ]+csrr[         ]+a0,mhpmevent18
+[      ]+[0-9a-f]+:[   ]+33302573[     ]+csrr[         ]+a0,mhpmevent19
+[      ]+[0-9a-f]+:[   ]+33402573[     ]+csrr[         ]+a0,mhpmevent20
+[      ]+[0-9a-f]+:[   ]+33502573[     ]+csrr[         ]+a0,mhpmevent21
+[      ]+[0-9a-f]+:[   ]+33602573[     ]+csrr[         ]+a0,mhpmevent22
+[      ]+[0-9a-f]+:[   ]+33702573[     ]+csrr[         ]+a0,mhpmevent23
+[      ]+[0-9a-f]+:[   ]+33802573[     ]+csrr[         ]+a0,mhpmevent24
+[      ]+[0-9a-f]+:[   ]+33902573[     ]+csrr[         ]+a0,mhpmevent25
+[      ]+[0-9a-f]+:[   ]+33a02573[     ]+csrr[         ]+a0,mhpmevent26
+[      ]+[0-9a-f]+:[   ]+33b02573[     ]+csrr[         ]+a0,mhpmevent27
+[      ]+[0-9a-f]+:[   ]+33c02573[     ]+csrr[         ]+a0,mhpmevent28
+[      ]+[0-9a-f]+:[   ]+33d02573[     ]+csrr[         ]+a0,mhpmevent29
+[      ]+[0-9a-f]+:[   ]+33e02573[     ]+csrr[         ]+a0,mhpmevent30
+[      ]+[0-9a-f]+:[   ]+33f02573[     ]+csrr[         ]+a0,mhpmevent31
+[      ]+[0-9a-f]+:[   ]+7a002573[     ]+csrr[         ]+a0,tselect
+[      ]+[0-9a-f]+:[   ]+7a102573[     ]+csrr[         ]+a0,tdata1
+[      ]+[0-9a-f]+:[   ]+7a202573[     ]+csrr[         ]+a0,tdata2
+[      ]+[0-9a-f]+:[   ]+7a302573[     ]+csrr[         ]+a0,tdata3
+[      ]+[0-9a-f]+:[   ]+7b002573[     ]+csrr[         ]+a0,dcsr
+[      ]+[0-9a-f]+:[   ]+7b102573[     ]+csrr[         ]+a0,dpc
+[      ]+[0-9a-f]+:[   ]+7b202573[     ]+csrr[         ]+a0,dscratch
+[      ]+[0-9a-f]+:[   ]+7b302573[     ]+csrr[         ]+a0,0x7b3
+[      ]+[0-9a-f]+:[   ]+04302573[     ]+csrr[         ]+a0,utval
+[      ]+[0-9a-f]+:[   ]+14302573[     ]+csrr[         ]+a0,stval
+[      ]+[0-9a-f]+:[   ]+18002573[     ]+csrr[         ]+a0,satp
+[      ]+[0-9a-f]+:[   ]+34302573[     ]+csrr[         ]+a0,mtval
+[      ]+[0-9a-f]+:[   ]+32002573[     ]+csrr[         ]+a0,0x320
+[      ]+[0-9a-f]+:[   ]+7b202573[     ]+csrr[         ]+a0,dscratch
+[      ]+[0-9a-f]+:[   ]+20002573[     ]+csrr[         ]+a0,0x200
+[      ]+[0-9a-f]+:[   ]+20202573[     ]+csrr[         ]+a0,0x202
+[      ]+[0-9a-f]+:[   ]+20302573[     ]+csrr[         ]+a0,0x203
+[      ]+[0-9a-f]+:[   ]+20402573[     ]+csrr[         ]+a0,0x204
+[      ]+[0-9a-f]+:[   ]+20502573[     ]+csrr[         ]+a0,0x205
+[      ]+[0-9a-f]+:[   ]+24002573[     ]+csrr[         ]+a0,0x240
+[      ]+[0-9a-f]+:[   ]+24102573[     ]+csrr[         ]+a0,0x241
+[      ]+[0-9a-f]+:[   ]+24202573[     ]+csrr[         ]+a0,0x242
+[      ]+[0-9a-f]+:[   ]+24302573[     ]+csrr[         ]+a0,0x243
+[      ]+[0-9a-f]+:[   ]+24402573[     ]+csrr[         ]+a0,0x244
+[      ]+[0-9a-f]+:[   ]+38002573[     ]+csrr[         ]+a0,0x380
+[      ]+[0-9a-f]+:[   ]+38102573[     ]+csrr[         ]+a0,0x381
+[      ]+[0-9a-f]+:[   ]+38202573[     ]+csrr[         ]+a0,0x382
+[      ]+[0-9a-f]+:[   ]+38302573[     ]+csrr[         ]+a0,0x383
+[      ]+[0-9a-f]+:[   ]+38402573[     ]+csrr[         ]+a0,0x384
+[      ]+[0-9a-f]+:[   ]+38502573[     ]+csrr[         ]+a0,0x385
+[      ]+[0-9a-f]+:[   ]+32102573[     ]+csrr[         ]+a0,0x321
+[      ]+[0-9a-f]+:[   ]+32202573[     ]+csrr[         ]+a0,0x322
diff --git a/gas/testsuite/gas/riscv/priv-reg-version-1p11.d b/gas/testsuite/gas/riscv/priv-reg-version-1p11.d
new file mode 100644 (file)
index 0000000..225f4c4
--- /dev/null
@@ -0,0 +1,257 @@
+#as: -march=rv32if -mpriv-spec=1.11
+#source: priv-reg.s
+#objdump: -dr -Mpriv-spec=1.11
+
+.*:[   ]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <.text>:
+[      ]+[0-9a-f]+:[   ]+00002573[     ]+csrr[         ]+a0,ustatus
+[      ]+[0-9a-f]+:[   ]+00402573[     ]+csrr[         ]+a0,uie
+[      ]+[0-9a-f]+:[   ]+00502573[     ]+csrr[         ]+a0,utvec
+[      ]+[0-9a-f]+:[   ]+04002573[     ]+csrr[         ]+a0,uscratch
+[      ]+[0-9a-f]+:[   ]+04102573[     ]+csrr[         ]+a0,uepc
+[      ]+[0-9a-f]+:[   ]+04202573[     ]+csrr[         ]+a0,ucause
+[      ]+[0-9a-f]+:[   ]+04302573[     ]+csrr[         ]+a0,utval
+[      ]+[0-9a-f]+:[   ]+04402573[     ]+csrr[         ]+a0,uip
+[      ]+[0-9a-f]+:[   ]+00102573[     ]+frflags[      ]+a0
+[      ]+[0-9a-f]+:[   ]+00202573[     ]+frrm[         ]+a0
+[      ]+[0-9a-f]+:[   ]+00302573[     ]+frcsr[        ]+a0
+[      ]+[0-9a-f]+:[   ]+c0002573[     ]+rdcycle[      ]+a0
+[      ]+[0-9a-f]+:[   ]+c0102573[     ]+rdtime[       ]+a0
+[      ]+[0-9a-f]+:[   ]+c0202573[     ]+rdinstret[    ]+a0
+[      ]+[0-9a-f]+:[   ]+c0302573[     ]+csrr[         ]+a0,hpmcounter3
+[      ]+[0-9a-f]+:[   ]+c0402573[     ]+csrr[         ]+a0,hpmcounter4
+[      ]+[0-9a-f]+:[   ]+c0502573[     ]+csrr[         ]+a0,hpmcounter5
+[      ]+[0-9a-f]+:[   ]+c0602573[     ]+csrr[         ]+a0,hpmcounter6
+[      ]+[0-9a-f]+:[   ]+c0702573[     ]+csrr[         ]+a0,hpmcounter7
+[      ]+[0-9a-f]+:[   ]+c0802573[     ]+csrr[         ]+a0,hpmcounter8
+[      ]+[0-9a-f]+:[   ]+c0902573[     ]+csrr[         ]+a0,hpmcounter9
+[      ]+[0-9a-f]+:[   ]+c0a02573[     ]+csrr[         ]+a0,hpmcounter10
+[      ]+[0-9a-f]+:[   ]+c0b02573[     ]+csrr[         ]+a0,hpmcounter11
+[      ]+[0-9a-f]+:[   ]+c0c02573[     ]+csrr[         ]+a0,hpmcounter12
+[      ]+[0-9a-f]+:[   ]+c0d02573[     ]+csrr[         ]+a0,hpmcounter13
+[      ]+[0-9a-f]+:[   ]+c0e02573[     ]+csrr[         ]+a0,hpmcounter14
+[      ]+[0-9a-f]+:[   ]+c0f02573[     ]+csrr[         ]+a0,hpmcounter15
+[      ]+[0-9a-f]+:[   ]+c1002573[     ]+csrr[         ]+a0,hpmcounter16
+[      ]+[0-9a-f]+:[   ]+c1102573[     ]+csrr[         ]+a0,hpmcounter17
+[      ]+[0-9a-f]+:[   ]+c1202573[     ]+csrr[         ]+a0,hpmcounter18
+[      ]+[0-9a-f]+:[   ]+c1302573[     ]+csrr[         ]+a0,hpmcounter19
+[      ]+[0-9a-f]+:[   ]+c1402573[     ]+csrr[         ]+a0,hpmcounter20
+[      ]+[0-9a-f]+:[   ]+c1502573[     ]+csrr[         ]+a0,hpmcounter21
+[      ]+[0-9a-f]+:[   ]+c1602573[     ]+csrr[         ]+a0,hpmcounter22
+[      ]+[0-9a-f]+:[   ]+c1702573[     ]+csrr[         ]+a0,hpmcounter23
+[      ]+[0-9a-f]+:[   ]+c1802573[     ]+csrr[         ]+a0,hpmcounter24
+[      ]+[0-9a-f]+:[   ]+c1902573[     ]+csrr[         ]+a0,hpmcounter25
+[      ]+[0-9a-f]+:[   ]+c1a02573[     ]+csrr[         ]+a0,hpmcounter26
+[      ]+[0-9a-f]+:[   ]+c1b02573[     ]+csrr[         ]+a0,hpmcounter27
+[      ]+[0-9a-f]+:[   ]+c1c02573[     ]+csrr[         ]+a0,hpmcounter28
+[      ]+[0-9a-f]+:[   ]+c1d02573[     ]+csrr[         ]+a0,hpmcounter29
+[      ]+[0-9a-f]+:[   ]+c1e02573[     ]+csrr[         ]+a0,hpmcounter30
+[      ]+[0-9a-f]+:[   ]+c1f02573[     ]+csrr[         ]+a0,hpmcounter31
+[      ]+[0-9a-f]+:[   ]+c8002573[     ]+rdcycleh[     ]+a0
+[      ]+[0-9a-f]+:[   ]+c8102573[     ]+rdtimeh[      ]+a0
+[      ]+[0-9a-f]+:[   ]+c8202573[     ]+rdinstreth[   ]+a0
+[      ]+[0-9a-f]+:[   ]+c8302573[     ]+csrr[         ]+a0,hpmcounter3h
+[      ]+[0-9a-f]+:[   ]+c8402573[     ]+csrr[         ]+a0,hpmcounter4h
+[      ]+[0-9a-f]+:[   ]+c8502573[     ]+csrr[         ]+a0,hpmcounter5h
+[      ]+[0-9a-f]+:[   ]+c8602573[     ]+csrr[         ]+a0,hpmcounter6h
+[      ]+[0-9a-f]+:[   ]+c8702573[     ]+csrr[         ]+a0,hpmcounter7h
+[      ]+[0-9a-f]+:[   ]+c8802573[     ]+csrr[         ]+a0,hpmcounter8h
+[      ]+[0-9a-f]+:[   ]+c8902573[     ]+csrr[         ]+a0,hpmcounter9h
+[      ]+[0-9a-f]+:[   ]+c8a02573[     ]+csrr[         ]+a0,hpmcounter10h
+[      ]+[0-9a-f]+:[   ]+c8b02573[     ]+csrr[         ]+a0,hpmcounter11h
+[      ]+[0-9a-f]+:[   ]+c8c02573[     ]+csrr[         ]+a0,hpmcounter12h
+[      ]+[0-9a-f]+:[   ]+c8d02573[     ]+csrr[         ]+a0,hpmcounter13h
+[      ]+[0-9a-f]+:[   ]+c8e02573[     ]+csrr[         ]+a0,hpmcounter14h
+[      ]+[0-9a-f]+:[   ]+c8f02573[     ]+csrr[         ]+a0,hpmcounter15h
+[      ]+[0-9a-f]+:[   ]+c9002573[     ]+csrr[         ]+a0,hpmcounter16h
+[      ]+[0-9a-f]+:[   ]+c9102573[     ]+csrr[         ]+a0,hpmcounter17h
+[      ]+[0-9a-f]+:[   ]+c9202573[     ]+csrr[         ]+a0,hpmcounter18h
+[      ]+[0-9a-f]+:[   ]+c9302573[     ]+csrr[         ]+a0,hpmcounter19h
+[      ]+[0-9a-f]+:[   ]+c9402573[     ]+csrr[         ]+a0,hpmcounter20h
+[      ]+[0-9a-f]+:[   ]+c9502573[     ]+csrr[         ]+a0,hpmcounter21h
+[      ]+[0-9a-f]+:[   ]+c9602573[     ]+csrr[         ]+a0,hpmcounter22h
+[      ]+[0-9a-f]+:[   ]+c9702573[     ]+csrr[         ]+a0,hpmcounter23h
+[      ]+[0-9a-f]+:[   ]+c9802573[     ]+csrr[         ]+a0,hpmcounter24h
+[      ]+[0-9a-f]+:[   ]+c9902573[     ]+csrr[         ]+a0,hpmcounter25h
+[      ]+[0-9a-f]+:[   ]+c9a02573[     ]+csrr[         ]+a0,hpmcounter26h
+[      ]+[0-9a-f]+:[   ]+c9b02573[     ]+csrr[         ]+a0,hpmcounter27h
+[      ]+[0-9a-f]+:[   ]+c9c02573[     ]+csrr[         ]+a0,hpmcounter28h
+[      ]+[0-9a-f]+:[   ]+c9d02573[     ]+csrr[         ]+a0,hpmcounter29h
+[      ]+[0-9a-f]+:[   ]+c9e02573[     ]+csrr[         ]+a0,hpmcounter30h
+[      ]+[0-9a-f]+:[   ]+c9f02573[     ]+csrr[         ]+a0,hpmcounter31h
+[      ]+[0-9a-f]+:[   ]+10002573[     ]+csrr[         ]+a0,sstatus
+[      ]+[0-9a-f]+:[   ]+10202573[     ]+csrr[         ]+a0,sedeleg
+[      ]+[0-9a-f]+:[   ]+10302573[     ]+csrr[         ]+a0,sideleg
+[      ]+[0-9a-f]+:[   ]+10402573[     ]+csrr[         ]+a0,sie
+[      ]+[0-9a-f]+:[   ]+10502573[     ]+csrr[         ]+a0,stvec
+[      ]+[0-9a-f]+:[   ]+10602573[     ]+csrr[         ]+a0,scounteren
+[      ]+[0-9a-f]+:[   ]+14002573[     ]+csrr[         ]+a0,sscratch
+[      ]+[0-9a-f]+:[   ]+14102573[     ]+csrr[         ]+a0,sepc
+[      ]+[0-9a-f]+:[   ]+14202573[     ]+csrr[         ]+a0,scause
+[      ]+[0-9a-f]+:[   ]+14302573[     ]+csrr[         ]+a0,stval
+[      ]+[0-9a-f]+:[   ]+14402573[     ]+csrr[         ]+a0,sip
+[      ]+[0-9a-f]+:[   ]+18002573[     ]+csrr[         ]+a0,satp
+[      ]+[0-9a-f]+:[   ]+f1102573[     ]+csrr[         ]+a0,mvendorid
+[      ]+[0-9a-f]+:[   ]+f1202573[     ]+csrr[         ]+a0,marchid
+[      ]+[0-9a-f]+:[   ]+f1302573[     ]+csrr[         ]+a0,mimpid
+[      ]+[0-9a-f]+:[   ]+f1402573[     ]+csrr[         ]+a0,mhartid
+[      ]+[0-9a-f]+:[   ]+30002573[     ]+csrr[         ]+a0,mstatus
+[      ]+[0-9a-f]+:[   ]+30102573[     ]+csrr[         ]+a0,misa
+[      ]+[0-9a-f]+:[   ]+30202573[     ]+csrr[         ]+a0,medeleg
+[      ]+[0-9a-f]+:[   ]+30302573[     ]+csrr[         ]+a0,mideleg
+[      ]+[0-9a-f]+:[   ]+30402573[     ]+csrr[         ]+a0,mie
+[      ]+[0-9a-f]+:[   ]+30502573[     ]+csrr[         ]+a0,mtvec
+[      ]+[0-9a-f]+:[   ]+30602573[     ]+csrr[         ]+a0,mcounteren
+[      ]+[0-9a-f]+:[   ]+34002573[     ]+csrr[         ]+a0,mscratch
+[      ]+[0-9a-f]+:[   ]+34102573[     ]+csrr[         ]+a0,mepc
+[      ]+[0-9a-f]+:[   ]+34202573[     ]+csrr[         ]+a0,mcause
+[      ]+[0-9a-f]+:[   ]+34302573[     ]+csrr[         ]+a0,mtval
+[      ]+[0-9a-f]+:[   ]+34402573[     ]+csrr[         ]+a0,mip
+[      ]+[0-9a-f]+:[   ]+3a002573[     ]+csrr[         ]+a0,pmpcfg0
+[      ]+[0-9a-f]+:[   ]+3a102573[     ]+csrr[         ]+a0,pmpcfg1
+[      ]+[0-9a-f]+:[   ]+3a202573[     ]+csrr[         ]+a0,pmpcfg2
+[      ]+[0-9a-f]+:[   ]+3a302573[     ]+csrr[         ]+a0,pmpcfg3
+[      ]+[0-9a-f]+:[   ]+3b002573[     ]+csrr[         ]+a0,pmpaddr0
+[      ]+[0-9a-f]+:[   ]+3b102573[     ]+csrr[         ]+a0,pmpaddr1
+[      ]+[0-9a-f]+:[   ]+3b202573[     ]+csrr[         ]+a0,pmpaddr2
+[      ]+[0-9a-f]+:[   ]+3b302573[     ]+csrr[         ]+a0,pmpaddr3
+[      ]+[0-9a-f]+:[   ]+3b402573[     ]+csrr[         ]+a0,pmpaddr4
+[      ]+[0-9a-f]+:[   ]+3b502573[     ]+csrr[         ]+a0,pmpaddr5
+[      ]+[0-9a-f]+:[   ]+3b602573[     ]+csrr[         ]+a0,pmpaddr6
+[      ]+[0-9a-f]+:[   ]+3b702573[     ]+csrr[         ]+a0,pmpaddr7
+[      ]+[0-9a-f]+:[   ]+3b802573[     ]+csrr[         ]+a0,pmpaddr8
+[      ]+[0-9a-f]+:[   ]+3b902573[     ]+csrr[         ]+a0,pmpaddr9
+[      ]+[0-9a-f]+:[   ]+3ba02573[     ]+csrr[         ]+a0,pmpaddr10
+[      ]+[0-9a-f]+:[   ]+3bb02573[     ]+csrr[         ]+a0,pmpaddr11
+[      ]+[0-9a-f]+:[   ]+3bc02573[     ]+csrr[         ]+a0,pmpaddr12
+[      ]+[0-9a-f]+:[   ]+3bd02573[     ]+csrr[         ]+a0,pmpaddr13
+[      ]+[0-9a-f]+:[   ]+3be02573[     ]+csrr[         ]+a0,pmpaddr14
+[      ]+[0-9a-f]+:[   ]+3bf02573[     ]+csrr[         ]+a0,pmpaddr15
+[      ]+[0-9a-f]+:[   ]+b0002573[     ]+csrr[         ]+a0,mcycle
+[      ]+[0-9a-f]+:[   ]+b0202573[     ]+csrr[         ]+a0,minstret
+[      ]+[0-9a-f]+:[   ]+b0302573[     ]+csrr[         ]+a0,mhpmcounter3
+[      ]+[0-9a-f]+:[   ]+b0402573[     ]+csrr[         ]+a0,mhpmcounter4
+[      ]+[0-9a-f]+:[   ]+b0502573[     ]+csrr[         ]+a0,mhpmcounter5
+[      ]+[0-9a-f]+:[   ]+b0602573[     ]+csrr[         ]+a0,mhpmcounter6
+[      ]+[0-9a-f]+:[   ]+b0702573[     ]+csrr[         ]+a0,mhpmcounter7
+[      ]+[0-9a-f]+:[   ]+b0802573[     ]+csrr[         ]+a0,mhpmcounter8
+[      ]+[0-9a-f]+:[   ]+b0902573[     ]+csrr[         ]+a0,mhpmcounter9
+[      ]+[0-9a-f]+:[   ]+b0a02573[     ]+csrr[         ]+a0,mhpmcounter10
+[      ]+[0-9a-f]+:[   ]+b0b02573[     ]+csrr[         ]+a0,mhpmcounter11
+[      ]+[0-9a-f]+:[   ]+b0c02573[     ]+csrr[         ]+a0,mhpmcounter12
+[      ]+[0-9a-f]+:[   ]+b0d02573[     ]+csrr[         ]+a0,mhpmcounter13
+[      ]+[0-9a-f]+:[   ]+b0e02573[     ]+csrr[         ]+a0,mhpmcounter14
+[      ]+[0-9a-f]+:[   ]+b0f02573[     ]+csrr[         ]+a0,mhpmcounter15
+[      ]+[0-9a-f]+:[   ]+b1002573[     ]+csrr[         ]+a0,mhpmcounter16
+[      ]+[0-9a-f]+:[   ]+b1102573[     ]+csrr[         ]+a0,mhpmcounter17
+[      ]+[0-9a-f]+:[   ]+b1202573[     ]+csrr[         ]+a0,mhpmcounter18
+[      ]+[0-9a-f]+:[   ]+b1302573[     ]+csrr[         ]+a0,mhpmcounter19
+[      ]+[0-9a-f]+:[   ]+b1402573[     ]+csrr[         ]+a0,mhpmcounter20
+[      ]+[0-9a-f]+:[   ]+b1502573[     ]+csrr[         ]+a0,mhpmcounter21
+[      ]+[0-9a-f]+:[   ]+b1602573[     ]+csrr[         ]+a0,mhpmcounter22
+[      ]+[0-9a-f]+:[   ]+b1702573[     ]+csrr[         ]+a0,mhpmcounter23
+[      ]+[0-9a-f]+:[   ]+b1802573[     ]+csrr[         ]+a0,mhpmcounter24
+[      ]+[0-9a-f]+:[   ]+b1902573[     ]+csrr[         ]+a0,mhpmcounter25
+[      ]+[0-9a-f]+:[   ]+b1a02573[     ]+csrr[         ]+a0,mhpmcounter26
+[      ]+[0-9a-f]+:[   ]+b1b02573[     ]+csrr[         ]+a0,mhpmcounter27
+[      ]+[0-9a-f]+:[   ]+b1c02573[     ]+csrr[         ]+a0,mhpmcounter28
+[      ]+[0-9a-f]+:[   ]+b1d02573[     ]+csrr[         ]+a0,mhpmcounter29
+[      ]+[0-9a-f]+:[   ]+b1e02573[     ]+csrr[         ]+a0,mhpmcounter30
+[      ]+[0-9a-f]+:[   ]+b1f02573[     ]+csrr[         ]+a0,mhpmcounter31
+[      ]+[0-9a-f]+:[   ]+b8002573[     ]+csrr[         ]+a0,mcycleh
+[      ]+[0-9a-f]+:[   ]+b8202573[     ]+csrr[         ]+a0,minstreth
+[      ]+[0-9a-f]+:[   ]+b8302573[     ]+csrr[         ]+a0,mhpmcounter3h
+[      ]+[0-9a-f]+:[   ]+b8402573[     ]+csrr[         ]+a0,mhpmcounter4h
+[      ]+[0-9a-f]+:[   ]+b8502573[     ]+csrr[         ]+a0,mhpmcounter5h
+[      ]+[0-9a-f]+:[   ]+b8602573[     ]+csrr[         ]+a0,mhpmcounter6h
+[      ]+[0-9a-f]+:[   ]+b8702573[     ]+csrr[         ]+a0,mhpmcounter7h
+[      ]+[0-9a-f]+:[   ]+b8802573[     ]+csrr[         ]+a0,mhpmcounter8h
+[      ]+[0-9a-f]+:[   ]+b8902573[     ]+csrr[         ]+a0,mhpmcounter9h
+[      ]+[0-9a-f]+:[   ]+b8a02573[     ]+csrr[         ]+a0,mhpmcounter10h
+[      ]+[0-9a-f]+:[   ]+b8b02573[     ]+csrr[         ]+a0,mhpmcounter11h
+[      ]+[0-9a-f]+:[   ]+b8c02573[     ]+csrr[         ]+a0,mhpmcounter12h
+[      ]+[0-9a-f]+:[   ]+b8d02573[     ]+csrr[         ]+a0,mhpmcounter13h
+[      ]+[0-9a-f]+:[   ]+b8e02573[     ]+csrr[         ]+a0,mhpmcounter14h
+[      ]+[0-9a-f]+:[   ]+b8f02573[     ]+csrr[         ]+a0,mhpmcounter15h
+[      ]+[0-9a-f]+:[   ]+b9002573[     ]+csrr[         ]+a0,mhpmcounter16h
+[      ]+[0-9a-f]+:[   ]+b9102573[     ]+csrr[         ]+a0,mhpmcounter17h
+[      ]+[0-9a-f]+:[   ]+b9202573[     ]+csrr[         ]+a0,mhpmcounter18h
+[      ]+[0-9a-f]+:[   ]+b9302573[     ]+csrr[         ]+a0,mhpmcounter19h
+[      ]+[0-9a-f]+:[   ]+b9402573[     ]+csrr[         ]+a0,mhpmcounter20h
+[      ]+[0-9a-f]+:[   ]+b9502573[     ]+csrr[         ]+a0,mhpmcounter21h
+[      ]+[0-9a-f]+:[   ]+b9602573[     ]+csrr[         ]+a0,mhpmcounter22h
+[      ]+[0-9a-f]+:[   ]+b9702573[     ]+csrr[         ]+a0,mhpmcounter23h
+[      ]+[0-9a-f]+:[   ]+b9802573[     ]+csrr[         ]+a0,mhpmcounter24h
+[      ]+[0-9a-f]+:[   ]+b9902573[     ]+csrr[         ]+a0,mhpmcounter25h
+[      ]+[0-9a-f]+:[   ]+b9a02573[     ]+csrr[         ]+a0,mhpmcounter26h
+[      ]+[0-9a-f]+:[   ]+b9b02573[     ]+csrr[         ]+a0,mhpmcounter27h
+[      ]+[0-9a-f]+:[   ]+b9c02573[     ]+csrr[         ]+a0,mhpmcounter28h
+[      ]+[0-9a-f]+:[   ]+b9d02573[     ]+csrr[         ]+a0,mhpmcounter29h
+[      ]+[0-9a-f]+:[   ]+b9e02573[     ]+csrr[         ]+a0,mhpmcounter30h
+[      ]+[0-9a-f]+:[   ]+b9f02573[     ]+csrr[         ]+a0,mhpmcounter31h
+[      ]+[0-9a-f]+:[   ]+32002573[     ]+csrr[         ]+a0,mcountinhibit
+[      ]+[0-9a-f]+:[   ]+32302573[     ]+csrr[         ]+a0,mhpmevent3
+[      ]+[0-9a-f]+:[   ]+32402573[     ]+csrr[         ]+a0,mhpmevent4
+[      ]+[0-9a-f]+:[   ]+32502573[     ]+csrr[         ]+a0,mhpmevent5
+[      ]+[0-9a-f]+:[   ]+32602573[     ]+csrr[         ]+a0,mhpmevent6
+[      ]+[0-9a-f]+:[   ]+32702573[     ]+csrr[         ]+a0,mhpmevent7
+[      ]+[0-9a-f]+:[   ]+32802573[     ]+csrr[         ]+a0,mhpmevent8
+[      ]+[0-9a-f]+:[   ]+32902573[     ]+csrr[         ]+a0,mhpmevent9
+[      ]+[0-9a-f]+:[   ]+32a02573[     ]+csrr[         ]+a0,mhpmevent10
+[      ]+[0-9a-f]+:[   ]+32b02573[     ]+csrr[         ]+a0,mhpmevent11
+[      ]+[0-9a-f]+:[   ]+32c02573[     ]+csrr[         ]+a0,mhpmevent12
+[      ]+[0-9a-f]+:[   ]+32d02573[     ]+csrr[         ]+a0,mhpmevent13
+[      ]+[0-9a-f]+:[   ]+32e02573[     ]+csrr[         ]+a0,mhpmevent14
+[      ]+[0-9a-f]+:[   ]+32f02573[     ]+csrr[         ]+a0,mhpmevent15
+[      ]+[0-9a-f]+:[   ]+33002573[     ]+csrr[         ]+a0,mhpmevent16
+[      ]+[0-9a-f]+:[   ]+33102573[     ]+csrr[         ]+a0,mhpmevent17
+[      ]+[0-9a-f]+:[   ]+33202573[     ]+csrr[         ]+a0,mhpmevent18
+[      ]+[0-9a-f]+:[   ]+33302573[     ]+csrr[         ]+a0,mhpmevent19
+[      ]+[0-9a-f]+:[   ]+33402573[     ]+csrr[         ]+a0,mhpmevent20
+[      ]+[0-9a-f]+:[   ]+33502573[     ]+csrr[         ]+a0,mhpmevent21
+[      ]+[0-9a-f]+:[   ]+33602573[     ]+csrr[         ]+a0,mhpmevent22
+[      ]+[0-9a-f]+:[   ]+33702573[     ]+csrr[         ]+a0,mhpmevent23
+[      ]+[0-9a-f]+:[   ]+33802573[     ]+csrr[         ]+a0,mhpmevent24
+[      ]+[0-9a-f]+:[   ]+33902573[     ]+csrr[         ]+a0,mhpmevent25
+[      ]+[0-9a-f]+:[   ]+33a02573[     ]+csrr[         ]+a0,mhpmevent26
+[      ]+[0-9a-f]+:[   ]+33b02573[     ]+csrr[         ]+a0,mhpmevent27
+[      ]+[0-9a-f]+:[   ]+33c02573[     ]+csrr[         ]+a0,mhpmevent28
+[      ]+[0-9a-f]+:[   ]+33d02573[     ]+csrr[         ]+a0,mhpmevent29
+[      ]+[0-9a-f]+:[   ]+33e02573[     ]+csrr[         ]+a0,mhpmevent30
+[      ]+[0-9a-f]+:[   ]+33f02573[     ]+csrr[         ]+a0,mhpmevent31
+[      ]+[0-9a-f]+:[   ]+7a002573[     ]+csrr[         ]+a0,tselect
+[      ]+[0-9a-f]+:[   ]+7a102573[     ]+csrr[         ]+a0,tdata1
+[      ]+[0-9a-f]+:[   ]+7a202573[     ]+csrr[         ]+a0,tdata2
+[      ]+[0-9a-f]+:[   ]+7a302573[     ]+csrr[         ]+a0,tdata3
+[      ]+[0-9a-f]+:[   ]+7b002573[     ]+csrr[         ]+a0,dcsr
+[      ]+[0-9a-f]+:[   ]+7b102573[     ]+csrr[         ]+a0,dpc
+[      ]+[0-9a-f]+:[   ]+7b202573[     ]+csrr[         ]+a0,dscratch0
+[      ]+[0-9a-f]+:[   ]+7b302573[     ]+csrr[         ]+a0,dscratch1
+[      ]+[0-9a-f]+:[   ]+04302573[     ]+csrr[         ]+a0,utval
+[      ]+[0-9a-f]+:[   ]+14302573[     ]+csrr[         ]+a0,stval
+[      ]+[0-9a-f]+:[   ]+18002573[     ]+csrr[         ]+a0,satp
+[      ]+[0-9a-f]+:[   ]+34302573[     ]+csrr[         ]+a0,mtval
+[      ]+[0-9a-f]+:[   ]+32002573[     ]+csrr[         ]+a0,mcountinhibit
+[      ]+[0-9a-f]+:[   ]+7b202573[     ]+csrr[         ]+a0,dscratch0
+[      ]+[0-9a-f]+:[   ]+20002573[     ]+csrr[         ]+a0,0x200
+[      ]+[0-9a-f]+:[   ]+20202573[     ]+csrr[         ]+a0,0x202
+[      ]+[0-9a-f]+:[   ]+20302573[     ]+csrr[         ]+a0,0x203
+[      ]+[0-9a-f]+:[   ]+20402573[     ]+csrr[         ]+a0,0x204
+[      ]+[0-9a-f]+:[   ]+20502573[     ]+csrr[         ]+a0,0x205
+[      ]+[0-9a-f]+:[   ]+24002573[     ]+csrr[         ]+a0,0x240
+[      ]+[0-9a-f]+:[   ]+24102573[     ]+csrr[         ]+a0,0x241
+[      ]+[0-9a-f]+:[   ]+24202573[     ]+csrr[         ]+a0,0x242
+[      ]+[0-9a-f]+:[   ]+24302573[     ]+csrr[         ]+a0,0x243
+[      ]+[0-9a-f]+:[   ]+24402573[     ]+csrr[         ]+a0,0x244
+[      ]+[0-9a-f]+:[   ]+38002573[     ]+csrr[         ]+a0,0x380
+[      ]+[0-9a-f]+:[   ]+38102573[     ]+csrr[         ]+a0,0x381
+[      ]+[0-9a-f]+:[   ]+38202573[     ]+csrr[         ]+a0,0x382
+[      ]+[0-9a-f]+:[   ]+38302573[     ]+csrr[         ]+a0,0x383
+[      ]+[0-9a-f]+:[   ]+38402573[     ]+csrr[         ]+a0,0x384
+[      ]+[0-9a-f]+:[   ]+38502573[     ]+csrr[         ]+a0,0x385
+[      ]+[0-9a-f]+:[   ]+32102573[     ]+csrr[         ]+a0,0x321
+[      ]+[0-9a-f]+:[   ]+32202573[     ]+csrr[         ]+a0,0x322
diff --git a/gas/testsuite/gas/riscv/priv-reg-version-1p9.d b/gas/testsuite/gas/riscv/priv-reg-version-1p9.d
new file mode 100644 (file)
index 0000000..fd2a56b
--- /dev/null
@@ -0,0 +1,257 @@
+#as: -march=rv32if -mpriv-spec=1.9
+#source: priv-reg.s
+#objdump: -dr -Mpriv-spec=1.9
+
+.*:[   ]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <.text>:
+[      ]+[0-9a-f]+:[   ]+00002573[     ]+csrr[         ]+a0,ustatus
+[      ]+[0-9a-f]+:[   ]+00402573[     ]+csrr[         ]+a0,uie
+[      ]+[0-9a-f]+:[   ]+00502573[     ]+csrr[         ]+a0,utvec
+[      ]+[0-9a-f]+:[   ]+04002573[     ]+csrr[         ]+a0,uscratch
+[      ]+[0-9a-f]+:[   ]+04102573[     ]+csrr[         ]+a0,uepc
+[      ]+[0-9a-f]+:[   ]+04202573[     ]+csrr[         ]+a0,ucause
+[      ]+[0-9a-f]+:[   ]+04302573[     ]+csrr[         ]+a0,ubadaddr
+[      ]+[0-9a-f]+:[   ]+04402573[     ]+csrr[         ]+a0,uip
+[      ]+[0-9a-f]+:[   ]+00102573[     ]+frflags[      ]+a0
+[      ]+[0-9a-f]+:[   ]+00202573[     ]+frrm[         ]+a0
+[      ]+[0-9a-f]+:[   ]+00302573[     ]+frcsr[        ]+a0
+[      ]+[0-9a-f]+:[   ]+c0002573[     ]+rdcycle[      ]+a0
+[      ]+[0-9a-f]+:[   ]+c0102573[     ]+rdtime[       ]+a0
+[      ]+[0-9a-f]+:[   ]+c0202573[     ]+rdinstret[    ]+a0
+[      ]+[0-9a-f]+:[   ]+c0302573[     ]+csrr[         ]+a0,hpmcounter3
+[      ]+[0-9a-f]+:[   ]+c0402573[     ]+csrr[         ]+a0,hpmcounter4
+[      ]+[0-9a-f]+:[   ]+c0502573[     ]+csrr[         ]+a0,hpmcounter5
+[      ]+[0-9a-f]+:[   ]+c0602573[     ]+csrr[         ]+a0,hpmcounter6
+[      ]+[0-9a-f]+:[   ]+c0702573[     ]+csrr[         ]+a0,hpmcounter7
+[      ]+[0-9a-f]+:[   ]+c0802573[     ]+csrr[         ]+a0,hpmcounter8
+[      ]+[0-9a-f]+:[   ]+c0902573[     ]+csrr[         ]+a0,hpmcounter9
+[      ]+[0-9a-f]+:[   ]+c0a02573[     ]+csrr[         ]+a0,hpmcounter10
+[      ]+[0-9a-f]+:[   ]+c0b02573[     ]+csrr[         ]+a0,hpmcounter11
+[      ]+[0-9a-f]+:[   ]+c0c02573[     ]+csrr[         ]+a0,hpmcounter12
+[      ]+[0-9a-f]+:[   ]+c0d02573[     ]+csrr[         ]+a0,hpmcounter13
+[      ]+[0-9a-f]+:[   ]+c0e02573[     ]+csrr[         ]+a0,hpmcounter14
+[      ]+[0-9a-f]+:[   ]+c0f02573[     ]+csrr[         ]+a0,hpmcounter15
+[      ]+[0-9a-f]+:[   ]+c1002573[     ]+csrr[         ]+a0,hpmcounter16
+[      ]+[0-9a-f]+:[   ]+c1102573[     ]+csrr[         ]+a0,hpmcounter17
+[      ]+[0-9a-f]+:[   ]+c1202573[     ]+csrr[         ]+a0,hpmcounter18
+[      ]+[0-9a-f]+:[   ]+c1302573[     ]+csrr[         ]+a0,hpmcounter19
+[      ]+[0-9a-f]+:[   ]+c1402573[     ]+csrr[         ]+a0,hpmcounter20
+[      ]+[0-9a-f]+:[   ]+c1502573[     ]+csrr[         ]+a0,hpmcounter21
+[      ]+[0-9a-f]+:[   ]+c1602573[     ]+csrr[         ]+a0,hpmcounter22
+[      ]+[0-9a-f]+:[   ]+c1702573[     ]+csrr[         ]+a0,hpmcounter23
+[      ]+[0-9a-f]+:[   ]+c1802573[     ]+csrr[         ]+a0,hpmcounter24
+[      ]+[0-9a-f]+:[   ]+c1902573[     ]+csrr[         ]+a0,hpmcounter25
+[      ]+[0-9a-f]+:[   ]+c1a02573[     ]+csrr[         ]+a0,hpmcounter26
+[      ]+[0-9a-f]+:[   ]+c1b02573[     ]+csrr[         ]+a0,hpmcounter27
+[      ]+[0-9a-f]+:[   ]+c1c02573[     ]+csrr[         ]+a0,hpmcounter28
+[      ]+[0-9a-f]+:[   ]+c1d02573[     ]+csrr[         ]+a0,hpmcounter29
+[      ]+[0-9a-f]+:[   ]+c1e02573[     ]+csrr[         ]+a0,hpmcounter30
+[      ]+[0-9a-f]+:[   ]+c1f02573[     ]+csrr[         ]+a0,hpmcounter31
+[      ]+[0-9a-f]+:[   ]+c8002573[     ]+rdcycleh[     ]+a0
+[      ]+[0-9a-f]+:[   ]+c8102573[     ]+rdtimeh[      ]+a0
+[      ]+[0-9a-f]+:[   ]+c8202573[     ]+rdinstreth[   ]+a0
+[      ]+[0-9a-f]+:[   ]+c8302573[     ]+csrr[         ]+a0,hpmcounter3h
+[      ]+[0-9a-f]+:[   ]+c8402573[     ]+csrr[         ]+a0,hpmcounter4h
+[      ]+[0-9a-f]+:[   ]+c8502573[     ]+csrr[         ]+a0,hpmcounter5h
+[      ]+[0-9a-f]+:[   ]+c8602573[     ]+csrr[         ]+a0,hpmcounter6h
+[      ]+[0-9a-f]+:[   ]+c8702573[     ]+csrr[         ]+a0,hpmcounter7h
+[      ]+[0-9a-f]+:[   ]+c8802573[     ]+csrr[         ]+a0,hpmcounter8h
+[      ]+[0-9a-f]+:[   ]+c8902573[     ]+csrr[         ]+a0,hpmcounter9h
+[      ]+[0-9a-f]+:[   ]+c8a02573[     ]+csrr[         ]+a0,hpmcounter10h
+[      ]+[0-9a-f]+:[   ]+c8b02573[     ]+csrr[         ]+a0,hpmcounter11h
+[      ]+[0-9a-f]+:[   ]+c8c02573[     ]+csrr[         ]+a0,hpmcounter12h
+[      ]+[0-9a-f]+:[   ]+c8d02573[     ]+csrr[         ]+a0,hpmcounter13h
+[      ]+[0-9a-f]+:[   ]+c8e02573[     ]+csrr[         ]+a0,hpmcounter14h
+[      ]+[0-9a-f]+:[   ]+c8f02573[     ]+csrr[         ]+a0,hpmcounter15h
+[      ]+[0-9a-f]+:[   ]+c9002573[     ]+csrr[         ]+a0,hpmcounter16h
+[      ]+[0-9a-f]+:[   ]+c9102573[     ]+csrr[         ]+a0,hpmcounter17h
+[      ]+[0-9a-f]+:[   ]+c9202573[     ]+csrr[         ]+a0,hpmcounter18h
+[      ]+[0-9a-f]+:[   ]+c9302573[     ]+csrr[         ]+a0,hpmcounter19h
+[      ]+[0-9a-f]+:[   ]+c9402573[     ]+csrr[         ]+a0,hpmcounter20h
+[      ]+[0-9a-f]+:[   ]+c9502573[     ]+csrr[         ]+a0,hpmcounter21h
+[      ]+[0-9a-f]+:[   ]+c9602573[     ]+csrr[         ]+a0,hpmcounter22h
+[      ]+[0-9a-f]+:[   ]+c9702573[     ]+csrr[         ]+a0,hpmcounter23h
+[      ]+[0-9a-f]+:[   ]+c9802573[     ]+csrr[         ]+a0,hpmcounter24h
+[      ]+[0-9a-f]+:[   ]+c9902573[     ]+csrr[         ]+a0,hpmcounter25h
+[      ]+[0-9a-f]+:[   ]+c9a02573[     ]+csrr[         ]+a0,hpmcounter26h
+[      ]+[0-9a-f]+:[   ]+c9b02573[     ]+csrr[         ]+a0,hpmcounter27h
+[      ]+[0-9a-f]+:[   ]+c9c02573[     ]+csrr[         ]+a0,hpmcounter28h
+[      ]+[0-9a-f]+:[   ]+c9d02573[     ]+csrr[         ]+a0,hpmcounter29h
+[      ]+[0-9a-f]+:[   ]+c9e02573[     ]+csrr[         ]+a0,hpmcounter30h
+[      ]+[0-9a-f]+:[   ]+c9f02573[     ]+csrr[         ]+a0,hpmcounter31h
+[      ]+[0-9a-f]+:[   ]+10002573[     ]+csrr[         ]+a0,sstatus
+[      ]+[0-9a-f]+:[   ]+10202573[     ]+csrr[         ]+a0,sedeleg
+[      ]+[0-9a-f]+:[   ]+10302573[     ]+csrr[         ]+a0,sideleg
+[      ]+[0-9a-f]+:[   ]+10402573[     ]+csrr[         ]+a0,sie
+[      ]+[0-9a-f]+:[   ]+10502573[     ]+csrr[         ]+a0,stvec
+[      ]+[0-9a-f]+:[   ]+10602573[     ]+csrr[         ]+a0,0x106
+[      ]+[0-9a-f]+:[   ]+14002573[     ]+csrr[         ]+a0,sscratch
+[      ]+[0-9a-f]+:[   ]+14102573[     ]+csrr[         ]+a0,sepc
+[      ]+[0-9a-f]+:[   ]+14202573[     ]+csrr[         ]+a0,scause
+[      ]+[0-9a-f]+:[   ]+14302573[     ]+csrr[         ]+a0,sbadaddr
+[      ]+[0-9a-f]+:[   ]+14402573[     ]+csrr[         ]+a0,sip
+[      ]+[0-9a-f]+:[   ]+18002573[     ]+csrr[         ]+a0,sptbr
+[      ]+[0-9a-f]+:[   ]+f1102573[     ]+csrr[         ]+a0,mvendorid
+[      ]+[0-9a-f]+:[   ]+f1202573[     ]+csrr[         ]+a0,marchid
+[      ]+[0-9a-f]+:[   ]+f1302573[     ]+csrr[         ]+a0,mimpid
+[      ]+[0-9a-f]+:[   ]+f1402573[     ]+csrr[         ]+a0,mhartid
+[      ]+[0-9a-f]+:[   ]+30002573[     ]+csrr[         ]+a0,mstatus
+[      ]+[0-9a-f]+:[   ]+f1002573[     ]+csrr[         ]+a0,misa
+[      ]+[0-9a-f]+:[   ]+30202573[     ]+csrr[         ]+a0,medeleg
+[      ]+[0-9a-f]+:[   ]+30302573[     ]+csrr[         ]+a0,mideleg
+[      ]+[0-9a-f]+:[   ]+30402573[     ]+csrr[         ]+a0,mie
+[      ]+[0-9a-f]+:[   ]+30502573[     ]+csrr[         ]+a0,mtvec
+[      ]+[0-9a-f]+:[   ]+30602573[     ]+csrr[         ]+a0,0x306
+[      ]+[0-9a-f]+:[   ]+34002573[     ]+csrr[         ]+a0,mscratch
+[      ]+[0-9a-f]+:[   ]+34102573[     ]+csrr[         ]+a0,mepc
+[      ]+[0-9a-f]+:[   ]+34202573[     ]+csrr[         ]+a0,mcause
+[      ]+[0-9a-f]+:[   ]+34302573[     ]+csrr[         ]+a0,mbadaddr
+[      ]+[0-9a-f]+:[   ]+34402573[     ]+csrr[         ]+a0,mip
+[      ]+[0-9a-f]+:[   ]+3a002573[     ]+csrr[         ]+a0,0x3a0
+[      ]+[0-9a-f]+:[   ]+3a102573[     ]+csrr[         ]+a0,0x3a1
+[      ]+[0-9a-f]+:[   ]+3a202573[     ]+csrr[         ]+a0,0x3a2
+[      ]+[0-9a-f]+:[   ]+3a302573[     ]+csrr[         ]+a0,0x3a3
+[      ]+[0-9a-f]+:[   ]+3b002573[     ]+csrr[         ]+a0,0x3b0
+[      ]+[0-9a-f]+:[   ]+3b102573[     ]+csrr[         ]+a0,0x3b1
+[      ]+[0-9a-f]+:[   ]+3b202573[     ]+csrr[         ]+a0,0x3b2
+[      ]+[0-9a-f]+:[   ]+3b302573[     ]+csrr[         ]+a0,0x3b3
+[      ]+[0-9a-f]+:[   ]+3b402573[     ]+csrr[         ]+a0,0x3b4
+[      ]+[0-9a-f]+:[   ]+3b502573[     ]+csrr[         ]+a0,0x3b5
+[      ]+[0-9a-f]+:[   ]+3b602573[     ]+csrr[         ]+a0,0x3b6
+[      ]+[0-9a-f]+:[   ]+3b702573[     ]+csrr[         ]+a0,0x3b7
+[      ]+[0-9a-f]+:[   ]+3b802573[     ]+csrr[         ]+a0,0x3b8
+[      ]+[0-9a-f]+:[   ]+3b902573[     ]+csrr[         ]+a0,0x3b9
+[      ]+[0-9a-f]+:[   ]+3ba02573[     ]+csrr[         ]+a0,0x3ba
+[      ]+[0-9a-f]+:[   ]+3bb02573[     ]+csrr[         ]+a0,0x3bb
+[      ]+[0-9a-f]+:[   ]+3bc02573[     ]+csrr[         ]+a0,0x3bc
+[      ]+[0-9a-f]+:[   ]+3bd02573[     ]+csrr[         ]+a0,0x3bd
+[      ]+[0-9a-f]+:[   ]+3be02573[     ]+csrr[         ]+a0,0x3be
+[      ]+[0-9a-f]+:[   ]+3bf02573[     ]+csrr[         ]+a0,0x3bf
+[      ]+[0-9a-f]+:[   ]+b0002573[     ]+csrr[         ]+a0,mcycle
+[      ]+[0-9a-f]+:[   ]+b0202573[     ]+csrr[         ]+a0,minstret
+[      ]+[0-9a-f]+:[   ]+b0302573[     ]+csrr[         ]+a0,mhpmcounter3
+[      ]+[0-9a-f]+:[   ]+b0402573[     ]+csrr[         ]+a0,mhpmcounter4
+[      ]+[0-9a-f]+:[   ]+b0502573[     ]+csrr[         ]+a0,mhpmcounter5
+[      ]+[0-9a-f]+:[   ]+b0602573[     ]+csrr[         ]+a0,mhpmcounter6
+[      ]+[0-9a-f]+:[   ]+b0702573[     ]+csrr[         ]+a0,mhpmcounter7
+[      ]+[0-9a-f]+:[   ]+b0802573[     ]+csrr[         ]+a0,mhpmcounter8
+[      ]+[0-9a-f]+:[   ]+b0902573[     ]+csrr[         ]+a0,mhpmcounter9
+[      ]+[0-9a-f]+:[   ]+b0a02573[     ]+csrr[         ]+a0,mhpmcounter10
+[      ]+[0-9a-f]+:[   ]+b0b02573[     ]+csrr[         ]+a0,mhpmcounter11
+[      ]+[0-9a-f]+:[   ]+b0c02573[     ]+csrr[         ]+a0,mhpmcounter12
+[      ]+[0-9a-f]+:[   ]+b0d02573[     ]+csrr[         ]+a0,mhpmcounter13
+[      ]+[0-9a-f]+:[   ]+b0e02573[     ]+csrr[         ]+a0,mhpmcounter14
+[      ]+[0-9a-f]+:[   ]+b0f02573[     ]+csrr[         ]+a0,mhpmcounter15
+[      ]+[0-9a-f]+:[   ]+b1002573[     ]+csrr[         ]+a0,mhpmcounter16
+[      ]+[0-9a-f]+:[   ]+b1102573[     ]+csrr[         ]+a0,mhpmcounter17
+[      ]+[0-9a-f]+:[   ]+b1202573[     ]+csrr[         ]+a0,mhpmcounter18
+[      ]+[0-9a-f]+:[   ]+b1302573[     ]+csrr[         ]+a0,mhpmcounter19
+[      ]+[0-9a-f]+:[   ]+b1402573[     ]+csrr[         ]+a0,mhpmcounter20
+[      ]+[0-9a-f]+:[   ]+b1502573[     ]+csrr[         ]+a0,mhpmcounter21
+[      ]+[0-9a-f]+:[   ]+b1602573[     ]+csrr[         ]+a0,mhpmcounter22
+[      ]+[0-9a-f]+:[   ]+b1702573[     ]+csrr[         ]+a0,mhpmcounter23
+[      ]+[0-9a-f]+:[   ]+b1802573[     ]+csrr[         ]+a0,mhpmcounter24
+[      ]+[0-9a-f]+:[   ]+b1902573[     ]+csrr[         ]+a0,mhpmcounter25
+[      ]+[0-9a-f]+:[   ]+b1a02573[     ]+csrr[         ]+a0,mhpmcounter26
+[      ]+[0-9a-f]+:[   ]+b1b02573[     ]+csrr[         ]+a0,mhpmcounter27
+[      ]+[0-9a-f]+:[   ]+b1c02573[     ]+csrr[         ]+a0,mhpmcounter28
+[      ]+[0-9a-f]+:[   ]+b1d02573[     ]+csrr[         ]+a0,mhpmcounter29
+[      ]+[0-9a-f]+:[   ]+b1e02573[     ]+csrr[         ]+a0,mhpmcounter30
+[      ]+[0-9a-f]+:[   ]+b1f02573[     ]+csrr[         ]+a0,mhpmcounter31
+[      ]+[0-9a-f]+:[   ]+b8002573[     ]+csrr[         ]+a0,mcycleh
+[      ]+[0-9a-f]+:[   ]+b8202573[     ]+csrr[         ]+a0,minstreth
+[      ]+[0-9a-f]+:[   ]+b8302573[     ]+csrr[         ]+a0,mhpmcounter3h
+[      ]+[0-9a-f]+:[   ]+b8402573[     ]+csrr[         ]+a0,mhpmcounter4h
+[      ]+[0-9a-f]+:[   ]+b8502573[     ]+csrr[         ]+a0,mhpmcounter5h
+[      ]+[0-9a-f]+:[   ]+b8602573[     ]+csrr[         ]+a0,mhpmcounter6h
+[      ]+[0-9a-f]+:[   ]+b8702573[     ]+csrr[         ]+a0,mhpmcounter7h
+[      ]+[0-9a-f]+:[   ]+b8802573[     ]+csrr[         ]+a0,mhpmcounter8h
+[      ]+[0-9a-f]+:[   ]+b8902573[     ]+csrr[         ]+a0,mhpmcounter9h
+[      ]+[0-9a-f]+:[   ]+b8a02573[     ]+csrr[         ]+a0,mhpmcounter10h
+[      ]+[0-9a-f]+:[   ]+b8b02573[     ]+csrr[         ]+a0,mhpmcounter11h
+[      ]+[0-9a-f]+:[   ]+b8c02573[     ]+csrr[         ]+a0,mhpmcounter12h
+[      ]+[0-9a-f]+:[   ]+b8d02573[     ]+csrr[         ]+a0,mhpmcounter13h
+[      ]+[0-9a-f]+:[   ]+b8e02573[     ]+csrr[         ]+a0,mhpmcounter14h
+[      ]+[0-9a-f]+:[   ]+b8f02573[     ]+csrr[         ]+a0,mhpmcounter15h
+[      ]+[0-9a-f]+:[   ]+b9002573[     ]+csrr[         ]+a0,mhpmcounter16h
+[      ]+[0-9a-f]+:[   ]+b9102573[     ]+csrr[         ]+a0,mhpmcounter17h
+[      ]+[0-9a-f]+:[   ]+b9202573[     ]+csrr[         ]+a0,mhpmcounter18h
+[      ]+[0-9a-f]+:[   ]+b9302573[     ]+csrr[         ]+a0,mhpmcounter19h
+[      ]+[0-9a-f]+:[   ]+b9402573[     ]+csrr[         ]+a0,mhpmcounter20h
+[      ]+[0-9a-f]+:[   ]+b9502573[     ]+csrr[         ]+a0,mhpmcounter21h
+[      ]+[0-9a-f]+:[   ]+b9602573[     ]+csrr[         ]+a0,mhpmcounter22h
+[      ]+[0-9a-f]+:[   ]+b9702573[     ]+csrr[         ]+a0,mhpmcounter23h
+[      ]+[0-9a-f]+:[   ]+b9802573[     ]+csrr[         ]+a0,mhpmcounter24h
+[      ]+[0-9a-f]+:[   ]+b9902573[     ]+csrr[         ]+a0,mhpmcounter25h
+[      ]+[0-9a-f]+:[   ]+b9a02573[     ]+csrr[         ]+a0,mhpmcounter26h
+[      ]+[0-9a-f]+:[   ]+b9b02573[     ]+csrr[         ]+a0,mhpmcounter27h
+[      ]+[0-9a-f]+:[   ]+b9c02573[     ]+csrr[         ]+a0,mhpmcounter28h
+[      ]+[0-9a-f]+:[   ]+b9d02573[     ]+csrr[         ]+a0,mhpmcounter29h
+[      ]+[0-9a-f]+:[   ]+b9e02573[     ]+csrr[         ]+a0,mhpmcounter30h
+[      ]+[0-9a-f]+:[   ]+b9f02573[     ]+csrr[         ]+a0,mhpmcounter31h
+[      ]+[0-9a-f]+:[   ]+32002573[     ]+csrr[         ]+a0,mucounteren
+[      ]+[0-9a-f]+:[   ]+32302573[     ]+csrr[         ]+a0,mhpmevent3
+[      ]+[0-9a-f]+:[   ]+32402573[     ]+csrr[         ]+a0,mhpmevent4
+[      ]+[0-9a-f]+:[   ]+32502573[     ]+csrr[         ]+a0,mhpmevent5
+[      ]+[0-9a-f]+:[   ]+32602573[     ]+csrr[         ]+a0,mhpmevent6
+[      ]+[0-9a-f]+:[   ]+32702573[     ]+csrr[         ]+a0,mhpmevent7
+[      ]+[0-9a-f]+:[   ]+32802573[     ]+csrr[         ]+a0,mhpmevent8
+[      ]+[0-9a-f]+:[   ]+32902573[     ]+csrr[         ]+a0,mhpmevent9
+[      ]+[0-9a-f]+:[   ]+32a02573[     ]+csrr[         ]+a0,mhpmevent10
+[      ]+[0-9a-f]+:[   ]+32b02573[     ]+csrr[         ]+a0,mhpmevent11
+[      ]+[0-9a-f]+:[   ]+32c02573[     ]+csrr[         ]+a0,mhpmevent12
+[      ]+[0-9a-f]+:[   ]+32d02573[     ]+csrr[         ]+a0,mhpmevent13
+[      ]+[0-9a-f]+:[   ]+32e02573[     ]+csrr[         ]+a0,mhpmevent14
+[      ]+[0-9a-f]+:[   ]+32f02573[     ]+csrr[         ]+a0,mhpmevent15
+[      ]+[0-9a-f]+:[   ]+33002573[     ]+csrr[         ]+a0,mhpmevent16
+[      ]+[0-9a-f]+:[   ]+33102573[     ]+csrr[         ]+a0,mhpmevent17
+[      ]+[0-9a-f]+:[   ]+33202573[     ]+csrr[         ]+a0,mhpmevent18
+[      ]+[0-9a-f]+:[   ]+33302573[     ]+csrr[         ]+a0,mhpmevent19
+[      ]+[0-9a-f]+:[   ]+33402573[     ]+csrr[         ]+a0,mhpmevent20
+[      ]+[0-9a-f]+:[   ]+33502573[     ]+csrr[         ]+a0,mhpmevent21
+[      ]+[0-9a-f]+:[   ]+33602573[     ]+csrr[         ]+a0,mhpmevent22
+[      ]+[0-9a-f]+:[   ]+33702573[     ]+csrr[         ]+a0,mhpmevent23
+[      ]+[0-9a-f]+:[   ]+33802573[     ]+csrr[         ]+a0,mhpmevent24
+[      ]+[0-9a-f]+:[   ]+33902573[     ]+csrr[         ]+a0,mhpmevent25
+[      ]+[0-9a-f]+:[   ]+33a02573[     ]+csrr[         ]+a0,mhpmevent26
+[      ]+[0-9a-f]+:[   ]+33b02573[     ]+csrr[         ]+a0,mhpmevent27
+[      ]+[0-9a-f]+:[   ]+33c02573[     ]+csrr[         ]+a0,mhpmevent28
+[      ]+[0-9a-f]+:[   ]+33d02573[     ]+csrr[         ]+a0,mhpmevent29
+[      ]+[0-9a-f]+:[   ]+33e02573[     ]+csrr[         ]+a0,mhpmevent30
+[      ]+[0-9a-f]+:[   ]+33f02573[     ]+csrr[         ]+a0,mhpmevent31
+[      ]+[0-9a-f]+:[   ]+7a002573[     ]+csrr[         ]+a0,tselect
+[      ]+[0-9a-f]+:[   ]+7a102573[     ]+csrr[         ]+a0,tdata1
+[      ]+[0-9a-f]+:[   ]+7a202573[     ]+csrr[         ]+a0,tdata2
+[      ]+[0-9a-f]+:[   ]+7a302573[     ]+csrr[         ]+a0,tdata3
+[      ]+[0-9a-f]+:[   ]+7b002573[     ]+csrr[         ]+a0,dcsr
+[      ]+[0-9a-f]+:[   ]+7b102573[     ]+csrr[         ]+a0,dpc
+[      ]+[0-9a-f]+:[   ]+7b202573[     ]+csrr[         ]+a0,dscratch
+[      ]+[0-9a-f]+:[   ]+7b302573[     ]+csrr[         ]+a0,0x7b3
+[      ]+[0-9a-f]+:[   ]+04302573[     ]+csrr[         ]+a0,ubadaddr
+[      ]+[0-9a-f]+:[   ]+14302573[     ]+csrr[         ]+a0,sbadaddr
+[      ]+[0-9a-f]+:[   ]+18002573[     ]+csrr[         ]+a0,sptbr
+[      ]+[0-9a-f]+:[   ]+34302573[     ]+csrr[         ]+a0,mbadaddr
+[      ]+[0-9a-f]+:[   ]+32002573[     ]+csrr[         ]+a0,mucounteren
+[      ]+[0-9a-f]+:[   ]+7b202573[     ]+csrr[         ]+a0,dscratch
+[      ]+[0-9a-f]+:[   ]+20002573[     ]+csrr[         ]+a0,hstatus
+[      ]+[0-9a-f]+:[   ]+20202573[     ]+csrr[         ]+a0,hedeleg
+[      ]+[0-9a-f]+:[   ]+20302573[     ]+csrr[         ]+a0,hideleg
+[      ]+[0-9a-f]+:[   ]+20402573[     ]+csrr[         ]+a0,hie
+[      ]+[0-9a-f]+:[   ]+20502573[     ]+csrr[         ]+a0,htvec
+[      ]+[0-9a-f]+:[   ]+24002573[     ]+csrr[         ]+a0,hscratch
+[      ]+[0-9a-f]+:[   ]+24102573[     ]+csrr[         ]+a0,hepc
+[      ]+[0-9a-f]+:[   ]+24202573[     ]+csrr[         ]+a0,hcause
+[      ]+[0-9a-f]+:[   ]+24302573[     ]+csrr[         ]+a0,hbadaddr
+[      ]+[0-9a-f]+:[   ]+24402573[     ]+csrr[         ]+a0,hip
+[      ]+[0-9a-f]+:[   ]+38002573[     ]+csrr[         ]+a0,mbase
+[      ]+[0-9a-f]+:[   ]+38102573[     ]+csrr[         ]+a0,mbound
+[      ]+[0-9a-f]+:[   ]+38202573[     ]+csrr[         ]+a0,mibase
+[      ]+[0-9a-f]+:[   ]+38302573[     ]+csrr[         ]+a0,mibound
+[      ]+[0-9a-f]+:[   ]+38402573[     ]+csrr[         ]+a0,mdbase
+[      ]+[0-9a-f]+:[   ]+38502573[     ]+csrr[         ]+a0,mdbound
+[      ]+[0-9a-f]+:[   ]+32102573[     ]+csrr[         ]+a0,mscounteren
+[      ]+[0-9a-f]+:[   ]+32202573[     ]+csrr[         ]+a0,mhcounteren
diff --git a/gas/testsuite/gas/riscv/priv-reg-version-1p9p1.d b/gas/testsuite/gas/riscv/priv-reg-version-1p9p1.d
new file mode 100644 (file)
index 0000000..6162803
--- /dev/null
@@ -0,0 +1,257 @@
+#as: -march=rv32if -mpriv-spec=1.9.1
+#source: priv-reg.s
+#objdump: -dr -Mpriv-spec=1.9.1
+
+.*:[   ]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <.text>:
+[      ]+[0-9a-f]+:[   ]+00002573[     ]+csrr[         ]+a0,ustatus
+[      ]+[0-9a-f]+:[   ]+00402573[     ]+csrr[         ]+a0,uie
+[      ]+[0-9a-f]+:[   ]+00502573[     ]+csrr[         ]+a0,utvec
+[      ]+[0-9a-f]+:[   ]+04002573[     ]+csrr[         ]+a0,uscratch
+[      ]+[0-9a-f]+:[   ]+04102573[     ]+csrr[         ]+a0,uepc
+[      ]+[0-9a-f]+:[   ]+04202573[     ]+csrr[         ]+a0,ucause
+[      ]+[0-9a-f]+:[   ]+04302573[     ]+csrr[         ]+a0,ubadaddr
+[      ]+[0-9a-f]+:[   ]+04402573[     ]+csrr[         ]+a0,uip
+[      ]+[0-9a-f]+:[   ]+00102573[     ]+frflags[      ]+a0
+[      ]+[0-9a-f]+:[   ]+00202573[     ]+frrm[         ]+a0
+[      ]+[0-9a-f]+:[   ]+00302573[     ]+frcsr[        ]+a0
+[      ]+[0-9a-f]+:[   ]+c0002573[     ]+rdcycle[      ]+a0
+[      ]+[0-9a-f]+:[   ]+c0102573[     ]+rdtime[       ]+a0
+[      ]+[0-9a-f]+:[   ]+c0202573[     ]+rdinstret[    ]+a0
+[      ]+[0-9a-f]+:[   ]+c0302573[     ]+csrr[         ]+a0,hpmcounter3
+[      ]+[0-9a-f]+:[   ]+c0402573[     ]+csrr[         ]+a0,hpmcounter4
+[      ]+[0-9a-f]+:[   ]+c0502573[     ]+csrr[         ]+a0,hpmcounter5
+[      ]+[0-9a-f]+:[   ]+c0602573[     ]+csrr[         ]+a0,hpmcounter6
+[      ]+[0-9a-f]+:[   ]+c0702573[     ]+csrr[         ]+a0,hpmcounter7
+[      ]+[0-9a-f]+:[   ]+c0802573[     ]+csrr[         ]+a0,hpmcounter8
+[      ]+[0-9a-f]+:[   ]+c0902573[     ]+csrr[         ]+a0,hpmcounter9
+[      ]+[0-9a-f]+:[   ]+c0a02573[     ]+csrr[         ]+a0,hpmcounter10
+[      ]+[0-9a-f]+:[   ]+c0b02573[     ]+csrr[         ]+a0,hpmcounter11
+[      ]+[0-9a-f]+:[   ]+c0c02573[     ]+csrr[         ]+a0,hpmcounter12
+[      ]+[0-9a-f]+:[   ]+c0d02573[     ]+csrr[         ]+a0,hpmcounter13
+[      ]+[0-9a-f]+:[   ]+c0e02573[     ]+csrr[         ]+a0,hpmcounter14
+[      ]+[0-9a-f]+:[   ]+c0f02573[     ]+csrr[         ]+a0,hpmcounter15
+[      ]+[0-9a-f]+:[   ]+c1002573[     ]+csrr[         ]+a0,hpmcounter16
+[      ]+[0-9a-f]+:[   ]+c1102573[     ]+csrr[         ]+a0,hpmcounter17
+[      ]+[0-9a-f]+:[   ]+c1202573[     ]+csrr[         ]+a0,hpmcounter18
+[      ]+[0-9a-f]+:[   ]+c1302573[     ]+csrr[         ]+a0,hpmcounter19
+[      ]+[0-9a-f]+:[   ]+c1402573[     ]+csrr[         ]+a0,hpmcounter20
+[      ]+[0-9a-f]+:[   ]+c1502573[     ]+csrr[         ]+a0,hpmcounter21
+[      ]+[0-9a-f]+:[   ]+c1602573[     ]+csrr[         ]+a0,hpmcounter22
+[      ]+[0-9a-f]+:[   ]+c1702573[     ]+csrr[         ]+a0,hpmcounter23
+[      ]+[0-9a-f]+:[   ]+c1802573[     ]+csrr[         ]+a0,hpmcounter24
+[      ]+[0-9a-f]+:[   ]+c1902573[     ]+csrr[         ]+a0,hpmcounter25
+[      ]+[0-9a-f]+:[   ]+c1a02573[     ]+csrr[         ]+a0,hpmcounter26
+[      ]+[0-9a-f]+:[   ]+c1b02573[     ]+csrr[         ]+a0,hpmcounter27
+[      ]+[0-9a-f]+:[   ]+c1c02573[     ]+csrr[         ]+a0,hpmcounter28
+[      ]+[0-9a-f]+:[   ]+c1d02573[     ]+csrr[         ]+a0,hpmcounter29
+[      ]+[0-9a-f]+:[   ]+c1e02573[     ]+csrr[         ]+a0,hpmcounter30
+[      ]+[0-9a-f]+:[   ]+c1f02573[     ]+csrr[         ]+a0,hpmcounter31
+[      ]+[0-9a-f]+:[   ]+c8002573[     ]+rdcycleh[     ]+a0
+[      ]+[0-9a-f]+:[   ]+c8102573[     ]+rdtimeh[      ]+a0
+[      ]+[0-9a-f]+:[   ]+c8202573[     ]+rdinstreth[   ]+a0
+[      ]+[0-9a-f]+:[   ]+c8302573[     ]+csrr[         ]+a0,hpmcounter3h
+[      ]+[0-9a-f]+:[   ]+c8402573[     ]+csrr[         ]+a0,hpmcounter4h
+[      ]+[0-9a-f]+:[   ]+c8502573[     ]+csrr[         ]+a0,hpmcounter5h
+[      ]+[0-9a-f]+:[   ]+c8602573[     ]+csrr[         ]+a0,hpmcounter6h
+[      ]+[0-9a-f]+:[   ]+c8702573[     ]+csrr[         ]+a0,hpmcounter7h
+[      ]+[0-9a-f]+:[   ]+c8802573[     ]+csrr[         ]+a0,hpmcounter8h
+[      ]+[0-9a-f]+:[   ]+c8902573[     ]+csrr[         ]+a0,hpmcounter9h
+[      ]+[0-9a-f]+:[   ]+c8a02573[     ]+csrr[         ]+a0,hpmcounter10h
+[      ]+[0-9a-f]+:[   ]+c8b02573[     ]+csrr[         ]+a0,hpmcounter11h
+[      ]+[0-9a-f]+:[   ]+c8c02573[     ]+csrr[         ]+a0,hpmcounter12h
+[      ]+[0-9a-f]+:[   ]+c8d02573[     ]+csrr[         ]+a0,hpmcounter13h
+[      ]+[0-9a-f]+:[   ]+c8e02573[     ]+csrr[         ]+a0,hpmcounter14h
+[      ]+[0-9a-f]+:[   ]+c8f02573[     ]+csrr[         ]+a0,hpmcounter15h
+[      ]+[0-9a-f]+:[   ]+c9002573[     ]+csrr[         ]+a0,hpmcounter16h
+[      ]+[0-9a-f]+:[   ]+c9102573[     ]+csrr[         ]+a0,hpmcounter17h
+[      ]+[0-9a-f]+:[   ]+c9202573[     ]+csrr[         ]+a0,hpmcounter18h
+[      ]+[0-9a-f]+:[   ]+c9302573[     ]+csrr[         ]+a0,hpmcounter19h
+[      ]+[0-9a-f]+:[   ]+c9402573[     ]+csrr[         ]+a0,hpmcounter20h
+[      ]+[0-9a-f]+:[   ]+c9502573[     ]+csrr[         ]+a0,hpmcounter21h
+[      ]+[0-9a-f]+:[   ]+c9602573[     ]+csrr[         ]+a0,hpmcounter22h
+[      ]+[0-9a-f]+:[   ]+c9702573[     ]+csrr[         ]+a0,hpmcounter23h
+[      ]+[0-9a-f]+:[   ]+c9802573[     ]+csrr[         ]+a0,hpmcounter24h
+[      ]+[0-9a-f]+:[   ]+c9902573[     ]+csrr[         ]+a0,hpmcounter25h
+[      ]+[0-9a-f]+:[   ]+c9a02573[     ]+csrr[         ]+a0,hpmcounter26h
+[      ]+[0-9a-f]+:[   ]+c9b02573[     ]+csrr[         ]+a0,hpmcounter27h
+[      ]+[0-9a-f]+:[   ]+c9c02573[     ]+csrr[         ]+a0,hpmcounter28h
+[      ]+[0-9a-f]+:[   ]+c9d02573[     ]+csrr[         ]+a0,hpmcounter29h
+[      ]+[0-9a-f]+:[   ]+c9e02573[     ]+csrr[         ]+a0,hpmcounter30h
+[      ]+[0-9a-f]+:[   ]+c9f02573[     ]+csrr[         ]+a0,hpmcounter31h
+[      ]+[0-9a-f]+:[   ]+10002573[     ]+csrr[         ]+a0,sstatus
+[      ]+[0-9a-f]+:[   ]+10202573[     ]+csrr[         ]+a0,sedeleg
+[      ]+[0-9a-f]+:[   ]+10302573[     ]+csrr[         ]+a0,sideleg
+[      ]+[0-9a-f]+:[   ]+10402573[     ]+csrr[         ]+a0,sie
+[      ]+[0-9a-f]+:[   ]+10502573[     ]+csrr[         ]+a0,stvec
+[      ]+[0-9a-f]+:[   ]+10602573[     ]+csrr[         ]+a0,0x106
+[      ]+[0-9a-f]+:[   ]+14002573[     ]+csrr[         ]+a0,sscratch
+[      ]+[0-9a-f]+:[   ]+14102573[     ]+csrr[         ]+a0,sepc
+[      ]+[0-9a-f]+:[   ]+14202573[     ]+csrr[         ]+a0,scause
+[      ]+[0-9a-f]+:[   ]+14302573[     ]+csrr[         ]+a0,sbadaddr
+[      ]+[0-9a-f]+:[   ]+14402573[     ]+csrr[         ]+a0,sip
+[      ]+[0-9a-f]+:[   ]+18002573[     ]+csrr[         ]+a0,sptbr
+[      ]+[0-9a-f]+:[   ]+f1102573[     ]+csrr[         ]+a0,mvendorid
+[      ]+[0-9a-f]+:[   ]+f1202573[     ]+csrr[         ]+a0,marchid
+[      ]+[0-9a-f]+:[   ]+f1302573[     ]+csrr[         ]+a0,mimpid
+[      ]+[0-9a-f]+:[   ]+f1402573[     ]+csrr[         ]+a0,mhartid
+[      ]+[0-9a-f]+:[   ]+30002573[     ]+csrr[         ]+a0,mstatus
+[      ]+[0-9a-f]+:[   ]+30102573[     ]+csrr[         ]+a0,misa
+[      ]+[0-9a-f]+:[   ]+30202573[     ]+csrr[         ]+a0,medeleg
+[      ]+[0-9a-f]+:[   ]+30302573[     ]+csrr[         ]+a0,mideleg
+[      ]+[0-9a-f]+:[   ]+30402573[     ]+csrr[         ]+a0,mie
+[      ]+[0-9a-f]+:[   ]+30502573[     ]+csrr[         ]+a0,mtvec
+[      ]+[0-9a-f]+:[   ]+30602573[     ]+csrr[         ]+a0,0x306
+[      ]+[0-9a-f]+:[   ]+34002573[     ]+csrr[         ]+a0,mscratch
+[      ]+[0-9a-f]+:[   ]+34102573[     ]+csrr[         ]+a0,mepc
+[      ]+[0-9a-f]+:[   ]+34202573[     ]+csrr[         ]+a0,mcause
+[      ]+[0-9a-f]+:[   ]+34302573[     ]+csrr[         ]+a0,mbadaddr
+[      ]+[0-9a-f]+:[   ]+34402573[     ]+csrr[         ]+a0,mip
+[      ]+[0-9a-f]+:[   ]+3a002573[     ]+csrr[         ]+a0,0x3a0
+[      ]+[0-9a-f]+:[   ]+3a102573[     ]+csrr[         ]+a0,0x3a1
+[      ]+[0-9a-f]+:[   ]+3a202573[     ]+csrr[         ]+a0,0x3a2
+[      ]+[0-9a-f]+:[   ]+3a302573[     ]+csrr[         ]+a0,0x3a3
+[      ]+[0-9a-f]+:[   ]+3b002573[     ]+csrr[         ]+a0,0x3b0
+[      ]+[0-9a-f]+:[   ]+3b102573[     ]+csrr[         ]+a0,0x3b1
+[      ]+[0-9a-f]+:[   ]+3b202573[     ]+csrr[         ]+a0,0x3b2
+[      ]+[0-9a-f]+:[   ]+3b302573[     ]+csrr[         ]+a0,0x3b3
+[      ]+[0-9a-f]+:[   ]+3b402573[     ]+csrr[         ]+a0,0x3b4
+[      ]+[0-9a-f]+:[   ]+3b502573[     ]+csrr[         ]+a0,0x3b5
+[      ]+[0-9a-f]+:[   ]+3b602573[     ]+csrr[         ]+a0,0x3b6
+[      ]+[0-9a-f]+:[   ]+3b702573[     ]+csrr[         ]+a0,0x3b7
+[      ]+[0-9a-f]+:[   ]+3b802573[     ]+csrr[         ]+a0,0x3b8
+[      ]+[0-9a-f]+:[   ]+3b902573[     ]+csrr[         ]+a0,0x3b9
+[      ]+[0-9a-f]+:[   ]+3ba02573[     ]+csrr[         ]+a0,0x3ba
+[      ]+[0-9a-f]+:[   ]+3bb02573[     ]+csrr[         ]+a0,0x3bb
+[      ]+[0-9a-f]+:[   ]+3bc02573[     ]+csrr[         ]+a0,0x3bc
+[      ]+[0-9a-f]+:[   ]+3bd02573[     ]+csrr[         ]+a0,0x3bd
+[      ]+[0-9a-f]+:[   ]+3be02573[     ]+csrr[         ]+a0,0x3be
+[      ]+[0-9a-f]+:[   ]+3bf02573[     ]+csrr[         ]+a0,0x3bf
+[      ]+[0-9a-f]+:[   ]+b0002573[     ]+csrr[         ]+a0,mcycle
+[      ]+[0-9a-f]+:[   ]+b0202573[     ]+csrr[         ]+a0,minstret
+[      ]+[0-9a-f]+:[   ]+b0302573[     ]+csrr[         ]+a0,mhpmcounter3
+[      ]+[0-9a-f]+:[   ]+b0402573[     ]+csrr[         ]+a0,mhpmcounter4
+[      ]+[0-9a-f]+:[   ]+b0502573[     ]+csrr[         ]+a0,mhpmcounter5
+[      ]+[0-9a-f]+:[   ]+b0602573[     ]+csrr[         ]+a0,mhpmcounter6
+[      ]+[0-9a-f]+:[   ]+b0702573[     ]+csrr[         ]+a0,mhpmcounter7
+[      ]+[0-9a-f]+:[   ]+b0802573[     ]+csrr[         ]+a0,mhpmcounter8
+[      ]+[0-9a-f]+:[   ]+b0902573[     ]+csrr[         ]+a0,mhpmcounter9
+[      ]+[0-9a-f]+:[   ]+b0a02573[     ]+csrr[         ]+a0,mhpmcounter10
+[      ]+[0-9a-f]+:[   ]+b0b02573[     ]+csrr[         ]+a0,mhpmcounter11
+[      ]+[0-9a-f]+:[   ]+b0c02573[     ]+csrr[         ]+a0,mhpmcounter12
+[      ]+[0-9a-f]+:[   ]+b0d02573[     ]+csrr[         ]+a0,mhpmcounter13
+[      ]+[0-9a-f]+:[   ]+b0e02573[     ]+csrr[         ]+a0,mhpmcounter14
+[      ]+[0-9a-f]+:[   ]+b0f02573[     ]+csrr[         ]+a0,mhpmcounter15
+[      ]+[0-9a-f]+:[   ]+b1002573[     ]+csrr[         ]+a0,mhpmcounter16
+[      ]+[0-9a-f]+:[   ]+b1102573[     ]+csrr[         ]+a0,mhpmcounter17
+[      ]+[0-9a-f]+:[   ]+b1202573[     ]+csrr[         ]+a0,mhpmcounter18
+[      ]+[0-9a-f]+:[   ]+b1302573[     ]+csrr[         ]+a0,mhpmcounter19
+[      ]+[0-9a-f]+:[   ]+b1402573[     ]+csrr[         ]+a0,mhpmcounter20
+[      ]+[0-9a-f]+:[   ]+b1502573[     ]+csrr[         ]+a0,mhpmcounter21
+[      ]+[0-9a-f]+:[   ]+b1602573[     ]+csrr[         ]+a0,mhpmcounter22
+[      ]+[0-9a-f]+:[   ]+b1702573[     ]+csrr[         ]+a0,mhpmcounter23
+[      ]+[0-9a-f]+:[   ]+b1802573[     ]+csrr[         ]+a0,mhpmcounter24
+[      ]+[0-9a-f]+:[   ]+b1902573[     ]+csrr[         ]+a0,mhpmcounter25
+[      ]+[0-9a-f]+:[   ]+b1a02573[     ]+csrr[         ]+a0,mhpmcounter26
+[      ]+[0-9a-f]+:[   ]+b1b02573[     ]+csrr[         ]+a0,mhpmcounter27
+[      ]+[0-9a-f]+:[   ]+b1c02573[     ]+csrr[         ]+a0,mhpmcounter28
+[      ]+[0-9a-f]+:[   ]+b1d02573[     ]+csrr[         ]+a0,mhpmcounter29
+[      ]+[0-9a-f]+:[   ]+b1e02573[     ]+csrr[         ]+a0,mhpmcounter30
+[      ]+[0-9a-f]+:[   ]+b1f02573[     ]+csrr[         ]+a0,mhpmcounter31
+[      ]+[0-9a-f]+:[   ]+b8002573[     ]+csrr[         ]+a0,mcycleh
+[      ]+[0-9a-f]+:[   ]+b8202573[     ]+csrr[         ]+a0,minstreth
+[      ]+[0-9a-f]+:[   ]+b8302573[     ]+csrr[         ]+a0,mhpmcounter3h
+[      ]+[0-9a-f]+:[   ]+b8402573[     ]+csrr[         ]+a0,mhpmcounter4h
+[      ]+[0-9a-f]+:[   ]+b8502573[     ]+csrr[         ]+a0,mhpmcounter5h
+[      ]+[0-9a-f]+:[   ]+b8602573[     ]+csrr[         ]+a0,mhpmcounter6h
+[      ]+[0-9a-f]+:[   ]+b8702573[     ]+csrr[         ]+a0,mhpmcounter7h
+[      ]+[0-9a-f]+:[   ]+b8802573[     ]+csrr[         ]+a0,mhpmcounter8h
+[      ]+[0-9a-f]+:[   ]+b8902573[     ]+csrr[         ]+a0,mhpmcounter9h
+[      ]+[0-9a-f]+:[   ]+b8a02573[     ]+csrr[         ]+a0,mhpmcounter10h
+[      ]+[0-9a-f]+:[   ]+b8b02573[     ]+csrr[         ]+a0,mhpmcounter11h
+[      ]+[0-9a-f]+:[   ]+b8c02573[     ]+csrr[         ]+a0,mhpmcounter12h
+[      ]+[0-9a-f]+:[   ]+b8d02573[     ]+csrr[         ]+a0,mhpmcounter13h
+[      ]+[0-9a-f]+:[   ]+b8e02573[     ]+csrr[         ]+a0,mhpmcounter14h
+[      ]+[0-9a-f]+:[   ]+b8f02573[     ]+csrr[         ]+a0,mhpmcounter15h
+[      ]+[0-9a-f]+:[   ]+b9002573[     ]+csrr[         ]+a0,mhpmcounter16h
+[      ]+[0-9a-f]+:[   ]+b9102573[     ]+csrr[         ]+a0,mhpmcounter17h
+[      ]+[0-9a-f]+:[   ]+b9202573[     ]+csrr[         ]+a0,mhpmcounter18h
+[      ]+[0-9a-f]+:[   ]+b9302573[     ]+csrr[         ]+a0,mhpmcounter19h
+[      ]+[0-9a-f]+:[   ]+b9402573[     ]+csrr[         ]+a0,mhpmcounter20h
+[      ]+[0-9a-f]+:[   ]+b9502573[     ]+csrr[         ]+a0,mhpmcounter21h
+[      ]+[0-9a-f]+:[   ]+b9602573[     ]+csrr[         ]+a0,mhpmcounter22h
+[      ]+[0-9a-f]+:[   ]+b9702573[     ]+csrr[         ]+a0,mhpmcounter23h
+[      ]+[0-9a-f]+:[   ]+b9802573[     ]+csrr[         ]+a0,mhpmcounter24h
+[      ]+[0-9a-f]+:[   ]+b9902573[     ]+csrr[         ]+a0,mhpmcounter25h
+[      ]+[0-9a-f]+:[   ]+b9a02573[     ]+csrr[         ]+a0,mhpmcounter26h
+[      ]+[0-9a-f]+:[   ]+b9b02573[     ]+csrr[         ]+a0,mhpmcounter27h
+[      ]+[0-9a-f]+:[   ]+b9c02573[     ]+csrr[         ]+a0,mhpmcounter28h
+[      ]+[0-9a-f]+:[   ]+b9d02573[     ]+csrr[         ]+a0,mhpmcounter29h
+[      ]+[0-9a-f]+:[   ]+b9e02573[     ]+csrr[         ]+a0,mhpmcounter30h
+[      ]+[0-9a-f]+:[   ]+b9f02573[     ]+csrr[         ]+a0,mhpmcounter31h
+[      ]+[0-9a-f]+:[   ]+32002573[     ]+csrr[         ]+a0,mucounteren
+[      ]+[0-9a-f]+:[   ]+32302573[     ]+csrr[         ]+a0,mhpmevent3
+[      ]+[0-9a-f]+:[   ]+32402573[     ]+csrr[         ]+a0,mhpmevent4
+[      ]+[0-9a-f]+:[   ]+32502573[     ]+csrr[         ]+a0,mhpmevent5
+[      ]+[0-9a-f]+:[   ]+32602573[     ]+csrr[         ]+a0,mhpmevent6
+[      ]+[0-9a-f]+:[   ]+32702573[     ]+csrr[         ]+a0,mhpmevent7
+[      ]+[0-9a-f]+:[   ]+32802573[     ]+csrr[         ]+a0,mhpmevent8
+[      ]+[0-9a-f]+:[   ]+32902573[     ]+csrr[         ]+a0,mhpmevent9
+[      ]+[0-9a-f]+:[   ]+32a02573[     ]+csrr[         ]+a0,mhpmevent10
+[      ]+[0-9a-f]+:[   ]+32b02573[     ]+csrr[         ]+a0,mhpmevent11
+[      ]+[0-9a-f]+:[   ]+32c02573[     ]+csrr[         ]+a0,mhpmevent12
+[      ]+[0-9a-f]+:[   ]+32d02573[     ]+csrr[         ]+a0,mhpmevent13
+[      ]+[0-9a-f]+:[   ]+32e02573[     ]+csrr[         ]+a0,mhpmevent14
+[      ]+[0-9a-f]+:[   ]+32f02573[     ]+csrr[         ]+a0,mhpmevent15
+[      ]+[0-9a-f]+:[   ]+33002573[     ]+csrr[         ]+a0,mhpmevent16
+[      ]+[0-9a-f]+:[   ]+33102573[     ]+csrr[         ]+a0,mhpmevent17
+[      ]+[0-9a-f]+:[   ]+33202573[     ]+csrr[         ]+a0,mhpmevent18
+[      ]+[0-9a-f]+:[   ]+33302573[     ]+csrr[         ]+a0,mhpmevent19
+[      ]+[0-9a-f]+:[   ]+33402573[     ]+csrr[         ]+a0,mhpmevent20
+[      ]+[0-9a-f]+:[   ]+33502573[     ]+csrr[         ]+a0,mhpmevent21
+[      ]+[0-9a-f]+:[   ]+33602573[     ]+csrr[         ]+a0,mhpmevent22
+[      ]+[0-9a-f]+:[   ]+33702573[     ]+csrr[         ]+a0,mhpmevent23
+[      ]+[0-9a-f]+:[   ]+33802573[     ]+csrr[         ]+a0,mhpmevent24
+[      ]+[0-9a-f]+:[   ]+33902573[     ]+csrr[         ]+a0,mhpmevent25
+[      ]+[0-9a-f]+:[   ]+33a02573[     ]+csrr[         ]+a0,mhpmevent26
+[      ]+[0-9a-f]+:[   ]+33b02573[     ]+csrr[         ]+a0,mhpmevent27
+[      ]+[0-9a-f]+:[   ]+33c02573[     ]+csrr[         ]+a0,mhpmevent28
+[      ]+[0-9a-f]+:[   ]+33d02573[     ]+csrr[         ]+a0,mhpmevent29
+[      ]+[0-9a-f]+:[   ]+33e02573[     ]+csrr[         ]+a0,mhpmevent30
+[      ]+[0-9a-f]+:[   ]+33f02573[     ]+csrr[         ]+a0,mhpmevent31
+[      ]+[0-9a-f]+:[   ]+7a002573[     ]+csrr[         ]+a0,tselect
+[      ]+[0-9a-f]+:[   ]+7a102573[     ]+csrr[         ]+a0,tdata1
+[      ]+[0-9a-f]+:[   ]+7a202573[     ]+csrr[         ]+a0,tdata2
+[      ]+[0-9a-f]+:[   ]+7a302573[     ]+csrr[         ]+a0,tdata3
+[      ]+[0-9a-f]+:[   ]+7b002573[     ]+csrr[         ]+a0,dcsr
+[      ]+[0-9a-f]+:[   ]+7b102573[     ]+csrr[         ]+a0,dpc
+[      ]+[0-9a-f]+:[   ]+7b202573[     ]+csrr[         ]+a0,dscratch
+[      ]+[0-9a-f]+:[   ]+7b302573[     ]+csrr[         ]+a0,0x7b3
+[      ]+[0-9a-f]+:[   ]+04302573[     ]+csrr[         ]+a0,ubadaddr
+[      ]+[0-9a-f]+:[   ]+14302573[     ]+csrr[         ]+a0,sbadaddr
+[      ]+[0-9a-f]+:[   ]+18002573[     ]+csrr[         ]+a0,sptbr
+[      ]+[0-9a-f]+:[   ]+34302573[     ]+csrr[         ]+a0,mbadaddr
+[      ]+[0-9a-f]+:[   ]+32002573[     ]+csrr[         ]+a0,mucounteren
+[      ]+[0-9a-f]+:[   ]+7b202573[     ]+csrr[         ]+a0,dscratch
+[      ]+[0-9a-f]+:[   ]+20002573[     ]+csrr[         ]+a0,hstatus
+[      ]+[0-9a-f]+:[   ]+20202573[     ]+csrr[         ]+a0,hedeleg
+[      ]+[0-9a-f]+:[   ]+20302573[     ]+csrr[         ]+a0,hideleg
+[      ]+[0-9a-f]+:[   ]+20402573[     ]+csrr[         ]+a0,hie
+[      ]+[0-9a-f]+:[   ]+20502573[     ]+csrr[         ]+a0,htvec
+[      ]+[0-9a-f]+:[   ]+24002573[     ]+csrr[         ]+a0,hscratch
+[      ]+[0-9a-f]+:[   ]+24102573[     ]+csrr[         ]+a0,hepc
+[      ]+[0-9a-f]+:[   ]+24202573[     ]+csrr[         ]+a0,hcause
+[      ]+[0-9a-f]+:[   ]+24302573[     ]+csrr[         ]+a0,hbadaddr
+[      ]+[0-9a-f]+:[   ]+24402573[     ]+csrr[         ]+a0,hip
+[      ]+[0-9a-f]+:[   ]+38002573[     ]+csrr[         ]+a0,mbase
+[      ]+[0-9a-f]+:[   ]+38102573[     ]+csrr[         ]+a0,mbound
+[      ]+[0-9a-f]+:[   ]+38202573[     ]+csrr[         ]+a0,mibase
+[      ]+[0-9a-f]+:[   ]+38302573[     ]+csrr[         ]+a0,mibound
+[      ]+[0-9a-f]+:[   ]+38402573[     ]+csrr[         ]+a0,mdbase
+[      ]+[0-9a-f]+:[   ]+38502573[     ]+csrr[         ]+a0,mdbound
+[      ]+[0-9a-f]+:[   ]+32102573[     ]+csrr[         ]+a0,mscounteren
+[      ]+[0-9a-f]+:[   ]+32202573[     ]+csrr[         ]+a0,mhcounteren
diff --git a/gas/testsuite/gas/riscv/priv-reg.d b/gas/testsuite/gas/riscv/priv-reg.d
deleted file mode 100644 (file)
index 8fc41d2..0000000
+++ /dev/null
@@ -1,256 +0,0 @@
-#as: -march=rv32if
-#objdump: -dr
-
-.*:[   ]+file format .*
-
-
-Disassembly of section .text:
-
-0+000 <.text>:
-[      ]+[0-9a-f]+:[   ]+00002573[     ]+csrr[         ]+a0,ustatus
-[      ]+[0-9a-f]+:[   ]+00402573[     ]+csrr[         ]+a0,uie
-[      ]+[0-9a-f]+:[   ]+00502573[     ]+csrr[         ]+a0,utvec
-[      ]+[0-9a-f]+:[   ]+04002573[     ]+csrr[         ]+a0,uscratch
-[      ]+[0-9a-f]+:[   ]+04102573[     ]+csrr[         ]+a0,uepc
-[      ]+[0-9a-f]+:[   ]+04202573[     ]+csrr[         ]+a0,ucause
-[      ]+[0-9a-f]+:[   ]+04302573[     ]+csrr[         ]+a0,utval
-[      ]+[0-9a-f]+:[   ]+04402573[     ]+csrr[         ]+a0,uip
-[      ]+[0-9a-f]+:[   ]+00102573[     ]+frflags[      ]+a0
-[      ]+[0-9a-f]+:[   ]+00202573[     ]+frrm[         ]+a0
-[      ]+[0-9a-f]+:[   ]+00302573[     ]+frcsr[        ]+a0
-[      ]+[0-9a-f]+:[   ]+c0002573[     ]+rdcycle[      ]+a0
-[      ]+[0-9a-f]+:[   ]+c0102573[     ]+rdtime[       ]+a0
-[      ]+[0-9a-f]+:[   ]+c0202573[     ]+rdinstret[    ]+a0
-[      ]+[0-9a-f]+:[   ]+c0302573[     ]+csrr[         ]+a0,hpmcounter3
-[      ]+[0-9a-f]+:[   ]+c0402573[     ]+csrr[         ]+a0,hpmcounter4
-[      ]+[0-9a-f]+:[   ]+c0502573[     ]+csrr[         ]+a0,hpmcounter5
-[      ]+[0-9a-f]+:[   ]+c0602573[     ]+csrr[         ]+a0,hpmcounter6
-[      ]+[0-9a-f]+:[   ]+c0702573[     ]+csrr[         ]+a0,hpmcounter7
-[      ]+[0-9a-f]+:[   ]+c0802573[     ]+csrr[         ]+a0,hpmcounter8
-[      ]+[0-9a-f]+:[   ]+c0902573[     ]+csrr[         ]+a0,hpmcounter9
-[      ]+[0-9a-f]+:[   ]+c0a02573[     ]+csrr[         ]+a0,hpmcounter10
-[      ]+[0-9a-f]+:[   ]+c0b02573[     ]+csrr[         ]+a0,hpmcounter11
-[      ]+[0-9a-f]+:[   ]+c0c02573[     ]+csrr[         ]+a0,hpmcounter12
-[      ]+[0-9a-f]+:[   ]+c0d02573[     ]+csrr[         ]+a0,hpmcounter13
-[      ]+[0-9a-f]+:[   ]+c0e02573[     ]+csrr[         ]+a0,hpmcounter14
-[      ]+[0-9a-f]+:[   ]+c0f02573[     ]+csrr[         ]+a0,hpmcounter15
-[      ]+[0-9a-f]+:[   ]+c1002573[     ]+csrr[         ]+a0,hpmcounter16
-[      ]+[0-9a-f]+:[   ]+c1102573[     ]+csrr[         ]+a0,hpmcounter17
-[      ]+[0-9a-f]+:[   ]+c1202573[     ]+csrr[         ]+a0,hpmcounter18
-[      ]+[0-9a-f]+:[   ]+c1302573[     ]+csrr[         ]+a0,hpmcounter19
-[      ]+[0-9a-f]+:[   ]+c1402573[     ]+csrr[         ]+a0,hpmcounter20
-[      ]+[0-9a-f]+:[   ]+c1502573[     ]+csrr[         ]+a0,hpmcounter21
-[      ]+[0-9a-f]+:[   ]+c1602573[     ]+csrr[         ]+a0,hpmcounter22
-[      ]+[0-9a-f]+:[   ]+c1702573[     ]+csrr[         ]+a0,hpmcounter23
-[      ]+[0-9a-f]+:[   ]+c1802573[     ]+csrr[         ]+a0,hpmcounter24
-[      ]+[0-9a-f]+:[   ]+c1902573[     ]+csrr[         ]+a0,hpmcounter25
-[      ]+[0-9a-f]+:[   ]+c1a02573[     ]+csrr[         ]+a0,hpmcounter26
-[      ]+[0-9a-f]+:[   ]+c1b02573[     ]+csrr[         ]+a0,hpmcounter27
-[      ]+[0-9a-f]+:[   ]+c1c02573[     ]+csrr[         ]+a0,hpmcounter28
-[      ]+[0-9a-f]+:[   ]+c1d02573[     ]+csrr[         ]+a0,hpmcounter29
-[      ]+[0-9a-f]+:[   ]+c1e02573[     ]+csrr[         ]+a0,hpmcounter30
-[      ]+[0-9a-f]+:[   ]+c1f02573[     ]+csrr[         ]+a0,hpmcounter31
-[      ]+[0-9a-f]+:[   ]+c8002573[     ]+rdcycleh[     ]+a0
-[      ]+[0-9a-f]+:[   ]+c8102573[     ]+rdtimeh[      ]+a0
-[      ]+[0-9a-f]+:[   ]+c8202573[     ]+rdinstreth[   ]+a0
-[      ]+[0-9a-f]+:[   ]+c8302573[     ]+csrr[         ]+a0,hpmcounter3h
-[      ]+[0-9a-f]+:[   ]+c8402573[     ]+csrr[         ]+a0,hpmcounter4h
-[      ]+[0-9a-f]+:[   ]+c8502573[     ]+csrr[         ]+a0,hpmcounter5h
-[      ]+[0-9a-f]+:[   ]+c8602573[     ]+csrr[         ]+a0,hpmcounter6h
-[      ]+[0-9a-f]+:[   ]+c8702573[     ]+csrr[         ]+a0,hpmcounter7h
-[      ]+[0-9a-f]+:[   ]+c8802573[     ]+csrr[         ]+a0,hpmcounter8h
-[      ]+[0-9a-f]+:[   ]+c8902573[     ]+csrr[         ]+a0,hpmcounter9h
-[      ]+[0-9a-f]+:[   ]+c8a02573[     ]+csrr[         ]+a0,hpmcounter10h
-[      ]+[0-9a-f]+:[   ]+c8b02573[     ]+csrr[         ]+a0,hpmcounter11h
-[      ]+[0-9a-f]+:[   ]+c8c02573[     ]+csrr[         ]+a0,hpmcounter12h
-[      ]+[0-9a-f]+:[   ]+c8d02573[     ]+csrr[         ]+a0,hpmcounter13h
-[      ]+[0-9a-f]+:[   ]+c8e02573[     ]+csrr[         ]+a0,hpmcounter14h
-[      ]+[0-9a-f]+:[   ]+c8f02573[     ]+csrr[         ]+a0,hpmcounter15h
-[      ]+[0-9a-f]+:[   ]+c9002573[     ]+csrr[         ]+a0,hpmcounter16h
-[      ]+[0-9a-f]+:[   ]+c9102573[     ]+csrr[         ]+a0,hpmcounter17h
-[      ]+[0-9a-f]+:[   ]+c9202573[     ]+csrr[         ]+a0,hpmcounter18h
-[      ]+[0-9a-f]+:[   ]+c9302573[     ]+csrr[         ]+a0,hpmcounter19h
-[      ]+[0-9a-f]+:[   ]+c9402573[     ]+csrr[         ]+a0,hpmcounter20h
-[      ]+[0-9a-f]+:[   ]+c9502573[     ]+csrr[         ]+a0,hpmcounter21h
-[      ]+[0-9a-f]+:[   ]+c9602573[     ]+csrr[         ]+a0,hpmcounter22h
-[      ]+[0-9a-f]+:[   ]+c9702573[     ]+csrr[         ]+a0,hpmcounter23h
-[      ]+[0-9a-f]+:[   ]+c9802573[     ]+csrr[         ]+a0,hpmcounter24h
-[      ]+[0-9a-f]+:[   ]+c9902573[     ]+csrr[         ]+a0,hpmcounter25h
-[      ]+[0-9a-f]+:[   ]+c9a02573[     ]+csrr[         ]+a0,hpmcounter26h
-[      ]+[0-9a-f]+:[   ]+c9b02573[     ]+csrr[         ]+a0,hpmcounter27h
-[      ]+[0-9a-f]+:[   ]+c9c02573[     ]+csrr[         ]+a0,hpmcounter28h
-[      ]+[0-9a-f]+:[   ]+c9d02573[     ]+csrr[         ]+a0,hpmcounter29h
-[      ]+[0-9a-f]+:[   ]+c9e02573[     ]+csrr[         ]+a0,hpmcounter30h
-[      ]+[0-9a-f]+:[   ]+c9f02573[     ]+csrr[         ]+a0,hpmcounter31h
-[      ]+[0-9a-f]+:[   ]+10002573[     ]+csrr[         ]+a0,sstatus
-[      ]+[0-9a-f]+:[   ]+10202573[     ]+csrr[         ]+a0,sedeleg
-[      ]+[0-9a-f]+:[   ]+10302573[     ]+csrr[         ]+a0,sideleg
-[      ]+[0-9a-f]+:[   ]+10402573[     ]+csrr[         ]+a0,sie
-[      ]+[0-9a-f]+:[   ]+10502573[     ]+csrr[         ]+a0,stvec
-[      ]+[0-9a-f]+:[   ]+10602573[     ]+csrr[         ]+a0,scounteren
-[      ]+[0-9a-f]+:[   ]+14002573[     ]+csrr[         ]+a0,sscratch
-[      ]+[0-9a-f]+:[   ]+14102573[     ]+csrr[         ]+a0,sepc
-[      ]+[0-9a-f]+:[   ]+14202573[     ]+csrr[         ]+a0,scause
-[      ]+[0-9a-f]+:[   ]+14302573[     ]+csrr[         ]+a0,stval
-[      ]+[0-9a-f]+:[   ]+14402573[     ]+csrr[         ]+a0,sip
-[      ]+[0-9a-f]+:[   ]+18002573[     ]+csrr[         ]+a0,satp
-[      ]+[0-9a-f]+:[   ]+f1102573[     ]+csrr[         ]+a0,mvendorid
-[      ]+[0-9a-f]+:[   ]+f1202573[     ]+csrr[         ]+a0,marchid
-[      ]+[0-9a-f]+:[   ]+f1302573[     ]+csrr[         ]+a0,mimpid
-[      ]+[0-9a-f]+:[   ]+f1402573[     ]+csrr[         ]+a0,mhartid
-[      ]+[0-9a-f]+:[   ]+30002573[     ]+csrr[         ]+a0,mstatus
-[      ]+[0-9a-f]+:[   ]+30102573[     ]+csrr[         ]+a0,misa
-[      ]+[0-9a-f]+:[   ]+30202573[     ]+csrr[         ]+a0,medeleg
-[      ]+[0-9a-f]+:[   ]+30302573[     ]+csrr[         ]+a0,mideleg
-[      ]+[0-9a-f]+:[   ]+30402573[     ]+csrr[         ]+a0,mie
-[      ]+[0-9a-f]+:[   ]+30502573[     ]+csrr[         ]+a0,mtvec
-[      ]+[0-9a-f]+:[   ]+30602573[     ]+csrr[         ]+a0,mcounteren
-[      ]+[0-9a-f]+:[   ]+34002573[     ]+csrr[         ]+a0,mscratch
-[      ]+[0-9a-f]+:[   ]+34102573[     ]+csrr[         ]+a0,mepc
-[      ]+[0-9a-f]+:[   ]+34202573[     ]+csrr[         ]+a0,mcause
-[      ]+[0-9a-f]+:[   ]+34302573[     ]+csrr[         ]+a0,mtval
-[      ]+[0-9a-f]+:[   ]+34402573[     ]+csrr[         ]+a0,mip
-[      ]+[0-9a-f]+:[   ]+3a002573[     ]+csrr[         ]+a0,pmpcfg0
-[      ]+[0-9a-f]+:[   ]+3a102573[     ]+csrr[         ]+a0,pmpcfg1
-[      ]+[0-9a-f]+:[   ]+3a202573[     ]+csrr[         ]+a0,pmpcfg2
-[      ]+[0-9a-f]+:[   ]+3a302573[     ]+csrr[         ]+a0,pmpcfg3
-[      ]+[0-9a-f]+:[   ]+3b002573[     ]+csrr[         ]+a0,pmpaddr0
-[      ]+[0-9a-f]+:[   ]+3b102573[     ]+csrr[         ]+a0,pmpaddr1
-[      ]+[0-9a-f]+:[   ]+3b202573[     ]+csrr[         ]+a0,pmpaddr2
-[      ]+[0-9a-f]+:[   ]+3b302573[     ]+csrr[         ]+a0,pmpaddr3
-[      ]+[0-9a-f]+:[   ]+3b402573[     ]+csrr[         ]+a0,pmpaddr4
-[      ]+[0-9a-f]+:[   ]+3b502573[     ]+csrr[         ]+a0,pmpaddr5
-[      ]+[0-9a-f]+:[   ]+3b602573[     ]+csrr[         ]+a0,pmpaddr6
-[      ]+[0-9a-f]+:[   ]+3b702573[     ]+csrr[         ]+a0,pmpaddr7
-[      ]+[0-9a-f]+:[   ]+3b802573[     ]+csrr[         ]+a0,pmpaddr8
-[      ]+[0-9a-f]+:[   ]+3b902573[     ]+csrr[         ]+a0,pmpaddr9
-[      ]+[0-9a-f]+:[   ]+3ba02573[     ]+csrr[         ]+a0,pmpaddr10
-[      ]+[0-9a-f]+:[   ]+3bb02573[     ]+csrr[         ]+a0,pmpaddr11
-[      ]+[0-9a-f]+:[   ]+3bc02573[     ]+csrr[         ]+a0,pmpaddr12
-[      ]+[0-9a-f]+:[   ]+3bd02573[     ]+csrr[         ]+a0,pmpaddr13
-[      ]+[0-9a-f]+:[   ]+3be02573[     ]+csrr[         ]+a0,pmpaddr14
-[      ]+[0-9a-f]+:[   ]+3bf02573[     ]+csrr[         ]+a0,pmpaddr15
-[      ]+[0-9a-f]+:[   ]+b0002573[     ]+csrr[         ]+a0,mcycle
-[      ]+[0-9a-f]+:[   ]+b0202573[     ]+csrr[         ]+a0,minstret
-[      ]+[0-9a-f]+:[   ]+b0302573[     ]+csrr[         ]+a0,mhpmcounter3
-[      ]+[0-9a-f]+:[   ]+b0402573[     ]+csrr[         ]+a0,mhpmcounter4
-[      ]+[0-9a-f]+:[   ]+b0502573[     ]+csrr[         ]+a0,mhpmcounter5
-[      ]+[0-9a-f]+:[   ]+b0602573[     ]+csrr[         ]+a0,mhpmcounter6
-[      ]+[0-9a-f]+:[   ]+b0702573[     ]+csrr[         ]+a0,mhpmcounter7
-[      ]+[0-9a-f]+:[   ]+b0802573[     ]+csrr[         ]+a0,mhpmcounter8
-[      ]+[0-9a-f]+:[   ]+b0902573[     ]+csrr[         ]+a0,mhpmcounter9
-[      ]+[0-9a-f]+:[   ]+b0a02573[     ]+csrr[         ]+a0,mhpmcounter10
-[      ]+[0-9a-f]+:[   ]+b0b02573[     ]+csrr[         ]+a0,mhpmcounter11
-[      ]+[0-9a-f]+:[   ]+b0c02573[     ]+csrr[         ]+a0,mhpmcounter12
-[      ]+[0-9a-f]+:[   ]+b0d02573[     ]+csrr[         ]+a0,mhpmcounter13
-[      ]+[0-9a-f]+:[   ]+b0e02573[     ]+csrr[         ]+a0,mhpmcounter14
-[      ]+[0-9a-f]+:[   ]+b0f02573[     ]+csrr[         ]+a0,mhpmcounter15
-[      ]+[0-9a-f]+:[   ]+b1002573[     ]+csrr[         ]+a0,mhpmcounter16
-[      ]+[0-9a-f]+:[   ]+b1102573[     ]+csrr[         ]+a0,mhpmcounter17
-[      ]+[0-9a-f]+:[   ]+b1202573[     ]+csrr[         ]+a0,mhpmcounter18
-[      ]+[0-9a-f]+:[   ]+b1302573[     ]+csrr[         ]+a0,mhpmcounter19
-[      ]+[0-9a-f]+:[   ]+b1402573[     ]+csrr[         ]+a0,mhpmcounter20
-[      ]+[0-9a-f]+:[   ]+b1502573[     ]+csrr[         ]+a0,mhpmcounter21
-[      ]+[0-9a-f]+:[   ]+b1602573[     ]+csrr[         ]+a0,mhpmcounter22
-[      ]+[0-9a-f]+:[   ]+b1702573[     ]+csrr[         ]+a0,mhpmcounter23
-[      ]+[0-9a-f]+:[   ]+b1802573[     ]+csrr[         ]+a0,mhpmcounter24
-[      ]+[0-9a-f]+:[   ]+b1902573[     ]+csrr[         ]+a0,mhpmcounter25
-[      ]+[0-9a-f]+:[   ]+b1a02573[     ]+csrr[         ]+a0,mhpmcounter26
-[      ]+[0-9a-f]+:[   ]+b1b02573[     ]+csrr[         ]+a0,mhpmcounter27
-[      ]+[0-9a-f]+:[   ]+b1c02573[     ]+csrr[         ]+a0,mhpmcounter28
-[      ]+[0-9a-f]+:[   ]+b1d02573[     ]+csrr[         ]+a0,mhpmcounter29
-[      ]+[0-9a-f]+:[   ]+b1e02573[     ]+csrr[         ]+a0,mhpmcounter30
-[      ]+[0-9a-f]+:[   ]+b1f02573[     ]+csrr[         ]+a0,mhpmcounter31
-[      ]+[0-9a-f]+:[   ]+b8002573[     ]+csrr[         ]+a0,mcycleh
-[      ]+[0-9a-f]+:[   ]+b8202573[     ]+csrr[         ]+a0,minstreth
-[      ]+[0-9a-f]+:[   ]+b8302573[     ]+csrr[         ]+a0,mhpmcounter3h
-[      ]+[0-9a-f]+:[   ]+b8402573[     ]+csrr[         ]+a0,mhpmcounter4h
-[      ]+[0-9a-f]+:[   ]+b8502573[     ]+csrr[         ]+a0,mhpmcounter5h
-[      ]+[0-9a-f]+:[   ]+b8602573[     ]+csrr[         ]+a0,mhpmcounter6h
-[      ]+[0-9a-f]+:[   ]+b8702573[     ]+csrr[         ]+a0,mhpmcounter7h
-[      ]+[0-9a-f]+:[   ]+b8802573[     ]+csrr[         ]+a0,mhpmcounter8h
-[      ]+[0-9a-f]+:[   ]+b8902573[     ]+csrr[         ]+a0,mhpmcounter9h
-[      ]+[0-9a-f]+:[   ]+b8a02573[     ]+csrr[         ]+a0,mhpmcounter10h
-[      ]+[0-9a-f]+:[   ]+b8b02573[     ]+csrr[         ]+a0,mhpmcounter11h
-[      ]+[0-9a-f]+:[   ]+b8c02573[     ]+csrr[         ]+a0,mhpmcounter12h
-[      ]+[0-9a-f]+:[   ]+b8d02573[     ]+csrr[         ]+a0,mhpmcounter13h
-[      ]+[0-9a-f]+:[   ]+b8e02573[     ]+csrr[         ]+a0,mhpmcounter14h
-[      ]+[0-9a-f]+:[   ]+b8f02573[     ]+csrr[         ]+a0,mhpmcounter15h
-[      ]+[0-9a-f]+:[   ]+b9002573[     ]+csrr[         ]+a0,mhpmcounter16h
-[      ]+[0-9a-f]+:[   ]+b9102573[     ]+csrr[         ]+a0,mhpmcounter17h
-[      ]+[0-9a-f]+:[   ]+b9202573[     ]+csrr[         ]+a0,mhpmcounter18h
-[      ]+[0-9a-f]+:[   ]+b9302573[     ]+csrr[         ]+a0,mhpmcounter19h
-[      ]+[0-9a-f]+:[   ]+b9402573[     ]+csrr[         ]+a0,mhpmcounter20h
-[      ]+[0-9a-f]+:[   ]+b9502573[     ]+csrr[         ]+a0,mhpmcounter21h
-[      ]+[0-9a-f]+:[   ]+b9602573[     ]+csrr[         ]+a0,mhpmcounter22h
-[      ]+[0-9a-f]+:[   ]+b9702573[     ]+csrr[         ]+a0,mhpmcounter23h
-[      ]+[0-9a-f]+:[   ]+b9802573[     ]+csrr[         ]+a0,mhpmcounter24h
-[      ]+[0-9a-f]+:[   ]+b9902573[     ]+csrr[         ]+a0,mhpmcounter25h
-[      ]+[0-9a-f]+:[   ]+b9a02573[     ]+csrr[         ]+a0,mhpmcounter26h
-[      ]+[0-9a-f]+:[   ]+b9b02573[     ]+csrr[         ]+a0,mhpmcounter27h
-[      ]+[0-9a-f]+:[   ]+b9c02573[     ]+csrr[         ]+a0,mhpmcounter28h
-[      ]+[0-9a-f]+:[   ]+b9d02573[     ]+csrr[         ]+a0,mhpmcounter29h
-[      ]+[0-9a-f]+:[   ]+b9e02573[     ]+csrr[         ]+a0,mhpmcounter30h
-[      ]+[0-9a-f]+:[   ]+b9f02573[     ]+csrr[         ]+a0,mhpmcounter31h
-[      ]+[0-9a-f]+:[   ]+32002573[     ]+csrr[         ]+a0,mcountinhibit
-[      ]+[0-9a-f]+:[   ]+32302573[     ]+csrr[         ]+a0,mhpmevent3
-[      ]+[0-9a-f]+:[   ]+32402573[     ]+csrr[         ]+a0,mhpmevent4
-[      ]+[0-9a-f]+:[   ]+32502573[     ]+csrr[         ]+a0,mhpmevent5
-[      ]+[0-9a-f]+:[   ]+32602573[     ]+csrr[         ]+a0,mhpmevent6
-[      ]+[0-9a-f]+:[   ]+32702573[     ]+csrr[         ]+a0,mhpmevent7
-[      ]+[0-9a-f]+:[   ]+32802573[     ]+csrr[         ]+a0,mhpmevent8
-[      ]+[0-9a-f]+:[   ]+32902573[     ]+csrr[         ]+a0,mhpmevent9
-[      ]+[0-9a-f]+:[   ]+32a02573[     ]+csrr[         ]+a0,mhpmevent10
-[      ]+[0-9a-f]+:[   ]+32b02573[     ]+csrr[         ]+a0,mhpmevent11
-[      ]+[0-9a-f]+:[   ]+32c02573[     ]+csrr[         ]+a0,mhpmevent12
-[      ]+[0-9a-f]+:[   ]+32d02573[     ]+csrr[         ]+a0,mhpmevent13
-[      ]+[0-9a-f]+:[   ]+32e02573[     ]+csrr[         ]+a0,mhpmevent14
-[      ]+[0-9a-f]+:[   ]+32f02573[     ]+csrr[         ]+a0,mhpmevent15
-[      ]+[0-9a-f]+:[   ]+33002573[     ]+csrr[         ]+a0,mhpmevent16
-[      ]+[0-9a-f]+:[   ]+33102573[     ]+csrr[         ]+a0,mhpmevent17
-[      ]+[0-9a-f]+:[   ]+33202573[     ]+csrr[         ]+a0,mhpmevent18
-[      ]+[0-9a-f]+:[   ]+33302573[     ]+csrr[         ]+a0,mhpmevent19
-[      ]+[0-9a-f]+:[   ]+33402573[     ]+csrr[         ]+a0,mhpmevent20
-[      ]+[0-9a-f]+:[   ]+33502573[     ]+csrr[         ]+a0,mhpmevent21
-[      ]+[0-9a-f]+:[   ]+33602573[     ]+csrr[         ]+a0,mhpmevent22
-[      ]+[0-9a-f]+:[   ]+33702573[     ]+csrr[         ]+a0,mhpmevent23
-[      ]+[0-9a-f]+:[   ]+33802573[     ]+csrr[         ]+a0,mhpmevent24
-[      ]+[0-9a-f]+:[   ]+33902573[     ]+csrr[         ]+a0,mhpmevent25
-[      ]+[0-9a-f]+:[   ]+33a02573[     ]+csrr[         ]+a0,mhpmevent26
-[      ]+[0-9a-f]+:[   ]+33b02573[     ]+csrr[         ]+a0,mhpmevent27
-[      ]+[0-9a-f]+:[   ]+33c02573[     ]+csrr[         ]+a0,mhpmevent28
-[      ]+[0-9a-f]+:[   ]+33d02573[     ]+csrr[         ]+a0,mhpmevent29
-[      ]+[0-9a-f]+:[   ]+33e02573[     ]+csrr[         ]+a0,mhpmevent30
-[      ]+[0-9a-f]+:[   ]+33f02573[     ]+csrr[         ]+a0,mhpmevent31
-[      ]+[0-9a-f]+:[   ]+7a002573[     ]+csrr[         ]+a0,tselect
-[      ]+[0-9a-f]+:[   ]+7a102573[     ]+csrr[         ]+a0,tdata1
-[      ]+[0-9a-f]+:[   ]+7a202573[     ]+csrr[         ]+a0,tdata2
-[      ]+[0-9a-f]+:[   ]+7a302573[     ]+csrr[         ]+a0,tdata3
-[      ]+[0-9a-f]+:[   ]+7b002573[     ]+csrr[         ]+a0,dcsr
-[      ]+[0-9a-f]+:[   ]+7b102573[     ]+csrr[         ]+a0,dpc
-[      ]+[0-9a-f]+:[   ]+7b202573[     ]+csrr[         ]+a0,dscratch0
-[      ]+[0-9a-f]+:[   ]+7b302573[     ]+csrr[         ]+a0,dscratch1
-[      ]+[0-9a-f]+:[   ]+04302573[     ]+csrr[         ]+a0,utval
-[      ]+[0-9a-f]+:[   ]+14302573[     ]+csrr[         ]+a0,stval
-[      ]+[0-9a-f]+:[   ]+18002573[     ]+csrr[         ]+a0,satp
-[      ]+[0-9a-f]+:[   ]+34302573[     ]+csrr[         ]+a0,mtval
-[      ]+[0-9a-f]+:[   ]+32002573[     ]+csrr[         ]+a0,mcountinhibit
-[      ]+[0-9a-f]+:[   ]+7b202573[     ]+csrr[         ]+a0,dscratch0
-[      ]+[0-9a-f]+:[   ]+20002573[     ]+csrr[         ]+a0,hstatus
-[      ]+[0-9a-f]+:[   ]+20202573[     ]+csrr[         ]+a0,hedeleg
-[      ]+[0-9a-f]+:[   ]+20302573[     ]+csrr[         ]+a0,hideleg
-[      ]+[0-9a-f]+:[   ]+20402573[     ]+csrr[         ]+a0,hie
-[      ]+[0-9a-f]+:[   ]+20502573[     ]+csrr[         ]+a0,htvec
-[      ]+[0-9a-f]+:[   ]+24002573[     ]+csrr[         ]+a0,hscratch
-[      ]+[0-9a-f]+:[   ]+24102573[     ]+csrr[         ]+a0,hepc
-[      ]+[0-9a-f]+:[   ]+24202573[     ]+csrr[         ]+a0,hcause
-[      ]+[0-9a-f]+:[   ]+24302573[     ]+csrr[         ]+a0,hbadaddr
-[      ]+[0-9a-f]+:[   ]+24402573[     ]+csrr[         ]+a0,hip
-[      ]+[0-9a-f]+:[   ]+38002573[     ]+csrr[         ]+a0,mbase
-[      ]+[0-9a-f]+:[   ]+38102573[     ]+csrr[         ]+a0,mbound
-[      ]+[0-9a-f]+:[   ]+38202573[     ]+csrr[         ]+a0,mibase
-[      ]+[0-9a-f]+:[   ]+38302573[     ]+csrr[         ]+a0,mibound
-[      ]+[0-9a-f]+:[   ]+38402573[     ]+csrr[         ]+a0,mdbase
-[      ]+[0-9a-f]+:[   ]+38502573[     ]+csrr[         ]+a0,mdbound
-[      ]+[0-9a-f]+:[   ]+32102573[     ]+csrr[         ]+a0,mscounteren
-[      ]+[0-9a-f]+:[   ]+32202573[     ]+csrr[         ]+a0,mhcounteren
index dae6520f1f854cabadc4282ec75a6225a263c4ad..4b0dd025f0badf73a1a7fcf73111a3bef6235f01 100644 (file)
@@ -240,7 +240,7 @@ static struct riscv_register_feature riscv_csr_feature =
 {
  "org.gnu.gdb.riscv.csr",
  {
-#define DECLARE_CSR(NAME,VALUE,CLASS) \
+#define DECLARE_CSR(NAME,VALUE,CLASS,DEFINE_VER,ABORT_VER) \
   { RISCV_ ## VALUE ## _REGNUM, { # NAME }, false },
 #include "opcode/riscv-opc.h"
 #undef DECLARE_CSR
@@ -498,7 +498,7 @@ riscv_register_name (struct gdbarch *gdbarch, int regnum)
 
   if (regnum >= RISCV_FIRST_CSR_REGNUM && regnum <= RISCV_LAST_CSR_REGNUM)
     {
-#define DECLARE_CSR(NAME,VALUE,CLASS) \
+#define DECLARE_CSR(NAME,VALUE,CLASS,DEFINE_VER,ABORT_VER) \
       case RISCV_ ## VALUE ## _REGNUM: return # NAME;
 
       switch (regnum)
@@ -828,7 +828,7 @@ riscv_is_regnum_a_named_csr (int regnum)
 
   switch (regnum)
     {
-#define DECLARE_CSR(name, num, class) case RISCV_ ## num ## _REGNUM:
+#define DECLARE_CSR(name, num, class, define_ver, abort_ver) case RISCV_ ## num ## _REGNUM:
 #include "opcode/riscv-opc.h"
 #undef DECLARE_CSR
       return true;
index 90bae0810a85a46d0ca1071acb439890ba7050ab..e415fb4a7a1bac1545f7d1dcce6c095ff55eb995 100644 (file)
@@ -44,7 +44,7 @@ enum
   RISCV_LAST_FP_REGNUM = 64,   /* Last Floating Point Register */
 
   RISCV_FIRST_CSR_REGNUM = 65,  /* First CSR */
-#define DECLARE_CSR(name, num, class) \
+#define DECLARE_CSR(name, num, class, define_version, abort_version) \
   RISCV_ ## num ## _REGNUM = RISCV_FIRST_CSR_REGNUM + num,
 #include "opcode/riscv-opc.h"
 #undef DECLARE_CSR
index 9f2599f81c4fc8e49abba5ae48d0b00eaf0540c1..c309780544e8ef18855eea631b915a108b6497fc 100644 (file)
@@ -1,3 +1,23 @@
+2020-05-20  Nelson Chu  <nelson.chu@sifive.com>
+
+       * opcode/riscv.h: Include "bfd.h" to support bfd_boolean.
+       (enum riscv_isa_spec_class): New enum class.  All supported ISA spec
+       belong to one of the class
+       (struct riscv_ext_version): New structure holds version information
+       for the specific ISA.
+       * opcode/riscv-opc.h (DECLARE_CSR): There are two version information,
+       define_version and abort_version.  The define_version means which
+       privilege spec is started to define the CSR, and the abort_version
+       means which privilege spec is started to abort the CSR.  If the CSR is
+       valid for the newest spec, then the abort_version should be
+       PRIV_SPEC_CLASS_DRAFT.
+       (DECLARE_CSR_ALIAS): Same as DECLARE_CSR, but only for the obselete CSR.
+       * opcode/riscv.h (enum riscv_priv_spec_class): New enum class.  Define
+       the current supported privilege spec versions.
+       (struct riscv_csr_extra): Add new fields to store more information
+       about the CSR.  We use these information to find the suitable CSR
+       address when user choosing a specific privilege spec.
+
 2020-05-19  Alexander Fedotov  <alfedotov@gmail.com>
 
        PR 25992
index fe00bb6b5627f005da8eecbb461653e7951c70d6..a6a5de388736c3300b85d91766653ec0079c7f3a 100644 (file)
 #define CSR_SIDELEG 0x103
 #define CSR_SIE 0x104
 #define CSR_STVEC 0x105
-/* scounteren is present int priv spec 1.10.  */
 #define CSR_SCOUNTEREN 0x106
 #define CSR_SSCRATCH 0x140
 #define CSR_SEPC 0x141
 #define CSR_MIMPID 0xf13
 #define CSR_MHARTID 0xf14
 #define CSR_MSTATUS 0x300
-/* misa is 0xf10 in 1.9, but 0x301 in 1.9.1.  */
 #define CSR_MISA 0x301
 #define CSR_MEDELEG 0x302
 #define CSR_MIDELEG 0x303
 #define CSR_MIE 0x304
 #define CSR_MTVEC 0x305
-/* mcounteren is present in priv spec 1.10.  */
 #define CSR_MCOUNTEREN 0x306
 #define CSR_MSCRATCH 0x340
 #define CSR_MEPC 0x341
 #define CSR_MCAUSE 0x342
 #define CSR_MTVAL 0x343
 #define CSR_MIP 0x344
-/* pmpcfg0 to pmpcfg3, pmpaddr0 to pmpaddr15 are present in priv spec 1.10.  */
 #define CSR_PMPCFG0 0x3a0
 #define CSR_PMPCFG1 0x3a1
 #define CSR_PMPCFG2 0x3a2
 #define CSR_MHPMCOUNTER29H 0xb9d
 #define CSR_MHPMCOUNTER30H 0xb9e
 #define CSR_MHPMCOUNTER31H 0xb9f
-/* mcountinhibit is present in priv spec 1.11.  */
 #define CSR_MCOUNTINHIBIT 0x320
 #define CSR_MHPMEVENT3 0x323
 #define CSR_MHPMEVENT4 0x324
 #define CSR_TDATA3 0x7a3
 #define CSR_DCSR 0x7b0
 #define CSR_DPC 0x7b1
-/* dscratch0 and dscratch1 are present in priv spec 1.11.  */
 #define CSR_DSCRATCH0 0x7b2
 #define CSR_DSCRATCH1 0x7b3
-/* These registers are present in priv spec 1.9.1, but are dropped in 1.10.  */
 #define CSR_HSTATUS 0x200
 #define CSR_HEDELEG 0x202
 #define CSR_HIDELEG 0x203
@@ -1124,262 +1117,256 @@ DECLARE_INSN(custom3_rd_rs1, MATCH_CUSTOM3_RD_RS1, MASK_CUSTOM3_RD_RS1)
 DECLARE_INSN(custom3_rd_rs1_rs2, MATCH_CUSTOM3_RD_RS1_RS2, MASK_CUSTOM3_RD_RS1_RS2)
 #endif
 #ifdef DECLARE_CSR
-DECLARE_CSR(ustatus, CSR_USTATUS, CSR_CLASS_I)
-DECLARE_CSR(uie, CSR_UIE, CSR_CLASS_I)
-DECLARE_CSR(utvec, CSR_UTVEC, CSR_CLASS_I)
-DECLARE_CSR(uscratch, CSR_USCRATCH, CSR_CLASS_I)
-DECLARE_CSR(uepc, CSR_UEPC, CSR_CLASS_I)
-DECLARE_CSR(ucause, CSR_UCAUSE, CSR_CLASS_I)
-DECLARE_CSR(utval, CSR_UTVAL, CSR_CLASS_I)
-DECLARE_CSR(uip, CSR_UIP, CSR_CLASS_I)
-DECLARE_CSR(fflags, CSR_FFLAGS, CSR_CLASS_F)
-DECLARE_CSR(frm, CSR_FRM, CSR_CLASS_F)
-DECLARE_CSR(fcsr, CSR_FCSR, CSR_CLASS_F)
-DECLARE_CSR(cycle, CSR_CYCLE, CSR_CLASS_I)
-DECLARE_CSR(time, CSR_TIME, CSR_CLASS_I)
-DECLARE_CSR(instret, CSR_INSTRET, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter3, CSR_HPMCOUNTER3, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter4, CSR_HPMCOUNTER4, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter5, CSR_HPMCOUNTER5, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter6, CSR_HPMCOUNTER6, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter7, CSR_HPMCOUNTER7, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter8, CSR_HPMCOUNTER8, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter9, CSR_HPMCOUNTER9, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter10, CSR_HPMCOUNTER10, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter11, CSR_HPMCOUNTER11, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter12, CSR_HPMCOUNTER12, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter13, CSR_HPMCOUNTER13, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter14, CSR_HPMCOUNTER14, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter15, CSR_HPMCOUNTER15, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter16, CSR_HPMCOUNTER16, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter17, CSR_HPMCOUNTER17, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter18, CSR_HPMCOUNTER18, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter19, CSR_HPMCOUNTER19, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter20, CSR_HPMCOUNTER20, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter21, CSR_HPMCOUNTER21, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter22, CSR_HPMCOUNTER22, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter23, CSR_HPMCOUNTER23, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter24, CSR_HPMCOUNTER24, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter25, CSR_HPMCOUNTER25, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter26, CSR_HPMCOUNTER26, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter27, CSR_HPMCOUNTER27, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter28, CSR_HPMCOUNTER28, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter29, CSR_HPMCOUNTER29, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter30, CSR_HPMCOUNTER30, CSR_CLASS_I)
-DECLARE_CSR(hpmcounter31, CSR_HPMCOUNTER31, CSR_CLASS_I)
-DECLARE_CSR(cycleh, CSR_CYCLEH, CSR_CLASS_I_32)
-DECLARE_CSR(timeh, CSR_TIMEH, CSR_CLASS_I_32)
-DECLARE_CSR(instreth, CSR_INSTRETH, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter3h, CSR_HPMCOUNTER3H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter4h, CSR_HPMCOUNTER4H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter5h, CSR_HPMCOUNTER5H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter6h, CSR_HPMCOUNTER6H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter7h, CSR_HPMCOUNTER7H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter8h, CSR_HPMCOUNTER8H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter9h, CSR_HPMCOUNTER9H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter10h, CSR_HPMCOUNTER10H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter11h, CSR_HPMCOUNTER11H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter12h, CSR_HPMCOUNTER12H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter13h, CSR_HPMCOUNTER13H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter14h, CSR_HPMCOUNTER14H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter15h, CSR_HPMCOUNTER15H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter16h, CSR_HPMCOUNTER16H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter17h, CSR_HPMCOUNTER17H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter18h, CSR_HPMCOUNTER18H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter19h, CSR_HPMCOUNTER19H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter20h, CSR_HPMCOUNTER20H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter21h, CSR_HPMCOUNTER21H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter22h, CSR_HPMCOUNTER22H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter23h, CSR_HPMCOUNTER23H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter24h, CSR_HPMCOUNTER24H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter25h, CSR_HPMCOUNTER25H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter26h, CSR_HPMCOUNTER26H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter27h, CSR_HPMCOUNTER27H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter28h, CSR_HPMCOUNTER28H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter29h, CSR_HPMCOUNTER29H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter30h, CSR_HPMCOUNTER30H, CSR_CLASS_I_32)
-DECLARE_CSR(hpmcounter31h, CSR_HPMCOUNTER31H, CSR_CLASS_I_32)
-DECLARE_CSR(sstatus, CSR_SSTATUS, CSR_CLASS_I)
-DECLARE_CSR(sedeleg, CSR_SEDELEG, CSR_CLASS_I)
-DECLARE_CSR(sideleg, CSR_SIDELEG, CSR_CLASS_I)
-DECLARE_CSR(sie, CSR_SIE, CSR_CLASS_I)
-DECLARE_CSR(stvec, CSR_STVEC, CSR_CLASS_I)
-DECLARE_CSR(scounteren, CSR_SCOUNTEREN, CSR_CLASS_I)
-DECLARE_CSR(sscratch, CSR_SSCRATCH, CSR_CLASS_I)
-DECLARE_CSR(sepc, CSR_SEPC, CSR_CLASS_I)
-DECLARE_CSR(scause, CSR_SCAUSE, CSR_CLASS_I)
-DECLARE_CSR(stval, CSR_STVAL, CSR_CLASS_I)
-DECLARE_CSR(sip, CSR_SIP, CSR_CLASS_I)
-DECLARE_CSR(satp, CSR_SATP, CSR_CLASS_I)
-DECLARE_CSR(mvendorid, CSR_MVENDORID, CSR_CLASS_I)
-DECLARE_CSR(marchid, CSR_MARCHID, CSR_CLASS_I)
-DECLARE_CSR(mimpid, CSR_MIMPID, CSR_CLASS_I)
-DECLARE_CSR(mhartid, CSR_MHARTID, CSR_CLASS_I)
-DECLARE_CSR(mstatus, CSR_MSTATUS, CSR_CLASS_I)
-DECLARE_CSR(misa, CSR_MISA, CSR_CLASS_I)
-DECLARE_CSR(medeleg, CSR_MEDELEG, CSR_CLASS_I)
-DECLARE_CSR(mideleg, CSR_MIDELEG, CSR_CLASS_I)
-DECLARE_CSR(mie, CSR_MIE, CSR_CLASS_I)
-DECLARE_CSR(mtvec, CSR_MTVEC, CSR_CLASS_I)
-DECLARE_CSR(mcounteren, CSR_MCOUNTEREN, CSR_CLASS_I)
-DECLARE_CSR(mscratch, CSR_MSCRATCH, CSR_CLASS_I)
-DECLARE_CSR(mepc, CSR_MEPC, CSR_CLASS_I)
-DECLARE_CSR(mcause, CSR_MCAUSE, CSR_CLASS_I)
-DECLARE_CSR(mtval, CSR_MTVAL, CSR_CLASS_I)
-DECLARE_CSR(mip, CSR_MIP, CSR_CLASS_I)
-DECLARE_CSR(pmpcfg0, CSR_PMPCFG0, CSR_CLASS_I)
-DECLARE_CSR(pmpcfg1, CSR_PMPCFG1, CSR_CLASS_I_32)
-DECLARE_CSR(pmpcfg2, CSR_PMPCFG2, CSR_CLASS_I)
-DECLARE_CSR(pmpcfg3, CSR_PMPCFG3, CSR_CLASS_I_32)
-DECLARE_CSR(pmpaddr0, CSR_PMPADDR0, CSR_CLASS_I)
-DECLARE_CSR(pmpaddr1, CSR_PMPADDR1, CSR_CLASS_I)
-DECLARE_CSR(pmpaddr2, CSR_PMPADDR2, CSR_CLASS_I)
-DECLARE_CSR(pmpaddr3, CSR_PMPADDR3, CSR_CLASS_I)
-DECLARE_CSR(pmpaddr4, CSR_PMPADDR4, CSR_CLASS_I)
-DECLARE_CSR(pmpaddr5, CSR_PMPADDR5, CSR_CLASS_I)
-DECLARE_CSR(pmpaddr6, CSR_PMPADDR6, CSR_CLASS_I)
-DECLARE_CSR(pmpaddr7, CSR_PMPADDR7, CSR_CLASS_I)
-DECLARE_CSR(pmpaddr8, CSR_PMPADDR8, CSR_CLASS_I)
-DECLARE_CSR(pmpaddr9, CSR_PMPADDR9, CSR_CLASS_I)
-DECLARE_CSR(pmpaddr10, CSR_PMPADDR10, CSR_CLASS_I)
-DECLARE_CSR(pmpaddr11, CSR_PMPADDR11, CSR_CLASS_I)
-DECLARE_CSR(pmpaddr12, CSR_PMPADDR12, CSR_CLASS_I)
-DECLARE_CSR(pmpaddr13, CSR_PMPADDR13, CSR_CLASS_I)
-DECLARE_CSR(pmpaddr14, CSR_PMPADDR14, CSR_CLASS_I)
-DECLARE_CSR(pmpaddr15, CSR_PMPADDR15, CSR_CLASS_I)
-DECLARE_CSR(mcycle, CSR_MCYCLE, CSR_CLASS_I)
-DECLARE_CSR(minstret, CSR_MINSTRET, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter3, CSR_MHPMCOUNTER3, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter4, CSR_MHPMCOUNTER4, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter5, CSR_MHPMCOUNTER5, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter6, CSR_MHPMCOUNTER6, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter7, CSR_MHPMCOUNTER7, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter8, CSR_MHPMCOUNTER8, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter9, CSR_MHPMCOUNTER9, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter10, CSR_MHPMCOUNTER10, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter11, CSR_MHPMCOUNTER11, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter12, CSR_MHPMCOUNTER12, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter13, CSR_MHPMCOUNTER13, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter14, CSR_MHPMCOUNTER14, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter15, CSR_MHPMCOUNTER15, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter16, CSR_MHPMCOUNTER16, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter17, CSR_MHPMCOUNTER17, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter18, CSR_MHPMCOUNTER18, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter19, CSR_MHPMCOUNTER19, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter20, CSR_MHPMCOUNTER20, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter21, CSR_MHPMCOUNTER21, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter22, CSR_MHPMCOUNTER22, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter23, CSR_MHPMCOUNTER23, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter24, CSR_MHPMCOUNTER24, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter25, CSR_MHPMCOUNTER25, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter26, CSR_MHPMCOUNTER26, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter27, CSR_MHPMCOUNTER27, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter28, CSR_MHPMCOUNTER28, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter29, CSR_MHPMCOUNTER29, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter30, CSR_MHPMCOUNTER30, CSR_CLASS_I)
-DECLARE_CSR(mhpmcounter31, CSR_MHPMCOUNTER31, CSR_CLASS_I)
-DECLARE_CSR(mcycleh, CSR_MCYCLEH, CSR_CLASS_I_32)
-DECLARE_CSR(minstreth, CSR_MINSTRETH, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter3h, CSR_MHPMCOUNTER3H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter4h, CSR_MHPMCOUNTER4H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter5h, CSR_MHPMCOUNTER5H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter6h, CSR_MHPMCOUNTER6H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter7h, CSR_MHPMCOUNTER7H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter8h, CSR_MHPMCOUNTER8H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter9h, CSR_MHPMCOUNTER9H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter10h, CSR_MHPMCOUNTER10H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter11h, CSR_MHPMCOUNTER11H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter12h, CSR_MHPMCOUNTER12H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter13h, CSR_MHPMCOUNTER13H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter14h, CSR_MHPMCOUNTER14H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter15h, CSR_MHPMCOUNTER15H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter16h, CSR_MHPMCOUNTER16H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter17h, CSR_MHPMCOUNTER17H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter18h, CSR_MHPMCOUNTER18H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter19h, CSR_MHPMCOUNTER19H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter20h, CSR_MHPMCOUNTER20H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter21h, CSR_MHPMCOUNTER21H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter22h, CSR_MHPMCOUNTER22H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter23h, CSR_MHPMCOUNTER23H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter24h, CSR_MHPMCOUNTER24H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter25h, CSR_MHPMCOUNTER25H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter26h, CSR_MHPMCOUNTER26H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter27h, CSR_MHPMCOUNTER27H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter28h, CSR_MHPMCOUNTER28H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter29h, CSR_MHPMCOUNTER29H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter30h, CSR_MHPMCOUNTER30H, CSR_CLASS_I_32)
-DECLARE_CSR(mhpmcounter31h, CSR_MHPMCOUNTER31H, CSR_CLASS_I_32)
-DECLARE_CSR(mcountinhibit, CSR_MCOUNTINHIBIT, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent3, CSR_MHPMEVENT3, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent4, CSR_MHPMEVENT4, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent5, CSR_MHPMEVENT5, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent6, CSR_MHPMEVENT6, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent7, CSR_MHPMEVENT7, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent8, CSR_MHPMEVENT8, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent9, CSR_MHPMEVENT9, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent10, CSR_MHPMEVENT10, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent11, CSR_MHPMEVENT11, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent12, CSR_MHPMEVENT12, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent13, CSR_MHPMEVENT13, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent14, CSR_MHPMEVENT14, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent15, CSR_MHPMEVENT15, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent16, CSR_MHPMEVENT16, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent17, CSR_MHPMEVENT17, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent18, CSR_MHPMEVENT18, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent19, CSR_MHPMEVENT19, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent20, CSR_MHPMEVENT20, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent21, CSR_MHPMEVENT21, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent22, CSR_MHPMEVENT22, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent23, CSR_MHPMEVENT23, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent24, CSR_MHPMEVENT24, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent25, CSR_MHPMEVENT25, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent26, CSR_MHPMEVENT26, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent27, CSR_MHPMEVENT27, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent28, CSR_MHPMEVENT28, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent29, CSR_MHPMEVENT29, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent30, CSR_MHPMEVENT30, CSR_CLASS_I)
-DECLARE_CSR(mhpmevent31, CSR_MHPMEVENT31, CSR_CLASS_I)
-DECLARE_CSR(tselect, CSR_TSELECT, CSR_CLASS_I)
-DECLARE_CSR(tdata1, CSR_TDATA1, CSR_CLASS_I)
-DECLARE_CSR(tdata2, CSR_TDATA2, CSR_CLASS_I)
-DECLARE_CSR(tdata3, CSR_TDATA3, CSR_CLASS_I)
-DECLARE_CSR(dcsr, CSR_DCSR, CSR_CLASS_I)
-DECLARE_CSR(dpc, CSR_DPC, CSR_CLASS_I)
-DECLARE_CSR(dscratch0, CSR_DSCRATCH0, CSR_CLASS_I)
-DECLARE_CSR(dscratch1, CSR_DSCRATCH1, CSR_CLASS_I)
-/* These registers are present in priv spec 1.9.1, dropped in 1.10.  */
-DECLARE_CSR(hstatus, CSR_HSTATUS, CSR_CLASS_I)
-DECLARE_CSR(hedeleg, CSR_HEDELEG, CSR_CLASS_I)
-DECLARE_CSR(hideleg, CSR_HIDELEG, CSR_CLASS_I)
-DECLARE_CSR(hie, CSR_HIE, CSR_CLASS_I)
-DECLARE_CSR(htvec, CSR_HTVEC, CSR_CLASS_I)
-DECLARE_CSR(hscratch, CSR_HSCRATCH, CSR_CLASS_I)
-DECLARE_CSR(hepc, CSR_HEPC, CSR_CLASS_I)
-DECLARE_CSR(hcause, CSR_HCAUSE, CSR_CLASS_I)
-DECLARE_CSR(hbadaddr, CSR_HBADADDR, CSR_CLASS_I)
-DECLARE_CSR(hip, CSR_HIP, CSR_CLASS_I)
-DECLARE_CSR(mbase, CSR_MBASE, CSR_CLASS_I)
-DECLARE_CSR(mbound, CSR_MBOUND, CSR_CLASS_I)
-DECLARE_CSR(mibase, CSR_MIBASE, CSR_CLASS_I)
-DECLARE_CSR(mibound, CSR_MIBOUND, CSR_CLASS_I)
-DECLARE_CSR(mdbase, CSR_MDBASE, CSR_CLASS_I)
-DECLARE_CSR(mdbound, CSR_MDBOUND, CSR_CLASS_I)
-DECLARE_CSR(mscounteren, CSR_MSCOUNTEREN, CSR_CLASS_I)
-DECLARE_CSR(mhcounteren, CSR_MHCOUNTEREN, CSR_CLASS_I)
+DECLARE_CSR(ustatus, CSR_USTATUS, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(uie, CSR_UIE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(utvec, CSR_UTVEC, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(uscratch, CSR_USCRATCH, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(uepc, CSR_UEPC, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(ucause, CSR_UCAUSE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(utval, CSR_UTVAL, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(uip, CSR_UIP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(fflags, CSR_FFLAGS, CSR_CLASS_F, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(frm, CSR_FRM, CSR_CLASS_F, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(fcsr, CSR_FCSR, CSR_CLASS_F, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(cycle, CSR_CYCLE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(time, CSR_TIME, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(instret, CSR_INSTRET, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter3, CSR_HPMCOUNTER3, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter4, CSR_HPMCOUNTER4, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter5, CSR_HPMCOUNTER5, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter6, CSR_HPMCOUNTER6, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter7, CSR_HPMCOUNTER7, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter8, CSR_HPMCOUNTER8, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter9, CSR_HPMCOUNTER9, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter10, CSR_HPMCOUNTER10, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter11, CSR_HPMCOUNTER11, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter12, CSR_HPMCOUNTER12, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter13, CSR_HPMCOUNTER13, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter14, CSR_HPMCOUNTER14, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter15, CSR_HPMCOUNTER15, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter16, CSR_HPMCOUNTER16, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter17, CSR_HPMCOUNTER17, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter18, CSR_HPMCOUNTER18, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter19, CSR_HPMCOUNTER19, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter20, CSR_HPMCOUNTER20, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter21, CSR_HPMCOUNTER21, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter22, CSR_HPMCOUNTER22, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter23, CSR_HPMCOUNTER23, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter24, CSR_HPMCOUNTER24, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter25, CSR_HPMCOUNTER25, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter26, CSR_HPMCOUNTER26, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter27, CSR_HPMCOUNTER27, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter28, CSR_HPMCOUNTER28, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter29, CSR_HPMCOUNTER29, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter30, CSR_HPMCOUNTER30, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter31, CSR_HPMCOUNTER31, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(cycleh, CSR_CYCLEH, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(timeh, CSR_TIMEH, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(instreth, CSR_INSTRETH, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter3h, CSR_HPMCOUNTER3H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter4h, CSR_HPMCOUNTER4H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter5h, CSR_HPMCOUNTER5H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter6h, CSR_HPMCOUNTER6H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter7h, CSR_HPMCOUNTER7H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter8h, CSR_HPMCOUNTER8H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter9h, CSR_HPMCOUNTER9H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter10h, CSR_HPMCOUNTER10H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter11h, CSR_HPMCOUNTER11H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter12h, CSR_HPMCOUNTER12H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter13h, CSR_HPMCOUNTER13H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter14h, CSR_HPMCOUNTER14H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter15h, CSR_HPMCOUNTER15H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter16h, CSR_HPMCOUNTER16H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter17h, CSR_HPMCOUNTER17H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter18h, CSR_HPMCOUNTER18H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter19h, CSR_HPMCOUNTER19H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter20h, CSR_HPMCOUNTER20H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter21h, CSR_HPMCOUNTER21H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter22h, CSR_HPMCOUNTER22H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter23h, CSR_HPMCOUNTER23H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter24h, CSR_HPMCOUNTER24H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter25h, CSR_HPMCOUNTER25H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter26h, CSR_HPMCOUNTER26H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter27h, CSR_HPMCOUNTER27H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter28h, CSR_HPMCOUNTER28H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter29h, CSR_HPMCOUNTER29H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter30h, CSR_HPMCOUNTER30H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hpmcounter31h, CSR_HPMCOUNTER31H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(sstatus, CSR_SSTATUS, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(sedeleg, CSR_SEDELEG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(sideleg, CSR_SIDELEG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(sie, CSR_SIE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(stvec, CSR_STVEC, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(scounteren, CSR_SCOUNTEREN, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(sscratch, CSR_SSCRATCH, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(sepc, CSR_SEPC, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(scause, CSR_SCAUSE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(stval, CSR_STVAL, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(sip, CSR_SIP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(satp, CSR_SATP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mvendorid, CSR_MVENDORID, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(marchid, CSR_MARCHID, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mimpid, CSR_MIMPID, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhartid, CSR_MHARTID, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mstatus, CSR_MSTATUS, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(misa, CSR_MISA, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(medeleg, CSR_MEDELEG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mideleg, CSR_MIDELEG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mie, CSR_MIE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mtvec, CSR_MTVEC, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mcounteren, CSR_MCOUNTEREN, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mscratch, CSR_MSCRATCH, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mepc, CSR_MEPC, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mcause, CSR_MCAUSE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mtval, CSR_MTVAL, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mip, CSR_MIP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpcfg0, CSR_PMPCFG0, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpcfg1, CSR_PMPCFG1, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpcfg2, CSR_PMPCFG2, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpcfg3, CSR_PMPCFG3, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr0, CSR_PMPADDR0, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr1, CSR_PMPADDR1, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr2, CSR_PMPADDR2, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr3, CSR_PMPADDR3, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr4, CSR_PMPADDR4, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr5, CSR_PMPADDR5, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr6, CSR_PMPADDR6, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr7, CSR_PMPADDR7, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr8, CSR_PMPADDR8, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr9, CSR_PMPADDR9, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr10, CSR_PMPADDR10, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr11, CSR_PMPADDR11, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr12, CSR_PMPADDR12, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr13, CSR_PMPADDR13, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr14, CSR_PMPADDR14, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(pmpaddr15, CSR_PMPADDR15, CSR_CLASS_I, PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mcycle, CSR_MCYCLE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(minstret, CSR_MINSTRET, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter3, CSR_MHPMCOUNTER3, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter4, CSR_MHPMCOUNTER4, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter5, CSR_MHPMCOUNTER5, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter6, CSR_MHPMCOUNTER6, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter7, CSR_MHPMCOUNTER7, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter8, CSR_MHPMCOUNTER8, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter9, CSR_MHPMCOUNTER9, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter10, CSR_MHPMCOUNTER10, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter11, CSR_MHPMCOUNTER11, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter12, CSR_MHPMCOUNTER12, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter13, CSR_MHPMCOUNTER13, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter14, CSR_MHPMCOUNTER14, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter15, CSR_MHPMCOUNTER15, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter16, CSR_MHPMCOUNTER16, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter17, CSR_MHPMCOUNTER17, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter18, CSR_MHPMCOUNTER18, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter19, CSR_MHPMCOUNTER19, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter20, CSR_MHPMCOUNTER20, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter21, CSR_MHPMCOUNTER21, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter22, CSR_MHPMCOUNTER22, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter23, CSR_MHPMCOUNTER23, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter24, CSR_MHPMCOUNTER24, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter25, CSR_MHPMCOUNTER25, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter26, CSR_MHPMCOUNTER26, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter27, CSR_MHPMCOUNTER27, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter28, CSR_MHPMCOUNTER28, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter29, CSR_MHPMCOUNTER29, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter30, CSR_MHPMCOUNTER30, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter31, CSR_MHPMCOUNTER31, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mcycleh, CSR_MCYCLEH, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(minstreth, CSR_MINSTRETH, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter3h, CSR_MHPMCOUNTER3H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter4h, CSR_MHPMCOUNTER4H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter5h, CSR_MHPMCOUNTER5H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter6h, CSR_MHPMCOUNTER6H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter7h, CSR_MHPMCOUNTER7H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter8h, CSR_MHPMCOUNTER8H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter9h, CSR_MHPMCOUNTER9H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter10h, CSR_MHPMCOUNTER10H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter11h, CSR_MHPMCOUNTER11H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter12h, CSR_MHPMCOUNTER12H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter13h, CSR_MHPMCOUNTER13H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter14h, CSR_MHPMCOUNTER14H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter15h, CSR_MHPMCOUNTER15H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter16h, CSR_MHPMCOUNTER16H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter17h, CSR_MHPMCOUNTER17H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter18h, CSR_MHPMCOUNTER18H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter19h, CSR_MHPMCOUNTER19H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter20h, CSR_MHPMCOUNTER20H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter21h, CSR_MHPMCOUNTER21H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter22h, CSR_MHPMCOUNTER22H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter23h, CSR_MHPMCOUNTER23H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter24h, CSR_MHPMCOUNTER24H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter25h, CSR_MHPMCOUNTER25H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter26h, CSR_MHPMCOUNTER26H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter27h, CSR_MHPMCOUNTER27H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter28h, CSR_MHPMCOUNTER28H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter29h, CSR_MHPMCOUNTER29H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter30h, CSR_MHPMCOUNTER30H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmcounter31h, CSR_MHPMCOUNTER31H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mcountinhibit, CSR_MCOUNTINHIBIT, CSR_CLASS_I, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent3, CSR_MHPMEVENT3, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent4, CSR_MHPMEVENT4, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent5, CSR_MHPMEVENT5, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent6, CSR_MHPMEVENT6, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent7, CSR_MHPMEVENT7, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent8, CSR_MHPMEVENT8, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent9, CSR_MHPMEVENT9, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent10, CSR_MHPMEVENT10, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent11, CSR_MHPMEVENT11, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent12, CSR_MHPMEVENT12, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent13, CSR_MHPMEVENT13, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent14, CSR_MHPMEVENT14, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent15, CSR_MHPMEVENT15, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent16, CSR_MHPMEVENT16, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent17, CSR_MHPMEVENT17, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent18, CSR_MHPMEVENT18, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent19, CSR_MHPMEVENT19, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent20, CSR_MHPMEVENT20, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent21, CSR_MHPMEVENT21, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent22, CSR_MHPMEVENT22, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent23, CSR_MHPMEVENT23, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent24, CSR_MHPMEVENT24, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent25, CSR_MHPMEVENT25, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent26, CSR_MHPMEVENT26, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent27, CSR_MHPMEVENT27, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent28, CSR_MHPMEVENT28, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent29, CSR_MHPMEVENT29, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent30, CSR_MHPMEVENT30, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(mhpmevent31, CSR_MHPMEVENT31, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(tselect, CSR_TSELECT, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(tdata1, CSR_TDATA1, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(tdata2, CSR_TDATA2, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(tdata3, CSR_TDATA3, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(dcsr, CSR_DCSR, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(dpc, CSR_DPC, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(dscratch0, CSR_DSCRATCH0, CSR_CLASS_I, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(dscratch1, CSR_DSCRATCH1, CSR_CLASS_I, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstatus, CSR_HSTATUS, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P10)
+DECLARE_CSR(hedeleg, CSR_HEDELEG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P10)
+DECLARE_CSR(hideleg, CSR_HIDELEG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P10)
+DECLARE_CSR(hie, CSR_HIE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P10)
+DECLARE_CSR(htvec, CSR_HTVEC, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P10)
+DECLARE_CSR(hscratch, CSR_HSCRATCH, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P10)
+DECLARE_CSR(hepc, CSR_HEPC, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P10)
+DECLARE_CSR(hcause, CSR_HCAUSE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P10)
+DECLARE_CSR(hbadaddr, CSR_HBADADDR, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P10)
+DECLARE_CSR(hip, CSR_HIP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P10)
+DECLARE_CSR(mbase, CSR_MBASE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P10)
+DECLARE_CSR(mbound, CSR_MBOUND, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P10)
+DECLARE_CSR(mibase, CSR_MIBASE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P10)
+DECLARE_CSR(mibound, CSR_MIBOUND, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P10)
+DECLARE_CSR(mdbase, CSR_MDBASE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P10)
+DECLARE_CSR(mdbound, CSR_MDBOUND, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P10)
+DECLARE_CSR(mscounteren, CSR_MSCOUNTEREN, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P10)
+DECLARE_CSR(mhcounteren, CSR_MHCOUNTEREN, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P10)
 #endif
 #ifdef DECLARE_CSR_ALIAS
-/* Ubadaddr is 0x043 in 1.9.1, but 0x043 is utval in 1.10.  */
-DECLARE_CSR_ALIAS(ubadaddr, CSR_UTVAL, CSR_CLASS_I)
-/* Sbadaddr is 0x143 in 1.9.1, but 0x143 is stval in 1.10.  */
-DECLARE_CSR_ALIAS(sbadaddr, CSR_STVAL, CSR_CLASS_I)
-/* Sptbr is 0x180 in 1.9.1, but 0x180 is satp in 1.10.  */
-DECLARE_CSR_ALIAS(sptbr, CSR_SATP, CSR_CLASS_I)
-/* Mbadaddr is 0x343 in 1.9.1, but 0x343 is mtval in 1.10.  */
-DECLARE_CSR_ALIAS(mbadaddr, CSR_MTVAL, CSR_CLASS_I)
-/* Mucounteren is 0x320 in 1.10, but 0x320 is mcountinhibit in 1.11.  */
-DECLARE_CSR_ALIAS(mucounteren, CSR_MCOUNTINHIBIT, CSR_CLASS_I)
-/* Dscratch is 0x7b2 in 1.10, but 0x7b2 is dscratch0 in 1.11.  */
-DECLARE_CSR_ALIAS(dscratch, CSR_DSCRATCH0, CSR_CLASS_I)
+DECLARE_CSR_ALIAS(misa, 0xf10, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P9P1)
+DECLARE_CSR_ALIAS(ubadaddr, CSR_UTVAL, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P10)
+DECLARE_CSR_ALIAS(sbadaddr, CSR_STVAL, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P10)
+DECLARE_CSR_ALIAS(sptbr, CSR_SATP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P10)
+DECLARE_CSR_ALIAS(mbadaddr, CSR_MTVAL, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P10)
+DECLARE_CSR_ALIAS(mucounteren, CSR_MCOUNTINHIBIT, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P10)
+DECLARE_CSR_ALIAS(dscratch, CSR_DSCRATCH0, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9, PRIV_SPEC_CLASS_1P11)
 #endif
 #ifdef DECLARE_CAUSE
 DECLARE_CAUSE("misaligned fetch", CAUSE_MISALIGNED_FETCH)
index ac6e861dd9c3576d13276a292b1d2917b2c812d7..feeaa6e8dca63bb2f611671c561ec1750d69c416 100644 (file)
@@ -24,6 +24,7 @@
 #include "riscv-opc.h"
 #include <stdlib.h>
 #include <stdint.h>
+#include "bfd.h"
 
 typedef uint64_t insn_t;
 
@@ -343,6 +344,73 @@ struct riscv_opcode
   unsigned long pinfo;
 };
 
+/* The current supported ISA spec versions.  */
+
+enum riscv_isa_spec_class
+{
+  ISA_SPEC_CLASS_NONE,
+
+  ISA_SPEC_CLASS_2P2,
+  ISA_SPEC_CLASS_20190608,
+  ISA_SPEC_CLASS_20191213
+};
+
+/* This structure holds version information for specific ISA.  */
+
+struct riscv_ext_version
+{
+  const char *name;
+  enum riscv_isa_spec_class isa_spec_class;
+  unsigned int major_version;
+  unsigned int minor_version;
+};
+
+/* All RISC-V CSR belong to one of these classes.  */
+
+enum riscv_csr_class
+{
+  CSR_CLASS_NONE,
+
+  CSR_CLASS_I,
+  CSR_CLASS_I_32,      /* rv32 only */
+  CSR_CLASS_F,         /* f-ext only */
+};
+
+/* The current supported privilege spec versions.  */
+
+enum riscv_priv_spec_class
+{
+  PRIV_SPEC_CLASS_NONE,
+
+  PRIV_SPEC_CLASS_1P9,
+  PRIV_SPEC_CLASS_1P9P1,
+  PRIV_SPEC_CLASS_1P10,
+  PRIV_SPEC_CLASS_1P11,
+  PRIV_SPEC_CLASS_DRAFT
+};
+
+/* This structure holds all restricted conditions for a CSR.  */
+
+struct riscv_csr_extra
+{
+  /* Class to which this CSR belongs.  Used to decide whether or
+     not this CSR is legal in the current -march context.  */
+  enum riscv_csr_class csr_class;
+
+  /* CSR may have differnet numbers in the previous priv spec.  */
+  unsigned address;
+
+  /* Record the CSR is defined/valid in which versions.  */
+  enum riscv_priv_spec_class define_version;
+
+  /* Record the CSR is aborted/invalid from which versions.  If it isn't
+     aborted in the current version, then it should be CSR_CLASS_VDRAFT.  */
+  enum riscv_priv_spec_class abort_version;
+
+  /* The CSR may have more than one setting.  */
+  struct riscv_csr_extra *next;
+};
+
 /* Instruction is a simple alias (e.g. "mv" for "addi").  */
 #define        INSN_ALIAS              0x00000001
 
@@ -420,5 +488,13 @@ extern const char * const riscv_fpr_names_abi[NFPR];
 
 extern const struct riscv_opcode riscv_opcodes[];
 extern const struct riscv_opcode riscv_insn_types[];
+extern const struct riscv_ext_version riscv_ext_version_table[];
+
+extern bfd_boolean
+riscv_get_isa_spec_class (const char *, enum riscv_isa_spec_class *);
+extern bfd_boolean
+riscv_get_priv_spec_class (const char *, enum riscv_priv_spec_class *);
+extern const char *
+riscv_get_priv_spec_name (enum riscv_priv_spec_class);
 
 #endif /* _RISCV_H_ */
index b4ee76c2606d490d2f68a119f0045e33ceb25adb..d95d5cfc2171edc4874b961e98b8269aeb749d4b 100644 (file)
@@ -1,3 +1,19 @@
+2020-05-20  Nelson Chu  <nelson.chu@sifive.com>
+
+       * testsuite/ld-riscv-elf/attr-merge-arch-01.d: Updated
+        priv attributes according to the -mpriv-spec option.
+       * testsuite/ld-riscv-elf/attr-merge-arch-02.d: Likewise.
+       * testsuite/ld-riscv-elf/attr-merge-arch-03.d: Likewise.
+       * testsuite/ld-riscv-elf/attr-merge-priv-spec-a.s: Likewise.
+       * testsuite/ld-riscv-elf/attr-merge-priv-spec-b.s: Likewise.
+       * testsuite/ld-riscv-elf/attr-merge-priv-spec.d: Likewise.
+       * testsuite/ld-riscv-elf/attr-merge-stack-align.d: Likewise.
+       * testsuite/ld-riscv-elf/attr-merge-strict-align-01.d: Likewise.
+       * testsuite/ld-riscv-elf/attr-merge-strict-align-02.d: Likewise.
+       * testsuite/ld-riscv-elf/attr-merge-strict-align-03.d: Likewise.
+       * testsuite/ld-riscv-elf/attr-merge-strict-align-04.d: Likewise.
+       * testsuite/ld-riscv-elf/attr-merge-strict-align-05.d: Likewise.
+
 2020-05-20  Alan Modra  <amodra@gmail.com>
 
        PR 25993
index 5baaba4c16f9545cd25dfd59fadfbbf0869dedeb..032f9641ad23dbac98f091f6031e2638d2f9eb41 100644 (file)
@@ -7,3 +7,6 @@
 Attribute Section: riscv
 File Attributes
   Tag_RISCV_arch: "rv32i2p0_m2p0"
+  Tag_RISCV_priv_spec: [0-9_\"].*
+  Tag_RISCV_priv_spec_minor: [0-9_\"].*
+#...
index a7d79a1ea2bf7bf0dd44eb3105228a7e8dcdd555..54a7621f2c378b948df46876f332adb17439e969 100644 (file)
@@ -7,3 +7,6 @@
 Attribute Section: riscv
 File Attributes
   Tag_RISCV_arch: "rv32i2p0_m2p0"
+  Tag_RISCV_priv_spec: [0-9_\"].*
+  Tag_RISCV_priv_spec_minor: [0-9_\"].*
+#...
index d46dee808de3637e268c0014e6b304ee23e8d4a0..67f0437e32875e72124e6e1192ca6b55e284cd28 100644 (file)
@@ -7,3 +7,6 @@
 Attribute Section: riscv
 File Attributes
   Tag_RISCV_arch: "rv32i2p0_m2p0_xbar2p0_xfoo2p0"
+  Tag_RISCV_priv_spec: [0-9_\"].*
+  Tag_RISCV_priv_spec_minor: [0-9_\"].*
+#...
index 1ad95002e5cf5051659fb2ef2a4d0cd8c96b2f24..0b7ffea1fc2ef9b09f7c017d097b6c2eace8524b 100644 (file)
@@ -1,3 +1,3 @@
        .attribute priv_spec, 1
-       .attribute priv_spec_minor, 2
-       .attribute priv_spec_revision, 3
+       .attribute priv_spec_minor, 9
+       .attribute priv_spec_revision, 1
index 1ad95002e5cf5051659fb2ef2a4d0cd8c96b2f24..0b7ffea1fc2ef9b09f7c017d097b6c2eace8524b 100644 (file)
@@ -1,3 +1,3 @@
        .attribute priv_spec, 1
-       .attribute priv_spec_minor, 2
-       .attribute priv_spec_revision, 3
+       .attribute priv_spec_minor, 9
+       .attribute priv_spec_revision, 1
index dc4c4e08f9b24dd9089df6cac657b292b63725ac..0aa6fe0701bb1083ce42584261e0af5256edca17 100644 (file)
@@ -8,5 +8,5 @@ Attribute Section: riscv
 File Attributes
   Tag_RISCV_arch: [a-zA-Z0-9_\"].*
   Tag_RISCV_priv_spec: 1
-  Tag_RISCV_priv_spec_minor: 2
-  Tag_RISCV_priv_spec_revision: 3
+  Tag_RISCV_priv_spec_minor: 9
+  Tag_RISCV_priv_spec_revision: 1
index 7a5bc8148bb0b0c5f9bd302848bdf2e1bc8d959e..5585fac3b7b96a3e7bed24a80962ec8696ab6332 100644 (file)
@@ -8,3 +8,6 @@ Attribute Section: riscv
 File Attributes
   Tag_RISCV_stack_align: 16-bytes
   Tag_RISCV_arch: [a-zA-Z0-9_\"].*
+  Tag_RISCV_priv_spec: [0-9_\"].*
+  Tag_RISCV_priv_spec_minor: [0-9_\"].*
+#...
index 10399307bbbe8d9a72b28d0fbf018832350ad424..91011a2ba4ddf934337adf55668f5cedcfa4f348 100644 (file)
@@ -8,3 +8,6 @@ Attribute Section: riscv
 File Attributes
   Tag_RISCV_arch: [a-zA-Z0-9_\"].*
   Tag_RISCV_unaligned_access: Unaligned access
+  Tag_RISCV_priv_spec: [0-9_\"].*
+  Tag_RISCV_priv_spec_minor: [0-9_\"].*
+#...
index 12ca1c4dd31a294c96025537b618ddfed16c9e48..5bdea27948b6e621ae0ec38f7c9d5adb0fd8e1e5 100644 (file)
@@ -8,3 +8,6 @@ Attribute Section: riscv
 File Attributes
   Tag_RISCV_arch: [a-zA-Z0-9_\"].*
   Tag_RISCV_unaligned_access: Unaligned access
+  Tag_RISCV_priv_spec: [0-9_\"].*
+  Tag_RISCV_priv_spec_minor: [0-9_\"].*
+#...
index e41351da0112b5d96e241778006afd3fe449e88b..ac886fb768180a1166527c478cc5288ae0f2fac4 100644 (file)
@@ -8,3 +8,6 @@ Attribute Section: riscv
 File Attributes
   Tag_RISCV_arch: [a-zA-Z0-9_\"].*
   Tag_RISCV_unaligned_access: Unaligned access
+  Tag_RISCV_priv_spec: [0-9_\"].*
+  Tag_RISCV_priv_spec_minor: [0-9_\"].*
+#...
index ac2a766cfcaaea2ac0cd56cfa71bd6911e8f5958..dd45f76317ad82cec81c710e6eab86d275454710 100644 (file)
@@ -7,3 +7,6 @@
 Attribute Section: riscv
 File Attributes
   Tag_RISCV_arch: [a-zA-Z0-9_\"].*
+  Tag_RISCV_priv_spec: [0-9_\"].*
+  Tag_RISCV_priv_spec_minor: [0-9_\"].*
+#...
index 608c05e8c38b12466eb82a330d054e7bbce45c96..ef0c154a1210da8e04f3665f51d836f94b3ba4c8 100644 (file)
@@ -8,3 +8,6 @@ Attribute Section: riscv
 File Attributes
   Tag_RISCV_arch: [a-zA-Z0-9_\"].*
   Tag_RISCV_unaligned_access: Unaligned access
+  Tag_RISCV_priv_spec: [0-9_\"].*
+  Tag_RISCV_priv_spec_minor: [0-9_\"].*
+#...
index 4d4c77dbd4a072ca35c59f9974f22450ecab1c17..d788d8c35af2734c7cf6d624df9d8ab08cda4bcf 100644 (file)
@@ -1,3 +1,34 @@
+2020-05-20  Nelson Chu  <nelson.chu@sifive.com>
+
+       * riscv-opc.c (riscv_ext_version_table): The table used to store
+       all information about the supported spec and the corresponding ISA
+       versions.  Currently, only Zicsr is supported to verify the
+       correctness of Z sub extension settings.  Others will be supported
+       in the future patches.
+       (struct isa_spec_t, isa_specs): List for all supported ISA spec
+       classes and the corresponding strings.
+       (riscv_get_isa_spec_class): New function.  Get the corresponding ISA
+       spec class by giving a ISA spec string.
+       * riscv-opc.c (struct priv_spec_t): New structure.
+       (struct priv_spec_t priv_specs): List for all supported privilege spec
+       classes and the corresponding strings.
+       (riscv_get_priv_spec_class): New function.  Get the corresponding
+       privilege spec class by giving a spec string.
+       (riscv_get_priv_spec_name): New function.  Get the corresponding
+       privilege spec string by giving a CSR version class.
+       * riscv-dis.c: Updated since DECLARE_CSR is changed.
+       * riscv-dis.c: Add new disassembler option -Mpriv-spec to dump the CSR
+       according to the chosen version.  Build a hash table riscv_csr_hash to
+       store the valid CSR for the chosen pirv verison.  Dump the direct
+       CSR address rather than it's name if it is invalid.
+       (parse_riscv_dis_option_without_args): New function.  Parse the options
+       without arguments.
+       (parse_riscv_dis_option): Call parse_riscv_dis_option_without_args to
+       parse the options without arguments first, and then handle the options
+       with arguments.  Add the new option -Mpriv-spec, which has argument.
+       * riscv-dis.c (print_riscv_disassembler_options): Add description
+       about the new OBJDUMP option.
+
 2020-05-19  Peter Bergner  <bergner@linux.ibm.com>
 
        * ppc-opc.c (insert_ls, extract_ls): Handle 3-bit L fields and new
index 62bcd32dfdb3bc9ddbbda3668d2d05bc011aedf5..8ff1e9c975151802ad6a870e25269467c7b37c4d 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: 2020-04-30 13:57+0100\n"
+"POT-Creation-Date: 2020-05-20 15:53+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"
@@ -75,7 +75,7 @@ msgid ""
 msgstr ""
 
 #: aarch64-dis.c:3552 mips-dis.c:2778 mips-dis.c:2788 mips-dis.c:2791
-#: nfp-dis.c:2981 riscv-dis.c:556
+#: nfp-dis.c:2981 riscv-dis.c:616
 #, c-format
 msgid "\n"
 msgstr ""
@@ -663,7 +663,7 @@ msgstr ""
 
 #: bpf-asm.c:181 epiphany-asm.c:456 fr30-asm.c:311 frv-asm.c:1264
 #: ip2k-asm.c:512 iq2000-asm.c:460 lm32-asm.c:350 m32c-asm.c:1585
-#: m32r-asm.c:329 mep-asm.c:1288 mt-asm.c:596 or1k-asm.c:580 xc16x-asm.c:377
+#: m32r-asm.c:329 mep-asm.c:1288 mt-asm.c:596 or1k-asm.c:571 xc16x-asm.c:377
 #: xstormy16-asm.c:277
 #, c-format
 msgid "internal error: unrecognized field %d while parsing"
@@ -671,7 +671,7 @@ msgstr ""
 
 #: bpf-asm.c:233 epiphany-asm.c:508 fr30-asm.c:363 frv-asm.c:1316
 #: ip2k-asm.c:564 iq2000-asm.c:512 lm32-asm.c:402 m32c-asm.c:1637
-#: m32r-asm.c:381 mep-asm.c:1340 mt-asm.c:648 or1k-asm.c:632 xc16x-asm.c:429
+#: m32r-asm.c:381 mep-asm.c:1340 mt-asm.c:648 or1k-asm.c:623 xc16x-asm.c:429
 #: xstormy16-asm.c:329
 msgid "missing mnemonic in syntax string"
 msgstr ""
@@ -686,8 +686,8 @@ msgstr ""
 #: m32c-asm.c:1772 m32c-asm.c:1776 m32c-asm.c:1865 m32c-asm.c:1972
 #: m32r-asm.c:516 m32r-asm.c:520 m32r-asm.c:609 m32r-asm.c:716 mep-asm.c:1475
 #: mep-asm.c:1479 mep-asm.c:1568 mep-asm.c:1675 mt-asm.c:783 mt-asm.c:787
-#: mt-asm.c:876 mt-asm.c:983 or1k-asm.c:767 or1k-asm.c:771 or1k-asm.c:860
-#: or1k-asm.c:967 xc16x-asm.c:564 xc16x-asm.c:568 xc16x-asm.c:657
+#: mt-asm.c:876 mt-asm.c:983 or1k-asm.c:758 or1k-asm.c:762 or1k-asm.c:851
+#: or1k-asm.c:958 xc16x-asm.c:564 xc16x-asm.c:568 xc16x-asm.c:657
 #: xc16x-asm.c:764 xstormy16-asm.c:464 xstormy16-asm.c:468 xstormy16-asm.c:557
 #: xstormy16-asm.c:664
 msgid "unrecognized instruction"
@@ -695,7 +695,7 @@ msgstr ""
 
 #: bpf-asm.c:415 epiphany-asm.c:690 fr30-asm.c:545 frv-asm.c:1498
 #: ip2k-asm.c:746 iq2000-asm.c:694 lm32-asm.c:584 m32c-asm.c:1819
-#: m32r-asm.c:563 mep-asm.c:1522 mt-asm.c:830 or1k-asm.c:814 xc16x-asm.c:611
+#: m32r-asm.c:563 mep-asm.c:1522 mt-asm.c:830 or1k-asm.c:805 xc16x-asm.c:611
 #: xstormy16-asm.c:511
 #, c-format
 msgid "syntax error (expected char `%c', found `%c')"
@@ -703,7 +703,7 @@ msgstr ""
 
 #: bpf-asm.c:425 epiphany-asm.c:700 fr30-asm.c:555 frv-asm.c:1508
 #: ip2k-asm.c:756 iq2000-asm.c:704 lm32-asm.c:594 m32c-asm.c:1829
-#: m32r-asm.c:573 mep-asm.c:1532 mt-asm.c:840 or1k-asm.c:824 xc16x-asm.c:621
+#: m32r-asm.c:573 mep-asm.c:1532 mt-asm.c:840 or1k-asm.c:815 xc16x-asm.c:621
 #: xstormy16-asm.c:521
 #, c-format
 msgid "syntax error (expected char `%c', found end of instruction)"
@@ -711,21 +711,21 @@ msgstr ""
 
 #: bpf-asm.c:455 epiphany-asm.c:730 fr30-asm.c:585 frv-asm.c:1538
 #: ip2k-asm.c:786 iq2000-asm.c:734 lm32-asm.c:624 m32c-asm.c:1859
-#: m32r-asm.c:603 mep-asm.c:1562 mt-asm.c:870 or1k-asm.c:854 xc16x-asm.c:651
+#: m32r-asm.c:603 mep-asm.c:1562 mt-asm.c:870 or1k-asm.c:845 xc16x-asm.c:651
 #: xstormy16-asm.c:551
 msgid "junk at end of line"
 msgstr ""
 
 #: bpf-asm.c:567 epiphany-asm.c:842 fr30-asm.c:697 frv-asm.c:1650
 #: ip2k-asm.c:898 iq2000-asm.c:846 lm32-asm.c:736 m32c-asm.c:1971
-#: m32r-asm.c:715 mep-asm.c:1674 mt-asm.c:982 or1k-asm.c:966 xc16x-asm.c:763
+#: m32r-asm.c:715 mep-asm.c:1674 mt-asm.c:982 or1k-asm.c:957 xc16x-asm.c:763
 #: xstormy16-asm.c:663
 msgid "unrecognized form of instruction"
 msgstr ""
 
 #: bpf-asm.c:581 epiphany-asm.c:856 fr30-asm.c:711 frv-asm.c:1664
 #: ip2k-asm.c:912 iq2000-asm.c:860 lm32-asm.c:750 m32c-asm.c:1985
-#: m32r-asm.c:729 mep-asm.c:1688 mt-asm.c:996 or1k-asm.c:980 xc16x-asm.c:777
+#: m32r-asm.c:729 mep-asm.c:1688 mt-asm.c:996 or1k-asm.c:971 xc16x-asm.c:777
 #: xstormy16-asm.c:677
 #, c-format
 msgid "bad instruction `%.50s...'"
@@ -733,7 +733,7 @@ msgstr ""
 
 #: bpf-asm.c:584 epiphany-asm.c:859 fr30-asm.c:714 frv-asm.c:1667
 #: ip2k-asm.c:915 iq2000-asm.c:863 lm32-asm.c:753 m32c-asm.c:1988
-#: m32r-asm.c:732 mep-asm.c:1691 mt-asm.c:999 or1k-asm.c:983 xc16x-asm.c:780
+#: m32r-asm.c:732 mep-asm.c:1691 mt-asm.c:999 or1k-asm.c:974 xc16x-asm.c:780
 #: xstormy16-asm.c:680
 #, c-format
 msgid "bad instruction `%.50s'"
@@ -766,7 +766,7 @@ msgstr ""
 
 #: bpf-dis.c:203 epiphany-dis.c:279 fr30-dis.c:300 frv-dis.c:397 ip2k-dis.c:289
 #: iq2000-dis.c:190 lm32-dis.c:148 m32c-dis.c:892 m32r-dis.c:280 mep-dis.c:1188
-#: mt-dis.c:291 or1k-dis.c:184 xc16x-dis.c:421 xstormy16-dis.c:169
+#: mt-dis.c:291 or1k-dis.c:175 xc16x-dis.c:421 xstormy16-dis.c:169
 #, c-format
 msgid "internal error: unrecognized field %d while printing insn"
 msgstr ""
@@ -797,7 +797,7 @@ msgstr ""
 
 #: bpf-ibld.c:628 epiphany-ibld.c:883 fr30-ibld.c:738 frv-ibld.c:864
 #: ip2k-ibld.c:615 iq2000-ibld.c:721 lm32-ibld.c:642 m32c-ibld.c:1739
-#: m32r-ibld.c:673 mep-ibld.c:1216 mt-ibld.c:757 or1k-ibld.c:745
+#: m32r-ibld.c:673 mep-ibld.c:1216 mt-ibld.c:757 or1k-ibld.c:736
 #: xc16x-ibld.c:760 xstormy16-ibld.c:686
 #, c-format
 msgid "internal error: unrecognized field %d while building insn"
@@ -805,7 +805,7 @@ msgstr ""
 
 #: bpf-ibld.c:712 epiphany-ibld.c:1178 fr30-ibld.c:944 frv-ibld.c:1182
 #: ip2k-ibld.c:691 iq2000-ibld.c:897 lm32-ibld.c:747 m32c-ibld.c:2901
-#: m32r-ibld.c:811 mep-ibld.c:1816 mt-ibld.c:978 or1k-ibld.c:913
+#: m32r-ibld.c:811 mep-ibld.c:1816 mt-ibld.c:978 or1k-ibld.c:895
 #: xc16x-ibld.c:981 xstormy16-ibld.c:833
 #, c-format
 msgid "internal error: unrecognized field %d while decoding insn"
@@ -813,7 +813,7 @@ msgstr ""
 
 #: bpf-ibld.c:781 epiphany-ibld.c:1322 fr30-ibld.c:1091 frv-ibld.c:1461
 #: ip2k-ibld.c:766 iq2000-ibld.c:1029 lm32-ibld.c:837 m32c-ibld.c:3519
-#: m32r-ibld.c:925 mep-ibld.c:2287 mt-ibld.c:1179 or1k-ibld.c:1018
+#: m32r-ibld.c:925 mep-ibld.c:2287 mt-ibld.c:1179 or1k-ibld.c:991
 #: xc16x-ibld.c:1203 xstormy16-ibld.c:944
 #, c-format
 msgid "internal error: unrecognized field %d while getting int operand"
@@ -821,7 +821,7 @@ msgstr ""
 
 #: bpf-ibld.c:832 epiphany-ibld.c:1448 fr30-ibld.c:1220 frv-ibld.c:1722
 #: ip2k-ibld.c:823 iq2000-ibld.c:1143 lm32-ibld.c:909 m32c-ibld.c:4119
-#: m32r-ibld.c:1021 mep-ibld.c:2740 mt-ibld.c:1362 or1k-ibld.c:1105
+#: m32r-ibld.c:1021 mep-ibld.c:2740 mt-ibld.c:1362 or1k-ibld.c:1069
 #: xc16x-ibld.c:1407 xstormy16-ibld.c:1037
 #, c-format
 msgid "internal error: unrecognized field %d while getting vma operand"
@@ -829,7 +829,7 @@ msgstr ""
 
 #: bpf-ibld.c:890 epiphany-ibld.c:1581 fr30-ibld.c:1352 frv-ibld.c:1990
 #: ip2k-ibld.c:883 iq2000-ibld.c:1264 lm32-ibld.c:988 m32c-ibld.c:4707
-#: m32r-ibld.c:1123 mep-ibld.c:3154 mt-ibld.c:1552 or1k-ibld.c:1199
+#: m32r-ibld.c:1123 mep-ibld.c:3154 mt-ibld.c:1552 or1k-ibld.c:1154
 #: xc16x-ibld.c:1612 xstormy16-ibld.c:1137
 #, c-format
 msgid "internal error: unrecognized field %d while setting int operand"
@@ -837,7 +837,7 @@ msgstr ""
 
 #: bpf-ibld.c:938 epiphany-ibld.c:1704 fr30-ibld.c:1474 frv-ibld.c:2248
 #: ip2k-ibld.c:933 iq2000-ibld.c:1375 lm32-ibld.c:1057 m32c-ibld.c:5285
-#: m32r-ibld.c:1215 mep-ibld.c:3558 mt-ibld.c:1732 or1k-ibld.c:1283
+#: m32r-ibld.c:1215 mep-ibld.c:3558 mt-ibld.c:1732 or1k-ibld.c:1229
 #: xc16x-ibld.c:1807 xstormy16-ibld.c:1227
 #, c-format
 msgid "internal error: unrecognized field %d while setting vma operand"
@@ -1881,29 +1881,29 @@ msgstr ""
 msgid "internal relocation type invalid"
 msgstr ""
 
-#: or1k-desc.c:2213
+#: or1k-desc.c:2040
 #, c-format
 msgid ""
 "internal error: or1k_cgen_rebuild_tables: conflicting insn-chunk-bitsize "
 "values: `%d' vs. `%d'"
 msgstr ""
 
-#: or1k-desc.c:2296
+#: or1k-desc.c:2123
 #, c-format
 msgid "internal error: or1k_cgen_cpu_open: unsupported argument `%d'"
 msgstr ""
 
-#: or1k-desc.c:2315
+#: or1k-desc.c:2142
 #, c-format
 msgid "internal error: or1k_cgen_cpu_open: no endianness specified"
 msgstr ""
 
-#: ppc-dis.c:376
+#: ppc-dis.c:381
 #, c-format
 msgid "warning: ignoring unknown -M%s option"
 msgstr ""
 
-#: ppc-dis.c:965
+#: ppc-dis.c:972
 #, c-format
 msgid ""
 "\n"
@@ -1935,101 +1935,126 @@ msgstr ""
 msgid "attempt to set 'at' bits when using + or - modifier"
 msgstr ""
 
-#: ppc-opc.c:658
+#: ppc-opc.c:677
 msgid "invalid R operand"
 msgstr ""
 
-#: ppc-opc.c:713
+#: ppc-opc.c:732
 msgid "invalid mask field"
 msgstr ""
 
-#: ppc-opc.c:736
+#: ppc-opc.c:755
 msgid "invalid mfcr mask"
 msgstr ""
 
-#: ppc-opc.c:812
+#: ppc-opc.c:873 ppc-opc.c:891
 msgid "illegal L operand value"
 msgstr ""
 
-#: ppc-opc.c:851
+#: ppc-opc.c:914
+msgid "illegal WC operand value"
+msgstr ""
+
+#: ppc-opc.c:1011
 msgid "incompatible L operand value"
 msgstr ""
 
-#: ppc-opc.c:891 ppc-opc.c:926
+#: ppc-opc.c:1051 ppc-opc.c:1086
 msgid "illegal bitmask"
 msgstr ""
 
-#: ppc-opc.c:1013
+#: ppc-opc.c:1173
 msgid "address register in load range"
 msgstr ""
 
-#: ppc-opc.c:1079
+#: ppc-opc.c:1213
+msgid "illegal PL operand value"
+msgstr ""
+
+#: ppc-opc.c:1274
 msgid "index register in load range"
 msgstr ""
 
-#: ppc-opc.c:1108 ppc-opc.c:1194
+#: ppc-opc.c:1303 ppc-opc.c:1389
 msgid "source and target register operands must be different"
 msgstr ""
 
-#: ppc-opc.c:1139
+#: ppc-opc.c:1334
 msgid "invalid register operand when updating"
 msgstr ""
 
-#: ppc-opc.c:1257
+#: ppc-opc.c:1452
 msgid "illegal immediate value"
 msgstr ""
 
-#: ppc-opc.c:1362
+#: ppc-opc.c:1557
 msgid "invalid bat number"
 msgstr ""
 
-#: ppc-opc.c:1397
+#: ppc-opc.c:1592
 msgid "invalid sprg number"
 msgstr ""
 
-#: ppc-opc.c:1434
+#: ppc-opc.c:1629
 msgid "invalid tbr number"
 msgstr ""
 
-#: ppc-opc.c:1581
+#: ppc-opc.c:1715 ppc-opc.c:1761
+msgid "VSR overlaps ACC operand"
+msgstr ""
+
+#: ppc-opc.c:1868
 msgid "invalid constant"
 msgstr ""
 
-#: ppc-opc.c:1683 ppc-opc.c:1706 ppc-opc.c:1729 ppc-opc.c:1752
+#: ppc-opc.c:1970 ppc-opc.c:1993 ppc-opc.c:2016 ppc-opc.c:2039
 msgid "UIMM = 00000 is illegal"
 msgstr ""
 
-#: ppc-opc.c:1775
+#: ppc-opc.c:2062
 msgid "UIMM values >7 are illegal"
 msgstr ""
 
-#: ppc-opc.c:1798
+#: ppc-opc.c:2085
 msgid "UIMM values >15 are illegal"
 msgstr ""
 
-#: ppc-opc.c:1821
+#: ppc-opc.c:2108
 msgid "GPR odd is illegal"
 msgstr ""
 
-#: ppc-opc.c:1844 ppc-opc.c:1867
+#: ppc-opc.c:2131 ppc-opc.c:2154
 msgid "invalid offset"
 msgstr ""
 
-#: ppc-opc.c:1890
+#: ppc-opc.c:2177
 msgid "invalid Ddd value"
 msgstr ""
 
-#: riscv-dis.c:68
+#. The option without '=' should be defined above.
+#: riscv-dis.c:84 riscv-dis.c:108
 #, c-format
 msgid "unrecognized disassembler option: %s"
 msgstr ""
 
-#: riscv-dis.c:346
+#. Invalid options with '=', no option name before '=',
+#. and no value after '='.
+#: riscv-dis.c:92
+#, c-format
+msgid "unrecognized disassembler option with '=': %s"
+msgstr ""
+
+#: riscv-dis.c:102
+#, c-format
+msgid "unknown privilege spec set by %s=%s"
+msgstr ""
+
+#: riscv-dis.c:402
 #, c-format
 msgid "# internal error, undefined modifier (%c)"
 msgstr ""
 
-#: riscv-dis.c:545
+#: riscv-dis.c:601
 #, c-format
 msgid ""
 "\n"
@@ -2037,19 +2062,27 @@ msgid ""
 "with the -M switch (multiple options should be separated by commas):\n"
 msgstr ""
 
-#: riscv-dis.c:549
+#: riscv-dis.c:605
+#, c-format
+msgid ""
+"\n"
+"  numeric         Print numeric register names, rather than ABI names.\n"
+msgstr ""
+
+#: riscv-dis.c:608
 #, c-format
 msgid ""
 "\n"
-"  numeric       Print numeric register names, rather than ABI names.\n"
+"  no-aliases      Disassemble only into canonical instructions, rather\n"
+"                  than into pseudoinstructions.\n"
 msgstr ""
 
-#: riscv-dis.c:552
+#: riscv-dis.c:612
 #, c-format
 msgid ""
 "\n"
-"  no-aliases    Disassemble only into canonical instructions, rather\n"
-"                than into pseudoinstructions.\n"
+"  priv-spec=PRIV  Print the CSR according to the chosen privilege spec\n"
+"                  (1.9, 1.9.1, 1.10, 1.11).\n"
 msgstr ""
 
 #: rx-dis.c:139 rx-dis.c:163 rx-dis.c:171 rx-dis.c:179 rx-dis.c:187
index d7a184c4f971f6f14669baab98ba55cf13b5ad5e..f26a46e0b34aa8c2e59530714f18d1126317a92b 100644 (file)
@@ -31,6 +31,8 @@
 #include "bfd_stdint.h"
 #include <ctype.h>
 
+static enum riscv_priv_spec_class default_priv_spec = PRIV_SPEC_CLASS_NONE;
+
 struct riscv_private_data
 {
   bfd_vma gp;
@@ -52,8 +54,8 @@ set_default_riscv_dis_options (void)
   no_aliases = 0;
 }
 
-static void
-parse_riscv_dis_option (const char *option)
+static bfd_boolean
+parse_riscv_dis_option_without_args (const char *option)
 {
   if (strcmp (option, "no-aliases") == 0)
     no_aliases = 1;
@@ -62,6 +64,44 @@ parse_riscv_dis_option (const char *option)
       riscv_gpr_names = riscv_gpr_names_numeric;
       riscv_fpr_names = riscv_fpr_names_numeric;
     }
+  else
+    return FALSE;
+  return TRUE;
+}
+
+static void
+parse_riscv_dis_option (const char *option)
+{
+  char *equal, *value;
+
+  if (parse_riscv_dis_option_without_args (option))
+    return;
+
+  equal = strchr (option, '=');
+  if (equal == NULL)
+    {
+      /* The option without '=' should be defined above.  */
+      opcodes_error_handler (_("unrecognized disassembler option: %s"), option);
+      return;
+    }
+  if (equal == option
+      || *(equal + 1) == '\0')
+    {
+      /* Invalid options with '=', no option name before '=',
+       and no value after '='.  */
+      opcodes_error_handler (_("unrecognized disassembler option with '=': %s"),
+                            option);
+      return;
+    }
+
+  *equal = '\0';
+  value = equal + 1;
+  if (strcmp (option, "priv-spec") == 0)
+    {
+      if (!riscv_get_priv_spec_class (value, &default_priv_spec))
+       opcodes_error_handler (_("unknown privilege spec set by %s=%s"),
+                              option, value);
+    }
   else
     {
       /* xgettext:c-format */
@@ -322,16 +362,32 @@ print_insn_args (const char *d, insn_t l, bfd_vma pc, disassemble_info *info)
 
        case 'E':
          {
-           const char* csr_name = NULL;
+           static const char *riscv_csr_hash[4096];    /* Total 2^12 CSR.  */
+           static bfd_boolean init_csr = FALSE;
            unsigned int csr = EXTRACT_OPERAND (CSR, l);
-           switch (csr)
+
+           if (!init_csr)
              {
-#define DECLARE_CSR(name, num, class) case num: csr_name = #name; break;
+               unsigned int i;
+               for (i = 0; i < 4096; i++)
+                 riscv_csr_hash[i] = NULL;
+
+               /* Set to the newest privilege version.  */
+               if (default_priv_spec == PRIV_SPEC_CLASS_NONE)
+                 default_priv_spec = PRIV_SPEC_CLASS_DRAFT - 1;
+
+#define DECLARE_CSR(name, num, class, define_version, abort_version) \
+               if (default_priv_spec >= define_version              \
+                   && default_priv_spec < abort_version)            \
+                 riscv_csr_hash[num] = #name;
+#define DECLARE_CSR_ALIAS(name, num, class, define_version, abort_version) \
+               DECLARE_CSR (name, num, class, define_version, abort_version)
 #include "opcode/riscv-opc.h"
 #undef DECLARE_CSR
              }
-           if (csr_name)
-             print (info->stream, "%s", csr_name);
+
+           if (riscv_csr_hash[csr] != NULL)
+             print (info->stream, "%s", riscv_csr_hash[csr]);
            else
              print (info->stream, "0x%x", csr);
            break;
@@ -547,11 +603,15 @@ The following RISC-V-specific disassembler options are supported for use\n\
 with the -M switch (multiple options should be separated by commas):\n"));
 
   fprintf (stream, _("\n\
-  numeric       Print numeric register names, rather than ABI names.\n"));
+  numeric         Print numeric register names, rather than ABI names.\n"));
+
+  fprintf (stream, _("\n\
+  no-aliases      Disassemble only into canonical instructions, rather\n\
+                  than into pseudoinstructions.\n"));
 
   fprintf (stream, _("\n\
-  no-aliases    Disassemble only into canonical instructions, rather\n\
-                than into pseudoinstructions.\n"));
+  priv-spec=PRIV  Print the CSR according to the chosen privilege spec\n\
+                  (1.9, 1.9.1, 1.10, 1.11).\n"));
 
   fprintf (stream, _("\n"));
 }
index ceedcafc191ea99516e758345810478de2bcced6..f011f1bbb7e8dea0ee0b58d356c1e56402d8f30a 100644 (file)
@@ -884,3 +884,147 @@ const struct riscv_opcode riscv_insn_types[] =
 /* Terminate the list.  */
 {0, 0, INSN_CLASS_NONE, 0, 0, 0, 0, 0}
 };
+
+/* All standard extensions defined in all supported ISA spec.  */
+const struct riscv_ext_version riscv_ext_version_table[] =
+{
+/* name, ISA spec, major version, minor_version.  */
+{"e", ISA_SPEC_CLASS_20191213, 1, 9},
+{"e", ISA_SPEC_CLASS_20190608, 1, 9},
+{"e", ISA_SPEC_CLASS_2P2,      1, 9},
+
+{"i", ISA_SPEC_CLASS_20191213, 2, 1},
+{"i", ISA_SPEC_CLASS_20190608, 2, 1},
+{"i", ISA_SPEC_CLASS_2P2,      2, 0},
+
+{"m", ISA_SPEC_CLASS_20191213, 2, 0},
+{"m", ISA_SPEC_CLASS_20190608, 2, 0},
+{"m", ISA_SPEC_CLASS_2P2,      2, 0},
+
+{"a", ISA_SPEC_CLASS_20191213, 2, 1},
+{"a", ISA_SPEC_CLASS_20190608, 2, 0},
+{"a", ISA_SPEC_CLASS_2P2,      2, 0},
+
+{"f", ISA_SPEC_CLASS_20191213, 2, 2},
+{"f", ISA_SPEC_CLASS_20190608, 2, 2},
+{"f", ISA_SPEC_CLASS_2P2,      2, 0},
+
+{"d", ISA_SPEC_CLASS_20191213, 2, 2},
+{"d", ISA_SPEC_CLASS_20190608, 2, 2},
+{"d", ISA_SPEC_CLASS_2P2,      2, 0},
+
+{"q", ISA_SPEC_CLASS_20191213, 2, 2},
+{"q", ISA_SPEC_CLASS_20190608, 2, 2},
+{"q", ISA_SPEC_CLASS_2P2,      2, 0},
+
+{"c", ISA_SPEC_CLASS_20191213, 2, 0},
+{"c", ISA_SPEC_CLASS_20190608, 2, 0},
+{"c", ISA_SPEC_CLASS_2P2,      2, 0},
+
+{"p", ISA_SPEC_CLASS_20191213, 0, 2},
+{"p", ISA_SPEC_CLASS_20190608, 0, 2},
+{"p", ISA_SPEC_CLASS_2P2,      0, 1},
+
+{"v", ISA_SPEC_CLASS_20191213, 0, 7},
+{"v", ISA_SPEC_CLASS_20190608, 0, 7},
+{"v", ISA_SPEC_CLASS_2P2,      0, 7},
+
+{"n", ISA_SPEC_CLASS_20190608, 1, 1},
+{"n", ISA_SPEC_CLASS_2P2,      1, 1},
+
+{"zicsr", ISA_SPEC_CLASS_20191213, 2, 0},
+{"zicsr", ISA_SPEC_CLASS_20190608, 2, 0},
+
+/* Terminate the list.  */
+{NULL, 0, 0, 0}
+};
+
+struct isa_spec_t
+{
+  const char *name;
+  enum riscv_isa_spec_class class;
+};
+
+/* List for all supported ISA spec versions.  */
+static const struct isa_spec_t isa_specs[] =
+{
+  {"2.2",      ISA_SPEC_CLASS_2P2},
+  {"20190608", ISA_SPEC_CLASS_20190608},
+  {"20191213", ISA_SPEC_CLASS_20191213},
+
+/* Terminate the list.  */
+  {NULL, 0}
+};
+
+/* Get the corresponding ISA spec class by giving a ISA spec string.  */
+
+bfd_boolean
+riscv_get_isa_spec_class (const char *s,
+                         enum riscv_isa_spec_class *class)
+{
+  const struct isa_spec_t *version;
+
+  if (s == NULL)
+    return FALSE;
+
+  for (version = &isa_specs[0]; version->name != NULL; ++version)
+    if (strcmp (version->name, s) == 0)
+      {
+       *class = version->class;
+       return TRUE;
+      }
+
+  /* Can not find the supported ISA spec.  */
+  return FALSE;
+}
+
+struct priv_spec_t
+{
+  const char *name;
+  enum riscv_priv_spec_class class;
+};
+
+/* List for all supported privilege versions.  */
+static const struct priv_spec_t priv_specs[] =
+{
+  {"1.9",   PRIV_SPEC_CLASS_1P9},
+  {"1.9.1", PRIV_SPEC_CLASS_1P9P1},
+  {"1.10",  PRIV_SPEC_CLASS_1P10},
+  {"1.11",  PRIV_SPEC_CLASS_1P11},
+
+/* Terminate the list.  */
+  {NULL, 0}
+};
+
+/* Get the corresponding CSR version class by giving a privilege
+   version string.  */
+
+bfd_boolean
+riscv_get_priv_spec_class (const char *s,
+                          enum riscv_priv_spec_class *class)
+{
+  const struct priv_spec_t *version;
+
+  if (s == NULL)
+    return FALSE;
+
+  for (version = &priv_specs[0]; version->name != NULL; ++version)
+    if (strcmp (version->name, s) == 0)
+      {
+       *class = version->class;
+       return TRUE;
+      }
+
+  /* Can not find the supported privilege version.  */
+  return FALSE;
+}
+
+/* Get the corresponding privilege version string by giving a CSR
+   version class.  */
+
+const char *
+riscv_get_priv_spec_name (enum riscv_priv_spec_class class)
+{
+  /* The first enum is PRIV_SPEC_CLASS_NONE.  */
+  return priv_specs[class - 1].name;
+}