branch-updates
authorMatthias Klose <doko@debian.org>
Wed, 6 Jan 2021 10:57:25 +0000 (10:57 +0000)
committerMatthias Klose <doko@debian.org>
Wed, 6 Jan 2021 10:57:25 +0000 (10:57 +0000)
# DP: updates from the binutils-2.35 branch

# DP: updates from the binutils-2.35 branch

# git diff 7e46a74aa3713c563940960e361e08defda019c2 f0b8ea109fbcd6ae6d226234428061f88ebfd3cc

Gbp-Pq: Name branch-updates.diff

147 files changed:
bfd/ChangeLog
bfd/development.sh
bfd/dwarf2.c
bfd/elf64-ppc.c
bfd/elf64-ppc.h
bfd/elf64-x86-64.c
bfd/elflink.c
bfd/elfxx-x86.c
bfd/version.h
binutils/ChangeLog
binutils/doc/binutils.texi
binutils/dwarf.c
binutils/nm.c
binutils/readelf.c
binutils/testsuite/binutils-all/dw5.W
binutils/testsuite/binutils-all/dwarf-attributes.W
binutils/testsuite/binutils-all/x86-64/pr26808.dump [new file with mode: 0644]
binutils/testsuite/binutils-all/x86-64/x86-64.exp
elfcpp/ChangeLog
elfcpp/dwarf.h
gas/ChangeLog
gas/config/tc-aarch64.c
gas/config/tc-arm.c
gas/config/tc-i386.c
gas/config/tc-ppc.c
gas/doc/c-aarch64.texi
gas/doc/c-arm.texi
gas/dwarf2dbg.c
gas/testsuite/gas/aarch64/system.d
gas/testsuite/gas/aarch64/system.s
gas/testsuite/gas/arm/mve-vldr-vstr-bad.d [new file with mode: 0644]
gas/testsuite/gas/arm/mve-vldr-vstr-bad.l [new file with mode: 0644]
gas/testsuite/gas/arm/mve-vldr-vstr-bad.s [new file with mode: 0644]
gas/testsuite/gas/arm/pr26858.d [new file with mode: 0644]
gas/testsuite/gas/arm/pr26858.s [new file with mode: 0644]
gas/testsuite/gas/elf/dwarf-5-cu.d
gas/testsuite/gas/i386/dwarf4-line-1.d [new file with mode: 0644]
gas/testsuite/gas/i386/dwarf4-line-1.s [new file with mode: 0644]
gas/testsuite/gas/i386/dwarf5-line-1.d [new file with mode: 0644]
gas/testsuite/gas/i386/dwarf5-line-1.s [new file with mode: 0644]
gas/testsuite/gas/i386/dwarf5-line-2.d [new file with mode: 0644]
gas/testsuite/gas/i386/dwarf5-line-2.s [new file with mode: 0644]
gas/testsuite/gas/i386/dwarf5-line-3.d [new file with mode: 0644]
gas/testsuite/gas/i386/dwarf5-line-3.s [new file with mode: 0644]
gas/testsuite/gas/i386/enqcmd-16bit.d [new file with mode: 0644]
gas/testsuite/gas/i386/enqcmd-16bit.s [new file with mode: 0644]
gas/testsuite/gas/i386/enqcmd-intel.d
gas/testsuite/gas/i386/enqcmd.d
gas/testsuite/gas/i386/enqcmd.s
gas/testsuite/gas/i386/evex-no-scale-64.d
gas/testsuite/gas/i386/i386.exp
gas/testsuite/gas/i386/movdir-16bit.d [new file with mode: 0644]
gas/testsuite/gas/i386/movdir-16bit.s [new file with mode: 0644]
gas/testsuite/gas/i386/movdir-intel.d
gas/testsuite/gas/i386/movdir.d
gas/testsuite/gas/i386/movdir.s
gas/testsuite/gas/i386/x86-64-addr32-intel.d
gas/testsuite/gas/i386/x86-64-addr32.d
gas/testsuite/gas/i386/x86-64-enqcmd-intel.d
gas/testsuite/gas/i386/x86-64-enqcmd.d
gas/testsuite/gas/i386/x86-64-enqcmd.s
gas/testsuite/gas/i386/x86-64-movdir-intel.d
gas/testsuite/gas/i386/x86-64-movdir.d
gas/testsuite/gas/i386/x86-64-movdir.s
gas/testsuite/gas/ppc/476.d
gas/testsuite/gas/ppc/476.s
gas/testsuite/gas/ppc/a2.d
gas/testsuite/gas/ppc/a2.s
gas/testsuite/gas/ppc/be.d [new file with mode: 0644]
gas/testsuite/gas/ppc/be.s [new file with mode: 0644]
gas/testsuite/gas/ppc/int128.d
gas/testsuite/gas/ppc/int128.s
gas/testsuite/gas/ppc/le_error.d [new file with mode: 0644]
gas/testsuite/gas/ppc/le_error.l [new file with mode: 0644]
gas/testsuite/gas/ppc/power8.d
gas/testsuite/gas/ppc/power8.s
gas/testsuite/gas/ppc/power9.d
gas/testsuite/gas/ppc/power9.s
gas/testsuite/gas/ppc/ppc.exp
gas/testsuite/gas/ppc/vsx2.d
gas/testsuite/gas/ppc/xvtlsbb.d
gold/ChangeLog
gold/options.cc
gold/options.h
gold/powerpc.cc
gold/testsuite/split_i386.sh
gold/testsuite/split_x32.sh
gold/testsuite/split_x86_64.sh
include/ChangeLog
include/dwarf2.def
include/dwarf2.h
ld/ChangeLog
ld/emultempl/ppc64elf.em
ld/ldelf.c
ld/testsuite/ld-elf/pr26302.nd [new file with mode: 0644]
ld/testsuite/ld-elf/pr26302.rd [new file with mode: 0644]
ld/testsuite/ld-elf/pr26302.ver [new file with mode: 0644]
ld/testsuite/ld-elf/pr26302a.c [new file with mode: 0644]
ld/testsuite/ld-elf/pr26302b.c [new file with mode: 0644]
ld/testsuite/ld-elf/pr27128.s [new file with mode: 0644]
ld/testsuite/ld-elf/pr27128.t [new file with mode: 0644]
ld/testsuite/ld-elf/pr27128a.d [new file with mode: 0644]
ld/testsuite/ld-elf/pr27128b.d [new file with mode: 0644]
ld/testsuite/ld-elf/pr27128c.d [new file with mode: 0644]
ld/testsuite/ld-elf/pr27128d.d [new file with mode: 0644]
ld/testsuite/ld-elf/pr27128e.d [new file with mode: 0644]
ld/testsuite/ld-elf/shared.exp
ld/testsuite/ld-i386/i386.exp
ld/testsuite/ld-i386/pr26711-1.d [new file with mode: 0644]
ld/testsuite/ld-i386/pr26711-2.d [new file with mode: 0644]
ld/testsuite/ld-i386/pr26711-3.d [new file with mode: 0644]
ld/testsuite/ld-i386/pr26869.d [new file with mode: 0644]
ld/testsuite/ld-i386/pr26869.s [new file with mode: 0644]
ld/testsuite/ld-i386/property-3.r
ld/testsuite/ld-i386/property-4.r
ld/testsuite/ld-i386/property-5.r
ld/testsuite/ld-powerpc/elfv2so.d
ld/testsuite/ld-powerpc/notoc2.d
ld/testsuite/ld-powerpc/tlsdesc.wf
ld/testsuite/ld-powerpc/tlsdesc2.d
ld/testsuite/ld-powerpc/tlsdesc2.wf
ld/testsuite/ld-powerpc/tlsopt5.d
ld/testsuite/ld-powerpc/tlsopt5.wf
ld/testsuite/ld-powerpc/tlsopt6.d
ld/testsuite/ld-powerpc/tlsopt6.wf
ld/testsuite/ld-sparc/tlssunbin32.rd
ld/testsuite/ld-sparc/tlssunbin64.rd
ld/testsuite/ld-x86-64/pr26711-1-x32.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr26711-1.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr26711-2-x32.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr26711-2.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr26711-3-x32.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr26711-3.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr26711.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr27016a.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr27016a.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr27016b.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr27016b.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/property-3.r
ld/testsuite/ld-x86-64/property-4.r
ld/testsuite/ld-x86-64/property-5.r
ld/testsuite/ld-x86-64/x86-64.exp
libiberty/ChangeLog
libiberty/dwarfnames.c
opcodes/ChangeLog
opcodes/i386-dis.c
opcodes/ppc-opc.c

index 9fac12538a5dbff5998575a9c5f5511c625a9ea9..4c629d4be63448d0d8a98c67150cd4f90b252b7e 100644 (file)
@@ -1,3 +1,97 @@
+2021-01-01  Alan Modra  <amodra@gmail.com>
+
+       Apply from master
+       2020-08-22  H.J. Lu  <hongjiu.lu@intel.com>
+       PR ld/26382
+       * elflink.c (elf_link_output_symstrtab): Keep only one '@' for
+       versioned symbols, which are defined in shared objects, in
+       symbol string table.
+
+2020-12-04  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/27016
+       * elf64-x86-64.c (elf_x86_64_convert_load_reloc): Convert load
+       to mov only for GOTPCRELX relocations.
+
+2020-10-09  Alan Modra  <amodra@gmail.com>
+
+       * elf64-ppc.c (write_plt_relocs_for_local_syms): Don't do local
+       entry offset optimisation.
+
+2020-10-07  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/26711
+       * elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Merge -z ibt
+       and -z shstk only with GNU_PROPERTY_X86_FEATURE_1_AND.
+
+2020-09-28  Alan Modra  <amodra@gmail.com>
+
+       PR 26656
+       * elf64-ppc.c (ppc_build_one_stub, ppc_size_one_stub): Check for
+       NULL stub_entry->h before calling is_tls_get_addr.
+
+2020-09-26  Alan Modra  <amodra@gmail.com>
+
+       * elf64-ppc.c (GLINK_PLTRESOLVE_SIZE): Depend on has_plt_localentry0.
+       (LD_R0_0R11, ADD_R11_R0_R11): Define.
+       (ppc64_elf_tls_setup): Disable params->plt_localentry0 when power10
+       code detected.
+       (ppc64_elf_size_stubs): Update __glink_PLTresolve eh_frame.
+       (ppc64_elf_build_stubs): Move r2 save to start of __glink_PLTresolve,
+       and only emit for has_plt_localentry0.  Don't use r2 in the stub.
+
+2020-09-24  Nick Clifton  <nickc@redhat.com>
+
+       Import from mainline:
+       2020-08-29  Nick Clifton  <nickc@redhat.com>
+
+       PR 26520
+       * dwarf2.c (scan_unit_for_symbols): Add member entries to the
+       variable table.
+
+2020-09-24  Alan Modra  <amodra@gmail.com>
+
+       PR 26656
+       * elf64-ppc.c (plt_stub_size): Add "odd" param.  Use it with
+       size_power10_offset rather than calculating from start of stub.
+       Add size for notoc tls_get_addr_opt stub.
+       (plt_stub_pad): Add "odd" param, pass to plt_stub_size.
+       (build_tls_get_addr_head, build_tls_get_addr_tail): New functions.
+       (build_tls_get_addr_stub): Delete.
+       (ppc_build_one_stub): Use a temp for htab->params->stub_bfd.
+       Emit notoc tls_get_addr_opt stub.  Move eh_frame code to
+       suit.  Adjust code to use bfd_tls_get_addr_head/tail in place
+       of build_tls_get_addr_stub.
+       (ppc_size_one_stub): Size notoc tls_get_addr_opt stub.
+       Adjust plt_stub_size and plt_stub_pad calls.  Correct "odd"
+       when padding stub.  Size eh_frame for notoc stub too.
+       Correct lr_restore value.
+       (ppc64_elf_relocate_section): Don't skip over first insn of
+       notoc tls_get_addr_opt stub.
+
+2020-09-24  Alan Modra  <amodra@gmail.com>
+
+       PR 26655
+       * elf64-ppc.c (ppc64_elf_func_desc_adjust): Rename to..
+       (ppc64_elf_edit): Call params->edit.
+       (ppc64_elf_tls_setup): Don't call _bfd_elf_tls_setup.  Return a
+       bfd_boolean.
+       * elf64-ppc.h (struct ppc64_elf_params): Add "edit".
+       (ppc64_elf_tls_setup): Update declaration.
+
+2020-09-24  Alan Modra  <amodra@gmail.com>
+
+       Apply from master
+       2020-08-13  Alan Modra  <amodra@gmail.com>
+       * elf64-ppc.h (struct ppc64_elf_params): Add no_pcrel_opt.
+       * elf64-ppc.c (ppc64_elf_relocate_section): Disable GOT reloc
+       optimizations when --no-toc-optimize.  Disable R_PPC64_PCREL_OPT
+       optimization when --no-pcrel-optimize.
+
+2020-09-19  Nick Clifton  <nickc@redhat.com>
+
+       * development.sh (development): Set to true.
+
 2020-09-19  Nick Clifton  <nickc@redhat.com>
 
        This is the 2.35.1 point release.
index 32be4b9460f6d8a766dcc0d0e4dca8d5490bad72..6bbed41d6d4e4d7ee00cacb83881312392ea8a29 100644 (file)
@@ -16,7 +16,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Controls whether to enable development-mode features by default.
-development=false
+development=true
 
 # Indicate whether this is a release branch.
 experimental=false
index b8f0008a10da531c8119d154b03cf5713f6d76b4..977bf43a6a181d97fa3ae71329478f9f263b090f 100644 (file)
@@ -3404,7 +3404,8 @@ scan_unit_for_symbols (struct comp_unit *unit)
       else
        {
          func = NULL;
-         if (abbrev->tag == DW_TAG_variable)
+         if (abbrev->tag == DW_TAG_variable
+             || abbrev->tag == DW_TAG_member)
            {
              size_t amt = sizeof (struct varinfo);
              var = (struct varinfo *) bfd_zalloc (abfd, amt);
@@ -3516,7 +3517,7 @@ scan_unit_for_symbols (struct comp_unit *unit)
                      spec_var = lookup_var_by_offset (attr.u.val,
                                                       unit->variable_table);
                      if (spec_var == NULL)
-                       {       
+                       {
                          _bfd_error_handler (_("DWARF error: could not find "
                                                "variable specification "
                                                "at offset %lx"),
index 4bf37e1d981327c32071ccc8bac01970f935c4ce..ec8c85eba595b81e15edf3b7ce9bb435f23e368b 100644 (file)
@@ -114,7 +114,7 @@ static bfd_vma opd_entry_value
 #define elf_backend_adjust_dynamic_symbol     ppc64_elf_adjust_dynamic_symbol
 #define elf_backend_hide_symbol                      ppc64_elf_hide_symbol
 #define elf_backend_maybe_function_sym       ppc64_elf_maybe_function_sym
-#define elf_backend_always_size_sections      ppc64_elf_func_desc_adjust
+#define elf_backend_always_size_sections      ppc64_elf_edit
 #define elf_backend_size_dynamic_sections     ppc64_elf_size_dynamic_sections
 #define elf_backend_hash_symbol                      ppc64_elf_hash_symbol
 #define elf_backend_init_index_section       _bfd_elf_init_2_index_sections
@@ -211,9 +211,10 @@ static bfd_vma opd_entry_value
 #define PLD_R12_PC     0x04100000e5800000ULL
 #define PNOP           0x0700000000000000ULL
 
-/* __glink_PLTresolve stub instructions.  We enter with the index in R0.  */
+/* __glink_PLTresolve stub instructions.  We enter with the index in
+   R0 for ELFv1, and the address of a glink branch in R12 for ELFv2.  */
 #define GLINK_PLTRESOLVE_SIZE(htab)                    \
-  (8u + (htab->opd_abi ? 11 * 4 : 14 * 4))
+  (8u + (htab->opd_abi ? 11 * 4 : htab->has_plt_localentry0 ? 14 * 4 : 13 * 4))
                                        /* 0:                           */
                                        /*  .quad plt0-1f               */
                                        /* __glink:                     */
@@ -229,11 +230,14 @@ static bfd_vma opd_entry_value
                                        /*  mtctr %12                   */
                                        /*  ld %11,16(%11)              */
                                        /*  bctr                        */
-#define MFLR_R0                0x7c0802a6      /*  mflr %r0                    */
-#define MTLR_R0                0x7c0803a6      /*  mtlr %r0                    */
-#define SUB_R12_R12_R11        0x7d8b6050      /*  subf %r12,%r11,%r12         */
-#define ADDI_R0_R12    0x380c0000      /*  addi %r0,%r12,0             */
-#define SRDI_R0_R0_2   0x7800f082      /*  rldicl %r0,%r0,62,2         */
+
+#define MFLR_R0                0x7c0802a6      /* mflr %r0                     */
+#define MTLR_R0                0x7c0803a6      /* mtlr %r0                     */
+#define SUB_R12_R12_R11        0x7d8b6050      /* subf %r12,%r11,%r12          */
+#define ADDI_R0_R12    0x380c0000      /* addi %r0,%r12,0              */
+#define SRDI_R0_R0_2   0x7800f082      /* rldicl %r0,%r0,62,2          */
+#define LD_R0_0R11     0xe80b0000      /* ld %r0,0(%r11)               */
+#define ADD_R11_R0_R11 0x7d605a14      /* add %r11,%r0,%r11            */
 
 /* Pad with this.  */
 #define NOP            0x60000000
@@ -6340,13 +6344,13 @@ static const struct sfpr_def_parms save_res_funcs[] =
   };
 
 /* Called near the start of bfd_elf_size_dynamic_sections.  We use
-   this hook to a) provide some gcc support functions, and b) transfer
-   dynamic linking information gathered so far on function code symbol
-   entries, to their corresponding function descriptor symbol entries.  */
+   this hook to a) run the edit functions in this file, b) provide
+   some gcc support functions, and c) transfer dynamic linking
+   information gathered so far on function code symbol entries, to
+   their corresponding function descriptor symbol entries.  */
 
 static bfd_boolean
-ppc64_elf_func_desc_adjust (bfd *obfd ATTRIBUTE_UNUSED,
-                           struct bfd_link_info *info)
+ppc64_elf_edit (bfd *obfd ATTRIBUTE_UNUSED, struct bfd_link_info *info)
 {
   struct ppc_link_hash_table *htab;
 
@@ -6354,6 +6358,9 @@ ppc64_elf_func_desc_adjust (bfd *obfd ATTRIBUTE_UNUSED,
   if (htab == NULL)
     return FALSE;
 
+  /* Call back into the linker, which then runs the edit functions.  */
+  htab->params->edit ();
+
   /* Provide any missing _save* and _rest* functions.  */
   if (htab->sfpr != NULL)
     {
@@ -7694,9 +7701,11 @@ ppc64_elf_inline_plt (struct bfd_link_info *info)
   return TRUE;
 }
 
-/* Set htab->tls_get_addr and call the generic ELF tls_setup function.  */
+/* Set htab->tls_get_addr and various other info specific to TLS.
+   This needs to run before dynamic symbols are processed in
+   bfd_elf_size_dynamic_sections.  */
 
-asection *
+bfd_boolean
 ppc64_elf_tls_setup (struct bfd_link_info *info)
 {
   struct ppc_link_hash_table *htab;
@@ -7704,7 +7713,7 @@ ppc64_elf_tls_setup (struct bfd_link_info *info)
 
   htab = ppc_hash_table (info);
   if (htab == NULL)
-    return NULL;
+    return FALSE;
 
   if (abiversion (info->output_bfd) == 1)
     htab->opd_abi = 1;
@@ -7730,6 +7739,19 @@ ppc64_elf_tls_setup (struct bfd_link_info *info)
      --plt-localentry can cause trouble.  */
   if (htab->params->plt_localentry0 < 0)
     htab->params->plt_localentry0 = 0;
+  if (htab->params->plt_localentry0 && htab->has_power10_relocs)
+    {
+      /* The issue is that __glink_PLTresolve saves r2, which is done
+        because glibc ld.so _dl_runtime_resolve restores r2 to support
+        a glibc plt call optimisation where global entry code is
+        skipped on calls that resolve to the same binary.  The
+        __glink_PLTresolve save of r2 is incompatible with code
+        making tail calls, because the tail call might go via the
+        resolver and thus overwrite the proper saved r2.  */
+      _bfd_error_handler (_("warning: --plt-localentry is incompatible with "
+                           "power10 pc-relative code"));
+      htab->params->plt_localentry0 = 0;
+    }
   if (htab->params->plt_localentry0
       && elf_link_hash_lookup (&htab->elf, "GLIBC_2.26",
                               FALSE, FALSE, FALSE) == NULL)
@@ -7826,7 +7848,7 @@ ppc64_elf_tls_setup (struct bfd_link_info *info)
                      _bfd_elf_strtab_delref (elf_hash_table (info)->dynstr,
                                              opt_fd->dynstr_index);
                      if (!bfd_elf_link_record_dynamic_symbol (info, opt_fd))
-                       return NULL;
+                       return FALSE;
                    }
                  if (tga_fd != NULL)
                    {
@@ -7885,7 +7907,7 @@ ppc64_elf_tls_setup (struct bfd_link_info *info)
       && htab->params->no_tls_get_addr_regsave == -1)
     htab->params->no_tls_get_addr_regsave = 0;
 
-  return _bfd_elf_tls_setup (info->output_bfd, info);
+  return TRUE;
 }
 
 /* Return TRUE iff REL is a branch reloc with a global symbol matching
@@ -10834,62 +10856,60 @@ eh_advance_size (unsigned int delta)
 static inline unsigned int
 plt_stub_size (struct ppc_link_hash_table *htab,
               struct ppc_stub_hash_entry *stub_entry,
-              bfd_vma off)
+              bfd_vma off,
+              unsigned int odd)
 {
   unsigned size;
 
   if (stub_entry->stub_type >= ppc_stub_plt_call_notoc)
     {
       if (htab->params->power10_stubs != 0)
-       {
-         bfd_vma start = (stub_entry->stub_offset
-                          + stub_entry->group->stub_sec->output_offset
-                          + stub_entry->group->stub_sec->output_section->vma);
-         if (stub_entry->stub_type > ppc_stub_plt_call_notoc)
-           start += 4;
-         size = 8 + size_power10_offset (off, start & 4);
-       }
+       size = 8 + size_power10_offset (off, odd);
       else
        size = 8 + size_offset (off - 8);
       if (stub_entry->stub_type > ppc_stub_plt_call_notoc)
        size += 4;
-      return size;
     }
-
-  size = 12;
-  if (ALWAYS_EMIT_R2SAVE
-      || stub_entry->stub_type == ppc_stub_plt_call_r2save)
-    size += 4;
-  if (PPC_HA (off) != 0)
-    size += 4;
-  if (htab->opd_abi)
+  else
     {
-      size += 4;
-      if (htab->params->plt_static_chain)
+      size = 12;
+      if (ALWAYS_EMIT_R2SAVE
+         || stub_entry->stub_type == ppc_stub_plt_call_r2save)
        size += 4;
-      if (htab->params->plt_thread_safe
-         && htab->elf.dynamic_sections_created
-         && stub_entry->h != NULL
-         && stub_entry->h->elf.dynindx != -1)
-       size += 8;
-      if (PPC_HA (off + 8 + 8 * htab->params->plt_static_chain) != PPC_HA (off))
+      if (PPC_HA (off) != 0)
        size += 4;
+      if (htab->opd_abi)
+       {
+         size += 4;
+         if (htab->params->plt_static_chain)
+           size += 4;
+         if (htab->params->plt_thread_safe
+             && htab->elf.dynamic_sections_created
+             && stub_entry->h != NULL
+             && stub_entry->h->elf.dynindx != -1)
+           size += 8;
+         if (PPC_HA (off + 8 + 8 * htab->params->plt_static_chain)
+             != PPC_HA (off))
+           size += 4;
+       }
     }
   if (stub_entry->h != NULL
       && is_tls_get_addr (&stub_entry->h->elf, htab)
       && htab->params->tls_get_addr_opt)
     {
-      if (htab->params->no_tls_get_addr_regsave)
+      if (!htab->params->no_tls_get_addr_regsave)
        {
-         size += 7 * 4;
-         if (stub_entry->stub_type == ppc_stub_plt_call_r2save)
-           size += 6 * 4;
+         size += 30 * 4;
+         if (stub_entry->stub_type == ppc_stub_plt_call_r2save
+             || stub_entry->stub_type == ppc_stub_plt_call_both)
+           size += 4;
        }
       else
        {
-         size += 30 * 4;
-         if (stub_entry->stub_type == ppc_stub_plt_call_r2save)
-           size += 4;
+         size += 7 * 4;
+         if (stub_entry->stub_type == ppc_stub_plt_call_r2save
+             || stub_entry->stub_type == ppc_stub_plt_call_both)
+           size += 6 * 4;
        }
     }
   return size;
@@ -10904,7 +10924,8 @@ plt_stub_size (struct ppc_link_hash_table *htab,
 static inline unsigned int
 plt_stub_pad (struct ppc_link_hash_table *htab,
              struct ppc_stub_hash_entry *stub_entry,
-             bfd_vma plt_off)
+             bfd_vma plt_off,
+             unsigned int odd)
 {
   int stub_align;
   unsigned stub_size;
@@ -10919,7 +10940,7 @@ plt_stub_pad (struct ppc_link_hash_table *htab,
     }
 
   stub_align = 1 << -htab->params->plt_stub_align;
-  stub_size = plt_stub_size (htab, stub_entry, plt_off);
+  stub_size = plt_stub_size (htab, stub_entry, plt_off, odd);
   if (((stub_off + stub_size - 1) & -stub_align) - (stub_off & -stub_align)
       > ((stub_size - 1) & -stub_align))
     return stub_align - (stub_off & (stub_align - 1));
@@ -11114,14 +11135,12 @@ build_plt_stub (struct ppc_link_hash_table *htab,
 #define MR_R3_R0       0x7c030378
 #define BCTRL          0x4e800421
 
-static inline bfd_byte *
-build_tls_get_addr_stub (struct ppc_link_hash_table *htab,
+static bfd_byte *
+build_tls_get_addr_head (struct ppc_link_hash_table *htab,
                         struct ppc_stub_hash_entry *stub_entry,
-                        bfd_byte *p, bfd_vma offset, Elf_Internal_Rela *r)
+                        bfd_byte *p)
 {
   bfd *obfd = htab->params->stub_bfd;
-  bfd_byte *loc = p;
-  unsigned int i;
 
   bfd_put_32 (obfd, LD_R0_0R3 + 0, p),         p += 4;
   bfd_put_32 (obfd, LD_R12_0R3 + 8, p),                p += 4;
@@ -11130,21 +11149,43 @@ build_tls_get_addr_stub (struct ppc_link_hash_table *htab,
   bfd_put_32 (obfd, ADD_R3_R12_R13, p),                p += 4;
   bfd_put_32 (obfd, BEQLR, p),                 p += 4;
   bfd_put_32 (obfd, MR_R3_R0, p),              p += 4;
-  if (htab->params->no_tls_get_addr_regsave)
-    {
-      if (r != NULL)
-       r[0].r_offset += 7 * 4;
-      if (stub_entry->stub_type != ppc_stub_plt_call_r2save)
-       return build_plt_stub (htab, stub_entry, p, offset, r);
 
+  if (!htab->params->no_tls_get_addr_regsave)
+    p = tls_get_addr_prologue (obfd, p, htab);
+  else if (stub_entry->stub_type == ppc_stub_plt_call_r2save
+          || stub_entry->stub_type == ppc_stub_plt_call_both)
+    {
       bfd_put_32 (obfd, MFLR_R0, p);
       p += 4;
       bfd_put_32 (obfd, STD_R0_0R1 + STK_LINKER (htab), p);
       p += 4;
+    }
+  return p;
+}
 
-      if (r != NULL)
-       r[0].r_offset += 2 * 4;
-      p = build_plt_stub (htab, stub_entry, p, offset, r);
+static bfd_byte *
+build_tls_get_addr_tail (struct ppc_link_hash_table *htab,
+                        struct ppc_stub_hash_entry *stub_entry,
+                        bfd_byte *p,
+                        bfd_byte *loc)
+{
+  bfd *obfd = htab->params->stub_bfd;
+
+  if (!htab->params->no_tls_get_addr_regsave)
+    {
+      bfd_put_32 (obfd, BCTRL, p - 4);
+
+      if (stub_entry->stub_type == ppc_stub_plt_call_r2save
+         || stub_entry->stub_type == ppc_stub_plt_call_both)
+       {
+         bfd_put_32 (obfd, LD_R2_0R1 + STK_TOC (htab), p);
+         p += 4;
+       }
+      p = tls_get_addr_epilogue (obfd, p, htab);
+    }
+  else if (stub_entry->stub_type == ppc_stub_plt_call_r2save
+          || stub_entry->stub_type == ppc_stub_plt_call_both)
+    {
       bfd_put_32 (obfd, BCTRL, p - 4);
 
       bfd_put_32 (obfd, LD_R2_0R1 + STK_TOC (htab), p);
@@ -11156,24 +11197,6 @@ build_tls_get_addr_stub (struct ppc_link_hash_table *htab,
       bfd_put_32 (obfd, BLR, p);
       p += 4;
     }
-  else
-    {
-      p = tls_get_addr_prologue (obfd, p, htab);
-
-      if (r != NULL)
-       r[0].r_offset += 18 * 4;
-
-      p = build_plt_stub (htab, stub_entry, p, offset, r);
-      bfd_put_32 (obfd, BCTRL, p - 4);
-
-      if (stub_entry->stub_type == ppc_stub_plt_call_r2save)
-       {
-         bfd_put_32 (obfd, LD_R2_0R1 + STK_TOC (htab), p);
-         p += 4;
-       }
-
-      p = tls_get_addr_epilogue (obfd, p, htab);
-    }
 
   if (htab->glink_eh_frame != NULL
       && htab->glink_eh_frame->size != 0)
@@ -11182,21 +11205,11 @@ build_tls_get_addr_stub (struct ppc_link_hash_table *htab,
 
       base = htab->glink_eh_frame->contents + stub_entry->group->eh_base + 17;
       eh = base + stub_entry->group->eh_size;
-      if (htab->params->no_tls_get_addr_regsave)
-       {
-         unsigned int lr_used, delta;
-         lr_used = stub_entry->stub_offset + (p - 20 - loc);
-         delta = lr_used - stub_entry->group->lr_restore;
-         stub_entry->group->lr_restore = lr_used + 16;
-         eh = eh_advance (htab->elf.dynobj, eh, delta);
-         *eh++ = DW_CFA_offset_extended_sf;
-         *eh++ = 65;
-         *eh++ = -(STK_LINKER (htab) / 8) & 0x7f;
-         *eh++ = DW_CFA_advance_loc + 4;
-       }
-      else
+
+      if (!htab->params->no_tls_get_addr_regsave)
        {
-         unsigned int cfa_updt, delta;
+         unsigned int cfa_updt, delta, i;
+
          /* After the bctrl, lr has been modified so we need to emit
             .eh_frame info saying the return address is on the stack.  In
             fact we must put the EH info at or before the call rather
@@ -11235,10 +11248,27 @@ build_tls_get_addr_stub (struct ppc_link_hash_table *htab,
          for (i = 4; i < 12; i++)
            *eh++ = DW_CFA_restore + i;
          *eh++ = DW_CFA_advance_loc + 2;
+         *eh++ = DW_CFA_restore_extended;
+         *eh++ = 65;
+         stub_entry->group->eh_size = eh - base;
+       }
+      else if (stub_entry->stub_type == ppc_stub_plt_call_r2save
+              || stub_entry->stub_type == ppc_stub_plt_call_both)
+       {
+         unsigned int lr_used, delta;
+
+         lr_used = stub_entry->stub_offset + (p - 20 - loc);
+         delta = lr_used - stub_entry->group->lr_restore;
+         stub_entry->group->lr_restore = lr_used + 16;
+         eh = eh_advance (htab->elf.dynobj, eh, delta);
+         *eh++ = DW_CFA_offset_extended_sf;
+         *eh++ = 65;
+         *eh++ = -(STK_LINKER (htab) / 8) & 0x7f;
+         *eh++ = DW_CFA_advance_loc + 4;
+         *eh++ = DW_CFA_restore_extended;
+         *eh++ = 65;
+         stub_entry->group->eh_size = eh - base;
        }
-      *eh++ = DW_CFA_restore_extended;
-      *eh++ = 65;
-      stub_entry->group->eh_size = eh - base;
     }
   return p;
 }
@@ -11372,6 +11402,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
   struct ppc_branch_hash_entry *br_entry;
   struct bfd_link_info *info;
   struct ppc_link_hash_table *htab;
+  bfd *obfd;
   bfd_byte *loc;
   bfd_byte *p, *relp;
   bfd_vma targ, off;
@@ -11379,6 +11410,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
   asection *plt;
   int num_rel;
   int odd;
+  bfd_boolean is_tga;
 
   /* Massage our args to the form they really have.  */
   stub_entry = (struct ppc_stub_hash_entry *) gen_entry;
@@ -11428,6 +11460,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
       off = targ - off;
 
       p = loc;
+      obfd = htab->params->stub_bfd;
       if (stub_entry->stub_type == ppc_stub_long_branch_r2off)
        {
          bfd_vma r2off = get_r2off (info, stub_entry);
@@ -11437,23 +11470,21 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
              htab->stub_error = TRUE;
              return FALSE;
            }
-         bfd_put_32 (htab->params->stub_bfd, STD_R2_0R1 + STK_TOC (htab), p);
+         bfd_put_32 (obfd, STD_R2_0R1 + STK_TOC (htab), p);
          p += 4;
          if (PPC_HA (r2off) != 0)
            {
-             bfd_put_32 (htab->params->stub_bfd,
-                         ADDIS_R2_R2 | PPC_HA (r2off), p);
+             bfd_put_32 (obfd, ADDIS_R2_R2 | PPC_HA (r2off), p);
              p += 4;
            }
          if (PPC_LO (r2off) != 0)
            {
-             bfd_put_32 (htab->params->stub_bfd,
-                         ADDI_R2_R2 | PPC_LO (r2off), p);
+             bfd_put_32 (obfd, ADDI_R2_R2 | PPC_LO (r2off), p);
              p += 4;
            }
          off -= p - loc;
        }
-      bfd_put_32 (htab->params->stub_bfd, B_DOT | (off & 0x3fffffc), p);
+      bfd_put_32 (obfd, B_DOT | (off & 0x3fffffc), p);
       p += 4;
 
       if (off + (1 << 25) >= (bfd_vma) (1 << 26))
@@ -11579,19 +11610,17 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
        }
 
       p = loc;
+      obfd = htab->params->stub_bfd;
       if (stub_entry->stub_type != ppc_stub_plt_branch_r2off)
        {
          if (PPC_HA (off) != 0)
            {
-             bfd_put_32 (htab->params->stub_bfd,
-                         ADDIS_R12_R2 | PPC_HA (off), p);
+             bfd_put_32 (obfd, ADDIS_R12_R2 | PPC_HA (off), p);
              p += 4;
-             bfd_put_32 (htab->params->stub_bfd,
-                         LD_R12_0R12 | PPC_LO (off), p);
+             bfd_put_32 (obfd, LD_R12_0R12 | PPC_LO (off), p);
            }
          else
-           bfd_put_32 (htab->params->stub_bfd,
-                       LD_R12_0R2 | PPC_LO (off), p);
+           bfd_put_32 (obfd, LD_R12_0R2 | PPC_LO (off), p);
        }
       else
        {
@@ -11603,36 +11632,32 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
              return FALSE;
            }
 
-         bfd_put_32 (htab->params->stub_bfd, STD_R2_0R1 + STK_TOC (htab), p);
+         bfd_put_32 (obfd, STD_R2_0R1 + STK_TOC (htab), p);
          p += 4;
          if (PPC_HA (off) != 0)
            {
-             bfd_put_32 (htab->params->stub_bfd,
-                         ADDIS_R12_R2 | PPC_HA (off), p);
+             bfd_put_32 (obfd, ADDIS_R12_R2 | PPC_HA (off), p);
              p += 4;
-             bfd_put_32 (htab->params->stub_bfd,
-                         LD_R12_0R12 | PPC_LO (off), p);
+             bfd_put_32 (obfd, LD_R12_0R12 | PPC_LO (off), p);
            }
          else
-           bfd_put_32 (htab->params->stub_bfd, LD_R12_0R2 | PPC_LO (off), p);
+           bfd_put_32 (obfd, LD_R12_0R2 | PPC_LO (off), p);
 
          if (PPC_HA (r2off) != 0)
            {
              p += 4;
-             bfd_put_32 (htab->params->stub_bfd,
-                         ADDIS_R2_R2 | PPC_HA (r2off), p);
+             bfd_put_32 (obfd, ADDIS_R2_R2 | PPC_HA (r2off), p);
            }
          if (PPC_LO (r2off) != 0)
            {
              p += 4;
-             bfd_put_32 (htab->params->stub_bfd,
-                         ADDI_R2_R2 | PPC_LO (r2off), p);
+             bfd_put_32 (obfd, ADDI_R2_R2 | PPC_LO (r2off), p);
            }
        }
       p += 4;
-      bfd_put_32 (htab->params->stub_bfd, MTCTR_R12, p);
+      bfd_put_32 (obfd, MTCTR_R12, p);
       p += 4;
-      bfd_put_32 (htab->params->stub_bfd, BCTR, p);
+      bfd_put_32 (obfd, BCTR, p);
       p += 4;
       break;
 
@@ -11646,12 +11671,23 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
       off = (stub_entry->stub_offset
             + stub_entry->group->stub_sec->output_offset
             + stub_entry->group->stub_sec->output_section->vma);
+      obfd = htab->params->stub_bfd;
+      is_tga = ((stub_entry->stub_type == ppc_stub_plt_call_notoc
+                || stub_entry->stub_type == ppc_stub_plt_call_both)
+               && stub_entry->h != NULL
+               && is_tls_get_addr (&stub_entry->h->elf, htab)
+               && htab->params->tls_get_addr_opt);
+      if (is_tga)
+       {
+         p = build_tls_get_addr_head (htab, stub_entry, p);
+         off += p - loc;
+       }
       if (stub_entry->stub_type == ppc_stub_long_branch_both
          || stub_entry->stub_type == ppc_stub_plt_branch_both
          || stub_entry->stub_type == ppc_stub_plt_call_both)
        {
          off += 4;
-         bfd_put_32 (htab->params->stub_bfd, STD_R2_0R1 + STK_TOC (htab), p);
+         bfd_put_32 (obfd, STD_R2_0R1 + STK_TOC (htab), p);
          p += 4;
        }
       if (stub_entry->stub_type >= ppc_stub_plt_call_notoc)
@@ -11684,17 +11720,39 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
       if (htab->params->power10_stubs != 0)
        {
          bfd_boolean load = stub_entry->stub_type >= ppc_stub_plt_call_notoc;
-         p = build_power10_offset (htab->params->stub_bfd, p, off, odd, load);
+         p = build_power10_offset (obfd, p, off, odd, load);
        }
       else
        {
+         if (htab->glink_eh_frame != NULL
+             && htab->glink_eh_frame->size != 0)
+           {
+             bfd_byte *base, *eh;
+             unsigned int lr_used, delta;
+
+             base = (htab->glink_eh_frame->contents
+                     + stub_entry->group->eh_base + 17);
+             eh = base + stub_entry->group->eh_size;
+             lr_used = stub_entry->stub_offset + (p - loc) + 8;
+             delta = lr_used - stub_entry->group->lr_restore;
+             stub_entry->group->lr_restore = lr_used + 8;
+             eh = eh_advance (htab->elf.dynobj, eh, delta);
+             *eh++ = DW_CFA_register;
+             *eh++ = 65;
+             *eh++ = 12;
+             *eh++ = DW_CFA_advance_loc + 2;
+             *eh++ = DW_CFA_restore_extended;
+             *eh++ = 65;
+             stub_entry->group->eh_size = eh - base;
+           }
+
          /* The notoc stubs calculate their target (either a PLT entry or
             the global entry point of a function) relative to the PC
             returned by the "bcl" two instructions past the start of the
             sequence emitted by build_offset.  The offset is therefore 8
             less than calculated from the start of the sequence.  */
          off -= 8;
-         p = build_offset (htab->params->stub_bfd, p, off,
+         p = build_offset (obfd, p, off,
                            stub_entry->stub_type >= ppc_stub_plt_call_notoc);
        }
 
@@ -11706,17 +11764,19 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
                  + stub_entry->group->stub_sec->output_offset
                  + stub_entry->group->stub_sec->output_section->vma
                  + (p - loc));
-         bfd_put_32 (htab->params->stub_bfd,
-                     B_DOT | ((targ - from) & 0x3fffffc), p);
+         bfd_put_32 (obfd, B_DOT | ((targ - from) & 0x3fffffc), p);
        }
       else
        {
-         bfd_put_32 (htab->params->stub_bfd, MTCTR_R12, p);
+         bfd_put_32 (obfd, MTCTR_R12, p);
          p += 4;
-         bfd_put_32 (htab->params->stub_bfd, BCTR, p);
+         bfd_put_32 (obfd, BCTR, p);
        }
       p += 4;
 
+      if (is_tga)
+       p = build_tls_get_addr_tail (htab, stub_entry, p, loc);
+
       if (info->emitrelocations)
        {
          bfd_vma roff = relp - stub_entry->group->stub_sec->contents;
@@ -11747,33 +11807,6 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
                return FALSE;
            }
        }
-
-      if (htab->params->power10_stubs == 0
-         && htab->glink_eh_frame != NULL
-         && htab->glink_eh_frame->size != 0)
-       {
-         bfd_byte *base, *eh;
-         unsigned int lr_used, delta;
-
-         base = (htab->glink_eh_frame->contents
-                 + stub_entry->group->eh_base + 17);
-         eh = base + stub_entry->group->eh_size;
-         lr_used = stub_entry->stub_offset + 8;
-         if (stub_entry->stub_type == ppc_stub_long_branch_both
-             || stub_entry->stub_type == ppc_stub_plt_branch_both
-             || stub_entry->stub_type == ppc_stub_plt_call_both)
-           lr_used += 4;
-         delta = lr_used - stub_entry->group->lr_restore;
-         stub_entry->group->lr_restore = lr_used + 8;
-         eh = eh_advance (htab->elf.dynobj, eh, delta);
-         *eh++ = DW_CFA_register;
-         *eh++ = 65;
-         *eh++ = 12;
-         *eh++ = DW_CFA_advance_loc + 2;
-         *eh++ = DW_CFA_restore_extended;
-         *eh++ = 65;
-         stub_entry->group->eh_size = eh - base;
-       }
       break;
 
     case ppc_stub_plt_call:
@@ -11842,12 +11875,20 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
            r[0].r_offset += 2;
          r[0].r_addend = targ;
        }
-      if (stub_entry->h != NULL
-         && is_tls_get_addr (&stub_entry->h->elf, htab)
-         && htab->params->tls_get_addr_opt)
-       p = build_tls_get_addr_stub (htab, stub_entry, loc, off, r);
-      else
-       p = build_plt_stub (htab, stub_entry, loc, off, r);
+      p = loc;
+      obfd = htab->params->stub_bfd;
+      is_tga = (stub_entry->h != NULL
+               && is_tls_get_addr (&stub_entry->h->elf, htab)
+               && htab->params->tls_get_addr_opt);
+      if (is_tga)
+       {
+         p = build_tls_get_addr_head (htab, stub_entry, p);
+         if (r != NULL)
+           r[0].r_offset += p - loc;
+       }
+      p = build_plt_stub (htab, stub_entry, p, off, r);
+      if (is_tga)
+       p = build_tls_get_addr_tail (htab, stub_entry, p, loc);
       break;
 
     case ppc_stub_save_res:
@@ -12143,11 +12184,19 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
 
     case ppc_stub_plt_call_notoc:
     case ppc_stub_plt_call_both:
-      off = (stub_entry->stub_offset
-            + stub_entry->group->stub_sec->output_offset
-            + stub_entry->group->stub_sec->output_section->vma);
+      lr_used = 0;
+      if (stub_entry->h != NULL
+         && is_tls_get_addr (&stub_entry->h->elf, htab)
+         && htab->params->tls_get_addr_opt)
+       {
+         lr_used += 7 * 4;
+         if (!htab->params->no_tls_get_addr_regsave)
+           lr_used += 11 * 4;
+         else if (stub_entry->stub_type == ppc_stub_plt_call_both)
+           lr_used += 2 * 4;
+       }
       if (stub_entry->stub_type == ppc_stub_plt_call_both)
-       off += 4;
+       lr_used += 4;
       targ = stub_entry->plt_ent->plt.offset & ~1;
       if (targ >= (bfd_vma) -2)
        abort ();
@@ -12163,16 +12212,21 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
            plt = htab->pltlocal;
        }
       targ += plt->output_offset + plt->output_section->vma;
+      off = (stub_entry->stub_offset
+            + stub_entry->group->stub_sec->output_offset
+            + stub_entry->group->stub_sec->output_section->vma
+            + lr_used);
       odd = off & 4;
       off = targ - off;
 
       if (htab->params->plt_stub_align != 0)
        {
-         unsigned pad = plt_stub_pad (htab, stub_entry, off);
+         unsigned pad = plt_stub_pad (htab, stub_entry, off, odd);
 
          stub_entry->group->stub_sec->size += pad;
          stub_entry->stub_offset = stub_entry->group->stub_sec->size;
          off -= pad;
+         odd ^= pad & 4;
        }
 
       if (info->emitrelocations)
@@ -12186,15 +12240,13 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
          stub_entry->group->stub_sec->flags |= SEC_RELOC;
        }
 
-      size = plt_stub_size (htab, stub_entry, off);
+      size = plt_stub_size (htab, stub_entry, off, odd);
 
       if (htab->params->power10_stubs == 0)
        {
          /* After the bcl, lr has been modified so we need to emit
             .eh_frame info saying the return address is in r12.  */
-         lr_used = stub_entry->stub_offset + 8;
-         if (stub_entry->stub_type == ppc_stub_plt_call_both)
-           lr_used += 4;
+         lr_used += stub_entry->stub_offset + 8;
          /* The eh_frame info will consist of a DW_CFA_advance_loc or
             variant, DW_CFA_register, 65, 12, DW_CFA_advance_loc+2,
             DW_CFA_restore_extended 65.  */
@@ -12202,6 +12254,30 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
          stub_entry->group->eh_size += eh_advance_size (delta) + 6;
          stub_entry->group->lr_restore = lr_used + 8;
        }
+      if ((stub_entry->stub_type == ppc_stub_plt_call_notoc
+          || stub_entry->stub_type == ppc_stub_plt_call_both)
+         && stub_entry->h != NULL
+         && is_tls_get_addr (&stub_entry->h->elf, htab)
+         && htab->params->tls_get_addr_opt)
+       {
+         if (!htab->params->no_tls_get_addr_regsave)
+           {
+             unsigned int cfa_updt = stub_entry->stub_offset + 18 * 4;
+             delta = cfa_updt - stub_entry->group->lr_restore;
+             stub_entry->group->eh_size += eh_advance_size (delta);
+             stub_entry->group->eh_size += htab->opd_abi ? 36 : 35;
+             stub_entry->group->lr_restore
+               = stub_entry->stub_offset + size - 4;
+           }
+         else if (stub_entry->stub_type == ppc_stub_plt_call_both)
+           {
+             lr_used = stub_entry->stub_offset + size - 20;
+             delta = lr_used - stub_entry->group->lr_restore;
+             stub_entry->group->eh_size += eh_advance_size (delta) + 6;
+             stub_entry->group->lr_restore
+               = stub_entry->stub_offset + size - 4;
+           }
+       }
       break;
 
     case ppc_stub_plt_call:
@@ -12227,7 +12303,7 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
 
       if (htab->params->plt_stub_align != 0)
        {
-         unsigned pad = plt_stub_pad (htab, stub_entry, off);
+         unsigned pad = plt_stub_pad (htab, stub_entry, off, 0);
 
          stub_entry->group->stub_sec->size += pad;
          stub_entry->stub_offset = stub_entry->group->stub_sec->size;
@@ -12244,14 +12320,22 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
          stub_entry->group->stub_sec->flags |= SEC_RELOC;
        }
 
-      size = plt_stub_size (htab, stub_entry, off);
+      size = plt_stub_size (htab, stub_entry, off, 0);
 
       if (stub_entry->h != NULL
          && is_tls_get_addr (&stub_entry->h->elf, htab)
          && htab->params->tls_get_addr_opt
          && stub_entry->stub_type == ppc_stub_plt_call_r2save)
        {
-         if (htab->params->no_tls_get_addr_regsave)
+         if (!htab->params->no_tls_get_addr_regsave)
+           {
+             /* Adjustments to r1 need to be described.  */
+             unsigned int cfa_updt = stub_entry->stub_offset + 18 * 4;
+             delta = cfa_updt - stub_entry->group->lr_restore;
+             stub_entry->group->eh_size += eh_advance_size (delta);
+             stub_entry->group->eh_size += htab->opd_abi ? 36 : 35;
+           }
+         else
            {
              lr_used = stub_entry->stub_offset + size - 20;
              /* The eh_frame info will consist of a DW_CFA_advance_loc
@@ -12260,15 +12344,7 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
              delta = lr_used - stub_entry->group->lr_restore;
              stub_entry->group->eh_size += eh_advance_size (delta) + 6;
            }
-         else
-           {
-             /* Adjustments to r1 need to be described.  */
-             unsigned int cfa_updt = stub_entry->stub_offset + 18 * 4;
-             delta = cfa_updt - stub_entry->group->lr_restore;
-             stub_entry->group->eh_size += eh_advance_size (delta);
-             stub_entry->group->eh_size += htab->opd_abi ? 36 : 35;
-           }
-         stub_entry->group->lr_restore = size - 4;
+         stub_entry->group->lr_restore = stub_entry->stub_offset + size - 4;
        }
       break;
 
@@ -13814,11 +13890,11 @@ ppc64_elf_size_stubs (struct bfd_link_info *info)
          /* Augmentation.  */
          p += 1;
 
-         *p++ = DW_CFA_advance_loc + 1;
+         *p++ = DW_CFA_advance_loc + (htab->has_plt_localentry0 ? 3 : 2);
          *p++ = DW_CFA_register;
          *p++ = 65;
          *p++ = htab->opd_abi ? 12 : 0;
-         *p++ = DW_CFA_advance_loc + (htab->opd_abi ? 5 : 7);
+         *p++ = DW_CFA_advance_loc + (htab->opd_abi ? 4 : 2);
          *p++ = DW_CFA_restore_extended;
          *p++ = 65;
          p += ((24 + align - 1) & -align) - 24;
@@ -14179,8 +14255,6 @@ write_plt_relocs_for_local_syms (struct bfd_link_info *info)
                }
 
              val = sym->st_value + ent->addend;
-             if (ELF_ST_TYPE (sym->st_info) != STT_GNU_IFUNC)
-               val += PPC64_LOCAL_ENTRY_OFFSET (sym->st_other);
              if (sym_sec != NULL && sym_sec->output_section != NULL)
                val += sym_sec->output_offset + sym_sec->output_section->vma;
 
@@ -14414,23 +14488,60 @@ ppc64_elf_build_stubs (struct bfd_link_info *info,
        }
       else
        {
+         unsigned int insn;
+
+         /* 0:
+            .  .quad plt0-1f           # plt0 entry relative to 1:
+            #
+            # We get here with r12 initially @ a glink branch
+            # Load the address of _dl_runtime_resolve from plt0 and
+            # jump to it, with r0 set to the index of the PLT entry
+            # to be resolved and r11 the link map.
+            __glink_PLTresolve:
+            .  std %r2,24(%r1)         # optional
+            .  mflr %r0
+            .  bcl 20,31,1f
+            1:
+            .  mflr %r11
+            .  mtlr %r0
+            .  ld %r0,(0b-1b)(%r11)
+            .  sub %r12,%r12,%r11
+            .  add %r11,%r0,%r11
+            .  addi %r0,%r12,1b-2f
+            .  ld %r12,0(%r11)
+            .  srdi %r0,%r0,2
+            .  mtctr %r12
+            .  ld %r11,8(%r11)
+            .  bctr
+            2:
+            .  b __glink_PLTresolve
+            .  ...
+            .  b __glink_PLTresolve  */
+
+         if (htab->has_plt_localentry0)
+           {
+             bfd_put_32 (htab->glink->owner, STD_R2_0R1 + 24, p);
+             p += 4;
+           }
          bfd_put_32 (htab->glink->owner, MFLR_R0, p);
          p += 4;
          bfd_put_32 (htab->glink->owner, BCL_20_31, p);
          p += 4;
          bfd_put_32 (htab->glink->owner, MFLR_R11, p);
          p += 4;
-         bfd_put_32 (htab->glink->owner, STD_R2_0R1 + 24, p);
-         p += 4;
-         bfd_put_32 (htab->glink->owner, LD_R2_0R11 | (-16 & 0xfffc), p);
-         p += 4;
          bfd_put_32 (htab->glink->owner, MTLR_R0, p);
          p += 4;
+         if (htab->has_plt_localentry0)
+           insn = LD_R0_0R11 | (-20 & 0xfffc);
+         else
+           insn = LD_R0_0R11 | (-16 & 0xfffc);
+         bfd_put_32 (htab->glink->owner, insn, p);
+         p += 4;
          bfd_put_32 (htab->glink->owner, SUB_R12_R12_R11, p);
          p += 4;
-         bfd_put_32 (htab->glink->owner, ADD_R11_R2_R11, p);
+         bfd_put_32 (htab->glink->owner, ADD_R11_R0_R11, p);
          p += 4;
-         bfd_put_32 (htab->glink->owner, ADDI_R0_R12 | (-48 & 0xffff), p);
+         bfd_put_32 (htab->glink->owner, ADDI_R0_R12 | (-44 & 0xffff), p);
          p += 4;
          bfd_put_32 (htab->glink->owner, LD_R12_0R11, p);
          p += 4;
@@ -15880,22 +15991,25 @@ ppc64_elf_relocate_section (bfd *output_bfd,
              addend = 0;
              reloc_dest = DEST_STUB;
 
-             if (((stub_entry->stub_type == ppc_stub_plt_call
-                   && ALWAYS_EMIT_R2SAVE)
-                  || stub_entry->stub_type == ppc_stub_plt_call_r2save
-                  || stub_entry->stub_type == ppc_stub_plt_call_both)
-                 && !(h != NULL
-                      && is_tls_get_addr (&h->elf, htab)
-                      && htab->params->tls_get_addr_opt)
-                 && rel + 1 < relend
-                 && rel[1].r_offset == rel->r_offset + 4
-                 && ELF64_R_TYPE (rel[1].r_info) == R_PPC64_TOCSAVE)
-               relocation += 4;
-             else if ((stub_entry->stub_type == ppc_stub_long_branch_both
-                       || stub_entry->stub_type == ppc_stub_plt_branch_both
-                       || stub_entry->stub_type == ppc_stub_plt_call_both)
-                      && r_type == R_PPC64_REL24_NOTOC)
-               relocation += 4;
+             if ((((stub_entry->stub_type == ppc_stub_plt_call
+                    && ALWAYS_EMIT_R2SAVE)
+                   || stub_entry->stub_type == ppc_stub_plt_call_r2save
+                   || stub_entry->stub_type == ppc_stub_plt_call_both)
+                  && rel + 1 < relend
+                  && rel[1].r_offset == rel->r_offset + 4
+                  && ELF64_R_TYPE (rel[1].r_info) == R_PPC64_TOCSAVE)
+                 || ((stub_entry->stub_type == ppc_stub_long_branch_both
+                      || stub_entry->stub_type == ppc_stub_plt_branch_both
+                      || stub_entry->stub_type == ppc_stub_plt_call_both)
+                     && r_type == R_PPC64_REL24_NOTOC))
+               {
+                 /* Skip over the r2 store at the start of the stub.  */
+                 if (!(stub_entry->stub_type >= ppc_stub_plt_call
+                       && htab->params->tls_get_addr_opt
+                       && h != NULL
+                       && is_tls_get_addr (&h->elf, htab)))
+                   relocation += 4;
+               }
 
              if (r_type == R_PPC64_REL24_NOTOC
                  && (stub_entry->stub_type == ppc_stub_plt_call_notoc
@@ -15944,7 +16058,8 @@ ppc64_elf_relocate_section (bfd *output_bfd,
          break;
 
        case R_PPC64_GOT16_DS:
-         if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC)
+         if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC
+             || !htab->do_toc_opt)
            break;
          from = TOCstart + htab->sec_info[input_section->id].toc_off;
          if (relocation + addend - from + 0x8000 < 0x10000
@@ -15963,7 +16078,8 @@ ppc64_elf_relocate_section (bfd *output_bfd,
 
        case R_PPC64_GOT16_LO_DS:
        case R_PPC64_GOT16_HA:
-         if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC)
+         if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC
+             || !htab->do_toc_opt)
            break;
          from = TOCstart + htab->sec_info[input_section->id].toc_off;
          if (relocation + addend - from + 0x80008000ULL < 0x100000000ULL
@@ -15986,34 +16102,38 @@ ppc64_elf_relocate_section (bfd *output_bfd,
          break;
 
        case R_PPC64_GOT_PCREL34:
-         if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC)
+         if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC
+             || !htab->do_toc_opt)
            break;
          from = (rel->r_offset
                  + input_section->output_section->vma
                  + input_section->output_offset);
-         if (relocation - from + (1ULL << 33) < 1ULL << 34
-             && SYMBOL_REFERENCES_LOCAL (info, &h->elf))
-           {
-             offset = rel->r_offset;
-             pinsn = bfd_get_32 (input_bfd, contents + offset);
-             pinsn <<= 32;
-             pinsn |= bfd_get_32 (input_bfd, contents + offset + 4);
-             if ((pinsn & ((-1ULL << 50) | (63ULL << 26)))
-                  == ((1ULL << 58) | (1ULL << 52) | (57ULL << 26) /* pld */))
-               {
-                 /* Replace with paddi.  */
-                 pinsn += (2ULL << 56) + (14ULL << 26) - (57ULL << 26);
-                 r_type = R_PPC64_PCREL34;
-                 rel->r_info = ELF64_R_INFO (r_symndx, r_type);
-                 bfd_put_32 (input_bfd, pinsn >> 32, contents + offset);
-                 bfd_put_32 (input_bfd, pinsn, contents + offset + 4);
-                 goto pcrelopt;
-               }
-           }
-         break;
+         if (!(relocation - from + (1ULL << 33) < 1ULL << 34
+               && SYMBOL_REFERENCES_LOCAL (info, &h->elf)))
+           break;
+
+         offset = rel->r_offset;
+         pinsn = bfd_get_32 (input_bfd, contents + offset);
+         pinsn <<= 32;
+         pinsn |= bfd_get_32 (input_bfd, contents + offset + 4);
+         if ((pinsn & ((-1ULL << 50) | (63ULL << 26)))
+             != ((1ULL << 58) | (1ULL << 52) | (57ULL << 26) /* pld */))
+           break;
+
+         /* Replace with paddi.  */
+         pinsn += (2ULL << 56) + (14ULL << 26) - (57ULL << 26);
+         r_type = R_PPC64_PCREL34;
+         rel->r_info = ELF64_R_INFO (r_symndx, r_type);
+         bfd_put_32 (input_bfd, pinsn >> 32, contents + offset);
+         bfd_put_32 (input_bfd, pinsn, contents + offset + 4);
+         /* Fall through.  */
 
        case R_PPC64_PCREL34:
-         if (SYMBOL_REFERENCES_LOCAL (info, &h->elf))
+         if (!htab->params->no_pcrel_opt
+             && rel + 1 < relend
+             && rel[1].r_offset == rel->r_offset
+             && rel[1].r_info == ELF64_R_INFO (0, R_PPC64_PCREL_OPT)
+             && SYMBOL_REFERENCES_LOCAL (info, &h->elf))
            {
              offset = rel->r_offset;
              pinsn = bfd_get_32 (input_bfd, contents + offset);
@@ -16023,43 +16143,37 @@ ppc64_elf_relocate_section (bfd *output_bfd,
                   == ((1ULL << 58) | (2ULL << 56) | (1ULL << 52)
                       | (14ULL << 26) /* paddi */))
                {
-               pcrelopt:
-                 if (rel + 1 < relend
-                     && rel[1].r_offset == offset
-                     && rel[1].r_info == ELF64_R_INFO (0, R_PPC64_PCREL_OPT))
+                 bfd_vma off2 = rel[1].r_addend;
+                 if (off2 == 0)
+                   /* zero means next insn.  */
+                   off2 = 8;
+                 off2 += offset;
+                 if (off2 + 4 <= input_section->size)
                    {
-                     bfd_vma off2 = rel[1].r_addend;
-                     if (off2 == 0)
-                       /* zero means next insn.  */
-                       off2 = 8;
-                     off2 += offset;
-                     if (off2 + 4 <= input_section->size)
+                     uint64_t pinsn2;
+                     bfd_signed_vma addend_off;
+                     pinsn2 = bfd_get_32 (input_bfd, contents + off2);
+                     pinsn2 <<= 32;
+                     if ((pinsn2 & (63ULL << 58)) == 1ULL << 58)
                        {
-                         uint64_t pinsn2;
-                         bfd_signed_vma addend_off;
-                         pinsn2 = bfd_get_32 (input_bfd, contents + off2);
-                         pinsn2 <<= 32;
+                         if (off2 + 8 > input_section->size)
+                           break;
+                         pinsn2 |= bfd_get_32 (input_bfd,
+                                               contents + off2 + 4);
+                       }
+                     if (xlate_pcrel_opt (&pinsn, &pinsn2, &addend_off))
+                       {
+                         addend += addend_off;
+                         rel->r_addend = addend;
+                         bfd_put_32 (input_bfd, pinsn >> 32,
+                                     contents + offset);
+                         bfd_put_32 (input_bfd, pinsn,
+                                     contents + offset + 4);
+                         bfd_put_32 (input_bfd, pinsn2 >> 32,
+                                     contents + off2);
                          if ((pinsn2 & (63ULL << 58)) == 1ULL << 58)
-                           {
-                             if (off2 + 8 > input_section->size)
-                               break;
-                             pinsn2 |= bfd_get_32 (input_bfd,
-                                                   contents + off2 + 4);
-                           }
-                         if (xlate_pcrel_opt (&pinsn, &pinsn2, &addend_off))
-                           {
-                             addend += addend_off;
-                             rel->r_addend = addend;
-                             bfd_put_32 (input_bfd, pinsn >> 32,
-                                         contents + offset);
-                             bfd_put_32 (input_bfd, pinsn,
-                                         contents + offset + 4);
-                             bfd_put_32 (input_bfd, pinsn2 >> 32,
-                                         contents + off2);
-                             if ((pinsn2 & (63ULL << 58)) == 1ULL << 58)
-                               bfd_put_32 (input_bfd, pinsn2,
-                                           contents + off2 + 4);
-                           }
+                           bfd_put_32 (input_bfd, pinsn2,
+                                       contents + off2 + 4);
                        }
                    }
                }
index 547971f8becad2a23c64aeccf12f21dfca8a5fdd..0492fd7fad5d568a2c7b566fa7df77d45d1f547d 100644 (file)
@@ -27,6 +27,7 @@ struct ppc64_elf_params
   /* Linker call-backs.  */
   asection * (*add_stub_section) (const char *, asection *);
   void (*layout_sections_again) (void);
+  void (*edit) (void);
 
   /* Maximum size of a group of input sections that can be handled by
      one stub section.  A value of +/-1 indicates the bfd back-end
@@ -57,6 +58,9 @@ struct ppc64_elf_params
   /* Whether to use power10 instructions in linkage stubs.  */
   int power10_stubs;
 
+  /* Whether R_PPC64_PCREL_OPT should be ignored.  */
+  int no_pcrel_opt;
+
   /* Whether to canonicalize .opd so that there are no overlapping
      .opd entries.  */
   int non_overlapping_opd;
@@ -77,7 +81,7 @@ bfd_boolean ppc64_elf_edit_opd
   (struct bfd_link_info *);
 bfd_boolean ppc64_elf_inline_plt
   (struct bfd_link_info *);
-asection *ppc64_elf_tls_setup
+bfd_boolean ppc64_elf_tls_setup
   (struct bfd_link_info *);
 bfd_boolean ppc64_elf_tls_optimize
   (struct bfd_link_info *);
index 311fb28a905df619c2538ffa6308bdeeae67eca7..7eb1afe61444a0c9b20bc2220e43bfbe8dfcae06 100644 (file)
@@ -1731,7 +1731,7 @@ elf_x86_64_convert_load_reloc (bfd *abfd,
 
       if (opcode == 0x8b)
        {
-         if (abs_symbol && local_ref)
+         if (abs_symbol && local_ref && relocx)
            to_reloc_pc32 = FALSE;
 
          if (to_reloc_pc32)
index 998b72f2281c5b9b5482795b9b55dfffe284ee23..222a4573b00f11419dc5f52fa29ff871220f3c7d 100644 (file)
@@ -9636,9 +9636,29 @@ elf_link_output_symstrtab (struct elf_final_link_info *flinfo,
     {
       /* Call _bfd_elf_strtab_offset after _bfd_elf_strtab_finalize
         to get the final offset for st_name.  */
+      char *versioned_name = (char *) name;
+      if (h != NULL && h->versioned == versioned && h->def_dynamic)
+       {
+         /* Keep only one '@' for versioned symbols defined in shared
+            objects.  */
+         char *version = strrchr (name, ELF_VER_CHR);
+         char *base_end = strchr (name, ELF_VER_CHR);
+         if (version != base_end)
+           {
+             size_t base_len;
+             size_t len = strlen (name);
+             versioned_name = bfd_alloc (flinfo->output_bfd, len);
+             if (versioned_name == NULL)
+               return 0;
+             base_len = base_end - name;
+             memcpy (versioned_name, name, base_len);
+             memcpy (versioned_name + base_len, version,
+                     len - base_len);
+           }
+       }
       elfsym->st_name
        = (unsigned long) _bfd_elf_strtab_add (flinfo->symstrtab,
-                                              name, FALSE);
+                                              versioned_name, FALSE);
       if (elfsym->st_name == (unsigned long) -1)
        return 0;
     }
index e58ddc19cf6201bf426c6ee2ca960a50049de2b6..143aae4b5cc273f783d4669a472c1a1775875cc8 100644 (file)
@@ -2417,15 +2417,19 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
        abort ();
       if (aprop != NULL && bprop != NULL)
        {
-         features = 0;
-         if (htab->params->ibt)
-           features = GNU_PROPERTY_X86_FEATURE_1_IBT;
-         if (htab->params->shstk)
-           features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK;
          number = aprop->u.number;
-         /* Add GNU_PROPERTY_X86_FEATURE_1_IBT and
-            GNU_PROPERTY_X86_FEATURE_1_SHSTK.  */
-         aprop->u.number = (number & bprop->u.number) | features;
+         aprop->u.number = number & bprop->u.number;
+         if (pr_type == GNU_PROPERTY_X86_FEATURE_1_AND)
+           {
+             features = 0;
+             if (htab->params->ibt)
+               features = GNU_PROPERTY_X86_FEATURE_1_IBT;
+             if (htab->params->shstk)
+               features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK;
+             /* Add GNU_PROPERTY_X86_FEATURE_1_IBT and
+                GNU_PROPERTY_X86_FEATURE_1_SHSTK.  */
+             aprop->u.number |= features;
+           }
          updated = number != (unsigned int) aprop->u.number;
          /* Remove the property if all feature bits are cleared.  */
          if (aprop->u.number == 0)
@@ -2437,10 +2441,13 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
             have them.  Set IBT and SHSTK properties for -z ibt and -z
             shstk if needed.  */
          features = 0;
-         if (htab->params->ibt)
-           features = GNU_PROPERTY_X86_FEATURE_1_IBT;
-         if (htab->params->shstk)
-           features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK;
+         if (pr_type == GNU_PROPERTY_X86_FEATURE_1_AND)
+           {
+             if (htab->params->ibt)
+               features = GNU_PROPERTY_X86_FEATURE_1_IBT;
+             if (htab->params->shstk)
+               features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK;
+           }
          if (features)
            {
              if (aprop != NULL)
index 617fdb7a5de782d07bdc6c70497e06bd3482892b..7f24847f774614e602af5dfb7a2a7bb0bf50fdc4 100644 (file)
@@ -16,7 +16,7 @@
 
    In releases, the date is not included in either version strings or
    sonames.  */
-#define BFD_VERSION_DATE 20200919
+#define BFD_VERSION_DATE 20210106
 #define BFD_VERSION @bfd_version@
 #define BFD_VERSION_STRING  @bfd_version_package@ @bfd_version_string@
 #define REPORT_BUGS_TO @report_bugs_to@
index 76ba6d9840a2dde5ef028d0c8779f9b16f36ae0d..4b6cd9f755e8a4de3ad49af8c1045aca2686fc55 100644 (file)
@@ -1,3 +1,142 @@
+2021-01-01  Alan Modra  <amodra@gmail.com>
+
+       Apply from master
+       2020-12-31  Alan Modra  <amodra@gmail.com>
+       PR 27128
+       * nm.c (print_symname): Append version string to symbol name
+       before printing the lot under control of "form".  Append version
+       to demangled names too.
+
+       2020-08-22  H.J. Lu  <hongjiu.lu@intel.com>
+       PR ld/26382
+       * nm.c (print_symname): Display only one '@' for undefined
+       versioned symbols.
+       * doc/binutils.texi: Update nm version information.
+
+       2020-08-10  H.J. Lu  <hongjiu.lu@intel.com>
+       PR binutils/26302
+       * nm.c (with_symbol_versions): Removed.
+       (long_option_values): Add OPTION_WITH_SYMBOL_VERSIONS.
+       (long_options): Update --with-symbol-versions entry.
+       (print_symbol): Remove the with_symbol_versions check.
+       (main): Add OPTION_WITH_SYMBOL_VERSIONS for backward
+       compatibility.
+       * doc/binutils.texi: Remove --with-symbol-versions.
+
+2020-11-22  Alan Modra  <amodra@gmail.com>
+
+       PR 26929
+       Apply from mainline
+       2020-07-06  Alan Modra  <amodra@gmail.com>
+       * readelf.c (print_dynamic_symbol): Don't sprintf to buffer to
+       find string length.
+
+2020-11-16  Mark Wielaard  <mark@klomp.org>
+
+       Backport from the mainline:
+       2020-10-29  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR binutils/26808
+       * dwarf.c (abbrev_list): Add abbrev_base.
+       (new_abbrev_list): Add an abbrev_base argument and record it.
+       (find_abbrev_list_by_abbrev_offset): Add an abbrev_base argument
+       and match it.
+       (process_debug_info): Pass abbrev_base to new_abbrev_list and
+       find_abbrev_list_by_abbrev_offset.
+       (display_debug_abbrev): Pass 0 abbrev_base to new_abbrev_list
+       and find_abbrev_list_by_abbrev_offset.
+       * testsuite/binutils-all/x86-64/pr26808.dump: New file.
+       * testsuite/binutils-all/x86-64/pr26808.dwp.bz2: Likewise.
+       * testsuite/binutils-all/x86-64/x86-64.exp: Run PR binutils/26808
+       test.
+
+2020-11-15  Mark Wielaard  <mark@klomp.org>
+
+       Backport from the mainline:
+       2020-11-10  Nick Clifton  <nickc@redhat.com>
+
+       * dwarf.c (skip_attr_bytes): Correctly handle DW_FORM_ref8.
+       (get_type_abbrev_from_form): Accept DW_FORM_ref8.
+
+2020-11-15  Mark Wielaard  <mark@klomp.org>
+
+       Backport from the mainline:
+       2020-10-27  Nick Clifton  <nickc@redhat.com>
+
+       * dwarf.c (struct abbrev_list): New structure.  Used to collect
+       lists of abbreviation sets.
+       (struct abbrev_map): New structure.  Used to map CU offsets to
+       abbreviation offsets.
+       (record_abbrev_list): New function.  A new entry to an
+       abbreviation list.
+       (free_all_abbrevs): Update to free abbreviation lists.
+       (new_abbrev_list): New function.  Start a new abbreviation
+       list.
+       (find_abbrev_list_by_abbrev_offset): New function.
+       (find_abbrev_map_by_offset): New function.
+       (add_abbrev): Add abbrev_list parameter.
+       (add_abbrev_attr): Likewise.
+       (process_abbrev_section): Rename to process_abbrev_set and add
+       list parameter.
+       (get_type_abbrev_from_form): New function.  Attempts to decode the
+       forms used by DW_AT_type attributes.
+       (get_type_signedness): Display type names if operating in wide
+       mode.  Use get_type_abbrev_from_form.
+       (read_and_display_attr_value): Use get_type_abbrev_from_form.
+       (process_debug_info): Pre-parse the CU headers to collate all the
+       abbrevs before starting the main scan.
+       (process_debug_abbrev): Do not free any loaded abbrevs.
+       (free_debug_memory): Free the abbrev maps.
+
+2020-11-15  Mark Wielaard  <mark@klomp.org>
+
+       Backport from the mainline:
+       2020-10-21  Nick Clifton  <nickc@redhat.com>
+
+       * dwarf.c (skip_attr_bytes): Accept DWARF versions higher than 4
+       when processing the DW_FORM_ref_addr form.
+       Skip bytes in DW_FORM_block and DW_FORM_exprloc forms.
+       Handle DW_FORM_indirect.
+       (get_type_signedness): Allow a limited amount of recursion.
+       Do not attempt to decode types that use the DW_FORM_ref_addr form.
+       (read_and_display_attr_value):  Do not attempt to decode types
+       that use the DW_FORM_ref_addr form.
+
+2020-11-15  Mark Wielaard  <mark@klomp.org>
+
+       Backport from the mainline:
+       2020-11-11  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+       * dwarf.c (display_debug_rnglists_list): Only bias the
+       DW_RLS_offset_pair with the base address.
+
+2020-11-15  Mark Wielaard  <mark@klomp.org>
+
+       Backport from the mainline:
+       2020-09-29  Mark Wielaard  <mark@klomp.org>
+
+       * dwarf.c (display_loclists_list): Handle DW_LLE_start_end and
+       DW_LLE_start_length. Only add base_address for DW_LLE_offset_pair.
+
+2020-11-15  Mark Wielaard  <mark@klomp.org>
+
+       Backport from the mainline:
+       2020-09-23  Mark Wielaard  <mark@klomp.org>
+
+       * dwarf.c (process_debug_info): Print Unit Type for DWARF5.
+       * testsuite/binutils-all/dw5.W: Adjust expected output.
+       * testsuite/binutils-all/dwarf-attributes.W: Likewise.
+
+2020-11-15  Mark Wielaard  <mark@klomp.org>
+
+       Backport from the mainline:
+       2020-09-23  Mark Wielaard  <mark@klomp.org>
+
+       * dwarf.c (read_and_display_attr_value): Handle DW_FORM_ref_addr
+       for dwarf_version 5 just as version 3 and 4 (only 2 is
+       different).
+       (process_debug_info): Allow DW_UT_partial.
+
 2020-09-19  Nick Clifton  <nickc@redhat.com>
 
        This is the 2.35.1 point release.
index f19862655bdfc08565a1d9297525c66966fcff59..cf8d0ea7f1c7a5674f41231d06d102c2a11c1765 100644 (file)
@@ -796,7 +796,7 @@ nm [@option{-A}|@option{-o}|@option{--print-file-name}] [@option{-a}|@option{--d
    [@option{--plugin} @var{name}]
    [@option{--no-recurse-limit}|@option{--recurse-limit}]]
    [@option{--size-sort}] [@option{--special-syms}]
-   [@option{--synthetic}] [@option{--with-symbol-versions}] [@option{--target=}@var{bfdname}]
+   [@option{--synthetic}] [@option{--target=}@var{bfdname}]
    [@var{objfile}@dots{}]
 @c man end
 @end smallexample
@@ -924,7 +924,13 @@ The symbol type is unknown, or object file format specific.
 @end table
 
 @item
-The symbol name.
+The symbol name.  If a symbol has version information associated with it,
+then the version information is displayed as well.  If the versioned
+symbol is undefined or hidden from linker, the version string is displayed
+as a suffix to the symbol name, preceded by an @@ character.  For example
+@samp{foo@@VER_1}.  If the version is the default version to be used when
+resolving unversioned references to the symbol, then it is displayed as a
+suffix preceded by two @@ characters.  For example @samp{foo@@@@VER_2}.
 @end itemize
 
 @c man end
@@ -1130,14 +1136,6 @@ Include synthetic symbols in the output.  These are special symbols
 created by the linker for various purposes.  They are not shown by
 default since they are not part of the binary's original source code.
 
-@item --with-symbol-versions
-Enables the display of symbol version information if any exists.  The
-version string is displayed as a suffix to the symbol name, preceeded by
-an @@ character.  For example @samp{foo@@VER_1}.  If the version is
-the default version to be used when resolving unversioned references
-to the symbol then it is displayed as a suffix preceeded by two @@
-characters.  For example @samp{foo@@@@VER_2}.
-
 @item --target=@var{bfdname}
 @cindex object code format
 Specify an object code format other than your system's default format.
index cc13fe067f0fbc16125d59b5a15ef15df31e623c..91b61e3fdfe3a972240fe0b9eb4b236113040a33 100644 (file)
@@ -849,101 +849,208 @@ fetch_indexed_value (dwarf_vma offset, dwarf_vma bytes)
 /* FIXME:  There are better and more efficient ways to handle
    these structures.  For now though, I just want something that
    is simple to implement.  */
+/* Records a single attribute in an abbrev.  */
 typedef struct abbrev_attr
 {
-  unsigned long attribute;
-  unsigned long form;
-  bfd_signed_vma implicit_const;
-  struct abbrev_attr *next;
+  unsigned long          attribute;
+  unsigned long          form;
+  bfd_signed_vma         implicit_const;
+  struct abbrev_attr *   next;
 }
 abbrev_attr;
 
+/* Records a single abbrev.  */
 typedef struct abbrev_entry
 {
-  unsigned long entry;
-  unsigned long tag;
-  int children;
-  struct abbrev_attr *first_attr;
-  struct abbrev_attr *last_attr;
-  struct abbrev_entry *next;
+  unsigned long          number;
+  unsigned long          tag;
+  int                    children;
+  struct abbrev_attr *   first_attr;
+  struct abbrev_attr *   last_attr;
+  struct abbrev_entry *  next;
 }
 abbrev_entry;
 
-static abbrev_entry *first_abbrev = NULL;
-static abbrev_entry *last_abbrev = NULL;
+/* Records a set of abbreviations.  */
+typedef struct abbrev_list
+{
+  abbrev_entry *        first_abbrev;
+  abbrev_entry *        last_abbrev;
+  dwarf_vma             abbrev_base;
+  dwarf_vma             abbrev_offset;
+  struct abbrev_list *  next;
+  unsigned char *       start_of_next_abbrevs;
+}
+abbrev_list;
+
+/* Records all the abbrevs found so far.  */
+static struct abbrev_list * abbrev_lists = NULL;
+
+typedef struct abbrev_map
+{
+  dwarf_vma      start;
+  dwarf_vma      end;
+  abbrev_list *  list;
+} abbrev_map;
+
+/* Maps between CU offsets and abbrev sets.  */
+static abbrev_map *   cu_abbrev_map = NULL;
+static unsigned long  num_abbrev_map_entries = 0;
+static unsigned long  next_free_abbrev_map_entry = 0;
+
+#define INITIAL_NUM_ABBREV_MAP_ENTRIES 8
+#define ABBREV_MAP_ENTRIES_INCREMENT   8
+
+static void
+record_abbrev_list_for_cu (dwarf_vma start, dwarf_vma end, abbrev_list * list)
+{
+  if (cu_abbrev_map == NULL)
+    {
+      num_abbrev_map_entries = INITIAL_NUM_ABBREV_MAP_ENTRIES;
+      cu_abbrev_map = xmalloc (num_abbrev_map_entries * sizeof (* cu_abbrev_map));
+    }
+  else if (next_free_abbrev_map_entry == num_abbrev_map_entries)
+    {
+      num_abbrev_map_entries += ABBREV_MAP_ENTRIES_INCREMENT;
+      cu_abbrev_map = xrealloc (cu_abbrev_map, num_abbrev_map_entries * sizeof (* cu_abbrev_map));
+    }
+
+  cu_abbrev_map[next_free_abbrev_map_entry].start = start;
+  cu_abbrev_map[next_free_abbrev_map_entry].end = end;
+  cu_abbrev_map[next_free_abbrev_map_entry].list = list;
+  next_free_abbrev_map_entry ++;
+}
 
 static void
-free_abbrevs (void)
+free_all_abbrevs (void)
 {
-  abbrev_entry *abbrv;
+  abbrev_list *  list;
 
-  for (abbrv = first_abbrev; abbrv;)
+  for (list = abbrev_lists; list != NULL;)
     {
-      abbrev_entry *next_abbrev = abbrv->next;
-      abbrev_attr *attr;
+      abbrev_list *   next = list->next;
+      abbrev_entry *  abbrv;
 
-      for (attr = abbrv->first_attr; attr;)
+      for (abbrv = list->first_abbrev; abbrv != NULL;)
        {
-         abbrev_attr *next_attr = attr->next;
+         abbrev_entry *  next_abbrev = abbrv->next;
+         abbrev_attr *   attr;
+
+         for (attr = abbrv->first_attr; attr;)
+           {
+             abbrev_attr *next_attr = attr->next;
 
-         free (attr);
-         attr = next_attr;
+             free (attr);
+             attr = next_attr;
+           }
+
+         free (abbrv);
+         abbrv = next_abbrev;
        }
 
-      free (abbrv);
-      abbrv = next_abbrev;
+      free (list);
+      list = next;
     }
 
-  last_abbrev = first_abbrev = NULL;
+  abbrev_lists = NULL;
+}
+
+static abbrev_list *
+new_abbrev_list (dwarf_vma abbrev_base, dwarf_vma abbrev_offset)
+{
+  abbrev_list * list = (abbrev_list *) xcalloc (sizeof * list, 1);
+
+  list->abbrev_base = abbrev_base;
+  list->abbrev_offset = abbrev_offset;
+
+  list->next = abbrev_lists;
+  abbrev_lists = list;
+
+  return list;
+}
+
+static abbrev_list *
+find_abbrev_list_by_abbrev_offset (dwarf_vma abbrev_base,
+                                  dwarf_vma abbrev_offset)
+{
+  abbrev_list * list;
+
+  for (list = abbrev_lists; list != NULL; list = list->next)
+    if (list->abbrev_base == abbrev_base
+       && list->abbrev_offset == abbrev_offset)
+      return list;
+
+  return NULL;
+}
+
+/* Find the abbreviation map for the CU that includes OFFSET.
+   OFFSET is an absolute offset from the start of the .debug_info section.  */
+/* FIXME: This function is going to slow down readelf & objdump.
+   Consider using a better algorithm to mitigate this effect.  */
+
+static  abbrev_map *
+find_abbrev_map_by_offset (dwarf_vma offset)
+{
+  unsigned long i;
+
+  for (i = 0; i < next_free_abbrev_map_entry; i++)
+    if (cu_abbrev_map[i].start <= offset
+       && cu_abbrev_map[i].end > offset)
+      return cu_abbrev_map + i;
+
+  return NULL; 
 }
 
 static void
-add_abbrev (unsigned long number, unsigned long tag, int children)
+add_abbrev (unsigned long  number,
+           unsigned long  tag,
+           int            children,
+           abbrev_list *  list)
 {
-  abbrev_entry *entry;
+  abbrev_entry *  entry;
 
-  entry = (abbrev_entry *) malloc (sizeof (*entry));
-  if (entry == NULL)
-    /* ugg */
-    return;
+  entry = (abbrev_entry *) xmalloc (sizeof (*entry));
 
-  entry->entry      = number;
+  entry->number     = number;
   entry->tag        = tag;
   entry->children   = children;
   entry->first_attr = NULL;
   entry->last_attr  = NULL;
   entry->next       = NULL;
 
-  if (first_abbrev == NULL)
-    first_abbrev = entry;
+  assert (list != NULL);
+
+  if (list->first_abbrev == NULL)
+    list->first_abbrev = entry;
   else
-    last_abbrev->next = entry;
+    list->last_abbrev->next = entry;
 
-  last_abbrev = entry;
+  list->last_abbrev = entry;
 }
 
 static void
-add_abbrev_attr (unsigned long attribute, unsigned long form,
-                bfd_signed_vma implicit_const)
+add_abbrev_attr (unsigned long   attribute,
+                unsigned long   form,
+                bfd_signed_vma  implicit_const,
+                abbrev_list *   list)
 {
   abbrev_attr *attr;
 
-  attr = (abbrev_attr *) malloc (sizeof (*attr));
-  if (attr == NULL)
-    /* ugg */
-    return;
+  attr = (abbrev_attr *) xmalloc (sizeof (*attr));
 
   attr->attribute = attribute;
   attr->form      = form;
   attr->implicit_const = implicit_const;
   attr->next      = NULL;
 
-  if (last_abbrev->first_attr == NULL)
-    last_abbrev->first_attr = attr;
+  assert (list != NULL && list->last_abbrev != NULL);
+
+  if (list->last_abbrev->first_attr == NULL)
+    list->last_abbrev->first_attr = attr;
   else
-    last_abbrev->last_attr->next = attr;
+    list->last_abbrev->last_attr->next = attr;
 
-  last_abbrev->last_attr = attr;
+  list->last_abbrev->last_attr = attr;
 }
 
 /* Processes the (partial) contents of a .debug_abbrev section.
@@ -952,11 +1059,10 @@ add_abbrev_attr (unsigned long attribute, unsigned long form,
    an abbreviation set was found.  */
 
 static unsigned char *
-process_abbrev_section (unsigned char *start, unsigned char *end)
+process_abbrev_set (unsigned char *        start,
+                   const unsigned char *  end,
+                   abbrev_list *          list)
 {
-  if (first_abbrev != NULL)
-    return NULL;
-
   while (start < end)
     {
       unsigned long entry;
@@ -966,7 +1072,7 @@ process_abbrev_section (unsigned char *start, unsigned char *end)
 
       READ_ULEB (entry, start, end);
 
-      /* A single zero is supposed to end the section according
+      /* A single zero is supposed to end the set according
         to the standard.  If there's more, then signal that to
         the caller.  */
       if (start == end)
@@ -980,7 +1086,7 @@ process_abbrev_section (unsigned char *start, unsigned char *end)
 
       children = *start++;
 
-      add_abbrev (entry, tag, children);
+      add_abbrev (entry, tag, children, list);
 
       do
        {
@@ -1003,7 +1109,7 @@ process_abbrev_section (unsigned char *start, unsigned char *end)
                break;
            }
 
-         add_abbrev_attr (attribute, form, implicit_const);
+         add_abbrev_attr (attribute, form, implicit_const, list);
        }
       while (attribute != 0);
     }
@@ -1868,7 +1974,7 @@ skip_attr_bytes (unsigned long          form,
     case DW_FORM_ref_addr:
       if (dwarf_version == 2)
        SAFE_BYTE_GET_AND_INC (uvalue, data, pointer_size, end);
-      else if (dwarf_version == 3 || dwarf_version == 4)
+      else if (dwarf_version > 2)
        SAFE_BYTE_GET_AND_INC (uvalue, data, offset_size, end);
       else
        return NULL;
@@ -1919,7 +2025,23 @@ skip_attr_bytes (unsigned long          form,
       break;
 
     case DW_FORM_ref8:
+      {
+       dwarf_vma high_bits;
+
+       SAFE_BYTE_GET64 (data, &high_bits, &uvalue, end);
+       data += 8;
+       if (sizeof (uvalue) > 4)
+         uvalue += high_bits << 32;
+       else if (high_bits != 0)
+         {
+           /* FIXME: What to do ?  */
+           return NULL;
+         }
+       break;
+      }
+
     case DW_FORM_data8:
+    case DW_FORM_ref_sig8:
       data += 8;
       break;
 
@@ -1934,6 +2056,7 @@ skip_attr_bytes (unsigned long          form,
     case DW_FORM_block:
     case DW_FORM_exprloc:
       READ_ULEB (uvalue, data, end);
+      data += uvalue;
       break;
 
     case DW_FORM_block1:
@@ -1951,12 +2074,12 @@ skip_attr_bytes (unsigned long          form,
       data += 4 + uvalue;
       break;
 
-    case DW_FORM_ref_sig8:
-      data += 8;
-      break;
-
     case DW_FORM_indirect:
-      /* FIXME: Handle this form.  */
+      READ_ULEB (form, data, end);
+      if (form == DW_FORM_implicit_const)
+       SKIP_ULEB (data, end);
+      return skip_attr_bytes (form, data, end, pointer_size, offset_size, dwarf_version, value_return);
+
     default:
       return NULL;
     }
@@ -1967,40 +2090,137 @@ skip_attr_bytes (unsigned long          form,
   return data;
 }
 
-/* Return IS_SIGNED set to TRUE if the type at
-   DATA can be determined to be a signed type.  */
+/* Given form FORM with value UVALUE, locate and return the abbreviation
+   associated with it.  */
+
+static abbrev_entry *
+get_type_abbrev_from_form (unsigned long                 form,
+                          unsigned long                 uvalue,
+                          dwarf_vma                     cu_offset,
+                          const struct dwarf_section *  section,
+                          unsigned long *               abbrev_num_return,
+                          unsigned char **              data_return,
+                          unsigned long *               cu_offset_return)
+{
+  unsigned long   abbrev_number;
+  abbrev_map *    map;
+  abbrev_entry *  entry;
+  unsigned char * data;
+
+  if (abbrev_num_return != NULL)
+    * abbrev_num_return = 0;
+  if (data_return != NULL)
+    * data_return = NULL;
+
+  switch (form)
+    {
+    case DW_FORM_GNU_ref_alt:
+      /* FIXME: We are unable to handle this form at the moment.  */
+      return NULL;
+
+    case DW_FORM_ref_addr:
+      if (uvalue >= section->size)
+       {
+         warn (_("Unable to resolve ref_addr form: uvalue %lx > section size %lx (%s)\n"),
+               uvalue, (long) section->size, section->name);
+         return NULL;
+       }
+      break;
+
+    case DW_FORM_ref1:
+    case DW_FORM_ref2:
+    case DW_FORM_ref4:
+    case DW_FORM_ref8:
+    case DW_FORM_ref_udata:
+      if (uvalue + cu_offset > section->size)
+       {
+         warn (_("Unable to resolve ref form: uvalue %lx + cu_offset %lx > section size %lx\n"),
+               uvalue, (long) cu_offset, (long) section->size);
+         return NULL;
+       }
+      uvalue += cu_offset;
+      break;
+
+      /* FIXME: Are there other DW_FORMs that can be used by types ?  */
+
+    default:
+      warn (_("Unexpected form %lx encountered whilst finding abbreviation for type\n"), form);
+      return NULL;
+    }
+
+  data = (unsigned char *) section->start + uvalue;
+  map = find_abbrev_map_by_offset (uvalue);
+  
+  if (map == NULL)
+    {
+      warn (_("Unable to find abbreviations for CU offset %#lx\n"), uvalue);
+      return NULL;
+    }
+  if (map->list == NULL)
+    {
+      warn (_("Empty abbreviation list encountered for CU offset %lx\n"), uvalue);
+      return NULL;
+    }
+
+  if (cu_offset_return != NULL)
+    {
+      if (form == DW_FORM_ref_addr)
+       * cu_offset_return = map->start;
+      else
+       * cu_offset_return = cu_offset;
+    }
+       
+  READ_ULEB (abbrev_number, data, section->start + section->size);
+
+  for (entry = map->list->first_abbrev; entry != NULL; entry = entry->next)
+    if (entry->number == abbrev_number)
+      break;
+  
+  if (abbrev_num_return != NULL)
+    * abbrev_num_return = abbrev_number;
+
+  if (data_return != NULL)
+    * data_return = data;
+
+  if (entry == NULL)
+    warn (_("Unable to find entry for abbreviation %lu\n"), abbrev_number);
+
+  return entry;
+}
+
+/* Return IS_SIGNED set to TRUE if the type using abbreviation ENTRY
+   can be determined to be a signed type.  The data for ENTRY can be
+   found starting at DATA.  */
 
 static void
-get_type_signedness (unsigned char *        start,
+get_type_signedness (abbrev_entry *         entry,
+                    const struct dwarf_section * section,
                     unsigned char *        data,
                     unsigned const char *  end,
+                    dwarf_vma              cu_offset,
                     dwarf_vma              pointer_size,
                     dwarf_vma              offset_size,
                     int                    dwarf_version,
                     bfd_boolean *          is_signed,
-                    bfd_boolean            is_nested)
+                    unsigned int           nesting)
 {
-  unsigned long   abbrev_number;
-  abbrev_entry *  entry;
   abbrev_attr *   attr;
 
   * is_signed = FALSE;
 
-  READ_ULEB (abbrev_number, data, end);
-
-  for (entry = first_abbrev;
-       entry != NULL && entry->entry != abbrev_number;
-       entry = entry->next)
-    continue;
-
-  if (entry == NULL)
-    /* FIXME: Issue a warning ?  */
-    return;
+#define MAX_NESTING 20
+  if (nesting > MAX_NESTING)
+    {
+      /* FIXME: Warn - or is this expected ?
+        NB/ We need to avoid infinite recursion.  */
+      return;
+    }
 
   for (attr = entry->first_attr;
        attr != NULL && attr->attribute;
        attr = attr->next)
     {
+      unsigned char * orig_data = data;
       dwarf_vma uvalue = 0;
 
       data = skip_attr_bytes (attr->form, data, end, pointer_size,
@@ -2010,25 +2230,38 @@ get_type_signedness (unsigned char *        start,
 
       switch (attr->attribute)
        {
-#if 0 /* FIXME: It would be nice to print the name of the type,
-        but this would mean updating a lot of binutils tests.  */
+       case DW_AT_linkage_name:
        case DW_AT_name:
-         if (attr->form == DW_FORM_strp)
-           printf ("%s", fetch_indirect_string (uvalue));
+         if (do_wide)
+           {
+             if (attr->form == DW_FORM_strp)
+               printf (", %s", fetch_indirect_string (uvalue));
+             else if (attr->form == DW_FORM_string)
+               printf (", %s", orig_data);
+           }
          break;
-#endif
+
        case DW_AT_type:
          /* Recurse.  */
-         if (is_nested)
-           {
-             /* FIXME: Warn - or is this expected ?
-                NB/ We need to avoid infinite recursion.  */
-             return;
-           }
-         if (uvalue >= (size_t) (end - start))
-           return;
-         get_type_signedness (start, start + uvalue, end, pointer_size,
-                              offset_size, dwarf_version, is_signed, TRUE);
+         {
+           abbrev_entry *  type_abbrev;
+           unsigned char * type_data;
+           unsigned long   type_cu_offset;
+
+           type_abbrev = get_type_abbrev_from_form (attr->form,
+                                                    uvalue,
+                                                    cu_offset,
+                                                    section,
+                                                    NULL /* abbrev num return */,
+                                                    & type_data,
+                                                    & type_cu_offset);
+           if (type_abbrev == NULL)
+             break;
+
+           get_type_signedness (type_abbrev, section, type_data, end, type_cu_offset,
+                                pointer_size, offset_size, dwarf_version,
+                                is_signed, nesting + 1);
+         }
          break;
 
        case DW_AT_encoding:
@@ -2202,11 +2435,10 @@ read_and_display_attr_value (unsigned long           attribute,
     case DW_FORM_ref_addr:
       if (dwarf_version == 2)
        SAFE_BYTE_GET_AND_INC (uvalue, data, pointer_size, end);
-      else if (dwarf_version == 3 || dwarf_version == 4)
+      else if (dwarf_version > 2)
        SAFE_BYTE_GET_AND_INC (uvalue, data, offset_size, end);
       else
-       error (_("Internal error: DWARF version is not 2, 3 or 4.\n"));
-
+       error (_("Internal error: DW_FORM_ref_addr is not supported in DWARF version 1.\n"));
       break;
 
     case DW_FORM_addr:
@@ -2271,12 +2503,12 @@ read_and_display_attr_value (unsigned long           attribute,
     {
     case DW_FORM_ref_addr:
       if (!do_loc)
-       printf ("%c<0x%s>", delimiter, dwarf_vmatoa ("x",uvalue));
+       printf ("%c<0x%s>", delimiter, dwarf_vmatoa ("x", uvalue));
       break;
 
     case DW_FORM_GNU_ref_alt:
       if (!do_loc)
-       printf ("%c<alt 0x%s>", delimiter, dwarf_vmatoa ("x",uvalue));
+       printf ("%c<alt 0x%s>", delimiter, dwarf_vmatoa ("x", uvalue));
       /* FIXME: Follow the reference...  */
       break;
 
@@ -2662,9 +2894,18 @@ read_and_display_attr_value (unsigned long           attribute,
          && uvalue < (size_t) (end - start))
        {
          bfd_boolean is_signed = FALSE;
-
-         get_type_signedness (start, start + uvalue, end, pointer_size,
-                              offset_size, dwarf_version, & is_signed, FALSE);
+         abbrev_entry *  type_abbrev;
+         unsigned char * type_data;
+         unsigned long   type_cu_offset;
+         
+         type_abbrev = get_type_abbrev_from_form (form, uvalue, cu_offset,
+                                                  section, NULL, & type_data, & type_cu_offset);
+         if (type_abbrev != NULL)
+           {
+             get_type_signedness (type_abbrev, section, type_data, end, type_cu_offset,
+                                  pointer_size, offset_size, dwarf_version,
+                                  & is_signed, 0);
+           }
          level_type_signed[level] = is_signed;
        }
       break;
@@ -2986,40 +3227,22 @@ read_and_display_attr_value (unsigned long           attribute,
 
     case DW_AT_import:
       {
-       if (form == DW_FORM_ref_sig8
-           || form == DW_FORM_GNU_ref_alt)
-         break;
-
-       if (form == DW_FORM_ref1
-           || form == DW_FORM_ref2
-           || form == DW_FORM_ref4
-           || form == DW_FORM_ref_udata)
-         uvalue += cu_offset;
+       unsigned long abbrev_number;
+       abbrev_entry *entry;
 
-       if (uvalue >= section->size)
-         warn (_("Offset %s used as value for DW_AT_import attribute of DIE at offset 0x%lx is too big.\n"),
-               dwarf_vmatoa ("x", uvalue),
-               (unsigned long) (orig_data - section->start));
+       entry = get_type_abbrev_from_form (form, uvalue, cu_offset,
+                                          section, & abbrev_number, NULL, NULL);
+       if (entry == NULL)
+         {
+           if (form != DW_FORM_GNU_ref_alt)
+             warn (_("Offset %s used as value for DW_AT_import attribute of DIE at offset 0x%lx is too big.\n"),
+                   dwarf_vmatoa ("x", uvalue),
+                   (unsigned long) (orig_data - section->start));
+         }
        else
          {
-           unsigned long abbrev_number;
-           abbrev_entry *entry;
-           unsigned char *p = section->start + uvalue;
-
-           READ_ULEB (abbrev_number, p, end);
-
            printf (_("\t[Abbrev Number: %ld"), abbrev_number);
-           /* Don't look up abbrev for DW_FORM_ref_addr, as it very often will
-              use different abbrev table, and we don't track .debug_info chunks
-              yet.  */
-           if (form != DW_FORM_ref_addr)
-             {
-               for (entry = first_abbrev; entry != NULL; entry = entry->next)
-                 if (entry->entry == abbrev_number)
-                   break;
-               if (entry != NULL)
-                 printf (" (%s)", get_TAG_name (entry->tag));
-             }
+           printf (" (%s)", get_TAG_name (entry->tag));
            printf ("]");
          }
       }
@@ -3238,8 +3461,100 @@ process_debug_info (struct dwarf_section *           section,
 
   if (!do_loc && dwarf_start_die == 0)
     introduce (section, FALSE);
+
+  free_all_abbrevs ();
+  free (cu_abbrev_map);
+  cu_abbrev_map = NULL;
+  next_free_abbrev_map_entry = 0;
   
-  for (section_begin = start, unit = 0; start < end; unit++)
+  /* In order to be able to resolve DW_FORM_ref_attr forms we need
+     to load *all* of the abbrevs for all CUs in this .debug_info
+     section.  This does effectively mean that we (partially) read
+     every CU header twice.  */
+  for (section_begin = start; start < end;)
+    {
+      DWARF2_Internal_CompUnit  compunit;
+      unsigned char *           hdrptr;
+      dwarf_vma                 abbrev_base;
+      size_t                    abbrev_size;
+      dwarf_vma                 cu_offset;
+      unsigned int              offset_size;
+      unsigned int              initial_length_size;
+      struct cu_tu_set *        this_set;
+      abbrev_list *             list;
+
+      hdrptr = start;
+
+      SAFE_BYTE_GET_AND_INC (compunit.cu_length, hdrptr, 4, end);
+
+      if (compunit.cu_length == 0xffffffff)
+       {
+         SAFE_BYTE_GET_AND_INC (compunit.cu_length, hdrptr, 8, end);
+         offset_size = 8;
+         initial_length_size = 12;
+       }
+      else
+       {
+         offset_size = 4;
+         initial_length_size = 4;
+       }
+
+      SAFE_BYTE_GET_AND_INC (compunit.cu_version, hdrptr, 2, end);
+
+      cu_offset = start - section_begin;
+
+      this_set = find_cu_tu_set_v2 (cu_offset, do_types);
+
+      if (compunit.cu_version < 5)
+       {
+         compunit.cu_unit_type = DW_UT_compile;
+         /* Initialize it due to a false compiler warning.  */
+         compunit.cu_pointer_size = -1;
+       }
+      else
+       {
+         SAFE_BYTE_GET_AND_INC (compunit.cu_unit_type, hdrptr, 1, end);
+         do_types = (compunit.cu_unit_type == DW_UT_type);
+
+         SAFE_BYTE_GET_AND_INC (compunit.cu_pointer_size, hdrptr, 1, end);
+       }
+
+      SAFE_BYTE_GET_AND_INC (compunit.cu_abbrev_offset, hdrptr, offset_size, end);
+
+      if (this_set == NULL)
+       {
+         abbrev_base = 0;
+         abbrev_size = debug_displays [abbrev_sec].section.size;
+       }
+      else
+       {
+         abbrev_base = this_set->section_offsets [DW_SECT_ABBREV];
+         abbrev_size = this_set->section_sizes [DW_SECT_ABBREV];
+       }
+
+      list = find_abbrev_list_by_abbrev_offset (abbrev_base,
+                                               compunit.cu_abbrev_offset);
+      if (list == NULL)
+       {
+         unsigned char *  next;
+
+         list = new_abbrev_list (abbrev_base,
+                                 compunit.cu_abbrev_offset);
+         next = process_abbrev_set
+           (((unsigned char *) debug_displays [abbrev_sec].section.start
+             + abbrev_base + compunit.cu_abbrev_offset),
+            ((unsigned char *) debug_displays [abbrev_sec].section.start
+             + abbrev_base + abbrev_size),
+            list);
+         list->start_of_next_abbrevs = next;
+       }
+                      
+      start = section_begin + cu_offset + compunit.cu_length
+       + initial_length_size;
+      record_abbrev_list_for_cu (cu_offset, start - section_begin, list);
+    }
+
+  for (start = section_begin, unit = 0; start < end; unit++)
     {
       DWARF2_Internal_CompUnit compunit;
       unsigned char *hdrptr;
@@ -3255,6 +3570,7 @@ process_debug_info (struct dwarf_section *           section,
       struct cu_tu_set *this_set;
       dwarf_vma abbrev_base;
       size_t abbrev_size;
+      abbrev_list * list = NULL;
 
       hdrptr = start;
 
@@ -3361,6 +3677,10 @@ process_debug_info (struct dwarf_section *           section,
                  dwarf_vmatoa ("x", compunit.cu_length),
                  offset_size == 8 ? "64-bit" : "32-bit");
          printf (_("   Version:       %d\n"), compunit.cu_version);
+         if (compunit.cu_version >= 5)
+           printf (_("   Unit Type:     %s (%x)\n"),
+                   get_DW_UT_name (compunit.cu_unit_type) ?: "???",
+                   compunit.cu_unit_type);
          printf (_("   Abbrev Offset: 0x%s\n"),
                  dwarf_vmatoa ("x", compunit.cu_abbrev_offset));
          printf (_("   Pointer Size:  %d\n"), compunit.cu_pointer_size);
@@ -3419,6 +3739,7 @@ process_debug_info (struct dwarf_section *           section,
        }
 
       if (compunit.cu_unit_type != DW_UT_compile
+         && compunit.cu_unit_type != DW_UT_partial
          && compunit.cu_unit_type != DW_UT_type)
        {
          warn (_("CU at offset %s contains corrupt or "
@@ -3427,8 +3748,6 @@ process_debug_info (struct dwarf_section *           section,
          continue;
        }
 
-      free_abbrevs ();
-
       /* Process the abbrevs used by this compilation unit.  */
       if (compunit.cu_abbrev_offset >= abbrev_size)
        warn (_("Debug info is corrupted, abbrev offset (%lx) is larger than abbrev section size (%lx)\n"),
@@ -3441,11 +3760,24 @@ process_debug_info (struct dwarf_section *           section,
              (unsigned long) abbrev_base + abbrev_size,
              (unsigned long) debug_displays [abbrev_sec].section.size);
       else
-       process_abbrev_section
-         (((unsigned char *) debug_displays [abbrev_sec].section.start
-           + abbrev_base + compunit.cu_abbrev_offset),
-          ((unsigned char *) debug_displays [abbrev_sec].section.start
-           + abbrev_base + abbrev_size));
+       {
+         list = find_abbrev_list_by_abbrev_offset (abbrev_base,
+                                                   compunit.cu_abbrev_offset);
+         if (list == NULL)
+           {
+             unsigned char * next;
+
+             list = new_abbrev_list (abbrev_base,
+                                     compunit.cu_abbrev_offset);
+             next = process_abbrev_set
+               (((unsigned char *) debug_displays [abbrev_sec].section.start
+                 + abbrev_base + compunit.cu_abbrev_offset),
+                ((unsigned char *) debug_displays [abbrev_sec].section.start
+                 + abbrev_base + abbrev_size),
+                list);
+             list->start_of_next_abbrevs = next;
+           }
+       }
 
       level = 0;
       last_level = level;
@@ -3525,11 +3857,13 @@ process_debug_info (struct dwarf_section *           section,
 
          /* Scan through the abbreviation list until we reach the
             correct entry.  */
-         for (entry = first_abbrev;
-              entry && entry->entry != abbrev_number;
-              entry = entry->next)
+         if (list == NULL)
            continue;
 
+         for (entry = list->first_abbrev; entry != NULL; entry = entry->next)
+           if (entry->number == abbrev_number)
+             break;
+
          if (entry == NULL)
            {
              if (!do_loc && do_printing)
@@ -5714,30 +6048,37 @@ display_debug_abbrev (struct dwarf_section *section,
 {
   abbrev_entry *entry;
   unsigned char *start = section->start;
-  unsigned char *end = start + section->size;
+  const unsigned char *end = start + section->size;
 
   introduce (section, FALSE);
 
   do
     {
-      unsigned char *last;
-
-      free_abbrevs ();
+      abbrev_list *    list;
+      dwarf_vma        offset;
 
-      last = start;
-      start = process_abbrev_section (start, end);
+      offset = start - section->start;
+      list = find_abbrev_list_by_abbrev_offset (0, offset);
+      if (list == NULL)
+       {
+         list = new_abbrev_list (0, offset);
+         start = process_abbrev_set (start, end, list);
+         list->start_of_next_abbrevs = start;
+       }
+      else
+       start = list->start_of_next_abbrevs;
 
-      if (first_abbrev == NULL)
+      if (list->first_abbrev == NULL)
        continue;
 
-      printf (_("  Number TAG (0x%lx)\n"), (long) (last - section->start));
+      printf (_("  Number TAG (0x%lx)\n"), (long) offset);
 
-      for (entry = first_abbrev; entry; entry = entry->next)
+      for (entry = list->first_abbrev; entry; entry = entry->next)
        {
          abbrev_attr *attr;
 
          printf ("   %ld      %s    [%s]\n",
-                 entry->entry,
+                 entry->number,
                  get_TAG_name (entry->tag),
                  entry->children ? _("has children") : _("no children"));
 
@@ -6013,7 +6354,9 @@ display_loclists_list (struct dwarf_section *section,
 
       SAFE_BYTE_GET_AND_INC (llet, start, 1, section_end);
 
-      if (vstart && llet == DW_LLE_offset_pair)
+      if (vstart && (llet == DW_LLE_offset_pair
+                    || llet == DW_LLE_start_end
+                    || llet == DW_LLE_start_length))
        {
          off = offset + (vstart - *start_ptr);
 
@@ -6034,7 +6377,18 @@ display_loclists_list (struct dwarf_section *section,
          break;
        case DW_LLE_offset_pair:
          READ_ULEB (begin, start, section_end);
+         begin += base_address;
          READ_ULEB (end, start, section_end);
+         end += base_address;
+         break;
+       case DW_LLE_start_end:
+         SAFE_BYTE_GET_AND_INC (begin, start, pointer_size, section_end);
+         SAFE_BYTE_GET_AND_INC (end, start, pointer_size, section_end);
+         break;
+       case DW_LLE_start_length:
+         SAFE_BYTE_GET_AND_INC (begin, start, pointer_size, section_end);
+         READ_ULEB (end, start, section_end);
+         end += begin;
          break;
        case DW_LLE_base_address:
          SAFE_BYTE_GET_AND_INC (base_address, start, pointer_size,
@@ -6061,7 +6415,9 @@ display_loclists_list (struct dwarf_section *section,
        }
       if (llet == DW_LLE_end_of_list)
        break;
-      if (llet != DW_LLE_offset_pair)
+      if (llet != DW_LLE_offset_pair
+         && llet != DW_LLE_start_end
+         && llet != DW_LLE_start_length)
        continue;
 
       if (start + 2 > section_end)
@@ -6073,8 +6429,8 @@ display_loclists_list (struct dwarf_section *section,
 
       READ_ULEB (length, start, section_end);
 
-      print_dwarf_vma (begin + base_address, pointer_size);
-      print_dwarf_vma (end + base_address, pointer_size);
+      print_dwarf_vma (begin, pointer_size);
+      print_dwarf_vma (end, pointer_size);
 
       putchar ('(');
       need_frame_base = decode_location_expression (start,
@@ -7082,8 +7438,15 @@ display_debug_rnglists_list (unsigned char *start, unsigned char *finish,
       if (rlet == DW_RLE_base_address)
        continue;
 
-      print_dwarf_vma (begin + base_address, pointer_size);
-      print_dwarf_vma (end + base_address, pointer_size);
+      /* Only a DW_RLE_offset_pair needs the base address added.  */
+      if (rlet == DW_RLE_offset_pair)
+       {
+         begin += base_address;
+         end += base_address;
+       }
+
+      print_dwarf_vma (begin, pointer_size);
+      print_dwarf_vma (end, pointer_size);
 
       if (begin == end)
        fputs (_("(start == end)"), stdout);
@@ -10747,8 +11110,12 @@ free_debug_memory (void)
 {
   unsigned int i;
 
-  free_abbrevs ();
+  free_all_abbrevs ();
 
+  free (cu_abbrev_map);
+  cu_abbrev_map = NULL;
+  next_free_abbrev_map_entry = 0;
+  
   for (i = 0; i < max; i++)
     free_debug_section ((enum dwarf_section_display_enum) i);
 
index 1b5122d56ab5c00fc710a775053eb2ee300b0665..a5144faba60dd7fa7252afec795cbae32bcfa48d 100644 (file)
@@ -161,7 +161,6 @@ static int show_version = 0;        /* Show the version number.  */
 static int show_synthetic = 0; /* Display synthesized symbols too.  */
 static int line_numbers = 0;   /* Print line numbers for symbols.  */
 static int allow_special_symbols = 0;  /* Allow special symbols.  */
-static int with_symbol_versions = 0; /* Include symbol version information in the output.  */
 
 static int demangle_flags = DMGL_ANSI | DMGL_PARAMS;
 
@@ -192,7 +191,8 @@ enum long_option_values
   OPTION_PLUGIN,
   OPTION_SIZE_SORT,
   OPTION_RECURSE_LIMIT,
-  OPTION_NO_RECURSE_LIMIT
+  OPTION_NO_RECURSE_LIMIT,
+  OPTION_WITH_SYMBOL_VERSIONS
 };
 
 static struct option long_options[] =
@@ -226,7 +226,8 @@ static struct option long_options[] =
   {"defined-only", no_argument, &defined_only, 1},
   {"undefined-only", no_argument, &undefined_only, 1},
   {"version", no_argument, &show_version, 1},
-  {"with-symbol-versions", no_argument, &with_symbol_versions, 1},
+  {"with-symbol-versions", no_argument, NULL,
+   OPTION_WITH_SYMBOL_VERSIONS},
   {0, no_argument, 0, 0}
 };
 \f
@@ -396,21 +397,17 @@ static void
 print_symname (const char *form, struct extended_symbol_info *info,
               const char *name, bfd *abfd)
 {
+  char *alloc = NULL;
+
   if (name == NULL)
     name = info->sinfo->name;
   if (do_demangle && *name)
     {
-      char *res = bfd_demangle (abfd, name, demangle_flags);
-
-      if (res != NULL)
-       {
-         printf (form, res);
-         free (res);
-         return;
-       }
+      alloc = bfd_demangle (abfd, name, demangle_flags);
+      if (alloc != NULL)
+       name = alloc;
     }
 
-  printf (form, name);
   if (info != NULL && info->elfinfo)
     {
       const char *version_string;
@@ -420,8 +417,17 @@ print_symname (const char *form, struct extended_symbol_info *info,
        = bfd_get_symbol_version_string (abfd, &info->elfinfo->symbol,
                                         FALSE, &hidden);
       if (version_string && version_string[0])
-       printf ("%s%s", hidden ? "@" : "@@", version_string);
+       {
+         const char *at = "@@";
+         if (hidden || bfd_is_und_section (info->elfinfo->symbol.section))
+           at = "@";
+         alloc = reconcat (alloc, name, at, version_string, NULL);
+         if (alloc != NULL)
+           name = alloc;
+       }
     }
+  printf (form, name);
+  free (alloc);
 }
 
 static void
@@ -901,22 +907,6 @@ print_symbol (bfd *        abfd,
 
   format->print_symbol_info (&info, abfd);
 
-  if (with_symbol_versions)
-    {
-      const char *  version_string = NULL;
-      bfd_boolean   hidden = FALSE;
-
-      if ((sym->flags & (BSF_SECTION_SYM | BSF_SYNTHETIC)) == 0)
-       version_string = bfd_get_symbol_version_string (abfd, sym,
-                                                       TRUE, &hidden);
-
-      if (bfd_is_und_section (bfd_asymbol_section (sym)))
-       hidden = TRUE;
-
-      if (version_string && *version_string != '\0')
-       printf (hidden ? "@%s" : "@@%s", version_string);
-    }
-
   if (line_numbers)
     {
       static asymbol **syms;
@@ -1761,6 +1751,9 @@ main (int argc, char **argv)
        case OPTION_NO_RECURSE_LIMIT:
          demangle_flags |= DMGL_NO_RECURSE_LIMIT;
          break;
+       case OPTION_WITH_SYMBOL_VERSIONS:
+         /* Ignored for backward compatibility.  */
+         break;
        case 'D':
          dynamic = 1;
          break;
index 6057515a89bd211de9e06c43a1f1006fc1bf824c..41547a2594b5a0c5a2e840d29475ed3c0c30ecf2 100644 (file)
@@ -12091,9 +12091,9 @@ print_dynamic_symbol (Filedata *filedata, unsigned long si,
   int len_avail = 21;
   if (! do_wide && version_string != NULL)
     {
-      char buffer[256];
+      char buffer[16];
 
-      len_avail -= sprintf (buffer, "@%s", version_string);
+      len_avail -= 1 + strlen (version_string);
 
       if (sym_info == symbol_undefined)
        len_avail -= sprintf (buffer," (%d)", vna_other);
index 2eccb03c5a60a0f637ff1ce6b528bce65df450d6..cb949ad49cdfff9fc8ff42f534e6f91de1af9358 100644 (file)
@@ -3,6 +3,7 @@ Contents of the .debug_info section:
   Compilation Unit @ offset 0x0:
    Length:        0x160 \(32-bit\)
    Version:       5
+   Unit Type:     DW_UT_compile \(1\)
    Abbrev Offset: 0x0
    Pointer Size:  8
  <0><c>: Abbrev Number: 6 \(DW_TAG_compile_unit\)
index 3a4e7409889a91f9fc7a5b77b0581bc54dc75ee7..4e8386ae8807a7b10eb088903245a0e85243c8a6 100644 (file)
@@ -3,6 +3,7 @@ Contents of the .debug_info section:
   Compilation Unit @ offset 0x0:
    Length:        0x40 \(32-bit\)
    Version:       5
+   Unit Type:     DW_UT_compile \(1\)
    Abbrev Offset: 0x0
    Pointer Size:  4
  <0><c>: Abbrev Number: 1 \(User TAG value: 0x5555\)
diff --git a/binutils/testsuite/binutils-all/x86-64/pr26808.dump b/binutils/testsuite/binutils-all/x86-64/pr26808.dump
new file mode 100644 (file)
index 0000000..f64f9d0
--- /dev/null
@@ -0,0 +1,1440 @@
+Contents of the .debug_info.dwo section:
+
+  Compilation Unit @ offset 0x0:
+   Length:        0x178 (32-bit)
+   Version:       4
+   Abbrev Offset: 0x0
+   Pointer Size:  8
+   Section contributions:
+    .debug_abbrev.dwo:       0x0  0x154
+    .debug_line.dwo:         0x0  0x40
+    .debug_loc.dwo:          0x0  0x0
+    .debug_str_offsets.dwo:  0x0  0x14
+ <0><b>: Abbrev Number: 12 (DW_TAG_compile_unit)
+    <c>   DW_AT_producer    : GNU C++ 4.7.x-google 20120720 (prerelease)
+    <37>   DW_AT_language    : 4       (C++)
+    <38>   DW_AT_name        : dwp_test_main.cc
+    <49>   DW_AT_comp_dir    : /home/ccoutant/opensource/binutils-git/binutils/gold/testsuite
+    <88>   DW_AT_GNU_dwo_id  : 0xe5ba51d95c9aebc8
+ <1><90>: Abbrev Number: 7 (DW_TAG_base_type)
+    <91>   DW_AT_byte_size   : 4
+    <92>   DW_AT_encoding    : 5       (signed)
+    <93>   DW_AT_name        : int
+ <1><97>: Abbrev Number: 7 (DW_TAG_base_type)
+    <98>   DW_AT_byte_size   : 1
+    <99>   DW_AT_encoding    : 2       (boolean)
+    <9a>   DW_AT_name        : bool
+ <1><9f>: Abbrev Number: 13 (DW_TAG_subprogram)
+    <a0>   DW_AT_external    : 1
+    <a0>   DW_AT_name        : main
+    <a5>   DW_AT_decl_file   : 1
+    <a6>   DW_AT_decl_line   : 30
+    <a7>   DW_AT_type        : <0x90>
+    <ab>   DW_AT_low_pc      : (addr_index: 0x0): <no .debug_addr section>
+    <ac>   DW_AT_high_pc     : 0x304
+    <b4>   DW_AT_frame_base  : 1 byte block: 9c        (DW_OP_call_frame_cfa)
+    <b6>   DW_AT_GNU_all_tail_call_sites: 1
+    <b6>   DW_AT_sibling     : <0x11b>
+ <2><ba>: Abbrev Number: 14 (DW_TAG_lexical_block)
+    <bb>   DW_AT_low_pc      : (addr_index: 0x1): <no .debug_addr section>
+    <bc>   DW_AT_high_pc     : 0x2fa
+ <3><c4>: Abbrev Number: 15 (DW_TAG_variable)
+    <c5>   DW_AT_name        : c1
+    <c8>   DW_AT_decl_file   : 1
+    <c9>   DW_AT_decl_line   : 32
+    <ca>   DW_AT_type        : signature: 0xb5faa2a4b7a919c4
+    <d2>   DW_AT_location    : 2 byte block: 91 60     (DW_OP_fbreg: -32)
+ <3><d5>: Abbrev Number: 15 (DW_TAG_variable)
+    <d6>   DW_AT_name        : c2
+    <d9>   DW_AT_decl_file   : 1
+    <da>   DW_AT_decl_line   : 33
+    <db>   DW_AT_type        : signature: 0xab98c7bc886f5266
+    <e3>   DW_AT_location    : 2 byte block: 91 50     (DW_OP_fbreg: -48)
+ <3><e6>: Abbrev Number: 16 (DW_TAG_variable)
+    <e7>   DW_AT_name        : __PRETTY_FUNCTION__
+    <fb>   DW_AT_type        : <0x13f>
+    <ff>   DW_AT_artificial  : 1
+    <ff>   DW_AT_location    : 2 byte block: fb 2      (DW_OP_GNU_addr_index <0x2>)
+ <3><102>: Abbrev Number: 14 (DW_TAG_lexical_block)
+    <103>   DW_AT_low_pc      : (addr_index: 0x3): <no .debug_addr section>
+    <104>   DW_AT_high_pc     : 0x2f
+ <4><10c>: Abbrev Number: 17 (DW_TAG_variable)
+    <10d>   DW_AT_name        : i
+    <10f>   DW_AT_decl_file   : 1
+    <110>   DW_AT_decl_line   : 37
+    <111>   DW_AT_type        : <0x90>
+    <115>   DW_AT_location    : 2 byte block: 91 6c    (DW_OP_fbreg: -20)
+ <4><118>: Abbrev Number: 0
+ <3><119>: Abbrev Number: 0
+ <2><11a>: Abbrev Number: 0
+ <1><11b>: Abbrev Number: 18 (DW_TAG_array_type)
+    <11c>   DW_AT_type        : <0x137>
+    <120>   DW_AT_sibling     : <0x12b>
+ <2><124>: Abbrev Number: 19 (DW_TAG_subrange_type)
+    <125>   DW_AT_type        : <0x12b>
+    <129>   DW_AT_upper_bound : 10
+ <2><12a>: Abbrev Number: 0
+ <1><12b>: Abbrev Number: 7 (DW_TAG_base_type)
+    <12c>   DW_AT_byte_size   : 8
+    <12d>   DW_AT_encoding    : 7      (unsigned)
+    <12e>   DW_AT_name        : sizetype
+ <1><137>: Abbrev Number: 7 (DW_TAG_base_type)
+    <138>   DW_AT_byte_size   : 1
+    <139>   DW_AT_encoding    : 6      (signed char)
+    <13a>   DW_AT_name        : char
+ <1><13f>: Abbrev Number: 20 (DW_TAG_const_type)
+    <140>   DW_AT_type        : <0x11b>
+ <1><144>: Abbrev Number: 21 (DW_TAG_variable)
+    <145>   DW_AT_name        : c3
+    <148>   DW_AT_decl_file   : 2
+    <149>   DW_AT_decl_line   : 57
+    <14a>   DW_AT_type        : signature: 0xb534bdc1f01629bb
+    <152>   DW_AT_external    : 1
+    <152>   DW_AT_declaration : 1
+ <1><152>: Abbrev Number: 22 (DW_TAG_variable)
+    <153>   DW_AT_name        : v3
+    <156>   DW_AT_decl_file   : 2
+    <157>   DW_AT_decl_line   : 60
+    <158>   DW_AT_type        : <0x90>
+    <15c>   DW_AT_external    : 1
+    <15c>   DW_AT_declaration : 1
+ <1><15c>: Abbrev Number: 18 (DW_TAG_array_type)
+    <15d>   DW_AT_type        : <0x137>
+    <161>   DW_AT_sibling     : <0x167>
+ <2><165>: Abbrev Number: 23 (DW_TAG_subrange_type)
+ <2><166>: Abbrev Number: 0
+ <1><167>: Abbrev Number: 22 (DW_TAG_variable)
+    <168>   DW_AT_name        : v4
+    <16b>   DW_AT_decl_file   : 2
+    <16c>   DW_AT_decl_line   : 61
+    <16d>   DW_AT_type        : <0x15c>
+    <171>   DW_AT_external    : 1
+    <171>   DW_AT_declaration : 1
+ <1><171>: Abbrev Number: 22 (DW_TAG_variable)
+    <172>   DW_AT_name        : v5
+    <175>   DW_AT_decl_file   : 2
+    <176>   DW_AT_decl_line   : 62
+    <177>   DW_AT_type        : <0x15c>
+    <17b>   DW_AT_external    : 1
+    <17b>   DW_AT_declaration : 1
+ <1><17b>: Abbrev Number: 0
+  Compilation Unit @ offset 0x17c:
+   Length:        0x5af (32-bit)
+   Version:       4
+   Abbrev Offset: 0x0
+   Pointer Size:  8
+   Section contributions:
+    .debug_abbrev.dwo:       0x154  0x21d
+    .debug_line.dwo:         0x40  0x3d
+    .debug_loc.dwo:          0x0  0x0
+    .debug_str_offsets.dwo:  0x14  0x44
+ <0><187>: Abbrev Number: 12 (DW_TAG_compile_unit)
+    <188>   DW_AT_producer    : GNU C++ 4.7.x-google 20120720 (prerelease)
+    <1b3>   DW_AT_language    : 4      (C++)
+    <1b4>   DW_AT_name        : dwp_test_1.cc
+    <1c2>   DW_AT_comp_dir    : /home/ccoutant/opensource/binutils-git/binutils/gold/testsuite
+    <201>   DW_AT_GNU_dwo_id  : 0x52f9c6092fdc3727
+ <1><209>: Abbrev Number: 13 (DW_TAG_class_type)
+    <20a>   DW_AT_name        : C1
+    <20d>   DW_AT_signature   : signature: 0xb5faa2a4b7a919c4
+    <215>   DW_AT_declaration : 1
+    <215>   DW_AT_sibling     : <0x242>
+ <2><219>: Abbrev Number: 14 (DW_TAG_subprogram)
+    <21a>   DW_AT_external    : 1
+    <21a>   DW_AT_name        : (indexed string: 0x0): testcase1
+    <21b>   DW_AT_decl_file   : 1
+    <21c>   DW_AT_decl_line   : 28
+    <21d>   DW_AT_linkage_name: (indexed string: 0xc): _ZN2C19testcase1Ev
+    <21e>   DW_AT_type        : <0x249>
+    <222>   DW_AT_accessibility: 1     (public)
+    <223>   DW_AT_declaration : 1
+ <2><223>: Abbrev Number: 14 (DW_TAG_subprogram)
+    <224>   DW_AT_external    : 1
+    <224>   DW_AT_name        : (indexed string: 0x1): testcase2
+    <225>   DW_AT_decl_file   : 1
+    <226>   DW_AT_decl_line   : 31
+    <227>   DW_AT_linkage_name: (indexed string: 0xd): _ZN2C19testcase2Ev
+    <228>   DW_AT_type        : <0x249>
+    <22c>   DW_AT_accessibility: 1     (public)
+    <22d>   DW_AT_declaration : 1
+ <2><22d>: Abbrev Number: 14 (DW_TAG_subprogram)
+    <22e>   DW_AT_external    : 1
+    <22e>   DW_AT_name        : (indexed string: 0x4): testcase3
+    <22f>   DW_AT_decl_file   : 1
+    <230>   DW_AT_decl_line   : 32
+    <231>   DW_AT_linkage_name: (indexed string: 0xe): _ZN2C19testcase3Ev
+    <232>   DW_AT_type        : <0x249>
+    <236>   DW_AT_accessibility: 1     (public)
+    <237>   DW_AT_declaration : 1
+ <2><237>: Abbrev Number: 14 (DW_TAG_subprogram)
+    <238>   DW_AT_external    : 1
+    <238>   DW_AT_name        : (indexed string: 0xa): testcase4
+    <239>   DW_AT_decl_file   : 1
+    <23a>   DW_AT_decl_line   : 33
+    <23b>   DW_AT_linkage_name: (indexed string: 0xf): _ZN2C19testcase4Ev
+    <23c>   DW_AT_type        : <0x249>
+    <240>   DW_AT_accessibility: 1     (public)
+    <241>   DW_AT_declaration : 1
+ <2><241>: Abbrev Number: 0
+ <1><242>: Abbrev Number: 7 (DW_TAG_base_type)
+    <243>   DW_AT_byte_size   : 4
+    <244>   DW_AT_encoding    : 5      (signed)
+    <245>   DW_AT_name        : int
+ <1><249>: Abbrev Number: 7 (DW_TAG_base_type)
+    <24a>   DW_AT_byte_size   : 1
+    <24b>   DW_AT_encoding    : 2      (boolean)
+    <24c>   DW_AT_name        : bool
+ <1><251>: Abbrev Number: 15 (DW_TAG_pointer_type)
+    <252>   DW_AT_byte_size   : 8
+    <253>   DW_AT_type        : signature: 0xb5faa2a4b7a919c4
+ <1><25b>: Abbrev Number: 13 (DW_TAG_class_type)
+    <25c>   DW_AT_name        : C2
+    <25f>   DW_AT_signature   : signature: 0xab98c7bc886f5266
+    <267>   DW_AT_declaration : 1
+    <267>   DW_AT_sibling     : <0x294>
+ <2><26b>: Abbrev Number: 14 (DW_TAG_subprogram)
+    <26c>   DW_AT_external    : 1
+    <26c>   DW_AT_name        : (indexed string: 0x0): testcase1
+    <26d>   DW_AT_decl_file   : 1
+    <26e>   DW_AT_decl_line   : 40
+    <26f>   DW_AT_linkage_name: (indexed string: 0x7): _ZN2C29testcase1Ev
+    <270>   DW_AT_type        : <0x249>
+    <274>   DW_AT_accessibility: 1     (public)
+    <275>   DW_AT_declaration : 1
+ <2><275>: Abbrev Number: 14 (DW_TAG_subprogram)
+    <276>   DW_AT_external    : 1
+    <276>   DW_AT_name        : (indexed string: 0x1): testcase2
+    <277>   DW_AT_decl_file   : 1
+    <278>   DW_AT_decl_line   : 41
+    <279>   DW_AT_linkage_name: (indexed string: 0x8): _ZN2C29testcase2Ev
+    <27a>   DW_AT_type        : <0x249>
+    <27e>   DW_AT_accessibility: 1     (public)
+    <27f>   DW_AT_declaration : 1
+ <2><27f>: Abbrev Number: 14 (DW_TAG_subprogram)
+    <280>   DW_AT_external    : 1
+    <280>   DW_AT_name        : (indexed string: 0x4): testcase3
+    <281>   DW_AT_decl_file   : 1
+    <282>   DW_AT_decl_line   : 42
+    <283>   DW_AT_linkage_name: (indexed string: 0x9): _ZN2C29testcase3Ev
+    <284>   DW_AT_type        : <0x249>
+    <288>   DW_AT_accessibility: 1     (public)
+    <289>   DW_AT_declaration : 1
+ <2><289>: Abbrev Number: 14 (DW_TAG_subprogram)
+    <28a>   DW_AT_external    : 1
+    <28a>   DW_AT_name        : (indexed string: 0xa): testcase4
+    <28b>   DW_AT_decl_file   : 1
+    <28c>   DW_AT_decl_line   : 43
+    <28d>   DW_AT_linkage_name: (indexed string: 0xb): _ZN2C29testcase4Ev
+    <28e>   DW_AT_type        : <0x249>
+    <292>   DW_AT_accessibility: 1     (public)
+    <293>   DW_AT_declaration : 1
+ <2><293>: Abbrev Number: 0
+ <1><294>: Abbrev Number: 15 (DW_TAG_pointer_type)
+    <295>   DW_AT_byte_size   : 8
+    <296>   DW_AT_type        : signature: 0xab98c7bc886f5266
+ <1><29e>: Abbrev Number: 13 (DW_TAG_class_type)
+    <29f>   DW_AT_name        : C3
+    <2a2>   DW_AT_signature   : signature: 0xb534bdc1f01629bb
+    <2aa>   DW_AT_declaration : 1
+    <2aa>   DW_AT_sibling     : <0x2cd>
+ <2><2ae>: Abbrev Number: 14 (DW_TAG_subprogram)
+    <2af>   DW_AT_external    : 1
+    <2af>   DW_AT_name        : (indexed string: 0x0): testcase1
+    <2b0>   DW_AT_decl_file   : 1
+    <2b1>   DW_AT_decl_line   : 50
+    <2b2>   DW_AT_linkage_name: (indexed string: 0x2): _ZN2C39testcase1Ev
+    <2b3>   DW_AT_type        : <0x249>
+    <2b7>   DW_AT_accessibility: 1     (public)
+    <2b8>   DW_AT_declaration : 1
+ <2><2b8>: Abbrev Number: 14 (DW_TAG_subprogram)
+    <2b9>   DW_AT_external    : 1
+    <2b9>   DW_AT_name        : (indexed string: 0x1): testcase2
+    <2ba>   DW_AT_decl_file   : 1
+    <2bb>   DW_AT_decl_line   : 51
+    <2bc>   DW_AT_linkage_name: (indexed string: 0x3): _ZN2C39testcase2Ev
+    <2bd>   DW_AT_type        : <0x249>
+    <2c1>   DW_AT_accessibility: 1     (public)
+    <2c2>   DW_AT_declaration : 1
+ <2><2c2>: Abbrev Number: 14 (DW_TAG_subprogram)
+    <2c3>   DW_AT_external    : 1
+    <2c3>   DW_AT_name        : (indexed string: 0x4): testcase3
+    <2c4>   DW_AT_decl_file   : 1
+    <2c5>   DW_AT_decl_line   : 52
+    <2c6>   DW_AT_linkage_name: (indexed string: 0x5): _ZN2C39testcase3Ev
+    <2c7>   DW_AT_type        : <0x249>
+    <2cb>   DW_AT_accessibility: 1     (public)
+    <2cc>   DW_AT_declaration : 1
+ <2><2cc>: Abbrev Number: 0
+ <1><2cd>: Abbrev Number: 15 (DW_TAG_pointer_type)
+    <2ce>   DW_AT_byte_size   : 8
+    <2cf>   DW_AT_type        : signature: 0xb534bdc1f01629bb
+ <1><2d7>: Abbrev Number: 16 (DW_TAG_subprogram)
+    <2d8>   DW_AT_external    : 1
+    <2d8>   DW_AT_name        : f13i
+    <2dd>   DW_AT_decl_file   : 1
+    <2de>   DW_AT_decl_line   : 70
+    <2df>   DW_AT_linkage_name: _Z4f13iv
+    <2e8>   DW_AT_low_pc      : (addr_index: 0x0): <no .debug_addr section>
+    <2e9>   DW_AT_high_pc     : 0x6
+    <2f1>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <2f3>   DW_AT_GNU_all_call_sites: 1
+ <1><2f3>: Abbrev Number: 17 (DW_TAG_subprogram)
+    <2f4>   DW_AT_specification: <0x219>
+    <2f8>   DW_AT_decl_file   : 2
+    <2f9>   DW_AT_decl_line   : 30
+    <2fa>   DW_AT_low_pc      : (addr_index: 0x1): <no .debug_addr section>
+    <2fb>   DW_AT_high_pc     : 0x20
+    <303>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <305>   DW_AT_object_pointer: <0x30d>
+    <309>   DW_AT_GNU_all_tail_call_sites: 1
+    <309>   DW_AT_sibling     : <0x317>
+ <2><30d>: Abbrev Number: 18 (DW_TAG_formal_parameter)
+    <30e>   DW_AT_name        : (indexed string: 0x10): this
+    <30f>   DW_AT_type        : <0x317>
+    <313>   DW_AT_artificial  : 1
+    <313>   DW_AT_location    : 2 byte block: 91 68    (DW_OP_fbreg: -24)
+ <2><316>: Abbrev Number: 0
+ <1><317>: Abbrev Number: 19 (DW_TAG_const_type)
+    <318>   DW_AT_type        : <0x251>
+ <1><31c>: Abbrev Number: 20 (DW_TAG_subprogram)
+    <31d>   DW_AT_specification: <0x223>
+    <321>   DW_AT_decl_file   : 2
+    <322>   DW_AT_decl_line   : 38
+    <323>   DW_AT_low_pc      : (addr_index: 0x2): <no .debug_addr section>
+    <324>   DW_AT_high_pc     : 0x18
+    <32c>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <32e>   DW_AT_object_pointer: <0x336>
+    <332>   DW_AT_GNU_all_call_sites: 1
+    <332>   DW_AT_sibling     : <0x340>
+ <2><336>: Abbrev Number: 18 (DW_TAG_formal_parameter)
+    <337>   DW_AT_name        : (indexed string: 0x10): this
+    <338>   DW_AT_type        : <0x317>
+    <33c>   DW_AT_artificial  : 1
+    <33c>   DW_AT_location    : 2 byte block: 91 68    (DW_OP_fbreg: -24)
+ <2><33f>: Abbrev Number: 0
+ <1><340>: Abbrev Number: 20 (DW_TAG_subprogram)
+    <341>   DW_AT_specification: <0x22d>
+    <345>   DW_AT_decl_file   : 2
+    <346>   DW_AT_decl_line   : 46
+    <347>   DW_AT_low_pc      : (addr_index: 0x3): <no .debug_addr section>
+    <348>   DW_AT_high_pc     : 0x18
+    <350>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <352>   DW_AT_object_pointer: <0x35a>
+    <356>   DW_AT_GNU_all_call_sites: 1
+    <356>   DW_AT_sibling     : <0x364>
+ <2><35a>: Abbrev Number: 18 (DW_TAG_formal_parameter)
+    <35b>   DW_AT_name        : (indexed string: 0x10): this
+    <35c>   DW_AT_type        : <0x317>
+    <360>   DW_AT_artificial  : 1
+    <360>   DW_AT_location    : 2 byte block: 91 68    (DW_OP_fbreg: -24)
+ <2><363>: Abbrev Number: 0
+ <1><364>: Abbrev Number: 20 (DW_TAG_subprogram)
+    <365>   DW_AT_specification: <0x237>
+    <369>   DW_AT_decl_file   : 2
+    <36a>   DW_AT_decl_line   : 54
+    <36b>   DW_AT_low_pc      : (addr_index: 0x4): <no .debug_addr section>
+    <36c>   DW_AT_high_pc     : 0x16
+    <374>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <376>   DW_AT_object_pointer: <0x37e>
+    <37a>   DW_AT_GNU_all_call_sites: 1
+    <37a>   DW_AT_sibling     : <0x388>
+ <2><37e>: Abbrev Number: 18 (DW_TAG_formal_parameter)
+    <37f>   DW_AT_name        : (indexed string: 0x10): this
+    <380>   DW_AT_type        : <0x317>
+    <384>   DW_AT_artificial  : 1
+    <384>   DW_AT_location    : 2 byte block: 91 68    (DW_OP_fbreg: -24)
+ <2><387>: Abbrev Number: 0
+ <1><388>: Abbrev Number: 20 (DW_TAG_subprogram)
+    <389>   DW_AT_specification: <0x26b>
+    <38d>   DW_AT_decl_file   : 2
+    <38e>   DW_AT_decl_line   : 62
+    <38f>   DW_AT_low_pc      : (addr_index: 0x5): <no .debug_addr section>
+    <390>   DW_AT_high_pc     : 0x16
+    <398>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <39a>   DW_AT_object_pointer: <0x3a2>
+    <39e>   DW_AT_GNU_all_call_sites: 1
+    <39e>   DW_AT_sibling     : <0x3ac>
+ <2><3a2>: Abbrev Number: 18 (DW_TAG_formal_parameter)
+    <3a3>   DW_AT_name        : (indexed string: 0x10): this
+    <3a4>   DW_AT_type        : <0x3ac>
+    <3a8>   DW_AT_artificial  : 1
+    <3a8>   DW_AT_location    : 2 byte block: 91 68    (DW_OP_fbreg: -24)
+ <2><3ab>: Abbrev Number: 0
+ <1><3ac>: Abbrev Number: 19 (DW_TAG_const_type)
+    <3ad>   DW_AT_type        : <0x294>
+ <1><3b1>: Abbrev Number: 20 (DW_TAG_subprogram)
+    <3b2>   DW_AT_specification: <0x275>
+    <3b6>   DW_AT_decl_file   : 2
+    <3b7>   DW_AT_decl_line   : 72
+    <3b8>   DW_AT_low_pc      : (addr_index: 0x6): <no .debug_addr section>
+    <3b9>   DW_AT_high_pc     : 0x1b
+    <3c1>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <3c3>   DW_AT_object_pointer: <0x3cb>
+    <3c7>   DW_AT_GNU_all_call_sites: 1
+    <3c7>   DW_AT_sibling     : <0x3d5>
+ <2><3cb>: Abbrev Number: 18 (DW_TAG_formal_parameter)
+    <3cc>   DW_AT_name        : (indexed string: 0x10): this
+    <3cd>   DW_AT_type        : <0x3ac>
+    <3d1>   DW_AT_artificial  : 1
+    <3d1>   DW_AT_location    : 2 byte block: 91 68    (DW_OP_fbreg: -24)
+ <2><3d4>: Abbrev Number: 0
+ <1><3d5>: Abbrev Number: 20 (DW_TAG_subprogram)
+    <3d6>   DW_AT_specification: <0x27f>
+    <3da>   DW_AT_decl_file   : 2
+    <3db>   DW_AT_decl_line   : 82
+    <3dc>   DW_AT_low_pc      : (addr_index: 0x7): <no .debug_addr section>
+    <3dd>   DW_AT_high_pc     : 0x1b
+    <3e5>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <3e7>   DW_AT_object_pointer: <0x3ef>
+    <3eb>   DW_AT_GNU_all_call_sites: 1
+    <3eb>   DW_AT_sibling     : <0x3f9>
+ <2><3ef>: Abbrev Number: 18 (DW_TAG_formal_parameter)
+    <3f0>   DW_AT_name        : (indexed string: 0x10): this
+    <3f1>   DW_AT_type        : <0x3ac>
+    <3f5>   DW_AT_artificial  : 1
+    <3f5>   DW_AT_location    : 2 byte block: 91 68    (DW_OP_fbreg: -24)
+ <2><3f8>: Abbrev Number: 0
+ <1><3f9>: Abbrev Number: 20 (DW_TAG_subprogram)
+    <3fa>   DW_AT_specification: <0x289>
+    <3fe>   DW_AT_decl_file   : 2
+    <3ff>   DW_AT_decl_line   : 92
+    <400>   DW_AT_low_pc      : (addr_index: 0x8): <no .debug_addr section>
+    <401>   DW_AT_high_pc     : 0x19
+    <409>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <40b>   DW_AT_object_pointer: <0x413>
+    <40f>   DW_AT_GNU_all_call_sites: 1
+    <40f>   DW_AT_sibling     : <0x41d>
+ <2><413>: Abbrev Number: 18 (DW_TAG_formal_parameter)
+    <414>   DW_AT_name        : (indexed string: 0x10): this
+    <415>   DW_AT_type        : <0x3ac>
+    <419>   DW_AT_artificial  : 1
+    <419>   DW_AT_location    : 2 byte block: 91 68    (DW_OP_fbreg: -24)
+ <2><41c>: Abbrev Number: 0
+ <1><41d>: Abbrev Number: 20 (DW_TAG_subprogram)
+    <41e>   DW_AT_specification: <0x2ae>
+    <422>   DW_AT_decl_file   : 2
+    <423>   DW_AT_decl_line   : 102
+    <424>   DW_AT_low_pc      : (addr_index: 0x9): <no .debug_addr section>
+    <425>   DW_AT_high_pc     : 0x19
+    <42d>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <42f>   DW_AT_object_pointer: <0x437>
+    <433>   DW_AT_GNU_all_call_sites: 1
+    <433>   DW_AT_sibling     : <0x441>
+ <2><437>: Abbrev Number: 18 (DW_TAG_formal_parameter)
+    <438>   DW_AT_name        : (indexed string: 0x10): this
+    <439>   DW_AT_type        : <0x441>
+    <43d>   DW_AT_artificial  : 1
+    <43d>   DW_AT_location    : 2 byte block: 91 68    (DW_OP_fbreg: -24)
+ <2><440>: Abbrev Number: 0
+ <1><441>: Abbrev Number: 19 (DW_TAG_const_type)
+    <442>   DW_AT_type        : <0x2cd>
+ <1><446>: Abbrev Number: 17 (DW_TAG_subprogram)
+    <447>   DW_AT_specification: <0x2b8>
+    <44b>   DW_AT_decl_file   : 2
+    <44c>   DW_AT_decl_line   : 112
+    <44d>   DW_AT_low_pc      : (addr_index: 0xa): <no .debug_addr section>
+    <44e>   DW_AT_high_pc     : 0x1f
+    <456>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <458>   DW_AT_object_pointer: <0x460>
+    <45c>   DW_AT_GNU_all_tail_call_sites: 1
+    <45c>   DW_AT_sibling     : <0x46a>
+ <2><460>: Abbrev Number: 18 (DW_TAG_formal_parameter)
+    <461>   DW_AT_name        : (indexed string: 0x10): this
+    <462>   DW_AT_type        : <0x441>
+    <466>   DW_AT_artificial  : 1
+    <466>   DW_AT_location    : 2 byte block: 91 68    (DW_OP_fbreg: -24)
+ <2><469>: Abbrev Number: 0
+ <1><46a>: Abbrev Number: 21 (DW_TAG_subprogram)
+    <46b>   DW_AT_external    : 1
+    <46b>   DW_AT_name        : f11a
+    <470>   DW_AT_decl_file   : 2
+    <471>   DW_AT_decl_line   : 120
+    <472>   DW_AT_linkage_name: _Z4f11av
+    <47b>   DW_AT_type        : <0x242>
+    <47f>   DW_AT_low_pc      : (addr_index: 0xb): <no .debug_addr section>
+    <480>   DW_AT_high_pc     : 0xb
+    <488>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <48a>   DW_AT_GNU_all_call_sites: 1
+ <1><48a>: Abbrev Number: 17 (DW_TAG_subprogram)
+    <48b>   DW_AT_specification: <0x2c2>
+    <48f>   DW_AT_decl_file   : 2
+    <490>   DW_AT_decl_line   : 126
+    <491>   DW_AT_low_pc      : (addr_index: 0xc): <no .debug_addr section>
+    <492>   DW_AT_high_pc     : 0x20
+    <49a>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <49c>   DW_AT_object_pointer: <0x4a4>
+    <4a0>   DW_AT_GNU_all_tail_call_sites: 1
+    <4a0>   DW_AT_sibling     : <0x4ae>
+ <2><4a4>: Abbrev Number: 18 (DW_TAG_formal_parameter)
+    <4a5>   DW_AT_name        : (indexed string: 0x10): this
+    <4a6>   DW_AT_type        : <0x441>
+    <4aa>   DW_AT_artificial  : 1
+    <4aa>   DW_AT_location    : 2 byte block: 91 68    (DW_OP_fbreg: -24)
+ <2><4ad>: Abbrev Number: 0
+ <1><4ae>: Abbrev Number: 22 (DW_TAG_subprogram)
+    <4af>   DW_AT_external    : 1
+    <4af>   DW_AT_name        : t12
+    <4b3>   DW_AT_decl_file   : 2
+    <4b4>   DW_AT_decl_line   : 134
+    <4b5>   DW_AT_linkage_name: _Z3t12v
+    <4bd>   DW_AT_type        : <0x249>
+    <4c1>   DW_AT_low_pc      : (addr_index: 0xd): <no .debug_addr section>
+    <4c2>   DW_AT_high_pc     : 0x19
+    <4ca>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <4cc>   DW_AT_GNU_all_tail_call_sites: 1
+ <1><4cc>: Abbrev Number: 22 (DW_TAG_subprogram)
+    <4cd>   DW_AT_external    : 1
+    <4cd>   DW_AT_name        : t13
+    <4d1>   DW_AT_decl_file   : 2
+    <4d2>   DW_AT_decl_line   : 142
+    <4d3>   DW_AT_linkage_name: _Z3t13v
+    <4db>   DW_AT_type        : <0x249>
+    <4df>   DW_AT_low_pc      : (addr_index: 0xe): <no .debug_addr section>
+    <4e0>   DW_AT_high_pc     : 0x14
+    <4e8>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <4ea>   DW_AT_GNU_all_tail_call_sites: 1
+ <1><4ea>: Abbrev Number: 23 (DW_TAG_subprogram)
+    <4eb>   DW_AT_external    : 1
+    <4eb>   DW_AT_name        : t14
+    <4ef>   DW_AT_decl_file   : 2
+    <4f0>   DW_AT_decl_line   : 150
+    <4f1>   DW_AT_linkage_name: _Z3t14v
+    <4f9>   DW_AT_type        : <0x249>
+    <4fd>   DW_AT_low_pc      : (addr_index: 0xf): <no .debug_addr section>
+    <4fe>   DW_AT_high_pc     : 0x61
+    <506>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <508>   DW_AT_GNU_all_tail_call_sites: 1
+    <508>   DW_AT_sibling     : <0x532>
+ <2><50c>: Abbrev Number: 24 (DW_TAG_lexical_block)
+    <50d>   DW_AT_low_pc      : (addr_index: 0x10): <no .debug_addr section>
+    <50e>   DW_AT_high_pc     : 0x57
+ <3><516>: Abbrev Number: 25 (DW_TAG_variable)
+    <517>   DW_AT_name        : s1
+    <51a>   DW_AT_decl_file   : 2
+    <51b>   DW_AT_decl_line   : 152
+    <51c>   DW_AT_type        : <0x532>
+    <520>   DW_AT_location    : 2 byte block: 91 68    (DW_OP_fbreg: -24)
+ <3><523>: Abbrev Number: 25 (DW_TAG_variable)
+    <524>   DW_AT_name        : s2
+    <527>   DW_AT_decl_file   : 2
+    <528>   DW_AT_decl_line   : 153
+    <529>   DW_AT_type        : <0x532>
+    <52d>   DW_AT_location    : 2 byte block: 91 60    (DW_OP_fbreg: -32)
+ <3><530>: Abbrev Number: 0
+ <2><531>: Abbrev Number: 0
+ <1><532>: Abbrev Number: 8 (DW_TAG_pointer_type)
+    <533>   DW_AT_byte_size   : 8
+    <534>   DW_AT_type        : <0x538>
+ <1><538>: Abbrev Number: 19 (DW_TAG_const_type)
+    <539>   DW_AT_type        : <0x53d>
+ <1><53d>: Abbrev Number: 7 (DW_TAG_base_type)
+    <53e>   DW_AT_byte_size   : 1
+    <53f>   DW_AT_encoding    : 6      (signed char)
+    <540>   DW_AT_name        : char
+ <1><545>: Abbrev Number: 23 (DW_TAG_subprogram)
+    <546>   DW_AT_external    : 1
+    <546>   DW_AT_name        : t15
+    <54a>   DW_AT_decl_file   : 2
+    <54b>   DW_AT_decl_line   : 163
+    <54c>   DW_AT_linkage_name: _Z3t15v
+    <554>   DW_AT_type        : <0x249>
+    <558>   DW_AT_low_pc      : (addr_index: 0x11): <no .debug_addr section>
+    <559>   DW_AT_high_pc     : 0x5d
+    <561>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <563>   DW_AT_GNU_all_tail_call_sites: 1
+    <563>   DW_AT_sibling     : <0x58d>
+ <2><567>: Abbrev Number: 24 (DW_TAG_lexical_block)
+    <568>   DW_AT_low_pc      : (addr_index: 0x12): <no .debug_addr section>
+    <569>   DW_AT_high_pc     : 0x53
+ <3><571>: Abbrev Number: 25 (DW_TAG_variable)
+    <572>   DW_AT_name        : s1
+    <575>   DW_AT_decl_file   : 2
+    <576>   DW_AT_decl_line   : 165
+    <577>   DW_AT_type        : <0x58d>
+    <57b>   DW_AT_location    : 2 byte block: 91 68    (DW_OP_fbreg: -24)
+ <3><57e>: Abbrev Number: 25 (DW_TAG_variable)
+    <57f>   DW_AT_name        : s2
+    <582>   DW_AT_decl_file   : 2
+    <583>   DW_AT_decl_line   : 166
+    <584>   DW_AT_type        : <0x58d>
+    <588>   DW_AT_location    : 2 byte block: 91 60    (DW_OP_fbreg: -32)
+ <3><58b>: Abbrev Number: 0
+ <2><58c>: Abbrev Number: 0
+ <1><58d>: Abbrev Number: 8 (DW_TAG_pointer_type)
+    <58e>   DW_AT_byte_size   : 8
+    <58f>   DW_AT_type        : <0x593>
+ <1><593>: Abbrev Number: 19 (DW_TAG_const_type)
+    <594>   DW_AT_type        : <0x598>
+ <1><598>: Abbrev Number: 7 (DW_TAG_base_type)
+    <599>   DW_AT_byte_size   : 4
+    <59a>   DW_AT_encoding    : 5      (signed)
+    <59b>   DW_AT_name        : wchar_t
+ <1><5a3>: Abbrev Number: 22 (DW_TAG_subprogram)
+    <5a4>   DW_AT_external    : 1
+    <5a4>   DW_AT_name        : t16
+    <5a8>   DW_AT_decl_file   : 2
+    <5a9>   DW_AT_decl_line   : 176
+    <5aa>   DW_AT_linkage_name: _Z3t16v
+    <5b2>   DW_AT_type        : <0x249>
+    <5b6>   DW_AT_low_pc      : (addr_index: 0x13): <no .debug_addr section>
+    <5b7>   DW_AT_high_pc     : 0x13
+    <5bf>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <5c1>   DW_AT_GNU_all_tail_call_sites: 1
+ <1><5c1>: Abbrev Number: 26 (DW_TAG_subprogram)
+    <5c2>   DW_AT_external    : 1
+    <5c2>   DW_AT_name        : t17
+    <5c6>   DW_AT_decl_file   : 2
+    <5c7>   DW_AT_decl_line   : 184
+    <5c8>   DW_AT_linkage_name: _Z3t17v
+    <5d0>   DW_AT_type        : <0x249>
+    <5d4>   DW_AT_low_pc      : (addr_index: 0x14): <no .debug_addr section>
+    <5d5>   DW_AT_high_pc     : 0x5f
+    <5dd>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <5df>   DW_AT_GNU_all_call_sites: 1
+    <5df>   DW_AT_sibling     : <0x612>
+ <2><5e3>: Abbrev Number: 24 (DW_TAG_lexical_block)
+    <5e4>   DW_AT_low_pc      : (addr_index: 0x15): <no .debug_addr section>
+    <5e5>   DW_AT_high_pc     : 0x59
+ <3><5ed>: Abbrev Number: 25 (DW_TAG_variable)
+    <5ee>   DW_AT_name        : c
+    <5f0>   DW_AT_decl_file   : 2
+    <5f1>   DW_AT_decl_line   : 186
+    <5f2>   DW_AT_type        : <0x53d>
+    <5f6>   DW_AT_location    : 2 byte block: 91 6f    (DW_OP_fbreg: -17)
+ <3><5f9>: Abbrev Number: 24 (DW_TAG_lexical_block)
+    <5fa>   DW_AT_low_pc      : (addr_index: 0x16): <no .debug_addr section>
+    <5fb>   DW_AT_high_pc     : 0x50
+ <4><603>: Abbrev Number: 25 (DW_TAG_variable)
+    <604>   DW_AT_name        : i
+    <606>   DW_AT_decl_file   : 2
+    <607>   DW_AT_decl_line   : 187
+    <608>   DW_AT_type        : <0x242>
+    <60c>   DW_AT_location    : 2 byte block: 91 68    (DW_OP_fbreg: -24)
+ <4><60f>: Abbrev Number: 0
+ <3><610>: Abbrev Number: 0
+ <2><611>: Abbrev Number: 0
+ <1><612>: Abbrev Number: 23 (DW_TAG_subprogram)
+    <613>   DW_AT_external    : 1
+    <613>   DW_AT_name        : t18
+    <617>   DW_AT_decl_file   : 2
+    <618>   DW_AT_decl_line   : 199
+    <619>   DW_AT_linkage_name: _Z3t18v
+    <621>   DW_AT_type        : <0x249>
+    <625>   DW_AT_low_pc      : (addr_index: 0x17): <no .debug_addr section>
+    <626>   DW_AT_high_pc     : 0x5f
+    <62e>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <630>   DW_AT_GNU_all_tail_call_sites: 1
+    <630>   DW_AT_sibling     : <0x67a>
+ <2><634>: Abbrev Number: 24 (DW_TAG_lexical_block)
+    <635>   DW_AT_low_pc      : (addr_index: 0x18): <no .debug_addr section>
+    <636>   DW_AT_high_pc     : 0x55
+ <3><63e>: Abbrev Number: 25 (DW_TAG_variable)
+    <63f>   DW_AT_name        : c
+    <641>   DW_AT_decl_file   : 2
+    <642>   DW_AT_decl_line   : 201
+    <643>   DW_AT_type        : <0x53d>
+    <647>   DW_AT_location    : 2 byte block: 91 6f    (DW_OP_fbreg: -17)
+ <3><64a>: Abbrev Number: 24 (DW_TAG_lexical_block)
+    <64b>   DW_AT_low_pc      : (addr_index: 0x19): <no .debug_addr section>
+    <64c>   DW_AT_high_pc     : 0x4c
+ <4><654>: Abbrev Number: 25 (DW_TAG_variable)
+    <655>   DW_AT_name        : i
+    <657>   DW_AT_decl_file   : 2
+    <658>   DW_AT_decl_line   : 202
+    <659>   DW_AT_type        : <0x242>
+    <65d>   DW_AT_location    : 2 byte block: 91 68    (DW_OP_fbreg: -24)
+ <4><660>: Abbrev Number: 24 (DW_TAG_lexical_block)
+    <661>   DW_AT_low_pc      : (addr_index: 0x1a): <no .debug_addr section>
+    <662>   DW_AT_high_pc     : 0x34
+ <5><66a>: Abbrev Number: 25 (DW_TAG_variable)
+    <66b>   DW_AT_name        : s
+    <66d>   DW_AT_decl_file   : 2
+    <66e>   DW_AT_decl_line   : 204
+    <66f>   DW_AT_type        : <0x532>
+    <673>   DW_AT_location    : 2 byte block: 91 60    (DW_OP_fbreg: -32)
+ <5><676>: Abbrev Number: 0
+ <4><677>: Abbrev Number: 0
+ <3><678>: Abbrev Number: 0
+ <2><679>: Abbrev Number: 0
+ <1><67a>: Abbrev Number: 27 (DW_TAG_variable)
+    <67b>   DW_AT_name        : c3
+    <67e>   DW_AT_decl_file   : 1
+    <67f>   DW_AT_decl_line   : 57
+    <680>   DW_AT_type        : signature: 0xb534bdc1f01629bb
+    <688>   DW_AT_external    : 1
+    <688>   DW_AT_declaration : 1
+ <1><688>: Abbrev Number: 28 (DW_TAG_variable)
+    <689>   DW_AT_name        : v2
+    <68c>   DW_AT_decl_file   : 1
+    <68d>   DW_AT_decl_line   : 59
+    <68e>   DW_AT_type        : <0x242>
+    <692>   DW_AT_external    : 1
+    <692>   DW_AT_declaration : 1
+ <1><692>: Abbrev Number: 28 (DW_TAG_variable)
+    <693>   DW_AT_name        : v3
+    <696>   DW_AT_decl_file   : 1
+    <697>   DW_AT_decl_line   : 60
+    <698>   DW_AT_type        : <0x242>
+    <69c>   DW_AT_external    : 1
+    <69c>   DW_AT_declaration : 1
+ <1><69c>: Abbrev Number: 29 (DW_TAG_array_type)
+    <69d>   DW_AT_type        : <0x53d>
+    <6a1>   DW_AT_sibling     : <0x6a7>
+ <2><6a5>: Abbrev Number: 30 (DW_TAG_subrange_type)
+ <2><6a6>: Abbrev Number: 0
+ <1><6a7>: Abbrev Number: 28 (DW_TAG_variable)
+    <6a8>   DW_AT_name        : v4
+    <6ab>   DW_AT_decl_file   : 1
+    <6ac>   DW_AT_decl_line   : 61
+    <6ad>   DW_AT_type        : <0x69c>
+    <6b1>   DW_AT_external    : 1
+    <6b1>   DW_AT_declaration : 1
+ <1><6b1>: Abbrev Number: 28 (DW_TAG_variable)
+    <6b2>   DW_AT_name        : v5
+    <6b5>   DW_AT_decl_file   : 1
+    <6b6>   DW_AT_decl_line   : 62
+    <6b7>   DW_AT_type        : <0x69c>
+    <6bb>   DW_AT_external    : 1
+    <6bb>   DW_AT_declaration : 1
+ <1><6bb>: Abbrev Number: 29 (DW_TAG_array_type)
+    <6bc>   DW_AT_type        : <0x532>
+    <6c0>   DW_AT_sibling     : <0x6c6>
+ <2><6c4>: Abbrev Number: 30 (DW_TAG_subrange_type)
+ <2><6c5>: Abbrev Number: 0
+ <1><6c6>: Abbrev Number: 28 (DW_TAG_variable)
+    <6c7>   DW_AT_name        : t17data
+    <6cf>   DW_AT_decl_file   : 1
+    <6d0>   DW_AT_decl_line   : 83
+    <6d1>   DW_AT_type        : <0x6bb>
+    <6d5>   DW_AT_external    : 1
+    <6d5>   DW_AT_declaration : 1
+ <1><6d5>: Abbrev Number: 31 (DW_TAG_variable)
+    <6d6>   DW_AT_name        : p6
+    <6d9>   DW_AT_decl_file   : 2
+    <6da>   DW_AT_decl_line   : 69
+    <6db>   DW_AT_type        : <0x6e2>
+    <6df>   DW_AT_external    : 1
+    <6df>   DW_AT_location    : 2 byte block: fb 1b    (DW_OP_GNU_addr_index <0x1b>)
+ <1><6e2>: Abbrev Number: 8 (DW_TAG_pointer_type)
+    <6e3>   DW_AT_byte_size   : 8
+    <6e4>   DW_AT_type        : <0x242>
+ <1><6e8>: Abbrev Number: 31 (DW_TAG_variable)
+    <6e9>   DW_AT_name        : p7
+    <6ec>   DW_AT_decl_file   : 2
+    <6ed>   DW_AT_decl_line   : 79
+    <6ee>   DW_AT_type        : <0x6e2>
+    <6f2>   DW_AT_external    : 1
+    <6f2>   DW_AT_location    : 2 byte block: fb 1c    (DW_OP_GNU_addr_index <0x1c>)
+ <1><6f5>: Abbrev Number: 31 (DW_TAG_variable)
+    <6f6>   DW_AT_name        : p8
+    <6f9>   DW_AT_decl_file   : 2
+    <6fa>   DW_AT_decl_line   : 89
+    <6fb>   DW_AT_type        : <0x702>
+    <6ff>   DW_AT_external    : 1
+    <6ff>   DW_AT_location    : 2 byte block: fb 1d    (DW_OP_GNU_addr_index <0x1d>)
+ <1><702>: Abbrev Number: 8 (DW_TAG_pointer_type)
+    <703>   DW_AT_byte_size   : 8
+    <704>   DW_AT_type        : <0x53d>
+ <1><708>: Abbrev Number: 31 (DW_TAG_variable)
+    <709>   DW_AT_name        : p9
+    <70c>   DW_AT_decl_file   : 2
+    <70d>   DW_AT_decl_line   : 99
+    <70e>   DW_AT_type        : <0x702>
+    <712>   DW_AT_external    : 1
+    <712>   DW_AT_location    : 2 byte block: fb 1e    (DW_OP_GNU_addr_index <0x1e>)
+ <1><715>: Abbrev Number: 9 (DW_TAG_subroutine_type)
+    <716>   DW_AT_type        : <0x242>
+ <1><71a>: Abbrev Number: 31 (DW_TAG_variable)
+    <71b>   DW_AT_name        : pfn
+    <71f>   DW_AT_decl_file   : 2
+    <720>   DW_AT_decl_line   : 109
+    <721>   DW_AT_type        : <0x728>
+    <725>   DW_AT_external    : 1
+    <725>   DW_AT_location    : 2 byte block: fb 1f    (DW_OP_GNU_addr_index <0x1f>)
+ <1><728>: Abbrev Number: 8 (DW_TAG_pointer_type)
+    <729>   DW_AT_byte_size   : 8
+    <72a>   DW_AT_type        : <0x715>
+ <1><72e>: Abbrev Number: 0
+  Compilation Unit @ offset 0x72f:
+   Length:        0xcb (32-bit)
+   Version:       4
+   Abbrev Offset: 0x0
+   Pointer Size:  8
+   Section contributions:
+    .debug_abbrev.dwo:       0x371  0xbd
+    .debug_line.dwo:         0x7d  0x3e
+    .debug_loc.dwo:          0x0  0x0
+    .debug_str_offsets.dwo:  0x0  0x0
+ <0><73a>: Abbrev Number: 10 (DW_TAG_compile_unit)
+    <73b>   DW_AT_producer    : GNU C++ 4.7.x-google 20120720 (prerelease)
+    <766>   DW_AT_language    : 4      (C++)
+    <767>   DW_AT_name        : dwp_test_1b.cc
+    <776>   DW_AT_comp_dir    : /home/ccoutant/opensource/binutils-git/binutils/gold/testsuite
+    <7b5>   DW_AT_GNU_dwo_id  : 0xbd6ec13ea247eff6
+ <1><7bd>: Abbrev Number: 7 (DW_TAG_base_type)
+    <7be>   DW_AT_byte_size   : 4
+    <7bf>   DW_AT_encoding    : 5      (signed)
+    <7c0>   DW_AT_name        : int
+ <1><7c4>: Abbrev Number: 7 (DW_TAG_base_type)
+    <7c5>   DW_AT_byte_size   : 1
+    <7c6>   DW_AT_encoding    : 2      (boolean)
+    <7c7>   DW_AT_name        : bool
+ <1><7cc>: Abbrev Number: 11 (DW_TAG_subprogram)
+    <7cd>   DW_AT_external    : 1
+    <7cd>   DW_AT_name        : t16a
+    <7d2>   DW_AT_decl_file   : 1
+    <7d3>   DW_AT_decl_line   : 32
+    <7d4>   DW_AT_linkage_name: _Z4t16av
+    <7dd>   DW_AT_type        : <0x7c4>
+    <7e1>   DW_AT_low_pc      : (addr_index: 0x0): <no .debug_addr section>
+    <7e2>   DW_AT_high_pc     : 0x13
+    <7ea>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <7ec>   DW_AT_GNU_all_tail_call_sites: 1
+ <1><7ec>: Abbrev Number: 12 (DW_TAG_variable)
+    <7ed>   DW_AT_name        : c3
+    <7f0>   DW_AT_decl_file   : 1
+    <7f1>   DW_AT_decl_line   : 29
+    <7f2>   DW_AT_type        : signature: 0xb534bdc1f01629bb
+    <7fa>   DW_AT_external    : 1
+    <7fa>   DW_AT_location    : 2 byte block: fb 1     (DW_OP_GNU_addr_index <0x1>)
+ <1><7fd>: Abbrev Number: 0
+  Compilation Unit @ offset 0x7fe:
+   Length:        0x329 (32-bit)
+   Version:       4
+   Abbrev Offset: 0x0
+   Pointer Size:  8
+   Section contributions:
+    .debug_abbrev.dwo:       0x42e  0x1f2
+    .debug_line.dwo:         0xbb  0x3d
+    .debug_loc.dwo:          0x0  0x0
+    .debug_str_offsets.dwo:  0x58  0x18
+ <0><809>: Abbrev Number: 12 (DW_TAG_compile_unit)
+    <80a>   DW_AT_producer    : GNU C++ 4.7.x-google 20120720 (prerelease)
+    <835>   DW_AT_language    : 4      (C++)
+    <836>   DW_AT_name        : dwp_test_2.cc
+    <844>   DW_AT_comp_dir    : /home/ccoutant/opensource/binutils-git/binutils/gold/testsuite
+    <883>   DW_AT_GNU_dwo_id  : 0xcf0cab718ce0f8b9
+ <1><88b>: Abbrev Number: 13 (DW_TAG_class_type)
+    <88c>   DW_AT_name        : C1
+    <88f>   DW_AT_signature   : signature: 0xb5faa2a4b7a919c4
+    <897>   DW_AT_declaration : 1
+    <897>   DW_AT_sibling     : <0x8b7>
+ <2><89b>: Abbrev Number: 14 (DW_TAG_subprogram)
+    <89c>   DW_AT_external    : 1
+    <89c>   DW_AT_name        : t1a
+    <8a0>   DW_AT_decl_file   : 1
+    <8a1>   DW_AT_decl_line   : 29
+    <8a2>   DW_AT_linkage_name: (indexed string: 0x4): _ZN2C13t1aEv
+    <8a3>   DW_AT_type        : <0x8be>
+    <8a7>   DW_AT_accessibility: 1     (public)
+    <8a8>   DW_AT_declaration : 1
+ <2><8a8>: Abbrev Number: 14 (DW_TAG_subprogram)
+    <8a9>   DW_AT_external    : 1
+    <8a9>   DW_AT_name        : t1_2
+    <8ae>   DW_AT_decl_file   : 1
+    <8af>   DW_AT_decl_line   : 30
+    <8b0>   DW_AT_linkage_name: (indexed string: 0x5): _ZN2C14t1_2Ev
+    <8b1>   DW_AT_type        : <0x8b7>
+    <8b5>   DW_AT_accessibility: 1     (public)
+    <8b6>   DW_AT_declaration : 1
+ <2><8b6>: Abbrev Number: 0
+ <1><8b7>: Abbrev Number: 7 (DW_TAG_base_type)
+    <8b8>   DW_AT_byte_size   : 4
+    <8b9>   DW_AT_encoding    : 5      (signed)
+    <8ba>   DW_AT_name        : int
+ <1><8be>: Abbrev Number: 7 (DW_TAG_base_type)
+    <8bf>   DW_AT_byte_size   : 1
+    <8c0>   DW_AT_encoding    : 2      (boolean)
+    <8c1>   DW_AT_name        : bool
+ <1><8c6>: Abbrev Number: 15 (DW_TAG_pointer_type)
+    <8c7>   DW_AT_byte_size   : 8
+    <8c8>   DW_AT_type        : signature: 0xb5faa2a4b7a919c4
+ <1><8d0>: Abbrev Number: 13 (DW_TAG_class_type)
+    <8d1>   DW_AT_name        : C3
+    <8d4>   DW_AT_signature   : signature: 0xb534bdc1f01629bb
+    <8dc>   DW_AT_declaration : 1
+    <8dc>   DW_AT_sibling     : <0x8ed>
+ <2><8e0>: Abbrev Number: 14 (DW_TAG_subprogram)
+    <8e1>   DW_AT_external    : 1
+    <8e1>   DW_AT_name        : f4
+    <8e4>   DW_AT_decl_file   : 1
+    <8e5>   DW_AT_decl_line   : 53
+    <8e6>   DW_AT_linkage_name: (indexed string: 0x3): _ZN2C32f4Ev
+    <8e7>   DW_AT_type        : <0x8fc>
+    <8eb>   DW_AT_accessibility: 1     (public)
+    <8ec>   DW_AT_declaration : 1
+ <2><8ec>: Abbrev Number: 0
+ <1><8ed>: Abbrev Number: 15 (DW_TAG_pointer_type)
+    <8ee>   DW_AT_byte_size   : 8
+    <8ef>   DW_AT_type        : signature: 0xb534bdc1f01629bb
+ <1><8f7>: Abbrev Number: 9 (DW_TAG_subroutine_type)
+    <8f8>   DW_AT_type        : <0x8be>
+ <1><8fc>: Abbrev Number: 8 (DW_TAG_pointer_type)
+    <8fd>   DW_AT_byte_size   : 8
+    <8fe>   DW_AT_type        : <0x8f7>
+ <1><902>: Abbrev Number: 16 (DW_TAG_subprogram)
+    <903>   DW_AT_external    : 1
+    <903>   DW_AT_name        : f13i
+    <908>   DW_AT_decl_file   : 1
+    <909>   DW_AT_decl_line   : 70
+    <90a>   DW_AT_linkage_name: _Z4f13iv
+    <913>   DW_AT_low_pc      : (addr_index: 0x0): <no .debug_addr section>
+    <914>   DW_AT_high_pc     : 0x6
+    <91c>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <91e>   DW_AT_GNU_all_call_sites: 1
+ <1><91e>: Abbrev Number: 17 (DW_TAG_subprogram)
+    <91f>   DW_AT_specification: <0x8a8>
+    <923>   DW_AT_decl_file   : 2
+    <924>   DW_AT_low_pc      : (addr_index: 0x1): <no .debug_addr section>
+    <925>   DW_AT_high_pc     : 0xf
+    <92d>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <92f>   DW_AT_object_pointer: <0x937>
+    <933>   DW_AT_GNU_all_call_sites: 1
+    <933>   DW_AT_sibling     : <0x945>
+ <2><937>: Abbrev Number: 18 (DW_TAG_formal_parameter)
+    <938>   DW_AT_name        : this
+    <93d>   DW_AT_type        : <0x945>
+    <941>   DW_AT_artificial  : 1
+    <941>   DW_AT_location    : 2 byte block: 91 68    (DW_OP_fbreg: -24)
+ <2><944>: Abbrev Number: 0
+ <1><945>: Abbrev Number: 19 (DW_TAG_const_type)
+    <946>   DW_AT_type        : <0x8c6>
+ <1><94a>: Abbrev Number: 20 (DW_TAG_subprogram)
+    <94b>   DW_AT_specification: <0x89b>
+    <94f>   DW_AT_decl_file   : 2
+    <950>   DW_AT_decl_line   : 36
+    <951>   DW_AT_low_pc      : (addr_index: 0x2): <no .debug_addr section>
+    <952>   DW_AT_high_pc     : 0x20
+    <95a>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <95c>   DW_AT_object_pointer: <0x964>
+    <960>   DW_AT_GNU_all_tail_call_sites: 1
+    <960>   DW_AT_sibling     : <0x972>
+ <2><964>: Abbrev Number: 18 (DW_TAG_formal_parameter)
+    <965>   DW_AT_name        : this
+    <96a>   DW_AT_type        : <0x945>
+    <96e>   DW_AT_artificial  : 1
+    <96e>   DW_AT_location    : 2 byte block: 91 68    (DW_OP_fbreg: -24)
+ <2><971>: Abbrev Number: 0
+ <1><972>: Abbrev Number: 21 (DW_TAG_subprogram)
+    <973>   DW_AT_external    : 1
+    <973>   DW_AT_name        : f10
+    <977>   DW_AT_decl_file   : 2
+    <978>   DW_AT_decl_line   : 72
+    <979>   DW_AT_linkage_name: _Z3f10v
+    <981>   DW_AT_type        : <0x8b7>
+    <985>   DW_AT_low_pc      : (addr_index: 0x3): <no .debug_addr section>
+    <986>   DW_AT_high_pc     : 0xb
+    <98e>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <990>   DW_AT_GNU_all_call_sites: 1
+ <1><990>: Abbrev Number: 22 (DW_TAG_subprogram)
+    <991>   DW_AT_external    : 1
+    <991>   DW_AT_name        : f11b
+    <996>   DW_AT_decl_file   : 2
+    <997>   DW_AT_decl_line   : 80
+    <998>   DW_AT_linkage_name: _Z4f11bPFivE
+    <9a5>   DW_AT_type        : <0x8b7>
+    <9a9>   DW_AT_low_pc      : (addr_index: 0x4): <no .debug_addr section>
+    <9aa>   DW_AT_high_pc     : 0x14
+    <9b2>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <9b4>   DW_AT_GNU_all_tail_call_sites: 1
+    <9b4>   DW_AT_sibling     : <0x9c7>
+ <2><9b8>: Abbrev Number: 23 (DW_TAG_formal_parameter)
+    <9b9>   DW_AT_name        : pfn
+    <9bd>   DW_AT_decl_file   : 2
+    <9be>   DW_AT_decl_line   : 80
+    <9bf>   DW_AT_type        : <0x9cc>
+    <9c3>   DW_AT_location    : 2 byte block: 91 68    (DW_OP_fbreg: -24)
+ <2><9c6>: Abbrev Number: 0
+ <1><9c7>: Abbrev Number: 9 (DW_TAG_subroutine_type)
+    <9c8>   DW_AT_type        : <0x8b7>
+ <1><9cc>: Abbrev Number: 8 (DW_TAG_pointer_type)
+    <9cd>   DW_AT_byte_size   : 8
+    <9ce>   DW_AT_type        : <0x9c7>
+ <1><9d2>: Abbrev Number: 24 (DW_TAG_subprogram)
+    <9d3>   DW_AT_specification: <0x8e0>
+    <9d7>   DW_AT_decl_file   : 2
+    <9d8>   DW_AT_decl_line   : 88
+    <9d9>   DW_AT_low_pc      : (addr_index: 0x5): <no .debug_addr section>
+    <9da>   DW_AT_high_pc     : 0xf
+    <9e2>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <9e4>   DW_AT_object_pointer: <0x9ec>
+    <9e8>   DW_AT_GNU_all_call_sites: 1
+    <9e8>   DW_AT_sibling     : <0x9fa>
+ <2><9ec>: Abbrev Number: 18 (DW_TAG_formal_parameter)
+    <9ed>   DW_AT_name        : this
+    <9f2>   DW_AT_type        : <0x9fa>
+    <9f6>   DW_AT_artificial  : 1
+    <9f6>   DW_AT_location    : 2 byte block: 91 68    (DW_OP_fbreg: -24)
+ <2><9f9>: Abbrev Number: 0
+ <1><9fa>: Abbrev Number: 19 (DW_TAG_const_type)
+    <9fb>   DW_AT_type        : <0x8ed>
+ <1><9ff>: Abbrev Number: 25 (DW_TAG_subroutine_type)
+ <1><a00>: Abbrev Number: 21 (DW_TAG_subprogram)
+    <a01>   DW_AT_external    : 1
+    <a01>   DW_AT_name        : f13
+    <a05>   DW_AT_decl_file   : 2
+    <a06>   DW_AT_decl_line   : 96
+    <a07>   DW_AT_linkage_name: _Z3f13v
+    <a0f>   DW_AT_type        : <0xa1e>
+    <a13>   DW_AT_low_pc      : (addr_index: 0x6): <no .debug_addr section>
+    <a14>   DW_AT_high_pc     : 0xb
+    <a1c>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <a1e>   DW_AT_GNU_all_call_sites: 1
+ <1><a1e>: Abbrev Number: 8 (DW_TAG_pointer_type)
+    <a1f>   DW_AT_byte_size   : 8
+    <a20>   DW_AT_type        : <0x9ff>
+ <1><a24>: Abbrev Number: 21 (DW_TAG_subprogram)
+    <a25>   DW_AT_external    : 1
+    <a25>   DW_AT_name        : f14
+    <a29>   DW_AT_decl_file   : 2
+    <a2a>   DW_AT_decl_line   : 104
+    <a2b>   DW_AT_linkage_name: _Z3f14v
+    <a33>   DW_AT_type        : <0xa42>
+    <a37>   DW_AT_low_pc      : (addr_index: 0x7): <no .debug_addr section>
+    <a38>   DW_AT_high_pc     : 0xb
+    <a40>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <a42>   DW_AT_GNU_all_call_sites: 1
+ <1><a42>: Abbrev Number: 8 (DW_TAG_pointer_type)
+    <a43>   DW_AT_byte_size   : 8
+    <a44>   DW_AT_type        : <0xa48>
+ <1><a48>: Abbrev Number: 19 (DW_TAG_const_type)
+    <a49>   DW_AT_type        : <0xa4d>
+ <1><a4d>: Abbrev Number: 7 (DW_TAG_base_type)
+    <a4e>   DW_AT_byte_size   : 1
+    <a4f>   DW_AT_encoding    : 6      (signed char)
+    <a50>   DW_AT_name        : char
+ <1><a55>: Abbrev Number: 21 (DW_TAG_subprogram)
+    <a56>   DW_AT_external    : 1
+    <a56>   DW_AT_name        : f15
+    <a5a>   DW_AT_decl_file   : 2
+    <a5b>   DW_AT_decl_line   : 112
+    <a5c>   DW_AT_linkage_name: _Z3f15v
+    <a64>   DW_AT_type        : <0xa73>
+    <a68>   DW_AT_low_pc      : (addr_index: 0x8): <no .debug_addr section>
+    <a69>   DW_AT_high_pc     : 0xb
+    <a71>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <a73>   DW_AT_GNU_all_call_sites: 1
+ <1><a73>: Abbrev Number: 8 (DW_TAG_pointer_type)
+    <a74>   DW_AT_byte_size   : 8
+    <a75>   DW_AT_type        : <0xa79>
+ <1><a79>: Abbrev Number: 19 (DW_TAG_const_type)
+    <a7a>   DW_AT_type        : <0xa7e>
+ <1><a7e>: Abbrev Number: 7 (DW_TAG_base_type)
+    <a7f>   DW_AT_byte_size   : 4
+    <a80>   DW_AT_encoding    : 5      (signed)
+    <a81>   DW_AT_name        : wchar_t
+ <1><a89>: Abbrev Number: 26 (DW_TAG_subprogram)
+    <a8a>   DW_AT_external    : 1
+    <a8a>   DW_AT_name        : f18
+    <a8e>   DW_AT_decl_file   : 2
+    <a8f>   DW_AT_decl_line   : 127
+    <a90>   DW_AT_linkage_name: _Z3f18i
+    <a98>   DW_AT_type        : <0xa42>
+    <a9c>   DW_AT_low_pc      : (addr_index: 0x9): <no .debug_addr section>
+    <a9d>   DW_AT_high_pc     : 0x44
+    <aa5>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
+    <aa7>   DW_AT_GNU_all_call_sites: 1
+    <aa7>   DW_AT_sibling     : <0xab8>
+ <2><aab>: Abbrev Number: 23 (DW_TAG_formal_parameter)
+    <aac>   DW_AT_name        : i
+    <aae>   DW_AT_decl_file   : 2
+    <aaf>   DW_AT_decl_line   : 127
+    <ab0>   DW_AT_type        : <0x8b7>
+    <ab4>   DW_AT_location    : 2 byte block: 91 6c    (DW_OP_fbreg: -20)
+ <2><ab7>: Abbrev Number: 0
+ <1><ab8>: Abbrev Number: 27 (DW_TAG_variable)
+    <ab9>   DW_AT_name        : v2
+    <abc>   DW_AT_decl_file   : 2
+    <abd>   DW_AT_decl_line   : 43
+    <abe>   DW_AT_type        : <0x8b7>
+    <ac2>   DW_AT_external    : 1
+    <ac2>   DW_AT_location    : 2 byte block: fb a     (DW_OP_GNU_addr_index <0xa>)
+ <1><ac5>: Abbrev Number: 27 (DW_TAG_variable)
+    <ac6>   DW_AT_name        : v3
+    <ac9>   DW_AT_decl_file   : 2
+    <aca>   DW_AT_decl_line   : 48
+    <acb>   DW_AT_type        : <0x8b7>
+    <acf>   DW_AT_external    : 1
+    <acf>   DW_AT_location    : 2 byte block: fb b     (DW_OP_GNU_addr_index <0xb>)
+ <1><ad2>: Abbrev Number: 28 (DW_TAG_array_type)
+    <ad3>   DW_AT_type        : <0xa4d>
+    <ad7>   DW_AT_sibling     : <0xae2>
+ <2><adb>: Abbrev Number: 29 (DW_TAG_subrange_type)
+    <adc>   DW_AT_type        : <0xae2>
+    <ae0>   DW_AT_upper_bound : 12
+ <2><ae1>: Abbrev Number: 0
+ <1><ae2>: Abbrev Number: 7 (DW_TAG_base_type)
+    <ae3>   DW_AT_byte_size   : 8
+    <ae4>   DW_AT_encoding    : 7      (unsigned)
+    <ae5>   DW_AT_name        : sizetype
+ <1><aee>: Abbrev Number: 27 (DW_TAG_variable)
+    <aef>   DW_AT_name        : v4
+    <af2>   DW_AT_decl_file   : 2
+    <af3>   DW_AT_decl_line   : 52
+    <af4>   DW_AT_type        : <0xad2>
+    <af8>   DW_AT_external    : 1
+    <af8>   DW_AT_location    : 2 byte block: fb c     (DW_OP_GNU_addr_index <0xc>)
+ <1><afb>: Abbrev Number: 27 (DW_TAG_variable)
+    <afc>   DW_AT_name        : v5
+    <aff>   DW_AT_decl_file   : 2
+    <b00>   DW_AT_decl_line   : 57
+    <b01>   DW_AT_type        : <0xad2>
+    <b05>   DW_AT_external    : 1
+    <b05>   DW_AT_location    : 2 byte block: fb d     (DW_OP_GNU_addr_index <0xd>)
+ <1><b08>: Abbrev Number: 28 (DW_TAG_array_type)
+    <b09>   DW_AT_type        : <0xa42>
+    <b0d>   DW_AT_sibling     : <0xb18>
+ <2><b11>: Abbrev Number: 29 (DW_TAG_subrange_type)
+    <b12>   DW_AT_type        : <0xae2>
+    <b16>   DW_AT_upper_bound : 4
+ <2><b17>: Abbrev Number: 0
+ <1><b18>: Abbrev Number: 27 (DW_TAG_variable)
+    <b19>   DW_AT_name        : t17data
+    <b21>   DW_AT_decl_file   : 2
+    <b22>   DW_AT_decl_line   : 119
+    <b23>   DW_AT_type        : <0xb08>
+    <b27>   DW_AT_external    : 1
+    <b27>   DW_AT_location    : 2 byte block: fb e     (DW_OP_GNU_addr_index <0xe>)
+ <1><b2a>: Abbrev Number: 0
+
+Contents of the .debug_types.dwo section:
+
+  Compilation Unit @ offset 0x0:
+   Length:        0xf7 (32-bit)
+   Version:       4
+   Abbrev Offset: 0x0
+   Pointer Size:  8
+   Signature:     0xb534bdc1f01629bb
+   Type Offset:   0x25
+   Section contributions:
+    .debug_abbrev.dwo:       0x0  0x154
+    .debug_line.dwo:         0x0  0x40
+    .debug_loc.dwo:          0x0  0x0
+    .debug_str_offsets.dwo:  0x0  0x14
+ <0><17>: Abbrev Number: 1 (DW_TAG_type_unit)
+    <18>   DW_AT_language    : 4       (C++)
+    <19>   DW_AT_GNU_odr_signature: 0x880a5c4d6e59da8a
+    <21>   DW_AT_stmt_list   : 0x0
+ <1><25>: Abbrev Number: 2 (DW_TAG_class_type)
+    <26>   DW_AT_name        : C3
+    <29>   DW_AT_byte_size   : 4
+    <2a>   DW_AT_decl_file   : 2
+    <2b>   DW_AT_decl_line   : 47
+    <2c>   DW_AT_sibling     : <0xda>
+ <2><30>: Abbrev Number: 3 (DW_TAG_member)
+    <31>   DW_AT_name        : (indexed string: 0x3): member1
+    <32>   DW_AT_decl_file   : 2
+    <33>   DW_AT_decl_line   : 54
+    <34>   DW_AT_type        : <0xda>
+    <38>   DW_AT_data_member_location: 0
+    <39>   DW_AT_accessibility: 1      (public)
+ <2><3a>: Abbrev Number: 4 (DW_TAG_subprogram)
+    <3b>   DW_AT_external    : 1
+    <3b>   DW_AT_name        : (indexed string: 0x0): testcase1
+    <3c>   DW_AT_decl_file   : 2
+    <3d>   DW_AT_decl_line   : 50
+    <3e>   DW_AT_linkage_name: _ZN2C39testcase1Ev
+    <51>   DW_AT_type        : <0xe1>
+    <55>   DW_AT_accessibility: 1      (public)
+    <56>   DW_AT_declaration : 1
+    <56>   DW_AT_object_pointer: <0x5e>
+    <5a>   DW_AT_sibling     : <0x64>
+ <3><5e>: Abbrev Number: 5 (DW_TAG_formal_parameter)
+    <5f>   DW_AT_type        : <0xe9>
+    <63>   DW_AT_artificial  : 1
+ <3><63>: Abbrev Number: 0
+ <2><64>: Abbrev Number: 4 (DW_TAG_subprogram)
+    <65>   DW_AT_external    : 1
+    <65>   DW_AT_name        : (indexed string: 0x1): testcase2
+    <66>   DW_AT_decl_file   : 2
+    <67>   DW_AT_decl_line   : 51
+    <68>   DW_AT_linkage_name: _ZN2C39testcase2Ev
+    <7b>   DW_AT_type        : <0xe1>
+    <7f>   DW_AT_accessibility: 1      (public)
+    <80>   DW_AT_declaration : 1
+    <80>   DW_AT_object_pointer: <0x88>
+    <84>   DW_AT_sibling     : <0x8e>
+ <3><88>: Abbrev Number: 5 (DW_TAG_formal_parameter)
+    <89>   DW_AT_type        : <0xe9>
+    <8d>   DW_AT_artificial  : 1
+ <3><8d>: Abbrev Number: 0
+ <2><8e>: Abbrev Number: 4 (DW_TAG_subprogram)
+    <8f>   DW_AT_external    : 1
+    <8f>   DW_AT_name        : (indexed string: 0x2): testcase3
+    <90>   DW_AT_decl_file   : 2
+    <91>   DW_AT_decl_line   : 52
+    <92>   DW_AT_linkage_name: _ZN2C39testcase3Ev
+    <a5>   DW_AT_type        : <0xe1>
+    <a9>   DW_AT_accessibility: 1      (public)
+    <aa>   DW_AT_declaration : 1
+    <aa>   DW_AT_object_pointer: <0xb2>
+    <ae>   DW_AT_sibling     : <0xb8>
+ <3><b2>: Abbrev Number: 5 (DW_TAG_formal_parameter)
+    <b3>   DW_AT_type        : <0xe9>
+    <b7>   DW_AT_artificial  : 1
+ <3><b7>: Abbrev Number: 0
+ <2><b8>: Abbrev Number: 6 (DW_TAG_subprogram)
+    <b9>   DW_AT_external    : 1
+    <b9>   DW_AT_name        : f4
+    <bc>   DW_AT_decl_file   : 2
+    <bd>   DW_AT_decl_line   : 53
+    <be>   DW_AT_linkage_name: _ZN2C32f4Ev
+    <ca>   DW_AT_type        : <0xef>
+    <ce>   DW_AT_accessibility: 1      (public)
+    <cf>   DW_AT_declaration : 1
+    <cf>   DW_AT_object_pointer: <0xd3>
+ <3><d3>: Abbrev Number: 5 (DW_TAG_formal_parameter)
+    <d4>   DW_AT_type        : <0xe9>
+    <d8>   DW_AT_artificial  : 1
+ <3><d8>: Abbrev Number: 0
+ <2><d9>: Abbrev Number: 0
+ <1><da>: Abbrev Number: 7 (DW_TAG_base_type)
+    <db>   DW_AT_byte_size   : 4
+    <dc>   DW_AT_encoding    : 5       (signed)
+    <dd>   DW_AT_name        : int
+ <1><e1>: Abbrev Number: 7 (DW_TAG_base_type)
+    <e2>   DW_AT_byte_size   : 1
+    <e3>   DW_AT_encoding    : 2       (boolean)
+    <e4>   DW_AT_name        : bool
+ <1><e9>: Abbrev Number: 8 (DW_TAG_pointer_type)
+    <ea>   DW_AT_byte_size   : 8
+    <eb>   DW_AT_type        : <0x25>
+ <1><ef>: Abbrev Number: 8 (DW_TAG_pointer_type)
+    <f0>   DW_AT_byte_size   : 8
+    <f1>   DW_AT_type        : <0xf5>
+ <1><f5>: Abbrev Number: 9 (DW_TAG_subroutine_type)
+    <f6>   DW_AT_type        : <0xe1>
+ <1><fa>: Abbrev Number: 0
+  Compilation Unit @ offset 0xfb:
+   Length:        0xf1 (32-bit)
+   Version:       4
+   Abbrev Offset: 0x0
+   Pointer Size:  8
+   Signature:     0xab98c7bc886f5266
+   Type Offset:   0x25
+   Section contributions:
+    .debug_abbrev.dwo:       0x0  0x154
+    .debug_line.dwo:         0x0  0x40
+    .debug_loc.dwo:          0x0  0x0
+    .debug_str_offsets.dwo:  0x0  0x14
+ <0><112>: Abbrev Number: 1 (DW_TAG_type_unit)
+    <113>   DW_AT_language    : 4      (C++)
+    <114>   DW_AT_GNU_odr_signature: 0xae4af0d8bfcef94b
+    <11c>   DW_AT_stmt_list   : 0x0
+ <1><120>: Abbrev Number: 2 (DW_TAG_class_type)
+    <121>   DW_AT_name        : C2
+    <124>   DW_AT_byte_size   : 4
+    <125>   DW_AT_decl_file   : 2
+    <126>   DW_AT_decl_line   : 37
+    <127>   DW_AT_sibling     : <0x1da>
+ <2><12b>: Abbrev Number: 3 (DW_TAG_member)
+    <12c>   DW_AT_name        : (indexed string: 0x3): member1
+    <12d>   DW_AT_decl_file   : 2
+    <12e>   DW_AT_decl_line   : 44
+    <12f>   DW_AT_type        : <0x1da>
+    <133>   DW_AT_data_member_location: 0
+    <134>   DW_AT_accessibility: 1     (public)
+ <2><135>: Abbrev Number: 4 (DW_TAG_subprogram)
+    <136>   DW_AT_external    : 1
+    <136>   DW_AT_name        : (indexed string: 0x0): testcase1
+    <137>   DW_AT_decl_file   : 2
+    <138>   DW_AT_decl_line   : 40
+    <139>   DW_AT_linkage_name: _ZN2C29testcase1Ev
+    <14c>   DW_AT_type        : <0x1e1>
+    <150>   DW_AT_accessibility: 1     (public)
+    <151>   DW_AT_declaration : 1
+    <151>   DW_AT_object_pointer: <0x159>
+    <155>   DW_AT_sibling     : <0x15f>
+ <3><159>: Abbrev Number: 5 (DW_TAG_formal_parameter)
+    <15a>   DW_AT_type        : <0x1e9>
+    <15e>   DW_AT_artificial  : 1
+ <3><15e>: Abbrev Number: 0
+ <2><15f>: Abbrev Number: 4 (DW_TAG_subprogram)
+    <160>   DW_AT_external    : 1
+    <160>   DW_AT_name        : (indexed string: 0x1): testcase2
+    <161>   DW_AT_decl_file   : 2
+    <162>   DW_AT_decl_line   : 41
+    <163>   DW_AT_linkage_name: _ZN2C29testcase2Ev
+    <176>   DW_AT_type        : <0x1e1>
+    <17a>   DW_AT_accessibility: 1     (public)
+    <17b>   DW_AT_declaration : 1
+    <17b>   DW_AT_object_pointer: <0x183>
+    <17f>   DW_AT_sibling     : <0x189>
+ <3><183>: Abbrev Number: 5 (DW_TAG_formal_parameter)
+    <184>   DW_AT_type        : <0x1e9>
+    <188>   DW_AT_artificial  : 1
+ <3><188>: Abbrev Number: 0
+ <2><189>: Abbrev Number: 4 (DW_TAG_subprogram)
+    <18a>   DW_AT_external    : 1
+    <18a>   DW_AT_name        : (indexed string: 0x2): testcase3
+    <18b>   DW_AT_decl_file   : 2
+    <18c>   DW_AT_decl_line   : 42
+    <18d>   DW_AT_linkage_name: _ZN2C29testcase3Ev
+    <1a0>   DW_AT_type        : <0x1e1>
+    <1a4>   DW_AT_accessibility: 1     (public)
+    <1a5>   DW_AT_declaration : 1
+    <1a5>   DW_AT_object_pointer: <0x1ad>
+    <1a9>   DW_AT_sibling     : <0x1b3>
+ <3><1ad>: Abbrev Number: 5 (DW_TAG_formal_parameter)
+    <1ae>   DW_AT_type        : <0x1e9>
+    <1b2>   DW_AT_artificial  : 1
+ <3><1b2>: Abbrev Number: 0
+ <2><1b3>: Abbrev Number: 10 (DW_TAG_subprogram)
+    <1b4>   DW_AT_external    : 1
+    <1b4>   DW_AT_name        : (indexed string: 0x4): testcase4
+    <1b5>   DW_AT_decl_file   : 2
+    <1b6>   DW_AT_decl_line   : 43
+    <1b7>   DW_AT_linkage_name: _ZN2C29testcase4Ev
+    <1ca>   DW_AT_type        : <0x1e1>
+    <1ce>   DW_AT_accessibility: 1     (public)
+    <1cf>   DW_AT_declaration : 1
+    <1cf>   DW_AT_object_pointer: <0x1d3>
+ <3><1d3>: Abbrev Number: 5 (DW_TAG_formal_parameter)
+    <1d4>   DW_AT_type        : <0x1e9>
+    <1d8>   DW_AT_artificial  : 1
+ <3><1d8>: Abbrev Number: 0
+ <2><1d9>: Abbrev Number: 0
+ <1><1da>: Abbrev Number: 7 (DW_TAG_base_type)
+    <1db>   DW_AT_byte_size   : 4
+    <1dc>   DW_AT_encoding    : 5      (signed)
+    <1dd>   DW_AT_name        : int
+ <1><1e1>: Abbrev Number: 7 (DW_TAG_base_type)
+    <1e2>   DW_AT_byte_size   : 1
+    <1e3>   DW_AT_encoding    : 2      (boolean)
+    <1e4>   DW_AT_name        : bool
+ <1><1e9>: Abbrev Number: 8 (DW_TAG_pointer_type)
+    <1ea>   DW_AT_byte_size   : 8
+    <1eb>   DW_AT_type        : <0x120>
+ <1><1ef>: Abbrev Number: 0
+  Compilation Unit @ offset 0x1f0:
+   Length:        0x141 (32-bit)
+   Version:       4
+   Abbrev Offset: 0x0
+   Pointer Size:  8
+   Signature:     0xb5faa2a4b7a919c4
+   Type Offset:   0x25
+   Section contributions:
+    .debug_abbrev.dwo:       0x0  0x154
+    .debug_line.dwo:         0x0  0x40
+    .debug_loc.dwo:          0x0  0x0
+    .debug_str_offsets.dwo:  0x0  0x14
+ <0><207>: Abbrev Number: 1 (DW_TAG_type_unit)
+    <208>   DW_AT_language    : 4      (C++)
+    <209>   DW_AT_GNU_odr_signature: 0xc7fbeb753b05ade3
+    <211>   DW_AT_stmt_list   : 0x0
+ <1><215>: Abbrev Number: 2 (DW_TAG_class_type)
+    <216>   DW_AT_name        : C1
+    <219>   DW_AT_byte_size   : 4
+    <21a>   DW_AT_decl_file   : 2
+    <21b>   DW_AT_decl_line   : 25
+    <21c>   DW_AT_sibling     : <0x31f>
+ <2><220>: Abbrev Number: 3 (DW_TAG_member)
+    <221>   DW_AT_name        : (indexed string: 0x3): member1
+    <222>   DW_AT_decl_file   : 2
+    <223>   DW_AT_decl_line   : 34
+    <224>   DW_AT_type        : <0x31f>
+    <228>   DW_AT_data_member_location: 0
+    <229>   DW_AT_accessibility: 1     (public)
+ <2><22a>: Abbrev Number: 4 (DW_TAG_subprogram)
+    <22b>   DW_AT_external    : 1
+    <22b>   DW_AT_name        : (indexed string: 0x0): testcase1
+    <22c>   DW_AT_decl_file   : 2
+    <22d>   DW_AT_decl_line   : 28
+    <22e>   DW_AT_linkage_name: _ZN2C19testcase1Ev
+    <241>   DW_AT_type        : <0x326>
+    <245>   DW_AT_accessibility: 1     (public)
+    <246>   DW_AT_declaration : 1
+    <246>   DW_AT_object_pointer: <0x24e>
+    <24a>   DW_AT_sibling     : <0x254>
+ <3><24e>: Abbrev Number: 5 (DW_TAG_formal_parameter)
+    <24f>   DW_AT_type        : <0x32e>
+    <253>   DW_AT_artificial  : 1
+ <3><253>: Abbrev Number: 0
+ <2><254>: Abbrev Number: 11 (DW_TAG_subprogram)
+    <255>   DW_AT_external    : 1
+    <255>   DW_AT_name        : t1a
+    <259>   DW_AT_decl_file   : 2
+    <25a>   DW_AT_decl_line   : 29
+    <25b>   DW_AT_linkage_name: _ZN2C13t1aEv
+    <268>   DW_AT_type        : <0x326>
+    <26c>   DW_AT_accessibility: 1     (public)
+    <26d>   DW_AT_declaration : 1
+    <26d>   DW_AT_object_pointer: <0x275>
+    <271>   DW_AT_sibling     : <0x27b>
+ <3><275>: Abbrev Number: 5 (DW_TAG_formal_parameter)
+    <276>   DW_AT_type        : <0x32e>
+    <27a>   DW_AT_artificial  : 1
+ <3><27a>: Abbrev Number: 0
+ <2><27b>: Abbrev Number: 11 (DW_TAG_subprogram)
+    <27c>   DW_AT_external    : 1
+    <27c>   DW_AT_name        : t1_2
+    <281>   DW_AT_decl_file   : 2
+    <282>   DW_AT_decl_line   : 30
+    <283>   DW_AT_linkage_name: _ZN2C14t1_2Ev
+    <291>   DW_AT_type        : <0x31f>
+    <295>   DW_AT_accessibility: 1     (public)
+    <296>   DW_AT_declaration : 1
+    <296>   DW_AT_object_pointer: <0x29e>
+    <29a>   DW_AT_sibling     : <0x2a4>
+ <3><29e>: Abbrev Number: 5 (DW_TAG_formal_parameter)
+    <29f>   DW_AT_type        : <0x32e>
+    <2a3>   DW_AT_artificial  : 1
+ <3><2a3>: Abbrev Number: 0
+ <2><2a4>: Abbrev Number: 4 (DW_TAG_subprogram)
+    <2a5>   DW_AT_external    : 1
+    <2a5>   DW_AT_name        : (indexed string: 0x1): testcase2
+    <2a6>   DW_AT_decl_file   : 2
+    <2a7>   DW_AT_decl_line   : 31
+    <2a8>   DW_AT_linkage_name: _ZN2C19testcase2Ev
+    <2bb>   DW_AT_type        : <0x326>
+    <2bf>   DW_AT_accessibility: 1     (public)
+    <2c0>   DW_AT_declaration : 1
+    <2c0>   DW_AT_object_pointer: <0x2c8>
+    <2c4>   DW_AT_sibling     : <0x2ce>
+ <3><2c8>: Abbrev Number: 5 (DW_TAG_formal_parameter)
+    <2c9>   DW_AT_type        : <0x32e>
+    <2cd>   DW_AT_artificial  : 1
+ <3><2cd>: Abbrev Number: 0
+ <2><2ce>: Abbrev Number: 4 (DW_TAG_subprogram)
+    <2cf>   DW_AT_external    : 1
+    <2cf>   DW_AT_name        : (indexed string: 0x2): testcase3
+    <2d0>   DW_AT_decl_file   : 2
+    <2d1>   DW_AT_decl_line   : 32
+    <2d2>   DW_AT_linkage_name: _ZN2C19testcase3Ev
+    <2e5>   DW_AT_type        : <0x326>
+    <2e9>   DW_AT_accessibility: 1     (public)
+    <2ea>   DW_AT_declaration : 1
+    <2ea>   DW_AT_object_pointer: <0x2f2>
+    <2ee>   DW_AT_sibling     : <0x2f8>
+ <3><2f2>: Abbrev Number: 5 (DW_TAG_formal_parameter)
+    <2f3>   DW_AT_type        : <0x32e>
+    <2f7>   DW_AT_artificial  : 1
+ <3><2f7>: Abbrev Number: 0
+ <2><2f8>: Abbrev Number: 10 (DW_TAG_subprogram)
+    <2f9>   DW_AT_external    : 1
+    <2f9>   DW_AT_name        : (indexed string: 0x4): testcase4
+    <2fa>   DW_AT_decl_file   : 2
+    <2fb>   DW_AT_decl_line   : 33
+    <2fc>   DW_AT_linkage_name: _ZN2C19testcase4Ev
+    <30f>   DW_AT_type        : <0x326>
+    <313>   DW_AT_accessibility: 1     (public)
+    <314>   DW_AT_declaration : 1
+    <314>   DW_AT_object_pointer: <0x318>
+ <3><318>: Abbrev Number: 5 (DW_TAG_formal_parameter)
+    <319>   DW_AT_type        : <0x32e>
+    <31d>   DW_AT_artificial  : 1
+ <3><31d>: Abbrev Number: 0
+ <2><31e>: Abbrev Number: 0
+ <1><31f>: Abbrev Number: 7 (DW_TAG_base_type)
+    <320>   DW_AT_byte_size   : 4
+    <321>   DW_AT_encoding    : 5      (signed)
+    <322>   DW_AT_name        : int
+ <1><326>: Abbrev Number: 7 (DW_TAG_base_type)
+    <327>   DW_AT_byte_size   : 1
+    <328>   DW_AT_encoding    : 2      (boolean)
+    <329>   DW_AT_name        : bool
+ <1><32e>: Abbrev Number: 8 (DW_TAG_pointer_type)
+    <32f>   DW_AT_byte_size   : 8
+    <330>   DW_AT_type        : <0x215>
+ <1><334>: Abbrev Number: 0
+
index 7bd49ab619dfbf86e4ed3be8fda28e97556ff205..5f02ed35ade74b28b446234c29d146d049cd8693 100644 (file)
@@ -27,3 +27,34 @@ foreach t $test_list {
     verbose [file rootname $t]
     run_dump_test [file rootname $t]
 }
+
+set t $srcdir/$subdir/pr26808.dwp.bz2
+# We need to strip the ".bz2", but can leave the dirname.
+set test $subdir/[file tail $t]
+set testname [file rootname $test]
+verbose $testname
+if {[catch "system \"bzip2 -dc $t > $tempfile\""] != 0} {
+  untested "bzip2 -dc ($testname)"
+} else {
+    send_log "$READELF -wi $tempfile > tmpdir/pr26808.out 2> /dev/null\n"
+    verbose "$READELF -wi $tempfile > tmpdir/pr26808.out 2> /dev/null" 1
+    set got [catch "system \"$READELF -wi $tempfile > tmpdir/pr26808.out 2> /dev/null\""]
+
+    if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]]} then {
+       fail $testname
+    } else {
+       send_log "cmp tmpdir/pr26808.out $srcdir/$subdir/pr26808.dump\n"
+       verbose "cmp tmpdir/pr26808.out $srcdir/$subdir/pr26808.dump" 1
+       set status [remote_exec build cmp "tmpdir/pr26808.out $srcdir/$subdir/pr26808.dump"]
+       set exec_output [lindex $status 1]
+       set exec_output [prune_warnings $exec_output]
+
+       if [string match "" $exec_output] then {
+           pass "readelf -wi ($testname)"
+       } else {
+           send_log "$exec_output\n"
+           verbose "$exec_output" 1
+           fail "readelf -wi ($testname)"
+       }
+    }
+}
index efb82c5770396a941e0302e732f84cdd604d9b44..fa1d20e5d9ad1c17e293eb9dd3380bbdc292e41c 100644 (file)
@@ -1,3 +1,10 @@
+2020-11-16  Mark Wielaard  <mark@klomp.org>
+
+       Backport from the mainline:
+       2020-09-25  Alan Modra  <amodra@gmail.com>
+
+       * dwarf.h (DW_FIRST_UT, DW_UT, DW_END_UT): Define.
+
 2020-07-04  Nick Clifton  <nickc@redhat.com>
 
        Binutils 2.35 branch created.
index 1221f37f8a60f18fb23a718e430d7e16867000bb..d5e06d4d7d30a19b9de283de79b830137b4b6aca 100644 (file)
@@ -81,6 +81,11 @@ namespace elfcpp
 #define DW_IDX_DUP(name, value) , name = value
 #define DW_END_IDX };
 
+#define DW_FIRST_UT(name, value) enum dwarf_unit_type { \
+  name = value
+#define DW_UT(name, value) , name = value
+#define DW_END_UT };
+
 #include "dwarf2.def"
 
 #undef DW_FIRST_TAG
@@ -117,6 +122,10 @@ namespace elfcpp
 #undef DW_IDX_DUP
 #undef DW_END_IDX
 
+#undef DW_FIRST_UT
+#undef DW_UT
+#undef DW_END_UT
+
 // Frame unwind information.
 
 enum DW_EH_PE
index 26c703531d93001dde48e6e953374dff166cd186..3ac2f7b72e27018d6766489f0bc384ea65fd14bf 100644 (file)
@@ -1,3 +1,171 @@
+2020-11-15  Mark Wielaard  <mark@klomp.org>
+
+       Backport from the mainline:
+       2020-10-16  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR gas/25878
+       PR gas/26740
+       * dwarf2dbg.c (file_entry): Remove auto_assigned.
+       (assign_file_to_slot): Remove the auto_assign argument.
+       (allocate_filenum): Updated.
+       (allocate_filename_to_slot): Reuse the input file entry in the
+       file table.
+       (dwarf2_where): Replace as_where with as_where_physical.
+       * testsuite/gas/i386/dwarf5-line-1.d: New file.
+       * testsuite/gas/i386/dwarf5-line-1.s: Likewise.
+       * testsuite/gas/i386/i386.exp: Run dwarf5-line-1.
+
+       2020-10-17  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR gas/25878
+       PR gas/26740
+       * dwarf2dbg.c (allocate_filename_to_slot): Don't reuse the slot 1
+       here.
+       (dwarf2_where): Restore as_where.
+       (dwarf2_directive_filename): Clear the slot 1 if it was assigned
+       to the input file.
+       * testsuite/gas/i386/dwarf5-line-2.d: New file.
+       * testsuite/gas/i386/dwarf5-line-2.s: Likewise.
+       * testsuite/gas/i386/dwarf5-line-3.d: Likewise.
+       * testsuite/gas/i386/dwarf5-line-3.s: Likewise.
+       * testsuite/gas/i386/i386.exp: Run dwarf5-line-2 and
+       dwarf5-line-3.
+
+       2020-10-26  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR gas/26778
+       * * dwarf2dbg.c (num_of_auto_assigned): New.
+       (allocate_filenum): Increment num_of_auto_assigned.
+       (dwarf2_directive_filename): Clear the slots auto-assigned
+       before the first .file <NUMBER> directive was seen.
+       * testsuite/gas/i386/dwarf4-line-1.d: New file.
+       * testsuite/gas/i386/dwarf4-line-1.s: Likewise.
+       * testsuite/gas/i386/i386.exp: Run dwarf4-line-1.
+
+2020-11-15  Mark Wielaard  <mark@klomp.org>
+
+       Backport from the mainline:
+       2020-09-23  Mark Wielaard  <mark@klomp.org>
+
+       * testsuite/gas/elf/dwarf-5-cu.d: Adjust expected output.
+
+2020-11-05  Alex Coplan  <alex.coplan@arm.com>
+
+       * config/tc-aarch64.c (aarch64_cpus): Add neoverse-n2.
+       * doc/c-aarch64.texi: Document support for Neoverse N2.
+
+2020-10-21  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+
+       PR target/26763
+       * config/tc-arm.c (parse_address_main): Add new MVE addressing mode
+       check.
+       * testsuite/gas/arm/mve-vldr-vstr-bad.d: New test.
+       * testsuite/gas/arm/mve-vldr-vstr-bad.l: Likewise.
+       * testsuite/gas/arm/mve-vldr-vstr-bad.s: Likewise.
+
+2020-10-09  Alex Coplan  <alex.coplan@arm.com>
+
+       * config/tc-arm.c (arm_cpus): Add Neoverse N2.
+       * doc/c-arm.texi: Document -mcpu=neoverse-n2.
+
+2020-10-09  Alex Coplan  <alex.coplan@arm.com>
+
+       * config/tc-arm.c (arm_cpus): Add Neoverse V1.
+       * doc/c-arm.texi: Document Neoverse V1 support.
+
+2020-10-07  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR gas/26685
+       * config/tc-i386.c (process_suffix): Also check the register
+       operand for the address size prefix if the memory operand has
+       no real registers.
+       * testsuite/gas/i386/enqcmd-16bit.d: New file.
+       * testsuite/gas/i386/enqcmd-16bit.s: Likewise.
+       * testsuite/gas/i386/movdir-16bit.d: Likewise.
+       * testsuite/gas/i386/movdir-16bit.s: Likewise.
+       * testsuite/gas/i386/enqcmd.s: Add tests with symbol and DISP.
+       * testsuite/gas/i386/x86-64-enqcmd.s: Likewise.
+       * testsuite/gas/i386/x86-64-movdir.s: Likewise.
+       * testsuite/gas/i386/movdir.s: Add tests with symbol and DISP.
+       Remove the .code16 test.
+       * testsuite/gas/i386/i386.exp: Run movdir-16bit and enqcmd-16bit.
+       * testsuite/gas/i386/x86-64-enqcmd-intel.d: Updated.
+       * testsuite/gas/i386/x86-64-enqcmd.d: Likewise.
+       * testsuite/gas/i386/x86-64-movdir-intel.d: Likewise.
+       * testsuite/gas/i386/x86-64-movdir.d: Likewise.
+       * testsuite/gas/i386/enqcmd-intel.d: Likewise.
+       * testsuite/gas/i386/enqcmd.d: Likewise.
+       * testsuite/gas/i386/movdir-intel.d: Likewise.
+       * testsuite/gas/i386/movdir.d: Likewise.
+       * testsuite/gas/i386/x86-64-enqcmd-intel.d: Likewise.
+       * testsuite/gas/i386/x86-64-enqcmd.d: Likewise.
+       * testsuite/gas/i386/x86-64-movdir-intel.d: Likewise.
+       * testsuite/gas/i386/x86-64-movdir.d: Likewise.
+
+2020-10-07  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR gas/26685
+       * config/tc-i386.c (process_suffix): Check the register operand
+       for the address size prefix if the memory operand is symbol(%rip).
+       * testsuite/gas/i386/x86-64-enqcmd.s: Add tests with RIP-relative
+       addressing.
+       * testsuite/gas/i386/x86-64-movdir.s: Likewise.
+       * testsuite/gas/i386/x86-64-enqcmd-intel.d: Updated.
+       * testsuite/gas/i386/x86-64-enqcmd.d: Likewise.
+       * testsuite/gas/i386/x86-64-movdir-intel.d: Likewise.
+       * testsuite/gas/i386/x86-64-movdir.d: Likewise.
+
+2020-10-07  Jan Beulich  <jbeulich@suse.com>
+
+       * testsuite/gas/i386/evex-no-scale-64.d,
+       testsuite/gas/i386/addr32.d,
+       testsuite/gas/i386/x86-64-addr32-intel.d,
+       testsuite/gas/i386/x86-64-addr32.d: Adjust expectations.
+
+2020-10-06  Alex Coplan  <alex.coplan@arm.com>
+
+       PR 26699
+       * config/tc-aarch64.c (asm_barrier_opt): Delete.
+       (parse_barrier): Fix bogus type punning.
+       * testsuite/gas/aarch64/system.d: Update disassembly.
+       * testsuite/gas/aarch64/system.s: Add isb sy test.
+
+2020-10-02  Alex Coplan  <alex.coplan@arm.com>
+
+       * config/tc-aarch64.c (aarch64_cpus): Add Neoverse V1.
+       * doc/c-aarch64.texi: Document Neoverse V1 support.
+
+2020-09-24  Alan Modra  <amodra@gmail.com>
+
+       Apply from master
+       2020-08-19  Alan Modra  <amodra@gmail.com>
+       * testsuite/gas/ppc/int128.s: Correct vcmpuq.
+       * testsuite/gas/ppc/int128.d: Update.
+       * testsuite/gas/ppc/xvtlsbb.d: Update.
+
+       2020-08-10  Alan Modra  <amodra@gmail.com>
+       * testsuite/gas/ppc/power8.d,
+       * testsuite/gas/ppc/power8.s: Add miso.
+       * testsuite/gas/ppc/power9.d,
+       * testsuite/gas/ppc/power8.s: Add exser, msgsndu, msgclru.
+
+       2020-08-10  Alan Modra  <amodra@gmail.com>
+       * testsuite/gas/ppc/power8.d: Update.
+       * testsuite/gas/ppc/vsx2.d: Update.
+
+       2020-08-10  Alan Modra  <amodra@gmail.com>
+       * config/tc-ppc.c (md_assemble): Error for lmw, stmw, lswi, lswx,
+       stswi, or stswx in little-endian mode.
+       * testsuite/gas/ppc/476.d,
+       * testsuite/gas/ppc/476.s: Delete lmw, stmw, lswi, lswx, stswi, stswx.
+       * testsuite/gas/ppc/a2.d,
+       * testsuite/gas/ppc/a2.s: Move lmw, stmw, lswi, lswx, stswi, stswx..
+       * testsuite/gas/ppc/be.d,
+       * testsuite/gas/ppc/be.s: ..to here, new big-endian only test.
+       * testsuite/gas/ppc/le_error.d,
+       * testsuite/gas/ppc/le_error.l: New little-endian test.
+       * testsuite/gas/ppc/ppc.exp: Run new tests.
+
 2020-09-19  Nick Clifton  <nickc@redhat.com>
 
        This is the 2.35.1 point release.
index ecb15d2343740426a4c867a9e1a03a3414fbbc45..12eb13594c928d1c136cc7aa39da6d6f1b9aea5e 100644 (file)
@@ -247,12 +247,6 @@ set_fatal_syntax_error (const char *error)
    present. */
 #define COND_ALWAYS 0x10
 
-typedef struct
-{
-  const char *template;
-  unsigned long value;
-} asm_barrier_opt;
-
 typedef struct
 {
   const char *template;
@@ -3994,7 +3988,7 @@ static int
 parse_barrier (char **str)
 {
   char *p, *q;
-  const asm_barrier_opt *o;
+  const struct aarch64_name_value_pair *o;
 
   p = q = *str;
   while (ISALPHA (*q))
@@ -8936,6 +8930,25 @@ static const struct aarch64_cpu_option_table aarch64_cpus[] = {
                                  | AARCH64_FEATURE_DOTPROD
                                  | AARCH64_FEATURE_PROFILE),
                                  "Neoverse N1"},
+  {"neoverse-n2", AARCH64_FEATURE (AARCH64_ARCH_V8_5,
+                                  AARCH64_FEATURE_BFLOAT16
+                                | AARCH64_FEATURE_I8MM
+                                | AARCH64_FEATURE_F16
+                                | AARCH64_FEATURE_SVE
+                                | AARCH64_FEATURE_SVE2
+                                | AARCH64_FEATURE_SVE2_BITPERM
+                                | AARCH64_FEATURE_MEMTAG
+                                | AARCH64_FEATURE_RNG),
+                                "Neoverse N2"},
+  {"neoverse-v1", AARCH64_FEATURE (AARCH64_ARCH_V8_4,
+                           AARCH64_FEATURE_PROFILE
+                         | AARCH64_FEATURE_CVADP
+                         | AARCH64_FEATURE_SVE
+                         | AARCH64_FEATURE_SSBS
+                         | AARCH64_FEATURE_RNG
+                         | AARCH64_FEATURE_F16
+                         | AARCH64_FEATURE_BFLOAT16
+                         | AARCH64_FEATURE_I8MM), "Neoverse V1"},
   {"qdf24xx", AARCH64_FEATURE (AARCH64_ARCH_V8,
                               AARCH64_FEATURE_CRC | AARCH64_FEATURE_CRYPTO
                               | AARCH64_FEATURE_RDMA),
index e0d0cbd5463afe26a877e6a33e5d6f7684a163f0..b02e9fb1c8fcf2cdfef8a1a0fd5b24422055f4b7 100644 (file)
@@ -5936,7 +5936,15 @@ parse_address_main (char **str, int i, int group_relocations,
 
   if (skip_past_char (&p, '[') == FAIL)
     {
-      if (skip_past_char (&p, '=') == FAIL)
+      if (group_type == GROUP_MVE
+         && (reg = arm_reg_parse (&p, REG_TYPE_RN)) != FAIL)
+       {
+         /* [r0-r15] expected as argument but receiving r0-r15 without
+            [] brackets.  */
+         inst.error = BAD_SYNTAX;
+         return PARSE_OPERAND_FAIL;
+       }
+      else if (skip_past_char (&p, '=') == FAIL)
        {
          /* Bare address - translate to PC-relative offset.  */
          inst.relocs[0].pc_rel = 1;
@@ -26506,14 +26514,14 @@ static const struct asm_opcode insns[] =
 #define ARM_VARIANT  & fpu_vfp_ext_v1
 #undef  THUMB_VARIANT
 #define THUMB_VARIANT  & arm_ext_v6t2
- mnCEF(vmla,     _vmla,    3, (RNSDQMQ, oRNSDQMQ, RNSDQ_RNSC_MQ_RR), neon_mac_maybe_scalar),
- mnCEF(vmul,     _vmul,    3, (RNSDQMQ, oRNSDQMQ, RNSDQ_RNSC_MQ_RR), neon_mul),
 
  mcCE(fcpyd,   eb00b40, 2, (RVD, RVD),       vfp_dp_rd_rm),
 
 #undef  ARM_VARIANT
 #define ARM_VARIANT  & fpu_vfp_ext_v1xd
 
+ mnCEF(vmla,     _vmla,    3, (RNSDQMQ, oRNSDQMQ, RNSDQ_RNSC_MQ_RR), neon_mac_maybe_scalar),
+ mnCEF(vmul,     _vmul,    3, (RNSDQMQ, oRNSDQMQ, RNSDQ_RNSC_MQ_RR), neon_mul),
  MNCE(vmov,   0,       1, (VMOV),            neon_mov),
  mcCE(fmrs,    e100a10, 2, (RR, RVS),        vfp_reg_from_sp),
  mcCE(fmsr,    e000a10, 2, (RVS, RR),        vfp_sp_from_reg),
@@ -31587,6 +31595,16 @@ static const struct arm_cpu_option_table arm_cpus[] =
   ARM_CPU_OPT ("neoverse-n1",    "Neoverse N1",               ARM_ARCH_V8_2A,
               ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST),
               FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_DOTPROD),
+  ARM_CPU_OPT ("neoverse-n2",   "Neoverse N2",        ARM_ARCH_V8_5A,
+              ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST
+                                   | ARM_EXT2_BF16
+                                   | ARM_EXT2_I8MM),
+              FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_4),
+  ARM_CPU_OPT ("neoverse-v1", "Neoverse V1", ARM_ARCH_V8_4A,
+              ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST
+                                   | ARM_EXT2_BF16
+                                   | ARM_EXT2_I8MM),
+              FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_4),
   /* ??? XSCALE is really an architecture.  */
   ARM_CPU_OPT ("xscale",         NULL,                ARM_ARCH_XSCALE,
               ARM_ARCH_NONE,
index 037fe4d18b4b08ce1b4b41256809cdc4b6186fcd..623ac77307e7a89b4a42fc509c791913adbb8e51 100644 (file)
@@ -7115,6 +7115,23 @@ process_suffix (void)
          unsigned int op;
          enum { need_word, need_dword, need_qword } need;
 
+         /* Check the register operand for the address size prefix if
+            the memory operand has no real registers, like symbol, DISP
+            or symbol(%rip).  */
+         if (i.mem_operands == 1
+             && i.reg_operands == 1
+             && i.operands == 2
+             && i.types[1].bitfield.class == Reg
+             && (flag_code == CODE_32BIT
+                 ? i.op[1].regs->reg_type.bitfield.word
+                 : i.op[1].regs->reg_type.bitfield.dword)
+             && ((i.base_reg == NULL && i.index_reg == NULL)
+                 || (i.base_reg
+                     && i.base_reg->reg_num == RegIP
+                     && i.base_reg->reg_type.bitfield.qword))
+             && !add_prefix (ADDR_PREFIX_OPCODE))
+           return 0;
+
          if (flag_code == CODE_32BIT)
            need = i.prefix[ADDR_PREFIX] ? need_word : need_dword;
          else if (i.prefix[ADDR_PREFIX])
index aa989e7d1c2cad6851f7da6e35f7d8f7eb600f07..9719341c5462167523956d2f61e64b2ec0e7f8db 100644 (file)
@@ -3335,6 +3335,15 @@ md_assemble (char *str)
     }
 
   insn = opcode->opcode;
+  if (!target_big_endian
+      && ((insn & ~(1 << 26)) == 46u << 26
+         || (insn & ~(0xc0 << 1)) == (31u << 26 | 533 << 1)))
+    {
+       /* lmw, stmw, lswi, lswx, stswi, stswx */
+      as_bad (_("`%s' invalid when little-endian"), str);
+      ppc_clear_labels ();
+      return;
+    }
 
   str = s;
   while (ISSPACE (*str))
index 86b6efc52bd42a1a4964f3270087ae87316263e1..f5d26695749ac46d150f144acdb3788978ecd18a 100644 (file)
@@ -72,6 +72,8 @@ on the target processor.  The following processor names are recognized:
 @code{exynos-m1},
 @code{falkor},
 @code{neoverse-n1},
+@code{neoverse-n2},
+@code{neoverse-v1},
 @code{neoverse-e1},
 @code{qdf24xx},
 @code{saphira},
index 91803605775418bcc795e163f42b0beaec880967..16c94de675cbfaca076b415753026990f66f4d19 100644 (file)
@@ -151,6 +151,8 @@ recognized:
 @code{marvell-pj4},
 @code{marvell-whitney},
 @code{neoverse-n1},
+@code{neoverse-n2},
+@code{neoverse-v1},
 @code{xgene1},
 @code{xgene2},
 @code{ep9312} (ARM920 with Cirrus Maverick coprocessor),
index 6899a840eff0077cbfd9d7cbda2d305e11addc26..1160cafc13ee4e37ac9f0f216ae9a3f1518d3ea0 100644 (file)
@@ -211,7 +211,6 @@ struct file_entry
 {
   const char *   filename;
   unsigned int   dir;
-  bfd_boolean    auto_assigned;
   unsigned char  md5[NUM_MD5_BYTES];
 };
 
@@ -219,6 +218,7 @@ struct file_entry
 static struct file_entry *files;
 static unsigned int files_in_use;
 static unsigned int files_allocated;
+static unsigned int num_of_auto_assigned;
 
 /* Table of directories used by .debug_line.  */
 static char **       dirs = NULL;
@@ -633,7 +633,7 @@ get_directory_table_entry (const char *  dirname,
 }
 
 static bfd_boolean
-assign_file_to_slot (unsigned long i, const char *file, unsigned int dir, bfd_boolean auto_assign)
+assign_file_to_slot (unsigned long i, const char *file, unsigned int dir)
 {
   if (i >= files_allocated)
     {
@@ -653,7 +653,6 @@ assign_file_to_slot (unsigned long i, const char *file, unsigned int dir, bfd_bo
 
   files[i].filename = file;
   files[i].dir = dir;
-  files[i].auto_assigned = auto_assign;
   memset (files[i].md5, 0, NUM_MD5_BYTES);
 
   if (files_in_use < i + 1)
@@ -717,9 +716,11 @@ allocate_filenum (const char * pathname)
        return i;
       }
 
-  if (!assign_file_to_slot (i, file, dir, TRUE))
+  if (!assign_file_to_slot (i, file, dir))
     return -1;
 
+  num_of_auto_assigned++;
+
   last_used = i;
   last_used_dir_len = dir_len;
 
@@ -792,30 +793,15 @@ allocate_filename_to_slot (const char *  dirname,
        }
 
     fail:
-      /* If NUM was previously allocated automatically then
-        choose another slot for it, so that we can reuse NUM.  */
-      if (files[num].auto_assigned)
-       {
-         /* Find an unused slot.  */
-         for (i = 1; i < files_in_use; ++i)
-           if (files[i].filename == NULL)
-             break;
-         if (! assign_file_to_slot (i, files[num].filename, files[num].dir, TRUE))
-           return FALSE;
-         files[num].filename = NULL;
-       }
-      else
-       {
-         as_bad (_("file table slot %u is already occupied by a different file (%s%s%s vs %s%s%s)"),
-                 num,
-                 dir == NULL ? "" : dir,
-                 dir == NULL ? "" : "/",
-                 files[num].filename,
-                 dirname == NULL ? "" : dirname,
-                 dirname == NULL ? "" : "/",
-                 filename);
-         return FALSE;
-       }
+      as_bad (_("file table slot %u is already occupied by a different file (%s%s%s vs %s%s%s)"),
+             num,
+             dir == NULL ? "" : dir,
+             dir == NULL ? "" : "/",
+             files[num].filename,
+             dirname == NULL ? "" : dirname,
+             dirname == NULL ? "" : "/",
+             filename);
+      return FALSE;
     }
 
   if (dirname == NULL)
@@ -833,7 +819,7 @@ allocate_filename_to_slot (const char *  dirname,
   d = get_directory_table_entry (dirname, dirlen, num == 0);
   i = num;
 
-  if (! assign_file_to_slot (i, file, d, FALSE))
+  if (! assign_file_to_slot (i, file, d))
     return FALSE;
 
   if (with_md5)
@@ -1030,6 +1016,7 @@ dwarf2_directive_filename (void)
   char *filename;
   const char * dirname = NULL;
   int filename_len;
+  unsigned int i;
 
   /* Continue to accept a bare string and pass it off.  */
   SKIP_WHITESPACE ();
@@ -1096,6 +1083,18 @@ dwarf2_directive_filename (void)
       return NULL;
     }
 
+  if (num_of_auto_assigned)
+    {
+      /* Clear slots auto-assigned before the first .file <NUMBER>
+        directive was seen.  */
+      if (files_in_use != (num_of_auto_assigned + 1))
+       abort ();
+      for (i = 1; i < files_in_use; i++)
+       files[i].filename = NULL;
+      files_in_use = 0;
+      num_of_auto_assigned = 0;
+    }
+
   if (! allocate_filename_to_slot (dirname, filename, (unsigned int) num,
                                   with_md5))
     return NULL;
index 20d5c2040942efbb78e758851ecaf95c30091d09..c973584af59e555ed71999eea1401f9ec713a795 100644 (file)
@@ -190,6 +190,7 @@ Disassembly of section \.text:
 .*:    d5033edf        isb     #0xe
 .*:    d5033fdf        isb
 .*:    d5033fdf        isb
+.*:    d5033fdf        isb
 .*:    d503309f        ssbb
 .*:    d503349f        pssbb
 .*:    d8000000        prfm    pldl1keep, 0 <LABEL1>
index 9d86f66806a05c3d0f6108307e78c34c36e7e060..6f494f885a648652d998463c0abf51f17da76b38 100644 (file)
@@ -44,6 +44,7 @@
        all_barriers    op=isb, from=0, to=15
 
        isb
+       isb sy
        ssbb
        pssbb
 
diff --git a/gas/testsuite/gas/arm/mve-vldr-vstr-bad.d b/gas/testsuite/gas/arm/mve-vldr-vstr-bad.d
new file mode 100644 (file)
index 0000000..8989688
--- /dev/null
@@ -0,0 +1,5 @@
+#name: bad MVE VLDR VSTR wrong error message for addressing mode without [].
+#as: -march=armv8.1-m.main+mve.fp -mthumb -mfloat-abi=hard
+#error_output: mve-vldr-vstr-bad.l
+
+.*: +file format .*arm.*
diff --git a/gas/testsuite/gas/arm/mve-vldr-vstr-bad.l b/gas/testsuite/gas/arm/mve-vldr-vstr-bad.l
new file mode 100644 (file)
index 0000000..2df3a37
--- /dev/null
@@ -0,0 +1,811 @@
+[^:]*: Assembler messages:
+[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r0'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r0'
+[^:]*:12: Error: syntax error -- `vstrb.8 q0,r0'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r1'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r1'
+[^:]*:12: Error: syntax error -- `vstrb.8 q0,r1'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r2'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r2'
+[^:]*:12: Error: syntax error -- `vstrb.8 q0,r2'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r4'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r4'
+[^:]*:12: Error: syntax error -- `vstrb.8 q0,r4'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r7'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r7'
+[^:]*:12: Error: syntax error -- `vstrb.8 q0,r7'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r8'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r8'
+[^:]*:12: Error: syntax error -- `vstrb.8 q0,r8'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r10'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r10'
+[^:]*:12: Error: syntax error -- `vstrb.8 q0,r10'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r12'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r12'
+[^:]*:12: Error: syntax error -- `vstrb.8 q0,r12'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q0,r14'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q0,r14'
+[^:]*:12: Error: syntax error -- `vstrb.8 q0,r14'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r0'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r0'
+[^:]*:12: Error: syntax error -- `vstrb.8 q1,r0'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r1'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r1'
+[^:]*:12: Error: syntax error -- `vstrb.8 q1,r1'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r2'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r2'
+[^:]*:12: Error: syntax error -- `vstrb.8 q1,r2'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r4'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r4'
+[^:]*:12: Error: syntax error -- `vstrb.8 q1,r4'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r7'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r7'
+[^:]*:12: Error: syntax error -- `vstrb.8 q1,r7'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r8'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r8'
+[^:]*:12: Error: syntax error -- `vstrb.8 q1,r8'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r10'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r10'
+[^:]*:12: Error: syntax error -- `vstrb.8 q1,r10'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r12'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r12'
+[^:]*:12: Error: syntax error -- `vstrb.8 q1,r12'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q1,r14'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q1,r14'
+[^:]*:12: Error: syntax error -- `vstrb.8 q1,r14'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r0'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r0'
+[^:]*:12: Error: syntax error -- `vstrb.8 q2,r0'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r1'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r1'
+[^:]*:12: Error: syntax error -- `vstrb.8 q2,r1'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r2'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r2'
+[^:]*:12: Error: syntax error -- `vstrb.8 q2,r2'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r4'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r4'
+[^:]*:12: Error: syntax error -- `vstrb.8 q2,r4'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r7'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r7'
+[^:]*:12: Error: syntax error -- `vstrb.8 q2,r7'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r8'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r8'
+[^:]*:12: Error: syntax error -- `vstrb.8 q2,r8'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r10'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r10'
+[^:]*:12: Error: syntax error -- `vstrb.8 q2,r10'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r12'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r12'
+[^:]*:12: Error: syntax error -- `vstrb.8 q2,r12'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q2,r14'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q2,r14'
+[^:]*:12: Error: syntax error -- `vstrb.8 q2,r14'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r0'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r0'
+[^:]*:12: Error: syntax error -- `vstrb.8 q4,r0'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r1'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r1'
+[^:]*:12: Error: syntax error -- `vstrb.8 q4,r1'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r2'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r2'
+[^:]*:12: Error: syntax error -- `vstrb.8 q4,r2'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r4'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r4'
+[^:]*:12: Error: syntax error -- `vstrb.8 q4,r4'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r7'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r7'
+[^:]*:12: Error: syntax error -- `vstrb.8 q4,r7'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r8'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r8'
+[^:]*:12: Error: syntax error -- `vstrb.8 q4,r8'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r10'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r10'
+[^:]*:12: Error: syntax error -- `vstrb.8 q4,r10'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r12'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r12'
+[^:]*:12: Error: syntax error -- `vstrb.8 q4,r12'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q4,r14'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q4,r14'
+[^:]*:12: Error: syntax error -- `vstrb.8 q4,r14'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r0'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r0'
+[^:]*:12: Error: syntax error -- `vstrb.8 q7,r0'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r1'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r1'
+[^:]*:12: Error: syntax error -- `vstrb.8 q7,r1'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r2'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r2'
+[^:]*:12: Error: syntax error -- `vstrb.8 q7,r2'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r4'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r4'
+[^:]*:12: Error: syntax error -- `vstrb.8 q7,r4'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r7'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r7'
+[^:]*:12: Error: syntax error -- `vstrb.8 q7,r7'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r8'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r8'
+[^:]*:12: Error: syntax error -- `vstrb.8 q7,r8'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r10'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r10'
+[^:]*:12: Error: syntax error -- `vstrb.8 q7,r10'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r12'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r12'
+[^:]*:12: Error: syntax error -- `vstrb.8 q7,r12'
+[^:]*:12: Error: syntax error -- `vldrb.s8 q7,r14'
+[^:]*:12: Error: syntax error -- `vldrb.u8 q7,r14'
+[^:]*:12: Error: syntax error -- `vstrb.8 q7,r14'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r0'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r0'
+[^:]*:12: Error: syntax error -- `vstrb.16 q0,r0'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r1'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r1'
+[^:]*:12: Error: syntax error -- `vstrb.16 q0,r1'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r2'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r2'
+[^:]*:12: Error: syntax error -- `vstrb.16 q0,r2'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r4'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r4'
+[^:]*:12: Error: syntax error -- `vstrb.16 q0,r4'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r7'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r7'
+[^:]*:12: Error: syntax error -- `vstrb.16 q0,r7'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r8'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r8'
+[^:]*:12: Error: syntax error -- `vstrb.16 q0,r8'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r10'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r10'
+[^:]*:12: Error: syntax error -- `vstrb.16 q0,r10'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r12'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r12'
+[^:]*:12: Error: syntax error -- `vstrb.16 q0,r12'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q0,r14'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q0,r14'
+[^:]*:12: Error: syntax error -- `vstrb.16 q0,r14'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r0'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r0'
+[^:]*:12: Error: syntax error -- `vstrb.16 q1,r0'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r1'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r1'
+[^:]*:12: Error: syntax error -- `vstrb.16 q1,r1'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r2'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r2'
+[^:]*:12: Error: syntax error -- `vstrb.16 q1,r2'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r4'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r4'
+[^:]*:12: Error: syntax error -- `vstrb.16 q1,r4'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r7'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r7'
+[^:]*:12: Error: syntax error -- `vstrb.16 q1,r7'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r8'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r8'
+[^:]*:12: Error: syntax error -- `vstrb.16 q1,r8'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r10'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r10'
+[^:]*:12: Error: syntax error -- `vstrb.16 q1,r10'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r12'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r12'
+[^:]*:12: Error: syntax error -- `vstrb.16 q1,r12'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q1,r14'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q1,r14'
+[^:]*:12: Error: syntax error -- `vstrb.16 q1,r14'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r0'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r0'
+[^:]*:12: Error: syntax error -- `vstrb.16 q2,r0'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r1'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r1'
+[^:]*:12: Error: syntax error -- `vstrb.16 q2,r1'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r2'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r2'
+[^:]*:12: Error: syntax error -- `vstrb.16 q2,r2'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r4'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r4'
+[^:]*:12: Error: syntax error -- `vstrb.16 q2,r4'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r7'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r7'
+[^:]*:12: Error: syntax error -- `vstrb.16 q2,r7'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r8'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r8'
+[^:]*:12: Error: syntax error -- `vstrb.16 q2,r8'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r10'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r10'
+[^:]*:12: Error: syntax error -- `vstrb.16 q2,r10'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r12'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r12'
+[^:]*:12: Error: syntax error -- `vstrb.16 q2,r12'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q2,r14'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q2,r14'
+[^:]*:12: Error: syntax error -- `vstrb.16 q2,r14'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r0'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r0'
+[^:]*:12: Error: syntax error -- `vstrb.16 q4,r0'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r1'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r1'
+[^:]*:12: Error: syntax error -- `vstrb.16 q4,r1'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r2'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r2'
+[^:]*:12: Error: syntax error -- `vstrb.16 q4,r2'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r4'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r4'
+[^:]*:12: Error: syntax error -- `vstrb.16 q4,r4'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r7'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r7'
+[^:]*:12: Error: syntax error -- `vstrb.16 q4,r7'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r8'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r8'
+[^:]*:12: Error: syntax error -- `vstrb.16 q4,r8'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r10'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r10'
+[^:]*:12: Error: syntax error -- `vstrb.16 q4,r10'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r12'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r12'
+[^:]*:12: Error: syntax error -- `vstrb.16 q4,r12'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q4,r14'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q4,r14'
+[^:]*:12: Error: syntax error -- `vstrb.16 q4,r14'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r0'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r0'
+[^:]*:12: Error: syntax error -- `vstrb.16 q7,r0'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r1'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r1'
+[^:]*:12: Error: syntax error -- `vstrb.16 q7,r1'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r2'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r2'
+[^:]*:12: Error: syntax error -- `vstrb.16 q7,r2'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r4'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r4'
+[^:]*:12: Error: syntax error -- `vstrb.16 q7,r4'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r7'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r7'
+[^:]*:12: Error: syntax error -- `vstrb.16 q7,r7'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r8'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r8'
+[^:]*:12: Error: syntax error -- `vstrb.16 q7,r8'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r10'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r10'
+[^:]*:12: Error: syntax error -- `vstrb.16 q7,r10'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r12'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r12'
+[^:]*:12: Error: syntax error -- `vstrb.16 q7,r12'
+[^:]*:12: Error: syntax error -- `vldrb.s16 q7,r14'
+[^:]*:12: Error: syntax error -- `vldrb.u16 q7,r14'
+[^:]*:12: Error: syntax error -- `vstrb.16 q7,r14'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r0'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r0'
+[^:]*:12: Error: syntax error -- `vstrb.32 q0,r0'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r1'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r1'
+[^:]*:12: Error: syntax error -- `vstrb.32 q0,r1'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r2'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r2'
+[^:]*:12: Error: syntax error -- `vstrb.32 q0,r2'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r4'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r4'
+[^:]*:12: Error: syntax error -- `vstrb.32 q0,r4'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r7'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r7'
+[^:]*:12: Error: syntax error -- `vstrb.32 q0,r7'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r8'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r8'
+[^:]*:12: Error: syntax error -- `vstrb.32 q0,r8'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r10'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r10'
+[^:]*:12: Error: syntax error -- `vstrb.32 q0,r10'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r12'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r12'
+[^:]*:12: Error: syntax error -- `vstrb.32 q0,r12'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q0,r14'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q0,r14'
+[^:]*:12: Error: syntax error -- `vstrb.32 q0,r14'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r0'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r0'
+[^:]*:12: Error: syntax error -- `vstrb.32 q1,r0'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r1'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r1'
+[^:]*:12: Error: syntax error -- `vstrb.32 q1,r1'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r2'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r2'
+[^:]*:12: Error: syntax error -- `vstrb.32 q1,r2'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r4'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r4'
+[^:]*:12: Error: syntax error -- `vstrb.32 q1,r4'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r7'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r7'
+[^:]*:12: Error: syntax error -- `vstrb.32 q1,r7'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r8'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r8'
+[^:]*:12: Error: syntax error -- `vstrb.32 q1,r8'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r10'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r10'
+[^:]*:12: Error: syntax error -- `vstrb.32 q1,r10'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r12'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r12'
+[^:]*:12: Error: syntax error -- `vstrb.32 q1,r12'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q1,r14'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q1,r14'
+[^:]*:12: Error: syntax error -- `vstrb.32 q1,r14'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r0'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r0'
+[^:]*:12: Error: syntax error -- `vstrb.32 q2,r0'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r1'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r1'
+[^:]*:12: Error: syntax error -- `vstrb.32 q2,r1'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r2'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r2'
+[^:]*:12: Error: syntax error -- `vstrb.32 q2,r2'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r4'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r4'
+[^:]*:12: Error: syntax error -- `vstrb.32 q2,r4'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r7'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r7'
+[^:]*:12: Error: syntax error -- `vstrb.32 q2,r7'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r8'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r8'
+[^:]*:12: Error: syntax error -- `vstrb.32 q2,r8'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r10'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r10'
+[^:]*:12: Error: syntax error -- `vstrb.32 q2,r10'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r12'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r12'
+[^:]*:12: Error: syntax error -- `vstrb.32 q2,r12'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q2,r14'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q2,r14'
+[^:]*:12: Error: syntax error -- `vstrb.32 q2,r14'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r0'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r0'
+[^:]*:12: Error: syntax error -- `vstrb.32 q4,r0'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r1'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r1'
+[^:]*:12: Error: syntax error -- `vstrb.32 q4,r1'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r2'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r2'
+[^:]*:12: Error: syntax error -- `vstrb.32 q4,r2'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r4'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r4'
+[^:]*:12: Error: syntax error -- `vstrb.32 q4,r4'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r7'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r7'
+[^:]*:12: Error: syntax error -- `vstrb.32 q4,r7'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r8'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r8'
+[^:]*:12: Error: syntax error -- `vstrb.32 q4,r8'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r10'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r10'
+[^:]*:12: Error: syntax error -- `vstrb.32 q4,r10'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r12'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r12'
+[^:]*:12: Error: syntax error -- `vstrb.32 q4,r12'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q4,r14'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q4,r14'
+[^:]*:12: Error: syntax error -- `vstrb.32 q4,r14'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r0'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r0'
+[^:]*:12: Error: syntax error -- `vstrb.32 q7,r0'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r1'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r1'
+[^:]*:12: Error: syntax error -- `vstrb.32 q7,r1'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r2'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r2'
+[^:]*:12: Error: syntax error -- `vstrb.32 q7,r2'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r4'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r4'
+[^:]*:12: Error: syntax error -- `vstrb.32 q7,r4'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r7'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r7'
+[^:]*:12: Error: syntax error -- `vstrb.32 q7,r7'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r8'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r8'
+[^:]*:12: Error: syntax error -- `vstrb.32 q7,r8'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r10'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r10'
+[^:]*:12: Error: syntax error -- `vstrb.32 q7,r10'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r12'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r12'
+[^:]*:12: Error: syntax error -- `vstrb.32 q7,r12'
+[^:]*:12: Error: syntax error -- `vldrb.s32 q7,r14'
+[^:]*:12: Error: syntax error -- `vldrb.u32 q7,r14'
+[^:]*:12: Error: syntax error -- `vstrb.32 q7,r14'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r0'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r0'
+[^:]*:22: Error: syntax error -- `vstrh.16 q0,r0'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r1'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r1'
+[^:]*:22: Error: syntax error -- `vstrh.16 q0,r1'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r2'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r2'
+[^:]*:22: Error: syntax error -- `vstrh.16 q0,r2'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r4'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r4'
+[^:]*:22: Error: syntax error -- `vstrh.16 q0,r4'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r7'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r7'
+[^:]*:22: Error: syntax error -- `vstrh.16 q0,r7'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r8'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r8'
+[^:]*:22: Error: syntax error -- `vstrh.16 q0,r8'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r10'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r10'
+[^:]*:22: Error: syntax error -- `vstrh.16 q0,r10'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r12'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r12'
+[^:]*:22: Error: syntax error -- `vstrh.16 q0,r12'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q0,r14'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q0,r14'
+[^:]*:22: Error: syntax error -- `vstrh.16 q0,r14'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r0'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r0'
+[^:]*:22: Error: syntax error -- `vstrh.16 q1,r0'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r1'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r1'
+[^:]*:22: Error: syntax error -- `vstrh.16 q1,r1'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r2'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r2'
+[^:]*:22: Error: syntax error -- `vstrh.16 q1,r2'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r4'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r4'
+[^:]*:22: Error: syntax error -- `vstrh.16 q1,r4'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r7'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r7'
+[^:]*:22: Error: syntax error -- `vstrh.16 q1,r7'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r8'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r8'
+[^:]*:22: Error: syntax error -- `vstrh.16 q1,r8'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r10'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r10'
+[^:]*:22: Error: syntax error -- `vstrh.16 q1,r10'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r12'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r12'
+[^:]*:22: Error: syntax error -- `vstrh.16 q1,r12'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q1,r14'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q1,r14'
+[^:]*:22: Error: syntax error -- `vstrh.16 q1,r14'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r0'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r0'
+[^:]*:22: Error: syntax error -- `vstrh.16 q2,r0'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r1'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r1'
+[^:]*:22: Error: syntax error -- `vstrh.16 q2,r1'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r2'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r2'
+[^:]*:22: Error: syntax error -- `vstrh.16 q2,r2'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r4'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r4'
+[^:]*:22: Error: syntax error -- `vstrh.16 q2,r4'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r7'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r7'
+[^:]*:22: Error: syntax error -- `vstrh.16 q2,r7'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r8'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r8'
+[^:]*:22: Error: syntax error -- `vstrh.16 q2,r8'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r10'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r10'
+[^:]*:22: Error: syntax error -- `vstrh.16 q2,r10'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r12'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r12'
+[^:]*:22: Error: syntax error -- `vstrh.16 q2,r12'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q2,r14'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q2,r14'
+[^:]*:22: Error: syntax error -- `vstrh.16 q2,r14'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r0'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r0'
+[^:]*:22: Error: syntax error -- `vstrh.16 q4,r0'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r1'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r1'
+[^:]*:22: Error: syntax error -- `vstrh.16 q4,r1'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r2'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r2'
+[^:]*:22: Error: syntax error -- `vstrh.16 q4,r2'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r4'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r4'
+[^:]*:22: Error: syntax error -- `vstrh.16 q4,r4'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r7'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r7'
+[^:]*:22: Error: syntax error -- `vstrh.16 q4,r7'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r8'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r8'
+[^:]*:22: Error: syntax error -- `vstrh.16 q4,r8'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r10'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r10'
+[^:]*:22: Error: syntax error -- `vstrh.16 q4,r10'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r12'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r12'
+[^:]*:22: Error: syntax error -- `vstrh.16 q4,r12'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q4,r14'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q4,r14'
+[^:]*:22: Error: syntax error -- `vstrh.16 q4,r14'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r0'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r0'
+[^:]*:22: Error: syntax error -- `vstrh.16 q7,r0'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r1'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r1'
+[^:]*:22: Error: syntax error -- `vstrh.16 q7,r1'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r2'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r2'
+[^:]*:22: Error: syntax error -- `vstrh.16 q7,r2'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r4'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r4'
+[^:]*:22: Error: syntax error -- `vstrh.16 q7,r4'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r7'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r7'
+[^:]*:22: Error: syntax error -- `vstrh.16 q7,r7'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r8'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r8'
+[^:]*:22: Error: syntax error -- `vstrh.16 q7,r8'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r10'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r10'
+[^:]*:22: Error: syntax error -- `vstrh.16 q7,r10'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r12'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r12'
+[^:]*:22: Error: syntax error -- `vstrh.16 q7,r12'
+[^:]*:22: Error: syntax error -- `vldrh.s16 q7,r14'
+[^:]*:22: Error: syntax error -- `vldrh.u16 q7,r14'
+[^:]*:22: Error: syntax error -- `vstrh.16 q7,r14'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r0'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r0'
+[^:]*:22: Error: syntax error -- `vstrh.32 q0,r0'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r1'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r1'
+[^:]*:22: Error: syntax error -- `vstrh.32 q0,r1'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r2'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r2'
+[^:]*:22: Error: syntax error -- `vstrh.32 q0,r2'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r4'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r4'
+[^:]*:22: Error: syntax error -- `vstrh.32 q0,r4'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r7'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r7'
+[^:]*:22: Error: syntax error -- `vstrh.32 q0,r7'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r8'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r8'
+[^:]*:22: Error: syntax error -- `vstrh.32 q0,r8'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r10'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r10'
+[^:]*:22: Error: syntax error -- `vstrh.32 q0,r10'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r12'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r12'
+[^:]*:22: Error: syntax error -- `vstrh.32 q0,r12'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q0,r14'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q0,r14'
+[^:]*:22: Error: syntax error -- `vstrh.32 q0,r14'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r0'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r0'
+[^:]*:22: Error: syntax error -- `vstrh.32 q1,r0'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r1'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r1'
+[^:]*:22: Error: syntax error -- `vstrh.32 q1,r1'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r2'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r2'
+[^:]*:22: Error: syntax error -- `vstrh.32 q1,r2'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r4'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r4'
+[^:]*:22: Error: syntax error -- `vstrh.32 q1,r4'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r7'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r7'
+[^:]*:22: Error: syntax error -- `vstrh.32 q1,r7'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r8'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r8'
+[^:]*:22: Error: syntax error -- `vstrh.32 q1,r8'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r10'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r10'
+[^:]*:22: Error: syntax error -- `vstrh.32 q1,r10'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r12'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r12'
+[^:]*:22: Error: syntax error -- `vstrh.32 q1,r12'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q1,r14'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q1,r14'
+[^:]*:22: Error: syntax error -- `vstrh.32 q1,r14'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r0'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r0'
+[^:]*:22: Error: syntax error -- `vstrh.32 q2,r0'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r1'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r1'
+[^:]*:22: Error: syntax error -- `vstrh.32 q2,r1'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r2'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r2'
+[^:]*:22: Error: syntax error -- `vstrh.32 q2,r2'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r4'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r4'
+[^:]*:22: Error: syntax error -- `vstrh.32 q2,r4'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r7'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r7'
+[^:]*:22: Error: syntax error -- `vstrh.32 q2,r7'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r8'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r8'
+[^:]*:22: Error: syntax error -- `vstrh.32 q2,r8'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r10'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r10'
+[^:]*:22: Error: syntax error -- `vstrh.32 q2,r10'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r12'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r12'
+[^:]*:22: Error: syntax error -- `vstrh.32 q2,r12'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q2,r14'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q2,r14'
+[^:]*:22: Error: syntax error -- `vstrh.32 q2,r14'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r0'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r0'
+[^:]*:22: Error: syntax error -- `vstrh.32 q4,r0'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r1'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r1'
+[^:]*:22: Error: syntax error -- `vstrh.32 q4,r1'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r2'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r2'
+[^:]*:22: Error: syntax error -- `vstrh.32 q4,r2'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r4'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r4'
+[^:]*:22: Error: syntax error -- `vstrh.32 q4,r4'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r7'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r7'
+[^:]*:22: Error: syntax error -- `vstrh.32 q4,r7'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r8'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r8'
+[^:]*:22: Error: syntax error -- `vstrh.32 q4,r8'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r10'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r10'
+[^:]*:22: Error: syntax error -- `vstrh.32 q4,r10'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r12'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r12'
+[^:]*:22: Error: syntax error -- `vstrh.32 q4,r12'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q4,r14'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q4,r14'
+[^:]*:22: Error: syntax error -- `vstrh.32 q4,r14'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r0'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r0'
+[^:]*:22: Error: syntax error -- `vstrh.32 q7,r0'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r1'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r1'
+[^:]*:22: Error: syntax error -- `vstrh.32 q7,r1'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r2'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r2'
+[^:]*:22: Error: syntax error -- `vstrh.32 q7,r2'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r4'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r4'
+[^:]*:22: Error: syntax error -- `vstrh.32 q7,r4'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r7'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r7'
+[^:]*:22: Error: syntax error -- `vstrh.32 q7,r7'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r8'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r8'
+[^:]*:22: Error: syntax error -- `vstrh.32 q7,r8'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r10'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r10'
+[^:]*:22: Error: syntax error -- `vstrh.32 q7,r10'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r12'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r12'
+[^:]*:22: Error: syntax error -- `vstrh.32 q7,r12'
+[^:]*:22: Error: syntax error -- `vldrh.s32 q7,r14'
+[^:]*:22: Error: syntax error -- `vldrh.u32 q7,r14'
+[^:]*:22: Error: syntax error -- `vstrh.32 q7,r14'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r0'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r0'
+[^:]*:30: Error: syntax error -- `vstrw.32 q0,r0'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r1'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r1'
+[^:]*:30: Error: syntax error -- `vstrw.32 q0,r1'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r2'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r2'
+[^:]*:30: Error: syntax error -- `vstrw.32 q0,r2'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r4'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r4'
+[^:]*:30: Error: syntax error -- `vstrw.32 q0,r4'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r7'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r7'
+[^:]*:30: Error: syntax error -- `vstrw.32 q0,r7'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r8'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r8'
+[^:]*:30: Error: syntax error -- `vstrw.32 q0,r8'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r10'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r10'
+[^:]*:30: Error: syntax error -- `vstrw.32 q0,r10'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r12'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r12'
+[^:]*:30: Error: syntax error -- `vstrw.32 q0,r12'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q0,r14'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q0,r14'
+[^:]*:30: Error: syntax error -- `vstrw.32 q0,r14'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r0'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r0'
+[^:]*:30: Error: syntax error -- `vstrw.32 q1,r0'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r1'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r1'
+[^:]*:30: Error: syntax error -- `vstrw.32 q1,r1'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r2'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r2'
+[^:]*:30: Error: syntax error -- `vstrw.32 q1,r2'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r4'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r4'
+[^:]*:30: Error: syntax error -- `vstrw.32 q1,r4'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r7'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r7'
+[^:]*:30: Error: syntax error -- `vstrw.32 q1,r7'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r8'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r8'
+[^:]*:30: Error: syntax error -- `vstrw.32 q1,r8'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r10'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r10'
+[^:]*:30: Error: syntax error -- `vstrw.32 q1,r10'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r12'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r12'
+[^:]*:30: Error: syntax error -- `vstrw.32 q1,r12'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q1,r14'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q1,r14'
+[^:]*:30: Error: syntax error -- `vstrw.32 q1,r14'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r0'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r0'
+[^:]*:30: Error: syntax error -- `vstrw.32 q2,r0'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r1'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r1'
+[^:]*:30: Error: syntax error -- `vstrw.32 q2,r1'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r2'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r2'
+[^:]*:30: Error: syntax error -- `vstrw.32 q2,r2'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r4'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r4'
+[^:]*:30: Error: syntax error -- `vstrw.32 q2,r4'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r7'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r7'
+[^:]*:30: Error: syntax error -- `vstrw.32 q2,r7'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r8'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r8'
+[^:]*:30: Error: syntax error -- `vstrw.32 q2,r8'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r10'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r10'
+[^:]*:30: Error: syntax error -- `vstrw.32 q2,r10'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r12'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r12'
+[^:]*:30: Error: syntax error -- `vstrw.32 q2,r12'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q2,r14'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q2,r14'
+[^:]*:30: Error: syntax error -- `vstrw.32 q2,r14'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r0'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r0'
+[^:]*:30: Error: syntax error -- `vstrw.32 q4,r0'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r1'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r1'
+[^:]*:30: Error: syntax error -- `vstrw.32 q4,r1'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r2'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r2'
+[^:]*:30: Error: syntax error -- `vstrw.32 q4,r2'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r4'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r4'
+[^:]*:30: Error: syntax error -- `vstrw.32 q4,r4'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r7'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r7'
+[^:]*:30: Error: syntax error -- `vstrw.32 q4,r7'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r8'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r8'
+[^:]*:30: Error: syntax error -- `vstrw.32 q4,r8'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r10'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r10'
+[^:]*:30: Error: syntax error -- `vstrw.32 q4,r10'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r12'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r12'
+[^:]*:30: Error: syntax error -- `vstrw.32 q4,r12'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q4,r14'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q4,r14'
+[^:]*:30: Error: syntax error -- `vstrw.32 q4,r14'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r0'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r0'
+[^:]*:30: Error: syntax error -- `vstrw.32 q7,r0'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r1'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r1'
+[^:]*:30: Error: syntax error -- `vstrw.32 q7,r1'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r2'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r2'
+[^:]*:30: Error: syntax error -- `vstrw.32 q7,r2'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r4'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r4'
+[^:]*:30: Error: syntax error -- `vstrw.32 q7,r4'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r7'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r7'
+[^:]*:30: Error: syntax error -- `vstrw.32 q7,r7'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r8'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r8'
+[^:]*:30: Error: syntax error -- `vstrw.32 q7,r8'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r10'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r10'
+[^:]*:30: Error: syntax error -- `vstrw.32 q7,r10'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r12'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r12'
+[^:]*:30: Error: syntax error -- `vstrw.32 q7,r12'
+[^:]*:30: Error: syntax error -- `vldrw.s32 q7,r14'
+[^:]*:30: Error: syntax error -- `vldrw.u32 q7,r14'
+[^:]*:30: Error: syntax error -- `vstrw.32 q7,r14'
diff --git a/gas/testsuite/gas/arm/mve-vldr-vstr-bad.s b/gas/testsuite/gas/arm/mve-vldr-vstr-bad.s
new file mode 100644 (file)
index 0000000..c72c129
--- /dev/null
@@ -0,0 +1,30 @@
+.syntax unified
+.thumb
+
+.irp op1, 8, 16, 32
+.irp op2, q0, q1, q2, q4, q7
+.irp op3, r0, r1, r2, r4, r7, r8, r10, r12, r14
+vldrb.s\op1 \op2, \op3
+vldrb.u\op1 \op2, \op3
+vstrb.\op1 \op2, \op3
+.endr
+.endr
+.endr
+
+.irp op1, 16, 32
+.irp op2, q0, q1, q2, q4, q7
+.irp op3, r0, r1, r2, r4, r7, r8, r10, r12, r14
+vldrh.s\op1 \op2, \op3
+vldrh.u\op1 \op2, \op3
+vstrh.\op1 \op2, \op3
+.endr
+.endr
+.endr
+
+.irp op2, q0, q1, q2, q4, q7
+.irp op3, r0, r1, r2, r4, r7, r8, r10, r12, r14
+vldrw.s32 \op2, \op3
+vldrw.u32 \op2, \op3
+vstrw.32 \op2, \op3
+.endr
+.endr
diff --git a/gas/testsuite/gas/arm/pr26858.d b/gas/testsuite/gas/arm/pr26858.d
new file mode 100644 (file)
index 0000000..dbe4d71
--- /dev/null
@@ -0,0 +1,8 @@
+# name: PR26858
+# objdump: -dr --prefix-addresses --show-raw-insn
+
+.*: +file format .*arm.*
+
+Disassembly of section .text:
+[^>]*> ee266a87        vmul.f32        s12, s13, s14
+[^>]*> ee000a81        vmla.f32        s0, s1, s2
diff --git a/gas/testsuite/gas/arm/pr26858.s b/gas/testsuite/gas/arm/pr26858.s
new file mode 100644 (file)
index 0000000..5a450e7
--- /dev/null
@@ -0,0 +1,6 @@
+.syntax unified
+.arch armv8-r
+.arm
+.fpu fpv5-sp-d16
+vmul.f32 s12, s13, s14
+vmla.f32 s0, s1, s2
index 839b4b7c77b46705bea0b9dde8c9a09f836f4166..7db20a330b86c2ebcbeeef2502188abea1b4d9f9 100644 (file)
@@ -6,6 +6,7 @@
   Compilation Unit @ offset 0x0:
    Length:        0x.*
    Version:       5
+   Unit Type:     DW_UT_compile \(1\)
    Abbrev Offset: 0x0
    Pointer Size:  .
 #pass
diff --git a/gas/testsuite/gas/i386/dwarf4-line-1.d b/gas/testsuite/gas/i386/dwarf4-line-1.d
new file mode 100644 (file)
index 0000000..4f8321e
--- /dev/null
@@ -0,0 +1,50 @@
+#as: -gdwarf-4
+#readelf: -wl
+#name: DWARF4 .debug_line 1
+
+Raw dump of debug contents of section \.z?debug_line:
+
+  Offset:                      0x0
+  Length:                      .*
+  DWARF Version:               4
+  Prologue Length:             .*
+  Minimum Instruction Length:  1
+  Maximum Ops per Instruction: 1
+  Initial value of 'is_stmt':  1
+  Line Base:                   -5
+  Line Range:                  14
+  Opcode Base:                 13
+
+ Opcodes:
+  Opcode 1 has 0 args
+  Opcode 2 has 1 arg
+  Opcode 3 has 1 arg
+  Opcode 4 has 1 arg
+  Opcode 5 has 1 arg
+  Opcode 6 has 0 args
+  Opcode 7 has 0 args
+  Opcode 8 has 0 args
+  Opcode 9 has 1 arg
+  Opcode 10 has 0 args
+  Opcode 11 has 0 args
+  Opcode 12 has 1 arg
+
+ The Directory Table \(offset 0x.*\):
+  1    .*/gas/testsuite/gas/i386
+
+ The File Name Table \(offset 0x.*\):
+  Entry        Dir     Time    Size    Name
+  1    0       0       0       foo.c
+  2    0       0       0       foo.h
+
+ Line Number Statements:
+  \[0x.*\]  Extended opcode 2: set Address to 0x0
+  \[0x.*\]  Advance Line by 81 to 82
+  \[0x.*\]  Copy
+  \[0x.*\]  Set File Name to entry 2 in the File Name Table
+  \[0x.*\]  Advance Line by -73 to 9
+  \[0x.*\]  Special opcode 19: advance Address by 1 to 0x1 and Line by 0 to 9
+  \[0x.*\]  Advance PC by 3 to 0x4
+  \[0x.*\]  Extended opcode 1: End of Sequence
+
+
diff --git a/gas/testsuite/gas/i386/dwarf4-line-1.s b/gas/testsuite/gas/i386/dwarf4-line-1.s
new file mode 100644 (file)
index 0000000..e558fdc
--- /dev/null
@@ -0,0 +1,14 @@
+       .file   "foo.c"
+       .text
+bar:
+#APP
+# 82 "foo.h" 1
+       nop
+# 0 "" 2
+#NO_APP
+       ret
+foo:
+       .file 1 "foo.c"
+       nop
+       .file 2 "foo.h"
+       ret
diff --git a/gas/testsuite/gas/i386/dwarf5-line-1.d b/gas/testsuite/gas/i386/dwarf5-line-1.d
new file mode 100644 (file)
index 0000000..7d602d0
--- /dev/null
@@ -0,0 +1,50 @@
+#as: -gdwarf-5
+#readelf: -wl
+#name: DWARF5 .debug_line 1
+
+Raw dump of debug contents of section \.z?debug_line:
+
+  Offset:                      0x0
+  Length:                      .*
+  DWARF Version:               5
+  Address size \(bytes\):        .*
+  Segment selector \(bytes\):    0
+  Prologue Length:             .*
+  Minimum Instruction Length:  1
+  Maximum Ops per Instruction: 1
+  Initial value of 'is_stmt':  1
+  Line Base:                   -5
+  Line Range:                  14
+  Opcode Base:                 13
+
+ Opcodes:
+  Opcode 1 has 0 args
+  Opcode 2 has 1 arg
+  Opcode 3 has 1 arg
+  Opcode 4 has 1 arg
+  Opcode 5 has 1 arg
+  Opcode 6 has 0 args
+  Opcode 7 has 0 args
+  Opcode 8 has 0 args
+  Opcode 9 has 1 arg
+  Opcode 10 has 0 args
+  Opcode 11 has 0 args
+  Opcode 12 has 1 arg
+
+ The Directory Table \(offset 0x.*, lines 2, columns 1\):
+  Entry        Name
+  0    \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386
+  1    \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386
+
+ The File Name Table \(offset 0x.*, lines 2, columns 3\):
+  Entry        Dir     MD5                             Name
+  0    0 0xbbd69fc03ce253b2dbaab2522dd519ae    \(indirect line string, offset: 0x.*\): core.c
+  1    0 0x00000000000000000000000000000000    \(indirect line string, offset: 0x.*\): types.h
+
+ Line Number Statements:
+  \[0x.*\]  Extended opcode 2: set Address to 0x0
+  \[0x.*\]  Special opcode 8: advance Address by 0 to 0x0 and Line by 3 to 4
+  \[0x.*\]  Advance PC by 1 to 0x1
+  \[0x.*\]  Extended opcode 1: End of Sequence
+
+
diff --git a/gas/testsuite/gas/i386/dwarf5-line-1.s b/gas/testsuite/gas/i386/dwarf5-line-1.s
new file mode 100644 (file)
index 0000000..6e343ad
--- /dev/null
@@ -0,0 +1,6 @@
+       .text
+       .global kretprobe_trampoline
+kretprobe_trampoline:
+       ret
+       .file   0 "core.c" md5 0xbbd69fc03ce253b2dbaab2522dd519ae
+       .file   1 "types.h"
diff --git a/gas/testsuite/gas/i386/dwarf5-line-2.d b/gas/testsuite/gas/i386/dwarf5-line-2.d
new file mode 100644 (file)
index 0000000..302a2d8
--- /dev/null
@@ -0,0 +1,49 @@
+#as: -gdwarf-5
+#readelf: -wl
+#name: DWARF5 .debug_line 2
+
+Raw dump of debug contents of section \.z?debug_line:
+
+  Offset:                      0x0
+  Length:                      .*
+  DWARF Version:               5
+  Address size \(bytes\):        .*
+  Segment selector \(bytes\):    0
+  Prologue Length:             .*
+  Minimum Instruction Length:  1
+  Maximum Ops per Instruction: 1
+  Initial value of 'is_stmt':  1
+  Line Base:                   -5
+  Line Range:                  14
+  Opcode Base:                 13
+
+ Opcodes:
+  Opcode 1 has 0 args
+  Opcode 2 has 1 arg
+  Opcode 3 has 1 arg
+  Opcode 4 has 1 arg
+  Opcode 5 has 1 arg
+  Opcode 6 has 0 args
+  Opcode 7 has 0 args
+  Opcode 8 has 0 args
+  Opcode 9 has 1 arg
+  Opcode 10 has 0 args
+  Opcode 11 has 0 args
+  Opcode 12 has 1 arg
+
+ The Directory Table \(offset 0x.*, lines 2, columns 1\):
+  Entry        Name
+  0    \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386
+  1    \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386
+
+ The File Name Table \(offset 0x.*, lines 1, columns 3\):
+  Entry        Dir     MD5                             Name
+  0    0 0xbbd69fc03ce253b2dbaab2522dd519ae    \(indirect line string, offset: 0x.*\): core.c
+
+ Line Number Statements:
+  \[0x.*\]  Extended opcode 2: set Address to 0x0
+  \[0x.*\]  Special opcode 8: advance Address by 0 to 0x0 and Line by 3 to 4
+  \[0x.*\]  Advance PC by 1 to 0x1
+  \[0x.*\]  Extended opcode 1: End of Sequence
+
+
diff --git a/gas/testsuite/gas/i386/dwarf5-line-2.s b/gas/testsuite/gas/i386/dwarf5-line-2.s
new file mode 100644 (file)
index 0000000..4af7d70
--- /dev/null
@@ -0,0 +1,5 @@
+       .text
+       .global kretprobe_trampoline
+kretprobe_trampoline:
+       ret
+       .file   0 "core.c" md5 0xbbd69fc03ce253b2dbaab2522dd519ae
diff --git a/gas/testsuite/gas/i386/dwarf5-line-3.d b/gas/testsuite/gas/i386/dwarf5-line-3.d
new file mode 100644 (file)
index 0000000..6f4ebf0
--- /dev/null
@@ -0,0 +1,49 @@
+#as: -g -gdwarf-5
+#readelf: -wl
+#name: DWARF5 .debug_line 2
+
+Raw dump of debug contents of section \.z?debug_line:
+
+  Offset:                      0x0
+  Length:                      .*
+  DWARF Version:               5
+  Address size \(bytes\):        .*
+  Segment selector \(bytes\):    0
+  Prologue Length:             .*
+  Minimum Instruction Length:  1
+  Maximum Ops per Instruction: 1
+  Initial value of 'is_stmt':  1
+  Line Base:                   -5
+  Line Range:                  14
+  Opcode Base:                 13
+
+ Opcodes:
+  Opcode 1 has 0 args
+  Opcode 2 has 1 arg
+  Opcode 3 has 1 arg
+  Opcode 4 has 1 arg
+  Opcode 5 has 1 arg
+  Opcode 6 has 0 args
+  Opcode 7 has 0 args
+  Opcode 8 has 0 args
+  Opcode 9 has 1 arg
+  Opcode 10 has 0 args
+  Opcode 11 has 0 args
+  Opcode 12 has 1 arg
+
+ The Directory Table \(offset 0x.*, lines 1, columns 1\):
+  Entry        Name
+  0    \(indirect line string, offset: 0x.*\): .*
+
+ The File Name Table \(offset 0x.*, lines 2, columns 2\):
+  Entry        Dir     Name
+  0    0       \(indirect line string, offset: 0x.*\): dwarf5-line-2.S
+  1    0       \(indirect line string, offset: 0x.*\): dwarf5-line-2.S
+
+ Line Number Statements:
+  \[0x.*\]  Extended opcode 2: set Address to 0x0
+  \[0x.*\]  Special opcode 7: advance Address by 0 to 0x0 and Line by 2 to 3
+  \[0x.*\]  Advance PC by 1 to 0x1
+  \[0x.*\]  Extended opcode 1: End of Sequence
+
+
diff --git a/gas/testsuite/gas/i386/dwarf5-line-3.s b/gas/testsuite/gas/i386/dwarf5-line-3.s
new file mode 100644 (file)
index 0000000..52e259d
--- /dev/null
@@ -0,0 +1,10 @@
+# 1 "foo.S"
+# 1 "<built-in>"
+# 1 "<command-line>"
+# 31 "<command-line>"
+# 1 "/usr/include/stdc-predef.h" 1 3 4
+# 32 "<command-line>" 2
+# 1 "dwarf5-line-2.S"
+ .text
+lbasename:
+ .nop
diff --git a/gas/testsuite/gas/i386/enqcmd-16bit.d b/gas/testsuite/gas/i386/enqcmd-16bit.d
new file mode 100644 (file)
index 0000000..04e8706
--- /dev/null
@@ -0,0 +1,21 @@
+#as: -I${srcdir}/$subdir
+#objdump: -dw -Mi8086
+#name: i386 16-bit ENQCMD[S] insns
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <_start>:
+ +[a-f0-9]+:   67 0f 38 f9 01          movdiri %eax,\(%ecx\)
+ +[a-f0-9]+:   67 66 0f 38 f8 01       movdir64b \(%ecx\),%eax
+ +[a-f0-9]+:   66 0f 38 f8 04          movdir64b \(%si\),%ax
+ +[a-f0-9]+:   66 0f 38 f8 0e 00 00    movdir64b 0x0,%cx
+ +[a-f0-9]+:   66 0f 38 f8 0e 34 12    movdir64b 0x1234,%cx
+ +[a-f0-9]+:   67 0f 38 f9 01          movdiri %eax,\(%ecx\)
+ +[a-f0-9]+:   67 0f 38 f9 01          movdiri %eax,\(%ecx\)
+ +[a-f0-9]+:   67 66 0f 38 f8 01       movdir64b \(%ecx\),%eax
+ +[a-f0-9]+:   66 0f 38 f8 04          movdir64b \(%si\),%ax
+ +[a-f0-9]+:   66 0f 38 f8 0e 00 00    movdir64b 0x0,%cx
+ +[a-f0-9]+:   66 0f 38 f8 0e 34 12    movdir64b 0x1234,%cx
+#pass
diff --git a/gas/testsuite/gas/i386/enqcmd-16bit.s b/gas/testsuite/gas/i386/enqcmd-16bit.s
new file mode 100644 (file)
index 0000000..1f21cec
--- /dev/null
@@ -0,0 +1,4 @@
+# Check ENQCMD[S] 16-bit instructions
+
+       .code16
+.include "movdir.s"
index b38c3ed6ee14fb70da5e1fa01090bc7e1b2313ae..e1d30dacd70bf610454577976b17abc4836dd49a 100644 (file)
@@ -8,13 +8,21 @@
 
 Disassembly of section \.text:
 
-00000000 <_start>:
-[      ]*[a-f0-9]+:[   ]*f2 0f 38 f8 01[       ]*enqcmd eax,\[ecx\]
-[      ]*[a-f0-9]+:[   ]*67 f2 0f 38 f8 04[    ]*enqcmd ax,\[si\]
-[      ]*[a-f0-9]+:[   ]*f3 0f 38 f8 01[       ]*enqcmds eax,\[ecx\]
-[      ]*[a-f0-9]+:[   ]*67 f3 0f 38 f8 04[    ]*enqcmds ax,\[si\]
-[      ]*[a-f0-9]+:[   ]*f2 0f 38 f8 01[       ]*enqcmd eax,\[ecx\]
-[      ]*[a-f0-9]+:[   ]*67 f2 0f 38 f8 04[    ]*enqcmd ax,\[si\]
-[      ]*[a-f0-9]+:[   ]*f3 0f 38 f8 01[       ]*enqcmds eax,\[ecx\]
-[      ]*[a-f0-9]+:[   ]*67 f3 0f 38 f8 04[    ]*enqcmds ax,\[si\]
+0+ <_start>:
+ +[a-f0-9]+:   f2 0f 38 f8 01          enqcmd eax,\[ecx\]
+ +[a-f0-9]+:   67 f2 0f 38 f8 04       enqcmd ax,\[si\]
+ +[a-f0-9]+:   f3 0f 38 f8 01          enqcmds eax,\[ecx\]
+ +[a-f0-9]+:   67 f3 0f 38 f8 04       enqcmds ax,\[si\]
+ +[a-f0-9]+:   67 f2 0f 38 f8 0e 00 00         enqcmd cx,ds:0x0
+ +[a-f0-9]+:   67 f2 0f 38 f8 0e 34 12         enqcmd cx,ds:0x1234
+ +[a-f0-9]+:   67 f3 0f 38 f8 0e 00 00         enqcmds cx,ds:0x0
+ +[a-f0-9]+:   67 f3 0f 38 f8 0e 34 12         enqcmds cx,ds:0x1234
+ +[a-f0-9]+:   f2 0f 38 f8 01          enqcmd eax,\[ecx\]
+ +[a-f0-9]+:   67 f2 0f 38 f8 04       enqcmd ax,\[si\]
+ +[a-f0-9]+:   f3 0f 38 f8 01          enqcmds eax,\[ecx\]
+ +[a-f0-9]+:   67 f3 0f 38 f8 04       enqcmds ax,\[si\]
+ +[a-f0-9]+:   67 f2 0f 38 f8 0e 00 00         enqcmd cx,ds:0x0
+ +[a-f0-9]+:   67 f2 0f 38 f8 0e 34 12         enqcmd cx,ds:0x1234
+ +[a-f0-9]+:   67 f3 0f 38 f8 0e 00 00         enqcmds cx,ds:0x0
+ +[a-f0-9]+:   67 f3 0f 38 f8 0e 34 12         enqcmds cx,ds:0x1234
 #pass
index c601185ba322cdfeca3ed637bf5cfa0eb66e9965..99b9c0a729920f801a5900939fbc4fa3a3f5f70d 100644 (file)
@@ -8,13 +8,21 @@
 
 Disassembly of section \.text:
 
-00000000 <_start>:
-[      ]*[a-f0-9]+:[   ]*f2 0f 38 f8 01[       ]*enqcmd \(%ecx\),%eax
-[      ]*[a-f0-9]+:[   ]*67 f2 0f 38 f8 04[    ]*enqcmd \(%si\),%ax
-[      ]*[a-f0-9]+:[   ]*f3 0f 38 f8 01[       ]*enqcmds \(%ecx\),%eax
-[      ]*[a-f0-9]+:[   ]*67 f3 0f 38 f8 04[    ]*enqcmds \(%si\),%ax
-[      ]*[a-f0-9]+:[   ]*f2 0f 38 f8 01[       ]*enqcmd \(%ecx\),%eax
-[      ]*[a-f0-9]+:[   ]*67 f2 0f 38 f8 04[    ]*enqcmd \(%si\),%ax
-[      ]*[a-f0-9]+:[   ]*f3 0f 38 f8 01[       ]*enqcmds \(%ecx\),%eax
-[      ]*[a-f0-9]+:[   ]*67 f3 0f 38 f8 04[    ]*enqcmds \(%si\),%ax
+0+ <_start>:
+ +[a-f0-9]+:   f2 0f 38 f8 01          enqcmd \(%ecx\),%eax
+ +[a-f0-9]+:   67 f2 0f 38 f8 04       enqcmd \(%si\),%ax
+ +[a-f0-9]+:   f3 0f 38 f8 01          enqcmds \(%ecx\),%eax
+ +[a-f0-9]+:   67 f3 0f 38 f8 04       enqcmds \(%si\),%ax
+ +[a-f0-9]+:   67 f2 0f 38 f8 0e 00 00         enqcmd 0x0,%cx
+ +[a-f0-9]+:   67 f2 0f 38 f8 0e 34 12         enqcmd 0x1234,%cx
+ +[a-f0-9]+:   67 f3 0f 38 f8 0e 00 00         enqcmds 0x0,%cx
+ +[a-f0-9]+:   67 f3 0f 38 f8 0e 34 12         enqcmds 0x1234,%cx
+ +[a-f0-9]+:   f2 0f 38 f8 01          enqcmd \(%ecx\),%eax
+ +[a-f0-9]+:   67 f2 0f 38 f8 04       enqcmd \(%si\),%ax
+ +[a-f0-9]+:   f3 0f 38 f8 01          enqcmds \(%ecx\),%eax
+ +[a-f0-9]+:   67 f3 0f 38 f8 04       enqcmds \(%si\),%ax
+ +[a-f0-9]+:   67 f2 0f 38 f8 0e 00 00         enqcmd 0x0,%cx
+ +[a-f0-9]+:   67 f2 0f 38 f8 0e 34 12         enqcmd 0x1234,%cx
+ +[a-f0-9]+:   67 f3 0f 38 f8 0e 00 00         enqcmds 0x0,%cx
+ +[a-f0-9]+:   67 f3 0f 38 f8 0e 34 12         enqcmds 0x1234,%cx
 #pass
index 0a23b25a6ff208f3516daacf8ea955fed5ba748a..f7195fa7236ad9efdc99cc976790c34ace750dfb 100644 (file)
@@ -7,9 +7,17 @@ _start:
        enqcmd (%si),%ax
        enqcmds (%ecx),%eax
        enqcmds (%si),%ax
+       enqcmd foo, %cx
+       enqcmd 0x1234, %cx
+       enqcmds foo, %cx
+       enqcmds 0x1234, %cx
 
        .intel_syntax noprefix
        enqcmd eax,[ecx]
        enqcmd ax,[si]
        enqcmds eax,[ecx]
        enqcmds ax,[si]
+       enqcmd cx,ds:foo
+       enqcmd cx,ds:0x1234
+       enqcmds cx,ds:foo
+       enqcmds cx,ds:0x1234
index 6c9f68faf234af5bd43e8236feb348389f85e98e..33623656eefbc6fcc8046bbbffbdff8d598c25a8 100644 (file)
@@ -10,5 +10,5 @@ Disassembly of section .text:
  +[a-f0-9]+:   62 f1 7c 48 28 04 05 40 00 00 00        vmovaps 0x40\(,%rax,1\),%zmm0
  +[a-f0-9]+:   62 f1 7c 48 28 04 25 40 00 00 00        vmovaps 0x40,%zmm0
  +[a-f0-9]+:   67 62 f1 7c 48 28 04 05 40 00 00 00     vmovaps 0x40\(,%eax,1\),%zmm0
- +[a-f0-9]+:   67 62 f1 7c 48 28 04 25 40 00 00 00     vmovaps 0x40,%zmm0
+ +[a-f0-9]+:   67 62 f1 7c 48 28 04 25 40 00 00 00     vmovaps 0x40\(,%eiz,1\),%zmm0
  +[a-f0-9]+:   62 f1 7c 48 28 04 25 40 00 00 00        vmovaps 0x40,%zmm0
index 6563aae246ceec0d6dad6c561d7890398612f304..3039c36a30ae1a2b7f87fff04e15e294dbaf232e 100644 (file)
@@ -475,9 +475,11 @@ if [expr ([istarget "i*86-*-*"] ||  [istarget "x86_64-*-*"]) && [gas_32_check]]
     run_dump_test "cldemote-intel"
     run_dump_test "movdir"
     run_dump_test "movdir-intel"
+    run_dump_test "movdir-16bit"
     run_list_test "movdir64b-reg"
     run_dump_test "enqcmd"
     run_dump_test "enqcmd-intel"
+    run_dump_test "enqcmd-16bit"
     run_list_test "enqcmd-inval"
     run_dump_test "serialize"
     run_dump_test "tsxldtrk"
@@ -594,6 +596,10 @@ if [expr ([istarget "i*86-*-*"] ||  [istarget "x86_64-*-*"]) && [gas_32_check]]
        run_dump_test "dwarf2-line-2"
        run_dump_test "dwarf2-line-3"
        run_dump_test "dwarf2-line-4"
+       run_dump_test "dwarf4-line-1"
+       run_dump_test "dwarf5-line-1"
+       run_dump_test "dwarf5-line-2"
+       run_dump_test "dwarf5-line-3"
 
        run_dump_test "dw2-compress-2"
        run_dump_test "dw2-compressed-2"
diff --git a/gas/testsuite/gas/i386/movdir-16bit.d b/gas/testsuite/gas/i386/movdir-16bit.d
new file mode 100644 (file)
index 0000000..ac5d825
--- /dev/null
@@ -0,0 +1,21 @@
+#as: -I${srcdir}/$subdir
+#objdump: -dw -Mi8086
+#name: i386 16-bit MOVDIR[I,64B] insns
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <_start>:
+ +[a-f0-9]+:   67 0f 38 f9 01          movdiri %eax,\(%ecx\)
+ +[a-f0-9]+:   67 66 0f 38 f8 01       movdir64b \(%ecx\),%eax
+ +[a-f0-9]+:   66 0f 38 f8 04          movdir64b \(%si\),%ax
+ +[a-f0-9]+:   66 0f 38 f8 0e 00 00    movdir64b 0x0,%cx
+ +[a-f0-9]+:   66 0f 38 f8 0e 34 12    movdir64b 0x1234,%cx
+ +[a-f0-9]+:   67 0f 38 f9 01          movdiri %eax,\(%ecx\)
+ +[a-f0-9]+:   67 0f 38 f9 01          movdiri %eax,\(%ecx\)
+ +[a-f0-9]+:   67 66 0f 38 f8 01       movdir64b \(%ecx\),%eax
+ +[a-f0-9]+:   66 0f 38 f8 04          movdir64b \(%si\),%ax
+ +[a-f0-9]+:   66 0f 38 f8 0e 00 00    movdir64b 0x0,%cx
+ +[a-f0-9]+:   66 0f 38 f8 0e 34 12    movdir64b 0x1234,%cx
+#pass
diff --git a/gas/testsuite/gas/i386/movdir-16bit.s b/gas/testsuite/gas/i386/movdir-16bit.s
new file mode 100644 (file)
index 0000000..27f5fda
--- /dev/null
@@ -0,0 +1,4 @@
+# Check MOVDIR[I,64B] 16-bit instructions
+
+       .code16
+.include "movdir.s"
index 04f58a7892e1f5dea9d61d283fa5a21bb331a138..56f4fa929a7c01523a1edd669218ccbf049004a5 100644 (file)
@@ -8,19 +8,16 @@
 
 Disassembly of section \.text:
 
-00000000 <_start>:
-[      ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri DWORD PTR \[ecx\],eax
-[      ]*[a-f0-9]+:[   ]*66 0f 38 f8 01[       ]*movdir64b eax,\[ecx\]
-[      ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 04[    ]*movdir64b ax,\[si\]
-[      ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri DWORD PTR \[ecx\],eax
-[      ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri DWORD PTR \[ecx\],eax
-[      ]*[a-f0-9]+:[   ]*66 0f 38 f8 01[       ]*movdir64b eax,\[ecx\]
-[      ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 04[    ]*movdir64b ax,\[si\]
-[      ]*[a-f0-9]+:[   ]*67 0f 38 f9 01[       ]*movdiri DWORD PTR \[bx\+di\],eax
-[      ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 01[    ]*movdir64b ax,\[bx\+di\]
-[      ]*[a-f0-9]+:[   ]*66 0f 38 f8 04 67[    ]*movdir64b eax,\[edi\+eiz\*2\]
-[      ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri DWORD PTR \[ecx\],eax
-[      ]*[a-f0-9]+:[   ]*67 0f 38 f9 01[       ]*movdiri DWORD PTR \[bx\+di\],eax
-[      ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 01[    ]*movdir64b ax,\[bx\+di\]
-[      ]*[a-f0-9]+:[   ]*66 0f 38 f8 04 90[    ]*movdir64b eax,\[eax\+edx\*4\]
+0+ <_start>:
+ +[a-f0-9]+:   0f 38 f9 01             movdiri DWORD PTR \[ecx\],eax
+ +[a-f0-9]+:   66 0f 38 f8 01          movdir64b eax,\[ecx\]
+ +[a-f0-9]+:   67 66 0f 38 f8 04       movdir64b ax,\[si\]
+ +[a-f0-9]+:   67 66 0f 38 f8 0e 00 00         movdir64b cx,ds:0x0
+ +[a-f0-9]+:   67 66 0f 38 f8 0e 34 12         movdir64b cx,ds:0x1234
+ +[a-f0-9]+:   0f 38 f9 01             movdiri DWORD PTR \[ecx\],eax
+ +[a-f0-9]+:   0f 38 f9 01             movdiri DWORD PTR \[ecx\],eax
+ +[a-f0-9]+:   66 0f 38 f8 01          movdir64b eax,\[ecx\]
+ +[a-f0-9]+:   67 66 0f 38 f8 04       movdir64b ax,\[si\]
+ +[a-f0-9]+:   67 66 0f 38 f8 0e 00 00         movdir64b cx,ds:0x0
+ +[a-f0-9]+:   67 66 0f 38 f8 0e 34 12         movdir64b cx,ds:0x1234
 #pass
index 192dad9920e4d1377d34fb2543fcaf38c5834c0f..a8f324bddec78acefbc73583094c1f970bf204fb 100644 (file)
@@ -8,19 +8,16 @@
 
 Disassembly of section \.text:
 
-00000000 <_start>:
-[      ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri %eax,\(%ecx\)
-[      ]*[a-f0-9]+:[   ]*66 0f 38 f8 01[       ]*movdir64b \(%ecx\),%eax
-[      ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 04[    ]*movdir64b \(%si\),%ax
-[      ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri %eax,\(%ecx\)
-[      ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri %eax,\(%ecx\)
-[      ]*[a-f0-9]+:[   ]*66 0f 38 f8 01[       ]*movdir64b \(%ecx\),%eax
-[      ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 04[    ]*movdir64b \(%si\),%ax
-[      ]*[a-f0-9]+:[   ]*67 0f 38 f9 01[       ]*movdiri %eax,\(%bx,%di\)
-[      ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 01[    ]*movdir64b \(%bx,%di\),%ax
-[      ]*[a-f0-9]+:[   ]*66 0f 38 f8 04 67[    ]*movdir64b \(%edi,%eiz,2\),%eax
-[      ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri %eax,\(%ecx\)
-[      ]*[a-f0-9]+:[   ]*67 0f 38 f9 01[       ]*movdiri %eax,\(%bx,%di\)
-[      ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 01[    ]*movdir64b \(%bx,%di\),%ax
-[      ]*[a-f0-9]+:[   ]*66 0f 38 f8 04 90[    ]*movdir64b \(%eax,%edx,4\),%eax
+0+ <_start>:
+ +[a-f0-9]+:   0f 38 f9 01             movdiri %eax,\(%ecx\)
+ +[a-f0-9]+:   66 0f 38 f8 01          movdir64b \(%ecx\),%eax
+ +[a-f0-9]+:   67 66 0f 38 f8 04       movdir64b \(%si\),%ax
+ +[a-f0-9]+:   67 66 0f 38 f8 0e 00 00         movdir64b 0x0,%cx
+ +[a-f0-9]+:   67 66 0f 38 f8 0e 34 12         movdir64b 0x1234,%cx
+ +[a-f0-9]+:   0f 38 f9 01             movdiri %eax,\(%ecx\)
+ +[a-f0-9]+:   0f 38 f9 01             movdiri %eax,\(%ecx\)
+ +[a-f0-9]+:   66 0f 38 f8 01          movdir64b \(%ecx\),%eax
+ +[a-f0-9]+:   67 66 0f 38 f8 04       movdir64b \(%si\),%ax
+ +[a-f0-9]+:   67 66 0f 38 f8 0e 00 00         movdir64b 0x0,%cx
+ +[a-f0-9]+:   67 66 0f 38 f8 0e 34 12         movdir64b 0x1234,%cx
 #pass
index 29c381ca23c5cd1824f0233e7793c543eb609f6f..00c57db141a6e677d0481d161ec185ab8fac0cd0 100644 (file)
@@ -3,19 +3,16 @@
        .allow_index_reg
        .text
 _start:
-       .rept 2
        movdiri %eax, (%ecx)
        movdir64b (%ecx),%eax
        movdir64b (%si),%ax
+       movdir64b foo, %cx
+       movdir64b 0x1234, %cx
 
        .intel_syntax noprefix
        movdiri [ecx], eax
        movdiri dword ptr [ecx], eax
        movdir64b eax,[ecx]
        movdir64b ax,[si]
-
-       .att_syntax prefix
-       .code16
-       .endr
-
-       nop
+       movdir64b cx,ds:foo
+       movdir64b cx,ds:0x1234
index 7a25d40162c3a332458482822a10573713171cc3..0988457b34c5e4e5691ee59105f17ade3588415d 100644 (file)
@@ -11,15 +11,15 @@ Disassembly of section .text:
 [      ]*[a-f0-9]+:    67 48 8d 80 00 00 00 00[        ]+lea[  ]+rax,\[eax\+0x0\].*
 [      ]*[a-f0-9]+:    67 49 8d 80 00 00 00 00[        ]+lea[  ]+rax,\[r8d\+0x0\].*
 [      ]*[a-f0-9]+:    67 48 8d 05 00 00 00 00[        ]+lea[  ]+rax,\[eip\+0x0\].*
-[      ]*[a-f0-9]+:    67 48 8d 04 25 00 00 00 00      lea[ ]+rax,ds:0x0       .*
+[      ]*[a-f0-9]+:    67 48 8d 04 25 00 00 00 00      lea[ ]+rax,\[eiz\*1\+0x0\].*
 [      ]*[a-f0-9]+:    67 a0 98 08 60 00       addr32 mov al,ds:0x600898
 [      ]*[a-f0-9]+:    67 66 a1 98 08 60 00    addr32 mov ax,ds:0x600898
 [      ]*[a-f0-9]+:    67 a1 98 08 60 00       addr32 mov eax,ds:0x600898
 [      ]*[a-f0-9]+:    67 48 a1 98 08 60 00    addr32 mov rax,ds:0x600898
 [      ]*[a-f0-9]+:    67 48 a1 98 08 80 00    addr32 mov rax,ds:0x800898
-[      ]*[a-f0-9]+:    67 48 8b 1c 25 98 08 80 00      mov[ ]+rbx,QWORD PTR ds:0x800898
+[      ]*[a-f0-9]+:    67 48 8b 1c 25 98 08 80 00      mov[ ]+rbx,QWORD PTR \[eiz\*1\+0x800898\]
 [      ]*[a-f0-9]+:    67 48 a1 ef cd ab 89    addr32 mov rax,ds:0x89abcdef
-[      ]*[a-f0-9]+:    67 48 8b 1c 25 ef cd ab 89      mov[ ]+rbx,QWORD PTR ds:0x89abcdef
+[      ]*[a-f0-9]+:    67 48 8b 1c 25 ef cd ab 89      mov[ ]+rbx,QWORD PTR \[eiz\*1\+0x89abcdef\]
 [      ]*[a-f0-9]+:    67 48 b8 ef cd ab 89 00 00 00 00        addr32 movabs rax,0x89abcdef
 [      ]*[a-f0-9]+:    67 48 bb ef cd ab 89 00 00 00 00        addr32 movabs rbx,0x89abcdef
 [      ]*[a-f0-9]+:    67 a2 98 08 60 00       addr32 mov ds:0x600898,al
@@ -27,9 +27,9 @@ Disassembly of section .text:
 [      ]*[a-f0-9]+:    67 a3 98 08 60 00       addr32 mov ds:0x600898,eax
 [      ]*[a-f0-9]+:    67 48 a3 98 08 60 00    addr32 mov ds:0x600898,rax
 [      ]*[a-f0-9]+:    67 48 a3 98 08 80 00    addr32 mov ds:0x800898,rax
-[      ]*[a-f0-9]+:    67 48 89 1c 25 98 08 80 00      mov[ ]+QWORD PTR ds:0x800898,rbx
+[      ]*[a-f0-9]+:    67 48 89 1c 25 98 08 80 00      mov[ ]+QWORD PTR \[eiz\*1\+0x800898\],rbx
 [      ]*[a-f0-9]+:    67 48 a3 ef cd ab 89    addr32 mov ds:0x89abcdef,rax
-[      ]*[a-f0-9]+:    67 48 89 1c 25 ef cd ab 89      mov[ ]+QWORD PTR ds:0x89abcdef,rbx
-[      ]*[a-f0-9]+:    67 89 04 25 11 22 33 ff         mov[ ]+DWORD PTR ds:0xff332211,eax
+[      ]*[a-f0-9]+:    67 48 89 1c 25 ef cd ab 89      mov[ ]+QWORD PTR \[eiz\*1\+0x89abcdef\],rbx
+[      ]*[a-f0-9]+:    67 89 04 25 11 22 33 ff         mov[ ]+DWORD PTR \[eiz\*1\+0xff332211\],eax
 [      ]*[a-f0-9]+:    67 89 04 65 11 22 33 ff         mov[ ]+DWORD PTR \[eiz\*2\+0xff332211\],eax
 #pass
index c513f0dd8e13b2788bbaa360175d336a6476322b..d9481a7439ec363a18ec7050367fba0e485eaff6 100644 (file)
@@ -10,15 +10,15 @@ Disassembly of section .text:
 [      ]*[a-f0-9]+:    67 48 8d 80 00 00 00 00[        ]+lea[  ]+0x0\(%eax\),%rax.*
 [      ]*[a-f0-9]+:    67 49 8d 80 00 00 00 00[        ]+lea[  ]+0x0\(%r8d\),%rax.*
 [      ]*[a-f0-9]+:    67 48 8d 05 00 00 00 00[        ]+lea[  ]+0x0\(%eip\),%rax.*
-[      ]*[a-f0-9]+:    67 48 8d 04 25 00 00 00 00[     ]+lea[ ]+0x0,%rax.*
+[      ]*[a-f0-9]+:    67 48 8d 04 25 00 00 00 00[     ]+lea[ ]+0x0\(,%eiz,1\),%rax.*
 [      ]*[a-f0-9]+:    67 a0 98 08 60 00       addr32 mov 0x600898,%al
 [      ]*[a-f0-9]+:    67 66 a1 98 08 60 00    addr32 mov 0x600898,%ax
 [      ]*[a-f0-9]+:    67 a1 98 08 60 00       addr32 mov 0x600898,%eax
 [      ]*[a-f0-9]+:    67 48 a1 98 08 60 00    addr32 mov 0x600898,%rax
 [      ]*[a-f0-9]+:    67 48 a1 98 08 80 00    addr32 mov 0x800898,%rax
-[      ]*[a-f0-9]+:    67 48 8b 1c 25 98 08 80 00      mov[ ]+0x800898,%rbx
+[      ]*[a-f0-9]+:    67 48 8b 1c 25 98 08 80 00      mov[ ]+0x800898\(,%eiz,1\),%rbx
 [      ]*[a-f0-9]+:    67 48 a1 ef cd ab 89    addr32 mov 0x89abcdef,%rax
-[      ]*[a-f0-9]+:    67 48 8b 1c 25 ef cd ab 89      mov[ ]+0x89abcdef,%rbx
+[      ]*[a-f0-9]+:    67 48 8b 1c 25 ef cd ab 89      mov[ ]+0x89abcdef\(,%eiz,1\),%rbx
 [      ]*[a-f0-9]+:    67 48 b8 ef cd ab 89 00 00 00 00        addr32 movabs \$0x89abcdef,%rax
 [      ]*[a-f0-9]+:    67 48 bb ef cd ab 89 00 00 00 00        addr32 movabs \$0x89abcdef,%rbx
 [      ]*[a-f0-9]+:    67 a2 98 08 60 00       addr32 mov %al,0x600898
@@ -26,9 +26,9 @@ Disassembly of section .text:
 [      ]*[a-f0-9]+:    67 a3 98 08 60 00       addr32 mov %eax,0x600898
 [      ]*[a-f0-9]+:    67 48 a3 98 08 60 00    addr32 mov %rax,0x600898
 [      ]*[a-f0-9]+:    67 48 a3 98 08 80 00    addr32 mov %rax,0x800898
-[      ]*[a-f0-9]+:    67 48 89 1c 25 98 08 80 00      mov[ ]+%rbx,0x800898
+[      ]*[a-f0-9]+:    67 48 89 1c 25 98 08 80 00      mov[ ]+%rbx,0x800898\(,%eiz,1\)
 [      ]*[a-f0-9]+:    67 48 a3 ef cd ab 89    addr32 mov %rax,0x89abcdef
-[      ]*[a-f0-9]+:    67 48 89 1c 25 ef cd ab 89      mov[ ]+%rbx,0x89abcdef
-[      ]*[a-f0-9]+:    67 89 04 25 11 22 33 ff         mov[ ]+%eax,0xff332211
+[      ]*[a-f0-9]+:    67 48 89 1c 25 ef cd ab 89      mov[ ]+%rbx,0x89abcdef\(,%eiz,1\)
+[      ]*[a-f0-9]+:    67 89 04 25 11 22 33 ff         mov[ ]+%eax,0xff332211\(,%eiz,1\)
 [      ]*[a-f0-9]+:    67 89 04 65 11 22 33 ff         mov[ ]+%eax,0xff332211\(,%eiz,2\)
 #pass
index e483d570b92533c658a7f9789c242565f6d0f45e..d8dc7facba37a107ad8f833967fc15b79d3948fc 100644 (file)
@@ -9,12 +9,32 @@
 Disassembly of section \.text:
 
 0+ <_start>:
-[      ]*[a-f0-9]+:[   ]*f2 0f 38 f8 01[       ]*enqcmd rax,\[rcx\]
-[      ]*[a-f0-9]+:[   ]*67 f2 0f 38 f8 01[    ]*enqcmd eax,\[ecx\]
-[      ]*[a-f0-9]+:[   ]*f3 0f 38 f8 01[       ]*enqcmds rax,\[rcx\]
-[      ]*[a-f0-9]+:[   ]*67 f3 0f 38 f8 01[    ]*enqcmds eax,\[ecx\]
-[      ]*[a-f0-9]+:[   ]*f2 0f 38 f8 01[       ]*enqcmd rax,\[rcx\]
-[      ]*[a-f0-9]+:[   ]*67 f2 0f 38 f8 01[    ]*enqcmd eax,\[ecx\]
-[      ]*[a-f0-9]+:[   ]*f3 0f 38 f8 01[       ]*enqcmds rax,\[rcx\]
-[      ]*[a-f0-9]+:[   ]*67 f3 0f 38 f8 01[    ]*enqcmds eax,\[ecx\]
+ +[a-f0-9]+:   f2 0f 38 f8 01          enqcmd rax,\[rcx\]
+ +[a-f0-9]+:   67 f2 0f 38 f8 01       enqcmd eax,\[ecx\]
+ +[a-f0-9]+:   f3 0f 38 f8 01          enqcmds rax,\[rcx\]
+ +[a-f0-9]+:   67 f3 0f 38 f8 01       enqcmds eax,\[ecx\]
+ +[a-f0-9]+:   f2 0f 38 f8 0d 00 00 00 00      enqcmd rcx,\[rip\+0x0\]        #.*
+ +[a-f0-9]+:   67 f2 0f 38 f8 0d 00 00 00 00   enqcmd ecx,\[eip\+0x0\]        #.*
+ +[a-f0-9]+:   67 f2 0f 38 f8 0d 00 00 00 00   enqcmd ecx,\[eip\+0x0\]        #.*
+ +[a-f0-9]+:   f3 0f 38 f8 0d 00 00 00 00      enqcmds rcx,\[rip\+0x0\]        #.*
+ +[a-f0-9]+:   67 f3 0f 38 f8 0d 00 00 00 00   enqcmds ecx,\[eip\+0x0\]        #.*
+ +[a-f0-9]+:   67 f3 0f 38 f8 0d 00 00 00 00   enqcmds ecx,\[eip\+0x0\]        #.*
+ +[a-f0-9]+:   67 f2 0f 38 f8 0c 25 00 00 00 00        enqcmd ecx,\[eiz\*1\+0x0\]
+ +[a-f0-9]+:   67 f2 0f 38 f8 0c 25 78 56 34 12        enqcmd ecx,\[eiz\*1\+0x12345678\]
+ +[a-f0-9]+:   67 f3 0f 38 f8 0c 25 00 00 00 00        enqcmds ecx,\[eiz\*1\+0x0\]
+ +[a-f0-9]+:   67 f3 0f 38 f8 0c 25 78 56 34 12        enqcmds ecx,\[eiz\*1\+0x12345678\]
+ +[a-f0-9]+:   f2 0f 38 f8 01          enqcmd rax,\[rcx\]
+ +[a-f0-9]+:   67 f2 0f 38 f8 01       enqcmd eax,\[ecx\]
+ +[a-f0-9]+:   f3 0f 38 f8 01          enqcmds rax,\[rcx\]
+ +[a-f0-9]+:   67 f3 0f 38 f8 01       enqcmds eax,\[ecx\]
+ +[a-f0-9]+:   f2 0f 38 f8 0d 00 00 00 00      enqcmd rcx,\[rip\+0x0\]        #.*
+ +[a-f0-9]+:   67 f2 0f 38 f8 0d 00 00 00 00   enqcmd ecx,\[eip\+0x0\]        #.*
+ +[a-f0-9]+:   67 f2 0f 38 f8 0d 00 00 00 00   enqcmd ecx,\[eip\+0x0\]        #.*
+ +[a-f0-9]+:   f3 0f 38 f8 0d 00 00 00 00      enqcmds rcx,\[rip\+0x0\]        #.*
+ +[a-f0-9]+:   67 f3 0f 38 f8 0d 00 00 00 00   enqcmds ecx,\[eip\+0x0\]        #.*
+ +[a-f0-9]+:   67 f3 0f 38 f8 0d 00 00 00 00   enqcmds ecx,\[eip\+0x0\]        #.*
+ +[a-f0-9]+:   67 f2 0f 38 f8 0c 25 00 00 00 00        enqcmd ecx,\[eiz\*1\+0x0\]
+ +[a-f0-9]+:   67 f2 0f 38 f8 0c 25 78 56 34 12        enqcmd ecx,\[eiz\*1\+0x12345678\]
+ +[a-f0-9]+:   67 f3 0f 38 f8 0c 25 00 00 00 00        enqcmds ecx,\[eiz\*1\+0x0\]
+ +[a-f0-9]+:   67 f3 0f 38 f8 0c 25 78 56 34 12        enqcmds ecx,\[eiz\*1\+0x12345678\]
 #pass
index 337febf320fef9d8479578dd38dc95113f158937..e6f627ff09a2e753515299c5426d600f009ba406 100644 (file)
@@ -9,12 +9,32 @@
 Disassembly of section \.text:
 
 0+ <_start>:
-[      ]*[a-f0-9]+:[   ]*f2 0f 38 f8 01[       ]*enqcmd \(%rcx\),%rax
-[      ]*[a-f0-9]+:[   ]*67 f2 0f 38 f8 01[    ]*enqcmd \(%ecx\),%eax
-[      ]*[a-f0-9]+:[   ]*f3 0f 38 f8 01[       ]*enqcmds \(%rcx\),%rax
-[      ]*[a-f0-9]+:[   ]*67 f3 0f 38 f8 01[    ]*enqcmds \(%ecx\),%eax
-[      ]*[a-f0-9]+:[   ]*f2 0f 38 f8 01[       ]*enqcmd \(%rcx\),%rax
-[      ]*[a-f0-9]+:[   ]*67 f2 0f 38 f8 01[    ]*enqcmd \(%ecx\),%eax
-[      ]*[a-f0-9]+:[   ]*f3 0f 38 f8 01[       ]*enqcmds \(%rcx\),%rax
-[      ]*[a-f0-9]+:[   ]*67 f3 0f 38 f8 01[    ]*enqcmds \(%ecx\),%eax
+ +[a-f0-9]+:   f2 0f 38 f8 01          enqcmd \(%rcx\),%rax
+ +[a-f0-9]+:   67 f2 0f 38 f8 01       enqcmd \(%ecx\),%eax
+ +[a-f0-9]+:   f3 0f 38 f8 01          enqcmds \(%rcx\),%rax
+ +[a-f0-9]+:   67 f3 0f 38 f8 01       enqcmds \(%ecx\),%eax
+ +[a-f0-9]+:   f2 0f 38 f8 0d 00 00 00 00      enqcmd 0x0\(%rip\),%rcx        #.*
+ +[a-f0-9]+:   67 f2 0f 38 f8 0d 00 00 00 00   enqcmd 0x0\(%eip\),%ecx        #.*
+ +[a-f0-9]+:   67 f2 0f 38 f8 0d 00 00 00 00   enqcmd 0x0\(%eip\),%ecx        #.*
+ +[a-f0-9]+:   f3 0f 38 f8 0d 00 00 00 00      enqcmds 0x0\(%rip\),%rcx        #.*
+ +[a-f0-9]+:   67 f3 0f 38 f8 0d 00 00 00 00   enqcmds 0x0\(%eip\),%ecx        #.*
+ +[a-f0-9]+:   67 f3 0f 38 f8 0d 00 00 00 00   enqcmds 0x0\(%eip\),%ecx        #.*
+ +[a-f0-9]+:   67 f2 0f 38 f8 0c 25 00 00 00 00        enqcmd 0x0\(,%eiz,1\),%ecx
+ +[a-f0-9]+:   67 f2 0f 38 f8 0c 25 78 56 34 12        enqcmd 0x12345678\(,%eiz,1\),%ecx
+ +[a-f0-9]+:   67 f3 0f 38 f8 0c 25 00 00 00 00        enqcmds 0x0\(,%eiz,1\),%ecx
+ +[a-f0-9]+:   67 f3 0f 38 f8 0c 25 78 56 34 12        enqcmds 0x12345678\(,%eiz,1\),%ecx
+ +[a-f0-9]+:   f2 0f 38 f8 01          enqcmd \(%rcx\),%rax
+ +[a-f0-9]+:   67 f2 0f 38 f8 01       enqcmd \(%ecx\),%eax
+ +[a-f0-9]+:   f3 0f 38 f8 01          enqcmds \(%rcx\),%rax
+ +[a-f0-9]+:   67 f3 0f 38 f8 01       enqcmds \(%ecx\),%eax
+ +[a-f0-9]+:   f2 0f 38 f8 0d 00 00 00 00      enqcmd 0x0\(%rip\),%rcx        #.*
+ +[a-f0-9]+:   67 f2 0f 38 f8 0d 00 00 00 00   enqcmd 0x0\(%eip\),%ecx        #.*
+ +[a-f0-9]+:   67 f2 0f 38 f8 0d 00 00 00 00   enqcmd 0x0\(%eip\),%ecx        #.*
+ +[a-f0-9]+:   f3 0f 38 f8 0d 00 00 00 00      enqcmds 0x0\(%rip\),%rcx        #.*
+ +[a-f0-9]+:   67 f3 0f 38 f8 0d 00 00 00 00   enqcmds 0x0\(%eip\),%ecx        #.*
+ +[a-f0-9]+:   67 f3 0f 38 f8 0d 00 00 00 00   enqcmds 0x0\(%eip\),%ecx        #.*
+ +[a-f0-9]+:   67 f2 0f 38 f8 0c 25 00 00 00 00        enqcmd 0x0\(,%eiz,1\),%ecx
+ +[a-f0-9]+:   67 f2 0f 38 f8 0c 25 78 56 34 12        enqcmd 0x12345678\(,%eiz,1\),%ecx
+ +[a-f0-9]+:   67 f3 0f 38 f8 0c 25 00 00 00 00        enqcmds 0x0\(,%eiz,1\),%ecx
+ +[a-f0-9]+:   67 f3 0f 38 f8 0c 25 78 56 34 12        enqcmds 0x12345678\(,%eiz,1\),%ecx
 #pass
index f790b28fc20435a90fa7768a77b9fa7c89ff808c..a03a5ffc5f33fe4dba0bfb04781c8b5d4bf26ceb 100644 (file)
@@ -7,9 +7,29 @@ _start:
        enqcmd (%ecx),%eax
        enqcmds (%rcx),%rax
        enqcmds (%ecx),%eax
+       enqcmd foo(%rip),%rcx
+       enqcmd foo(%rip),%ecx
+       enqcmd foo(%eip),%ecx
+       enqcmds foo(%rip),%rcx
+       enqcmds foo(%rip),%ecx
+       enqcmds foo(%eip),%ecx
+       enqcmd foo, %ecx
+       enqcmd 0x12345678, %ecx
+       enqcmds foo, %ecx
+       enqcmds 0x12345678, %ecx
 
        .intel_syntax noprefix
        enqcmd rax,[rcx]
        enqcmd eax,[ecx]
        enqcmds rax,[rcx]
        enqcmds eax,[ecx]
+       enqcmd rcx,[rip+foo]
+       enqcmd ecx,[rip+foo]
+       enqcmd ecx,[eip+foo]
+       enqcmds rcx,[rip+foo]
+       enqcmds ecx,[rip+foo]
+       enqcmds ecx,[eip+foo]
+       enqcmd ecx,ds:foo
+       enqcmd ecx,ds:0x12345678
+       enqcmds ecx,ds:foo
+       enqcmds ecx,ds:0x12345678
index 0f3a5abd610d39fdc00e27fa61985856aa3715df..a35bc6ca5d81ea2f029f96444f34d144bead3f04 100644 (file)
@@ -9,13 +9,23 @@
 Disassembly of section \.text:
 
 0+ <_start>:
-[      ]*[a-f0-9]+:[   ]*48 0f 38 f9 01[       ]*movdiri QWORD PTR \[rcx\],rax
-[      ]*[a-f0-9]+:[   ]*66 0f 38 f8 01[       ]*movdir64b rax,\[rcx\]
-[      ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 01[    ]*movdir64b eax,\[ecx]
-[      ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri DWORD PTR \[rcx\],eax
-[      ]*[a-f0-9]+:[   ]*48 0f 38 f9 01[       ]*movdiri QWORD PTR \[rcx\],rax
-[      ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri DWORD PTR \[rcx\],eax
-[      ]*[a-f0-9]+:[   ]*48 0f 38 f9 01[       ]*movdiri QWORD PTR \[rcx\],rax
-[      ]*[a-f0-9]+:[   ]*66 0f 38 f8 01[       ]*movdir64b rax,\[rcx\]
-[      ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 01[    ]*movdir64b eax,\[ecx\]
+ +[a-f0-9]+:   48 0f 38 f9 01          movdiri QWORD PTR \[rcx\],rax
+ +[a-f0-9]+:   66 0f 38 f8 01          movdir64b rax,\[rcx\]
+ +[a-f0-9]+:   67 66 0f 38 f8 01       movdir64b eax,\[ecx\]
+ +[a-f0-9]+:   66 0f 38 f8 0d 00 00 00 00      movdir64b rcx,\[rip\+0x0\]        #.*
+ +[a-f0-9]+:   67 66 0f 38 f8 0d 00 00 00 00   movdir64b ecx,\[eip\+0x0\]        #.*
+ +[a-f0-9]+:   67 66 0f 38 f8 0d 00 00 00 00   movdir64b ecx,\[eip\+0x0\]        #.*
+ +[a-f0-9]+:   67 66 0f 38 f8 0c 25 00 00 00 00        movdir64b ecx,\[eiz\*1\+0x0\]
+ +[a-f0-9]+:   67 66 0f 38 f8 0c 25 78 56 34 12        movdir64b ecx,\[eiz\*1\+0x12345678\]
+ +[a-f0-9]+:   0f 38 f9 01             movdiri DWORD PTR \[rcx\],eax
+ +[a-f0-9]+:   48 0f 38 f9 01          movdiri QWORD PTR \[rcx\],rax
+ +[a-f0-9]+:   0f 38 f9 01             movdiri DWORD PTR \[rcx\],eax
+ +[a-f0-9]+:   48 0f 38 f9 01          movdiri QWORD PTR \[rcx\],rax
+ +[a-f0-9]+:   66 0f 38 f8 01          movdir64b rax,\[rcx\]
+ +[a-f0-9]+:   67 66 0f 38 f8 01       movdir64b eax,\[ecx\]
+ +[a-f0-9]+:   66 0f 38 f8 0d 00 00 00 00      movdir64b rcx,\[rip\+0x0\]        #.*
+ +[a-f0-9]+:   67 66 0f 38 f8 0d 00 00 00 00   movdir64b ecx,\[eip\+0x0\]        #.*
+ +[a-f0-9]+:   67 66 0f 38 f8 0d 00 00 00 00   movdir64b ecx,\[eip\+0x0\]        #.*
+ +[a-f0-9]+:   67 66 0f 38 f8 0c 25 00 00 00 00        movdir64b ecx,\[eiz\*1\+0x0\]
+ +[a-f0-9]+:   67 66 0f 38 f8 0c 25 78 56 34 12        movdir64b ecx,\[eiz\*1\+0x12345678\]
 #pass
index 2deab8928e666c5037b8d83ae0d50d45a7fba0ac..d65787177dc4eac92d420f60efd0e2fe4d63b097 100644 (file)
@@ -9,13 +9,23 @@
 Disassembly of section \.text:
 
 0+ <_start>:
-[      ]*[a-f0-9]+:[   ]*48 0f 38 f9 01[       ]*movdiri %rax,\(%rcx\)
-[      ]*[a-f0-9]+:[   ]*66 0f 38 f8 01[       ]*movdir64b \(%rcx\),%rax
-[      ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 01[    ]*movdir64b \(%ecx\),%eax
-[      ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri %eax,\(%rcx\)
-[      ]*[a-f0-9]+:[   ]*48 0f 38 f9 01[       ]*movdiri %rax,\(%rcx\)
-[      ]*[a-f0-9]+:[   ]*0f 38 f9 01[  ]*movdiri %eax,\(%rcx\)
-[      ]*[a-f0-9]+:[   ]*48 0f 38 f9 01[       ]*movdiri %rax,\(%rcx\)
-[      ]*[a-f0-9]+:[   ]*66 0f 38 f8 01[       ]*movdir64b \(%rcx\),%rax
-[      ]*[a-f0-9]+:[   ]*67 66 0f 38 f8 01[    ]*movdir64b \(%ecx\),%eax
+ +[a-f0-9]+:   48 0f 38 f9 01          movdiri %rax,\(%rcx\)
+ +[a-f0-9]+:   66 0f 38 f8 01          movdir64b \(%rcx\),%rax
+ +[a-f0-9]+:   67 66 0f 38 f8 01       movdir64b \(%ecx\),%eax
+ +[a-f0-9]+:   66 0f 38 f8 0d 00 00 00 00      movdir64b 0x0\(%rip\),%rcx        #.*
+ +[a-f0-9]+:   67 66 0f 38 f8 0d 00 00 00 00   movdir64b 0x0\(%eip\),%ecx        #.*
+ +[a-f0-9]+:   67 66 0f 38 f8 0d 00 00 00 00   movdir64b 0x0\(%eip\),%ecx        #.*
+ +[a-f0-9]+:   67 66 0f 38 f8 0c 25 00 00 00 00        movdir64b 0x0\(,%eiz,1\),%ecx
+ +[a-f0-9]+:   67 66 0f 38 f8 0c 25 78 56 34 12        movdir64b 0x12345678\(,%eiz,1\),%ecx
+ +[a-f0-9]+:   0f 38 f9 01             movdiri %eax,\(%rcx\)
+ +[a-f0-9]+:   48 0f 38 f9 01          movdiri %rax,\(%rcx\)
+ +[a-f0-9]+:   0f 38 f9 01             movdiri %eax,\(%rcx\)
+ +[a-f0-9]+:   48 0f 38 f9 01          movdiri %rax,\(%rcx\)
+ +[a-f0-9]+:   66 0f 38 f8 01          movdir64b \(%rcx\),%rax
+ +[a-f0-9]+:   67 66 0f 38 f8 01       movdir64b \(%ecx\),%eax
+ +[a-f0-9]+:   66 0f 38 f8 0d 00 00 00 00      movdir64b 0x0\(%rip\),%rcx        #.*
+ +[a-f0-9]+:   67 66 0f 38 f8 0d 00 00 00 00   movdir64b 0x0\(%eip\),%ecx        #.*
+ +[a-f0-9]+:   67 66 0f 38 f8 0d 00 00 00 00   movdir64b 0x0\(%eip\),%ecx        #.*
+ +[a-f0-9]+:   67 66 0f 38 f8 0c 25 00 00 00 00        movdir64b 0x0\(,%eiz,1\),%ecx
+ +[a-f0-9]+:   67 66 0f 38 f8 0c 25 78 56 34 12        movdir64b 0x12345678\(,%eiz,1\),%ecx
 #pass
index 6f9032dc4b34354ee1ec4fade597366dd43a6ef4..ad69bb13223271263c768253965d2c0879affa56 100644 (file)
@@ -6,6 +6,11 @@ _start:
        movdiri %rax, (%rcx)
        movdir64b (%rcx),%rax
        movdir64b (%ecx),%eax
+       movdir64b foo(%rip),%rcx
+       movdir64b foo(%rip),%ecx
+       movdir64b foo(%eip),%ecx
+       movdir64b foo, %ecx
+       movdir64b 0x12345678, %ecx
 
        .intel_syntax noprefix
        movdiri [rcx],eax
@@ -14,3 +19,8 @@ _start:
        movdiri qword ptr [rcx],rax
        movdir64b rax,[rcx]
        movdir64b eax,[ecx]
+       movdir64b rcx,[rip+foo]
+       movdir64b ecx,[rip+foo]
+       movdir64b ecx,[eip+foo]
+       movdir64b ecx,ds:foo
+       movdir64b ecx,ds:0x12345678
index 7818b86b13402d9305990ceff7d8e523660e8a4a..0b75d75ae2d37a71e56014d5801cf88620f03b2b 100644 (file)
 Disassembly of section \.text:
 
 0+00 <ppc476>:
-   0:  (7c 64 2a 14|14 2a 64 7c)       add     r3,r4,r5
-   4:  (7c 64 2a 15|15 2a 64 7c)       add\.    r3,r4,r5
-   8:  (7c 64 28 14|14 28 64 7c)       addc    r3,r4,r5
-   c:  (7c 64 28 15|15 28 64 7c)       addc\.   r3,r4,r5
-  10:  (7c 64 2c 14|14 2c 64 7c)       addco   r3,r4,r5
-  14:  (7c 64 2c 15|15 2c 64 7c)       addco\.  r3,r4,r5
-  18:  (7c 64 29 14|14 29 64 7c)       adde    r3,r4,r5
-  1c:  (7c 64 29 15|15 29 64 7c)       adde\.   r3,r4,r5
-  20:  (7c 64 2d 14|14 2d 64 7c)       addeo   r3,r4,r5
-  24:  (7c 64 2d 15|15 2d 64 7c)       addeo\.  r3,r4,r5
-  28:  (38 64 ff 80|80 ff 64 38)       addi    r3,r4,-128
-  2c:  (30 64 ff 80|80 ff 64 30)       addic   r3,r4,-128
-  30:  (34 64 ff 80|80 ff 64 34)       addic\.  r3,r4,-128
-  34:  (3c 64 ff 80|80 ff 64 3c)       addis   r3,r4,-128
-  38:  (7c 64 01 d4|d4 01 64 7c)       addme   r3,r4
-  3c:  (7c 64 01 d5|d5 01 64 7c)       addme\.  r3,r4
-  40:  (7c 64 05 d4|d4 05 64 7c)       addmeo  r3,r4
-  44:  (7c 64 05 d5|d5 05 64 7c)       addmeo\. r3,r4
-  48:  (7c 64 2e 14|14 2e 64 7c)       addo    r3,r4,r5
-  4c:  (7c 64 2e 15|15 2e 64 7c)       addo\.   r3,r4,r5
-  50:  (7c 64 01 94|94 01 64 7c)       addze   r3,r4
-  54:  (7c 64 01 95|95 01 64 7c)       addze\.  r3,r4
-  58:  (7c 64 05 94|94 05 64 7c)       addzeo  r3,r4
-  5c:  (7c 64 05 95|95 05 64 7c)       addzeo\. r3,r4
-  60:  (7c 83 28 38|38 28 83 7c)       and     r3,r4,r5
-  64:  (7c 83 28 39|39 28 83 7c)       and\.    r3,r4,r5
-  68:  (7d cd 78 78|78 78 cd 7d)       andc    r13,r14,r15
-  6c:  (7e 30 90 79|79 90 30 7e)       andc\.   r16,r17,r18
-  70:  (70 83 de ad|ad de 83 70)       andi\.   r3,r4,57005
-  74:  (74 83 de ad|ad de 83 74)       andis\.  r3,r4,57005
-  78:  (48 00 00 02|02 00 00 48)       ba      0 <ppc476>
-  7c:  (40 01 00 00|00 00 01 40)       bdnzf   gt,7c <ppc476\+0x7c>
-  80:  (40 85 00 02|02 00 85 40)       blea    cr1,0 <ppc476>
-  84:  (4d 80 04 20|20 04 80 4d)       bltctr
-  88:  (4c 8a 04 20|20 04 8a 4c)       bnectr  cr2
-  8c:  (4c 86 04 20|20 04 86 4c)       bnectr  cr1
-  90:  (4c 86 04 20|20 04 86 4c)       bnectr  cr1
-  94:  (4d 80 04 21|21 04 80 4d)       bltctrl
-  98:  (4c 8a 04 21|21 04 8a 4c)       bnectrl cr2
-  9c:  (4c 86 04 21|21 04 86 4c)       bnectrl cr1
-  a0:  (4c 86 04 21|21 04 86 4c)       bnectrl cr1
-  a4:  (40 43 00 01|01 00 43 40)       bdzfl   so,a4 <ppc476\+0xa4>
-  a8:  (4d 80 00 20|20 00 80 4d)       bltlr
-  ac:  (4c 8a 00 20|20 00 8a 4c)       bnelr   cr2
-  b0:  (4c 86 00 20|20 00 86 4c)       bnelr   cr1
-  b4:  (4c 86 00 20|20 00 86 4c)       bnelr   cr1
-  b8:  (4d 80 00 21|21 00 80 4d)       bltlrl
-  bc:  (4c 8a 00 21|21 00 8a 4c)       bnelrl  cr2
-  c0:  (4c 86 00 21|21 00 86 4c)       bnelrl  cr1
-  c4:  (4c 86 00 21|21 00 86 4c)       bnelrl  cr1
-  c8:  (48 00 00 00|00 00 00 48)       b       c8 <ppc476\+0xc8>
-  cc:  (48 00 00 01|01 00 00 48)       bl      cc <ppc476\+0xcc>
-  d0:  (54 83 00 36|36 00 83 54)       rlwinm  r3,r4,0,0,27
-  d4:  (7c 03 20 00|00 20 03 7c)       cmpw    r3,r4
-  d8:  (7f 83 20 00|00 20 83 7f)       cmpw    cr7,r3,r4
-  dc:  (7c 83 2b f8|f8 2b 83 7c)       cmpb    r3,r4,r5
-  e0:  (7c 83 2b f8|f8 2b 83 7c)       cmpb    r3,r4,r5
-  e4:  (2c 03 ff 59|59 ff 03 2c)       cmpwi   r3,-167
-  e8:  (2f 83 ff 59|59 ff 83 2f)       cmpwi   cr7,r3,-167
-  ec:  (7c 03 20 40|40 20 03 7c)       cmplw   r3,r4
-  f0:  (7f 83 20 40|40 20 83 7f)       cmplw   cr7,r3,r4
-  f4:  (28 03 00 a7|a7 00 03 28)       cmplwi  r3,167
-  f8:  (2b 83 00 a7|a7 00 83 2b)       cmplwi  cr7,r3,167
-  fc:  (7c 03 20 40|40 20 03 7c)       cmplw   r3,r4
- 100:  (28 03 00 a7|a7 00 03 28)       cmplwi  r3,167
- 104:  (7c 03 20 00|00 20 03 7c)       cmpw    r3,r4
- 108:  (2c 03 ff 59|59 ff 03 2c)       cmpwi   r3,-167
- 10c:  (7d 6a 00 34|34 00 6a 7d)       cntlzw  r10,r11
- 110:  (7d 6a 00 35|35 00 6a 7d)       cntlzw\. r10,r11
- 114:  (4c 85 32 02|02 32 85 4c)       crand   4\*cr1\+lt,4\*cr1\+gt,4\*cr1\+eq
- 118:  (4c 64 29 02|02 29 64 4c)       crandc  so,4\*cr1\+lt,4\*cr1\+gt
- 11c:  (4c e0 0a 42|42 0a e0 4c)       creqv   4\*cr1\+so,lt,gt
- 120:  (4c 22 19 c2|c2 19 22 4c)       crnand  gt,eq,so
- 124:  (4c 01 10 42|42 10 01 4c)       crnor   lt,gt,eq
- 128:  (4c a6 3b 82|82 3b a6 4c)       cror    4\*cr1\+gt,4\*cr1\+eq,4\*cr1\+so
- 12c:  (4c 43 23 42|42 23 43 4c)       crorc   eq,so,4\*cr1\+lt
- 130:  (4c c7 01 82|82 01 c7 4c)       crxor   4\*cr1\+eq,4\*cr1\+so,lt
- 134:  (7c 09 55 ec|ec 55 09 7c)       dcba    r9,r10
- 138:  (7c 06 38 ac|ac 38 06 7c)       dcbf    r6,r7
- 13c:  (7c 06 38 ac|ac 38 06 7c)       dcbf    r6,r7
- 140:  (7c 06 3b ac|ac 3b 06 7c)       dcbi    r6,r7
- 144:  (7c 85 33 0c|0c 33 85 7c)       dcblc   4,r5,r6
- 148:  (7c 06 38 6c|6c 38 06 7c)       dcbst   r6,r7
- 14c:  (7c 05 32 2c|2c 32 05 7c)       dcbt    r5,r6
- 150:  (7c 05 32 2c|2c 32 05 7c)       dcbt    r5,r6
- 154:  (7d 05 32 2c|2c 32 05 7d)       dcbt    8,r5,r6
- 158:  (7c e8 49 4c|4c 49 e8 7c)       dcbtls  7,r8,r9
- 15c:  (7c 06 39 ec|ec 39 06 7c)       dcbtst  r6,r7
- 160:  (7c 06 39 ec|ec 39 06 7c)       dcbtst  r6,r7
- 164:  (7d 26 39 ec|ec 39 26 7d)       dcbtst  9,r6,r7
- 168:  (7d 4b 61 0c|0c 61 4b 7d)       dcbtstls 10,r11,r12
- 16c:  (7c 01 17 ec|ec 17 01 7c)       dcbz    r1,r2
- 170:  (7c 05 37 ec|ec 37 05 7c)       dcbz    r5,r6
- 174:  (7c 00 03 8c|8c 03 00 7c)       dccci
- 178:  (7c 00 03 8c|8c 03 00 7c)       dccci
- 17c:  (7c 00 03 8c|8c 03 00 7c)       dccci
- 180:  (7c 20 03 8c|8c 03 20 7c)       dci     1
- 184:  (7d 4b 63 d6|d6 63 4b 7d)       divw    r10,r11,r12
- 188:  (7d 6c 6b d7|d7 6b 6c 7d)       divw\.   r11,r12,r13
- 18c:  (7d 4b 67 d6|d6 67 4b 7d)       divwo   r10,r11,r12
- 190:  (7d 6c 6f d7|d7 6f 6c 7d)       divwo\.  r11,r12,r13
- 194:  (7d 4b 63 96|96 63 4b 7d)       divwu   r10,r11,r12
- 198:  (7d 6c 6b 97|97 6b 6c 7d)       divwu\.  r11,r12,r13
- 19c:  (7d 4b 67 96|96 67 4b 7d)       divwuo  r10,r11,r12
- 1a0:  (7d 6c 6f 97|97 6f 6c 7d)       divwuo\. r11,r12,r13
- 1a4:  (7c 83 28 9c|9c 28 83 7c)       dlmzb   r3,r4,r5
- 1a8:  (7c 83 28 9d|9d 28 83 7c)       dlmzb\.  r3,r4,r5
- 1ac:  (7d 6a 62 38|38 62 6a 7d)       eqv     r10,r11,r12
- 1b0:  (7d 6a 62 39|39 62 6a 7d)       eqv\.    r10,r11,r12
- 1b4:  (54 83 20 26|26 20 83 54)       rlwinm  r3,r4,4,0,19
- 1b8:  (7c 83 07 74|74 07 83 7c)       extsb   r3,r4
- 1bc:  (7c 83 07 75|75 07 83 7c)       extsb\.  r3,r4
- 1c0:  (7c 83 07 34|34 07 83 7c)       extsh   r3,r4
- 1c4:  (7c 83 07 35|35 07 83 7c)       extsh\.  r3,r4
- 1c8:  (fe a0 fa 10|10 fa a0 fe)       fabs    f21,f31
- 1cc:  (fe a0 fa 11|11 fa a0 fe)       fabs\.   f21,f31
- 1d0:  (fd 4b 60 2a|2a 60 4b fd)       fadd    f10,f11,f12
- 1d4:  (fd 4b 60 2b|2b 60 4b fd)       fadd\.   f10,f11,f12
- 1d8:  (ed 4b 60 2a|2a 60 4b ed)       fadds   f10,f11,f12
- 1dc:  (ed 4b 60 2b|2b 60 4b ed)       fadds\.  f10,f11,f12
- 1e0:  (fd 40 5e 9c|9c 5e 40 fd)       fcfid   f10,f11
- 1e4:  (fd 40 5e 9d|9d 5e 40 fd)       fcfid\.  f10,f11
- 1e8:  (fd 8a 58 40|40 58 8a fd)       fcmpo   cr3,f10,f11
- 1ec:  (fd 84 28 00|00 28 84 fd)       fcmpu   cr3,f4,f5
- 1f0:  (fd 4b 60 10|10 60 4b fd)       fcpsgn  f10,f11,f12
- 1f4:  (fd 4b 60 11|11 60 4b fd)       fcpsgn\. f10,f11,f12
- 1f8:  (fd 40 5e 5c|5c 5e 40 fd)       fctid   f10,f11
- 1fc:  (fd 40 5e 5d|5d 5e 40 fd)       fctid\.  f10,f11
- 200:  (fd 40 5e 5e|5e 5e 40 fd)       fctidz  f10,f11
- 204:  (fd 40 5e 5f|5f 5e 40 fd)       fctidz\. f10,f11
- 208:  (fd 40 58 1c|1c 58 40 fd)       fctiw   f10,f11
- 20c:  (fd 40 58 1d|1d 58 40 fd)       fctiw\.  f10,f11
- 210:  (fd 40 58 1e|1e 58 40 fd)       fctiwz  f10,f11
- 214:  (fd 40 58 1f|1f 58 40 fd)       fctiwz\. f10,f11
- 218:  (fd 4b 60 24|24 60 4b fd)       fdiv    f10,f11,f12
- 21c:  (fd 4b 60 25|25 60 4b fd)       fdiv\.   f10,f11,f12
- 220:  (ed 4b 60 24|24 60 4b ed)       fdivs   f10,f11,f12
- 224:  (ed 4b 60 25|25 60 4b ed)       fdivs\.  f10,f11,f12
- 228:  (fd 4b 6b 3a|3a 6b 4b fd)       fmadd   f10,f11,f12,f13
- 22c:  (fd 4b 6b 3b|3b 6b 4b fd)       fmadd\.  f10,f11,f12,f13
- 230:  (ed 4b 6b 3a|3a 6b 4b ed)       fmadds  f10,f11,f12,f13
- 234:  (ed 4b 6b 3b|3b 6b 4b ed)       fmadds\. f10,f11,f12,f13
- 238:  (fc 60 20 90|90 20 60 fc)       fmr     f3,f4
- 23c:  (fc 60 20 91|91 20 60 fc)       fmr\.    f3,f4
- 240:  (fd 4b 6b 38|38 6b 4b fd)       fmsub   f10,f11,f12,f13
- 244:  (fd 4b 6b 39|39 6b 4b fd)       fmsub\.  f10,f11,f12,f13
- 248:  (ed 4b 6b 38|38 6b 4b ed)       fmsubs  f10,f11,f12,f13
- 24c:  (ed 4b 6b 39|39 6b 4b ed)       fmsubs\. f10,f11,f12,f13
- 250:  (fd 4b 03 32|32 03 4b fd)       fmul    f10,f11,f12
- 254:  (fd 4b 03 33|33 03 4b fd)       fmul\.   f10,f11,f12
- 258:  (ed 4b 03 32|32 03 4b ed)       fmuls   f10,f11,f12
- 25c:  (ed 4b 03 33|33 03 4b ed)       fmuls\.  f10,f11,f12
- 260:  (fe 80 f1 10|10 f1 80 fe)       fnabs   f20,f30
- 264:  (fe 80 f1 11|11 f1 80 fe)       fnabs\.  f20,f30
- 268:  (fc 60 20 50|50 20 60 fc)       fneg    f3,f4
- 26c:  (fc 60 20 51|51 20 60 fc)       fneg\.   f3,f4
- 270:  (fd 4b 6b 3e|3e 6b 4b fd)       fnmadd  f10,f11,f12,f13
- 274:  (fd 4b 6b 3f|3f 6b 4b fd)       fnmadd\. f10,f11,f12,f13
- 278:  (ed 4b 6b 3e|3e 6b 4b ed)       fnmadds f10,f11,f12,f13
- 27c:  (ed 4b 6b 3f|3f 6b 4b ed)       fnmadds\. f10,f11,f12,f13
- 280:  (fd 4b 6b 3c|3c 6b 4b fd)       fnmsub  f10,f11,f12,f13
- 284:  (fd 4b 6b 3d|3d 6b 4b fd)       fnmsub\. f10,f11,f12,f13
- 288:  (ed 4b 6b 3c|3c 6b 4b ed)       fnmsubs f10,f11,f12,f13
- 28c:  (ed 4b 6b 3d|3d 6b 4b ed)       fnmsubs\. f10,f11,f12,f13
- 290:  (fd c0 78 30|30 78 c0 fd)       fre     f14,f15
- 294:  (fd c0 78 31|31 78 c0 fd)       fre\.    f14,f15
- 298:  (ed c0 78 30|30 78 c0 ed)       fres    f14,f15
- 29c:  (ed c0 78 31|31 78 c0 ed)       fres\.   f14,f15
- 2a0:  (fd 40 5b d0|d0 5b 40 fd)       frim    f10,f11
- 2a4:  (fd 40 5b d1|d1 5b 40 fd)       frim\.   f10,f11
- 2a8:  (fd 40 5b 10|10 5b 40 fd)       frin    f10,f11
- 2ac:  (fd 40 5b 11|11 5b 40 fd)       frin\.   f10,f11
- 2b0:  (fd 40 5b 90|90 5b 40 fd)       frip    f10,f11
- 2b4:  (fd 40 5b 91|91 5b 40 fd)       frip\.   f10,f11
- 2b8:  (fd 40 5b 50|50 5b 40 fd)       friz    f10,f11
- 2bc:  (fd 40 5b 51|51 5b 40 fd)       friz\.   f10,f11
- 2c0:  (fc c0 38 18|18 38 c0 fc)       frsp    f6,f7
- 2c4:  (fd 00 48 19|19 48 00 fd)       frsp\.   f8,f9
- 2c8:  (fd c0 78 34|34 78 c0 fd)       frsqrte f14,f15
- 2cc:  (fd c0 78 35|35 78 c0 fd)       frsqrte\. f14,f15
- 2d0:  (ed c0 78 34|34 78 c0 ed)       frsqrtes f14,f15
- 2d4:  (ed c0 78 35|35 78 c0 ed)       frsqrtes\. f14,f15
- 2d8:  (fd 4b 6b 2e|2e 6b 4b fd)       fsel    f10,f11,f12,f13
- 2dc:  (fd 4b 6b 2f|2f 6b 4b fd)       fsel\.   f10,f11,f12,f13
- 2e0:  (fd 40 58 2c|2c 58 40 fd)       fsqrt   f10,f11
- 2e4:  (fd 40 58 2d|2d 58 40 fd)       fsqrt\.  f10,f11
- 2e8:  (ed 40 58 2c|2c 58 40 ed)       fsqrts  f10,f11
- 2ec:  (ed 40 58 2d|2d 58 40 ed)       fsqrts\. f10,f11
- 2f0:  (fd 4b 60 28|28 60 4b fd)       fsub    f10,f11,f12
- 2f4:  (fd 4b 60 29|29 60 4b fd)       fsub\.   f10,f11,f12
- 2f8:  (ed 4b 60 28|28 60 4b ed)       fsubs   f10,f11,f12
- 2fc:  (ed 4b 60 29|29 60 4b ed)       fsubs\.  f10,f11,f12
- 300:  (7c 03 27 ac|ac 27 03 7c)       icbi    r3,r4
- 304:  (7e 11 91 cc|cc 91 11 7e)       icblc   16,r17,r18
- 308:  (7c a8 48 2c|2c 48 a8 7c)       icbt    5,r8,r9
- 30c:  (7d ae 7b cc|cc 7b ae 7d)       icbtls  13,r14,r15
- 310:  (7c 00 07 8c|8c 07 00 7c)       iccci
- 314:  (7c 00 07 8c|8c 07 00 7c)       iccci
- 318:  (7c 00 07 8c|8c 07 00 7c)       iccci
- 31c:  (7c 20 07 8c|8c 07 20 7c)       ici     1
- 320:  (7c 03 27 cc|cc 27 03 7c)       icread  r3,r4
- 324:  (50 83 65 36|36 65 83 50)       rlwimi  r3,r4,12,20,27
- 328:  (7c 43 27 1e|1e 27 43 7c)       isel    r2,r3,r4,28
- 32c:  (4c 00 01 2c|2c 01 00 4c)       isync
- 330:  (89 21 00 00|00 00 21 89)       lbz     r9,0\(r1\)
- 334:  (8d 41 00 01|01 00 41 8d)       lbzu    r10,1\(r1\)
- 338:  (7e 95 b0 ee|ee b0 95 7e)       lbzux   r20,r21,r22
- 33c:  (7c 64 28 ae|ae 28 64 7c)       lbzx    r3,r4,r5
- 340:  (ca a1 00 08|08 00 a1 ca)       lfd     f21,8\(r1\)
- 344:  (ce c1 00 10|10 00 c1 ce)       lfdu    f22,16\(r1\)
- 348:  (7e 95 b4 ee|ee b4 95 7e)       lfdux   f20,r21,r22
- 34c:  (7d ae 7c ae|ae 7c ae 7d)       lfdx    f13,r14,r15
- 350:  (7d 43 26 ae|ae 26 43 7d)       lfiwax  f10,r3,r4
- 354:  (c2 61 00 00|00 00 61 c2)       lfs     f19,0\(r1\)
- 358:  (c6 81 00 04|04 00 81 c6)       lfsu    f20,4\(r1\)
- 35c:  (7d 4b 64 6e|6e 64 4b 7d)       lfsux   f10,r11,r12
- 360:  (7d 4b 64 2e|2e 64 4b 7d)       lfsx    f10,r11,r12
- 364:  (a9 e1 00 06|06 00 e1 a9)       lha     r15,6\(r1\)
- 368:  (ae 01 00 08|08 00 01 ae)       lhau    r16,8\(r1\)
- 36c:  (7d 2a 5a ee|ee 5a 2a 7d)       lhaux   r9,r10,r11
- 370:  (7d 2a 5a ae|ae 5a 2a 7d)       lhax    r9,r10,r11
- 374:  (7c 64 2e 2c|2c 2e 64 7c)       lhbrx   r3,r4,r5
- 378:  (a1 a1 00 00|00 00 a1 a1)       lhz     r13,0\(r1\)
- 37c:  (a5 c1 00 02|02 00 c1 a5)       lhzu    r14,2\(r1\)
- 380:  (7e 96 c2 6e|6e c2 96 7e)       lhzux   r20,r22,r24
- 384:  (7e f8 ca 2e|2e ca f8 7e)       lhzx    r23,r24,r25
- 388:  (b8 61 ff f0|f0 ff 61 b8)       lmw     r3,-16\(r1\)
- 38c:  (7c a4 84 aa|aa 84 a4 7c)       lswi    r5,r4,16
- 390:  (7c 64 2c 2a|2a 2c 64 7c)       lswx    r3,r4,r5
- 394:  (7c 64 28 28|28 28 64 7c)       lwarx   r3,r4,r5
- 398:  (7c 64 28 28|28 28 64 7c)       lwarx   r3,r4,r5
- 39c:  (7c 64 28 29|29 28 64 7c)       lwarx   r3,r4,r5,1
- 3a0:  (7c 64 2c 2c|2c 2c 64 7c)       lwbrx   r3,r4,r5
- 3a4:  (80 c7 00 00|00 00 c7 80)       lwz     r6,0\(r7\)
- 3a8:  (84 61 00 10|10 00 61 84)       lwzu    r3,16\(r1\)
- 3ac:  (7c 64 28 6e|6e 28 64 7c)       lwzux   r3,r4,r5
- 3b0:  (7c 64 28 2e|2e 28 64 7c)       lwzx    r3,r4,r5
- 3b4:  (10 64 29 58|58 29 64 10)       macchw  r3,r4,r5
- 3b8:  (10 64 29 59|59 29 64 10)       macchw\. r3,r4,r5
- 3bc:  (10 64 2d 58|58 2d 64 10)       macchwo r3,r4,r5
- 3c0:  (10 64 2d 59|59 2d 64 10)       macchwo\. r3,r4,r5
- 3c4:  (10 64 29 d8|d8 29 64 10)       macchws r3,r4,r5
- 3c8:  (10 64 29 d9|d9 29 64 10)       macchws\. r3,r4,r5
- 3cc:  (10 64 2d d8|d8 2d 64 10)       macchwso r3,r4,r5
- 3d0:  (10 64 2d d9|d9 2d 64 10)       macchwso\. r3,r4,r5
- 3d4:  (10 64 29 98|98 29 64 10)       macchwsu r3,r4,r5
- 3d8:  (10 64 29 99|99 29 64 10)       macchwsu\. r3,r4,r5
- 3dc:  (10 64 2d 98|98 2d 64 10)       macchwsuo r3,r4,r5
- 3e0:  (10 64 2d 99|99 2d 64 10)       macchwsuo\. r3,r4,r5
- 3e4:  (10 64 29 18|18 29 64 10)       macchwu r3,r4,r5
- 3e8:  (10 64 29 19|19 29 64 10)       macchwu\. r3,r4,r5
- 3ec:  (10 64 2d 18|18 2d 64 10)       macchwuo r3,r4,r5
- 3f0:  (10 64 2d 19|19 2d 64 10)       macchwuo\. r3,r4,r5
- 3f4:  (10 64 28 58|58 28 64 10)       machhw  r3,r4,r5
- 3f8:  (10 64 28 59|59 28 64 10)       machhw\. r3,r4,r5
- 3fc:  (10 64 2c 58|58 2c 64 10)       machhwo r3,r4,r5
- 400:  (10 64 2c 59|59 2c 64 10)       machhwo\. r3,r4,r5
- 404:  (10 64 28 d8|d8 28 64 10)       machhws r3,r4,r5
- 408:  (10 64 28 d9|d9 28 64 10)       machhws\. r3,r4,r5
- 40c:  (10 64 2c d8|d8 2c 64 10)       machhwso r3,r4,r5
- 410:  (10 64 2c d9|d9 2c 64 10)       machhwso\. r3,r4,r5
- 414:  (10 64 28 98|98 28 64 10)       machhwsu r3,r4,r5
- 418:  (10 64 28 99|99 28 64 10)       machhwsu\. r3,r4,r5
- 41c:  (10 64 2c 98|98 2c 64 10)       machhwsuo r3,r4,r5
- 420:  (10 64 2c 99|99 2c 64 10)       machhwsuo\. r3,r4,r5
- 424:  (10 64 28 18|18 28 64 10)       machhwu r3,r4,r5
- 428:  (10 64 28 19|19 28 64 10)       machhwu\. r3,r4,r5
- 42c:  (10 64 2c 18|18 2c 64 10)       machhwuo r3,r4,r5
- 430:  (10 64 2c 19|19 2c 64 10)       machhwuo\. r3,r4,r5
- 434:  (10 64 2b 58|58 2b 64 10)       maclhw  r3,r4,r5
- 438:  (10 64 2b 59|59 2b 64 10)       maclhw\. r3,r4,r5
- 43c:  (10 64 2f 58|58 2f 64 10)       maclhwo r3,r4,r5
- 440:  (10 64 2f 59|59 2f 64 10)       maclhwo\. r3,r4,r5
- 444:  (10 64 2b d8|d8 2b 64 10)       maclhws r3,r4,r5
- 448:  (10 64 2b d9|d9 2b 64 10)       maclhws\. r3,r4,r5
- 44c:  (10 64 2f d8|d8 2f 64 10)       maclhwso r3,r4,r5
- 450:  (10 64 2f d9|d9 2f 64 10)       maclhwso\. r3,r4,r5
- 454:  (10 64 2b 98|98 2b 64 10)       maclhwsu r3,r4,r5
- 458:  (10 64 2b 99|99 2b 64 10)       maclhwsu\. r3,r4,r5
- 45c:  (10 64 2f 98|98 2f 64 10)       maclhwsuo r3,r4,r5
- 460:  (10 64 2f 99|99 2f 64 10)       maclhwsuo\. r3,r4,r5
- 464:  (10 64 2b 18|18 2b 64 10)       maclhwu r3,r4,r5
- 468:  (10 64 2b 19|19 2b 64 10)       maclhwu\. r3,r4,r5
- 46c:  (10 64 2f 18|18 2f 64 10)       maclhwuo r3,r4,r5
- 470:  (10 64 2f 19|19 2f 64 10)       maclhwuo\. r3,r4,r5
- 474:  (7c 00 06 ac|ac 06 00 7c)       mbar
- 478:  (7c 00 06 ac|ac 06 00 7c)       mbar
- 47c:  (7c 20 06 ac|ac 06 20 7c)       mbar    1
- 480:  (4c 04 00 00|00 00 04 4c)       mcrf    cr0,cr1
- 484:  (fd 90 00 80|80 00 90 fd)       mcrfs   cr3,cr4
- 488:  (7d 80 04 00|00 04 80 7d)       mcrxr   cr3
- 48c:  (7c 60 00 26|26 00 60 7c)       mfcr    r3
- 490:  (7c 60 00 26|26 00 60 7c)       mfcr    r3
- 494:  (7c aa 3a 86|86 3a aa 7c)       mfdcr   r5,234
- 498:  (7c 64 02 46|46 02 64 7c)       mfdcrux r3,r4
- 49c:  (7c 85 02 06|06 02 85 7c)       mfdcrx  r4,r5
- 4a0:  (ff c0 04 8e|8e 04 c0 ff)       mffs    f30
- 4a4:  (ff e0 04 8f|8f 04 e0 ff)       mffs\.   f31
- 4a8:  (7e 60 00 a6|a6 00 60 7e)       mfmsr   r19
- 4ac:  (7c 78 00 26|26 00 78 7c)       mfocrf  r3,128
- 4b0:  (7c 60 22 a6|a6 22 60 7c)       mfspr   r3,128
- 4b4:  (7c 6c 42 a6|a6 42 6c 7c)       mftb    r3
- 4b8:  (7c 00 04 ac|ac 04 00 7c)       msync
- 4bc:  (7c 78 01 20|20 01 78 7c)       mtocrf  128,r3
- 4c0:  (7c 6f f1 20|20 f1 6f 7c)       mtcr    r3
- 4c4:  (7d 10 6b 86|86 6b 10 7d)       mtdcr   432,r8
- 4c8:  (7c 83 03 46|46 03 83 7c)       mtdcrux r3,r4
- 4cc:  (7c e6 03 06|06 03 e6 7c)       mtdcrx  r6,r7
- 4d0:  (fc 60 00 8c|8c 00 60 fc)       mtfsb0  3
- 4d4:  (fc 60 00 8d|8d 00 60 fc)       mtfsb0\. 3
- 4d8:  (fc 60 00 4c|4c 00 60 fc)       mtfsb1  3
- 4dc:  (fc 60 00 4d|4d 00 60 fc)       mtfsb1\. 3
- 4e0:  (fc 0c 55 8e|8e 55 0c fc)       mtfsf   6,f10
- 4e4:  (fc 0c 55 8e|8e 55 0c fc)       mtfsf   6,f10
- 4e8:  (fc 0d 55 8e|8e 55 0d fc)       mtfsf   6,f10,0,1
- 4ec:  (fe 0c 55 8e|8e 55 0c fe)       mtfsf   6,f10,1
- 4f0:  (fc 0c 5d 8f|8f 5d 0c fc)       mtfsf\.  6,f11
- 4f4:  (fc 0c 5d 8f|8f 5d 0c fc)       mtfsf\.  6,f11
- 4f8:  (fc 0d 5d 8f|8f 5d 0d fc)       mtfsf\.  6,f11,0,1
- 4fc:  (fe 0c 5d 8f|8f 5d 0c fe)       mtfsf\.  6,f11,1
- 500:  (ff 00 01 0c|0c 01 00 ff)       mtfsfi  6,0
- 504:  (ff 00 01 0c|0c 01 00 ff)       mtfsfi  6,0
- 508:  (ff 00 01 0c|0c 01 00 ff)       mtfsfi  6,0
- 50c:  (ff 01 01 0c|0c 01 01 ff)       mtfsfi  6,0,1
- 510:  (ff 00 f1 0d|0d f1 00 ff)       mtfsfi\. 6,15
- 514:  (ff 00 f1 0d|0d f1 00 ff)       mtfsfi\. 6,15
- 518:  (ff 00 f1 0d|0d f1 00 ff)       mtfsfi\. 6,15
- 51c:  (ff 01 f1 0d|0d f1 01 ff)       mtfsfi\. 6,15,1
- 520:  (7d 40 01 24|24 01 40 7d)       mtmsr   r10
- 524:  (7c 78 01 20|20 01 78 7c)       mtocrf  128,r3
- 528:  (7c 60 23 a6|a6 23 60 7c)       mtspr   128,r3
- 52c:  (10 64 29 50|50 29 64 10)       mulchw  r3,r4,r5
- 530:  (10 64 29 51|51 29 64 10)       mulchw\. r3,r4,r5
- 534:  (10 64 29 10|10 29 64 10)       mulchwu r3,r4,r5
- 538:  (10 64 29 11|11 29 64 10)       mulchwu\. r3,r4,r5
- 53c:  (10 64 28 50|50 28 64 10)       mulhhw  r3,r4,r5
- 540:  (10 64 28 51|51 28 64 10)       mulhhw\. r3,r4,r5
- 544:  (10 64 28 10|10 28 64 10)       mulhhwu r3,r4,r5
- 548:  (10 64 28 11|11 28 64 10)       mulhhwu\. r3,r4,r5
- 54c:  (7c 64 28 96|96 28 64 7c)       mulhw   r3,r4,r5
- 550:  (7c 64 28 97|97 28 64 7c)       mulhw\.  r3,r4,r5
- 554:  (7c 64 28 16|16 28 64 7c)       mulhwu  r3,r4,r5
- 558:  (7c 64 28 17|17 28 64 7c)       mulhwu\. r3,r4,r5
- 55c:  (10 64 2b 50|50 2b 64 10)       mullhw  r3,r4,r5
- 560:  (10 64 2b 51|51 2b 64 10)       mullhw\. r3,r4,r5
- 564:  (10 64 2b 10|10 2b 64 10)       mullhwu r3,r4,r5
- 568:  (10 64 2b 11|11 2b 64 10)       mullhwu\. r3,r4,r5
- 56c:  (1c 64 00 05|05 00 64 1c)       mulli   r3,r4,5
- 570:  (7c 64 29 d6|d6 29 64 7c)       mullw   r3,r4,r5
- 574:  (7c 64 29 d7|d7 29 64 7c)       mullw\.  r3,r4,r5
- 578:  (7c 64 2d d6|d6 2d 64 7c)       mullwo  r3,r4,r5
- 57c:  (7c 64 2d d7|d7 2d 64 7c)       mullwo\. r3,r4,r5
- 580:  (7f bc f3 b8|b8 f3 bc 7f)       nand    r28,r29,r30
- 584:  (7f bc f3 b9|b9 f3 bc 7f)       nand\.   r28,r29,r30
- 588:  (7c 64 00 d0|d0 00 64 7c)       neg     r3,r4
- 58c:  (7c 64 00 d1|d1 00 64 7c)       neg\.    r3,r4
- 590:  (7e 11 04 d0|d0 04 11 7e)       nego    r16,r17
- 594:  (7e 53 04 d1|d1 04 53 7e)       nego\.   r18,r19
- 598:  (10 64 29 5c|5c 29 64 10)       nmacchw r3,r4,r5
- 59c:  (10 64 29 5d|5d 29 64 10)       nmacchw\. r3,r4,r5
- 5a0:  (10 64 2d 5c|5c 2d 64 10)       nmacchwo r3,r4,r5
- 5a4:  (10 64 2d 5d|5d 2d 64 10)       nmacchwo\. r3,r4,r5
- 5a8:  (10 64 29 dc|dc 29 64 10)       nmacchws r3,r4,r5
- 5ac:  (10 64 29 dd|dd 29 64 10)       nmacchws\. r3,r4,r5
- 5b0:  (10 64 2d dc|dc 2d 64 10)       nmacchwso r3,r4,r5
- 5b4:  (10 64 2d dd|dd 2d 64 10)       nmacchwso\. r3,r4,r5
- 5b8:  (10 64 28 5c|5c 28 64 10)       nmachhw r3,r4,r5
- 5bc:  (10 64 28 5d|5d 28 64 10)       nmachhw\. r3,r4,r5
- 5c0:  (10 64 2c 5c|5c 2c 64 10)       nmachhwo r3,r4,r5
- 5c4:  (10 64 2c 5d|5d 2c 64 10)       nmachhwo\. r3,r4,r5
- 5c8:  (10 64 28 dc|dc 28 64 10)       nmachhws r3,r4,r5
- 5cc:  (10 64 28 dd|dd 28 64 10)       nmachhws\. r3,r4,r5
- 5d0:  (10 64 2c dc|dc 2c 64 10)       nmachhwso r3,r4,r5
- 5d4:  (10 64 2c dd|dd 2c 64 10)       nmachhwso\. r3,r4,r5
- 5d8:  (10 64 2b 5c|5c 2b 64 10)       nmaclhw r3,r4,r5
- 5dc:  (10 64 2b 5d|5d 2b 64 10)       nmaclhw\. r3,r4,r5
- 5e0:  (10 64 2f 5c|5c 2f 64 10)       nmaclhwo r3,r4,r5
- 5e4:  (10 64 2f 5d|5d 2f 64 10)       nmaclhwo\. r3,r4,r5
- 5e8:  (10 64 2b dc|dc 2b 64 10)       nmaclhws r3,r4,r5
- 5ec:  (10 64 2b dd|dd 2b 64 10)       nmaclhws\. r3,r4,r5
- 5f0:  (10 64 2f dc|dc 2f 64 10)       nmaclhwso r3,r4,r5
- 5f4:  (10 64 2f dd|dd 2f 64 10)       nmaclhwso\. r3,r4,r5
- 5f8:  (7e b4 b0 f8|f8 b0 b4 7e)       nor     r20,r21,r22
- 5fc:  (7e b4 b0 f9|f9 b0 b4 7e)       nor\.    r20,r21,r22
- 600:  (7c 40 23 78|78 23 40 7c)       or      r0,r2,r4
- 604:  (7d cc 83 79|79 83 cc 7d)       or\.     r12,r14,r16
- 608:  (7e 0f 8b 38|38 8b 0f 7e)       orc     r15,r16,r17
- 60c:  (7e 72 a3 39|39 a3 72 7e)       orc\.    r18,r19,r20
- 610:  (60 21 00 00|00 00 21 60)       ori     r1,r1,0
- 614:  (64 83 de ad|ad de 83 64)       oris    r3,r4,57005
- 618:  (7c 83 00 f4|f4 00 83 7c)       popcntb r3,r4
- 61c:  (7c 83 01 34|34 01 83 7c)       prtyw   r3,r4
- 620:  (4c 00 00 66|66 00 00 4c)       rfci
- 624:  (4c 00 00 64|64 00 00 4c)       rfi
- 628:  (4c 00 00 4c|4c 00 00 4c)       rfmci
- 62c:  (50 83 65 36|36 65 83 50)       rlwimi  r3,r4,12,20,27
- 630:  (50 83 65 37|37 65 83 50)       rlwimi\. r3,r4,12,20,27
- 634:  (54 83 00 36|36 00 83 54)       rlwinm  r3,r4,0,0,27
- 638:  (54 83 d1 be|be d1 83 54)       rlwinm  r3,r4,26,6,31
- 63c:  (54 83 20 26|26 20 83 54)       rlwinm  r3,r4,4,0,19
- 640:  (54 83 00 37|37 00 83 54)       rlwinm\. r3,r4,0,0,27
- 644:  (5c 83 28 3e|3e 28 83 5c)       rotlw   r3,r4,r5
- 648:  (5c 83 28 3f|3f 28 83 5c)       rotlw\.  r3,r4,r5
- 64c:  (5c 83 28 3e|3e 28 83 5c)       rotlw   r3,r4,r5
- 650:  (5c 83 28 3f|3f 28 83 5c)       rotlw\.  r3,r4,r5
- 654:  (44 00 00 02|02 00 00 44)       sc
- 658:  (7c 83 28 30|30 28 83 7c)       slw     r3,r4,r5
- 65c:  (7c 83 28 31|31 28 83 7c)       slw\.    r3,r4,r5
- 660:  (7c 83 2e 30|30 2e 83 7c)       sraw    r3,r4,r5
- 664:  (7c 83 2e 31|31 2e 83 7c)       sraw\.   r3,r4,r5
- 668:  (7c 83 86 70|70 86 83 7c)       srawi   r3,r4,16
- 66c:  (7c 83 86 71|71 86 83 7c)       srawi\.  r3,r4,16
- 670:  (7c 83 2c 30|30 2c 83 7c)       srw     r3,r4,r5
- 674:  (7c 83 2c 31|31 2c 83 7c)       srw\.    r3,r4,r5
- 678:  (54 83 d1 be|be d1 83 54)       rlwinm  r3,r4,26,6,31
- 67c:  (99 61 00 02|02 00 61 99)       stb     r11,2\(r1\)
- 680:  (9d 81 00 03|03 00 81 9d)       stbu    r12,3\(r1\)
- 684:  (7d ae 79 ee|ee 79 ae 7d)       stbux   r13,r14,r15
- 688:  (7c 64 29 ae|ae 29 64 7c)       stbx    r3,r4,r5
- 68c:  (db 21 00 20|20 00 21 db)       stfd    f25,32\(r1\)
- 690:  (df 41 00 28|28 00 41 df)       stfdu   f26,40\(r1\)
- 694:  (7c 01 15 ee|ee 15 01 7c)       stfdux  f0,r1,r2
- 698:  (7f be fd ae|ae fd be 7f)       stfdx   f29,r30,r31
- 69c:  (7d 43 27 ae|ae 27 43 7d)       stfiwx  f10,r3,r4
- 6a0:  (d2 e1 00 14|14 00 e1 d2)       stfs    f23,20\(r1\)
- 6a4:  (d7 01 00 18|18 00 01 d7)       stfsu   f24,24\(r1\)
- 6a8:  (7f 5b e5 6e|6e e5 5b 7f)       stfsux  f26,r27,r28
- 6ac:  (7e f8 cd 2e|2e cd f8 7e)       stfsx   f23,r24,r25
- 6b0:  (b2 21 00 0a|0a 00 21 b2)       sth     r17,10\(r1\)
- 6b4:  (7c c7 47 2c|2c 47 c7 7c)       sthbrx  r6,r7,r8
- 6b8:  (b6 41 00 0c|0c 00 41 b6)       sthu    r18,12\(r1\)
- 6bc:  (7e b6 bb 6e|6e bb b6 7e)       sthux   r21,r22,r23
- 6c0:  (7d 8d 73 2e|2e 73 8d 7d)       sthx    r12,r13,r14
- 6c4:  (bc c1 ff f0|f0 ff c1 bc)       stmw    r6,-16\(r1\)
- 6c8:  (7c 64 85 aa|aa 85 64 7c)       stswi   r3,r4,16
- 6cc:  (7c 64 2d 2a|2a 2d 64 7c)       stswx   r3,r4,r5
- 6d0:  (90 c7 ff f0|f0 ff c7 90)       stw     r6,-16\(r7\)
- 6d4:  (7c 64 2d 2c|2c 2d 64 7c)       stwbrx  r3,r4,r5
- 6d8:  (7c 64 29 2d|2d 29 64 7c)       stwcx\.  r3,r4,r5
- 6dc:  (94 61 00 10|10 00 61 94)       stwu    r3,16\(r1\)
- 6e0:  (7c 64 29 6e|6e 29 64 7c)       stwux   r3,r4,r5
- 6e4:  (7c 64 29 2e|2e 29 64 7c)       stwx    r3,r4,r5
- 6e8:  (7c 64 28 50|50 28 64 7c)       subf    r3,r4,r5
- 6ec:  (7c 64 28 51|51 28 64 7c)       subf\.   r3,r4,r5
- 6f0:  (7c 64 28 10|10 28 64 7c)       subfc   r3,r4,r5
- 6f4:  (7c 64 28 11|11 28 64 7c)       subfc\.  r3,r4,r5
- 6f8:  (7c 64 2c 10|10 2c 64 7c)       subfco  r3,r4,r5
- 6fc:  (7c 64 2c 11|11 2c 64 7c)       subfco\. r3,r4,r5
- 700:  (7c 64 29 10|10 29 64 7c)       subfe   r3,r4,r5
- 704:  (7c 64 29 11|11 29 64 7c)       subfe\.  r3,r4,r5
- 708:  (7c 64 2d 10|10 2d 64 7c)       subfeo  r3,r4,r5
- 70c:  (7c 64 2d 11|11 2d 64 7c)       subfeo\. r3,r4,r5
- 710:  (20 64 00 05|05 00 64 20)       subfic  r3,r4,5
- 714:  (7c 64 01 d0|d0 01 64 7c)       subfme  r3,r4
- 718:  (7c 64 01 d1|d1 01 64 7c)       subfme\. r3,r4
- 71c:  (7c 64 05 d0|d0 05 64 7c)       subfmeo r3,r4
- 720:  (7c 64 05 d1|d1 05 64 7c)       subfmeo\. r3,r4
- 724:  (7c 64 2c 50|50 2c 64 7c)       subfo   r3,r4,r5
- 728:  (7c 64 2c 51|51 2c 64 7c)       subfo\.  r3,r4,r5
- 72c:  (7c 64 01 90|90 01 64 7c)       subfze  r3,r4
- 730:  (7c 64 01 91|91 01 64 7c)       subfze\. r3,r4
- 734:  (7c 64 05 90|90 05 64 7c)       subfzeo r3,r4
- 738:  (7c 64 05 91|91 05 64 7c)       subfzeo\. r3,r4
- 73c:  (7c 07 46 24|24 46 07 7c)       tlbivax r7,r8
- 740:  (7c 22 3f 64|64 3f 22 7c)       tlbre   r1,r2,7
- 744:  (7c 0b 67 24|24 67 0b 7c)       tlbsx   r11,r12
- 748:  (7d 8d 77 24|24 77 8d 7d)       tlbsx   r12,r13,r14
- 74c:  (7d 8d 77 25|25 77 8d 7d)       tlbsx\.  r12,r13,r14
- 750:  (7c 00 04 6c|6c 04 00 7c)       tlbsync
- 754:  (7c 00 07 a4|a4 07 00 7c)       tlbwe
- 758:  (7c 00 07 a4|a4 07 00 7c)       tlbwe
- 75c:  (7c 21 0f a4|a4 0f 21 7c)       tlbwe   r1,r1,1
- 760:  (7f e0 00 08|08 00 e0 7f)       trap
- 764:  (7f e0 00 08|08 00 e0 7f)       trap
- 768:  (7c 83 20 08|08 20 83 7c)       tweq    r3,r4
- 76c:  (7c a3 20 08|08 20 a3 7c)       twlge   r3,r4
- 770:  (7c 83 20 08|08 20 83 7c)       tweq    r3,r4
- 774:  (0d 03 00 0f|0f 00 03 0d)       twgti   r3,15
- 778:  (0c c3 00 0f|0f 00 c3 0c)       twllei  r3,15
- 77c:  (0d 03 00 0f|0f 00 03 0d)       twgti   r3,15
- 780:  (7c a3 20 08|08 20 a3 7c)       twlge   r3,r4
- 784:  (0c c3 00 0f|0f 00 c3 0c)       twllei  r3,15
- 788:  (7c 60 01 06|06 01 60 7c)       wrtee   r3
- 78c:  (7c 00 81 46|46 81 00 7c)       wrteei  1
- 790:  (7f dd fa 78|78 fa dd 7f)       xor     r29,r30,r31
- 794:  (7f dd fa 79|79 fa dd 7f)       xor\.    r29,r30,r31
- 798:  (68 83 de ad|ad de 83 68)       xori    r3,r4,57005
- 79c:  (6c 83 de ad|ad de 83 6c)       xoris   r3,r4,57005
+.*:    (7c 64 2a 14|14 2a 64 7c)       add     r3,r4,r5
+.*:    (7c 64 2a 15|15 2a 64 7c)       add\.    r3,r4,r5
+.*:    (7c 64 28 14|14 28 64 7c)       addc    r3,r4,r5
+.*:    (7c 64 28 15|15 28 64 7c)       addc\.   r3,r4,r5
+.*:    (7c 64 2c 14|14 2c 64 7c)       addco   r3,r4,r5
+.*:    (7c 64 2c 15|15 2c 64 7c)       addco\.  r3,r4,r5
+.*:    (7c 64 29 14|14 29 64 7c)       adde    r3,r4,r5
+.*:    (7c 64 29 15|15 29 64 7c)       adde\.   r3,r4,r5
+.*:    (7c 64 2d 14|14 2d 64 7c)       addeo   r3,r4,r5
+.*:    (7c 64 2d 15|15 2d 64 7c)       addeo\.  r3,r4,r5
+.*:    (38 64 ff 80|80 ff 64 38)       addi    r3,r4,-128
+.*:    (30 64 ff 80|80 ff 64 30)       addic   r3,r4,-128
+.*:    (34 64 ff 80|80 ff 64 34)       addic\.  r3,r4,-128
+.*:    (3c 64 ff 80|80 ff 64 3c)       addis   r3,r4,-128
+.*:    (7c 64 01 d4|d4 01 64 7c)       addme   r3,r4
+.*:    (7c 64 01 d5|d5 01 64 7c)       addme\.  r3,r4
+.*:    (7c 64 05 d4|d4 05 64 7c)       addmeo  r3,r4
+.*:    (7c 64 05 d5|d5 05 64 7c)       addmeo\. r3,r4
+.*:    (7c 64 2e 14|14 2e 64 7c)       addo    r3,r4,r5
+.*:    (7c 64 2e 15|15 2e 64 7c)       addo\.   r3,r4,r5
+.*:    (7c 64 01 94|94 01 64 7c)       addze   r3,r4
+.*:    (7c 64 01 95|95 01 64 7c)       addze\.  r3,r4
+.*:    (7c 64 05 94|94 05 64 7c)       addzeo  r3,r4
+.*:    (7c 64 05 95|95 05 64 7c)       addzeo\. r3,r4
+.*:    (7c 83 28 38|38 28 83 7c)       and     r3,r4,r5
+.*:    (7c 83 28 39|39 28 83 7c)       and\.    r3,r4,r5
+.*:    (7d cd 78 78|78 78 cd 7d)       andc    r13,r14,r15
+.*:    (7e 30 90 79|79 90 30 7e)       andc\.   r16,r17,r18
+.*:    (70 83 de ad|ad de 83 70)       andi\.   r3,r4,57005
+.*:    (74 83 de ad|ad de 83 74)       andis\.  r3,r4,57005
+.*:    (48 00 00 02|02 00 00 48)       ba      0 <ppc476>
+.*:    (40 01 00 00|00 00 01 40)       bdnzf   gt,7c <ppc476\+0x7c>
+.*:    (40 85 00 02|02 00 85 40)       blea    cr1,0 <ppc476>
+.*:    (4d 80 04 20|20 04 80 4d)       bltctr
+.*:    (4c 8a 04 20|20 04 8a 4c)       bnectr  cr2
+.*:    (4c 86 04 20|20 04 86 4c)       bnectr  cr1
+.*:    (4c 86 04 20|20 04 86 4c)       bnectr  cr1
+.*:    (4d 80 04 21|21 04 80 4d)       bltctrl
+.*:    (4c 8a 04 21|21 04 8a 4c)       bnectrl cr2
+.*:    (4c 86 04 21|21 04 86 4c)       bnectrl cr1
+.*:    (4c 86 04 21|21 04 86 4c)       bnectrl cr1
+.*:    (40 43 00 01|01 00 43 40)       bdzfl   so,a4 <ppc476\+0xa4>
+.*:    (4d 80 00 20|20 00 80 4d)       bltlr
+.*:    (4c 8a 00 20|20 00 8a 4c)       bnelr   cr2
+.*:    (4c 86 00 20|20 00 86 4c)       bnelr   cr1
+.*:    (4c 86 00 20|20 00 86 4c)       bnelr   cr1
+.*:    (4d 80 00 21|21 00 80 4d)       bltlrl
+.*:    (4c 8a 00 21|21 00 8a 4c)       bnelrl  cr2
+.*:    (4c 86 00 21|21 00 86 4c)       bnelrl  cr1
+.*:    (4c 86 00 21|21 00 86 4c)       bnelrl  cr1
+.*:    (48 00 00 00|00 00 00 48)       b       c8 <ppc476\+0xc8>
+.*:    (48 00 00 01|01 00 00 48)       bl      cc <ppc476\+0xcc>
+.*:    (54 83 00 36|36 00 83 54)       rlwinm  r3,r4,0,0,27
+.*:    (7c 03 20 00|00 20 03 7c)       cmpw    r3,r4
+.*:    (7f 83 20 00|00 20 83 7f)       cmpw    cr7,r3,r4
+.*:    (7c 83 2b f8|f8 2b 83 7c)       cmpb    r3,r4,r5
+.*:    (7c 83 2b f8|f8 2b 83 7c)       cmpb    r3,r4,r5
+.*:    (2c 03 ff 59|59 ff 03 2c)       cmpwi   r3,-167
+.*:    (2f 83 ff 59|59 ff 83 2f)       cmpwi   cr7,r3,-167
+.*:    (7c 03 20 40|40 20 03 7c)       cmplw   r3,r4
+.*:    (7f 83 20 40|40 20 83 7f)       cmplw   cr7,r3,r4
+.*:    (28 03 00 a7|a7 00 03 28)       cmplwi  r3,167
+.*:    (2b 83 00 a7|a7 00 83 2b)       cmplwi  cr7,r3,167
+.*:    (7c 03 20 40|40 20 03 7c)       cmplw   r3,r4
+.*:    (28 03 00 a7|a7 00 03 28)       cmplwi  r3,167
+.*:    (7c 03 20 00|00 20 03 7c)       cmpw    r3,r4
+.*:    (2c 03 ff 59|59 ff 03 2c)       cmpwi   r3,-167
+.*:    (7d 6a 00 34|34 00 6a 7d)       cntlzw  r10,r11
+.*:    (7d 6a 00 35|35 00 6a 7d)       cntlzw\. r10,r11
+.*:    (4c 85 32 02|02 32 85 4c)       crand   4\*cr1\+lt,4\*cr1\+gt,4\*cr1\+eq
+.*:    (4c 64 29 02|02 29 64 4c)       crandc  so,4\*cr1\+lt,4\*cr1\+gt
+.*:    (4c e0 0a 42|42 0a e0 4c)       creqv   4\*cr1\+so,lt,gt
+.*:    (4c 22 19 c2|c2 19 22 4c)       crnand  gt,eq,so
+.*:    (4c 01 10 42|42 10 01 4c)       crnor   lt,gt,eq
+.*:    (4c a6 3b 82|82 3b a6 4c)       cror    4\*cr1\+gt,4\*cr1\+eq,4\*cr1\+so
+.*:    (4c 43 23 42|42 23 43 4c)       crorc   eq,so,4\*cr1\+lt
+.*:    (4c c7 01 82|82 01 c7 4c)       crxor   4\*cr1\+eq,4\*cr1\+so,lt
+.*:    (7c 09 55 ec|ec 55 09 7c)       dcba    r9,r10
+.*:    (7c 06 38 ac|ac 38 06 7c)       dcbf    r6,r7
+.*:    (7c 06 38 ac|ac 38 06 7c)       dcbf    r6,r7
+.*:    (7c 06 3b ac|ac 3b 06 7c)       dcbi    r6,r7
+.*:    (7c 85 33 0c|0c 33 85 7c)       dcblc   4,r5,r6
+.*:    (7c 06 38 6c|6c 38 06 7c)       dcbst   r6,r7
+.*:    (7c 05 32 2c|2c 32 05 7c)       dcbt    r5,r6
+.*:    (7c 05 32 2c|2c 32 05 7c)       dcbt    r5,r6
+.*:    (7d 05 32 2c|2c 32 05 7d)       dcbt    8,r5,r6
+.*:    (7c e8 49 4c|4c 49 e8 7c)       dcbtls  7,r8,r9
+.*:    (7c 06 39 ec|ec 39 06 7c)       dcbtst  r6,r7
+.*:    (7c 06 39 ec|ec 39 06 7c)       dcbtst  r6,r7
+.*:    (7d 26 39 ec|ec 39 26 7d)       dcbtst  9,r6,r7
+.*:    (7d 4b 61 0c|0c 61 4b 7d)       dcbtstls 10,r11,r12
+.*:    (7c 01 17 ec|ec 17 01 7c)       dcbz    r1,r2
+.*:    (7c 05 37 ec|ec 37 05 7c)       dcbz    r5,r6
+.*:    (7c 00 03 8c|8c 03 00 7c)       dccci
+.*:    (7c 00 03 8c|8c 03 00 7c)       dccci
+.*:    (7c 00 03 8c|8c 03 00 7c)       dccci
+.*:    (7c 20 03 8c|8c 03 20 7c)       dci     1
+.*:    (7d 4b 63 d6|d6 63 4b 7d)       divw    r10,r11,r12
+.*:    (7d 6c 6b d7|d7 6b 6c 7d)       divw\.   r11,r12,r13
+.*:    (7d 4b 67 d6|d6 67 4b 7d)       divwo   r10,r11,r12
+.*:    (7d 6c 6f d7|d7 6f 6c 7d)       divwo\.  r11,r12,r13
+.*:    (7d 4b 63 96|96 63 4b 7d)       divwu   r10,r11,r12
+.*:    (7d 6c 6b 97|97 6b 6c 7d)       divwu\.  r11,r12,r13
+.*:    (7d 4b 67 96|96 67 4b 7d)       divwuo  r10,r11,r12
+.*:    (7d 6c 6f 97|97 6f 6c 7d)       divwuo\. r11,r12,r13
+.*:    (7c 83 28 9c|9c 28 83 7c)       dlmzb   r3,r4,r5
+.*:    (7c 83 28 9d|9d 28 83 7c)       dlmzb\.  r3,r4,r5
+.*:    (7d 6a 62 38|38 62 6a 7d)       eqv     r10,r11,r12
+.*:    (7d 6a 62 39|39 62 6a 7d)       eqv\.    r10,r11,r12
+.*:    (54 83 20 26|26 20 83 54)       rlwinm  r3,r4,4,0,19
+.*:    (7c 83 07 74|74 07 83 7c)       extsb   r3,r4
+.*:    (7c 83 07 75|75 07 83 7c)       extsb\.  r3,r4
+.*:    (7c 83 07 34|34 07 83 7c)       extsh   r3,r4
+.*:    (7c 83 07 35|35 07 83 7c)       extsh\.  r3,r4
+.*:    (fe a0 fa 10|10 fa a0 fe)       fabs    f21,f31
+.*:    (fe a0 fa 11|11 fa a0 fe)       fabs\.   f21,f31
+.*:    (fd 4b 60 2a|2a 60 4b fd)       fadd    f10,f11,f12
+.*:    (fd 4b 60 2b|2b 60 4b fd)       fadd\.   f10,f11,f12
+.*:    (ed 4b 60 2a|2a 60 4b ed)       fadds   f10,f11,f12
+.*:    (ed 4b 60 2b|2b 60 4b ed)       fadds\.  f10,f11,f12
+.*:    (fd 40 5e 9c|9c 5e 40 fd)       fcfid   f10,f11
+.*:    (fd 40 5e 9d|9d 5e 40 fd)       fcfid\.  f10,f11
+.*:    (fd 8a 58 40|40 58 8a fd)       fcmpo   cr3,f10,f11
+.*:    (fd 84 28 00|00 28 84 fd)       fcmpu   cr3,f4,f5
+.*:    (fd 4b 60 10|10 60 4b fd)       fcpsgn  f10,f11,f12
+.*:    (fd 4b 60 11|11 60 4b fd)       fcpsgn\. f10,f11,f12
+.*:    (fd 40 5e 5c|5c 5e 40 fd)       fctid   f10,f11
+.*:    (fd 40 5e 5d|5d 5e 40 fd)       fctid\.  f10,f11
+.*:    (fd 40 5e 5e|5e 5e 40 fd)       fctidz  f10,f11
+.*:    (fd 40 5e 5f|5f 5e 40 fd)       fctidz\. f10,f11
+.*:    (fd 40 58 1c|1c 58 40 fd)       fctiw   f10,f11
+.*:    (fd 40 58 1d|1d 58 40 fd)       fctiw\.  f10,f11
+.*:    (fd 40 58 1e|1e 58 40 fd)       fctiwz  f10,f11
+.*:    (fd 40 58 1f|1f 58 40 fd)       fctiwz\. f10,f11
+.*:    (fd 4b 60 24|24 60 4b fd)       fdiv    f10,f11,f12
+.*:    (fd 4b 60 25|25 60 4b fd)       fdiv\.   f10,f11,f12
+.*:    (ed 4b 60 24|24 60 4b ed)       fdivs   f10,f11,f12
+.*:    (ed 4b 60 25|25 60 4b ed)       fdivs\.  f10,f11,f12
+.*:    (fd 4b 6b 3a|3a 6b 4b fd)       fmadd   f10,f11,f12,f13
+.*:    (fd 4b 6b 3b|3b 6b 4b fd)       fmadd\.  f10,f11,f12,f13
+.*:    (ed 4b 6b 3a|3a 6b 4b ed)       fmadds  f10,f11,f12,f13
+.*:    (ed 4b 6b 3b|3b 6b 4b ed)       fmadds\. f10,f11,f12,f13
+.*:    (fc 60 20 90|90 20 60 fc)       fmr     f3,f4
+.*:    (fc 60 20 91|91 20 60 fc)       fmr\.    f3,f4
+.*:    (fd 4b 6b 38|38 6b 4b fd)       fmsub   f10,f11,f12,f13
+.*:    (fd 4b 6b 39|39 6b 4b fd)       fmsub\.  f10,f11,f12,f13
+.*:    (ed 4b 6b 38|38 6b 4b ed)       fmsubs  f10,f11,f12,f13
+.*:    (ed 4b 6b 39|39 6b 4b ed)       fmsubs\. f10,f11,f12,f13
+.*:    (fd 4b 03 32|32 03 4b fd)       fmul    f10,f11,f12
+.*:    (fd 4b 03 33|33 03 4b fd)       fmul\.   f10,f11,f12
+.*:    (ed 4b 03 32|32 03 4b ed)       fmuls   f10,f11,f12
+.*:    (ed 4b 03 33|33 03 4b ed)       fmuls\.  f10,f11,f12
+.*:    (fe 80 f1 10|10 f1 80 fe)       fnabs   f20,f30
+.*:    (fe 80 f1 11|11 f1 80 fe)       fnabs\.  f20,f30
+.*:    (fc 60 20 50|50 20 60 fc)       fneg    f3,f4
+.*:    (fc 60 20 51|51 20 60 fc)       fneg\.   f3,f4
+.*:    (fd 4b 6b 3e|3e 6b 4b fd)       fnmadd  f10,f11,f12,f13
+.*:    (fd 4b 6b 3f|3f 6b 4b fd)       fnmadd\. f10,f11,f12,f13
+.*:    (ed 4b 6b 3e|3e 6b 4b ed)       fnmadds f10,f11,f12,f13
+.*:    (ed 4b 6b 3f|3f 6b 4b ed)       fnmadds\. f10,f11,f12,f13
+.*:    (fd 4b 6b 3c|3c 6b 4b fd)       fnmsub  f10,f11,f12,f13
+.*:    (fd 4b 6b 3d|3d 6b 4b fd)       fnmsub\. f10,f11,f12,f13
+.*:    (ed 4b 6b 3c|3c 6b 4b ed)       fnmsubs f10,f11,f12,f13
+.*:    (ed 4b 6b 3d|3d 6b 4b ed)       fnmsubs\. f10,f11,f12,f13
+.*:    (fd c0 78 30|30 78 c0 fd)       fre     f14,f15
+.*:    (fd c0 78 31|31 78 c0 fd)       fre\.    f14,f15
+.*:    (ed c0 78 30|30 78 c0 ed)       fres    f14,f15
+.*:    (ed c0 78 31|31 78 c0 ed)       fres\.   f14,f15
+.*:    (fd 40 5b d0|d0 5b 40 fd)       frim    f10,f11
+.*:    (fd 40 5b d1|d1 5b 40 fd)       frim\.   f10,f11
+.*:    (fd 40 5b 10|10 5b 40 fd)       frin    f10,f11
+.*:    (fd 40 5b 11|11 5b 40 fd)       frin\.   f10,f11
+.*:    (fd 40 5b 90|90 5b 40 fd)       frip    f10,f11
+.*:    (fd 40 5b 91|91 5b 40 fd)       frip\.   f10,f11
+.*:    (fd 40 5b 50|50 5b 40 fd)       friz    f10,f11
+.*:    (fd 40 5b 51|51 5b 40 fd)       friz\.   f10,f11
+.*:    (fc c0 38 18|18 38 c0 fc)       frsp    f6,f7
+.*:    (fd 00 48 19|19 48 00 fd)       frsp\.   f8,f9
+.*:    (fd c0 78 34|34 78 c0 fd)       frsqrte f14,f15
+.*:    (fd c0 78 35|35 78 c0 fd)       frsqrte\. f14,f15
+.*:    (ed c0 78 34|34 78 c0 ed)       frsqrtes f14,f15
+.*:    (ed c0 78 35|35 78 c0 ed)       frsqrtes\. f14,f15
+.*:    (fd 4b 6b 2e|2e 6b 4b fd)       fsel    f10,f11,f12,f13
+.*:    (fd 4b 6b 2f|2f 6b 4b fd)       fsel\.   f10,f11,f12,f13
+.*:    (fd 40 58 2c|2c 58 40 fd)       fsqrt   f10,f11
+.*:    (fd 40 58 2d|2d 58 40 fd)       fsqrt\.  f10,f11
+.*:    (ed 40 58 2c|2c 58 40 ed)       fsqrts  f10,f11
+.*:    (ed 40 58 2d|2d 58 40 ed)       fsqrts\. f10,f11
+.*:    (fd 4b 60 28|28 60 4b fd)       fsub    f10,f11,f12
+.*:    (fd 4b 60 29|29 60 4b fd)       fsub\.   f10,f11,f12
+.*:    (ed 4b 60 28|28 60 4b ed)       fsubs   f10,f11,f12
+.*:    (ed 4b 60 29|29 60 4b ed)       fsubs\.  f10,f11,f12
+.*:    (7c 03 27 ac|ac 27 03 7c)       icbi    r3,r4
+.*:    (7e 11 91 cc|cc 91 11 7e)       icblc   16,r17,r18
+.*:    (7c a8 48 2c|2c 48 a8 7c)       icbt    5,r8,r9
+.*:    (7d ae 7b cc|cc 7b ae 7d)       icbtls  13,r14,r15
+.*:    (7c 00 07 8c|8c 07 00 7c)       iccci
+.*:    (7c 00 07 8c|8c 07 00 7c)       iccci
+.*:    (7c 00 07 8c|8c 07 00 7c)       iccci
+.*:    (7c 20 07 8c|8c 07 20 7c)       ici     1
+.*:    (7c 03 27 cc|cc 27 03 7c)       icread  r3,r4
+.*:    (50 83 65 36|36 65 83 50)       rlwimi  r3,r4,12,20,27
+.*:    (7c 43 27 1e|1e 27 43 7c)       isel    r2,r3,r4,28
+.*:    (4c 00 01 2c|2c 01 00 4c)       isync
+.*:    (89 21 00 00|00 00 21 89)       lbz     r9,0\(r1\)
+.*:    (8d 41 00 01|01 00 41 8d)       lbzu    r10,1\(r1\)
+.*:    (7e 95 b0 ee|ee b0 95 7e)       lbzux   r20,r21,r22
+.*:    (7c 64 28 ae|ae 28 64 7c)       lbzx    r3,r4,r5
+.*:    (ca a1 00 08|08 00 a1 ca)       lfd     f21,8\(r1\)
+.*:    (ce c1 00 10|10 00 c1 ce)       lfdu    f22,16\(r1\)
+.*:    (7e 95 b4 ee|ee b4 95 7e)       lfdux   f20,r21,r22
+.*:    (7d ae 7c ae|ae 7c ae 7d)       lfdx    f13,r14,r15
+.*:    (7d 43 26 ae|ae 26 43 7d)       lfiwax  f10,r3,r4
+.*:    (c2 61 00 00|00 00 61 c2)       lfs     f19,0\(r1\)
+.*:    (c6 81 00 04|04 00 81 c6)       lfsu    f20,4\(r1\)
+.*:    (7d 4b 64 6e|6e 64 4b 7d)       lfsux   f10,r11,r12
+.*:    (7d 4b 64 2e|2e 64 4b 7d)       lfsx    f10,r11,r12
+.*:    (a9 e1 00 06|06 00 e1 a9)       lha     r15,6\(r1\)
+.*:    (ae 01 00 08|08 00 01 ae)       lhau    r16,8\(r1\)
+.*:    (7d 2a 5a ee|ee 5a 2a 7d)       lhaux   r9,r10,r11
+.*:    (7d 2a 5a ae|ae 5a 2a 7d)       lhax    r9,r10,r11
+.*:    (7c 64 2e 2c|2c 2e 64 7c)       lhbrx   r3,r4,r5
+.*:    (a1 a1 00 00|00 00 a1 a1)       lhz     r13,0\(r1\)
+.*:    (a5 c1 00 02|02 00 c1 a5)       lhzu    r14,2\(r1\)
+.*:    (7e 96 c2 6e|6e c2 96 7e)       lhzux   r20,r22,r24
+.*:    (7e f8 ca 2e|2e ca f8 7e)       lhzx    r23,r24,r25
+.*:    (7c 64 28 28|28 28 64 7c)       lwarx   r3,r4,r5
+.*:    (7c 64 28 28|28 28 64 7c)       lwarx   r3,r4,r5
+.*:    (7c 64 28 29|29 28 64 7c)       lwarx   r3,r4,r5,1
+.*:    (7c 64 2c 2c|2c 2c 64 7c)       lwbrx   r3,r4,r5
+.*:    (80 c7 00 00|00 00 c7 80)       lwz     r6,0\(r7\)
+.*:    (84 61 00 10|10 00 61 84)       lwzu    r3,16\(r1\)
+.*:    (7c 64 28 6e|6e 28 64 7c)       lwzux   r3,r4,r5
+.*:    (7c 64 28 2e|2e 28 64 7c)       lwzx    r3,r4,r5
+.*:    (10 64 29 58|58 29 64 10)       macchw  r3,r4,r5
+.*:    (10 64 29 59|59 29 64 10)       macchw\. r3,r4,r5
+.*:    (10 64 2d 58|58 2d 64 10)       macchwo r3,r4,r5
+.*:    (10 64 2d 59|59 2d 64 10)       macchwo\. r3,r4,r5
+.*:    (10 64 29 d8|d8 29 64 10)       macchws r3,r4,r5
+.*:    (10 64 29 d9|d9 29 64 10)       macchws\. r3,r4,r5
+.*:    (10 64 2d d8|d8 2d 64 10)       macchwso r3,r4,r5
+.*:    (10 64 2d d9|d9 2d 64 10)       macchwso\. r3,r4,r5
+.*:    (10 64 29 98|98 29 64 10)       macchwsu r3,r4,r5
+.*:    (10 64 29 99|99 29 64 10)       macchwsu\. r3,r4,r5
+.*:    (10 64 2d 98|98 2d 64 10)       macchwsuo r3,r4,r5
+.*:    (10 64 2d 99|99 2d 64 10)       macchwsuo\. r3,r4,r5
+.*:    (10 64 29 18|18 29 64 10)       macchwu r3,r4,r5
+.*:    (10 64 29 19|19 29 64 10)       macchwu\. r3,r4,r5
+.*:    (10 64 2d 18|18 2d 64 10)       macchwuo r3,r4,r5
+.*:    (10 64 2d 19|19 2d 64 10)       macchwuo\. r3,r4,r5
+.*:    (10 64 28 58|58 28 64 10)       machhw  r3,r4,r5
+.*:    (10 64 28 59|59 28 64 10)       machhw\. r3,r4,r5
+.*:    (10 64 2c 58|58 2c 64 10)       machhwo r3,r4,r5
+.*:    (10 64 2c 59|59 2c 64 10)       machhwo\. r3,r4,r5
+.*:    (10 64 28 d8|d8 28 64 10)       machhws r3,r4,r5
+.*:    (10 64 28 d9|d9 28 64 10)       machhws\. r3,r4,r5
+.*:    (10 64 2c d8|d8 2c 64 10)       machhwso r3,r4,r5
+.*:    (10 64 2c d9|d9 2c 64 10)       machhwso\. r3,r4,r5
+.*:    (10 64 28 98|98 28 64 10)       machhwsu r3,r4,r5
+.*:    (10 64 28 99|99 28 64 10)       machhwsu\. r3,r4,r5
+.*:    (10 64 2c 98|98 2c 64 10)       machhwsuo r3,r4,r5
+.*:    (10 64 2c 99|99 2c 64 10)       machhwsuo\. r3,r4,r5
+.*:    (10 64 28 18|18 28 64 10)       machhwu r3,r4,r5
+.*:    (10 64 28 19|19 28 64 10)       machhwu\. r3,r4,r5
+.*:    (10 64 2c 18|18 2c 64 10)       machhwuo r3,r4,r5
+.*:    (10 64 2c 19|19 2c 64 10)       machhwuo\. r3,r4,r5
+.*:    (10 64 2b 58|58 2b 64 10)       maclhw  r3,r4,r5
+.*:    (10 64 2b 59|59 2b 64 10)       maclhw\. r3,r4,r5
+.*:    (10 64 2f 58|58 2f 64 10)       maclhwo r3,r4,r5
+.*:    (10 64 2f 59|59 2f 64 10)       maclhwo\. r3,r4,r5
+.*:    (10 64 2b d8|d8 2b 64 10)       maclhws r3,r4,r5
+.*:    (10 64 2b d9|d9 2b 64 10)       maclhws\. r3,r4,r5
+.*:    (10 64 2f d8|d8 2f 64 10)       maclhwso r3,r4,r5
+.*:    (10 64 2f d9|d9 2f 64 10)       maclhwso\. r3,r4,r5
+.*:    (10 64 2b 98|98 2b 64 10)       maclhwsu r3,r4,r5
+.*:    (10 64 2b 99|99 2b 64 10)       maclhwsu\. r3,r4,r5
+.*:    (10 64 2f 98|98 2f 64 10)       maclhwsuo r3,r4,r5
+.*:    (10 64 2f 99|99 2f 64 10)       maclhwsuo\. r3,r4,r5
+.*:    (10 64 2b 18|18 2b 64 10)       maclhwu r3,r4,r5
+.*:    (10 64 2b 19|19 2b 64 10)       maclhwu\. r3,r4,r5
+.*:    (10 64 2f 18|18 2f 64 10)       maclhwuo r3,r4,r5
+.*:    (10 64 2f 19|19 2f 64 10)       maclhwuo\. r3,r4,r5
+.*:    (7c 00 06 ac|ac 06 00 7c)       mbar
+.*:    (7c 00 06 ac|ac 06 00 7c)       mbar
+.*:    (7c 20 06 ac|ac 06 20 7c)       mbar    1
+.*:    (4c 04 00 00|00 00 04 4c)       mcrf    cr0,cr1
+.*:    (fd 90 00 80|80 00 90 fd)       mcrfs   cr3,cr4
+.*:    (7d 80 04 00|00 04 80 7d)       mcrxr   cr3
+.*:    (7c 60 00 26|26 00 60 7c)       mfcr    r3
+.*:    (7c 60 00 26|26 00 60 7c)       mfcr    r3
+.*:    (7c aa 3a 86|86 3a aa 7c)       mfdcr   r5,234
+.*:    (7c 64 02 46|46 02 64 7c)       mfdcrux r3,r4
+.*:    (7c 85 02 06|06 02 85 7c)       mfdcrx  r4,r5
+.*:    (ff c0 04 8e|8e 04 c0 ff)       mffs    f30
+.*:    (ff e0 04 8f|8f 04 e0 ff)       mffs\.   f31
+.*:    (7e 60 00 a6|a6 00 60 7e)       mfmsr   r19
+.*:    (7c 78 00 26|26 00 78 7c)       mfocrf  r3,128
+.*:    (7c 60 22 a6|a6 22 60 7c)       mfspr   r3,128
+.*:    (7c 6c 42 a6|a6 42 6c 7c)       mftb    r3
+.*:    (7c 00 04 ac|ac 04 00 7c)       msync
+.*:    (7c 78 01 20|20 01 78 7c)       mtocrf  128,r3
+.*:    (7c 6f f1 20|20 f1 6f 7c)       mtcr    r3
+.*:    (7d 10 6b 86|86 6b 10 7d)       mtdcr   432,r8
+.*:    (7c 83 03 46|46 03 83 7c)       mtdcrux r3,r4
+.*:    (7c e6 03 06|06 03 e6 7c)       mtdcrx  r6,r7
+.*:    (fc 60 00 8c|8c 00 60 fc)       mtfsb0  3
+.*:    (fc 60 00 8d|8d 00 60 fc)       mtfsb0\. 3
+.*:    (fc 60 00 4c|4c 00 60 fc)       mtfsb1  3
+.*:    (fc 60 00 4d|4d 00 60 fc)       mtfsb1\. 3
+.*:    (fc 0c 55 8e|8e 55 0c fc)       mtfsf   6,f10
+.*:    (fc 0c 55 8e|8e 55 0c fc)       mtfsf   6,f10
+.*:    (fc 0d 55 8e|8e 55 0d fc)       mtfsf   6,f10,0,1
+.*:    (fe 0c 55 8e|8e 55 0c fe)       mtfsf   6,f10,1
+.*:    (fc 0c 5d 8f|8f 5d 0c fc)       mtfsf\.  6,f11
+.*:    (fc 0c 5d 8f|8f 5d 0c fc)       mtfsf\.  6,f11
+.*:    (fc 0d 5d 8f|8f 5d 0d fc)       mtfsf\.  6,f11,0,1
+.*:    (fe 0c 5d 8f|8f 5d 0c fe)       mtfsf\.  6,f11,1
+.*:    (ff 00 01 0c|0c 01 00 ff)       mtfsfi  6,0
+.*:    (ff 00 01 0c|0c 01 00 ff)       mtfsfi  6,0
+.*:    (ff 00 01 0c|0c 01 00 ff)       mtfsfi  6,0
+.*:    (ff 01 01 0c|0c 01 01 ff)       mtfsfi  6,0,1
+.*:    (ff 00 f1 0d|0d f1 00 ff)       mtfsfi\. 6,15
+.*:    (ff 00 f1 0d|0d f1 00 ff)       mtfsfi\. 6,15
+.*:    (ff 00 f1 0d|0d f1 00 ff)       mtfsfi\. 6,15
+.*:    (ff 01 f1 0d|0d f1 01 ff)       mtfsfi\. 6,15,1
+.*:    (7d 40 01 24|24 01 40 7d)       mtmsr   r10
+.*:    (7c 78 01 20|20 01 78 7c)       mtocrf  128,r3
+.*:    (7c 60 23 a6|a6 23 60 7c)       mtspr   128,r3
+.*:    (10 64 29 50|50 29 64 10)       mulchw  r3,r4,r5
+.*:    (10 64 29 51|51 29 64 10)       mulchw\. r3,r4,r5
+.*:    (10 64 29 10|10 29 64 10)       mulchwu r3,r4,r5
+.*:    (10 64 29 11|11 29 64 10)       mulchwu\. r3,r4,r5
+.*:    (10 64 28 50|50 28 64 10)       mulhhw  r3,r4,r5
+.*:    (10 64 28 51|51 28 64 10)       mulhhw\. r3,r4,r5
+.*:    (10 64 28 10|10 28 64 10)       mulhhwu r3,r4,r5
+.*:    (10 64 28 11|11 28 64 10)       mulhhwu\. r3,r4,r5
+.*:    (7c 64 28 96|96 28 64 7c)       mulhw   r3,r4,r5
+.*:    (7c 64 28 97|97 28 64 7c)       mulhw\.  r3,r4,r5
+.*:    (7c 64 28 16|16 28 64 7c)       mulhwu  r3,r4,r5
+.*:    (7c 64 28 17|17 28 64 7c)       mulhwu\. r3,r4,r5
+.*:    (10 64 2b 50|50 2b 64 10)       mullhw  r3,r4,r5
+.*:    (10 64 2b 51|51 2b 64 10)       mullhw\. r3,r4,r5
+.*:    (10 64 2b 10|10 2b 64 10)       mullhwu r3,r4,r5
+.*:    (10 64 2b 11|11 2b 64 10)       mullhwu\. r3,r4,r5
+.*:    (1c 64 00 05|05 00 64 1c)       mulli   r3,r4,5
+.*:    (7c 64 29 d6|d6 29 64 7c)       mullw   r3,r4,r5
+.*:    (7c 64 29 d7|d7 29 64 7c)       mullw\.  r3,r4,r5
+.*:    (7c 64 2d d6|d6 2d 64 7c)       mullwo  r3,r4,r5
+.*:    (7c 64 2d d7|d7 2d 64 7c)       mullwo\. r3,r4,r5
+.*:    (7f bc f3 b8|b8 f3 bc 7f)       nand    r28,r29,r30
+.*:    (7f bc f3 b9|b9 f3 bc 7f)       nand\.   r28,r29,r30
+.*:    (7c 64 00 d0|d0 00 64 7c)       neg     r3,r4
+.*:    (7c 64 00 d1|d1 00 64 7c)       neg\.    r3,r4
+.*:    (7e 11 04 d0|d0 04 11 7e)       nego    r16,r17
+.*:    (7e 53 04 d1|d1 04 53 7e)       nego\.   r18,r19
+.*:    (10 64 29 5c|5c 29 64 10)       nmacchw r3,r4,r5
+.*:    (10 64 29 5d|5d 29 64 10)       nmacchw\. r3,r4,r5
+.*:    (10 64 2d 5c|5c 2d 64 10)       nmacchwo r3,r4,r5
+.*:    (10 64 2d 5d|5d 2d 64 10)       nmacchwo\. r3,r4,r5
+.*:    (10 64 29 dc|dc 29 64 10)       nmacchws r3,r4,r5
+.*:    (10 64 29 dd|dd 29 64 10)       nmacchws\. r3,r4,r5
+.*:    (10 64 2d dc|dc 2d 64 10)       nmacchwso r3,r4,r5
+.*:    (10 64 2d dd|dd 2d 64 10)       nmacchwso\. r3,r4,r5
+.*:    (10 64 28 5c|5c 28 64 10)       nmachhw r3,r4,r5
+.*:    (10 64 28 5d|5d 28 64 10)       nmachhw\. r3,r4,r5
+.*:    (10 64 2c 5c|5c 2c 64 10)       nmachhwo r3,r4,r5
+.*:    (10 64 2c 5d|5d 2c 64 10)       nmachhwo\. r3,r4,r5
+.*:    (10 64 28 dc|dc 28 64 10)       nmachhws r3,r4,r5
+.*:    (10 64 28 dd|dd 28 64 10)       nmachhws\. r3,r4,r5
+.*:    (10 64 2c dc|dc 2c 64 10)       nmachhwso r3,r4,r5
+.*:    (10 64 2c dd|dd 2c 64 10)       nmachhwso\. r3,r4,r5
+.*:    (10 64 2b 5c|5c 2b 64 10)       nmaclhw r3,r4,r5
+.*:    (10 64 2b 5d|5d 2b 64 10)       nmaclhw\. r3,r4,r5
+.*:    (10 64 2f 5c|5c 2f 64 10)       nmaclhwo r3,r4,r5
+.*:    (10 64 2f 5d|5d 2f 64 10)       nmaclhwo\. r3,r4,r5
+.*:    (10 64 2b dc|dc 2b 64 10)       nmaclhws r3,r4,r5
+.*:    (10 64 2b dd|dd 2b 64 10)       nmaclhws\. r3,r4,r5
+.*:    (10 64 2f dc|dc 2f 64 10)       nmaclhwso r3,r4,r5
+.*:    (10 64 2f dd|dd 2f 64 10)       nmaclhwso\. r3,r4,r5
+.*:    (7e b4 b0 f8|f8 b0 b4 7e)       nor     r20,r21,r22
+.*:    (7e b4 b0 f9|f9 b0 b4 7e)       nor\.    r20,r21,r22
+.*:    (7c 40 23 78|78 23 40 7c)       or      r0,r2,r4
+.*:    (7d cc 83 79|79 83 cc 7d)       or\.     r12,r14,r16
+.*:    (7e 0f 8b 38|38 8b 0f 7e)       orc     r15,r16,r17
+.*:    (7e 72 a3 39|39 a3 72 7e)       orc\.    r18,r19,r20
+.*:    (60 21 00 00|00 00 21 60)       ori     r1,r1,0
+.*:    (64 83 de ad|ad de 83 64)       oris    r3,r4,57005
+.*:    (7c 83 00 f4|f4 00 83 7c)       popcntb r3,r4
+.*:    (7c 83 01 34|34 01 83 7c)       prtyw   r3,r4
+.*:    (4c 00 00 66|66 00 00 4c)       rfci
+.*:    (4c 00 00 64|64 00 00 4c)       rfi
+.*:    (4c 00 00 4c|4c 00 00 4c)       rfmci
+.*:    (50 83 65 36|36 65 83 50)       rlwimi  r3,r4,12,20,27
+.*:    (50 83 65 37|37 65 83 50)       rlwimi\. r3,r4,12,20,27
+.*:    (54 83 00 36|36 00 83 54)       rlwinm  r3,r4,0,0,27
+.*:    (54 83 d1 be|be d1 83 54)       rlwinm  r3,r4,26,6,31
+.*:    (54 83 20 26|26 20 83 54)       rlwinm  r3,r4,4,0,19
+.*:    (54 83 00 37|37 00 83 54)       rlwinm\. r3,r4,0,0,27
+.*:    (5c 83 28 3e|3e 28 83 5c)       rotlw   r3,r4,r5
+.*:    (5c 83 28 3f|3f 28 83 5c)       rotlw\.  r3,r4,r5
+.*:    (5c 83 28 3e|3e 28 83 5c)       rotlw   r3,r4,r5
+.*:    (5c 83 28 3f|3f 28 83 5c)       rotlw\.  r3,r4,r5
+.*:    (44 00 00 02|02 00 00 44)       sc
+.*:    (7c 83 28 30|30 28 83 7c)       slw     r3,r4,r5
+.*:    (7c 83 28 31|31 28 83 7c)       slw\.    r3,r4,r5
+.*:    (7c 83 2e 30|30 2e 83 7c)       sraw    r3,r4,r5
+.*:    (7c 83 2e 31|31 2e 83 7c)       sraw\.   r3,r4,r5
+.*:    (7c 83 86 70|70 86 83 7c)       srawi   r3,r4,16
+.*:    (7c 83 86 71|71 86 83 7c)       srawi\.  r3,r4,16
+.*:    (7c 83 2c 30|30 2c 83 7c)       srw     r3,r4,r5
+.*:    (7c 83 2c 31|31 2c 83 7c)       srw\.    r3,r4,r5
+.*:    (54 83 d1 be|be d1 83 54)       rlwinm  r3,r4,26,6,31
+.*:    (99 61 00 02|02 00 61 99)       stb     r11,2\(r1\)
+.*:    (9d 81 00 03|03 00 81 9d)       stbu    r12,3\(r1\)
+.*:    (7d ae 79 ee|ee 79 ae 7d)       stbux   r13,r14,r15
+.*:    (7c 64 29 ae|ae 29 64 7c)       stbx    r3,r4,r5
+.*:    (db 21 00 20|20 00 21 db)       stfd    f25,32\(r1\)
+.*:    (df 41 00 28|28 00 41 df)       stfdu   f26,40\(r1\)
+.*:    (7c 01 15 ee|ee 15 01 7c)       stfdux  f0,r1,r2
+.*:    (7f be fd ae|ae fd be 7f)       stfdx   f29,r30,r31
+.*:    (7d 43 27 ae|ae 27 43 7d)       stfiwx  f10,r3,r4
+.*:    (d2 e1 00 14|14 00 e1 d2)       stfs    f23,20\(r1\)
+.*:    (d7 01 00 18|18 00 01 d7)       stfsu   f24,24\(r1\)
+.*:    (7f 5b e5 6e|6e e5 5b 7f)       stfsux  f26,r27,r28
+.*:    (7e f8 cd 2e|2e cd f8 7e)       stfsx   f23,r24,r25
+.*:    (b2 21 00 0a|0a 00 21 b2)       sth     r17,10\(r1\)
+.*:    (7c c7 47 2c|2c 47 c7 7c)       sthbrx  r6,r7,r8
+.*:    (b6 41 00 0c|0c 00 41 b6)       sthu    r18,12\(r1\)
+.*:    (7e b6 bb 6e|6e bb b6 7e)       sthux   r21,r22,r23
+.*:    (7d 8d 73 2e|2e 73 8d 7d)       sthx    r12,r13,r14
+.*:    (90 c7 ff f0|f0 ff c7 90)       stw     r6,-16\(r7\)
+.*:    (7c 64 2d 2c|2c 2d 64 7c)       stwbrx  r3,r4,r5
+.*:    (7c 64 29 2d|2d 29 64 7c)       stwcx\.  r3,r4,r5
+.*:    (94 61 00 10|10 00 61 94)       stwu    r3,16\(r1\)
+.*:    (7c 64 29 6e|6e 29 64 7c)       stwux   r3,r4,r5
+.*:    (7c 64 29 2e|2e 29 64 7c)       stwx    r3,r4,r5
+.*:    (7c 64 28 50|50 28 64 7c)       subf    r3,r4,r5
+.*:    (7c 64 28 51|51 28 64 7c)       subf\.   r3,r4,r5
+.*:    (7c 64 28 10|10 28 64 7c)       subfc   r3,r4,r5
+.*:    (7c 64 28 11|11 28 64 7c)       subfc\.  r3,r4,r5
+.*:    (7c 64 2c 10|10 2c 64 7c)       subfco  r3,r4,r5
+.*:    (7c 64 2c 11|11 2c 64 7c)       subfco\. r3,r4,r5
+.*:    (7c 64 29 10|10 29 64 7c)       subfe   r3,r4,r5
+.*:    (7c 64 29 11|11 29 64 7c)       subfe\.  r3,r4,r5
+.*:    (7c 64 2d 10|10 2d 64 7c)       subfeo  r3,r4,r5
+.*:    (7c 64 2d 11|11 2d 64 7c)       subfeo\. r3,r4,r5
+.*:    (20 64 00 05|05 00 64 20)       subfic  r3,r4,5
+.*:    (7c 64 01 d0|d0 01 64 7c)       subfme  r3,r4
+.*:    (7c 64 01 d1|d1 01 64 7c)       subfme\. r3,r4
+.*:    (7c 64 05 d0|d0 05 64 7c)       subfmeo r3,r4
+.*:    (7c 64 05 d1|d1 05 64 7c)       subfmeo\. r3,r4
+.*:    (7c 64 2c 50|50 2c 64 7c)       subfo   r3,r4,r5
+.*:    (7c 64 2c 51|51 2c 64 7c)       subfo\.  r3,r4,r5
+.*:    (7c 64 01 90|90 01 64 7c)       subfze  r3,r4
+.*:    (7c 64 01 91|91 01 64 7c)       subfze\. r3,r4
+.*:    (7c 64 05 90|90 05 64 7c)       subfzeo r3,r4
+.*:    (7c 64 05 91|91 05 64 7c)       subfzeo\. r3,r4
+.*:    (7c 07 46 24|24 46 07 7c)       tlbivax r7,r8
+.*:    (7c 22 3f 64|64 3f 22 7c)       tlbre   r1,r2,7
+.*:    (7c 0b 67 24|24 67 0b 7c)       tlbsx   r11,r12
+.*:    (7d 8d 77 24|24 77 8d 7d)       tlbsx   r12,r13,r14
+.*:    (7d 8d 77 25|25 77 8d 7d)       tlbsx\.  r12,r13,r14
+.*:    (7c 00 04 6c|6c 04 00 7c)       tlbsync
+.*:    (7c 00 07 a4|a4 07 00 7c)       tlbwe
+.*:    (7c 00 07 a4|a4 07 00 7c)       tlbwe
+.*:    (7c 21 0f a4|a4 0f 21 7c)       tlbwe   r1,r1,1
+.*:    (7f e0 00 08|08 00 e0 7f)       trap
+.*:    (7f e0 00 08|08 00 e0 7f)       trap
+.*:    (7c 83 20 08|08 20 83 7c)       tweq    r3,r4
+.*:    (7c a3 20 08|08 20 a3 7c)       twlge   r3,r4
+.*:    (7c 83 20 08|08 20 83 7c)       tweq    r3,r4
+.*:    (0d 03 00 0f|0f 00 03 0d)       twgti   r3,15
+.*:    (0c c3 00 0f|0f 00 c3 0c)       twllei  r3,15
+.*:    (0d 03 00 0f|0f 00 03 0d)       twgti   r3,15
+.*:    (7c a3 20 08|08 20 a3 7c)       twlge   r3,r4
+.*:    (0c c3 00 0f|0f 00 c3 0c)       twllei  r3,15
+.*:    (7c 60 01 06|06 01 60 7c)       wrtee   r3
+.*:    (7c 00 81 46|46 81 00 7c)       wrteei  1
+.*:    (7f dd fa 78|78 fa dd 7f)       xor     r29,r30,r31
+.*:    (7f dd fa 79|79 fa dd 7f)       xor\.    r29,r30,r31
+.*:    (68 83 de ad|ad de 83 68)       xori    r3,r4,57005
+.*:    (6c 83 de ad|ad de 83 6c)       xoris   r3,r4,57005
index da6fb7152f48f9548306b9609cfe563779205f92..db5d9e153b6b01c333007a269968275be44f65e6 100644 (file)
@@ -226,9 +226,6 @@ ppc476:
        lhzu    14,2(1)
        lhzux   20,22,24
        lhzx    23,24,25
-       lmw     3,-16(1)
-       lswi    5,4,16
-       lswx    3,4,5
        lwarx   3,4,5
        lwarx   3,4,5,0
        lwarx   3,4,5,1
@@ -433,9 +430,6 @@ ppc476:
        sthu    18,12(1)
        sthux   21,22,23
        sthx    12,13,14
-       stmw    6,-16(1)
-       stswi   3,4,16
-       stswx   3,4,5
        stw     6,-16(7)
        stwbrx  3,4,5
        stwcx.  3,4,5
index fa7211943aeb20d55289c347052bbac55b2ababc..517ec1c368ec32a0939cd748ab2537a08b6f2698 100644 (file)
 Disassembly of section \.text:
 
 0+00 <start>:
-   0:  (7c 85 32 15|15 32 85 7c)       add\.    r4,r5,r6
-   4:  (7c 85 32 14|14 32 85 7c)       add     r4,r5,r6
-   8:  (7c 85 30 15|15 30 85 7c)       addc\.   r4,r5,r6
-   c:  (7c 85 30 14|14 30 85 7c)       addc    r4,r5,r6
-  10:  (7c 85 34 15|15 34 85 7c)       addco\.  r4,r5,r6
-  14:  (7c 85 34 14|14 34 85 7c)       addco   r4,r5,r6
-  18:  (7c 85 31 15|15 31 85 7c)       adde\.   r4,r5,r6
-  1c:  (7c 85 31 14|14 31 85 7c)       adde    r4,r5,r6
-  20:  (7c 85 35 15|15 35 85 7c)       addeo\.  r4,r5,r6
-  24:  (7c 85 35 14|14 35 85 7c)       addeo   r4,r5,r6
-  28:  (38 85 00 0d|0d 00 85 38)       addi    r4,r5,13
-  2c:  (38 85 ff f3|f3 ff 85 38)       addi    r4,r5,-13
-  30:  (34 85 00 0d|0d 00 85 34)       addic\.  r4,r5,13
-  34:  (34 85 ff f3|f3 ff 85 34)       addic\.  r4,r5,-13
-  38:  (30 85 00 0d|0d 00 85 30)       addic   r4,r5,13
-  3c:  (30 85 ff f3|f3 ff 85 30)       addic   r4,r5,-13
-  40:  (3c 85 00 17|17 00 85 3c)       addis   r4,r5,23
-  44:  (3c 85 ff e9|e9 ff 85 3c)       addis   r4,r5,-23
-  48:  (7c 85 01 d5|d5 01 85 7c)       addme\.  r4,r5
-  4c:  (7c 85 01 d4|d4 01 85 7c)       addme   r4,r5
-  50:  (7c 85 05 d5|d5 05 85 7c)       addmeo\. r4,r5
-  54:  (7c 85 05 d4|d4 05 85 7c)       addmeo  r4,r5
-  58:  (7c 85 36 15|15 36 85 7c)       addo\.   r4,r5,r6
-  5c:  (7c 85 36 14|14 36 85 7c)       addo    r4,r5,r6
-  60:  (7c 85 01 95|95 01 85 7c)       addze\.  r4,r5
-  64:  (7c 85 01 94|94 01 85 7c)       addze   r4,r5
-  68:  (7c 85 05 95|95 05 85 7c)       addzeo\. r4,r5
-  6c:  (7c 85 05 94|94 05 85 7c)       addzeo  r4,r5
-  70:  (7c a4 30 39|39 30 a4 7c)       and\.    r4,r5,r6
-  74:  (7c a4 30 38|38 30 a4 7c)       and     r4,r5,r6
-  78:  (7c a4 30 79|79 30 a4 7c)       andc\.   r4,r5,r6
-  7c:  (7c a4 30 78|78 30 a4 7c)       andc    r4,r5,r6
-  80:  (70 a4 00 06|06 00 a4 70)       andi\.   r4,r5,6
-  84:  (74 a4 00 06|06 00 a4 74)       andis\.  r4,r5,6
-  88:  (00 00 02 00|00 02 00 00)       attn
-  8c:  (48 00 00 02|02 00 00 48)       ba      0 <start>
-                       8c: R_PPC(|64)_ADDR24   label_abs
-  90:  (40 8a 00 00|00 00 8a 40)       bne     cr2,90 <start\+0x90>
-                       90: R_PPC(|64)_REL14    foo
-  94:  (40 ca 00 00|00 00 ca 40)       bne-    cr2,94 <start\+0x94>
-                       94: R_PPC(|64)_REL14    foo
-  98:  (40 ea 00 00|00 00 ea 40)       bne\+    cr2,98 <start\+0x98>
-                       98: R_PPC(|64)_REL14    foo
-  9c:  (40 85 00 02|02 00 85 40)       blea    cr1,0 <start>
-                       9c: R_PPC(|64)_ADDR14   foo_abs
-  a0:  (40 c5 00 02|02 00 c5 40)       blea-   cr1,0 <start>
-                       a0: R_PPC(|64)_ADDR14   foo_abs
-  a4:  (40 e5 00 02|02 00 e5 40)       blea\+   cr1,0 <start>
-                       a4: R_PPC(|64)_ADDR14   foo_abs
-  a8:  (4c 86 0c 20|20 0c 86 4c)       bcctr   4,4\*cr1\+eq,1
-  ac:  (4c c6 04 20|20 04 c6 4c)       bnectr- cr1
-  b0:  (4c e6 04 20|20 04 e6 4c)       bnectr\+ cr1
-  b4:  (4c 86 0c 21|21 0c 86 4c)       bcctrl  4,4\*cr1\+eq,1
-  b8:  (4c c6 04 21|21 04 c6 4c)       bnectrl- cr1
-  bc:  (4c e6 04 21|21 04 e6 4c)       bnectrl\+ cr1
-  c0:  (40 8a 00 01|01 00 8a 40)       bnel    cr2,c0 <start\+0xc0>
-                       c0: R_PPC(|64)_REL14    foo
-  c4:  (40 ca 00 01|01 00 ca 40)       bnel-   cr2,c4 <start\+0xc4>
-                       c4: R_PPC(|64)_REL14    foo
-  c8:  (40 ea 00 01|01 00 ea 40)       bnel\+   cr2,c8 <start\+0xc8>
-                       c8: R_PPC(|64)_REL14    foo
-  cc:  (40 85 00 03|03 00 85 40)       blela   cr1,0 <start>
-                       cc: R_PPC(|64)_ADDR14   foo_abs
-  d0:  (40 c5 00 03|03 00 c5 40)       blela-  cr1,0 <start>
-                       d0: R_PPC(|64)_ADDR14   foo_abs
-  d4:  (40 e5 00 03|03 00 e5 40)       blela\+  cr1,0 <start>
-                       d4: R_PPC(|64)_ADDR14   foo_abs
-  d8:  (4c 86 08 20|20 08 86 4c)       bclr    4,4\*cr1\+eq,1
-  dc:  (4c c6 00 20|20 00 c6 4c)       bnelr-  cr1
-  e0:  (4c e6 00 20|20 00 e6 4c)       bnelr\+  cr1
-  e4:  (4c 86 08 21|21 08 86 4c)       bclrl   4,4\*cr1\+eq,1
-  e8:  (4c c6 00 21|21 00 c6 4c)       bnelrl- cr1
-  ec:  (4c e6 00 21|21 00 e6 4c)       bnelrl\+ cr1
-  f0:  (48 00 00 00|00 00 00 48)       b       f0 <start\+0xf0>
-                       f0: R_PPC(|64)_REL24    label
-  f4:  (48 00 00 03|03 00 00 48)       bla     0 <start>
-                       f4: R_PPC(|64)_ADDR24   label_abs
-  f8:  (48 00 00 01|01 00 00 48)       bl      f8 <start\+0xf8>
-                       f8: R_PPC(|64)_REL24    label
-  fc:  (7d 6a 61 f8|f8 61 6a 7d)       bpermd  r10,r11,r12
- 100:  (7c a7 40 00|00 40 a7 7c)       cmpd    cr1,r7,r8
- 104:  (7d 6a 63 f8|f8 63 6a 7d)       cmpb    r10,r11,r12
- 108:  (2c aa 00 0d|0d 00 aa 2c)       cmpdi   cr1,r10,13
- 10c:  (2c aa ff f3|f3 ff aa 2c)       cmpdi   cr1,r10,-13
- 110:  (7c a7 40 40|40 40 a7 7c)       cmpld   cr1,r7,r8
- 114:  (28 aa 00 64|64 00 aa 28)       cmpldi  cr1,r10,100
- 118:  (7e b4 00 75|75 00 b4 7e)       cntlzd\. r20,r21
- 11c:  (7e b4 00 74|74 00 b4 7e)       cntlzd  r20,r21
- 120:  (7e b4 00 35|35 00 b4 7e)       cntlzw\. r20,r21
- 124:  (7e b4 00 34|34 00 b4 7e)       cntlzw  r20,r21
- 128:  (4c 22 1a 02|02 1a 22 4c)       crand   gt,eq,so
- 12c:  (4c 22 19 02|02 19 22 4c)       crandc  gt,eq,so
- 130:  (4c 22 1a 42|42 1a 22 4c)       creqv   gt,eq,so
- 134:  (4c 22 19 c2|c2 19 22 4c)       crnand  gt,eq,so
- 138:  (4c 22 18 42|42 18 22 4c)       crnor   gt,eq,so
- 13c:  (4c 22 1b 82|82 1b 22 4c)       cror    gt,eq,so
- 140:  (4c 22 1b 42|42 1b 22 4c)       crorc   gt,eq,so
- 144:  (4c 22 19 82|82 19 22 4c)       crxor   gt,eq,so
- 148:  (7c 0a 5d ec|ec 5d 0a 7c)       dcba    r10,r11
- 14c:  (7c 0a 58 ac|ac 58 0a 7c)       dcbf    r10,r11
- 150:  (7c 2a 58 ac|ac 58 2a 7c)       dcbfl   r10,r11
- 154:  (7c 0a 58 fe|fe 58 0a 7c)       dcbfep  r10,r11
- 158:  (7c 0a 5b ac|ac 5b 0a 7c)       dcbi    r10,r11
- 15c:  (7c 0a 5b 0c|0c 5b 0a 7c)       dcblc   r10,r11
- 160:  (7c 2a 5b 0c|0c 5b 2a 7c)       dcblc   1,r10,r11
- 164:  (7c 0a 58 6c|6c 58 0a 7c)       dcbst   r10,r11
- 168:  (7c 0a 58 7e|7e 58 0a 7c)       dcbstep r10,r11
- 16c:  (7c 0a 5a 2c|2c 5a 0a 7c)       dcbt    r10,r11
- 170:  (7c 2a 5a 2c|2c 5a 2a 7c)       dcbt    1,r10,r11
- 174:  (7d 4b 62 7e|7e 62 4b 7d)       dcbtep  r10,r11,r12
- 178:  (7c 0a 59 4c|4c 59 0a 7c)       dcbtls  r10,r11
- 17c:  (7c 2a 59 4c|4c 59 2a 7c)       dcbtls  1,r10,r11
- 180:  (7c 0a 59 ec|ec 59 0a 7c)       dcbtst  r10,r11
- 184:  (7c 2a 59 ec|ec 59 2a 7c)       dcbtst  1,r10,r11
- 188:  (7d 4b 61 fe|fe 61 4b 7d)       dcbtstep r10,r11,r12
- 18c:  (7c 0a 59 0c|0c 59 0a 7c)       dcbtstls r10,r11
- 190:  (7c 2a 59 0c|0c 59 2a 7c)       dcbtstls 1,r10,r11
- 194:  (7c 0a 5f ec|ec 5f 0a 7c)       dcbz    r10,r11
- 198:  (7c 0a 5f fe|fe 5f 0a 7c)       dcbzep  r10,r11
- 19c:  (7c 00 03 8c|8c 03 00 7c)       dccci
- 1a0:  (7c 00 03 8c|8c 03 00 7c)       dccci
- 1a4:  (7c 00 03 8c|8c 03 00 7c)       dccci
- 1a8:  (7d 40 03 8c|8c 03 40 7d)       dci     10
- 1ac:  (7e 95 b3 d3|d3 b3 95 7e)       divd\.   r20,r21,r22
- 1b0:  (7e 95 b3 d2|d2 b3 95 7e)       divd    r20,r21,r22
- 1b4:  (7e 95 b7 d3|d3 b7 95 7e)       divdo\.  r20,r21,r22
- 1b8:  (7e 95 b7 d2|d2 b7 95 7e)       divdo   r20,r21,r22
- 1bc:  (7e 95 b3 93|93 b3 95 7e)       divdu\.  r20,r21,r22
- 1c0:  (7e 95 b3 92|92 b3 95 7e)       divdu   r20,r21,r22
- 1c4:  (7e 95 b7 93|93 b7 95 7e)       divduo\. r20,r21,r22
- 1c8:  (7e 95 b7 92|92 b7 95 7e)       divduo  r20,r21,r22
- 1cc:  (7e 95 b3 d7|d7 b3 95 7e)       divw\.   r20,r21,r22
- 1d0:  (7e 95 b3 d6|d6 b3 95 7e)       divw    r20,r21,r22
- 1d4:  (7e 95 b7 d7|d7 b7 95 7e)       divwo\.  r20,r21,r22
- 1d8:  (7e 95 b7 d6|d6 b7 95 7e)       divwo   r20,r21,r22
- 1dc:  (7e 95 b3 97|97 b3 95 7e)       divwu\.  r20,r21,r22
- 1e0:  (7e 95 b3 96|96 b3 95 7e)       divwu   r20,r21,r22
- 1e4:  (7e 95 b7 97|97 b7 95 7e)       divwuo\. r20,r21,r22
- 1e8:  (7e 95 b7 96|96 b7 95 7e)       divwuo  r20,r21,r22
- 1ec:  (7e b4 b2 39|39 b2 b4 7e)       eqv\.    r20,r21,r22
- 1f0:  (7e b4 b2 38|38 b2 b4 7e)       eqv     r20,r21,r22
- 1f4:  (7c 0a 58 66|66 58 0a 7c)       eratilx 0,r10,r11
- 1f8:  (7c 2a 58 66|66 58 2a 7c)       eratilx 1,r10,r11
- 1fc:  (7c ea 58 66|66 58 ea 7c)       eratilx 7,r10,r11
- 200:  (7d 4b 66 66|66 66 4b 7d)       erativax r10,r11,r12
- 204:  (7d 4b 01 66|66 01 4b 7d)       eratre  r10,r11,0
- 208:  (7d 4b 19 66|66 19 4b 7d)       eratre  r10,r11,3
- 20c:  (7d 4b 61 27|27 61 4b 7d)       eratsx\. r10,r11,r12
- 210:  (7d 4b 61 26|26 61 4b 7d)       eratsx  r10,r11,r12
- 214:  (7d 4b 01 a6|a6 01 4b 7d)       eratwe  r10,r11,0
- 218:  (7d 4b 19 a6|a6 19 4b 7d)       eratwe  r10,r11,3
- 21c:  (7d 6a 07 75|75 07 6a 7d)       extsb\.  r10,r11
- 220:  (7d 6a 07 74|74 07 6a 7d)       extsb   r10,r11
- 224:  (7d 6a 07 35|35 07 6a 7d)       extsh\.  r10,r11
- 228:  (7d 6a 07 34|34 07 6a 7d)       extsh   r10,r11
- 22c:  (7d 6a 07 b5|b5 07 6a 7d)       extsw\.  r10,r11
- 230:  (7d 6a 07 b4|b4 07 6a 7d)       extsw   r10,r11
- 234:  (fe 80 aa 11|11 aa 80 fe)       fabs\.   f20,f21
- 238:  (fe 80 aa 10|10 aa 80 fe)       fabs    f20,f21
- 23c:  (fe 95 b0 2b|2b b0 95 fe)       fadd\.   f20,f21,f22
- 240:  (fe 95 b0 2a|2a b0 95 fe)       fadd    f20,f21,f22
- 244:  (ee 95 b0 2b|2b b0 95 ee)       fadds\.  f20,f21,f22
- 248:  (ee 95 b0 2a|2a b0 95 ee)       fadds   f20,f21,f22
- 24c:  (fe 80 ae 9d|9d ae 80 fe)       fcfid\.  f20,f21
- 250:  (fe 80 ae 9c|9c ae 80 fe)       fcfid   f20,f21
- 254:  (fc 14 a8 40|40 a8 14 fc)       fcmpo   cr0,f20,f21
- 258:  (fc 94 a8 40|40 a8 94 fc)       fcmpo   cr1,f20,f21
- 25c:  (fc 14 a8 00|00 a8 14 fc)       fcmpu   cr0,f20,f21
- 260:  (fc 94 a8 00|00 a8 94 fc)       fcmpu   cr1,f20,f21
- 264:  (fe 95 b0 11|11 b0 95 fe)       fcpsgn\. f20,f21,f22
- 268:  (fe 95 b0 10|10 b0 95 fe)       fcpsgn  f20,f21,f22
- 26c:  (fe 80 ae 5d|5d ae 80 fe)       fctid\.  f20,f21
- 270:  (fe 80 ae 5c|5c ae 80 fe)       fctid   f20,f21
- 274:  (fe 80 ae 5f|5f ae 80 fe)       fctidz\. f20,f21
- 278:  (fe 80 ae 5e|5e ae 80 fe)       fctidz  f20,f21
- 27c:  (fe 80 a8 1d|1d a8 80 fe)       fctiw\.  f20,f21
- 280:  (fe 80 a8 1c|1c a8 80 fe)       fctiw   f20,f21
- 284:  (fe 80 a8 1f|1f a8 80 fe)       fctiwz\. f20,f21
- 288:  (fe 80 a8 1e|1e a8 80 fe)       fctiwz  f20,f21
- 28c:  (fe 95 b0 25|25 b0 95 fe)       fdiv\.   f20,f21,f22
- 290:  (fe 95 b0 24|24 b0 95 fe)       fdiv    f20,f21,f22
- 294:  (ee 95 b0 25|25 b0 95 ee)       fdivs\.  f20,f21,f22
- 298:  (ee 95 b0 24|24 b0 95 ee)       fdivs   f20,f21,f22
- 29c:  (fe 95 bd bb|bb bd 95 fe)       fmadd\.  f20,f21,f22,f23
- 2a0:  (fe 95 bd ba|ba bd 95 fe)       fmadd   f20,f21,f22,f23
- 2a4:  (ee 95 bd bb|bb bd 95 ee)       fmadds\. f20,f21,f22,f23
- 2a8:  (ee 95 bd ba|ba bd 95 ee)       fmadds  f20,f21,f22,f23
- 2ac:  (fe 80 a8 91|91 a8 80 fe)       fmr\.    f20,f21
- 2b0:  (fe 80 a8 90|90 a8 80 fe)       fmr     f20,f21
- 2b4:  (fe 95 bd b9|b9 bd 95 fe)       fmsub\.  f20,f21,f22,f23
- 2b8:  (fe 95 bd b8|b8 bd 95 fe)       fmsub   f20,f21,f22,f23
- 2bc:  (ee 95 bd b9|b9 bd 95 ee)       fmsubs\. f20,f21,f22,f23
- 2c0:  (ee 95 bd b8|b8 bd 95 ee)       fmsubs  f20,f21,f22,f23
- 2c4:  (fe 95 05 b3|b3 05 95 fe)       fmul\.   f20,f21,f22
- 2c8:  (fe 95 05 b2|b2 05 95 fe)       fmul    f20,f21,f22
- 2cc:  (ee 95 05 b3|b3 05 95 ee)       fmuls\.  f20,f21,f22
- 2d0:  (ee 95 05 b2|b2 05 95 ee)       fmuls   f20,f21,f22
- 2d4:  (fe 80 a9 11|11 a9 80 fe)       fnabs\.  f20,f21
- 2d8:  (fe 80 a9 10|10 a9 80 fe)       fnabs   f20,f21
- 2dc:  (fe 80 a8 51|51 a8 80 fe)       fneg\.   f20,f21
- 2e0:  (fe 80 a8 50|50 a8 80 fe)       fneg    f20,f21
- 2e4:  (fe 95 bd bf|bf bd 95 fe)       fnmadd\. f20,f21,f22,f23
- 2e8:  (fe 95 bd be|be bd 95 fe)       fnmadd  f20,f21,f22,f23
- 2ec:  (ee 95 bd bf|bf bd 95 ee)       fnmadds\. f20,f21,f22,f23
- 2f0:  (ee 95 bd be|be bd 95 ee)       fnmadds f20,f21,f22,f23
- 2f4:  (fe 95 bd bd|bd bd 95 fe)       fnmsub\. f20,f21,f22,f23
- 2f8:  (fe 95 bd bc|bc bd 95 fe)       fnmsub  f20,f21,f22,f23
- 2fc:  (ee 95 bd bd|bd bd 95 ee)       fnmsubs\. f20,f21,f22,f23
- 300:  (ee 95 bd bc|bc bd 95 ee)       fnmsubs f20,f21,f22,f23
- 304:  (fe 80 a8 31|31 a8 80 fe)       fre\.    f20,f21
- 308:  (fe 80 a8 30|30 a8 80 fe)       fre     f20,f21
- 30c:  (fe 80 a8 31|31 a8 80 fe)       fre\.    f20,f21
- 310:  (fe 80 a8 30|30 a8 80 fe)       fre     f20,f21
- 314:  (fe 81 a8 31|31 a8 81 fe)       fre\.    f20,f21,1
- 318:  (fe 81 a8 30|30 a8 81 fe)       fre     f20,f21,1
- 31c:  (ee 80 a8 31|31 a8 80 ee)       fres\.   f20,f21
- 320:  (ee 80 a8 30|30 a8 80 ee)       fres    f20,f21
- 324:  (ee 80 a8 31|31 a8 80 ee)       fres\.   f20,f21
- 328:  (ee 80 a8 30|30 a8 80 ee)       fres    f20,f21
- 32c:  (ee 81 a8 31|31 a8 81 ee)       fres\.   f20,f21,1
- 330:  (ee 81 a8 30|30 a8 81 ee)       fres    f20,f21,1
- 334:  (fe 80 ab d1|d1 ab 80 fe)       frim\.   f20,f21
- 338:  (fe 80 ab d0|d0 ab 80 fe)       frim    f20,f21
- 33c:  (fe 80 ab 11|11 ab 80 fe)       frin\.   f20,f21
- 340:  (fe 80 ab 10|10 ab 80 fe)       frin    f20,f21
- 344:  (fe 80 ab 91|91 ab 80 fe)       frip\.   f20,f21
- 348:  (fe 80 ab 90|90 ab 80 fe)       frip    f20,f21
- 34c:  (fe 80 ab 51|51 ab 80 fe)       friz\.   f20,f21
- 350:  (fe 80 ab 50|50 ab 80 fe)       friz    f20,f21
- 354:  (fe 80 a8 19|19 a8 80 fe)       frsp\.   f20,f21
- 358:  (fe 80 a8 18|18 a8 80 fe)       frsp    f20,f21
- 35c:  (fe 80 a8 35|35 a8 80 fe)       frsqrte\. f20,f21
- 360:  (fe 80 a8 34|34 a8 80 fe)       frsqrte f20,f21
- 364:  (fe 80 a8 35|35 a8 80 fe)       frsqrte\. f20,f21
- 368:  (fe 80 a8 34|34 a8 80 fe)       frsqrte f20,f21
- 36c:  (fe 81 a8 35|35 a8 81 fe)       frsqrte\. f20,f21,1
- 370:  (fe 81 a8 34|34 a8 81 fe)       frsqrte f20,f21,1
- 374:  (ee 80 a8 34|34 a8 80 ee)       frsqrtes f20,f21
- 378:  (ee 80 a8 35|35 a8 80 ee)       frsqrtes\. f20,f21
- 37c:  (ee 80 a8 34|34 a8 80 ee)       frsqrtes f20,f21
- 380:  (ee 80 a8 35|35 a8 80 ee)       frsqrtes\. f20,f21
- 384:  (ee 81 a8 34|34 a8 81 ee)       frsqrtes f20,f21,1
- 388:  (ee 81 a8 35|35 a8 81 ee)       frsqrtes\. f20,f21,1
- 38c:  (fe 95 bd af|af bd 95 fe)       fsel\.   f20,f21,f22,f23
- 390:  (fe 95 bd ae|ae bd 95 fe)       fsel    f20,f21,f22,f23
- 394:  (fe 80 a8 2d|2d a8 80 fe)       fsqrt\.  f20,f21
- 398:  (fe 80 a8 2c|2c a8 80 fe)       fsqrt   f20,f21
- 39c:  (ee 80 a8 2d|2d a8 80 ee)       fsqrts\. f20,f21
- 3a0:  (ee 80 a8 2c|2c a8 80 ee)       fsqrts  f20,f21
- 3a4:  (fe 95 b0 29|29 b0 95 fe)       fsub\.   f20,f21,f22
- 3a8:  (fe 95 b0 28|28 b0 95 fe)       fsub    f20,f21,f22
- 3ac:  (ee 95 b0 29|29 b0 95 ee)       fsubs\.  f20,f21,f22
- 3b0:  (ee 95 b0 28|28 b0 95 ee)       fsubs   f20,f21,f22
- 3b4:  (7c 0a 5f ac|ac 5f 0a 7c)       icbi    r10,r11
- 3b8:  (7c 0a 5f be|be 5f 0a 7c)       icbiep  r10,r11
- 3bc:  (7c 0a 58 2c|2c 58 0a 7c)       icbt    r10,r11
- 3c0:  (7c ea 58 2c|2c 58 ea 7c)       icbt    7,r10,r11
- 3c4:  (7c 0a 5b cc|cc 5b 0a 7c)       icbtls  r10,r11
- 3c8:  (7c ea 5b cc|cc 5b ea 7c)       icbtls  7,r10,r11
- 3cc:  (7c 00 07 8c|8c 07 00 7c)       iccci
- 3d0:  (7c 00 07 8c|8c 07 00 7c)       iccci
- 3d4:  (7c 00 07 8c|8c 07 00 7c)       iccci
- 3d8:  (7d 40 07 8c|8c 07 40 7d)       ici     10
- 3dc:  (7d 4b 63 2d|2d 63 4b 7d)       icswx\.  r10,r11,r12
- 3e0:  (7d 4b 63 2c|2c 63 4b 7d)       icswx   r10,r11,r12
- 3e4:  (7d 4b 65 de|de 65 4b 7d)       isel    r10,r11,r12,23
- 3e8:  (4c 00 01 2c|2c 01 00 4c)       isync
- 3ec:  (7d 4b 60 be|be 60 4b 7d)       lbepx   r10,r11,r12
- 3f0:  (89 4b ff ef|ef ff 4b 89)       lbz     r10,-17\(r11\)
- 3f4:  (89 4b 00 11|11 00 4b 89)       lbz     r10,17\(r11\)
- 3f8:  (8d 4b ff ff|ff ff 4b 8d)       lbzu    r10,-1\(r11\)
- 3fc:  (8d 4b 00 01|01 00 4b 8d)       lbzu    r10,1\(r11\)
- 400:  (7d 4b 68 ee|ee 68 4b 7d)       lbzux   r10,r11,r13
- 404:  (7d 4b 68 ae|ae 68 4b 7d)       lbzx    r10,r11,r13
- 408:  (e9 4b ff f8|f8 ff 4b e9)       ld      r10,-8\(r11\)
- 40c:  (e9 4b 00 08|08 00 4b e9)       ld      r10,8\(r11\)
- 410:  (7d 4b 60 a8|a8 60 4b 7d)       ldarx   r10,r11,r12
- 414:  (7d 4b 60 a9|a9 60 4b 7d)       ldarx   r10,r11,r12,1
- 418:  (7d 4b 64 28|28 64 4b 7d)       ldbrx   r10,r11,r12
- 41c:  (7d 4b 60 3a|3a 60 4b 7d)       ldepx   r10,r11,r12
- 420:  (e9 4b ff f9|f9 ff 4b e9)       ldu     r10,-8\(r11\)
- 424:  (e9 4b 00 09|09 00 4b e9)       ldu     r10,8\(r11\)
- 428:  (7d 4b 60 6a|6a 60 4b 7d)       ldux    r10,r11,r12
- 42c:  (7d 4b 60 2a|2a 60 4b 7d)       ldx     r10,r11,r12
- 430:  (ca 8a ff f8|f8 ff 8a ca)       lfd     f20,-8\(r10\)
- 434:  (ca 8a 00 08|08 00 8a ca)       lfd     f20,8\(r10\)
- 438:  (7e 8a 5c be|be 5c 8a 7e)       lfdepx  f20,r10,r11
- 43c:  (ce 8a ff f8|f8 ff 8a ce)       lfdu    f20,-8\(r10\)
- 440:  (ce 8a 00 08|08 00 8a ce)       lfdu    f20,8\(r10\)
- 444:  (7e 8a 5c ee|ee 5c 8a 7e)       lfdux   f20,r10,r11
- 448:  (7e 8a 5c ae|ae 5c 8a 7e)       lfdx    f20,r10,r11
- 44c:  (7e 8a 5e ae|ae 5e 8a 7e)       lfiwax  f20,r10,r11
- 450:  (7e 8a 5e ee|ee 5e 8a 7e)       lfiwzx  f20,r10,r11
- 454:  (c2 8a ff fc|fc ff 8a c2)       lfs     f20,-4\(r10\)
- 458:  (c2 8a 00 04|04 00 8a c2)       lfs     f20,4\(r10\)
- 45c:  (c6 8a ff fc|fc ff 8a c6)       lfsu    f20,-4\(r10\)
- 460:  (c6 8a 00 04|04 00 8a c6)       lfsu    f20,4\(r10\)
- 464:  (7e 8a 5c 6e|6e 5c 8a 7e)       lfsux   f20,r10,r11
- 468:  (7e 8a 5c 2e|2e 5c 8a 7e)       lfsx    f20,r10,r11
- 46c:  (a9 4b 00 02|02 00 4b a9)       lha     r10,2\(r11\)
- 470:  (ad 4b ff fe|fe ff 4b ad)       lhau    r10,-2\(r11\)
- 474:  (7d 4b 62 ee|ee 62 4b 7d)       lhaux   r10,r11,r12
- 478:  (7d 4b 62 ae|ae 62 4b 7d)       lhax    r10,r11,r12
- 47c:  (7d 4b 66 2c|2c 66 4b 7d)       lhbrx   r10,r11,r12
- 480:  (7d 4b 62 3e|3e 62 4b 7d)       lhepx   r10,r11,r12
- 484:  (a1 4b ff fe|fe ff 4b a1)       lhz     r10,-2\(r11\)
- 488:  (a1 4b 00 02|02 00 4b a1)       lhz     r10,2\(r11\)
- 48c:  (a5 4b ff fe|fe ff 4b a5)       lhzu    r10,-2\(r11\)
- 490:  (a5 4b 00 02|02 00 4b a5)       lhzu    r10,2\(r11\)
- 494:  (7d 4b 62 6e|6e 62 4b 7d)       lhzux   r10,r11,r12
- 498:  (7d 4b 62 2e|2e 62 4b 7d)       lhzx    r10,r11,r12
- 49c:  (ba 8a 00 10|10 00 8a ba)       lmw     r20,16\(r10\)
- 4a0:  (7d 4b 0c aa|aa 0c 4b 7d)       lswi    r10,r11,1
- 4a4:  (7d 8b 04 aa|aa 04 8b 7d)       lswi    r12,r11,32
- 4a8:  (7d 4b 64 2a|2a 64 4b 7d)       lswx    r10,r11,r12
- 4ac:  (e9 4b ff fe|fe ff 4b e9)       lwa     r10,-4\(r11\)
- 4b0:  (e9 4b 00 06|06 00 4b e9)       lwa     r10,4\(r11\)
- 4b4:  (7d 4b 60 28|28 60 4b 7d)       lwarx   r10,r11,r12
- 4b8:  (7d 4b 60 29|29 60 4b 7d)       lwarx   r10,r11,r12,1
- 4bc:  (7d 4b 62 ea|ea 62 4b 7d)       lwaux   r10,r11,r12
- 4c0:  (7d 4b 62 aa|aa 62 4b 7d)       lwax    r10,r11,r12
- 4c4:  (7d 4b 64 2c|2c 64 4b 7d)       lwbrx   r10,r11,r12
- 4c8:  (7d 4b 60 3e|3e 60 4b 7d)       lwepx   r10,r11,r12
- 4cc:  (81 4b ff fc|fc ff 4b 81)       lwz     r10,-4\(r11\)
- 4d0:  (81 4b 00 04|04 00 4b 81)       lwz     r10,4\(r11\)
- 4d4:  (85 4b ff fc|fc ff 4b 85)       lwzu    r10,-4\(r11\)
- 4d8:  (85 4b 00 04|04 00 4b 85)       lwzu    r10,4\(r11\)
- 4dc:  (7d 4b 60 6e|6e 60 4b 7d)       lwzux   r10,r11,r12
- 4e0:  (7d 4b 60 2e|2e 60 4b 7d)       lwzx    r10,r11,r12
- 4e4:  (7c 00 06 ac|ac 06 00 7c)       mbar
- 4e8:  (7c 00 06 ac|ac 06 00 7c)       mbar
- 4ec:  (7c 00 06 ac|ac 06 00 7c)       mbar
- 4f0:  (7c 20 06 ac|ac 06 20 7c)       mbar    1
- 4f4:  (4c 04 00 00|00 00 04 4c)       mcrf    cr0,cr1
- 4f8:  (fd 90 00 80|80 00 90 fd)       mcrfs   cr3,cr4
- 4fc:  (7c 00 04 00|00 04 00 7c)       mcrxr   cr0
- 500:  (7d 80 04 00|00 04 80 7d)       mcrxr   cr3
- 504:  (7c 60 00 26|26 00 60 7c)       mfcr    r3
- 508:  (7c 70 20 26|26 20 70 7c)       mfocrf  r3,2
- 50c:  (7c 70 10 26|26 10 70 7c)       mfocrf  r3,1
- 510:  (7c 78 00 26|26 00 78 7c)       mfocrf  r3,128
- 514:  (7d 4a 3a 87|87 3a 4a 7d)       mfdcr\.  r10,234
- 518:  (7d 4a 3a 86|86 3a 4a 7d)       mfdcr   r10,234
- 51c:  (7d 4b 02 07|07 02 4b 7d)       mfdcrx\. r10,r11
- 520:  (7d 4b 02 06|06 02 4b 7d)       mfdcrx  r10,r11
- 524:  (fe 80 04 8f|8f 04 80 fe)       mffs\.   f20
- 528:  (fe 80 04 8e|8e 04 80 fe)       mffs    f20
- 52c:  (7d 40 00 a6|a6 00 40 7d)       mfmsr   r10
- 530:  (7c 70 10 26|26 10 70 7c)       mfocrf  r3,1
- 534:  (7c 78 00 26|26 00 78 7c)       mfocrf  r3,128
- 538:  (7d 4a 3a a6|a6 3a 4a 7d)       mfspr   r10,234
- 53c:  (7d 4c 42 a6|a6 42 4c 7d)       mftb    r10
- 540:  (7d 4d 42 a6|a6 42 4d 7d)       mftbu   r10
- 544:  (7c 00 51 dc|dc 51 00 7c)       msgclr  r10
- 548:  (7c 00 51 9c|9c 51 00 7c)       msgsnd  r10
- 54c:  (7c 60 01 20|20 01 60 7c)       mtcrf   0,r3
- 550:  (7c 70 11 20|20 11 70 7c)       mtocrf  1,r3
- 554:  (7c 78 01 20|20 01 78 7c)       mtocrf  128,r3
- 558:  (7c 6f f1 20|20 f1 6f 7c)       mtcr    r3
- 55c:  (7d 4a 3b 87|87 3b 4a 7d)       mtdcr\.  234,r10
- 560:  (7d 4a 3b 86|86 3b 4a 7d)       mtdcr   234,r10
- 564:  (7d 6a 03 07|07 03 6a 7d)       mtdcrx\. r10,r11
- 568:  (7d 6a 03 06|06 03 6a 7d)       mtdcrx  r10,r11
- 56c:  (fc 60 00 8d|8d 00 60 fc)       mtfsb0\. 3
- 570:  (fc 60 00 8c|8c 00 60 fc)       mtfsb0  3
- 574:  (fc 60 00 4d|4d 00 60 fc)       mtfsb1\. 3
- 578:  (fc 60 00 4c|4c 00 60 fc)       mtfsb1  3
- 57c:  (fc 0c a5 8f|8f a5 0c fc)       mtfsf\.  6,f20
- 580:  (fc 0c a5 8e|8e a5 0c fc)       mtfsf   6,f20
- 584:  (fc 0c a5 8f|8f a5 0c fc)       mtfsf\.  6,f20
- 588:  (fc 0c a5 8e|8e a5 0c fc)       mtfsf   6,f20
- 58c:  (fe 0d a5 8f|8f a5 0d fe)       mtfsf\.  6,f20,1,1
- 590:  (fe 0d a5 8e|8e a5 0d fe)       mtfsf   6,f20,1,1
- 594:  (ff 00 01 0d|0d 01 00 ff)       mtfsfi\. 6,0
- 598:  (ff 00 01 0c|0c 01 00 ff)       mtfsfi  6,0
- 59c:  (ff 00 d1 0d|0d d1 00 ff)       mtfsfi\. 6,13
- 5a0:  (ff 00 d1 0c|0c d1 00 ff)       mtfsfi  6,13
- 5a4:  (ff 01 d1 0d|0d d1 01 ff)       mtfsfi\. 6,13,1
- 5a8:  (ff 01 d1 0c|0c d1 01 ff)       mtfsfi  6,13,1
- 5ac:  (7d 40 01 24|24 01 40 7d)       mtmsr   r10
- 5b0:  (7d 40 01 24|24 01 40 7d)       mtmsr   r10
- 5b4:  (7d 41 01 24|24 01 41 7d)       mtmsr   r10,1
- 5b8:  (7c 70 11 20|20 11 70 7c)       mtocrf  1,r3
- 5bc:  (7c 78 01 20|20 01 78 7c)       mtocrf  128,r3
- 5c0:  (7d 4a 3b a6|a6 3b 4a 7d)       mtspr   234,r10
- 5c4:  (7e 95 b0 93|93 b0 95 7e)       mulhd\.  r20,r21,r22
- 5c8:  (7e 95 b0 92|92 b0 95 7e)       mulhd   r20,r21,r22
- 5cc:  (7e 95 b0 13|13 b0 95 7e)       mulhdu\. r20,r21,r22
- 5d0:  (7e 95 b0 12|12 b0 95 7e)       mulhdu  r20,r21,r22
- 5d4:  (7e 95 b0 97|97 b0 95 7e)       mulhw\.  r20,r21,r22
- 5d8:  (7e 95 b0 96|96 b0 95 7e)       mulhw   r20,r21,r22
- 5dc:  (7e 95 b0 17|17 b0 95 7e)       mulhwu\. r20,r21,r22
- 5e0:  (7e 95 b0 16|16 b0 95 7e)       mulhwu  r20,r21,r22
- 5e4:  (7e 95 b1 d3|d3 b1 95 7e)       mulld\.  r20,r21,r22
- 5e8:  (7e 95 b1 d2|d2 b1 95 7e)       mulld   r20,r21,r22
- 5ec:  (7e 95 b5 d3|d3 b5 95 7e)       mulldo\. r20,r21,r22
- 5f0:  (7e 95 b5 d2|d2 b5 95 7e)       mulldo  r20,r21,r22
- 5f4:  (1e 95 00 64|64 00 95 1e)       mulli   r20,r21,100
- 5f8:  (1e 95 ff 9c|9c ff 95 1e)       mulli   r20,r21,-100
- 5fc:  (7e 95 b1 d7|d7 b1 95 7e)       mullw\.  r20,r21,r22
- 600:  (7e 95 b1 d6|d6 b1 95 7e)       mullw   r20,r21,r22
- 604:  (7e 95 b5 d7|d7 b5 95 7e)       mullwo\. r20,r21,r22
- 608:  (7e 95 b5 d6|d6 b5 95 7e)       mullwo  r20,r21,r22
- 60c:  (7e b4 b3 b9|b9 b3 b4 7e)       nand\.   r20,r21,r22
- 610:  (7e b4 b3 b8|b8 b3 b4 7e)       nand    r20,r21,r22
- 614:  (7e 95 00 d1|d1 00 95 7e)       neg\.    r20,r21
- 618:  (7e 95 00 d0|d0 00 95 7e)       neg     r20,r21
- 61c:  (7e 95 04 d1|d1 04 95 7e)       nego\.   r20,r21
- 620:  (7e 95 04 d0|d0 04 95 7e)       nego    r20,r21
- 624:  (7e b4 b0 f9|f9 b0 b4 7e)       nor\.    r20,r21,r22
- 628:  (7e b4 b0 f8|f8 b0 b4 7e)       nor     r20,r21,r22
- 62c:  (7e b4 b3 79|79 b3 b4 7e)       or\.     r20,r21,r22
- 630:  (7e b4 b3 78|78 b3 b4 7e)       or      r20,r21,r22
- 634:  (7e b4 b3 39|39 b3 b4 7e)       orc\.    r20,r21,r22
- 638:  (7e b4 b3 38|38 b3 b4 7e)       orc     r20,r21,r22
- 63c:  (62 b4 10 00|00 10 b4 62)       ori     r20,r21,4096
- 640:  (66 b4 10 00|00 10 b4 66)       oris    r20,r21,4096
- 644:  (7d 6a 00 f4|f4 00 6a 7d)       popcntb r10,r11
- 648:  (7d 6a 03 f4|f4 03 6a 7d)       popcntd r10,r11
- 64c:  (7d 6a 02 f4|f4 02 6a 7d)       popcntw r10,r11
- 650:  (7d 6a 01 74|74 01 6a 7d)       prtyd   r10,r11
- 654:  (7d 6a 01 34|34 01 6a 7d)       prtyw   r10,r11
- 658:  (4c 00 00 66|66 00 00 4c)       rfci
- 65c:  (4c 00 00 cc|cc 00 00 4c)       rfgi
- 660:  (4c 00 00 64|64 00 00 4c)       rfi
- 664:  (4c 00 00 4c|4c 00 00 4c)       rfmci
- 668:  (79 6a 67 f1|f1 67 6a 79)       rldcl\.  r10,r11,r12,63
- 66c:  (79 6a 67 f0|f0 67 6a 79)       rldcl   r10,r11,r12,63
- 670:  (79 6a 67 f3|f3 67 6a 79)       rldcr\.  r10,r11,r12,63
- 674:  (79 6a 67 f2|f2 67 6a 79)       rldcr   r10,r11,r12,63
- 678:  (79 6a bf e9|e9 bf 6a 79)       rldic\.  r10,r11,23,63
- 67c:  (79 6a bf e8|e8 bf 6a 79)       rldic   r10,r11,23,63
- 680:  (79 6a bf e1|e1 bf 6a 79)       rldicl\. r10,r11,23,63
- 684:  (79 6a bf e0|e0 bf 6a 79)       rldicl  r10,r11,23,63
- 688:  (79 6a bf e5|e5 bf 6a 79)       rldicr\. r10,r11,23,63
- 68c:  (79 6a bf e4|e4 bf 6a 79)       rldicr  r10,r11,23,63
- 690:  (79 6a bf ed|ed bf 6a 79)       rldimi\. r10,r11,23,63
- 694:  (79 6a bf ec|ec bf 6a 79)       rldimi  r10,r11,23,63
- 698:  (51 6a b8 3f|3f b8 6a 51)       rlwimi\. r10,r11,23,0,31
- 69c:  (51 6a b8 3e|3e b8 6a 51)       rlwimi  r10,r11,23,0,31
- 6a0:  (55 6a b8 3f|3f b8 6a 55)       rotlwi\. r10,r11,23
- 6a4:  (55 6a b8 3e|3e b8 6a 55)       rotlwi  r10,r11,23
- 6a8:  (5d 6a b8 3f|3f b8 6a 5d)       rotlw\.  r10,r11,r23
- 6ac:  (5d 6a b8 3e|3e b8 6a 5d)       rotlw   r10,r11,r23
- 6b0:  (44 00 00 02|02 00 00 44)       sc
- 6b4:  (44 00 0c 82|82 0c 00 44)       sc      100
- 6b8:  (7d 6a 60 37|37 60 6a 7d)       sld\.    r10,r11,r12
- 6bc:  (7d 6a 60 36|36 60 6a 7d)       sld     r10,r11,r12
- 6c0:  (7d 6a 60 31|31 60 6a 7d)       slw\.    r10,r11,r12
- 6c4:  (7d 6a 60 30|30 60 6a 7d)       slw     r10,r11,r12
- 6c8:  (7d 6a 66 35|35 66 6a 7d)       srad\.   r10,r11,r12
- 6cc:  (7d 6a 66 34|34 66 6a 7d)       srad    r10,r11,r12
- 6d0:  (7d 6a fe 77|77 fe 6a 7d)       sradi\.  r10,r11,63
- 6d4:  (7d 6a fe 76|76 fe 6a 7d)       sradi   r10,r11,63
- 6d8:  (7d 6a 66 31|31 66 6a 7d)       sraw\.   r10,r11,r12
- 6dc:  (7d 6a 66 30|30 66 6a 7d)       sraw    r10,r11,r12
- 6e0:  (7d 6a fe 71|71 fe 6a 7d)       srawi\.  r10,r11,31
- 6e4:  (7d 6a fe 70|70 fe 6a 7d)       srawi   r10,r11,31
- 6e8:  (7d 6a 64 37|37 64 6a 7d)       srd\.    r10,r11,r12
- 6ec:  (7d 6a 64 36|36 64 6a 7d)       srd     r10,r11,r12
- 6f0:  (7d 6a 64 31|31 64 6a 7d)       srw\.    r10,r11,r12
- 6f4:  (7d 6a 64 30|30 64 6a 7d)       srw     r10,r11,r12
- 6f8:  (99 4b ff ff|ff ff 4b 99)       stb     r10,-1\(r11\)
- 6fc:  (99 4b 00 01|01 00 4b 99)       stb     r10,1\(r11\)
- 700:  (7d 4b 61 be|be 61 4b 7d)       stbepx  r10,r11,r12
- 704:  (9d 4b ff ff|ff ff 4b 9d)       stbu    r10,-1\(r11\)
- 708:  (9d 4b 00 01|01 00 4b 9d)       stbu    r10,1\(r11\)
- 70c:  (7d 4b 61 ee|ee 61 4b 7d)       stbux   r10,r11,r12
- 710:  (7d 4b 61 ae|ae 61 4b 7d)       stbx    r10,r11,r12
- 714:  (f9 4b ff f8|f8 ff 4b f9)       std     r10,-8\(r11\)
- 718:  (f9 4b 00 08|08 00 4b f9)       std     r10,8\(r11\)
- 71c:  (7d 4b 65 28|28 65 4b 7d)       stdbrx  r10,r11,r12
- 720:  (7d 4b 61 ad|ad 61 4b 7d)       stdcx\.  r10,r11,r12
- 724:  (7d 4b 61 3a|3a 61 4b 7d)       stdepx  r10,r11,r12
- 728:  (f9 4b ff f9|f9 ff 4b f9)       stdu    r10,-8\(r11\)
- 72c:  (f9 4b 00 09|09 00 4b f9)       stdu    r10,8\(r11\)
- 730:  (7d 4b 61 6a|6a 61 4b 7d)       stdux   r10,r11,r12
- 734:  (7d 4b 61 2a|2a 61 4b 7d)       stdx    r10,r11,r12
- 738:  (da 8a ff f8|f8 ff 8a da)       stfd    f20,-8\(r10\)
- 73c:  (da 8a 00 08|08 00 8a da)       stfd    f20,8\(r10\)
- 740:  (7e 8a 5d be|be 5d 8a 7e)       stfdepx f20,r10,r11
- 744:  (de 8a ff f8|f8 ff 8a de)       stfdu   f20,-8\(r10\)
- 748:  (de 8a 00 08|08 00 8a de)       stfdu   f20,8\(r10\)
- 74c:  (7e 8a 5d ee|ee 5d 8a 7e)       stfdux  f20,r10,r11
- 750:  (7e 8a 5d ae|ae 5d 8a 7e)       stfdx   f20,r10,r11
- 754:  (7e 8a 5f ae|ae 5f 8a 7e)       stfiwx  f20,r10,r11
- 758:  (d2 8a ff fc|fc ff 8a d2)       stfs    f20,-4\(r10\)
- 75c:  (d2 8a 00 04|04 00 8a d2)       stfs    f20,4\(r10\)
- 760:  (d6 8a ff fc|fc ff 8a d6)       stfsu   f20,-4\(r10\)
- 764:  (d6 8a 00 04|04 00 8a d6)       stfsu   f20,4\(r10\)
- 768:  (7e 8a 5d 6e|6e 5d 8a 7e)       stfsux  f20,r10,r11
- 76c:  (7e 8a 5d 2e|2e 5d 8a 7e)       stfsx   f20,r10,r11
- 770:  (b1 4b ff fe|fe ff 4b b1)       sth     r10,-2\(r11\)
- 774:  (b1 4b 00 02|02 00 4b b1)       sth     r10,2\(r11\)
- 778:  (b1 4b ff fc|fc ff 4b b1)       sth     r10,-4\(r11\)
- 77c:  (b1 4b 00 04|04 00 4b b1)       sth     r10,4\(r11\)
- 780:  (7d 4b 67 2c|2c 67 4b 7d)       sthbrx  r10,r11,r12
- 784:  (7d 4b 63 3e|3e 63 4b 7d)       sthepx  r10,r11,r12
- 788:  (b5 4b ff fe|fe ff 4b b5)       sthu    r10,-2\(r11\)
- 78c:  (b5 4b 00 02|02 00 4b b5)       sthu    r10,2\(r11\)
- 790:  (7d 4b 63 6e|6e 63 4b 7d)       sthux   r10,r11,r12
- 794:  (7d 4b 63 2e|2e 63 4b 7d)       sthx    r10,r11,r12
- 798:  (be 8a 00 10|10 00 8a be)       stmw    r20,16\(r10\)
- 79c:  (7d 4b 0d aa|aa 0d 4b 7d)       stswi   r10,r11,1
- 7a0:  (7d 4b 05 aa|aa 05 4b 7d)       stswi   r10,r11,32
- 7a4:  (7d 4b 65 2a|2a 65 4b 7d)       stswx   r10,r11,r12
- 7a8:  (7d 4b 65 2c|2c 65 4b 7d)       stwbrx  r10,r11,r12
- 7ac:  (7d 4b 61 2d|2d 61 4b 7d)       stwcx\.  r10,r11,r12
- 7b0:  (7d 4b 61 3e|3e 61 4b 7d)       stwepx  r10,r11,r12
- 7b4:  (95 4b ff fc|fc ff 4b 95)       stwu    r10,-4\(r11\)
- 7b8:  (95 4b 00 04|04 00 4b 95)       stwu    r10,4\(r11\)
- 7bc:  (7d 4b 61 6e|6e 61 4b 7d)       stwux   r10,r11,r12
- 7c0:  (7d 4b 61 2e|2e 61 4b 7d)       stwx    r10,r11,r12
- 7c4:  (7e 95 b0 51|51 b0 95 7e)       subf\.   r20,r21,r22
- 7c8:  (7e 95 b0 50|50 b0 95 7e)       subf    r20,r21,r22
- 7cc:  (7e 95 b0 11|11 b0 95 7e)       subfc\.  r20,r21,r22
- 7d0:  (7e 95 b0 10|10 b0 95 7e)       subfc   r20,r21,r22
- 7d4:  (7e 95 b4 11|11 b4 95 7e)       subfco\. r20,r21,r22
- 7d8:  (7e 95 b4 10|10 b4 95 7e)       subfco  r20,r21,r22
- 7dc:  (7e 95 b1 11|11 b1 95 7e)       subfe\.  r20,r21,r22
- 7e0:  (7e 95 b1 10|10 b1 95 7e)       subfe   r20,r21,r22
- 7e4:  (7e 95 b5 11|11 b5 95 7e)       subfeo\. r20,r21,r22
- 7e8:  (7e 95 b5 10|10 b5 95 7e)       subfeo  r20,r21,r22
- 7ec:  (22 95 00 64|64 00 95 22)       subfic  r20,r21,100
- 7f0:  (22 95 ff 9c|9c ff 95 22)       subfic  r20,r21,-100
- 7f4:  (7e 95 01 d1|d1 01 95 7e)       subfme\. r20,r21
- 7f8:  (7e 95 01 d0|d0 01 95 7e)       subfme  r20,r21
- 7fc:  (7e 95 05 d1|d1 05 95 7e)       subfmeo\. r20,r21
- 800:  (7e 95 05 d0|d0 05 95 7e)       subfmeo r20,r21
- 804:  (7e 95 b4 51|51 b4 95 7e)       subfo\.  r20,r21,r22
- 808:  (7e 95 b4 50|50 b4 95 7e)       subfo   r20,r21,r22
- 80c:  (7e 95 01 91|91 01 95 7e)       subfze\. r20,r21
- 810:  (7e 95 01 90|90 01 95 7e)       subfze  r20,r21
- 814:  (7e 95 05 91|91 05 95 7e)       subfzeo\. r20,r21
- 818:  (7e 95 05 90|90 05 95 7e)       subfzeo r20,r21
- 81c:  (7c 00 04 ac|ac 04 00 7c)       hwsync
- 820:  (7c 00 04 ac|ac 04 00 7c)       hwsync
- 824:  (7c 00 04 ac|ac 04 00 7c)       hwsync
- 828:  (7c 20 04 ac|ac 04 20 7c)       lwsync
- 82c:  (7c aa 58 88|88 58 aa 7c)       tdlge   r10,r11
- 830:  (08 aa 00 64|64 00 aa 08)       tdlgei  r10,100
- 834:  (08 aa ff 9c|9c ff aa 08)       tdlgei  r10,-100
- 838:  (7c 6a 58 24|24 58 6a 7c)       tlbilxva r10,r11
- 83c:  (7c 0a 5e 24|24 5e 0a 7c)       tlbivax r10,r11
- 840:  (7c 00 07 64|64 07 00 7c)       tlbre
- 844:  (7d 4b 3f 64|64 3f 4b 7d)       tlbre   r10,r11,7
- 848:  (7c 0a 5e a5|a5 5e 0a 7c)       tlbsrx\. r10,r11
- 84c:  (7d 4b 67 25|25 67 4b 7d)       tlbsx\.  r10,r11,r12
- 850:  (7d 4b 67 24|24 67 4b 7d)       tlbsx   r10,r11,r12
- 854:  (7c 00 04 6c|6c 04 00 7c)       tlbsync
- 858:  (7c 00 07 a4|a4 07 00 7c)       tlbwe
- 85c:  (7d 4b 3f a4|a4 3f 4b 7d)       tlbwe   r10,r11,7
- 860:  (7c aa 58 08|08 58 aa 7c)       twlge   r10,r11
- 864:  (0c aa 00 64|64 00 aa 0c)       twlgei  r10,100
- 868:  (0c aa ff 9c|9c ff aa 0c)       twlgei  r10,-100
- 86c:  (7c 00 00 7c|7c 00 00 7c)       wait
- 870:  (7c 00 00 7c|7c 00 00 7c)       wait
- 874:  (7c 20 00 7c|7c 00 20 7c)       waitrsv
- 878:  (7c 40 00 7c|7c 00 40 7c)       waitimpl
- 87c:  (7c 40 00 7c|7c 00 40 7c)       waitimpl
- 880:  (7c 20 00 7c|7c 00 20 7c)       waitrsv
- 884:  (7c 00 01 6c|6c 01 00 7c)       wchkall
- 888:  (7c 00 01 6c|6c 01 00 7c)       wchkall
- 88c:  (7d 80 01 6c|6c 01 80 7d)       wchkall cr3
- 890:  (7c 2a 5f 4c|4c 5f 2a 7c)       wclr    1,r10,r11
- 894:  (7c 20 07 4c|4c 07 20 7c)       wclrall 1
- 898:  (7c 4a 5f 4c|4c 5f 4a 7c)       wclrone r10,r11
- 89c:  (7d 40 01 06|06 01 40 7d)       wrtee   r10
- 8a0:  (7c 00 81 46|46 81 00 7c)       wrteei  1
- 8a4:  (7d 6a 62 79|79 62 6a 7d)       xor\.    r10,r11,r12
- 8a8:  (7d 6a 62 78|78 62 6a 7d)       xor     r10,r11,r12
- 8ac:  (69 6a 10 00|00 10 6a 69)       xori    r10,r11,4096
- 8b0:  (6d 6a 10 00|00 10 6a 6d)       xoris   r10,r11,4096
+.*:    (7c 85 32 15|15 32 85 7c)       add\.    r4,r5,r6
+.*:    (7c 85 32 14|14 32 85 7c)       add     r4,r5,r6
+.*:    (7c 85 30 15|15 30 85 7c)       addc\.   r4,r5,r6
+.*:    (7c 85 30 14|14 30 85 7c)       addc    r4,r5,r6
+.*:    (7c 85 34 15|15 34 85 7c)       addco\.  r4,r5,r6
+.*:    (7c 85 34 14|14 34 85 7c)       addco   r4,r5,r6
+.*:    (7c 85 31 15|15 31 85 7c)       adde\.   r4,r5,r6
+.*:    (7c 85 31 14|14 31 85 7c)       adde    r4,r5,r6
+.*:    (7c 85 35 15|15 35 85 7c)       addeo\.  r4,r5,r6
+.*:    (7c 85 35 14|14 35 85 7c)       addeo   r4,r5,r6
+.*:    (38 85 00 0d|0d 00 85 38)       addi    r4,r5,13
+.*:    (38 85 ff f3|f3 ff 85 38)       addi    r4,r5,-13
+.*:    (34 85 00 0d|0d 00 85 34)       addic\.  r4,r5,13
+.*:    (34 85 ff f3|f3 ff 85 34)       addic\.  r4,r5,-13
+.*:    (30 85 00 0d|0d 00 85 30)       addic   r4,r5,13
+.*:    (30 85 ff f3|f3 ff 85 30)       addic   r4,r5,-13
+.*:    (3c 85 00 17|17 00 85 3c)       addis   r4,r5,23
+.*:    (3c 85 ff e9|e9 ff 85 3c)       addis   r4,r5,-23
+.*:    (7c 85 01 d5|d5 01 85 7c)       addme\.  r4,r5
+.*:    (7c 85 01 d4|d4 01 85 7c)       addme   r4,r5
+.*:    (7c 85 05 d5|d5 05 85 7c)       addmeo\. r4,r5
+.*:    (7c 85 05 d4|d4 05 85 7c)       addmeo  r4,r5
+.*:    (7c 85 36 15|15 36 85 7c)       addo\.   r4,r5,r6
+.*:    (7c 85 36 14|14 36 85 7c)       addo    r4,r5,r6
+.*:    (7c 85 01 95|95 01 85 7c)       addze\.  r4,r5
+.*:    (7c 85 01 94|94 01 85 7c)       addze   r4,r5
+.*:    (7c 85 05 95|95 05 85 7c)       addzeo\. r4,r5
+.*:    (7c 85 05 94|94 05 85 7c)       addzeo  r4,r5
+.*:    (7c a4 30 39|39 30 a4 7c)       and\.    r4,r5,r6
+.*:    (7c a4 30 38|38 30 a4 7c)       and     r4,r5,r6
+.*:    (7c a4 30 79|79 30 a4 7c)       andc\.   r4,r5,r6
+.*:    (7c a4 30 78|78 30 a4 7c)       andc    r4,r5,r6
+.*:    (70 a4 00 06|06 00 a4 70)       andi\.   r4,r5,6
+.*:    (74 a4 00 06|06 00 a4 74)       andis\.  r4,r5,6
+.*:    (00 00 02 00|00 02 00 00)       attn
+.*:    (48 00 00 02|02 00 00 48)       ba      0 <start>
+.*: R_PPC(|64)_ADDR24  label_abs
+.*:    (40 8a 00 00|00 00 8a 40)       bne     cr2,90 <start\+0x90>
+.*: R_PPC(|64)_REL14   foo
+.*:    (40 ca 00 00|00 00 ca 40)       bne-    cr2,94 <start\+0x94>
+.*: R_PPC(|64)_REL14   foo
+.*:    (40 ea 00 00|00 00 ea 40)       bne\+    cr2,98 <start\+0x98>
+.*: R_PPC(|64)_REL14   foo
+.*:    (40 85 00 02|02 00 85 40)       blea    cr1,0 <start>
+.*: R_PPC(|64)_ADDR14  foo_abs
+.*:    (40 c5 00 02|02 00 c5 40)       blea-   cr1,0 <start>
+.*: R_PPC(|64)_ADDR14  foo_abs
+.*:    (40 e5 00 02|02 00 e5 40)       blea\+   cr1,0 <start>
+.*: R_PPC(|64)_ADDR14  foo_abs
+.*:    (4c 86 0c 20|20 0c 86 4c)       bcctr   4,4\*cr1\+eq,1
+.*:    (4c c6 04 20|20 04 c6 4c)       bnectr- cr1
+.*:    (4c e6 04 20|20 04 e6 4c)       bnectr\+ cr1
+.*:    (4c 86 0c 21|21 0c 86 4c)       bcctrl  4,4\*cr1\+eq,1
+.*:    (4c c6 04 21|21 04 c6 4c)       bnectrl- cr1
+.*:    (4c e6 04 21|21 04 e6 4c)       bnectrl\+ cr1
+.*:    (40 8a 00 01|01 00 8a 40)       bnel    cr2,c0 <start\+0xc0>
+.*: R_PPC(|64)_REL14   foo
+.*:    (40 ca 00 01|01 00 ca 40)       bnel-   cr2,c4 <start\+0xc4>
+.*: R_PPC(|64)_REL14   foo
+.*:    (40 ea 00 01|01 00 ea 40)       bnel\+   cr2,c8 <start\+0xc8>
+.*: R_PPC(|64)_REL14   foo
+.*:    (40 85 00 03|03 00 85 40)       blela   cr1,0 <start>
+.*: R_PPC(|64)_ADDR14  foo_abs
+.*:    (40 c5 00 03|03 00 c5 40)       blela-  cr1,0 <start>
+.*: R_PPC(|64)_ADDR14  foo_abs
+.*:    (40 e5 00 03|03 00 e5 40)       blela\+  cr1,0 <start>
+.*: R_PPC(|64)_ADDR14  foo_abs
+.*:    (4c 86 08 20|20 08 86 4c)       bclr    4,4\*cr1\+eq,1
+.*:    (4c c6 00 20|20 00 c6 4c)       bnelr-  cr1
+.*:    (4c e6 00 20|20 00 e6 4c)       bnelr\+  cr1
+.*:    (4c 86 08 21|21 08 86 4c)       bclrl   4,4\*cr1\+eq,1
+.*:    (4c c6 00 21|21 00 c6 4c)       bnelrl- cr1
+.*:    (4c e6 00 21|21 00 e6 4c)       bnelrl\+ cr1
+.*:    (48 00 00 00|00 00 00 48)       b       f0 <start\+0xf0>
+.*: R_PPC(|64)_REL24   label
+.*:    (48 00 00 03|03 00 00 48)       bla     0 <start>
+.*: R_PPC(|64)_ADDR24  label_abs
+.*:    (48 00 00 01|01 00 00 48)       bl      f8 <start\+0xf8>
+.*: R_PPC(|64)_REL24   label
+.*:    (7d 6a 61 f8|f8 61 6a 7d)       bpermd  r10,r11,r12
+.*:    (7c a7 40 00|00 40 a7 7c)       cmpd    cr1,r7,r8
+.*:    (7d 6a 63 f8|f8 63 6a 7d)       cmpb    r10,r11,r12
+.*:    (2c aa 00 0d|0d 00 aa 2c)       cmpdi   cr1,r10,13
+.*:    (2c aa ff f3|f3 ff aa 2c)       cmpdi   cr1,r10,-13
+.*:    (7c a7 40 40|40 40 a7 7c)       cmpld   cr1,r7,r8
+.*:    (28 aa 00 64|64 00 aa 28)       cmpldi  cr1,r10,100
+.*:    (7e b4 00 75|75 00 b4 7e)       cntlzd\. r20,r21
+.*:    (7e b4 00 74|74 00 b4 7e)       cntlzd  r20,r21
+.*:    (7e b4 00 35|35 00 b4 7e)       cntlzw\. r20,r21
+.*:    (7e b4 00 34|34 00 b4 7e)       cntlzw  r20,r21
+.*:    (4c 22 1a 02|02 1a 22 4c)       crand   gt,eq,so
+.*:    (4c 22 19 02|02 19 22 4c)       crandc  gt,eq,so
+.*:    (4c 22 1a 42|42 1a 22 4c)       creqv   gt,eq,so
+.*:    (4c 22 19 c2|c2 19 22 4c)       crnand  gt,eq,so
+.*:    (4c 22 18 42|42 18 22 4c)       crnor   gt,eq,so
+.*:    (4c 22 1b 82|82 1b 22 4c)       cror    gt,eq,so
+.*:    (4c 22 1b 42|42 1b 22 4c)       crorc   gt,eq,so
+.*:    (4c 22 19 82|82 19 22 4c)       crxor   gt,eq,so
+.*:    (7c 0a 5d ec|ec 5d 0a 7c)       dcba    r10,r11
+.*:    (7c 0a 58 ac|ac 58 0a 7c)       dcbf    r10,r11
+.*:    (7c 2a 58 ac|ac 58 2a 7c)       dcbfl   r10,r11
+.*:    (7c 0a 58 fe|fe 58 0a 7c)       dcbfep  r10,r11
+.*:    (7c 0a 5b ac|ac 5b 0a 7c)       dcbi    r10,r11
+.*:    (7c 0a 5b 0c|0c 5b 0a 7c)       dcblc   r10,r11
+.*:    (7c 2a 5b 0c|0c 5b 2a 7c)       dcblc   1,r10,r11
+.*:    (7c 0a 58 6c|6c 58 0a 7c)       dcbst   r10,r11
+.*:    (7c 0a 58 7e|7e 58 0a 7c)       dcbstep r10,r11
+.*:    (7c 0a 5a 2c|2c 5a 0a 7c)       dcbt    r10,r11
+.*:    (7c 2a 5a 2c|2c 5a 2a 7c)       dcbt    1,r10,r11
+.*:    (7d 4b 62 7e|7e 62 4b 7d)       dcbtep  r10,r11,r12
+.*:    (7c 0a 59 4c|4c 59 0a 7c)       dcbtls  r10,r11
+.*:    (7c 2a 59 4c|4c 59 2a 7c)       dcbtls  1,r10,r11
+.*:    (7c 0a 59 ec|ec 59 0a 7c)       dcbtst  r10,r11
+.*:    (7c 2a 59 ec|ec 59 2a 7c)       dcbtst  1,r10,r11
+.*:    (7d 4b 61 fe|fe 61 4b 7d)       dcbtstep r10,r11,r12
+.*:    (7c 0a 59 0c|0c 59 0a 7c)       dcbtstls r10,r11
+.*:    (7c 2a 59 0c|0c 59 2a 7c)       dcbtstls 1,r10,r11
+.*:    (7c 0a 5f ec|ec 5f 0a 7c)       dcbz    r10,r11
+.*:    (7c 0a 5f fe|fe 5f 0a 7c)       dcbzep  r10,r11
+.*:    (7c 00 03 8c|8c 03 00 7c)       dccci
+.*:    (7c 00 03 8c|8c 03 00 7c)       dccci
+.*:    (7c 00 03 8c|8c 03 00 7c)       dccci
+.*:    (7d 40 03 8c|8c 03 40 7d)       dci     10
+.*:    (7e 95 b3 d3|d3 b3 95 7e)       divd\.   r20,r21,r22
+.*:    (7e 95 b3 d2|d2 b3 95 7e)       divd    r20,r21,r22
+.*:    (7e 95 b7 d3|d3 b7 95 7e)       divdo\.  r20,r21,r22
+.*:    (7e 95 b7 d2|d2 b7 95 7e)       divdo   r20,r21,r22
+.*:    (7e 95 b3 93|93 b3 95 7e)       divdu\.  r20,r21,r22
+.*:    (7e 95 b3 92|92 b3 95 7e)       divdu   r20,r21,r22
+.*:    (7e 95 b7 93|93 b7 95 7e)       divduo\. r20,r21,r22
+.*:    (7e 95 b7 92|92 b7 95 7e)       divduo  r20,r21,r22
+.*:    (7e 95 b3 d7|d7 b3 95 7e)       divw\.   r20,r21,r22
+.*:    (7e 95 b3 d6|d6 b3 95 7e)       divw    r20,r21,r22
+.*:    (7e 95 b7 d7|d7 b7 95 7e)       divwo\.  r20,r21,r22
+.*:    (7e 95 b7 d6|d6 b7 95 7e)       divwo   r20,r21,r22
+.*:    (7e 95 b3 97|97 b3 95 7e)       divwu\.  r20,r21,r22
+.*:    (7e 95 b3 96|96 b3 95 7e)       divwu   r20,r21,r22
+.*:    (7e 95 b7 97|97 b7 95 7e)       divwuo\. r20,r21,r22
+.*:    (7e 95 b7 96|96 b7 95 7e)       divwuo  r20,r21,r22
+.*:    (7e b4 b2 39|39 b2 b4 7e)       eqv\.    r20,r21,r22
+.*:    (7e b4 b2 38|38 b2 b4 7e)       eqv     r20,r21,r22
+.*:    (7c 0a 58 66|66 58 0a 7c)       eratilx 0,r10,r11
+.*:    (7c 2a 58 66|66 58 2a 7c)       eratilx 1,r10,r11
+.*:    (7c ea 58 66|66 58 ea 7c)       eratilx 7,r10,r11
+.*:    (7d 4b 66 66|66 66 4b 7d)       erativax r10,r11,r12
+.*:    (7d 4b 01 66|66 01 4b 7d)       eratre  r10,r11,0
+.*:    (7d 4b 19 66|66 19 4b 7d)       eratre  r10,r11,3
+.*:    (7d 4b 61 27|27 61 4b 7d)       eratsx\. r10,r11,r12
+.*:    (7d 4b 61 26|26 61 4b 7d)       eratsx  r10,r11,r12
+.*:    (7d 4b 01 a6|a6 01 4b 7d)       eratwe  r10,r11,0
+.*:    (7d 4b 19 a6|a6 19 4b 7d)       eratwe  r10,r11,3
+.*:    (7d 6a 07 75|75 07 6a 7d)       extsb\.  r10,r11
+.*:    (7d 6a 07 74|74 07 6a 7d)       extsb   r10,r11
+.*:    (7d 6a 07 35|35 07 6a 7d)       extsh\.  r10,r11
+.*:    (7d 6a 07 34|34 07 6a 7d)       extsh   r10,r11
+.*:    (7d 6a 07 b5|b5 07 6a 7d)       extsw\.  r10,r11
+.*:    (7d 6a 07 b4|b4 07 6a 7d)       extsw   r10,r11
+.*:    (fe 80 aa 11|11 aa 80 fe)       fabs\.   f20,f21
+.*:    (fe 80 aa 10|10 aa 80 fe)       fabs    f20,f21
+.*:    (fe 95 b0 2b|2b b0 95 fe)       fadd\.   f20,f21,f22
+.*:    (fe 95 b0 2a|2a b0 95 fe)       fadd    f20,f21,f22
+.*:    (ee 95 b0 2b|2b b0 95 ee)       fadds\.  f20,f21,f22
+.*:    (ee 95 b0 2a|2a b0 95 ee)       fadds   f20,f21,f22
+.*:    (fe 80 ae 9d|9d ae 80 fe)       fcfid\.  f20,f21
+.*:    (fe 80 ae 9c|9c ae 80 fe)       fcfid   f20,f21
+.*:    (fc 14 a8 40|40 a8 14 fc)       fcmpo   cr0,f20,f21
+.*:    (fc 94 a8 40|40 a8 94 fc)       fcmpo   cr1,f20,f21
+.*:    (fc 14 a8 00|00 a8 14 fc)       fcmpu   cr0,f20,f21
+.*:    (fc 94 a8 00|00 a8 94 fc)       fcmpu   cr1,f20,f21
+.*:    (fe 95 b0 11|11 b0 95 fe)       fcpsgn\. f20,f21,f22
+.*:    (fe 95 b0 10|10 b0 95 fe)       fcpsgn  f20,f21,f22
+.*:    (fe 80 ae 5d|5d ae 80 fe)       fctid\.  f20,f21
+.*:    (fe 80 ae 5c|5c ae 80 fe)       fctid   f20,f21
+.*:    (fe 80 ae 5f|5f ae 80 fe)       fctidz\. f20,f21
+.*:    (fe 80 ae 5e|5e ae 80 fe)       fctidz  f20,f21
+.*:    (fe 80 a8 1d|1d a8 80 fe)       fctiw\.  f20,f21
+.*:    (fe 80 a8 1c|1c a8 80 fe)       fctiw   f20,f21
+.*:    (fe 80 a8 1f|1f a8 80 fe)       fctiwz\. f20,f21
+.*:    (fe 80 a8 1e|1e a8 80 fe)       fctiwz  f20,f21
+.*:    (fe 95 b0 25|25 b0 95 fe)       fdiv\.   f20,f21,f22
+.*:    (fe 95 b0 24|24 b0 95 fe)       fdiv    f20,f21,f22
+.*:    (ee 95 b0 25|25 b0 95 ee)       fdivs\.  f20,f21,f22
+.*:    (ee 95 b0 24|24 b0 95 ee)       fdivs   f20,f21,f22
+.*:    (fe 95 bd bb|bb bd 95 fe)       fmadd\.  f20,f21,f22,f23
+.*:    (fe 95 bd ba|ba bd 95 fe)       fmadd   f20,f21,f22,f23
+.*:    (ee 95 bd bb|bb bd 95 ee)       fmadds\. f20,f21,f22,f23
+.*:    (ee 95 bd ba|ba bd 95 ee)       fmadds  f20,f21,f22,f23
+.*:    (fe 80 a8 91|91 a8 80 fe)       fmr\.    f20,f21
+.*:    (fe 80 a8 90|90 a8 80 fe)       fmr     f20,f21
+.*:    (fe 95 bd b9|b9 bd 95 fe)       fmsub\.  f20,f21,f22,f23
+.*:    (fe 95 bd b8|b8 bd 95 fe)       fmsub   f20,f21,f22,f23
+.*:    (ee 95 bd b9|b9 bd 95 ee)       fmsubs\. f20,f21,f22,f23
+.*:    (ee 95 bd b8|b8 bd 95 ee)       fmsubs  f20,f21,f22,f23
+.*:    (fe 95 05 b3|b3 05 95 fe)       fmul\.   f20,f21,f22
+.*:    (fe 95 05 b2|b2 05 95 fe)       fmul    f20,f21,f22
+.*:    (ee 95 05 b3|b3 05 95 ee)       fmuls\.  f20,f21,f22
+.*:    (ee 95 05 b2|b2 05 95 ee)       fmuls   f20,f21,f22
+.*:    (fe 80 a9 11|11 a9 80 fe)       fnabs\.  f20,f21
+.*:    (fe 80 a9 10|10 a9 80 fe)       fnabs   f20,f21
+.*:    (fe 80 a8 51|51 a8 80 fe)       fneg\.   f20,f21
+.*:    (fe 80 a8 50|50 a8 80 fe)       fneg    f20,f21
+.*:    (fe 95 bd bf|bf bd 95 fe)       fnmadd\. f20,f21,f22,f23
+.*:    (fe 95 bd be|be bd 95 fe)       fnmadd  f20,f21,f22,f23
+.*:    (ee 95 bd bf|bf bd 95 ee)       fnmadds\. f20,f21,f22,f23
+.*:    (ee 95 bd be|be bd 95 ee)       fnmadds f20,f21,f22,f23
+.*:    (fe 95 bd bd|bd bd 95 fe)       fnmsub\. f20,f21,f22,f23
+.*:    (fe 95 bd bc|bc bd 95 fe)       fnmsub  f20,f21,f22,f23
+.*:    (ee 95 bd bd|bd bd 95 ee)       fnmsubs\. f20,f21,f22,f23
+.*:    (ee 95 bd bc|bc bd 95 ee)       fnmsubs f20,f21,f22,f23
+.*:    (fe 80 a8 31|31 a8 80 fe)       fre\.    f20,f21
+.*:    (fe 80 a8 30|30 a8 80 fe)       fre     f20,f21
+.*:    (fe 80 a8 31|31 a8 80 fe)       fre\.    f20,f21
+.*:    (fe 80 a8 30|30 a8 80 fe)       fre     f20,f21
+.*:    (fe 81 a8 31|31 a8 81 fe)       fre\.    f20,f21,1
+.*:    (fe 81 a8 30|30 a8 81 fe)       fre     f20,f21,1
+.*:    (ee 80 a8 31|31 a8 80 ee)       fres\.   f20,f21
+.*:    (ee 80 a8 30|30 a8 80 ee)       fres    f20,f21
+.*:    (ee 80 a8 31|31 a8 80 ee)       fres\.   f20,f21
+.*:    (ee 80 a8 30|30 a8 80 ee)       fres    f20,f21
+.*:    (ee 81 a8 31|31 a8 81 ee)       fres\.   f20,f21,1
+.*:    (ee 81 a8 30|30 a8 81 ee)       fres    f20,f21,1
+.*:    (fe 80 ab d1|d1 ab 80 fe)       frim\.   f20,f21
+.*:    (fe 80 ab d0|d0 ab 80 fe)       frim    f20,f21
+.*:    (fe 80 ab 11|11 ab 80 fe)       frin\.   f20,f21
+.*:    (fe 80 ab 10|10 ab 80 fe)       frin    f20,f21
+.*:    (fe 80 ab 91|91 ab 80 fe)       frip\.   f20,f21
+.*:    (fe 80 ab 90|90 ab 80 fe)       frip    f20,f21
+.*:    (fe 80 ab 51|51 ab 80 fe)       friz\.   f20,f21
+.*:    (fe 80 ab 50|50 ab 80 fe)       friz    f20,f21
+.*:    (fe 80 a8 19|19 a8 80 fe)       frsp\.   f20,f21
+.*:    (fe 80 a8 18|18 a8 80 fe)       frsp    f20,f21
+.*:    (fe 80 a8 35|35 a8 80 fe)       frsqrte\. f20,f21
+.*:    (fe 80 a8 34|34 a8 80 fe)       frsqrte f20,f21
+.*:    (fe 80 a8 35|35 a8 80 fe)       frsqrte\. f20,f21
+.*:    (fe 80 a8 34|34 a8 80 fe)       frsqrte f20,f21
+.*:    (fe 81 a8 35|35 a8 81 fe)       frsqrte\. f20,f21,1
+.*:    (fe 81 a8 34|34 a8 81 fe)       frsqrte f20,f21,1
+.*:    (ee 80 a8 34|34 a8 80 ee)       frsqrtes f20,f21
+.*:    (ee 80 a8 35|35 a8 80 ee)       frsqrtes\. f20,f21
+.*:    (ee 80 a8 34|34 a8 80 ee)       frsqrtes f20,f21
+.*:    (ee 80 a8 35|35 a8 80 ee)       frsqrtes\. f20,f21
+.*:    (ee 81 a8 34|34 a8 81 ee)       frsqrtes f20,f21,1
+.*:    (ee 81 a8 35|35 a8 81 ee)       frsqrtes\. f20,f21,1
+.*:    (fe 95 bd af|af bd 95 fe)       fsel\.   f20,f21,f22,f23
+.*:    (fe 95 bd ae|ae bd 95 fe)       fsel    f20,f21,f22,f23
+.*:    (fe 80 a8 2d|2d a8 80 fe)       fsqrt\.  f20,f21
+.*:    (fe 80 a8 2c|2c a8 80 fe)       fsqrt   f20,f21
+.*:    (ee 80 a8 2d|2d a8 80 ee)       fsqrts\. f20,f21
+.*:    (ee 80 a8 2c|2c a8 80 ee)       fsqrts  f20,f21
+.*:    (fe 95 b0 29|29 b0 95 fe)       fsub\.   f20,f21,f22
+.*:    (fe 95 b0 28|28 b0 95 fe)       fsub    f20,f21,f22
+.*:    (ee 95 b0 29|29 b0 95 ee)       fsubs\.  f20,f21,f22
+.*:    (ee 95 b0 28|28 b0 95 ee)       fsubs   f20,f21,f22
+.*:    (7c 0a 5f ac|ac 5f 0a 7c)       icbi    r10,r11
+.*:    (7c 0a 5f be|be 5f 0a 7c)       icbiep  r10,r11
+.*:    (7c 0a 58 2c|2c 58 0a 7c)       icbt    r10,r11
+.*:    (7c ea 58 2c|2c 58 ea 7c)       icbt    7,r10,r11
+.*:    (7c 0a 5b cc|cc 5b 0a 7c)       icbtls  r10,r11
+.*:    (7c ea 5b cc|cc 5b ea 7c)       icbtls  7,r10,r11
+.*:    (7c 00 07 8c|8c 07 00 7c)       iccci
+.*:    (7c 00 07 8c|8c 07 00 7c)       iccci
+.*:    (7c 00 07 8c|8c 07 00 7c)       iccci
+.*:    (7d 40 07 8c|8c 07 40 7d)       ici     10
+.*:    (7d 4b 63 2d|2d 63 4b 7d)       icswx\.  r10,r11,r12
+.*:    (7d 4b 63 2c|2c 63 4b 7d)       icswx   r10,r11,r12
+.*:    (7d 4b 65 de|de 65 4b 7d)       isel    r10,r11,r12,23
+.*:    (4c 00 01 2c|2c 01 00 4c)       isync
+.*:    (7d 4b 60 be|be 60 4b 7d)       lbepx   r10,r11,r12
+.*:    (89 4b ff ef|ef ff 4b 89)       lbz     r10,-17\(r11\)
+.*:    (89 4b 00 11|11 00 4b 89)       lbz     r10,17\(r11\)
+.*:    (8d 4b ff ff|ff ff 4b 8d)       lbzu    r10,-1\(r11\)
+.*:    (8d 4b 00 01|01 00 4b 8d)       lbzu    r10,1\(r11\)
+.*:    (7d 4b 68 ee|ee 68 4b 7d)       lbzux   r10,r11,r13
+.*:    (7d 4b 68 ae|ae 68 4b 7d)       lbzx    r10,r11,r13
+.*:    (e9 4b ff f8|f8 ff 4b e9)       ld      r10,-8\(r11\)
+.*:    (e9 4b 00 08|08 00 4b e9)       ld      r10,8\(r11\)
+.*:    (7d 4b 60 a8|a8 60 4b 7d)       ldarx   r10,r11,r12
+.*:    (7d 4b 60 a9|a9 60 4b 7d)       ldarx   r10,r11,r12,1
+.*:    (7d 4b 64 28|28 64 4b 7d)       ldbrx   r10,r11,r12
+.*:    (7d 4b 60 3a|3a 60 4b 7d)       ldepx   r10,r11,r12
+.*:    (e9 4b ff f9|f9 ff 4b e9)       ldu     r10,-8\(r11\)
+.*:    (e9 4b 00 09|09 00 4b e9)       ldu     r10,8\(r11\)
+.*:    (7d 4b 60 6a|6a 60 4b 7d)       ldux    r10,r11,r12
+.*:    (7d 4b 60 2a|2a 60 4b 7d)       ldx     r10,r11,r12
+.*:    (ca 8a ff f8|f8 ff 8a ca)       lfd     f20,-8\(r10\)
+.*:    (ca 8a 00 08|08 00 8a ca)       lfd     f20,8\(r10\)
+.*:    (7e 8a 5c be|be 5c 8a 7e)       lfdepx  f20,r10,r11
+.*:    (ce 8a ff f8|f8 ff 8a ce)       lfdu    f20,-8\(r10\)
+.*:    (ce 8a 00 08|08 00 8a ce)       lfdu    f20,8\(r10\)
+.*:    (7e 8a 5c ee|ee 5c 8a 7e)       lfdux   f20,r10,r11
+.*:    (7e 8a 5c ae|ae 5c 8a 7e)       lfdx    f20,r10,r11
+.*:    (7e 8a 5e ae|ae 5e 8a 7e)       lfiwax  f20,r10,r11
+.*:    (7e 8a 5e ee|ee 5e 8a 7e)       lfiwzx  f20,r10,r11
+.*:    (c2 8a ff fc|fc ff 8a c2)       lfs     f20,-4\(r10\)
+.*:    (c2 8a 00 04|04 00 8a c2)       lfs     f20,4\(r10\)
+.*:    (c6 8a ff fc|fc ff 8a c6)       lfsu    f20,-4\(r10\)
+.*:    (c6 8a 00 04|04 00 8a c6)       lfsu    f20,4\(r10\)
+.*:    (7e 8a 5c 6e|6e 5c 8a 7e)       lfsux   f20,r10,r11
+.*:    (7e 8a 5c 2e|2e 5c 8a 7e)       lfsx    f20,r10,r11
+.*:    (a9 4b 00 02|02 00 4b a9)       lha     r10,2\(r11\)
+.*:    (ad 4b ff fe|fe ff 4b ad)       lhau    r10,-2\(r11\)
+.*:    (7d 4b 62 ee|ee 62 4b 7d)       lhaux   r10,r11,r12
+.*:    (7d 4b 62 ae|ae 62 4b 7d)       lhax    r10,r11,r12
+.*:    (7d 4b 66 2c|2c 66 4b 7d)       lhbrx   r10,r11,r12
+.*:    (7d 4b 62 3e|3e 62 4b 7d)       lhepx   r10,r11,r12
+.*:    (a1 4b ff fe|fe ff 4b a1)       lhz     r10,-2\(r11\)
+.*:    (a1 4b 00 02|02 00 4b a1)       lhz     r10,2\(r11\)
+.*:    (a5 4b ff fe|fe ff 4b a5)       lhzu    r10,-2\(r11\)
+.*:    (a5 4b 00 02|02 00 4b a5)       lhzu    r10,2\(r11\)
+.*:    (7d 4b 62 6e|6e 62 4b 7d)       lhzux   r10,r11,r12
+.*:    (7d 4b 62 2e|2e 62 4b 7d)       lhzx    r10,r11,r12
+.*:    (e9 4b ff fe|fe ff 4b e9)       lwa     r10,-4\(r11\)
+.*:    (e9 4b 00 06|06 00 4b e9)       lwa     r10,4\(r11\)
+.*:    (7d 4b 60 28|28 60 4b 7d)       lwarx   r10,r11,r12
+.*:    (7d 4b 60 29|29 60 4b 7d)       lwarx   r10,r11,r12,1
+.*:    (7d 4b 62 ea|ea 62 4b 7d)       lwaux   r10,r11,r12
+.*:    (7d 4b 62 aa|aa 62 4b 7d)       lwax    r10,r11,r12
+.*:    (7d 4b 64 2c|2c 64 4b 7d)       lwbrx   r10,r11,r12
+.*:    (7d 4b 60 3e|3e 60 4b 7d)       lwepx   r10,r11,r12
+.*:    (81 4b ff fc|fc ff 4b 81)       lwz     r10,-4\(r11\)
+.*:    (81 4b 00 04|04 00 4b 81)       lwz     r10,4\(r11\)
+.*:    (85 4b ff fc|fc ff 4b 85)       lwzu    r10,-4\(r11\)
+.*:    (85 4b 00 04|04 00 4b 85)       lwzu    r10,4\(r11\)
+.*:    (7d 4b 60 6e|6e 60 4b 7d)       lwzux   r10,r11,r12
+.*:    (7d 4b 60 2e|2e 60 4b 7d)       lwzx    r10,r11,r12
+.*:    (7c 00 06 ac|ac 06 00 7c)       mbar
+.*:    (7c 00 06 ac|ac 06 00 7c)       mbar
+.*:    (7c 00 06 ac|ac 06 00 7c)       mbar
+.*:    (7c 20 06 ac|ac 06 20 7c)       mbar    1
+.*:    (4c 04 00 00|00 00 04 4c)       mcrf    cr0,cr1
+.*:    (fd 90 00 80|80 00 90 fd)       mcrfs   cr3,cr4
+.*:    (7c 00 04 00|00 04 00 7c)       mcrxr   cr0
+.*:    (7d 80 04 00|00 04 80 7d)       mcrxr   cr3
+.*:    (7c 60 00 26|26 00 60 7c)       mfcr    r3
+.*:    (7c 70 20 26|26 20 70 7c)       mfocrf  r3,2
+.*:    (7c 70 10 26|26 10 70 7c)       mfocrf  r3,1
+.*:    (7c 78 00 26|26 00 78 7c)       mfocrf  r3,128
+.*:    (7d 4a 3a 87|87 3a 4a 7d)       mfdcr\.  r10,234
+.*:    (7d 4a 3a 86|86 3a 4a 7d)       mfdcr   r10,234
+.*:    (7d 4b 02 07|07 02 4b 7d)       mfdcrx\. r10,r11
+.*:    (7d 4b 02 06|06 02 4b 7d)       mfdcrx  r10,r11
+.*:    (fe 80 04 8f|8f 04 80 fe)       mffs\.   f20
+.*:    (fe 80 04 8e|8e 04 80 fe)       mffs    f20
+.*:    (7d 40 00 a6|a6 00 40 7d)       mfmsr   r10
+.*:    (7c 70 10 26|26 10 70 7c)       mfocrf  r3,1
+.*:    (7c 78 00 26|26 00 78 7c)       mfocrf  r3,128
+.*:    (7d 4a 3a a6|a6 3a 4a 7d)       mfspr   r10,234
+.*:    (7d 4c 42 a6|a6 42 4c 7d)       mftb    r10
+.*:    (7d 4d 42 a6|a6 42 4d 7d)       mftbu   r10
+.*:    (7c 00 51 dc|dc 51 00 7c)       msgclr  r10
+.*:    (7c 00 51 9c|9c 51 00 7c)       msgsnd  r10
+.*:    (7c 60 01 20|20 01 60 7c)       mtcrf   0,r3
+.*:    (7c 70 11 20|20 11 70 7c)       mtocrf  1,r3
+.*:    (7c 78 01 20|20 01 78 7c)       mtocrf  128,r3
+.*:    (7c 6f f1 20|20 f1 6f 7c)       mtcr    r3
+.*:    (7d 4a 3b 87|87 3b 4a 7d)       mtdcr\.  234,r10
+.*:    (7d 4a 3b 86|86 3b 4a 7d)       mtdcr   234,r10
+.*:    (7d 6a 03 07|07 03 6a 7d)       mtdcrx\. r10,r11
+.*:    (7d 6a 03 06|06 03 6a 7d)       mtdcrx  r10,r11
+.*:    (fc 60 00 8d|8d 00 60 fc)       mtfsb0\. 3
+.*:    (fc 60 00 8c|8c 00 60 fc)       mtfsb0  3
+.*:    (fc 60 00 4d|4d 00 60 fc)       mtfsb1\. 3
+.*:    (fc 60 00 4c|4c 00 60 fc)       mtfsb1  3
+.*:    (fc 0c a5 8f|8f a5 0c fc)       mtfsf\.  6,f20
+.*:    (fc 0c a5 8e|8e a5 0c fc)       mtfsf   6,f20
+.*:    (fc 0c a5 8f|8f a5 0c fc)       mtfsf\.  6,f20
+.*:    (fc 0c a5 8e|8e a5 0c fc)       mtfsf   6,f20
+.*:    (fe 0d a5 8f|8f a5 0d fe)       mtfsf\.  6,f20,1,1
+.*:    (fe 0d a5 8e|8e a5 0d fe)       mtfsf   6,f20,1,1
+.*:    (ff 00 01 0d|0d 01 00 ff)       mtfsfi\. 6,0
+.*:    (ff 00 01 0c|0c 01 00 ff)       mtfsfi  6,0
+.*:    (ff 00 d1 0d|0d d1 00 ff)       mtfsfi\. 6,13
+.*:    (ff 00 d1 0c|0c d1 00 ff)       mtfsfi  6,13
+.*:    (ff 01 d1 0d|0d d1 01 ff)       mtfsfi\. 6,13,1
+.*:    (ff 01 d1 0c|0c d1 01 ff)       mtfsfi  6,13,1
+.*:    (7d 40 01 24|24 01 40 7d)       mtmsr   r10
+.*:    (7d 40 01 24|24 01 40 7d)       mtmsr   r10
+.*:    (7d 41 01 24|24 01 41 7d)       mtmsr   r10,1
+.*:    (7c 70 11 20|20 11 70 7c)       mtocrf  1,r3
+.*:    (7c 78 01 20|20 01 78 7c)       mtocrf  128,r3
+.*:    (7d 4a 3b a6|a6 3b 4a 7d)       mtspr   234,r10
+.*:    (7e 95 b0 93|93 b0 95 7e)       mulhd\.  r20,r21,r22
+.*:    (7e 95 b0 92|92 b0 95 7e)       mulhd   r20,r21,r22
+.*:    (7e 95 b0 13|13 b0 95 7e)       mulhdu\. r20,r21,r22
+.*:    (7e 95 b0 12|12 b0 95 7e)       mulhdu  r20,r21,r22
+.*:    (7e 95 b0 97|97 b0 95 7e)       mulhw\.  r20,r21,r22
+.*:    (7e 95 b0 96|96 b0 95 7e)       mulhw   r20,r21,r22
+.*:    (7e 95 b0 17|17 b0 95 7e)       mulhwu\. r20,r21,r22
+.*:    (7e 95 b0 16|16 b0 95 7e)       mulhwu  r20,r21,r22
+.*:    (7e 95 b1 d3|d3 b1 95 7e)       mulld\.  r20,r21,r22
+.*:    (7e 95 b1 d2|d2 b1 95 7e)       mulld   r20,r21,r22
+.*:    (7e 95 b5 d3|d3 b5 95 7e)       mulldo\. r20,r21,r22
+.*:    (7e 95 b5 d2|d2 b5 95 7e)       mulldo  r20,r21,r22
+.*:    (1e 95 00 64|64 00 95 1e)       mulli   r20,r21,100
+.*:    (1e 95 ff 9c|9c ff 95 1e)       mulli   r20,r21,-100
+.*:    (7e 95 b1 d7|d7 b1 95 7e)       mullw\.  r20,r21,r22
+.*:    (7e 95 b1 d6|d6 b1 95 7e)       mullw   r20,r21,r22
+.*:    (7e 95 b5 d7|d7 b5 95 7e)       mullwo\. r20,r21,r22
+.*:    (7e 95 b5 d6|d6 b5 95 7e)       mullwo  r20,r21,r22
+.*:    (7e b4 b3 b9|b9 b3 b4 7e)       nand\.   r20,r21,r22
+.*:    (7e b4 b3 b8|b8 b3 b4 7e)       nand    r20,r21,r22
+.*:    (7e 95 00 d1|d1 00 95 7e)       neg\.    r20,r21
+.*:    (7e 95 00 d0|d0 00 95 7e)       neg     r20,r21
+.*:    (7e 95 04 d1|d1 04 95 7e)       nego\.   r20,r21
+.*:    (7e 95 04 d0|d0 04 95 7e)       nego    r20,r21
+.*:    (7e b4 b0 f9|f9 b0 b4 7e)       nor\.    r20,r21,r22
+.*:    (7e b4 b0 f8|f8 b0 b4 7e)       nor     r20,r21,r22
+.*:    (7e b4 b3 79|79 b3 b4 7e)       or\.     r20,r21,r22
+.*:    (7e b4 b3 78|78 b3 b4 7e)       or      r20,r21,r22
+.*:    (7e b4 b3 39|39 b3 b4 7e)       orc\.    r20,r21,r22
+.*:    (7e b4 b3 38|38 b3 b4 7e)       orc     r20,r21,r22
+.*:    (62 b4 10 00|00 10 b4 62)       ori     r20,r21,4096
+.*:    (66 b4 10 00|00 10 b4 66)       oris    r20,r21,4096
+.*:    (7d 6a 00 f4|f4 00 6a 7d)       popcntb r10,r11
+.*:    (7d 6a 03 f4|f4 03 6a 7d)       popcntd r10,r11
+.*:    (7d 6a 02 f4|f4 02 6a 7d)       popcntw r10,r11
+.*:    (7d 6a 01 74|74 01 6a 7d)       prtyd   r10,r11
+.*:    (7d 6a 01 34|34 01 6a 7d)       prtyw   r10,r11
+.*:    (4c 00 00 66|66 00 00 4c)       rfci
+.*:    (4c 00 00 cc|cc 00 00 4c)       rfgi
+.*:    (4c 00 00 64|64 00 00 4c)       rfi
+.*:    (4c 00 00 4c|4c 00 00 4c)       rfmci
+.*:    (79 6a 67 f1|f1 67 6a 79)       rldcl\.  r10,r11,r12,63
+.*:    (79 6a 67 f0|f0 67 6a 79)       rldcl   r10,r11,r12,63
+.*:    (79 6a 67 f3|f3 67 6a 79)       rldcr\.  r10,r11,r12,63
+.*:    (79 6a 67 f2|f2 67 6a 79)       rldcr   r10,r11,r12,63
+.*:    (79 6a bf e9|e9 bf 6a 79)       rldic\.  r10,r11,23,63
+.*:    (79 6a bf e8|e8 bf 6a 79)       rldic   r10,r11,23,63
+.*:    (79 6a bf e1|e1 bf 6a 79)       rldicl\. r10,r11,23,63
+.*:    (79 6a bf e0|e0 bf 6a 79)       rldicl  r10,r11,23,63
+.*:    (79 6a bf e5|e5 bf 6a 79)       rldicr\. r10,r11,23,63
+.*:    (79 6a bf e4|e4 bf 6a 79)       rldicr  r10,r11,23,63
+.*:    (79 6a bf ed|ed bf 6a 79)       rldimi\. r10,r11,23,63
+.*:    (79 6a bf ec|ec bf 6a 79)       rldimi  r10,r11,23,63
+.*:    (51 6a b8 3f|3f b8 6a 51)       rlwimi\. r10,r11,23,0,31
+.*:    (51 6a b8 3e|3e b8 6a 51)       rlwimi  r10,r11,23,0,31
+.*:    (55 6a b8 3f|3f b8 6a 55)       rotlwi\. r10,r11,23
+.*:    (55 6a b8 3e|3e b8 6a 55)       rotlwi  r10,r11,23
+.*:    (5d 6a b8 3f|3f b8 6a 5d)       rotlw\.  r10,r11,r23
+.*:    (5d 6a b8 3e|3e b8 6a 5d)       rotlw   r10,r11,r23
+.*:    (44 00 00 02|02 00 00 44)       sc
+.*:    (44 00 0c 82|82 0c 00 44)       sc      100
+.*:    (7d 6a 60 37|37 60 6a 7d)       sld\.    r10,r11,r12
+.*:    (7d 6a 60 36|36 60 6a 7d)       sld     r10,r11,r12
+.*:    (7d 6a 60 31|31 60 6a 7d)       slw\.    r10,r11,r12
+.*:    (7d 6a 60 30|30 60 6a 7d)       slw     r10,r11,r12
+.*:    (7d 6a 66 35|35 66 6a 7d)       srad\.   r10,r11,r12
+.*:    (7d 6a 66 34|34 66 6a 7d)       srad    r10,r11,r12
+.*:    (7d 6a fe 77|77 fe 6a 7d)       sradi\.  r10,r11,63
+.*:    (7d 6a fe 76|76 fe 6a 7d)       sradi   r10,r11,63
+.*:    (7d 6a 66 31|31 66 6a 7d)       sraw\.   r10,r11,r12
+.*:    (7d 6a 66 30|30 66 6a 7d)       sraw    r10,r11,r12
+.*:    (7d 6a fe 71|71 fe 6a 7d)       srawi\.  r10,r11,31
+.*:    (7d 6a fe 70|70 fe 6a 7d)       srawi   r10,r11,31
+.*:    (7d 6a 64 37|37 64 6a 7d)       srd\.    r10,r11,r12
+.*:    (7d 6a 64 36|36 64 6a 7d)       srd     r10,r11,r12
+.*:    (7d 6a 64 31|31 64 6a 7d)       srw\.    r10,r11,r12
+.*:    (7d 6a 64 30|30 64 6a 7d)       srw     r10,r11,r12
+.*:    (99 4b ff ff|ff ff 4b 99)       stb     r10,-1\(r11\)
+.*:    (99 4b 00 01|01 00 4b 99)       stb     r10,1\(r11\)
+.*:    (7d 4b 61 be|be 61 4b 7d)       stbepx  r10,r11,r12
+.*:    (9d 4b ff ff|ff ff 4b 9d)       stbu    r10,-1\(r11\)
+.*:    (9d 4b 00 01|01 00 4b 9d)       stbu    r10,1\(r11\)
+.*:    (7d 4b 61 ee|ee 61 4b 7d)       stbux   r10,r11,r12
+.*:    (7d 4b 61 ae|ae 61 4b 7d)       stbx    r10,r11,r12
+.*:    (f9 4b ff f8|f8 ff 4b f9)       std     r10,-8\(r11\)
+.*:    (f9 4b 00 08|08 00 4b f9)       std     r10,8\(r11\)
+.*:    (7d 4b 65 28|28 65 4b 7d)       stdbrx  r10,r11,r12
+.*:    (7d 4b 61 ad|ad 61 4b 7d)       stdcx\.  r10,r11,r12
+.*:    (7d 4b 61 3a|3a 61 4b 7d)       stdepx  r10,r11,r12
+.*:    (f9 4b ff f9|f9 ff 4b f9)       stdu    r10,-8\(r11\)
+.*:    (f9 4b 00 09|09 00 4b f9)       stdu    r10,8\(r11\)
+.*:    (7d 4b 61 6a|6a 61 4b 7d)       stdux   r10,r11,r12
+.*:    (7d 4b 61 2a|2a 61 4b 7d)       stdx    r10,r11,r12
+.*:    (da 8a ff f8|f8 ff 8a da)       stfd    f20,-8\(r10\)
+.*:    (da 8a 00 08|08 00 8a da)       stfd    f20,8\(r10\)
+.*:    (7e 8a 5d be|be 5d 8a 7e)       stfdepx f20,r10,r11
+.*:    (de 8a ff f8|f8 ff 8a de)       stfdu   f20,-8\(r10\)
+.*:    (de 8a 00 08|08 00 8a de)       stfdu   f20,8\(r10\)
+.*:    (7e 8a 5d ee|ee 5d 8a 7e)       stfdux  f20,r10,r11
+.*:    (7e 8a 5d ae|ae 5d 8a 7e)       stfdx   f20,r10,r11
+.*:    (7e 8a 5f ae|ae 5f 8a 7e)       stfiwx  f20,r10,r11
+.*:    (d2 8a ff fc|fc ff 8a d2)       stfs    f20,-4\(r10\)
+.*:    (d2 8a 00 04|04 00 8a d2)       stfs    f20,4\(r10\)
+.*:    (d6 8a ff fc|fc ff 8a d6)       stfsu   f20,-4\(r10\)
+.*:    (d6 8a 00 04|04 00 8a d6)       stfsu   f20,4\(r10\)
+.*:    (7e 8a 5d 6e|6e 5d 8a 7e)       stfsux  f20,r10,r11
+.*:    (7e 8a 5d 2e|2e 5d 8a 7e)       stfsx   f20,r10,r11
+.*:    (b1 4b ff fe|fe ff 4b b1)       sth     r10,-2\(r11\)
+.*:    (b1 4b 00 02|02 00 4b b1)       sth     r10,2\(r11\)
+.*:    (b1 4b ff fc|fc ff 4b b1)       sth     r10,-4\(r11\)
+.*:    (b1 4b 00 04|04 00 4b b1)       sth     r10,4\(r11\)
+.*:    (7d 4b 67 2c|2c 67 4b 7d)       sthbrx  r10,r11,r12
+.*:    (7d 4b 63 3e|3e 63 4b 7d)       sthepx  r10,r11,r12
+.*:    (b5 4b ff fe|fe ff 4b b5)       sthu    r10,-2\(r11\)
+.*:    (b5 4b 00 02|02 00 4b b5)       sthu    r10,2\(r11\)
+.*:    (7d 4b 63 6e|6e 63 4b 7d)       sthux   r10,r11,r12
+.*:    (7d 4b 63 2e|2e 63 4b 7d)       sthx    r10,r11,r12
+.*:    (7d 4b 65 2c|2c 65 4b 7d)       stwbrx  r10,r11,r12
+.*:    (7d 4b 61 2d|2d 61 4b 7d)       stwcx\.  r10,r11,r12
+.*:    (7d 4b 61 3e|3e 61 4b 7d)       stwepx  r10,r11,r12
+.*:    (95 4b ff fc|fc ff 4b 95)       stwu    r10,-4\(r11\)
+.*:    (95 4b 00 04|04 00 4b 95)       stwu    r10,4\(r11\)
+.*:    (7d 4b 61 6e|6e 61 4b 7d)       stwux   r10,r11,r12
+.*:    (7d 4b 61 2e|2e 61 4b 7d)       stwx    r10,r11,r12
+.*:    (7e 95 b0 51|51 b0 95 7e)       subf\.   r20,r21,r22
+.*:    (7e 95 b0 50|50 b0 95 7e)       subf    r20,r21,r22
+.*:    (7e 95 b0 11|11 b0 95 7e)       subfc\.  r20,r21,r22
+.*:    (7e 95 b0 10|10 b0 95 7e)       subfc   r20,r21,r22
+.*:    (7e 95 b4 11|11 b4 95 7e)       subfco\. r20,r21,r22
+.*:    (7e 95 b4 10|10 b4 95 7e)       subfco  r20,r21,r22
+.*:    (7e 95 b1 11|11 b1 95 7e)       subfe\.  r20,r21,r22
+.*:    (7e 95 b1 10|10 b1 95 7e)       subfe   r20,r21,r22
+.*:    (7e 95 b5 11|11 b5 95 7e)       subfeo\. r20,r21,r22
+.*:    (7e 95 b5 10|10 b5 95 7e)       subfeo  r20,r21,r22
+.*:    (22 95 00 64|64 00 95 22)       subfic  r20,r21,100
+.*:    (22 95 ff 9c|9c ff 95 22)       subfic  r20,r21,-100
+.*:    (7e 95 01 d1|d1 01 95 7e)       subfme\. r20,r21
+.*:    (7e 95 01 d0|d0 01 95 7e)       subfme  r20,r21
+.*:    (7e 95 05 d1|d1 05 95 7e)       subfmeo\. r20,r21
+.*:    (7e 95 05 d0|d0 05 95 7e)       subfmeo r20,r21
+.*:    (7e 95 b4 51|51 b4 95 7e)       subfo\.  r20,r21,r22
+.*:    (7e 95 b4 50|50 b4 95 7e)       subfo   r20,r21,r22
+.*:    (7e 95 01 91|91 01 95 7e)       subfze\. r20,r21
+.*:    (7e 95 01 90|90 01 95 7e)       subfze  r20,r21
+.*:    (7e 95 05 91|91 05 95 7e)       subfzeo\. r20,r21
+.*:    (7e 95 05 90|90 05 95 7e)       subfzeo r20,r21
+.*:    (7c 00 04 ac|ac 04 00 7c)       hwsync
+.*:    (7c 00 04 ac|ac 04 00 7c)       hwsync
+.*:    (7c 00 04 ac|ac 04 00 7c)       hwsync
+.*:    (7c 20 04 ac|ac 04 20 7c)       lwsync
+.*:    (7c aa 58 88|88 58 aa 7c)       tdlge   r10,r11
+.*:    (08 aa 00 64|64 00 aa 08)       tdlgei  r10,100
+.*:    (08 aa ff 9c|9c ff aa 08)       tdlgei  r10,-100
+.*:    (7c 6a 58 24|24 58 6a 7c)       tlbilxva r10,r11
+.*:    (7c 0a 5e 24|24 5e 0a 7c)       tlbivax r10,r11
+.*:    (7c 00 07 64|64 07 00 7c)       tlbre
+.*:    (7d 4b 3f 64|64 3f 4b 7d)       tlbre   r10,r11,7
+.*:    (7c 0a 5e a5|a5 5e 0a 7c)       tlbsrx\. r10,r11
+.*:    (7d 4b 67 25|25 67 4b 7d)       tlbsx\.  r10,r11,r12
+.*:    (7d 4b 67 24|24 67 4b 7d)       tlbsx   r10,r11,r12
+.*:    (7c 00 04 6c|6c 04 00 7c)       tlbsync
+.*:    (7c 00 07 a4|a4 07 00 7c)       tlbwe
+.*:    (7d 4b 3f a4|a4 3f 4b 7d)       tlbwe   r10,r11,7
+.*:    (7c aa 58 08|08 58 aa 7c)       twlge   r10,r11
+.*:    (0c aa 00 64|64 00 aa 0c)       twlgei  r10,100
+.*:    (0c aa ff 9c|9c ff aa 0c)       twlgei  r10,-100
+.*:    (7c 00 00 7c|7c 00 00 7c)       wait
+.*:    (7c 00 00 7c|7c 00 00 7c)       wait
+.*:    (7c 20 00 7c|7c 00 20 7c)       waitrsv
+.*:    (7c 40 00 7c|7c 00 40 7c)       waitimpl
+.*:    (7c 40 00 7c|7c 00 40 7c)       waitimpl
+.*:    (7c 20 00 7c|7c 00 20 7c)       waitrsv
+.*:    (7c 00 01 6c|6c 01 00 7c)       wchkall
+.*:    (7c 00 01 6c|6c 01 00 7c)       wchkall
+.*:    (7d 80 01 6c|6c 01 80 7d)       wchkall cr3
+.*:    (7c 2a 5f 4c|4c 5f 2a 7c)       wclr    1,r10,r11
+.*:    (7c 20 07 4c|4c 07 20 7c)       wclrall 1
+.*:    (7c 4a 5f 4c|4c 5f 4a 7c)       wclrone r10,r11
+.*:    (7d 40 01 06|06 01 40 7d)       wrtee   r10
+.*:    (7c 00 81 46|46 81 00 7c)       wrteei  1
+.*:    (7d 6a 62 79|79 62 6a 7d)       xor\.    r10,r11,r12
+.*:    (7d 6a 62 78|78 62 6a 7d)       xor     r10,r11,r12
+.*:    (69 6a 10 00|00 10 6a 69)       xori    r10,r11,4096
+.*:    (6d 6a 10 00|00 10 6a 6d)       xoris   r10,r11,4096
 #pass
index 6893ae8cfef90afc18a66cee53ca65ea6c258e0d..c3d23ea3def26feb358edaded47313ddb24797a5 100644 (file)
@@ -295,10 +295,6 @@ start:
        lhzu    10,2(11)
        lhzux   10,11,12
        lhzx    10,11,12
-       lmw     20,16(10)
-       lswi    10,11,1
-       lswi    12,11,32
-       lswx    10,11,12
        lwa     10,-4(11)
        lwa     10,4(11)
        lwarx   10,11,12,0
@@ -486,10 +482,6 @@ start:
        sthu    10,2(11)
        sthux   10,11,12
        sthx    10,11,12
-       stmw    20,16(10)
-       stswi   10,11,1
-       stswi   10,11,32
-       stswx   10,11,12
        stwbrx  10,11,12
        stwcx.  10,11,12
        stwepx  10,11,12
diff --git a/gas/testsuite/gas/ppc/be.d b/gas/testsuite/gas/ppc/be.d
new file mode 100644 (file)
index 0000000..9255ddb
--- /dev/null
@@ -0,0 +1,17 @@
+#objdump: -d -Mcom
+#as: -mcom -be
+#name: BE only instructions
+
+.*
+
+Disassembly of section \.text:
+
+0+00 <start>:
+.*:    ba 8a 00 10     lmw     r20,16\(r10\)
+.*:    7d 4b 0c aa     lswi    r10,r11,1
+.*:    7d 8b 04 aa     lswi    r12,r11,32
+.*:    7d 4b 64 2a     lswx    r10,r11,r12
+.*:    be 8a 00 10     stmw    r20,16\(r10\)
+.*:    7d 4b 0d aa     stswi   r10,r11,1
+.*:    7d 4b 05 aa     stswi   r10,r11,32
+.*:    7d 4b 65 2a     stswx   r10,r11,r12
diff --git a/gas/testsuite/gas/ppc/be.s b/gas/testsuite/gas/ppc/be.s
new file mode 100644 (file)
index 0000000..dbbcbb6
--- /dev/null
@@ -0,0 +1,10 @@
+       .text
+start:
+       lmw     20,16(10)
+       lswi    10,11,1
+       lswi    12,11,32
+       lswx    10,11,12
+       stmw    20,16(10)
+       stswi   10,11,1
+       stswi   10,11,32
+       stswx   10,11,12
index c9f14d3360d93e2470c9434c4947e5376afaad50..d7410345ad769641e88f111b2fd78176c89d1aa5 100644 (file)
@@ -20,7 +20,7 @@ Disassembly of section \.text:
 .*:    (13 9d f7 0b|0b f7 9d 13)       vmodsq  v28,v29,v30
 .*:    (13 e0 0e 0b|0b 0e e0 13)       vmoduq  v31,v0,v1
 .*:    (10 5b 1e 02|02 1e 5b 10)       vextsd2q v2,v3
-.*:    (10 04 29 01|01 29 04 10)       vcmpuq  v4,v5
+.*:    (10 04 29 01|01 29 04 10)       vcmpuq  cr0,v4,v5
 .*:    (10 86 39 41|41 39 86 10)       vcmpsq  cr1,v6,v7
 .*:    (11 09 51 c7|c7 51 09 11)       vcmpequq v8,v9,v10
 .*:    (11 6c 6d c7|c7 6d 6c 11)       vcmpequq. v11,v12,v13
index 4dce648c36f85f5100a2122350306fafd63c2aaf..4561cfe9ee646c7fc02f6df35305358300aa2507 100644 (file)
@@ -12,7 +12,7 @@ _start:
        vmodsq  28,29,30
        vmoduq  31,0,1
        vextsd2q 2,3
-       vcmpuq  4,5
+       vcmpuq  0,4,5
        vcmpsq  1,6,7
        vcmpequq 8,9,10
        vcmpequq. 11,12,13
diff --git a/gas/testsuite/gas/ppc/le_error.d b/gas/testsuite/gas/ppc/le_error.d
new file mode 100644 (file)
index 0000000..7650046
--- /dev/null
@@ -0,0 +1,3 @@
+#as: -mcom -le
+#source: be.s
+#error_output: le_error.l
diff --git a/gas/testsuite/gas/ppc/le_error.l b/gas/testsuite/gas/ppc/le_error.l
new file mode 100644 (file)
index 0000000..dd0021b
--- /dev/null
@@ -0,0 +1,9 @@
+.*Assembler messages:
+.*invalid when little-endian
+.*invalid when little-endian
+.*invalid when little-endian
+.*invalid when little-endian
+.*invalid when little-endian
+.*invalid when little-endian
+.*invalid when little-endian
+.*invalid when little-endian
index dfd3345461d23b215a8c0d77f8b2948c5e593d1d..df3f5d410db4d144f58c69c17b700966c10253a1 100644 (file)
 Disassembly of section \.text:
 
 0+00 <power8>:
-   0:  (7c 05 07 1d|1d 07 05 7c)       tabort\. r5
-   4:  (7c e8 86 1d|1d 86 e8 7c)       tabortwc\. 7,r8,r16
-   8:  (7e 8b 56 5d|5d 56 8b 7e)       tabortdc\. 20,r11,r10
-   c:  (7e 2a 9e 9d|9d 9e 2a 7e)       tabortwci\. 17,r10,-13
-  10:  (7f a3 de dd|dd de a3 7f)       tabortdci\. 29,r3,-5
-  14:  (7c 00 05 1d|1d 05 00 7c)       tbegin\.
-  18:  (7f 80 05 9c|9c 05 80 7f)       tcheck  cr7
-  1c:  (7c 00 05 5d|5d 05 00 7c)       tend\.
-  20:  (7c 00 05 5d|5d 05 00 7c)       tend\.
-  24:  (7e 00 05 5d|5d 05 00 7e)       tendall\.
-  28:  (7e 00 05 5d|5d 05 00 7e)       tendall\.
-  2c:  (7c 18 07 5d|5d 07 18 7c)       treclaim\. r24
-  30:  (7c 00 07 dd|dd 07 00 7c)       trechkpt\.
-  34:  (7c 00 05 dd|dd 05 00 7c)       tsuspend\.
-  38:  (7c 00 05 dd|dd 05 00 7c)       tsuspend\.
-  3c:  (7c 20 05 dd|dd 05 20 7c)       tresume\.
-  40:  (7c 20 05 dd|dd 05 20 7c)       tresume\.
-  44:  (60 42 00 00|00 00 42 60)       ori     r2,r2,0
-  48:  (60 00 00 00|00 00 00 60)       nop
-  4c:  (60 42 00 00|00 00 42 60)       ori     r2,r2,0
-  50:  (4c 00 01 24|24 01 00 4c)       rfebb   0
-  54:  (4c 00 09 24|24 09 00 4c)       rfebb
-  58:  (4c 00 09 24|24 09 00 4c)       rfebb
-  5c:  (4d d5 04 60|60 04 d5 4d)       bgttar- cr5
-  60:  (4c c7 04 61|61 04 c7 4c)       bnstarl- cr1
-  64:  (4d ec 04 60|60 04 ec 4d)       blttar\+ cr3
-  68:  (4c e2 04 61|61 04 e2 4c)       bnetarl\+
-  6c:  (4c 88 0c 60|60 0c 88 4c)       bctar   4,4\*cr2\+lt,1
-  70:  (4c 87 14 61|61 14 87 4c)       bctarl  4,4\*cr1\+so,2
-  74:  (7c 00 00 3c|3c 00 00 7c)       waitasec
-  78:  (7c 00 41 1c|1c 41 00 7c)       msgsndp r8
-  7c:  (7c 20 01 26|26 01 20 7c)       mtsle   1
-  80:  (7c 00 d9 5c|5c d9 00 7c)       msgclrp r27
-  84:  (7d 4a 61 6d|6d 61 4a 7d)       stqcx\.  r10,r10,r12
-  88:  (7f 80 39 6d|6d 39 80 7f)       stqcx\.  r28,0,r7
-  8c:  (7f 13 5a 28|28 5a 13 7f)       lqarx   r24,r19,r11
-  90:  (7e c0 5a 28|28 5a c0 7e)       lqarx   r22,0,r11
-  94:  (7e 80 32 5c|5c 32 80 7e)       mfbhrbe r20,6
-  98:  (7f b1 83 29|29 83 b1 7f)       pbt\.    r29,r17,r16
-  9c:  (7d c0 3b 29|29 3b c0 7d)       pbt\.    r14,0,r7
-  a0:  (7c 00 03 5c|5c 03 00 7c)       clrbhrb
-  a4:  (11 6a 05 ed|ed 05 6a 11)       vpermxor v11,v10,v0,v23
-  a8:  (13 02 39 3c|3c 39 02 13)       vaddeuqm v24,v2,v7,v4
-  ac:  (11 4a 40 bd|bd 40 4a 11)       vaddecuq v10,v10,v8,v2
-  b0:  (10 af 44 fe|fe 44 af 10)       vsubeuqm v5,v15,v8,v19
-  b4:  (11 9f 87 7f|7f 87 9f 11)       vsubecuq v12,v31,v16,v29
-  b8:  (12 9d 68 88|88 68 9d 12)       vmulouw v20,v29,v13
-  bc:  (13 a0 d0 89|89 d0 a0 13)       vmuluwm v29,v0,v26
-  c0:  (11 15 e0 c0|c0 e0 15 11)       vaddudm v8,v21,v28
-  c4:  (10 3a 08 c2|c2 08 3a 10)       vmaxud  v1,v26,v1
-  c8:  (12 83 08 c4|c4 08 83 12)       vrld    v20,v3,v1
-  cc:  (10 93 58 c7|c7 58 93 10)       vcmpequd v4,v19,v11
-  d0:  (12 ee f1 00|00 f1 ee 12)       vadduqm v23,v14,v30
-  d4:  (11 08 69 40|40 69 08 11)       vaddcuq v8,v8,v13
-  d8:  (13 9b 21 88|88 21 9b 13)       vmulosw v28,v27,v4
-  dc:  (10 64 21 c2|c2 21 64 10)       vmaxsd  v3,v4,v4
-  e0:  (10 13 aa 88|88 aa 13 10)       vmuleuw v0,v19,v21
-  e4:  (13 14 9a c2|c2 9a 14 13)       vminud  v24,v20,v19
-  e8:  (10 1c 7a c7|c7 7a 1c 10)       vcmpgtud v0,v28,v15
-  ec:  (12 a0 13 88|88 13 a0 12)       vmulesw v21,v0,v2
-  f0:  (11 3a 4b c2|c2 4b 3a 11)       vminsd  v9,v26,v9
-  f4:  (13 3d 5b c4|c4 5b 3d 13)       vsrad   v25,v29,v11
-  f8:  (11 7c 5b c7|c7 5b 7c 11)       vcmpgtsd v11,v28,v11
-  fc:  (10 a8 d6 01|01 d6 a8 10)       bcdadd\. v5,v8,v26,1
- 100:  (10 83 64 08|08 64 83 10)       vpmsumb v4,v3,v12
- 104:  (13 5f ae 41|41 ae 5f 13)       bcdsub\. v26,v31,v21,1
- 108:  (10 b1 84 48|48 84 b1 10)       vpmsumh v5,v17,v16
- 10c:  (12 f1 a4 4e|4e a4 f1 12)       vpkudum v23,v17,v20
- 110:  (13 15 ec 88|88 ec 15 13)       vpmsumw v24,v21,v29
- 114:  (11 36 6c c8|c8 6c 36 11)       vpmsumd v9,v22,v13
- 118:  (12 53 94 ce|ce 94 53 12)       vpkudus v18,v19,v18
- 11c:  (13 d0 b5 00|00 b5 d0 13)       vsubuqm v30,v16,v22
- 120:  (11 cb 3d 08|08 3d cb 11)       vcipher v14,v11,v7
- 124:  (11 42 b5 09|09 b5 42 11)       vcipherlast v10,v2,v22
- 128:  (12 e0 6d 0c|0c 6d e0 12)       vgbbd   v23,v13
- 12c:  (12 19 85 40|40 85 19 12)       vsubcuq v16,v25,v16
- 130:  (13 e1 2d 44|44 2d e1 13)       vorc    v31,v1,v5
- 134:  (10 91 fd 48|48 fd 91 10)       vncipher v4,v17,v31
- 138:  (13 02 dd 49|49 dd 02 13)       vncipherlast v24,v2,v27
- 13c:  (12 f5 bd 4c|4c bd f5 12)       vbpermq v23,v21,v23
- 140:  (13 72 4d 4e|4e 4d 72 13)       vpksdus v27,v18,v9
- 144:  (13 7d dd 84|84 dd 7d 13)       vnand   v27,v29,v27
- 148:  (12 73 c5 c4|c4 c5 73 12)       vsld    v19,v19,v24
- 14c:  (10 ad 05 c8|c8 05 ad 10)       vsbox   v5,v13
- 150:  (13 23 3d ce|ce 3d 23 13)       vpksdss v25,v3,v7
- 154:  (13 88 04 c7|c7 04 88 13)       vcmpequd\. v28,v8,v0
- 158:  (13 40 d6 4e|4e d6 40 13)       vupkhsw v26,v26
- 15c:  (10 a7 36 82|82 36 a7 10)       vshasigmaw v5,v7,0,6
- 160:  (13 95 76 84|84 76 95 13)       veqv    v28,v21,v14
- 164:  (10 28 9e 8c|8c 9e 28 10)       vmrgow  v1,v8,v19
- 168:  (10 0a 56 c2|c2 56 0a 10)       vshasigmad v0,v10,0,10
- 16c:  (10 bb 76 c4|c4 76 bb 10)       vsrd    v5,v27,v14
- 170:  (11 60 6e ce|ce 6e 60 11)       vupklsw v11,v13
- 174:  (11 c0 87 02|02 87 c0 11)       vclzb   v14,v16
- 178:  (12 80 df 03|03 df 80 12)       vpopcntb v20,v27
- 17c:  (13 80 5f 42|42 5f 80 13)       vclzh   v28,v11
- 180:  (13 00 4f 43|43 4f 00 13)       vpopcnth v24,v9
- 184:  (13 60 ff 82|82 ff 60 13)       vclzw   v27,v31
- 188:  (12 20 9f 83|83 9f 20 12)       vpopcntw v17,v19
- 18c:  (11 80 ef c2|c2 ef 80 11)       vclzd   v12,v29
- 190:  (12 e0 b7 c3|c3 b7 e0 12)       vpopcntd v23,v22
- 194:  (13 14 ee c7|c7 ee 14 13)       vcmpgtud\. v24,v20,v29
- 198:  (11 26 df c7|c7 df 26 11)       vcmpgtsd\. v9,v6,v27
- 19c:  (7f ce d0 19|19 d0 ce 7f)       lxsiwzx vs62,r14,r26
- 1a0:  (7d 00 c8 19|19 c8 00 7d)       lxsiwzx vs40,0,r25
- 1a4:  (7f 20 d0 98|98 d0 20 7f)       lxsiwax vs25,0,r26
- 1a8:  (7c 60 18 98|98 18 60 7c)       lxsiwax vs3,0,r3
- 1ac:  (7f cc 00 67|67 00 cc 7f)       mfvsrd  r12,vs62
- 1b0:  (7d 94 00 e6|e6 00 94 7d)       mffprwz r20,f12
- 1b4:  (7d c9 71 18|18 71 c9 7d)       stxsiwx vs14,r9,r14
- 1b8:  (7e a0 41 18|18 41 a0 7e)       stxsiwx vs21,0,r8
- 1bc:  (7e 0b 01 67|67 01 0b 7e)       mtvsrd  vs48,r11
- 1c0:  (7f f7 01 a7|a7 01 f7 7f)       mtvrwa  v31,r23
- 1c4:  (7e 1a 01 e6|e6 01 1a 7e)       mtfprwz f16,r26
- 1c8:  (7d b3 6c 18|18 6c b3 7d)       lxsspx  vs13,r19,r13
- 1cc:  (7e 40 6c 18|18 6c 40 7e)       lxsspx  vs18,0,r13
- 1d0:  (7d 62 25 19|19 25 62 7d)       stxsspx vs43,r2,r4
- 1d4:  (7e e0 5d 19|19 5d e0 7e)       stxsspx vs55,0,r11
- 1d8:  (f2 d0 c8 05|05 c8 d0 f2)       xsaddsp vs54,vs48,vs25
- 1dc:  (f1 d2 08 0c|0c 08 d2 f1)       xsmaddasp vs14,vs50,vs1
- 1e0:  (f3 56 50 42|42 50 56 f3)       xssubsp vs26,vs22,vs42
- 1e4:  (f3 75 a0 4e|4e a0 75 f3)       xsmaddmsp vs27,vs53,vs52
- 1e8:  (f1 00 d8 2a|2a d8 00 f1)       xsrsqrtesp vs8,vs59
- 1ec:  (f1 80 48 2e|2e 48 80 f1)       xssqrtsp vs12,vs41
- 1f0:  (f3 2b 00 83|83 00 2b f3)       xsmulsp vs57,vs11,vs32
- 1f4:  (f0 d4 d0 89|89 d0 d4 f0)       xsmsubasp vs38,vs20,vs26
- 1f8:  (f3 53 30 c0|c0 30 53 f3)       xsdivsp vs26,vs19,vs6
- 1fc:  (f0 65 b8 cf|cf b8 65 f0)       xsmsubmsp vs35,vs37,vs55
- 200:  (f3 60 40 69|69 40 60 f3)       xsresp  vs59,vs8
- 204:  (f1 81 0c 0f|0f 0c 81 f1)       xsnmaddasp vs44,vs33,vs33
- 208:  (f2 3e f4 4c|4c f4 3e f2)       xsnmaddmsp vs17,vs62,vs30
- 20c:  (f2 d4 fc 8d|8d fc d4 f2)       xsnmsubasp vs54,vs52,vs31
- 210:  (f0 a5 d4 cb|cb d4 a5 f0)       xsnmsubmsp vs37,vs5,vs58
- 214:  (f3 d6 65 56|56 65 d6 f3)       xxlorc  vs30,vs54,vs44
- 218:  (f2 2e ed 91|91 ed 2e f2)       xxlnand vs49,vs14,vs29
- 21c:  (f3 d6 f5 d1|d1 f5 d6 f3)       xxleqv  vs62,vs22,vs30
- 220:  (f3 80 b4 2f|2f b4 80 f3)       xscvdpspn vs60,vs54
- 224:  (f2 c0 6c 66|66 6c c0 f2)       xsrsp   vs22,vs45
- 228:  (f3 40 dc a2|a2 dc 40 f3)       xscvuxdsp vs26,vs59
- 22c:  (f0 c0 8c e3|e3 8c c0 f0)       xscvsxdsp vs38,vs49
- 230:  (f3 60 d5 2d|2d d5 60 f3)       xscvspdpn vs59,vs26
- 234:  (ff 0e 16 8c|8c 16 0e ff)       fmrgow  f24,f14,f2
- 238:  (fe c7 2f 8c|8c 2f c7 fe)       fmrgew  f22,f7,f5
- 23c:  (7c 00 71 9c|9c 71 00 7c)       msgsnd  r14
- 240:  (7c 00 b9 dc|dc b9 00 7c)       msgclr  r23
+.*:    (7c 05 07 1d|1d 07 05 7c)       tabort\. r5
+.*:    (7c e8 86 1d|1d 86 e8 7c)       tabortwc\. 7,r8,r16
+.*:    (7e 8b 56 5d|5d 56 8b 7e)       tabortdc\. 20,r11,r10
+.*:    (7e 2a 9e 9d|9d 9e 2a 7e)       tabortwci\. 17,r10,-13
+.*:    (7f a3 de dd|dd de a3 7f)       tabortdci\. 29,r3,-5
+.*:    (7c 00 05 1d|1d 05 00 7c)       tbegin\.
+.*:    (7f 80 05 9c|9c 05 80 7f)       tcheck  cr7
+.*:    (7c 00 05 5d|5d 05 00 7c)       tend\.
+.*:    (7c 00 05 5d|5d 05 00 7c)       tend\.
+.*:    (7e 00 05 5d|5d 05 00 7e)       tendall\.
+.*:    (7e 00 05 5d|5d 05 00 7e)       tendall\.
+.*:    (7c 18 07 5d|5d 07 18 7c)       treclaim\. r24
+.*:    (7c 00 07 dd|dd 07 00 7c)       trechkpt\.
+.*:    (7c 00 05 dd|dd 05 00 7c)       tsuspend\.
+.*:    (7c 00 05 dd|dd 05 00 7c)       tsuspend\.
+.*:    (7c 20 05 dd|dd 05 20 7c)       tresume\.
+.*:    (7c 20 05 dd|dd 05 20 7c)       tresume\.
+.*:    (60 42 00 00|00 00 42 60)       ori     r2,r2,0
+.*:    (60 00 00 00|00 00 00 60)       nop
+.*:    (60 42 00 00|00 00 42 60)       ori     r2,r2,0
+.*:    (4c 00 01 24|24 01 00 4c)       rfebb   0
+.*:    (4c 00 09 24|24 09 00 4c)       rfebb
+.*:    (4c 00 09 24|24 09 00 4c)       rfebb
+.*:    (4d d5 04 60|60 04 d5 4d)       bgttar- cr5
+.*:    (4c c7 04 61|61 04 c7 4c)       bnstarl- cr1
+.*:    (4d ec 04 60|60 04 ec 4d)       blttar\+ cr3
+.*:    (4c e2 04 61|61 04 e2 4c)       bnetarl\+
+.*:    (4c 88 0c 60|60 0c 88 4c)       bctar   4,4\*cr2\+lt,1
+.*:    (4c 87 14 61|61 14 87 4c)       bctarl  4,4\*cr1\+so,2
+.*:    (7c 00 00 3c|3c 00 00 7c)       waitasec
+.*:    (7c 00 41 1c|1c 41 00 7c)       msgsndp r8
+.*:    (7c 20 01 26|26 01 20 7c)       mtsle   1
+.*:    (7c 00 d9 5c|5c d9 00 7c)       msgclrp r27
+.*:    (7d 4a 61 6d|6d 61 4a 7d)       stqcx\.  r10,r10,r12
+.*:    (7f 80 39 6d|6d 39 80 7f)       stqcx\.  r28,0,r7
+.*:    (7f 13 5a 28|28 5a 13 7f)       lqarx   r24,r19,r11
+.*:    (7e c0 5a 28|28 5a c0 7e)       lqarx   r22,0,r11
+.*:    (7e 80 32 5c|5c 32 80 7e)       mfbhrbe r20,6
+.*:    (7f b1 83 29|29 83 b1 7f)       pbt\.    r29,r17,r16
+.*:    (7d c0 3b 29|29 3b c0 7d)       pbt\.    r14,0,r7
+.*:    (7c 00 03 5c|5c 03 00 7c)       clrbhrb
+.*:    (11 6a 05 ed|ed 05 6a 11)       vpermxor v11,v10,v0,v23
+.*:    (13 02 39 3c|3c 39 02 13)       vaddeuqm v24,v2,v7,v4
+.*:    (11 4a 40 bd|bd 40 4a 11)       vaddecuq v10,v10,v8,v2
+.*:    (10 af 44 fe|fe 44 af 10)       vsubeuqm v5,v15,v8,v19
+.*:    (11 9f 87 7f|7f 87 9f 11)       vsubecuq v12,v31,v16,v29
+.*:    (12 9d 68 88|88 68 9d 12)       vmulouw v20,v29,v13
+.*:    (13 a0 d0 89|89 d0 a0 13)       vmuluwm v29,v0,v26
+.*:    (11 15 e0 c0|c0 e0 15 11)       vaddudm v8,v21,v28
+.*:    (10 3a 08 c2|c2 08 3a 10)       vmaxud  v1,v26,v1
+.*:    (12 83 08 c4|c4 08 83 12)       vrld    v20,v3,v1
+.*:    (10 93 58 c7|c7 58 93 10)       vcmpequd v4,v19,v11
+.*:    (12 ee f1 00|00 f1 ee 12)       vadduqm v23,v14,v30
+.*:    (11 08 69 40|40 69 08 11)       vaddcuq v8,v8,v13
+.*:    (13 9b 21 88|88 21 9b 13)       vmulosw v28,v27,v4
+.*:    (10 64 21 c2|c2 21 64 10)       vmaxsd  v3,v4,v4
+.*:    (10 13 aa 88|88 aa 13 10)       vmuleuw v0,v19,v21
+.*:    (13 14 9a c2|c2 9a 14 13)       vminud  v24,v20,v19
+.*:    (10 1c 7a c7|c7 7a 1c 10)       vcmpgtud v0,v28,v15
+.*:    (12 a0 13 88|88 13 a0 12)       vmulesw v21,v0,v2
+.*:    (11 3a 4b c2|c2 4b 3a 11)       vminsd  v9,v26,v9
+.*:    (13 3d 5b c4|c4 5b 3d 13)       vsrad   v25,v29,v11
+.*:    (11 7c 5b c7|c7 5b 7c 11)       vcmpgtsd v11,v28,v11
+.*:    (10 a8 d6 01|01 d6 a8 10)       bcdadd\. v5,v8,v26,1
+.*:    (10 83 64 08|08 64 83 10)       vpmsumb v4,v3,v12
+.*:    (13 5f ae 41|41 ae 5f 13)       bcdsub\. v26,v31,v21,1
+.*:    (10 b1 84 48|48 84 b1 10)       vpmsumh v5,v17,v16
+.*:    (12 f1 a4 4e|4e a4 f1 12)       vpkudum v23,v17,v20
+.*:    (13 15 ec 88|88 ec 15 13)       vpmsumw v24,v21,v29
+.*:    (11 36 6c c8|c8 6c 36 11)       vpmsumd v9,v22,v13
+.*:    (12 53 94 ce|ce 94 53 12)       vpkudus v18,v19,v18
+.*:    (13 d0 b5 00|00 b5 d0 13)       vsubuqm v30,v16,v22
+.*:    (11 cb 3d 08|08 3d cb 11)       vcipher v14,v11,v7
+.*:    (11 42 b5 09|09 b5 42 11)       vcipherlast v10,v2,v22
+.*:    (12 e0 6d 0c|0c 6d e0 12)       vgbbd   v23,v13
+.*:    (12 19 85 40|40 85 19 12)       vsubcuq v16,v25,v16
+.*:    (13 e1 2d 44|44 2d e1 13)       vorc    v31,v1,v5
+.*:    (10 91 fd 48|48 fd 91 10)       vncipher v4,v17,v31
+.*:    (13 02 dd 49|49 dd 02 13)       vncipherlast v24,v2,v27
+.*:    (12 f5 bd 4c|4c bd f5 12)       vbpermq v23,v21,v23
+.*:    (13 72 4d 4e|4e 4d 72 13)       vpksdus v27,v18,v9
+.*:    (13 7d dd 84|84 dd 7d 13)       vnand   v27,v29,v27
+.*:    (12 73 c5 c4|c4 c5 73 12)       vsld    v19,v19,v24
+.*:    (10 ad 05 c8|c8 05 ad 10)       vsbox   v5,v13
+.*:    (13 23 3d ce|ce 3d 23 13)       vpksdss v25,v3,v7
+.*:    (13 88 04 c7|c7 04 88 13)       vcmpequd\. v28,v8,v0
+.*:    (13 40 d6 4e|4e d6 40 13)       vupkhsw v26,v26
+.*:    (10 a7 36 82|82 36 a7 10)       vshasigmaw v5,v7,0,6
+.*:    (13 95 76 84|84 76 95 13)       veqv    v28,v21,v14
+.*:    (10 28 9e 8c|8c 9e 28 10)       vmrgow  v1,v8,v19
+.*:    (10 0a 56 c2|c2 56 0a 10)       vshasigmad v0,v10,0,10
+.*:    (10 bb 76 c4|c4 76 bb 10)       vsrd    v5,v27,v14
+.*:    (11 60 6e ce|ce 6e 60 11)       vupklsw v11,v13
+.*:    (11 c0 87 02|02 87 c0 11)       vclzb   v14,v16
+.*:    (12 80 df 03|03 df 80 12)       vpopcntb v20,v27
+.*:    (13 80 5f 42|42 5f 80 13)       vclzh   v28,v11
+.*:    (13 00 4f 43|43 4f 00 13)       vpopcnth v24,v9
+.*:    (13 60 ff 82|82 ff 60 13)       vclzw   v27,v31
+.*:    (12 20 9f 83|83 9f 20 12)       vpopcntw v17,v19
+.*:    (11 80 ef c2|c2 ef 80 11)       vclzd   v12,v29
+.*:    (12 e0 b7 c3|c3 b7 e0 12)       vpopcntd v23,v22
+.*:    (13 14 ee c7|c7 ee 14 13)       vcmpgtud\. v24,v20,v29
+.*:    (11 26 df c7|c7 df 26 11)       vcmpgtsd\. v9,v6,v27
+.*:    (7f ce d0 19|19 d0 ce 7f)       lxsiwzx vs62,r14,r26
+.*:    (7d 00 c8 19|19 c8 00 7d)       lxsiwzx vs40,0,r25
+.*:    (7f 20 d0 98|98 d0 20 7f)       lxsiwax vs25,0,r26
+.*:    (7c 60 18 98|98 18 60 7c)       lxsiwax vs3,0,r3
+.*:    (7f cc 00 67|67 00 cc 7f)       (mfvrd   r12,v30|mfvsrd  r12,vs62)
+.*:    (7d 94 00 e6|e6 00 94 7d)       (mffprwz r20,f12|mfvsrwz r20,vs12)
+.*:    (7d c9 71 18|18 71 c9 7d)       stxsiwx vs14,r9,r14
+.*:    (7e a0 41 18|18 41 a0 7e)       stxsiwx vs21,0,r8
+.*:    (7e 0b 01 67|67 01 0b 7e)       (mtvrd   v16,r11|mtvsrd  vs48,r11)
+.*:    (7f f7 01 a7|a7 01 f7 7f)       (mtvrwa  v31,r23|mtvsrwa vs63,r23)
+.*:    (7e 1a 01 e6|e6 01 1a 7e)       (mtfprwz f16,r26|mtvsrwz vs16,r26)
+.*:    (7d b3 6c 18|18 6c b3 7d)       lxsspx  vs13,r19,r13
+.*:    (7e 40 6c 18|18 6c 40 7e)       lxsspx  vs18,0,r13
+.*:    (7d 62 25 19|19 25 62 7d)       stxsspx vs43,r2,r4
+.*:    (7e e0 5d 19|19 5d e0 7e)       stxsspx vs55,0,r11
+.*:    (f2 d0 c8 05|05 c8 d0 f2)       xsaddsp vs54,vs48,vs25
+.*:    (f1 d2 08 0c|0c 08 d2 f1)       xsmaddasp vs14,vs50,vs1
+.*:    (f3 56 50 42|42 50 56 f3)       xssubsp vs26,vs22,vs42
+.*:    (f3 75 a0 4e|4e a0 75 f3)       xsmaddmsp vs27,vs53,vs52
+.*:    (f1 00 d8 2a|2a d8 00 f1)       xsrsqrtesp vs8,vs59
+.*:    (f1 80 48 2e|2e 48 80 f1)       xssqrtsp vs12,vs41
+.*:    (f3 2b 00 83|83 00 2b f3)       xsmulsp vs57,vs11,vs32
+.*:    (f0 d4 d0 89|89 d0 d4 f0)       xsmsubasp vs38,vs20,vs26
+.*:    (f3 53 30 c0|c0 30 53 f3)       xsdivsp vs26,vs19,vs6
+.*:    (f0 65 b8 cf|cf b8 65 f0)       xsmsubmsp vs35,vs37,vs55
+.*:    (f3 60 40 69|69 40 60 f3)       xsresp  vs59,vs8
+.*:    (f1 81 0c 0f|0f 0c 81 f1)       xsnmaddasp vs44,vs33,vs33
+.*:    (f2 3e f4 4c|4c f4 3e f2)       xsnmaddmsp vs17,vs62,vs30
+.*:    (f2 d4 fc 8d|8d fc d4 f2)       xsnmsubasp vs54,vs52,vs31
+.*:    (f0 a5 d4 cb|cb d4 a5 f0)       xsnmsubmsp vs37,vs5,vs58
+.*:    (f3 d6 65 56|56 65 d6 f3)       xxlorc  vs30,vs54,vs44
+.*:    (f2 2e ed 91|91 ed 2e f2)       xxlnand vs49,vs14,vs29
+.*:    (f3 d6 f5 d1|d1 f5 d6 f3)       xxleqv  vs62,vs22,vs30
+.*:    (f3 80 b4 2f|2f b4 80 f3)       xscvdpspn vs60,vs54
+.*:    (f2 c0 6c 66|66 6c c0 f2)       xsrsp   vs22,vs45
+.*:    (f3 40 dc a2|a2 dc 40 f3)       xscvuxdsp vs26,vs59
+.*:    (f0 c0 8c e3|e3 8c c0 f0)       xscvsxdsp vs38,vs49
+.*:    (f3 60 d5 2d|2d d5 60 f3)       xscvspdpn vs59,vs26
+.*:    (ff 0e 16 8c|8c 16 0e ff)       fmrgow  f24,f14,f2
+.*:    (fe c7 2f 8c|8c 2f c7 fe)       fmrgew  f22,f7,f5
+.*:    (7c 00 71 9c|9c 71 00 7c)       msgsnd  r14
+.*:    (7c 00 b9 dc|dc b9 00 7c)       msgclr  r23
 .*:    (7d 00 2e 99|99 2e 00 7d)       lxvd2x  vs40,0,r5
 .*:    (7d 00 2e 99|99 2e 00 7d)       lxvd2x  vs40,0,r5
 .*:    (7d 54 36 98|98 36 54 7d)       lxvd2x  vs10,r20,r6
@@ -310,4 +310,6 @@ Disassembly of section \.text:
 .*:    (4d 89 04 61|61 04 89 4d)       bgttarl cr2
 .*:    (4d 89 04 61|61 04 89 4d)       bgttarl cr2
 .*:    (4d 89 1c 61|61 1c 89 4d)       bctarl  12,4\*cr2\+gt,3
+.*:    (7f 5a d3 78|78 d3 5a 7f)       miso
+.*:    (7f 5a d3 78|78 d3 5a 7f)       miso
 #pass
index beb1c5e81c5ae1c225ea346c48f21c9811d1ae98..52a3e8ea69f19ea9b41e94a27eb678741a4ea502 100644 (file)
@@ -302,3 +302,5 @@ power8:
        bctarl       0b01100,4*cr2+gt
        bctarl       0b01100,4*cr2+gt,0
        bctarl       0b01100,4*cr2+gt,3
+       or           26,26,26
+       miso
index 4e7156d46d9971ab3d293989430bd7b5c724de94..45a8f495aeb68a0be5d9d7fe25f78af1f3d1d6ca 100644 (file)
@@ -399,4 +399,8 @@ Disassembly of section \.text:
 .*:    (7c 20 20 ac|ac 20 20 7c)       dcbfl   0,r4
 .*:    (7c 60 28 ac|ac 28 60 7c)       dcbflp  0,r5
 .*:    (7c 60 28 ac|ac 28 60 7c)       dcbflp  0,r5
+.*:    (63 ff 00 00|00 00 ff 63)       exser
+.*:    (63 ff 00 00|00 00 ff 63)       exser
+.*:    (7c 00 18 9c|9c 18 00 7c)       msgsndu r3
+.*:    (7c 00 d8 dc|dc d8 00 7c)       msgclru r27
 #pass
index 69053819ffe4a293d0982182971a86039c434840..2d412b9e66a9e0dccff477cb24cdc7b0b7e86f4f 100644 (file)
@@ -390,3 +390,7 @@ power9:
        dcbf        0,4,1
        dcbflp      0,5
        dcbf        0,5,3
+       ori         31,31,0
+       exser
+       msgsndu     3
+       msgclru     27
index 48c4ce62f31ff02e4196633b55975de01da79cff..f2a7b44cdd3a0107b19012db6c0f0fb91fb0d76b 100644 (file)
@@ -76,6 +76,8 @@ if { [istarget powerpc64*-*-*] || [istarget *-*-elf64*]} then {
 run_dump_test "common"
 run_dump_test "476"
 run_dump_test "a2"
+run_dump_test "be"
+run_dump_test "le_error"
 run_dump_test "pr21303"
 run_dump_test "vle"
 run_dump_test "vle-reloc"
index e7ea585262ade6f053d9b173e402fb1e000cefce..4f0b25bd4743ef4918aac8d07d792aa0a7e00100 100644 (file)
@@ -7,59 +7,59 @@
 Disassembly of section \.text:
 
 0+00 <vsx2>:
-   0:  (7f ce d0 19|19 d0 ce 7f)       lxsiwzx vs62,r14,r26
-   4:  (7d 00 c8 19|19 c8 00 7d)       lxsiwzx vs40,0,r25
-   8:  (7f 20 d0 98|98 d0 20 7f)       lxsiwax vs25,0,r26
-   c:  (7c 60 18 98|98 18 60 7c)       lxsiwax vs3,0,r3
-  10:  (7f cc 00 66|66 00 cc 7f)       mfvsrd  r12,vs30
-  14:  (7f cc 00 66|66 00 cc 7f)       mfvsrd  r12,vs30
-  18:  (7f cc 00 67|67 00 cc 7f)       mfvsrd  r12,vs62
-  1c:  (7f cc 00 67|67 00 cc 7f)       mfvsrd  r12,vs62
-  20:  (7d 94 00 e6|e6 00 94 7d)       mffprwz r20,f12
-  24:  (7d 94 00 e6|e6 00 94 7d)       mffprwz r20,f12
-  28:  (7d 95 00 e7|e7 00 95 7d)       mfvrwz  r21,v12
-  2c:  (7d 95 00 e7|e7 00 95 7d)       mfvrwz  r21,v12
-  30:  (7d c9 71 18|18 71 c9 7d)       stxsiwx vs14,r9,r14
-  34:  (7e a0 41 18|18 41 a0 7e)       stxsiwx vs21,0,r8
-  38:  (7d 7c 01 66|66 01 7c 7d)       mtvsrd  vs11,r28
-  3c:  (7d 7c 01 66|66 01 7c 7d)       mtvsrd  vs11,r28
-  40:  (7d 7d 01 67|67 01 7d 7d)       mtvsrd  vs43,r29
-  44:  (7d 7d 01 67|67 01 7d 7d)       mtvsrd  vs43,r29
-  48:  (7f 16 01 a6|a6 01 16 7f)       mtfprwa f24,r22
-  4c:  (7f 16 01 a6|a6 01 16 7f)       mtfprwa f24,r22
-  50:  (7f 37 01 a7|a7 01 37 7f)       mtvrwa  v25,r23
-  54:  (7f 37 01 a7|a7 01 37 7f)       mtvrwa  v25,r23
-  58:  (7f 5b 01 e6|e6 01 5b 7f)       mtfprwz f26,r27
-  5c:  (7f 5b 01 e6|e6 01 5b 7f)       mtfprwz f26,r27
-  60:  (7f 7c 01 e7|e7 01 7c 7f)       mtvrwz  v27,r28
-  64:  (7f 7c 01 e7|e7 01 7c 7f)       mtvrwz  v27,r28
-  68:  (7d b3 6c 18|18 6c b3 7d)       lxsspx  vs13,r19,r13
-  6c:  (7e 40 6c 18|18 6c 40 7e)       lxsspx  vs18,0,r13
-  70:  (7d 62 25 19|19 25 62 7d)       stxsspx vs43,r2,r4
-  74:  (7e e0 5d 19|19 5d e0 7e)       stxsspx vs55,0,r11
-  78:  (f2 d0 c8 05|05 c8 d0 f2)       xsaddsp vs54,vs48,vs25
-  7c:  (f1 d2 08 0c|0c 08 d2 f1)       xsmaddasp vs14,vs50,vs1
-  80:  (f3 56 50 42|42 50 56 f3)       xssubsp vs26,vs22,vs42
-  84:  (f3 75 a0 4e|4e a0 75 f3)       xsmaddmsp vs27,vs53,vs52
-  88:  (f1 00 d8 2a|2a d8 00 f1)       xsrsqrtesp vs8,vs59
-  8c:  (f1 80 48 2e|2e 48 80 f1)       xssqrtsp vs12,vs41
-  90:  (f3 2b 00 83|83 00 2b f3)       xsmulsp vs57,vs11,vs32
-  94:  (f0 d4 d0 89|89 d0 d4 f0)       xsmsubasp vs38,vs20,vs26
-  98:  (f3 53 30 c0|c0 30 53 f3)       xsdivsp vs26,vs19,vs6
-  9c:  (f0 65 b8 cf|cf b8 65 f0)       xsmsubmsp vs35,vs37,vs55
-  a0:  (f3 60 40 69|69 40 60 f3)       xsresp  vs59,vs8
-  a4:  (f1 81 0c 0f|0f 0c 81 f1)       xsnmaddasp vs44,vs33,vs33
-  a8:  (f2 3e f4 4c|4c f4 3e f2)       xsnmaddmsp vs17,vs62,vs30
-  ac:  (f2 d4 fc 8d|8d fc d4 f2)       xsnmsubasp vs54,vs52,vs31
-  b0:  (f0 a5 d4 cb|cb d4 a5 f0)       xsnmsubmsp vs37,vs5,vs58
-  b4:  (f3 d6 65 56|56 65 d6 f3)       xxlorc  vs30,vs54,vs44
-  b8:  (f2 2e ed 91|91 ed 2e f2)       xxlnand vs49,vs14,vs29
-  bc:  (f3 d6 f5 d1|d1 f5 d6 f3)       xxleqv  vs62,vs22,vs30
-  c0:  (f3 80 b4 2f|2f b4 80 f3)       xscvdpspn vs60,vs54
-  c4:  (f2 c0 6c 66|66 6c c0 f2)       xsrsp   vs22,vs45
-  c8:  (f3 40 dc a2|a2 dc 40 f3)       xscvuxdsp vs26,vs59
-  cc:  (f0 c0 8c e3|e3 8c c0 f0)       xscvsxdsp vs38,vs49
-  d0:  (f3 60 d5 2d|2d d5 60 f3)       xscvspdpn vs59,vs26
-  d4:  (ff 0e 16 8c|8c 16 0e ff)       fmrgow  f24,f14,f2
-  d8:  (fe c7 2f 8c|8c 2f c7 fe)       fmrgew  f22,f7,f5
+.*:    (7f ce d0 19|19 d0 ce 7f)       lxsiwzx vs62,r14,r26
+.*:    (7d 00 c8 19|19 c8 00 7d)       lxsiwzx vs40,0,r25
+.*:    (7f 20 d0 98|98 d0 20 7f)       lxsiwax vs25,0,r26
+.*:    (7c 60 18 98|98 18 60 7c)       lxsiwax vs3,0,r3
+.*:    (7f cc 00 66|66 00 cc 7f)       (mffprd  r12,f30|mfvsrd  r12,vs30)
+.*:    (7f cc 00 66|66 00 cc 7f)       (mffprd  r12,f30|mfvsrd  r12,vs30)
+.*:    (7f cc 00 67|67 00 cc 7f)       (mfvrd   r12,v30|mfvsrd  r12,vs62)
+.*:    (7f cc 00 67|67 00 cc 7f)       (mfvrd   r12,v30|mfvsrd  r12,vs62)
+.*:    (7d 94 00 e6|e6 00 94 7d)       (mffprwz r20,f12|mfvsrwz r20,vs12)
+.*:    (7d 94 00 e6|e6 00 94 7d)       (mffprwz r20,f12|mfvsrwz r20,vs12)
+.*:    (7d 95 00 e7|e7 00 95 7d)       (mfvrwz  r21,v12|mfvsrwz r21,vs44)
+.*:    (7d 95 00 e7|e7 00 95 7d)       (mfvrwz  r21,v12|mfvsrwz r21,vs44)
+.*:    (7d c9 71 18|18 71 c9 7d)       stxsiwx vs14,r9,r14
+.*:    (7e a0 41 18|18 41 a0 7e)       stxsiwx vs21,0,r8
+.*:    (7d 7c 01 66|66 01 7c 7d)       (mtfprd  f11,r28|mtvsrd  vs11,r28)
+.*:    (7d 7c 01 66|66 01 7c 7d)       (mtfprd  f11,r28|mtvsrd  vs11,r28)
+.*:    (7d 7d 01 67|67 01 7d 7d)       (mtvrd   v11,r29|mtvsrd  vs43,r29)
+.*:    (7d 7d 01 67|67 01 7d 7d)       (mtvrd   v11,r29|mtvsrd  vs43,r29)
+.*:    (7f 16 01 a6|a6 01 16 7f)       (mtfprwa f24,r22|mtvsrwa vs24,r22)
+.*:    (7f 16 01 a6|a6 01 16 7f)       (mtfprwa f24,r22|mtvsrwa vs24,r22)
+.*:    (7f 37 01 a7|a7 01 37 7f)       (mtvrwa  v25,r23|mtvsrwa vs57,r23)
+.*:    (7f 37 01 a7|a7 01 37 7f)       (mtvrwa  v25,r23|mtvsrwa vs57,r23)
+.*:    (7f 5b 01 e6|e6 01 5b 7f)       (mtfprwz f26,r27|mtvsrwz vs26,r27)
+.*:    (7f 5b 01 e6|e6 01 5b 7f)       (mtfprwz f26,r27|mtvsrwz vs26,r27)
+.*:    (7f 7c 01 e7|e7 01 7c 7f)       (mtvrwz  v27,r28|mtvsrwz vs59,r28)
+.*:    (7f 7c 01 e7|e7 01 7c 7f)       (mtvrwz  v27,r28|mtvsrwz vs59,r28)
+.*:    (7d b3 6c 18|18 6c b3 7d)       lxsspx  vs13,r19,r13
+.*:    (7e 40 6c 18|18 6c 40 7e)       lxsspx  vs18,0,r13
+.*:    (7d 62 25 19|19 25 62 7d)       stxsspx vs43,r2,r4
+.*:    (7e e0 5d 19|19 5d e0 7e)       stxsspx vs55,0,r11
+.*:    (f2 d0 c8 05|05 c8 d0 f2)       xsaddsp vs54,vs48,vs25
+.*:    (f1 d2 08 0c|0c 08 d2 f1)       xsmaddasp vs14,vs50,vs1
+.*:    (f3 56 50 42|42 50 56 f3)       xssubsp vs26,vs22,vs42
+.*:    (f3 75 a0 4e|4e a0 75 f3)       xsmaddmsp vs27,vs53,vs52
+.*:    (f1 00 d8 2a|2a d8 00 f1)       xsrsqrtesp vs8,vs59
+.*:    (f1 80 48 2e|2e 48 80 f1)       xssqrtsp vs12,vs41
+.*:    (f3 2b 00 83|83 00 2b f3)       xsmulsp vs57,vs11,vs32
+.*:    (f0 d4 d0 89|89 d0 d4 f0)       xsmsubasp vs38,vs20,vs26
+.*:    (f3 53 30 c0|c0 30 53 f3)       xsdivsp vs26,vs19,vs6
+.*:    (f0 65 b8 cf|cf b8 65 f0)       xsmsubmsp vs35,vs37,vs55
+.*:    (f3 60 40 69|69 40 60 f3)       xsresp  vs59,vs8
+.*:    (f1 81 0c 0f|0f 0c 81 f1)       xsnmaddasp vs44,vs33,vs33
+.*:    (f2 3e f4 4c|4c f4 3e f2)       xsnmaddmsp vs17,vs62,vs30
+.*:    (f2 d4 fc 8d|8d fc d4 f2)       xsnmsubasp vs54,vs52,vs31
+.*:    (f0 a5 d4 cb|cb d4 a5 f0)       xsnmsubmsp vs37,vs5,vs58
+.*:    (f3 d6 65 56|56 65 d6 f3)       xxlorc  vs30,vs54,vs44
+.*:    (f2 2e ed 91|91 ed 2e f2)       xxlnand vs49,vs14,vs29
+.*:    (f3 d6 f5 d1|d1 f5 d6 f3)       xxleqv  vs62,vs22,vs30
+.*:    (f3 80 b4 2f|2f b4 80 f3)       xscvdpspn vs60,vs54
+.*:    (f2 c0 6c 66|66 6c c0 f2)       xsrsp   vs22,vs45
+.*:    (f3 40 dc a2|a2 dc 40 f3)       xscvuxdsp vs26,vs59
+.*:    (f0 c0 8c e3|e3 8c c0 f0)       xscvsxdsp vs38,vs49
+.*:    (f3 60 d5 2d|2d d5 60 f3)       xscvspdpn vs59,vs26
+.*:    (ff 0e 16 8c|8c 16 0e ff)       fmrgow  f24,f14,f2
+.*:    (fe c7 2f 8c|8c 2f c7 fe)       fmrgew  f22,f7,f5
 #pass
index 1627d7afc6dbfeadb59e35cd2d4cd7a0b83d6a4f..8aa83dd62c7d9cc235f7afa6d7c693009657d2dc 100644 (file)
@@ -7,7 +7,7 @@
 Disassembly of section \.text:
 
 0+0 <_start>:
-.*:    (f0 02 ff 6e|6e ff 02 f0)       xvtlsbb vs63
+.*:    (f0 02 ff 6e|6e ff 02 f0)       xvtlsbb cr0,vs63
 .*:    (f0 82 07 6c|6c 07 82 f0)       xvtlsbb cr1,vs0
 .*:    (f1 02 f7 6e|6e f7 02 f1)       xvtlsbb cr2,vs62
 .*:    (f1 82 0f 6c|6c 0f 82 f1)       xvtlsbb cr3,vs1
index 85fefa989f0fd70a2ce569b1660ee01a578c11c2..ea4927330e264088c9b27a8fea52cd2c70d671b9 100644 (file)
@@ -1,3 +1,106 @@
+2021-01-03  Alan Modra  <amodra@gmail.com>
+
+       PR 27140
+       * powerpc.cc (Target_powerpc::Branch_info::make_stub): Only access
+       object->st_other() when 64-bit.
+       (Stub_table::add_long_branch_entry): Ignore "other" when 32-bit.
+
+2020-11-17  Alan Modra  <amodra@gmail.com>
+
+       * powerpc.cc (Target_powerpc::no_tprel_opt_): Rename from tprel_opt_.
+       Init to false.
+       (Target_powerpc::tprel_opt): Test parameters->options().tls_optimize().
+       (Target_powerpc::set_tprel_opt): Delete.
+       (Target_powerpc::set_no_tprel_opt): New function.  Update all uses
+       of set_tprel_opt.
+
+2020-11-16  Michael Hudson-Doyle  <michael.hudson@canonical.com>
+
+       PR 26902
+       * powerpc.cc (Relocate::relocate): Do not include local entry
+       offset of target function when computing the address of a stub.
+
+2020-10-09  Alan Modra  <amodra@gmail.com>
+
+       * powerpc.cc (Powerpc_relobj::do_relocate_sections): Don't do
+       local entry offset optimisation for lplt_section.
+       (Target_powerpc::Branch_info::make_stub): Don't add local
+       entry offset to long branch dest passed to
+       add_long_branch_entry.  Do pass st_other bits.
+       (Stub_table::Branch_stub_ent): Add "other_" field.
+       (Stub_table::add_long_branch_entry): Add "other" param, and
+       save.
+       (Stub_table::branch_stub_size): Adjust long branch offset.
+       (Stub_table::do_write): Likewise.
+       (Target_powerpc::Relocate::relocate): Likewise.
+
+2020-10-09  Alan Modra  <amodra@gmail.com>
+
+       * powerpc.cc (is_got_reloc): New function.
+       (Target_powerpc::Relocate::relocate): Use it here, exclude GOT
+       relocs when looking for stubs.
+
+2020-10-08  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * testsuite/split_i386.sh: Updated for --split-stack-adjust-size
+       default change.
+       * testsuite/split_x86_64.sh: Likewise.
+
+2020-10-08  Alan Modra  <amodra@gmail.com>
+
+       * options.h (split_stack_adjust_size): Default to 0x100000.
+
+2020-09-26  Alan Modra  <amodra@gmail.com>
+
+       * powerpc.cc (Target_powerpc): Rename power10_stubs_ to
+       power10_relocs_.
+       (Target_powerpc::set_power10_relocs): New accessor.
+       (Target_powerpc::set_power10_stubs): Delete.
+       (Target_powerpc::power10_stubs): Adjust.
+       (Target_powerpc::has_localentry0): New accessor.
+       (ld_0_11): New constant.
+       (glink_eh_frame_fde_64v1, glink_eh_frame_fde_64v2): Adjust.
+       (glink_eh_frame_fde_64v2_localentry0): New.
+       (Output_data_glink::pltresolve_size): Update.
+       (Output_data_glink::add_eh_frame): Use localentry0 version eh_frame.
+       (Output_data_glink::do_write): Move r2 save to start of ELFv2 stub
+       and only emit for has_localentry0.  Don't use r2 in the stub.
+       (Target_powerpc::Scan::local, global): Adjust for
+       set_power10_relocs renaming.
+       (Target_powerpc::scan_relocs): Warn and reset plt_localentry0_.
+
+2020-09-24  Alan Modra  <amodra@gmail.com>
+
+       * powerpc.cc (Target_powerpc::Relocate::relocate): Don't skip
+       first insn of __tls_get_addr_opt stub.
+
+2020-09-24  Alan Modra  <amodra@gmail.com>
+
+       Apply from master
+       2020-07-27  Alan Modra  <amodra@gmail.com>
+       * options.h (DEFINE_enum): Add optional_arg__ param, adjust
+       all uses.
+       (General_options): Add --power10-stubs and --no-power10-stubs.
+       * options.cc (General_options::parse_no_power10_stubs): New.
+       (General_options::finalize): Handle --power10-stubs.
+       * powerpc.cc (set_power10_stubs): Don't set when --power10-stubs=no.
+       (power10_stubs_auto): New.
+       (struct Plt_stub_ent): Add toc_ and tocoff_.  Don't use a bitfield
+       for indx_.
+       (struct Branch_stub_ent): Add toc_and tocoff_.  Use bitfields for
+       iter_, notoc_ and save_res_.
+       (add_plt_call_entry): Set toc_.  Adjust resizing conditions for
+       --power10-stubs=auto.
+       (add_long_branch_entry): Set toc_.
+       (add_eh_frame, define_stub_syms): No longer use const_iterators
+       for plt and long branch stub iteration.
+       (build_tls_opt_head, build_tls_opt_tail): Change parameters and
+       return value.  Move tests for __tls_get_addr to callers.
+       (plt_call_size): Handle --power10-stubs=auto.
+       (branch_stub_size): Likewise.
+       (Stub_table::do_write): Likewise.
+       (relocate): Likewise.
+
 2020-09-19  Nick Clifton  <nickc@redhat.com>
 
        This is the 2.35.1 point release.
index b13ae71ce14b9ebfbf240a3007d76c936ddf0b28..6b194374c8c458da491734bbeddc64f6b3d77905 100644 (file)
@@ -464,6 +464,14 @@ General_options::parse_plugin_opt(const char*, const char* arg,
   this->add_plugin_option(arg);
 }
 
+void
+General_options::parse_no_power10_stubs(const char*, const char*,
+                                       Command_line*)
+{
+  this->set_power10_stubs("no");
+  this->set_user_set_power10_stubs();
+}
+
 void
 General_options::parse_R(const char* option, const char* arg,
                         Command_line* cmdline)
@@ -1183,6 +1191,27 @@ General_options::finalize()
         this->set_start_stop_visibility_enum(elfcpp::STV_PROTECTED);
     }
 
+  // Parse the --power10-stubs argument.
+  if (!this->user_set_power10_stubs())
+    {
+      // --power10-stubs without an arg is equivalent to --power10-stubs=yes
+      // but not specifying --power10-stubs at all should be equivalent to
+      // --power10-stubs=auto.  This doesn't fit into the notion of
+      // "default_value", used both as a static initializer and to provide
+      // a missing optional arg.  Fix it here.
+      this->set_power10_stubs("auto");
+      this->set_power10_stubs_enum(POWER10_STUBS_AUTO);
+    }
+  else
+    {
+      if (strcmp(this->power10_stubs(), "auto") == 0)
+       this->set_power10_stubs_enum(POWER10_STUBS_AUTO);
+      else if (strcmp(this->power10_stubs(), "no") == 0)
+       this->set_power10_stubs_enum(POWER10_STUBS_NO);
+      else if (strcmp(this->power10_stubs(), "yes") == 0)
+       this->set_power10_stubs_enum(POWER10_STUBS_YES);
+    }
+
   // -M is equivalent to "-Map -".
   if (this->print_map() && !this->user_set_Map())
     {
index 3c8d25a6628206188260b1272be464c6f0b036f7..51d3614e6b672d23e3db31ca3f6aecd3bf9badd8 100644 (file)
@@ -481,9 +481,9 @@ struct Struct_special : public Struct_var
 // After helparg__ should come an initializer list, like
 //   {"foo", "bar", "baz"}
 #define DEFINE_enum(varname__, dashes__, shortname__, default_value__,   \
-                   helpstring__, helparg__, ...)                        \
+                   helpstring__, helparg__, optional_arg__, ...)        \
   DEFINE_var(varname__, dashes__, shortname__, default_value__,          \
-            default_value__, helpstring__, helparg__, false,            \
+            default_value__, helpstring__, helparg__, optional_arg__,   \
             const char*, const char*, parse_choices_##varname__, false) \
  private:                                                                \
   static void parse_choices_##varname__(const char* option_name,         \
@@ -703,7 +703,7 @@ class General_options
              N_("Use DT_NEEDED for all shared libraries"));
 
   DEFINE_enum(assert, options::ONE_DASH, '\0', NULL,
-             N_("Ignored"), N_("[ignored]"),
+             N_("Ignored"), N_("[ignored]"), false,
              {"definitions", "nodefinitions", "nosymbolic", "pure-text"});
 
   // b
@@ -761,7 +761,7 @@ class General_options
 
   DEFINE_enum(compress_debug_sections, options::TWO_DASHES, '\0', "none",
              N_("Compress .debug_* sections in the output file"),
-             ("[none,zlib,zlib-gnu,zlib-gabi]"),
+             ("[none,zlib,zlib-gnu,zlib-gabi]"), false,
              {"none", "zlib", "zlib-gnu", "zlib-gabi"});
 
   DEFINE_bool(copy_dt_needed_entries, options::TWO_DASHES, '\0', false,
@@ -934,7 +934,7 @@ class General_options
                N_("FRACTION"));
 
   DEFINE_enum(hash_style, options::TWO_DASHES, '\0', DEFAULT_HASH_STYLE,
-             N_("Dynamic hash style"), N_("[sysv,gnu,both]"),
+             N_("Dynamic hash style"), N_("[sysv,gnu,both]"), false,
              {"sysv", "gnu", "both"});
 
   // i
@@ -946,7 +946,7 @@ class General_options
              N_("Identical Code Folding. "
                 "\'--icf=safe\' Folds ctors, dtors and functions whose"
                 " pointers are definitely not taken"),
-             ("[none,all,safe]"),
+             ("[none,all,safe]"), false,
              {"none", "all", "safe"});
 
   DEFINE_uint(icf_iterations, options::TWO_DASHES , '\0', 0,
@@ -1086,7 +1086,7 @@ class General_options
 
   DEFINE_enum(orphan_handling, options::TWO_DASHES, '\0', "place",
              N_("Orphan section handling"), N_("[place,discard,warn,error]"),
-             {"place", "discard", "warn", "error"});
+             false, {"place", "discard", "warn", "error"});
 
   // p
 
@@ -1141,6 +1141,12 @@ class General_options
              N_("Use posix_fallocate to reserve space in the output file"),
              N_("Use fallocate or ftruncate to reserve space"));
 
+  DEFINE_enum(power10_stubs, options::TWO_DASHES, '\0', "yes",
+            N_("(PowerPC64 only) stubs use power10 insns"),
+            N_("[=auto,no,yes]"), true, {"auto", "no", "yes"});
+  DEFINE_special(no_power10_stubs, options::TWO_DASHES, '\0',
+                N_("(PowerPC64 only) stubs do not use power10 insns"), NULL);
+
   DEFINE_bool(preread_archive_symbols, options::TWO_DASHES, '\0', false,
              N_("Preread archive symbols when multi-threaded"), NULL);
 
@@ -1236,7 +1242,7 @@ class General_options
   DEFINE_enum(sort_section, options::TWO_DASHES, '\0', "none",
              N_("Sort sections by name.  \'--no-text-reorder\'"
                 " will override \'--sort-section=name\' for .text"),
-             N_("[none,name]"),
+             N_("[none,name]"), false,
              {"none", "name"});
 
   DEFINE_uint(spare_dynamic_tags, options::TWO_DASHES, '\0', 5,
@@ -1254,7 +1260,7 @@ class General_options
                 "output sections"),
              N_("(PowerPC only) Each output section has its own stubs"));
 
-  DEFINE_uint(split_stack_adjust_size, options::TWO_DASHES, '\0', 0x4000,
+  DEFINE_uint(split_stack_adjust_size, options::TWO_DASHES, '\0', 0x100000,
              N_("Stack size when -fsplit-stack function calls non-split"),
              N_("SIZE"));
 
@@ -1287,7 +1293,7 @@ class General_options
              NULL);
   DEFINE_enum(target2, options::TWO_DASHES, '\0', NULL,
              N_("(ARM only) Set R_ARM_TARGET2 relocation type"),
-             N_("[rel, abs, got-rel"),
+             N_("[rel, abs, got-rel"), false,
              {"rel", "abs", "got-rel"});
 
   DEFINE_bool(text_reorder, options::TWO_DASHES, '\0', true,
@@ -1344,7 +1350,7 @@ class General_options
   DEFINE_enum(unresolved_symbols, options::TWO_DASHES, '\0', NULL,
              N_("How to handle unresolved symbols"),
              ("ignore-all,report-all,ignore-in-object-files,"
-              "ignore-in-shared-libs"),
+              "ignore-in-shared-libs"), false,
              {"ignore-all", "report-all", "ignore-in-object-files",
                  "ignore-in-shared-libs"});
 
@@ -1507,7 +1513,7 @@ class General_options
   DEFINE_enum(start_stop_visibility, options::DASH_Z, '\0', "protected",
              N_("ELF symbol visibility for synthesized "
                 "__start_* and __stop_* symbols"),
-             ("[default,internal,hidden,protected]"),
+             ("[default,internal,hidden,protected]"), false,
              {"default", "internal", "hidden", "protected"});
   DEFINE_bool(text, options::DASH_Z, '\0', false,
              N_("Do not permit relocations in read-only segments"),
@@ -1763,6 +1769,20 @@ class General_options
   start_stop_visibility_enum() const
   { return this->start_stop_visibility_enum_; }
 
+  enum Power10_stubs
+  {
+    // Use Power10 insns on @notoc calls/branches, non-Power10 elsewhere.
+    POWER10_STUBS_AUTO,
+    // Don't use Power10 insns
+    POWER10_STUBS_NO,
+    // Always use Power10 insns
+    POWER10_STUBS_YES
+  };
+
+  Power10_stubs
+  power10_stubs_enum() const
+  { return this->power10_stubs_enum_; }
+
  private:
   // Don't copy this structure.
   General_options(const General_options&);
@@ -1826,6 +1846,10 @@ class General_options
   set_start_stop_visibility_enum(elfcpp::STV value)
   { this->start_stop_visibility_enum_ = value; }
 
+  void
+  set_power10_stubs_enum(Power10_stubs value)
+  { this->power10_stubs_enum_ = value; }
+
   // These are called by finalize() to set up the search-path correctly.
   void
   add_to_library_path_with_sysroot(const std::string& arg)
@@ -1895,6 +1919,8 @@ class General_options
   Orphan_handling orphan_handling_enum_;
   // Symbol visibility for __start_* / __stop_* magic symbols.
   elfcpp::STV start_stop_visibility_enum_;
+  // Power10 stubs option
+  Power10_stubs power10_stubs_enum_;
 };
 
 // The position-dependent options.  We use this to store the state of
index 59ba40dc3fce160bc84164c244bdba94d484aac0..1cc2478941fbc9a12ef445b2436322ee27f7b2d1 100644 (file)
@@ -647,10 +647,9 @@ class Target_powerpc : public Sized_target<size, big_endian>
       glink_(NULL), rela_dyn_(NULL), copy_relocs_(),
       tlsld_got_offset_(-1U),
       stub_tables_(), branch_lookup_table_(), branch_info_(), tocsave_loc_(),
-      power10_stubs_(false), plt_thread_safe_(false), plt_localentry0_(false),
+      power10_relocs_(false), plt_thread_safe_(false), plt_localentry0_(false),
       plt_localentry0_init_(false), has_localentry0_(false),
-      has_tls_get_addr_opt_(false),
-      tprel_opt_(parameters->options().tls_optimize()),
+      has_tls_get_addr_opt_(false), no_tprel_opt_(false),
       relax_failed_(false), relax_fail_count_(0),
       stub_group_size_(0), savres_section_(0),
       tls_get_addr_(NULL), tls_get_addr_opt_(NULL),
@@ -1079,14 +1078,25 @@ class Target_powerpc : public Sized_target<size, big_endian>
     sym->set_dynsym_index(-1U);
   }
 
+  void
+  set_power10_relocs()
+  {
+      this->power10_relocs_ = true;
+  }
+
   bool
   power10_stubs() const
-  { return this->power10_stubs_; }
+  {
+    return (this->power10_relocs_
+           && (parameters->options().power10_stubs_enum()
+               != General_options::POWER10_STUBS_NO));
+  }
 
-  void
-  set_power10_stubs()
+  bool
+  power10_stubs_auto() const
   {
-    this->power10_stubs_ = true;
+    return (parameters->options().power10_stubs_enum()
+           == General_options::POWER10_STUBS_AUTO);
   }
 
   bool
@@ -1097,6 +1107,10 @@ class Target_powerpc : public Sized_target<size, big_endian>
   plt_localentry0() const
   { return this->plt_localentry0_; }
 
+  bool
+  has_localentry0() const
+  { return this->has_localentry0_; }
+
   void
   set_has_localentry0()
   {
@@ -1139,11 +1153,11 @@ class Target_powerpc : public Sized_target<size, big_endian>
 
   bool
   tprel_opt() const
-  { return this->tprel_opt_; }
+  { return !this->no_tprel_opt_ && parameters->options().tls_optimize(); }
 
   void
-  set_tprel_opt(bool val)
-  { this->tprel_opt_ = val; }
+  set_no_tprel_opt()
+  { this->no_tprel_opt_ = true; }
 
   // Remember any symbols seen with non-zero localentry, even those
   // not providing a definition
@@ -1696,13 +1710,13 @@ class Target_powerpc : public Sized_target<size, big_endian>
   Branches branch_info_;
   Tocsave_loc tocsave_loc_;
 
-  bool power10_stubs_;
+  bool power10_relocs_;
   bool plt_thread_safe_;
   bool plt_localentry0_;
   bool plt_localentry0_init_;
   bool has_localentry0_;
   bool has_tls_get_addr_opt_;
-  bool tprel_opt_;
+  bool no_tprel_opt_;
 
   bool relax_failed_;
   int relax_fail_count_;
@@ -1869,6 +1883,19 @@ is_plt16_reloc(unsigned int r_type)
          || (size == 64 && r_type == elfcpp::R_PPC64_PLT16_LO_DS));
 }
 
+// GOT_TYPE_STANDARD (ie. not TLS) GOT relocs
+inline bool
+is_got_reloc(unsigned int r_type)
+{
+  return (r_type == elfcpp::R_POWERPC_GOT16
+         || r_type == elfcpp::R_POWERPC_GOT16_LO
+         || r_type == elfcpp::R_POWERPC_GOT16_HI
+         || r_type == elfcpp::R_POWERPC_GOT16_HA
+         || r_type == elfcpp::R_PPC64_GOT16_DS
+         || r_type == elfcpp::R_PPC64_GOT16_LO_DS
+         || r_type == elfcpp::R_PPC64_GOT_PCREL34);
+}
+
 // If INSN is an opcode that may be used with an @tls operand, return
 // the transformed insn for TLS optimisation, otherwise return 0.  If
 // REG is non-zero only match an insn with RB or RA equal to REG.
@@ -2739,8 +2766,6 @@ Powerpc_relobj<size, big_endian>::do_relocate_sections(
            if (this->local_has_plt_offset(i))
              {
                Address value = this->local_symbol_value(i, 0);
-               if (size == 64)
-                 value += ppc64_local_entry_offset(i);
                size_t off = this->local_plt_offset(i);
                elfcpp::Swap<size, big_endian>::writeval(oview + off, value);
                modified = true;
@@ -3511,6 +3536,7 @@ Target_powerpc<size, big_endian>::Branch_info::make_stub(
       from += (this->object_->output_section(this->shndx_)->address()
               + this->offset_);
       Address to;
+      unsigned int other = 0;
       if (gsym != NULL)
        {
          switch (gsym->source())
@@ -3539,7 +3565,7 @@ Target_powerpc<size, big_endian>::Branch_info::make_stub(
          if (status != Symbol_table::CFVS_OK)
            return true;
          if (size == 64)
-           to += this->object_->ppc64_local_entry_offset(gsym);
+           other = gsym->nonvis() >> 3;
        }
       else
        {
@@ -3557,7 +3583,7 @@ Target_powerpc<size, big_endian>::Branch_info::make_stub(
            return true;
          to = symval.value(this->object_, 0);
          if (size == 64)
-           to += this->object_->ppc64_local_entry_offset(this->r_sym_);
+           other = this->object_->st_other(this->r_sym_) >> 5;
        }
       if (!(size == 32 && this->r_type_ == elfcpp::R_PPC_PLTREL24))
        to += this->addend_;
@@ -3570,7 +3596,11 @@ Target_powerpc<size, big_endian>::Branch_info::make_stub(
                                         &to, &dest_shndx))
            return true;
        }
-      Address delta = to - from;
+      unsigned int local_ent = 0;
+      if (size == 64
+         && this->r_type_ != elfcpp::R_PPC64_REL24_NOTOC)
+       local_ent = elfcpp::ppc64_decode_local_entry(other);
+      Address delta = to + local_ent - from;
       if (delta + max_branch_offset >= 2 * max_branch_offset
          || (size == 64
              && this->r_type_ == elfcpp::R_PPC64_REL24_NOTOC
@@ -3592,7 +3622,7 @@ Target_powerpc<size, big_endian>::Branch_info::make_stub(
                           && gsym->output_data() == target->savres_section());
          ok = stub_table->add_long_branch_entry(this->object_,
                                                 this->r_type_,
-                                                from, to, save_res);
+                                                from, to, other, save_res);
        }
     }
   if (!ok)
@@ -4181,6 +4211,7 @@ static const uint32_t cmpwi_11_0  = 0x2c0b0000;
 static const uint32_t cror_15_15_15    = 0x4def7b82;
 static const uint32_t cror_31_31_31    = 0x4ffffb82;
 static const uint32_t ld_0_1           = 0xe8010000;
+static const uint32_t ld_0_11          = 0xe80b0000;
 static const uint32_t ld_0_12          = 0xe80c0000;
 static const uint32_t ld_2_1           = 0xe8410000;
 static const uint32_t ld_2_2           = 0xe8420000;
@@ -4563,9 +4594,9 @@ static const unsigned char glink_eh_frame_fde_64v1[] =
   0, 0, 0, 0,                          // Replaced with offset to .glink.
   0, 0, 0, 0,                          // Replaced with size of .glink.
   0,                                   // Augmentation size.
-  elfcpp::DW_CFA_advance_loc + 1,
+  elfcpp::DW_CFA_advance_loc + 2,
   elfcpp::DW_CFA_register, 65, 12,
-  elfcpp::DW_CFA_advance_loc + 5,
+  elfcpp::DW_CFA_advance_loc + 4,
   elfcpp::DW_CFA_restore_extended, 65
 };
 
@@ -4575,9 +4606,20 @@ static const unsigned char glink_eh_frame_fde_64v2[] =
   0, 0, 0, 0,                          // Replaced with offset to .glink.
   0, 0, 0, 0,                          // Replaced with size of .glink.
   0,                                   // Augmentation size.
-  elfcpp::DW_CFA_advance_loc + 1,
+  elfcpp::DW_CFA_advance_loc + 2,
   elfcpp::DW_CFA_register, 65, 0,
-  elfcpp::DW_CFA_advance_loc + 7,
+  elfcpp::DW_CFA_advance_loc + 2,
+  elfcpp::DW_CFA_restore_extended, 65
+};
+
+static const unsigned char glink_eh_frame_fde_64v2_localentry0[] =
+{
+  0, 0, 0, 0,                          // Replaced with offset to .glink.
+  0, 0, 0, 0,                          // Replaced with size of .glink.
+  0,                                   // Augmentation size.
+  elfcpp::DW_CFA_advance_loc + 3,
+  elfcpp::DW_CFA_register, 65, 0,
+  elfcpp::DW_CFA_advance_loc + 2,
   elfcpp::DW_CFA_restore_extended, 65
 };
 
@@ -4631,26 +4673,33 @@ class Stub_table : public Output_relaxed_input_section
   struct Plt_stub_ent
   {
     Plt_stub_ent(unsigned int off, unsigned int indx)
-      : off_(off), indx_(indx), iter_(0), notoc_(0), r2save_(0), localentry0_(0)
+      : off_(off), indx_(indx), iter_(0), notoc_(0), toc_(0),
+       r2save_(0), localentry0_(0), tocoff_(0)
     { }
 
     unsigned int off_;
-    unsigned int indx_ : 28;
+    unsigned int indx_;
     unsigned int iter_ : 1;
     unsigned int notoc_ : 1;
+    unsigned int toc_ : 1;
     unsigned int r2save_ : 1;
     unsigned int localentry0_ : 1;
+    unsigned int tocoff_ : 8;
   };
   struct Branch_stub_ent
   {
     Branch_stub_ent(unsigned int off, bool notoc, bool save_res)
-      : off_(off), iter_(false), notoc_(notoc), save_res_(save_res)
+      : off_(off), iter_(0), notoc_(notoc), toc_(0), save_res_(save_res),
+       other_(0), tocoff_(0)
     { }
 
     unsigned int off_;
-    bool iter_;
-    bool notoc_;
-    bool save_res_;
+    unsigned int iter_ : 1;
+    unsigned int notoc_ : 1;
+    unsigned int toc_ : 1;
+    unsigned int save_res_ : 1;
+    unsigned int other_ : 3;
+    unsigned int tocoff_ : 8;
   };
   typedef typename elfcpp::Elf_types<size>::Elf_Addr Address;
   static const Address invalid_address = static_cast<Address>(0) - 1;
@@ -4716,7 +4765,7 @@ class Stub_table : public Output_relaxed_input_section
   // Add a long branch stub.
   bool
   add_long_branch_entry(const Powerpc_relobj<size, big_endian>*,
-                       unsigned int, Address, Address, bool);
+                       unsigned int, Address, Address, unsigned int, bool);
 
   const Branch_stub_ent*
   find_long_branch_entry(const Powerpc_relobj<size, big_endian>*,
@@ -4898,7 +4947,7 @@ class Stub_table : public Output_relaxed_input_section
 
   // Size of a given plt call stub.
   unsigned int
-  plt_call_size(typename Plt_stub_entries::const_iterator p) const;
+  plt_call_size(typename Plt_stub_entries::iterator p) const;
 
   unsigned int
   plt_call_align(unsigned int bytes) const
@@ -4909,16 +4958,14 @@ class Stub_table : public Output_relaxed_input_section
 
   // Return long branch stub size.
   unsigned int
-  branch_stub_size(typename Branch_stub_entries::const_iterator p,
+  branch_stub_size(typename Branch_stub_entries::iterator p,
                   bool* need_lt);
 
-  bool
-  build_tls_opt_head(unsigned char** pp,
-                    typename Plt_stub_entries::const_iterator cs);
+  void
+  build_tls_opt_head(unsigned char** pp,  bool save_lr);
 
-  bool
-  build_tls_opt_tail(unsigned char* p,
-                    typename Plt_stub_entries::const_iterator cs);
+  void
+  build_tls_opt_tail(unsigned char* p);
 
   void
   plt_error(const Plt_stub_key& p);
@@ -5083,15 +5130,22 @@ Stub_table<size, big_endian>::add_plt_call_entry(
       if (r_type == elfcpp::R_PPC64_REL24_NOTOC)
        {
          if (!p.second && !p.first->second.notoc_
-             && !this->targ_->power10_stubs())
+             && (!this->targ_->power10_stubs()
+                 || this->targ_->power10_stubs_auto()))
            this->need_resize_ = true;
          p.first->second.notoc_ = 1;
        }
-      else if (!tocsave && !p.first->second.localentry0_)
+      else
        {
-         if (!p.second && !p.first->second.r2save_)
+         if (!p.second && !p.first->second.toc_)
            this->need_resize_ = true;
-         p.first->second.r2save_ = 1;
+         p.first->second.toc_ = 1;
+         if (!tocsave && !p.first->second.localentry0_)
+           {
+             if (!p.second && !p.first->second.r2save_)
+               this->need_resize_ = true;
+             p.first->second.r2save_ = 1;
+           }
        }
     }
   if (p.second || (this->resizing_ && !p.first->second.iter_))
@@ -5134,15 +5188,22 @@ Stub_table<size, big_endian>::add_plt_call_entry(
       if (r_type == elfcpp::R_PPC64_REL24_NOTOC)
        {
          if (!p.second && !p.first->second.notoc_
-             && !this->targ_->power10_stubs())
+             && (!this->targ_->power10_stubs()
+                 || this->targ_->power10_stubs_auto()))
            this->need_resize_ = true;
          p.first->second.notoc_ = 1;
        }
-      else if (!tocsave && !p.first->second.localentry0_)
+      else
        {
-         if (!p.second && !p.first->second.r2save_)
+         if (!p.second && !p.first->second.toc_)
            this->need_resize_ = true;
-         p.first->second.r2save_ = 1;
+         p.first->second.toc_ = 1;
+         if (!tocsave && !p.first->second.localentry0_)
+           {
+             if (!p.second && !p.first->second.r2save_)
+               this->need_resize_ = true;
+             p.first->second.r2save_ = 1;
+           }
        }
     }
   if (p.second || (this->resizing_ && !p.first->second.iter_))
@@ -5224,6 +5285,7 @@ Stub_table<size, big_endian>::add_long_branch_entry(
     unsigned int r_type,
     Address from,
     Address to,
+    unsigned int other,
     bool save_res)
 {
   Branch_stub_key key(object, to);
@@ -5231,11 +5293,20 @@ Stub_table<size, big_endian>::add_long_branch_entry(
   Branch_stub_ent ent(this->branch_size_, notoc, save_res);
   std::pair<typename Branch_stub_entries::iterator, bool> p
     = this->long_branch_stubs_.insert(std::make_pair(key, ent));
-  if (notoc && !p.first->second.notoc_)
+  if (notoc)
     {
-      this->need_resize_ = true;
+      if (!p.second && !p.first->second.notoc_)
+       this->need_resize_ = true;
       p.first->second.notoc_ = true;
     }
+  else
+    {
+      if (!p.second && !p.first->second.toc_)
+       this->need_resize_ = true;
+      p.first->second.toc_ = true;
+    }
+  if (size == 64 && p.first->second.other_ == 0)
+    p.first->second.other_ = other;
   gold_assert(save_res == p.first->second.save_res_);
   if (p.second || (this->resizing_ && !p.first->second.iter_))
     {
@@ -5330,7 +5401,7 @@ Stub_table<size, big_endian>::add_eh_frame(Layout* layout)
   if (!this->targ_->has_glink())
     return;
 
-  typedef typename Plt_stub_entries::const_iterator plt_iter;
+  typedef typename Plt_stub_entries::iterator plt_iter;
   std::vector<plt_iter> calls;
   if (!this->plt_call_stubs_.empty())
     for (plt_iter cs = this->plt_call_stubs_.begin();
@@ -5491,7 +5562,8 @@ class Output_data_glink : public Output_section_data
   {
     if (size == 64)
       return (8
-             + (this->targ_->abiversion() < 2 ? 11 * 4 : 14 * 4));
+             + (this->targ_->abiversion() < 2 ? 11 * 4
+                : this->targ_->has_localentry0() ? 14 * 4 : 13 * 4));
     return 16 * 4;
   }
 
@@ -5534,6 +5606,12 @@ Output_data_glink<size, big_endian>::add_eh_frame(Layout* layout)
                                     sizeof (Eh_cie<64>::eh_frame_cie),
                                     glink_eh_frame_fde_64v1,
                                     sizeof (glink_eh_frame_fde_64v1));
+      else if (this->targ_->has_localentry0())
+       layout->add_eh_frame_for_plt(this,
+                                    Eh_cie<64>::eh_frame_cie,
+                                    sizeof (Eh_cie<64>::eh_frame_cie),
+                                    glink_eh_frame_fde_64v2_localentry0,
+                                    sizeof (glink_eh_frame_fde_64v2));
       else
        layout->add_eh_frame_for_plt(this,
                                     Eh_cie<64>::eh_frame_cie,
@@ -5632,7 +5710,7 @@ Stub_table<size, big_endian>::define_stub_syms(Symbol_table* symtab)
       // output .symtab ordering depends on the order in which symbols
       // are added to the linker symtab.  We want reproducible output
       // so must sort the call stub symbols.
-      typedef typename Plt_stub_entries::const_iterator plt_iter;
+      typedef typename Plt_stub_entries::iterator plt_iter;
       std::vector<plt_iter> sorted;
       sorted.resize(this->plt_call_stubs_.size());
 
@@ -5676,7 +5754,7 @@ Stub_table<size, big_endian>::define_stub_syms(Symbol_table* symtab)
        }
     }
 
-  typedef typename Branch_stub_entries::const_iterator branch_iter;
+  typedef typename Branch_stub_entries::iterator branch_iter;
   for (branch_iter bs = this->long_branch_stubs_.begin();
        bs != this->long_branch_stubs_.end();
        ++bs)
@@ -5698,88 +5776,72 @@ Stub_table<size, big_endian>::define_stub_syms(Symbol_table* symtab)
 // Emit the start of a __tls_get_addr_opt plt call stub.
 
 template<int size, bool big_endian>
-bool
-Stub_table<size, big_endian>::build_tls_opt_head(
-     unsigned char** pp,
-     typename Plt_stub_entries::const_iterator cs)
+void
+Stub_table<size, big_endian>::build_tls_opt_head(unsigned char** pp,
+                                                bool save_lr)
 {
-  if (this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+  unsigned char* p = *pp;
+  if (size == 64)
     {
-      unsigned char* p = *pp;
-      if (size == 64)
-       {
-         write_insn<big_endian>(p, ld_11_3 + 0);
-         p += 4;
-         write_insn<big_endian>(p, ld_12_3 + 8);
-         p += 4;
-         write_insn<big_endian>(p, mr_0_3);
-         p += 4;
-         write_insn<big_endian>(p, cmpdi_11_0);
-         p += 4;
-         write_insn<big_endian>(p, add_3_12_13);
-         p += 4;
-         write_insn<big_endian>(p, beqlr);
-         p += 4;
-         write_insn<big_endian>(p, mr_3_0);
-         p += 4;
-         if (cs->second.r2save_ && !cs->second.localentry0_)
-           {
-             write_insn<big_endian>(p, mflr_11);
-             p += 4;
-             write_insn<big_endian>(p, (std_11_1 + this->targ_->stk_linker()));
-             p += 4;
-           }
-       }
-      else
+      write_insn<big_endian>(p, ld_11_3 + 0);
+      p += 4;
+      write_insn<big_endian>(p, ld_12_3 + 8);
+      p += 4;
+      write_insn<big_endian>(p, mr_0_3);
+      p += 4;
+      write_insn<big_endian>(p, cmpdi_11_0);
+      p += 4;
+      write_insn<big_endian>(p, add_3_12_13);
+      p += 4;
+      write_insn<big_endian>(p, beqlr);
+      p += 4;
+      write_insn<big_endian>(p, mr_3_0);
+      p += 4;
+      if (save_lr)
        {
-         write_insn<big_endian>(p, lwz_11_3 + 0);
-         p += 4;
-         write_insn<big_endian>(p, lwz_12_3 + 4);
-         p += 4;
-         write_insn<big_endian>(p, mr_0_3);
-         p += 4;
-         write_insn<big_endian>(p, cmpwi_11_0);
+         write_insn<big_endian>(p, mflr_11);
          p += 4;
-         write_insn<big_endian>(p, add_3_12_2);
-         p += 4;
-         write_insn<big_endian>(p, beqlr);
-         p += 4;
-         write_insn<big_endian>(p, mr_3_0);
-         p += 4;
-         write_insn<big_endian>(p, nop);
+         write_insn<big_endian>(p, (std_11_1 + this->targ_->stk_linker()));
          p += 4;
        }
-      *pp = p;
-      return true;
     }
-  return false;
-}
-
-// Emit the tail of a __tls_get_addr_opt plt call stub.
-
-template<int size, bool big_endian>
-bool
-Stub_table<size, big_endian>::build_tls_opt_tail(
-     unsigned char* p,
-     typename Plt_stub_entries::const_iterator cs)
-{
-  if (size == 64
-      && cs->second.r2save_
-      && !cs->second.localentry0_
-      && this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+  else
     {
-      write_insn<big_endian>(p, bctrl);
+      write_insn<big_endian>(p, lwz_11_3 + 0);
       p += 4;
-      write_insn<big_endian>(p, ld_2_1 + this->targ_->stk_toc());
+      write_insn<big_endian>(p, lwz_12_3 + 4);
       p += 4;
-      write_insn<big_endian>(p, ld_11_1 + this->targ_->stk_linker());
+      write_insn<big_endian>(p, mr_0_3);
       p += 4;
-      write_insn<big_endian>(p, mtlr_11);
+      write_insn<big_endian>(p, cmpwi_11_0);
+      p += 4;
+      write_insn<big_endian>(p, add_3_12_2);
+      p += 4;
+      write_insn<big_endian>(p, beqlr);
+      p += 4;
+      write_insn<big_endian>(p, mr_3_0);
+      p += 4;
+      write_insn<big_endian>(p, nop);
       p += 4;
-      write_insn<big_endian>(p, blr);
-      return true;
     }
-  return false;
+  *pp = p;
+}
+
+// Emit the tail of a __tls_get_addr_opt plt call stub.
+
+template<int size, bool big_endian>
+void
+Stub_table<size, big_endian>::build_tls_opt_tail(unsigned char* p)
+{
+  write_insn<big_endian>(p, bctrl);
+  p += 4;
+  write_insn<big_endian>(p, ld_2_1 + this->targ_->stk_toc());
+  p += 4;
+  write_insn<big_endian>(p, ld_11_1 + this->targ_->stk_linker());
+  p += 4;
+  write_insn<big_endian>(p, mtlr_11);
+  p += 4;
+  write_insn<big_endian>(p, blr);
 }
 
 // Emit pc-relative plt call stub code.
@@ -5949,7 +6011,7 @@ build_notoc_offset(unsigned char* p, uint64_t off, bool load)
 template<int size, bool big_endian>
 unsigned int
 Stub_table<size, big_endian>::plt_call_size(
-    typename Plt_stub_entries::const_iterator p) const
+    typename Plt_stub_entries::iterator p) const
 {
   if (size == 32)
     {
@@ -5961,77 +6023,122 @@ Stub_table<size, big_endian>::plt_call_size(
   const Output_data_plt_powerpc<size, big_endian>* plt;
   uint64_t plt_addr = this->plt_off(p, &plt);
   plt_addr += plt->address();
-  unsigned int bytes = 0;
-  const Symbol* gsym = p->first.sym_;
-  if (this->targ_->is_tls_get_addr_opt(gsym))
+  if (this->targ_->power10_stubs()
+      && this->targ_->power10_stubs_auto())
     {
-      if (p->second.r2save_ && !p->second.localentry0_)
-       bytes = 13 * 4;
-      else
-       bytes = 7 * 4;
+      unsigned int bytes = 0;
+      if (p->second.notoc_)
+       {
+         if (this->targ_->is_tls_get_addr_opt(p->first.sym_))
+           bytes = 7 * 4;
+         uint64_t from = this->stub_address() + p->second.off_ + bytes;
+         uint64_t odd = from & 4;
+         uint64_t off = plt_addr - from;
+         if (off - odd + (1ULL << 33) < 1ULL << 34)
+           bytes += odd + 4 * 4;
+         else if (off - (8 - odd) + (0x20002ULL << 32) < 0x40004ULL << 32)
+           bytes += 7 * 4;
+         else
+           bytes += 8 * 4;
+         bytes = this->plt_call_align(bytes);
+       }
+      unsigned int tail = 0;
+      if (p->second.toc_)
+       {
+         p->second.tocoff_ = bytes;
+         if (this->targ_->is_tls_get_addr_opt(p->first.sym_))
+           {
+             bytes += 7 * 4;
+             if (p->second.r2save_ && !p->second.localentry0_)
+               {
+                 bytes += 2 * 4;
+                 tail = 4 * 4;
+               }
+           }
+         if (p->second.r2save_)
+           bytes += 4;
+         uint64_t got_addr
+           = this->targ_->got_section()->output_section()->address();
+         const Powerpc_relobj<size, big_endian>* ppcobj = static_cast
+           <const Powerpc_relobj<size, big_endian>*>(p->first.object_);
+         got_addr += ppcobj->toc_base_offset();
+         uint64_t off = plt_addr - got_addr;
+         bytes += 3 * 4 + 4 * (ha(off) != 0);
+       }
+      return bytes + tail;
     }
-
-  if (p->second.r2save_)
-    bytes += 4;
-
-  if (this->targ_->power10_stubs())
+  else
     {
-      uint64_t from = this->stub_address() + p->second.off_ + bytes;
-      if (bytes > 8 * 4)
-       from -= 4 * 4;
-      uint64_t odd = from & 4;
-      uint64_t off = plt_addr - from;
-      if (off - odd + (1ULL << 33) < 1ULL << 34)
-       bytes += odd + 4 * 4;
-      else if (off - (8 - odd) + (0x20002ULL << 32) < 0x40004ULL << 32)
-       bytes += 7 * 4;
-      else
-       bytes += 8 * 4;
-      return bytes;
-    }
+      unsigned int bytes = 0;
+      unsigned int tail = 0;
+      if (this->targ_->is_tls_get_addr_opt(p->first.sym_))
+       {
+         bytes = 7 * 4;
+         if (p->second.r2save_ && !p->second.localentry0_)
+           {
+             bytes = 9 * 4;
+             tail = 4 * 4;
+           }
+       }
 
-  if (p->second.notoc_)
-    {
-      uint64_t from = this->stub_address() + p->second.off_ + bytes + 2 * 4;
-      if (bytes > 32)
-       from -= 4 * 4;
-      uint64_t off = plt_addr - from;
-      if (off + 0x8000 < 0x10000)
-       bytes += 7 * 4;
-      else if (off + 0x80008000ULL < 0x100000000ULL)
-       bytes += 8 * 4;
-      else
+      if (p->second.r2save_)
+       bytes += 4;
+
+      if (this->targ_->power10_stubs())
        {
-         bytes += 8 * 4;
-         if (off + 0x800000000000ULL >= 0x1000000000000ULL
-             && ((off >> 32) & 0xffff) != 0)
-           bytes += 4;
-         if (((off >> 32) & 0xffffffffULL) != 0)
-           bytes += 4;
-         if (hi(off) != 0)
-           bytes += 4;
-         if (l(off) != 0)
-           bytes += 4;
+         uint64_t from = this->stub_address() + p->second.off_ + bytes;
+         uint64_t odd = from & 4;
+         uint64_t off = plt_addr - from;
+         if (off - odd + (1ULL << 33) < 1ULL << 34)
+           bytes += odd + 4 * 4;
+         else if (off - (8 - odd) + (0x20002ULL << 32) < 0x40004ULL << 32)
+           bytes += 7 * 4;
+         else
+           bytes += 8 * 4;
+         return bytes + tail;
        }
-      return bytes;
-    }
 
-  uint64_t got_addr = this->targ_->got_section()->output_section()->address();
-  const Powerpc_relobj<size, big_endian>* ppcobj = static_cast
-    <const Powerpc_relobj<size, big_endian>*>(p->first.object_);
-  got_addr += ppcobj->toc_base_offset();
-  uint64_t off = plt_addr - got_addr;
-  bytes += 3 * 4 + 4 * (ha(off) != 0);
-  if (this->targ_->abiversion() < 2)
-    {
-      bool static_chain = parameters->options().plt_static_chain();
-      bool thread_safe = this->targ_->plt_thread_safe();
-      bytes += (4
-               + 4 * static_chain
-               + 8 * thread_safe
-               + 4 * (ha(off + 8 + 8 * static_chain) != ha(off)));
+      if (p->second.notoc_)
+       {
+         uint64_t from = this->stub_address() + p->second.off_ + bytes + 2 * 4;
+         uint64_t off = plt_addr - from;
+         if (off + 0x8000 < 0x10000)
+           bytes += 7 * 4;
+         else if (off + 0x80008000ULL < 0x100000000ULL)
+           bytes += 8 * 4;
+         else
+           {
+             bytes += 8 * 4;
+             if (off + 0x800000000000ULL >= 0x1000000000000ULL
+                 && ((off >> 32) & 0xffff) != 0)
+               bytes += 4;
+             if (((off >> 32) & 0xffffffffULL) != 0)
+               bytes += 4;
+             if (hi(off) != 0)
+               bytes += 4;
+             if (l(off) != 0)
+               bytes += 4;
+           }
+         return bytes + tail;
+       }
+
+      uint64_t got_addr = this->targ_->got_section()->output_section()->address();
+      const Powerpc_relobj<size, big_endian>* ppcobj = static_cast
+       <const Powerpc_relobj<size, big_endian>*>(p->first.object_);
+      got_addr += ppcobj->toc_base_offset();
+      uint64_t off = plt_addr - got_addr;
+      bytes += 3 * 4 + 4 * (ha(off) != 0);
+      if (this->targ_->abiversion() < 2)
+       {
+         bool static_chain = parameters->options().plt_static_chain();
+         bool thread_safe = this->targ_->plt_thread_safe();
+         bytes += (4
+                   + 4 * static_chain
+                   + 8 * thread_safe
+                   + 4 * (ha(off + 8 + 8 * static_chain) != ha(off)));
+       }
+      return bytes + tail;
     }
-  return bytes;
 }
 
 // Return long branch stub size.
@@ -6039,7 +6146,7 @@ Stub_table<size, big_endian>::plt_call_size(
 template<int size, bool big_endian>
 unsigned int
 Stub_table<size, big_endian>::branch_stub_size(
-     typename Branch_stub_entries::const_iterator p,
+     typename Branch_stub_entries::iterator p,
      bool* need_lt)
 {
   Address loc = this->stub_address() + this->last_plt_size_ + p->second.off_;
@@ -6053,46 +6160,57 @@ Stub_table<size, big_endian>::branch_stub_size(
     }
 
   uint64_t off = p->first.dest_ - loc;
+  unsigned int bytes = 0;
   if (p->second.notoc_)
     {
       if (this->targ_->power10_stubs())
        {
          Address odd = loc & 4;
          if (off + (1 << 25) < 2 << 25)
-           return odd + 12;
-         if (off - odd + (1ULL << 33) < 1ULL << 34)
-           return odd + 16;
-         if (off - (8 - odd) + (0x20002ULL << 32) < 0x40004ULL << 32)
-           return 28;
-         return 32;
-       }
-      off -= 8;
-      if (off + 0x8000 < 0x10000)
-       return 24;
-      if (off + 0x80008000ULL < 0x100000000ULL)
-       {
-         if (off + 24 + (1 << 25) < 2 << 25)
-           return 28;
-         return 32;
-       }
-      unsigned int bytes = 32;
-      if (off + 0x800000000000ULL >= 0x1000000000000ULL
-         && ((off >> 32) & 0xffff) != 0)
-       bytes += 4;
-      if (((off >> 32) & 0xffffffffULL) != 0)
-       bytes += 4;
-      if (hi(off) != 0)
-       bytes += 4;
-      if (l(off) != 0)
-       bytes += 4;
-      return bytes;
+           bytes = odd + 12;
+         else if (off - odd + (1ULL << 33) < 1ULL << 34)
+           bytes = odd + 16;
+         else if (off - (8 - odd) + (0x20002ULL << 32) < 0x40004ULL << 32)
+           bytes = 28;
+         else
+           bytes = 32;
+         if (!(p->second.toc_ && this->targ_->power10_stubs_auto()))
+           return bytes;
+         p->second.tocoff_ = bytes;
+       }
+      else
+       {
+         off -= 8;
+         if (off + 0x8000 < 0x10000)
+           return 24;
+         if (off + 0x80008000ULL < 0x100000000ULL)
+           {
+             if (off + 24 + (1 << 25) < 2 << 25)
+               return 28;
+             return 32;
+           }
+
+         bytes = 32;
+         if (off + 0x800000000000ULL >= 0x1000000000000ULL
+             && ((off >> 32) & 0xffff) != 0)
+           bytes += 4;
+         if (((off >> 32) & 0xffffffffULL) != 0)
+           bytes += 4;
+         if (hi(off) != 0)
+           bytes += 4;
+         if (l(off) != 0)
+           bytes += 4;
+         return bytes;
+       }
     }
 
+  off += elfcpp::ppc64_decode_local_entry(p->second.other_);
   if (off + (1 << 25) < 2 << 25)
-    return 4;
-  if (!this->targ_->power10_stubs())
+    return bytes + 4;
+  if (!this->targ_->power10_stubs()
+      || (p->second.toc_ && this->targ_->power10_stubs_auto()))
     *need_lt = true;
-  return 16;
+  return bytes + 16;
 }
 
 template<int size, bool big_endian>
@@ -6128,6 +6246,10 @@ Stub_table<size, big_endian>::do_write(Output_file* of)
   if (size == 64
       && this->targ_->power10_stubs())
     {
+      const Output_data_got_powerpc<size, big_endian>* got
+       = this->targ_->got_section();
+      Address got_os_addr = got->output_section()->address();
+
       if (!this->plt_call_stubs_.empty())
        {
          // Write out plt call stubs.
@@ -6137,22 +6259,94 @@ Stub_table<size, big_endian>::do_write(Output_file* of)
               ++cs)
            {
              p = oview + cs->second.off_;
-             this->build_tls_opt_head(&p, cs);
-             if (cs->second.r2save_)
-               {
-                 write_insn<big_endian>(p, std_2_1 + this->targ_->stk_toc());
-                 p += 4;
-               }
              const Output_data_plt_powerpc<size, big_endian>* plt;
              Address pltoff = this->plt_off(cs, &plt);
              Address plt_addr = pltoff + plt->address();
-             Address from = this->stub_address() + (p - oview);
-             Address delta = plt_addr - from;
-             p = build_power10_offset<big_endian>(p, delta, from & 4, true);
-             write_insn<big_endian>(p, mtctr_12);
-             p += 4;
-             if (!this->build_tls_opt_tail(p, cs))
-               write_insn<big_endian>(p, bctr);
+             if (this->targ_->power10_stubs_auto())
+               {
+                 if (cs->second.notoc_)
+                   {
+                     if (this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+                       this->build_tls_opt_head(&p, false);
+                     Address from = this->stub_address() + (p - oview);
+                     Address delta = plt_addr - from;
+                     p = build_power10_offset<big_endian>(p, delta, from & 4,
+                                                          true);
+                     write_insn<big_endian>(p, mtctr_12);
+                     p += 4;
+                     write_insn<big_endian>(p, bctr);
+                     p += 4;
+                     p = oview + this->plt_call_align(p - oview);
+                   }
+                 if (cs->second.toc_)
+                   {
+                     if (this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+                       {
+                         bool save_lr
+                           = cs->second.r2save_ && !cs->second.localentry0_;
+                         this->build_tls_opt_head(&p, save_lr);
+                       }
+                     const Powerpc_relobj<size, big_endian>* ppcobj
+                       = static_cast<const Powerpc_relobj<size, big_endian>*>(
+                           cs->first.object_);
+                     Address got_addr = got_os_addr + ppcobj->toc_base_offset();
+                     Address off = plt_addr - got_addr;
+
+                     if (off + 0x80008000 > 0xffffffff || (off & 7) != 0)
+                       this->plt_error(cs->first);
+
+                     if (cs->second.r2save_)
+                       {
+                         write_insn<big_endian>(p, std_2_1 + this->targ_->stk_toc());
+                         p += 4;
+                       }
+                     if (ha(off) != 0)
+                       {
+                         write_insn<big_endian>(p, addis_12_2 + ha(off));
+                         p += 4;
+                         write_insn<big_endian>(p, ld_12_12 + l(off));
+                         p += 4;
+                       }
+                     else
+                       {
+                         write_insn<big_endian>(p, ld_12_2 + l(off));
+                         p += 4;
+                       }
+                     write_insn<big_endian>(p, mtctr_12);
+                     p += 4;
+                     if (cs->second.r2save_
+                         && !cs->second.localentry0_
+                         && this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+                       this->build_tls_opt_tail(p);
+                     else
+                       write_insn<big_endian>(p, bctr);
+                   }
+               }
+             else
+               {
+                 if (this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+                   {
+                     bool save_lr
+                       = cs->second.r2save_ && !cs->second.localentry0_;
+                     this->build_tls_opt_head(&p, save_lr);
+                   }
+                 if (cs->second.r2save_)
+                   {
+                     write_insn<big_endian>(p, std_2_1 + this->targ_->stk_toc());
+                     p += 4;
+                   }
+                 Address from = this->stub_address() + (p - oview);
+                 Address delta = plt_addr - from;
+                 p = build_power10_offset<big_endian>(p, delta, from & 4, true);
+                 write_insn<big_endian>(p, mtctr_12);
+                 p += 4;
+                 if (cs->second.r2save_
+                     && !cs->second.localentry0_
+                     && this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+                   this->build_tls_opt_tail(p);
+                 else
+                   write_insn<big_endian>(p, bctr);
+               }
            }
        }
 
@@ -6168,19 +6362,79 @@ Stub_table<size, big_endian>::do_write(Output_file* of)
          p = oview + off;
          Address loc = this->stub_address() + off;
          Address delta = bs->first.dest_ - loc;
-         if (bs->second.notoc_ || delta + (1 << 25) >= 2 << 25)
+         if (this->targ_->power10_stubs_auto())
            {
-             unsigned char* startp = p;
-             p = build_power10_offset<big_endian>(p, delta, loc & 4, false);
-             delta -= p - startp;
+             if (bs->second.notoc_)
+               {
+                 unsigned char* startp = p;
+                 p = build_power10_offset<big_endian>(p, delta,
+                                                      loc & 4, false);
+                 delta -= p - startp;
+                 startp = p;
+                 if (delta + (1 << 25) < 2 << 25)
+                   write_insn<big_endian>(p, b | (delta & 0x3fffffc));
+                 else
+                   {
+                     write_insn<big_endian>(p, mtctr_12);
+                     p += 4;
+                     write_insn<big_endian>(p, bctr);
+                   }
+                 p += 4;
+                 delta -= p - startp;
+               }
+             if (bs->second.toc_)
+               {
+                 delta += elfcpp::ppc64_decode_local_entry(bs->second.other_);
+                 if (delta + (1 << 25) >= 2 << 25)
+                   {
+                     Address brlt_addr
+                       = this->targ_->find_branch_lookup_table(bs->first.dest_);
+                     gold_assert(brlt_addr != invalid_address);
+                     brlt_addr += this->targ_->brlt_section()->address();
+                     Address got_addr = got_os_addr + bs->first.toc_base_off_;
+                     Address brltoff = brlt_addr - got_addr;
+                     if (ha(brltoff) == 0)
+                       {
+                         write_insn<big_endian>(p, ld_12_2 + l(brltoff));
+                         p += 4;
+                       }
+                     else
+                       {
+                         write_insn<big_endian>(p, addis_12_2 + ha(brltoff));
+                         p += 4;
+                         write_insn<big_endian>(p, ld_12_12 + l(brltoff));
+                         p += 4;
+                       }
+                   }
+                 if (delta + (1 << 25) < 2 << 25)
+                   write_insn<big_endian>(p, b | (delta & 0x3fffffc));
+                 else
+                   {
+                     write_insn<big_endian>(p, mtctr_12);
+                     p += 4;
+                     write_insn<big_endian>(p, bctr);
+                   }
+               }
            }
-         if (delta + (1 << 25) < 2 << 25)
-           write_insn<big_endian>(p, b | (delta & 0x3fffffc));
          else
            {
-             write_insn<big_endian>(p, mtctr_12);
-             p += 4;
-             write_insn<big_endian>(p, bctr);
+             if (!bs->second.notoc_)
+               delta += elfcpp::ppc64_decode_local_entry(bs->second.other_);
+             if (bs->second.notoc_ || delta + (1 << 25) >= 2 << 25)
+               {
+                 unsigned char* startp = p;
+                 p = build_power10_offset<big_endian>(p, delta,
+                                                      loc & 4, false);
+                 delta -= p - startp;
+               }
+             if (delta + (1 << 25) < 2 << 25)
+               write_insn<big_endian>(p, b | (delta & 0x3fffffc));
+             else
+               {
+                 write_insn<big_endian>(p, mtctr_12);
+                 p += 4;
+                 write_insn<big_endian>(p, bctr);
+               }
            }
        }
     }
@@ -6204,7 +6458,11 @@ Stub_table<size, big_endian>::do_write(Output_file* of)
              Address plt_addr = pltoff + plt->address();
 
              p = oview + cs->second.off_;
-             this->build_tls_opt_head(&p, cs);
+             if (this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+               {
+                 bool save_lr = cs->second.r2save_ && !cs->second.localentry0_;
+                 this->build_tls_opt_head(&p, save_lr);
+               }
              if (cs->second.r2save_)
                {
                  write_insn<big_endian>(p, std_2_1 + this->targ_->stk_toc());
@@ -6241,7 +6499,11 @@ Stub_table<size, big_endian>::do_write(Output_file* of)
                }
              write_insn<big_endian>(p, mtctr_12);
              p += 4;
-             if (!this->build_tls_opt_tail(p, cs))
+             if (cs->second.r2save_
+                 && !cs->second.localentry0_
+                 && this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+               this->build_tls_opt_tail(p);
+             else
                write_insn<big_endian>(p, bctr);
            }
        }
@@ -6292,8 +6554,12 @@ Stub_table<size, big_endian>::do_write(Output_file* of)
                }
 
              p = oview + cs->second.off_;
-             if (this->build_tls_opt_head(&p, cs))
-               use_fake_dep = thread_safe;
+             if (this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+               {
+                 bool save_lr = cs->second.r2save_ && !cs->second.localentry0_;
+                 this->build_tls_opt_head(&p, save_lr);
+                 use_fake_dep = thread_safe;
+               }
              if (cs->second.r2save_)
                {
                  write_insn<big_endian>(p, std_2_1 + this->targ_->stk_toc());
@@ -6355,8 +6621,10 @@ Stub_table<size, big_endian>::do_write(Output_file* of)
                  write_insn<big_endian>(p, ld_2_2 + l(off + 8));
                  p += 4;
                }
-             if (this->build_tls_opt_tail(p, cs))
-               ;
+             if (cs->second.r2save_
+                 && !cs->second.localentry0_
+                 && this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+               this->build_tls_opt_tail(p);
              else if (thread_safe && !use_fake_dep)
                {
                  write_insn<big_endian>(p, cmpldi_2_0);
@@ -6382,6 +6650,8 @@ Stub_table<size, big_endian>::do_write(Output_file* of)
          p = oview + off;
          Address loc = this->stub_address() + off;
          Address delta = bs->first.dest_ - loc;
+         if (!bs->second.notoc_)
+           delta += elfcpp::ppc64_decode_local_entry(bs->second.other_);
          if (bs->second.notoc_)
            {
              unsigned char* startp = p;
@@ -6437,7 +6707,8 @@ Stub_table<size, big_endian>::do_write(Output_file* of)
              plt_addr += plt->address();
 
              p = oview + cs->second.off_;
-             this->build_tls_opt_head(&p, cs);
+             if (this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+               this->build_tls_opt_head(&p, false);
              if (parameters->options().output_is_position_independent())
                {
                  Address got_addr;
@@ -6577,15 +6848,25 @@ Output_data_glink<size, big_endian>::do_write(Output_file* of)
            }
          else
            {
+             if (this->targ_->has_localentry0())
+               {
+                 write_insn<big_endian>(p, std_2_1 + 24),      p += 4;
+               }
              write_insn<big_endian>(p, mflr_0),                p += 4;
              write_insn<big_endian>(p, bcl_20_31),             p += 4;
              write_insn<big_endian>(p, mflr_11),               p += 4;
-             write_insn<big_endian>(p, std_2_1 + 24),          p += 4;
-             write_insn<big_endian>(p, ld_2_11 + l(-16)),      p += 4;
              write_insn<big_endian>(p, mtlr_0),                p += 4;
+             if (this->targ_->has_localentry0())
+               {
+                 write_insn<big_endian>(p, ld_0_11 + l(-20)),  p += 4;
+               }
+             else
+               {
+                 write_insn<big_endian>(p, ld_0_11 + l(-16)),  p += 4;
+               }
              write_insn<big_endian>(p, sub_12_12_11),          p += 4;
-             write_insn<big_endian>(p, add_11_2_11),           p += 4;
-             write_insn<big_endian>(p, addi_0_12 + l(-48)),    p += 4;
+             write_insn<big_endian>(p, add_11_0_11),           p += 4;
+             write_insn<big_endian>(p, addi_0_12 + l(-44)),    p += 4;
              write_insn<big_endian>(p, ld_12_11 + 0),          p += 4;
              write_insn<big_endian>(p, srdi_0_0_2),            p += 4;
              write_insn<big_endian>(p, mtctr_12),              p += 4;
@@ -8191,7 +8472,7 @@ Target_powerpc<size, big_endian>::Scan::local(
              uint32_t insn = elfcpp::Swap<32, big_endian>::readval(view + off);
              if ((insn & ((0x3fu << 26) | 0x1f << 16))
                  != ((15u << 26) | ((size == 32 ? 2 : 13) << 16)))
-               target->set_tprel_opt(false);
+               target->set_no_tprel_opt();
            }
        }
       break;
@@ -8206,7 +8487,7 @@ Target_powerpc<size, big_endian>::Scan::local(
        break;
       // Fall through.
     case elfcpp::R_POWERPC_TPREL16_HI:
-      target->set_tprel_opt(false);
+      target->set_no_tprel_opt();
       break;
     default:
       break;
@@ -8230,7 +8511,7 @@ Target_powerpc<size, big_endian>::Scan::local(
     case elfcpp::R_PPC64_GOT_TLSLD_PCREL34:
     case elfcpp::R_PPC64_GOT_DTPREL_PCREL34:
     case elfcpp::R_PPC64_GOT_TPREL_PCREL34:
-      target->set_power10_stubs();
+      target->set_power10_relocs();
       break;
     default:
       break;
@@ -8988,7 +9269,7 @@ Target_powerpc<size, big_endian>::Scan::global(
              uint32_t insn = elfcpp::Swap<32, big_endian>::readval(view + off);
              if ((insn & ((0x3fu << 26) | 0x1f << 16))
                  != ((15u << 26) | ((size == 32 ? 2 : 13) << 16)))
-               target->set_tprel_opt(false);
+               target->set_no_tprel_opt();
            }
        }
       break;
@@ -9003,7 +9284,7 @@ Target_powerpc<size, big_endian>::Scan::global(
        break;
       // Fall through.
     case elfcpp::R_POWERPC_TPREL16_HI:
-      target->set_tprel_opt(false);
+      target->set_no_tprel_opt();
       break;
     default:
       break;
@@ -9027,7 +9308,7 @@ Target_powerpc<size, big_endian>::Scan::global(
     case elfcpp::R_PPC64_GOT_TLSLD_PCREL34:
     case elfcpp::R_PPC64_GOT_DTPREL_PCREL34:
     case elfcpp::R_PPC64_GOT_TPREL_PCREL34:
-      target->set_power10_stubs();
+      target->set_power10_relocs();
       break;
     default:
       break;
@@ -9369,6 +9650,13 @@ Target_powerpc<size, big_endian>::scan_relocs(
     needs_special_offset_handling,
     local_symbol_count,
     plocal_symbols);
+
+  if (this->plt_localentry0_ && this->power10_relocs_)
+    {
+      gold_warning(_("--plt-localentry is incompatible with "
+                    "power10 pc-relative code"));
+      this->plt_localentry0_ = false;
+    }
 }
 
 // Functor class for processing the global symbol table.
@@ -10118,6 +10406,7 @@ Target_powerpc<size, big_endian>::Relocate::relocate(
        ? gsym->use_plt_offset(Scan::get_reference_flags(r_type, target))
        : object->local_has_plt_offset(r_sym));
   if (has_plt_offset
+      && !is_got_reloc(r_type)
       && !is_plt16_reloc<size>(r_type)
       && r_type != elfcpp::R_PPC64_PLT_PCREL34
       && r_type != elfcpp::R_PPC64_PLT_PCREL34_NOTOC
@@ -10175,19 +10464,29 @@ Target_powerpc<size, big_endian>::Relocate::relocate(
                  const int reloc_size = elfcpp::Elf_sizes<size>::rela_size;
                  elfcpp::Shdr<size, big_endian> shdr(relinfo->reloc_shdr);
                  size_t reloc_count = shdr.get_sh_size() / reloc_size;
+                 if (size == 64
+                     && r_type != elfcpp::R_PPC64_REL24_NOTOC)
+                   value += ent->tocoff_;
                  if (size == 64
                      && ent->r2save_
-                     && r_type == elfcpp::R_PPC64_REL24_NOTOC)
-                   value += 4;
-                 else if (size == 64
-                          && ent->r2save_
-                          && relnum < reloc_count - 1)
+                     && !(gsym != NULL
+                          && target->is_tls_get_addr_opt(gsym)))
                    {
-                     Reltype next_rela(preloc + reloc_size);
-                     if (elfcpp::elf_r_type<size>(next_rela.get_r_info())
-                         == elfcpp::R_PPC64_TOCSAVE
-                         && next_rela.get_r_offset() == rela.get_r_offset() + 4)
-                       value += 4;
+                     if (r_type == elfcpp::R_PPC64_REL24_NOTOC)
+                       {
+                         if (!(target->power10_stubs()
+                               && target->power10_stubs_auto()))
+                           value += 4;
+                       }
+                     else if (relnum < reloc_count - 1)
+                       {
+                         Reltype next_rela(preloc + reloc_size);
+                         if (elfcpp::elf_r_type<size>(next_rela.get_r_info())
+                             == elfcpp::R_PPC64_TOCSAVE
+                             && (next_rela.get_r_offset()
+                                 == rela.get_r_offset() + 4))
+                           value += 4;
+                       }
                    }
                  localentry0 = ent->localentry0_;
                  has_stub_value = true;
@@ -10250,13 +10549,7 @@ Target_powerpc<size, big_endian>::Relocate::relocate(
       elfcpp::Swap<32, big_endian>::writeval(iview + 1, pnop & 0xffffffff);
       r_type = elfcpp::R_POWERPC_NONE;
     }
-  else if (r_type == elfcpp::R_POWERPC_GOT16
-          || r_type == elfcpp::R_POWERPC_GOT16_LO
-          || r_type == elfcpp::R_POWERPC_GOT16_HI
-          || r_type == elfcpp::R_POWERPC_GOT16_HA
-          || r_type == elfcpp::R_PPC64_GOT16_DS
-          || r_type == elfcpp::R_PPC64_GOT16_LO_DS
-          || r_type == elfcpp::R_PPC64_GOT_PCREL34)
+  else if (is_got_reloc(r_type))
     {
       if (gsym != NULL)
        {
@@ -10758,14 +11051,15 @@ Target_powerpc<size, big_endian>::Relocate::relocate(
                || r_type == elfcpp::R_POWERPC_PLT16_HA)))
        addend = rela.get_r_addend();
       value = psymval->value(object, addend);
+      unsigned int local_ent = 0;
       if (size == 64 && is_branch_reloc<size>(r_type))
        {
          if (target->abiversion() >= 2)
            {
              if (gsym != NULL)
-               value += object->ppc64_local_entry_offset(gsym);
+               local_ent = object->ppc64_local_entry_offset(gsym);
              else
-               value += object->ppc64_local_entry_offset(r_sym);
+               local_ent = object->ppc64_local_entry_offset(r_sym);
            }
          else
            {
@@ -10774,9 +11068,9 @@ Target_powerpc<size, big_endian>::Relocate::relocate(
                                        &value, &dest_shndx);
            }
        }
-      Address max_branch_offset = max_branch_delta<size>(r_type);
-      if (max_branch_offset != 0
-         && (value - address + max_branch_offset >= 2 * max_branch_offset
+      Address max_branch = max_branch_delta<size>(r_type);
+      if (max_branch != 0
+         && (value + local_ent - address + max_branch >= 2 * max_branch
              || (size == 64
                  && r_type == elfcpp::R_PPC64_REL24_NOTOC
                  && (gsym != NULL
@@ -10795,12 +11089,20 @@ Target_powerpc<size, big_endian>::Relocate::relocate(
                    value = (value - target->savres_section()->address()
                             + stub_table->branch_size());
                  else
-                   value = (stub_table->stub_address() + stub_table->plt_size()
-                            + ent->off_);
+                   {
+                     value = (stub_table->stub_address()
+                              + stub_table->plt_size()
+                              + ent->off_);
+                     if (size == 64
+                         && r_type != elfcpp::R_PPC64_REL24_NOTOC)
+                       value += ent->tocoff_;
+                   }
                  has_stub_value = true;
                }
            }
        }
+      if (!has_stub_value)
+       value += local_ent;
     }
 
   switch (r_type)
index 67e2b1bb8010c32739a1337c1eb0e20347a61745..611c892b23f9c4a21aa8e246bf122e41c035a742 100755 (executable)
@@ -45,7 +45,7 @@ match 'lea.*-0x200\(%esp\),' split_i386_1.stdout
 match 'stc' split_i386_2.stdout
 match 'call.*__morestack_non_split>?$' split_i386_2.stdout
 nomatch 'call.*__morestack>?$' split_i386_2.stdout
-match 'lea.*-0x4200\(%esp\),' split_i386_2.stdout
+match 'lea.*-0x100200\(%esp\),' split_i386_2.stdout
 
 match 'failed to match' split_i386_3.stdout
 
index aefdda5647f888cbbeda17943169c05490c24212..bf395c97315bf6d020467124575fe0b385c5aa35 100755 (executable)
@@ -44,9 +44,9 @@ match 'callq.*__morestack>?$' split_x32_1.stdout
 match 'lea.*-0x200\(%rsp\),' split_x32_1.stdout
 
 match 'stc' split_x32_2.stdout
-match 'callq.*__morestack_non_split>?$' split_x32_2.stdout
-nomatch 'callq.*__morestack>?$' split_x32_2.stdout
-match 'lea.*-0x4200\(%rsp\),' split_x32_2.stdout
+match 'call.*__morestack_non_split>?$' split_x32_2.stdout
+nomatch 'call.*__morestack>?$' split_x32_2.stdout
+match 'lea.*-0x100200\(%rsp\),' split_x32_2.stdout
 
 match 'failed to match' split_x32_3.stdout
 
index 33bb4892ed6352b01ae18d83002d54599157d4fe..a91009b45a5c1273d039163bb683308fd964a4b4 100755 (executable)
@@ -43,9 +43,9 @@ match 'callq.*__morestack>?$' split_x86_64_1.stdout
 match 'lea.*-0x200\(%rsp\),' split_x86_64_1.stdout
 
 match 'stc' split_x86_64_2.stdout
-match 'callq.*__morestack_non_split>?$' split_x86_64_2.stdout
-nomatch 'callq.*__morestack>?$' split_x86_64_2.stdout
-match 'lea.*-0x4200\(%rsp\),' split_x86_64_2.stdout
+match 'call.*__morestack_non_split>?$' split_x86_64_2.stdout
+nomatch 'call.*__morestack>?$' split_x86_64_2.stdout
+match 'lea.*-0x100200\(%rsp\),' split_x86_64_2.stdout
 
 match 'failed to match' split_x86_64_3.stdout
 
index acdd85fc4df7a46d38f1ca8c4cc48a9ec69fcd10..5997c26899cfa313c452f904d51bfaff19ebae07 100644 (file)
@@ -1,3 +1,15 @@
+2020-11-15  Mark Wielaard  <mark@klomp.org>
+
+       Backport from the mainline:
+       2020-09-23  Mark Wielaard  <mark@klomp.org>
+
+       Sync with GCC
+       * dwarf2.def: Add DWARF5 Unit type header encoding macros
+       DW_UT_FIRST, DW_UT and DW_UT_END.
+       * dwarf2.h (enum dwarf_unit_type): Removed and define using
+       DW_UT_FIRST, DW_UT and DW_UT_END macros.
+       (get_DW_UT_name): New function declaration.
+
 2020-07-22  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR ld/26262
index d8a8cce794780f343c2b02a32157a5c443d4ca13..13825a3eef7ea5ce3aac790e1082c571cad340ad 100644 (file)
@@ -805,3 +805,14 @@ DW_IDX (DW_IDX_hi_user, 0x3fff)
 DW_IDX (DW_IDX_GNU_internal, 0x2000)
 DW_IDX (DW_IDX_GNU_external, 0x2001)
 DW_END_IDX
+
+/* DWARF5 Unit type header encodings  */
+DW_FIRST_UT (DW_UT_compile, 0x01)
+DW_UT (DW_UT_type, 0x02)
+DW_UT (DW_UT_partial, 0x03)
+DW_UT (DW_UT_skeleton, 0x04)
+DW_UT (DW_UT_split_compile, 0x05)
+DW_UT (DW_UT_split_type, 0x06)
+DW_UT (DW_UT_lo_user, 0x80)
+DW_UT (DW_UT_hi_user, 0xff)
+DW_END_UT
index 882453dce08707b8f39f08c0946f929a3a4e528c..3f271fb0f7aedc6c753b3861a88f11a5a4b6e59e 100644 (file)
@@ -55,6 +55,7 @@
 #define DW_CFA_DUP(name, value) , name = value
 #define DW_IDX(name, value) , name = value
 #define DW_IDX_DUP(name, value) , name = value
+#define DW_UT(name, value) , name = value
 
 #define DW_FIRST_TAG(name, value) enum dwarf_tag { \
   name = value
@@ -77,6 +78,9 @@
 #define DW_FIRST_IDX(name, value) enum dwarf_name_index_attribute { \
   name = value
 #define DW_END_IDX };
+#define DW_FIRST_UT(name, value) enum dwarf_unit_type { \
+  name = value
+#define DW_END_UT };
 
 #include "dwarf2.def"
 
@@ -94,6 +98,8 @@
 #undef DW_END_CFA
 #undef DW_FIRST_IDX
 #undef DW_END_IDX
+#undef DW_FIRST_UT
+#undef DW_END_UT
 
 #undef DW_TAG
 #undef DW_TAG_DUP
 #undef DW_CFA_DUP
 #undef DW_IDX
 #undef DW_IDX_DUP
+#undef DW_UT
 
 /* Flag that tells whether entry has a child or not.  */
 #define DW_children_no   0
@@ -450,19 +457,6 @@ enum dwarf_range_list_entry
     DW_RLE_start_end = 0x06,
     DW_RLE_start_length = 0x07
   };
-
-/* Unit types in unit_type unit header field.  */
-enum dwarf_unit_type
-  {
-    DW_UT_compile = 0x01,
-    DW_UT_type = 0x02,
-    DW_UT_partial = 0x03,
-    DW_UT_skeleton = 0x04,
-    DW_UT_split_compile = 0x05,
-    DW_UT_split_type = 0x06,
-    DW_UT_lo_user = 0x80,
-    DW_UT_hi_user = 0xff
-  };
 \f
 /* @@@ For use with GNU frame unwind information.  */
 
@@ -534,6 +528,10 @@ extern const char *get_DW_CFA_name (unsigned int opc);
    recognized.  */
 extern const char *get_DW_IDX_name (unsigned int idx);
 
+/* Return the name of a DW_UT_ constant, or NULL if the value is not
+   recognized.  */
+extern const char *get_DW_UT_name (unsigned int ut);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
index 4eec7d29775d87787771c2f61feec7fdfb085058..d8abc62717c85129fad5bdb06067ff2d7708a796 100644 (file)
@@ -1,3 +1,107 @@
+2021-01-01  Alan Modra  <amodra@gmail.com>
+
+       Apply from master
+       2020-12-31  H.J. Lu  <hongjiu.lu@intel.com>
+                   Alan Modra  <amodra@gmail.com>
+       PR 27128
+       * testsuite/ld-elf/pr27128.s: New file.
+       * testsuite/ld-elf/pr27128.t: Likewise.
+       * testsuite/ld-elf/pr27128a.d: Likewise.
+       * testsuite/ld-elf/pr27128b.d: Likewise.
+       * testsuite/ld-elf/pr27128c.d: Likewise.
+       * testsuite/ld-elf/pr27128d.d: Likewise.
+       * testsuite/ld-elf/pr27128e.d: Likewise.
+
+       2020-08-24  Alan Modra  <amodra@gmail.com>
+       * testsuite/ld-sparc/tlssunbin32.rd: Update for new readelf output.
+       * testsuite/ld-sparc/tlssunbin64.rd: Likewise.
+
+       2020-08-22  H.J. Lu  <hongjiu.lu@intel.com>
+       PR ld/26382
+       * testsuite/ld-elf/pr26302.nd: Updated.
+       * testsuite/ld-elf/pr26302.rd: New file.
+       * testsuite/ld-elf/shared.exp: Add a test for readelf -sW.
+
+       2020-08-10  H.J. Lu  <hongjiu.lu@intel.com>
+       PR binutils/26302
+       * testsuite/ld-elf/pr26302.nd: New file.
+       * testsuite/ld-elf/pr26302.ver: Likewise.
+       * testsuite/ld-elf/pr26302a.c: Likewise.
+       * testsuite/ld-elf/pr26302b.c: Likewise.
+       * testsuite/ld-elf/shared.exp: Run binutils/26302 tests.
+
+2020-12-04  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/27016
+       * testsuite/ld-x86-64/x86-64.exp: Run pr27016a and pr27016b.
+       * testsuite/ld-x86-64/pr27016a.d: New file.
+       * testsuite/ld-x86-64/pr27016a.s: Likewise.
+       * testsuite/ld-x86-64/pr27016b.d: Likewise.
+       * testsuite/ld-x86-64/pr27016b.s: Likewise.
+
+2020-11-16  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/26869
+       * ldelf.c (ldelf_before_allocation): Set rel_from_abs to 1 for
+       __ehdr_start.
+       * testsuite/ld-i386/i386.exp: Run pr26869.
+       * testsuite/ld-i386/pr26869.d: New file.
+       * testsuite/ld-i386/pr26869.s: Likewise.
+
+2020-10-07  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * testsuite/ld-i386/property-3.r: Updated for Fedora binary
+       annotation plugin for GCC.
+       * testsuite/ld-i386/property-4.r: Likewise.
+       * testsuite/ld-i386/property-5.r: Likewise.
+       * testsuite/ld-x86-64/property-3.r: Likewise.
+       * testsuite/ld-x86-64/property-4.r: Likewise.
+       * testsuite/ld-x86-64/property-5.r: Likewise.
+
+2020-10-07  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/26711
+       * testsuite/ld-i386/i386.exp: Run ld/26711 tests.
+       * testsuite/ld-x86-64/x86-64.exp: Likewise.
+       * testsuite/ld-i386/pr26711-1.d: Likewise.
+       * testsuite/ld-i386/pr26711-2.d: Likewise.
+       * testsuite/ld-i386/pr26711-3.d: Likewise.
+       * testsuite/ld-x86-64/pr26711-1-x32.d: Likewise.
+       * testsuite/ld-x86-64/pr26711-1.d: Likewise.
+       * testsuite/ld-x86-64/pr26711-2-x32.d: Likewise.
+       * testsuite/ld-x86-64/pr26711-2.d: Likewise.
+       * testsuite/ld-x86-64/pr26711-3-x32.d: Likewise.
+       * testsuite/ld-x86-64/pr26711-3.d: Likewise.
+       * testsuite/ld-x86-64/pr26711.s: Likewise.
+
+2020-09-26  Alan Modra  <amodra@gmail.com>
+
+       * testsuite/ld-powerpc/elfv2so.d,
+       * testsuite/ld-powerpc/notoc2.d,
+       * testsuite/ld-powerpc/tlsdesc.wf,
+       * testsuite/ld-powerpc/tlsdesc2.d,
+       * testsuite/ld-powerpc/tlsdesc2.wf,
+       * testsuite/ld-powerpc/tlsopt5.d,
+       * testsuite/ld-powerpc/tlsopt5.wf,
+       * testsuite/ld-powerpc/tlsopt6.d,
+       * testsuite/ld-powerpc/tlsopt6.wf: Update __glink_PLTresolve.
+
+2020-09-24  Alan Modra  <amodra@gmail.com>
+
+       PR 26655
+       * emultempl/ppc64elf.em (params): Add ppc_edit.
+       (ppc_before_allocation): Split off some edit functions to..
+       (ppc_edit): ..this, new function.
+
+2020-09-24  Alan Modra  <amodra@gmail.com>
+
+       Apply from master
+       2020-08-13  Alan Modra  <amodra@gmail.com>
+       * emultempl/ppc64elf.em (params): Init new field.
+       (enum ppc64_opt): Add OPTION_NO_PCREL_OPT.
+       (PARSE_AND_LIST_LONGOPTS, PARSE_AND_LIST_OPTIONS),
+       (PARSE_AND_LIST_ARGS_CASES): Support --no-pcrel-optimize.
+
 2020-09-19  Nick Clifton  <nickc@redhat.com>
 
        This is the 2.35.1 point release.
index 1331d03113bd7c3091558f423eac86bb16008653..2df5a218e6a64a086f2ddbc7d8be7093bef05511 100644 (file)
@@ -32,13 +32,15 @@ fragment <<EOF
 
 static asection *ppc_add_stub_section (const char *, asection *);
 static void ppc_layout_sections_again (void);
+static void ppc_edit (void);
 
 static struct ppc64_elf_params params = { NULL,
                                          &ppc_add_stub_section,
                                          &ppc_layout_sections_again,
+                                         &ppc_edit,
                                          1, -1, -1, 0,
                                          ${DEFAULT_PLT_STATIC_CHAIN-0}, -1, 5,
-                                         -1, -1, 0, -1, -1, 0};
+                                         -1, -1, 0, 0, -1, -1, 0};
 
 /* Fake input file for stubs.  */
 static lang_input_statement_type *stub_file;
@@ -294,7 +296,19 @@ ppc_before_allocation (void)
            einfo (_("%X%P: inline PLT: %E\n"));
        }
 
-      if (ppc64_elf_tls_setup (&link_info)
+      if (!ppc64_elf_tls_setup (&link_info))
+       einfo (_("%X%P: TLS problem %E\n"));
+    }
+
+  gld${EMULATION_NAME}_before_allocation ();
+}
+
+static void
+ppc_edit (void)
+{
+  if (stub_file != NULL)
+    {
+      if (elf_hash_table (&link_info)->tls_sec != NULL
          && !no_tls_opt)
        {
          /* Size the sections.  This is premature, but we want to know the
@@ -323,8 +337,6 @@ ppc_before_allocation (void)
            sort_toc_sections (&toc_os->children, NULL, NULL);
        }
     }
-
-  gld${EMULATION_NAME}_before_allocation ();
 }
 
 struct hook_stub_info
@@ -686,6 +698,7 @@ enum ppc64_opt
   OPTION_NO_PLT_LOCALENTRY,
   OPTION_POWER10_STUBS,
   OPTION_NO_POWER10_STUBS,
+  OPTION_NO_PCREL_OPT,
   OPTION_STUBSYMS,
   OPTION_NO_STUBSYMS,
   OPTION_SAVRES,
@@ -717,6 +730,7 @@ PARSE_AND_LIST_LONGOPTS=${PARSE_AND_LIST_LONGOPTS}'
   { "plt-localentry", optional_argument, NULL, OPTION_PLT_LOCALENTRY },
   { "no-plt-localentry", no_argument, NULL, OPTION_NO_PLT_LOCALENTRY },
   { "power10-stubs", optional_argument, NULL, OPTION_POWER10_STUBS },
+  { "no-pcrel-optimize", no_argument, NULL, OPTION_NO_PCREL_OPT },
   { "no-power10-stubs", no_argument, NULL, OPTION_NO_POWER10_STUBS },
   { "emit-stub-syms", no_argument, NULL, OPTION_STUBSYMS },
   { "no-emit-stub-syms", no_argument, NULL, OPTION_NO_STUBSYMS },
@@ -776,6 +790,9 @@ PARSE_AND_LIST_OPTIONS=${PARSE_AND_LIST_OPTIONS}'
   --power10-stubs [=auto]     Use Power10 PLT call stubs (default auto)\n"
                   ));
   fprintf (file, _("\
+  --no-pcrel-optimize         Don'\''t perform R_PPC64_PCREL_OPT optimization\n"
+                  ));
+  fprintf (file, _("\
   --no-power10-stubs          Don'\''t use Power10 PLT call stubs\n"
                   ));
   fprintf (file, _("\
@@ -909,6 +926,10 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
       params.power10_stubs = 0;
       break;
 
+    case OPTION_NO_PCREL_OPT:
+      params.no_pcrel_opt = 1;
+      break;
+
     case OPTION_STUBSYMS:
       params.emit_stub_syms = 1;
       break;
@@ -985,6 +1006,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
       params.no_multi_toc = 1;
       no_toc_sort = 1;
       params.plt_static_chain = 1;
+      params.no_pcrel_opt = 1;
       return FALSE;
 '
 
index bada3ade2d75eac3ccb65e5eff55cce4a6528844..831d032fe568f618277e8308eee1fc5b9f18ab76 100644 (file)
@@ -1589,6 +1589,8 @@ ldelf_before_allocation (char *audit, char *depaudit,
                      (char *) &ehdr_start->u + sizeof ehdr_start->u.def.next,
                      sizeof ehdr_start_save_u);
              ehdr_start->type = bfd_link_hash_defined;
+             /* It will be converted to section-relative later.  */
+             ehdr_start->rel_from_abs = 1;
              ehdr_start->u.def.section = bfd_abs_section_ptr;
              ehdr_start->u.def.value = 0;
            }
diff --git a/ld/testsuite/ld-elf/pr26302.nd b/ld/testsuite/ld-elf/pr26302.nd
new file mode 100644 (file)
index 0000000..bc9a675
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+ +U foo@FOO
+#pass
diff --git a/ld/testsuite/ld-elf/pr26302.rd b/ld/testsuite/ld-elf/pr26302.rd
new file mode 100644 (file)
index 0000000..8f7b8a9
--- /dev/null
@@ -0,0 +1,12 @@
+#...
+Symbol table '\.dynsym' contains [0-9]+ entries:
+ +Num: +Value +Size Type +Bind +Vis +Ndx Name
+#...
+ +[0-9]+: +[a-f0-9]+ +0 +FUNC +GLOBAL +DEFAULT +UND +foo@FOO \([0-9]+\)
+#...
+
+Symbol table '\.symtab' contains [0-9]+ entries:
+ +Num: +Value +Size Type +Bind +Vis +Ndx Name
+#...
+ +[0-9]+: +[a-f0-9]+ +0 +FUNC +GLOBAL +DEFAULT +UND +foo@FOO
+#pass
diff --git a/ld/testsuite/ld-elf/pr26302.ver b/ld/testsuite/ld-elf/pr26302.ver
new file mode 100644 (file)
index 0000000..f2c03ac
--- /dev/null
@@ -0,0 +1,5 @@
+FOO
+{
+global:
+  foo;
+};
diff --git a/ld/testsuite/ld-elf/pr26302a.c b/ld/testsuite/ld-elf/pr26302a.c
new file mode 100644 (file)
index 0000000..cd0130c
--- /dev/null
@@ -0,0 +1,4 @@
+void
+foo (void)
+{
+}
diff --git a/ld/testsuite/ld-elf/pr26302b.c b/ld/testsuite/ld-elf/pr26302b.c
new file mode 100644 (file)
index 0000000..eae278d
--- /dev/null
@@ -0,0 +1,7 @@
+extern void foo (void);
+
+void
+bar (void)
+{
+  foo ();
+}
diff --git a/ld/testsuite/ld-elf/pr27128.s b/ld/testsuite/ld-elf/pr27128.s
new file mode 100644 (file)
index 0000000..7af5be1
--- /dev/null
@@ -0,0 +1,13 @@
+       .text
+       .globl  foo
+       .type   foo,%function
+foo:
+       .space 16
+       .size foo, .-foo
+       .symver foo,foo@@VERS_2.0,remove
+       .globl  _Zrm1XS_
+       .type   _Zrm1XS_,%function
+_Zrm1XS_:
+       .space 16
+       .size _Zrm1XS_, .-_Zrm1XS_
+       .symver _Zrm1XS_,_Zrm1XS_@@VERS_2.0,remove
diff --git a/ld/testsuite/ld-elf/pr27128.t b/ld/testsuite/ld-elf/pr27128.t
new file mode 100644 (file)
index 0000000..27669a5
--- /dev/null
@@ -0,0 +1,6 @@
+VERS_2.0 {
+global:
+  foo; _Zrm1XS_;
+local:
+  *;
+};
diff --git a/ld/testsuite/ld-elf/pr27128a.d b/ld/testsuite/ld-elf/pr27128a.d
new file mode 100644 (file)
index 0000000..9ce8eaa
--- /dev/null
@@ -0,0 +1,16 @@
+#source: pr27128.s
+#ld: -shared -version-script pr27128.t
+#nm: -n -P
+#target: [check_shared_lib_support]
+#notarget: [is_underscore_target]
+# _Zrm1XS_ doesn't have an extra underscore.
+#xfail: hppa64-*-* tic6x-*-*
+# hppa64 uses dot-symbols, tic6x DYN lacks dynamic sections for this testcase
+
+#...
+VERS_2\.0 A 0+ 
+#...
+foo@@VERS_2\.0 T [0-9a-f]+ 10
+#...
+_Zrm1XS_@@VERS_2\.0 T [0-9a-f]+ 10
+#pass
diff --git a/ld/testsuite/ld-elf/pr27128b.d b/ld/testsuite/ld-elf/pr27128b.d
new file mode 100644 (file)
index 0000000..934f833
--- /dev/null
@@ -0,0 +1,16 @@
+#source: pr27128.s
+#ld: -shared -version-script pr27128.t
+#nm: -n -D --format=posix
+#target: [check_shared_lib_support]
+#notarget: [is_underscore_target]
+# _Zrm1XS_ doesn't have an extra underscore.
+#xfail: hppa64-*-* tic6x-*-*
+# hppa64 uses dot-symbols, tic6x DYN lacks dynamic sections for this testcase
+
+#...
+VERS_2\.0 A 0+ 
+#...
+foo@@VERS_2\.0 T [0-9a-f]+ 10
+#...
+_Zrm1XS_@@VERS_2\.0 T [0-9a-f]+ 10
+#pass
diff --git a/ld/testsuite/ld-elf/pr27128c.d b/ld/testsuite/ld-elf/pr27128c.d
new file mode 100644 (file)
index 0000000..f80c57b
--- /dev/null
@@ -0,0 +1,16 @@
+#source: pr27128.s
+#ld: -shared -version-script pr27128.t
+#nm: -n --format=sysv
+#target: [check_shared_lib_support]
+#notarget: [is_underscore_target]
+# _Zrm1XS_ doesn't have an extra underscore.
+#xfail: hppa64-*-* tic6x-*-*
+# hppa64 uses dot-symbols, tic6x DYN lacks dynamic sections for this testcase
+
+#...
+VERS_2\.0 +\|0+\| +A +\| +OBJECT\| +\| +\|\*ABS\*
+#...
+foo@@VERS_2\.0 +\|[0-9a-f]+\| +T +\| +FUNC\|0+10\| +\|\.text
+#...
+_Zrm1XS_@@VERS_2\.0 +\|[0-9a-f]+\| +T +\| +FUNC\|0+10\| +\|\.text
+#pass
diff --git a/ld/testsuite/ld-elf/pr27128d.d b/ld/testsuite/ld-elf/pr27128d.d
new file mode 100644 (file)
index 0000000..ba628d2
--- /dev/null
@@ -0,0 +1,16 @@
+#source: pr27128.s
+#ld: -shared -version-script pr27128.t
+#nm: -n -D --format=sysv
+#target: [check_shared_lib_support]
+#notarget: [is_underscore_target]
+# _Zrm1XS_ doesn't have an extra underscore.
+#xfail: hppa64-*-* tic6x-*-*
+# hppa64 uses dot-symbols, tic6x DYN lacks dynamic sections for this testcase
+
+#...
+VERS_2\.0 +\|0+\| +A +\| +OBJECT\| +\| +\|\*ABS\*
+#...
+foo@@VERS_2\.0 +\|[0-9a-f]+\| +T +\| +FUNC\|0+10\| +\|\.text
+#...
+_Zrm1XS_@@VERS_2\.0 +\|[0-9a-f]+\| +T +\| +FUNC\|0+10\| +\|\.text
+#pass
diff --git a/ld/testsuite/ld-elf/pr27128e.d b/ld/testsuite/ld-elf/pr27128e.d
new file mode 100644 (file)
index 0000000..b8b1657
--- /dev/null
@@ -0,0 +1,16 @@
+#source: pr27128.s
+#ld: -shared -version-script pr27128.t
+#nm: -n --demangle -D --format=posix
+#target: [check_shared_lib_support]
+#notarget: [is_underscore_target]
+# _Zrm1XS_ doesn't have an extra underscore.
+#xfail: hppa64-*-* tic6x-*-*
+# hppa64 uses dot-symbols, tic6x DYN lacks dynamic sections for this testcase
+
+#...
+VERS_2\.0 A 0+ 
+#...
+foo@@VERS_2\.0 T [0-9a-f]+ 10
+#...
+operator%\(X, X\)@@VERS_2\.0 T [0-9a-f]+ 10
+#pass
index e9e9012058645e8ed0f7f120a02ef2eac1a89a32..4de5b341834135dc8006c2be7809e66c0ecbaa0b 100644 (file)
@@ -843,6 +843,25 @@ run_cc_link_tests [list \
        {{readelf {--dyn-syms --wide} pr26094-1b.rd}} \
        "pr26094-1" \
     ] \
+    [list \
+       "Build pr26302a.so" \
+       "-shared -Wl,--version-script=pr26302.ver" \
+       "-fPIC" \
+       {pr26302a.c} \
+       {} \
+       "pr26302a.so"
+    ] \
+    [list \
+       "Build pr26302b.so" \
+       "-shared -Wl,--no-as-needed tmpdir/pr26302a.so" \
+       "-fPIC" \
+       {pr26302b.c} \
+       {{readelf {-sW} pr26302.rd} \
+        {nm {-u} pr26302.nd} \
+        {nm {-u -D} pr26302.nd} \
+        {nm {-u -D --with-symbol-versions} pr26302.nd}} \
+       "pr26302b.so" \
+    ] \
 ]
 
 run_ld_link_tests [list \
index 164c099cbbb90fb28c10c28a6213959ae14fabdb..f031b01ffea728620fb4d6d4a7b3b850d197cc9d 100644 (file)
@@ -470,6 +470,10 @@ run_dump_test "pr24322b"
 run_dump_test "align-branch-1"
 run_dump_test "pr26018"
 run_dump_test "pr26263"
+run_dump_test "pr26711-1"
+run_dump_test "pr26711-2"
+run_dump_test "pr26711-3"
+run_dump_test "pr26869"
 
 if { !([istarget "i?86-*-linux*"]
        || [istarget "i?86-*-gnu*"]
diff --git a/ld/testsuite/ld-i386/pr26711-1.d b/ld/testsuite/ld-i386/pr26711-1.d
new file mode 100644 (file)
index 0000000..24a8429
--- /dev/null
@@ -0,0 +1,10 @@
+#source: ../ld-x86-64/pr26711.s
+#source: ../ld-x86-64/start.s
+#as: --32 -mx86-used-note=no
+#ld: -m elf_i386 -z ibt
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[      ]+Owner[        ]+Data size[    ]+Description
+  GNU                  0x[0-9a-f]+     NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 feature: IBT
diff --git a/ld/testsuite/ld-i386/pr26711-2.d b/ld/testsuite/ld-i386/pr26711-2.d
new file mode 100644 (file)
index 0000000..e92559f
--- /dev/null
@@ -0,0 +1,10 @@
+#source: ../ld-x86-64/pr26711.s
+#source: ../ld-x86-64/start.s
+#as: --32 -mx86-used-note=no
+#ld: -m elf_i386 -z shstk
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[      ]+Owner[        ]+Data size[    ]+Description
+  GNU                  0x[0-9a-f]+     NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 feature: SHSTK
diff --git a/ld/testsuite/ld-i386/pr26711-3.d b/ld/testsuite/ld-i386/pr26711-3.d
new file mode 100644 (file)
index 0000000..df9bfce
--- /dev/null
@@ -0,0 +1,10 @@
+#source: ../ld-x86-64/pr26711.s
+#source: ../ld-x86-64/start.s
+#as: --32 -mx86-used-note=no
+#ld: -m elf_i386 -z ibt -z shstk
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[      ]+Owner[        ]+Data size[    ]+Description
+  GNU                  0x[0-9a-f]+     NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 feature: IBT, SHSTK
diff --git a/ld/testsuite/ld-i386/pr26869.d b/ld/testsuite/ld-i386/pr26869.d
new file mode 100644 (file)
index 0000000..bfd00a7
--- /dev/null
@@ -0,0 +1,14 @@
+#as: --32
+#ld: -shared -melf_i386
+#readelf: -r -s --wide
+
+Relocation section '.rel.dyn' at offset 0x[a-f0-9]+ contains 1 entry:
+ Offset     Info    Type                Sym. Value  Symbol's Name
+0+[a-f0-9]+  00000008 R_386_RELATIVE        
+
+#...
+Symbol table '.symtab' contains [0-9]+ entries:
+   Num:    Value  Size Type    Bind   Vis      Ndx Name
+#...
+ +[a-f0-9]+: 00000000     0 NOTYPE  LOCAL  DEFAULT    1 __ehdr_start
+#pass
diff --git a/ld/testsuite/ld-i386/pr26869.s b/ld/testsuite/ld-i386/pr26869.s
new file mode 100644 (file)
index 0000000..e492b98
--- /dev/null
@@ -0,0 +1,3 @@
+       .text
+foo:
+       pushl   __ehdr_start@GOT(%ebx)
index 1abb90b3a2ed16acdabc0c1cc8723262caeac268..e95d47ae8d69d0bc03fd10bc0b4a1f0eb629c4d8 100644 (file)
@@ -3,5 +3,6 @@ Displaying notes found in: .note.gnu.property
 [      ]+Owner[        ]+Data size[    ]+Description
   GNU                  0x[0-9a-f]+     NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x800000
+#...
        x86 ISA needed: CMOV, SSE
 #pass
index e94846e88ea41ab02adf0f07062eed273716d5df..a4b7bb71adf5e8ea34faa3b4b276da879889ff63 100644 (file)
@@ -3,5 +3,6 @@ Displaying notes found in: .note.gnu.property
 [      ]+Owner[        ]+Data size[    ]+Description
   GNU                  0x[0-9a-f]+     NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x800000
+#...
        x86 ISA needed: CMOV, SSE, SSE3
 #pass
index bd87a9317efabb96ec0896decaa9fbd1c5f42aa0..5ff95648c29c91948c9f002a384252851d2f2f40 100644 (file)
@@ -3,5 +3,6 @@ Displaying notes found in: .note.gnu.property
 [      ]+Owner[        ]+Data size[    ]+Description
   GNU                  0x[0-9a-f]+     NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x900000
+#...
        x86 ISA needed: CMOV, SSE, SSE3
 #pass
index 0162bd0880e0c1a57338fefc36c12d584ab1bc15..4018f0536c6bc6f7c21e8663ed828dd4d5acfea7 100644 (file)
@@ -74,12 +74,11 @@ Disassembly of section \.text:
 .*:    (7c 08 02 a6|a6 02 08 7c)       mflr    r0
 .*:    (42 9f 00 05|05 00 9f 42)       bcl     .*
 .*:    (7d 68 02 a6|a6 02 68 7d)       mflr    r11
-.*:    (18 00 41 f8|f8 41 00 18)       std     r2,24\(r1\)
-.*:    (e8 4b ff f0|f0 ff 4b e8)       ld      r2,-16\(r11\)
 .*:    (7c 08 03 a6|a6 03 08 7c)       mtlr    r0
+.*:    (e8 0b ff f0|f0 ff 0b e8)       ld      r0,-16\(r11\)
 .*:    (7d 8b 60 50|50 60 8b 7d)       subf    r12,r11,r12
-.*:    (7d 62 5a 14|14 5a 62 7d)       add     r11,r2,r11
-.*:    (38 0c ff d0|d0 ff 0c 38)       addi    r0,r12,-48
+.*:    (7d 60 5a 14|14 5a 60 7d)       add     r11,r0,r11
+.*:    (38 0c ff d4|d4 ff 0c 38)       addi    r0,r12,-44
 .*:    (e9 8b 00 00|00 00 8b e9)       ld      r12,0\(r11\)
 .*:    (78 00 f0 82|82 f0 00 78)       rldicl  r0,r0,62,2
 .*:    (7d 89 03 a6|a6 03 89 7d)       mtctr   r12
@@ -87,16 +86,16 @@ Disassembly of section \.text:
 .*:    (4e 80 04 20|20 04 80 4e)       bctr
 
 .* <f5@plt>:
-.*:    (4b ff ff c8|c8 ff ff 4b)       b       .* <__glink_PLTresolve>
+.*:    (4b ff ff cc|cc ff ff 4b)       b       .* <__glink_PLTresolve>
 
 .* <f3@plt>:
-.*:    (4b ff ff c4|c4 ff ff 4b)       b       .* <__glink_PLTresolve>
+.*:    (4b ff ff c8|c8 ff ff 4b)       b       .* <__glink_PLTresolve>
 
 .* <f2@plt>:
-.*:    (4b ff ff c0|c0 ff ff 4b)       b       .* <__glink_PLTresolve>
+.*:    (4b ff ff c4|c4 ff ff 4b)       b       .* <__glink_PLTresolve>
 
 .* <f4@plt>:
-.*:    (4b ff ff bc|bc ff ff 4b)       b       .* <__glink_PLTresolve>
+.*:    (4b ff ff c0|c0 ff ff 4b)       b       .* <__glink_PLTresolve>
 
 .* <f1@plt>:
-.*:    (4b ff ff b8|b8 ff ff 4b)       b       .* <__glink_PLTresolve>
+.*:    (4b ff ff bc|bc ff ff 4b)       b       .* <__glink_PLTresolve>
index 1e519c0d1b082f1e806c67f41b915e096f96e7d0..3448f8b37e6672bc1cebc8e7dcf327b49f0ba0bc 100644 (file)
@@ -22,8 +22,8 @@ Disassembly of section \.text:
 .*:    (39 80 ff ff|ff ff 80 39) 
 .*:    (06 10 00 00|00 00 10 06)       pla     r12,0
 .*:    (39 80 00 00|00 00 80 39) 
-.*:    (06 10 00 00|00 00 10 06)       pla     r3,92
-.*:    (38 60 00 5c|5c 00 60 38) 
+.*:    (06 10 00 00|00 00 10 06)       pla     r3,88
+.*:    (38 60 00 58|58 00 60 38) 
 .*:    (4b ff ff 99|99 ff ff 4b)       bl      .* <.*\.plt_call\.puts>
 .*:    (60 00 00 00|00 00 00 60)       nop
 #pass
index 09503fa00532b8fb395411bfa3afa178713fd5c1..e7d4522b507365096d246d5e83442c58f5117fcb 100644 (file)
@@ -38,9 +38,9 @@ Contents of the \.eh_frame section:
   DW_CFA_nop
 
 0+4c 0+14 0+50 FDE cie=0+ pc=0+2f8\.\.0+32c
-  DW_CFA_advance_loc: 4 to 0+2fc
+  DW_CFA_advance_loc: 8 to 0+300
   DW_CFA_register: r65 in r12
-  DW_CFA_advance_loc: 20 to 0+310
+  DW_CFA_advance_loc: 16 to 0+310
   DW_CFA_restore_extended: r65
 
 0+64 0+10 0+68 FDE cie=0+ pc=0+2e0\.\.0+2ec
index 47aedbecb8893394e157b223828272418c5f0527..c271c949b011f508f6b3aaeef35da81ca56a3bab 100644 (file)
@@ -53,12 +53,11 @@ Disassembly of section \.text:
 .*:    (7c 08 02 a6|a6 02 08 7c)       mflr    r0
 .*:    (42 9f 00 05|05 00 9f 42)       bcl     .*
 .*:    (7d 68 02 a6|a6 02 68 7d)       mflr    r11
-.*:    (f8 41 00 18|18 00 41 f8)       std     r2,24\(r1\)
-.*:    (e8 4b ff f0|f0 ff 4b e8)       ld      r2,-16\(r11\)
 .*:    (7c 08 03 a6|a6 03 08 7c)       mtlr    r0
+.*:    (e8 0b ff f0|f0 ff 0b e8)       ld      r0,-16\(r11\)
 .*:    (7d 8b 60 50|50 60 8b 7d)       subf    r12,r11,r12
-.*:    (7d 62 5a 14|14 5a 62 7d)       add     r11,r2,r11
-.*:    (38 0c ff d0|d0 ff 0c 38)       addi    r0,r12,-48
+.*:    (7d 60 5a 14|14 5a 60 7d)       add     r11,r0,r11
+.*:    (38 0c ff d4|d4 ff 0c 38)       addi    r0,r12,-44
 .*:    (e9 8b 00 00|00 00 8b e9)       ld      r12,0\(r11\)
 .*:    (78 00 f0 82|82 f0 00 78)       rldicl  r0,r0,62,2
 .*:    (7d 89 03 a6|a6 03 89 7d)       mtctr   r12
@@ -66,4 +65,4 @@ Disassembly of section \.text:
 .*:    (4e 80 04 20|20 04 80 4e)       bctr
 
 .* <__tls_get_addr_opt@plt>:
-.*:    (4b ff ff c8|c8 ff ff 4b)       b       .* <__glink_PLTresolve>
+.*:    (4b ff ff cc|cc ff ff 4b)       b       .* <__glink_PLTresolve>
index cb92c294b15da9b14fa2fd72705c96896e8dc0b8..79a417ba06e8f231afa57a0b06eb0bdca8f532fd 100644 (file)
@@ -37,10 +37,10 @@ Contents of the \.eh_frame section:
   DW_CFA_nop
   DW_CFA_nop
 
-0+4c 0+14 0+50 FDE cie=0+ pc=0+318\.\.0+354
-  DW_CFA_advance_loc: 4 to 0+31c
+0+4c 0+14 0+50 FDE cie=0+ pc=0+318\.\.0+350
+  DW_CFA_advance_loc: 8 to 0+320
   DW_CFA_register: r65 in r0
-  DW_CFA_advance_loc: 28 to 0+338
+  DW_CFA_advance_loc: 8 to 0+328
   DW_CFA_restore_extended: r65
 
 0+64 0+10 0+68 FDE cie=0+ pc=0+300\.\.0+30c
index 0fcb79821b83fd9958aa5c291c1c8f249ee5f3d5..efd6debc55583f180e60ebb5aab85486bff0d093 100644 (file)
@@ -49,12 +49,11 @@ Disassembly of section \.text:
 .*:    (a6 02 08 7c|7c 08 02 a6)       mflr    r0
 .*:    (05 00 9f 42|42 9f 00 05)       bcl     .*
 .*:    (a6 02 68 7d|7d 68 02 a6)       mflr    r11
-.*:    (18 00 41 f8|f8 41 00 18)       std     r2,24\(r1\)
-.*:    (f0 ff 4b e8|e8 4b ff f0)       ld      r2,-16\(r11\)
 .*:    (a6 03 08 7c|7c 08 03 a6)       mtlr    r0
+.*:    (f0 ff 0b e8|e8 0b ff f0)       ld      r0,-16\(r11\)
 .*:    (50 60 8b 7d|7d 8b 60 50)       subf    r12,r11,r12
-.*:    (14 5a 62 7d|7d 62 5a 14)       add     r11,r2,r11
-.*:    (d0 ff 0c 38|38 0c ff d0)       addi    r0,r12,-48
+.*:    (14 5a 60 7d|7d 60 5a 14)       add     r11,r0,r11
+.*:    (d4 ff 0c 38|38 0c ff d4)       addi    r0,r12,-44
 .*:    (00 00 8b e9|e9 8b 00 00)       ld      r12,0\(r11\)
 .*:    (82 f0 00 78|78 00 f0 82)       rldicl  r0,r0,62,2
 .*:    (a6 03 89 7d|7d 89 03 a6)       mtctr   r12
@@ -62,7 +61,7 @@ Disassembly of section \.text:
 .*:    (20 04 80 4e|4e 80 04 20)       bctr
 
 .* <__tls_get_addr_opt@plt>:
-.*     (c8 ff ff 4b|4b ff ff c8)       b       .*
+.*     (cc ff ff 4b|4b ff ff cc)       b       .*
 
 .* <aaaaa@plt>:
-.*:    (c4 ff ff 4b|4b ff ff c4)       b       .*
+.*:    (c8 ff ff 4b|4b ff ff c8)       b       .*
index f0453610e085a2397c5df17d7d92ce328e2bac8b..84bd94ed728bcbe63f0f9b09a9ea2a239e79bbe6 100644 (file)
@@ -16,9 +16,9 @@ Contents of the \.eh_frame section:
   DW_CFA_restore_extended: r65
 
 0+2c 0+14 0+30 FDE cie=0+ pc=.*
-  DW_CFA_advance_loc: 4 to .*
+  DW_CFA_advance_loc: 8 to .*
   DW_CFA_register: r65 in r0
-  DW_CFA_advance_loc: 28 to .*
+  DW_CFA_advance_loc: 8 to .*
   DW_CFA_restore_extended: r65
 
 0+44 0+10 0+48 FDE cie=0+ pc=.*
index 4ca64092c1d464c91413de1a60f2fc8459cea472..15def719cba53e8c6d2763823db45200712a41ac 100644 (file)
@@ -67,12 +67,11 @@ Disassembly of section \.text:
 .*:    (a6 02 08 7c|7c 08 02 a6)       mflr    r0
 .*:    (05 00 9f 42|42 9f 00 05)       bcl     .*
 .*:    (a6 02 68 7d|7d 68 02 a6)       mflr    r11
-.*:    (18 00 41 f8|f8 41 00 18)       std     r2,24\(r1\)
-.*:    (f0 ff 4b e8|e8 4b ff f0)       ld      r2,-16\(r11\)
 .*:    (a6 03 08 7c|7c 08 03 a6)       mtlr    r0
+.*:    (f0 ff 0b e8|e8 0b ff f0)       ld      r0,-16\(r11\)
 .*:    (50 60 8b 7d|7d 8b 60 50)       subf    r12,r11,r12
-.*:    (14 5a 62 7d|7d 62 5a 14)       add     r11,r2,r11
-.*:    (d0 ff 0c 38|38 0c ff d0)       addi    r0,r12,-48
+.*:    (14 5a 60 7d|7d 60 5a 14)       add     r11,r0,r11
+.*:    (d4 ff 0c 38|38 0c ff d4)       addi    r0,r12,-44
 .*:    (00 00 8b e9|e9 8b 00 00)       ld      r12,0\(r11\)
 .*:    (82 f0 00 78|78 00 f0 82)       rldicl  r0,r0,62,2
 .*:    (a6 03 89 7d|7d 89 03 a6)       mtctr   r12
@@ -80,7 +79,7 @@ Disassembly of section \.text:
 .*:    (20 04 80 4e|4e 80 04 20)       bctr
 
 .* <__tls_get_addr_opt@plt>:
-.*     (c8 ff ff 4b|4b ff ff c8)       b       .*
+.*     (cc ff ff 4b|4b ff ff cc)       b       .*
 
 .* <aaaaa@plt>:
-.*:    (c4 ff ff 4b|4b ff ff c4)       b       .*
+.*:    (c8 ff ff 4b|4b ff ff c8)       b       .*
index abb414a6339ef97fc26da03dc5e37e87e44d1cdb..c2b96163523d40b570b9600257022a7bc780cf28 100644 (file)
@@ -38,9 +38,9 @@ Contents of the \.eh_frame section:
   DW_CFA_nop
 
 0+4c 0+14 0+50 FDE cie=0+ pc=.*
-  DW_CFA_advance_loc: 4 to .*
+  DW_CFA_advance_loc: 8 to .*
   DW_CFA_register: r65 in r0
-  DW_CFA_advance_loc: 28 to .*
+  DW_CFA_advance_loc: 8 to .*
   DW_CFA_restore_extended: r65
 
 0+64 0+10 0+68 FDE cie=0+ pc=.*
index 937611da91b35b745f83c3f5df5cf65c5fd97867..a41f27d644c764047d3a8311df144d3fe2fbfcf4 100644 (file)
@@ -111,7 +111,7 @@ Symbol table '\.symtab' contains [0-9]+ entries:
 .* FUNC +GLOBAL +DEFAULT +8 _start
 .* TLS +GLOBAL +HIDDEN +9 sh4
 .* TLS +GLOBAL +DEFAULT +10 bg7
-.* FUNC +GLOBAL +DEFAULT +UND __tls_get_addr@@SUNWprivate_1.1
+.* FUNC +GLOBAL +DEFAULT +UND __tls_get_addr@SUNWprivate_1.1
 .* TLS +GLOBAL +HIDDEN +9 sh5
 .* NOTYPE +GLOBAL +DEFAULT +12 __bss_start
 .* TLS +GLOBAL +DEFAULT +UND sG6
index 07a632c5ec9df3c47152a427ebba979dcc385328..4d792b841089ed3f3f5841cc78ff5dd745a7798d 100644 (file)
@@ -111,7 +111,7 @@ Symbol table '\.symtab' contains [0-9]+ entries:
 .* FUNC +GLOBAL +DEFAULT +8 _start
 .* TLS +GLOBAL +HIDDEN +9 sh4
 .* TLS +GLOBAL +DEFAULT +10 bg7
-.* FUNC +GLOBAL +DEFAULT +UND __tls_get_addr@@SUNWprivate_1.1
+.* FUNC +GLOBAL +DEFAULT +UND __tls_get_addr@SUNWprivate_1.1
 .* TLS +GLOBAL +HIDDEN +9 sh5
 .* NOTYPE +GLOBAL +DEFAULT +12 __bss_start
 .* TLS +GLOBAL +DEFAULT +UND sG6
diff --git a/ld/testsuite/ld-x86-64/pr26711-1-x32.d b/ld/testsuite/ld-x86-64/pr26711-1-x32.d
new file mode 100644 (file)
index 0000000..6701319
--- /dev/null
@@ -0,0 +1,10 @@
+#source: pr26711.s
+#source: start.s
+#as: --x32 -mx86-used-note=no
+#ld: -m elf32_x86_64 -z ibt
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[      ]+Owner[        ]+Data size[    ]+Description
+  GNU                  0x[0-9a-f]+     NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 feature: IBT
diff --git a/ld/testsuite/ld-x86-64/pr26711-1.d b/ld/testsuite/ld-x86-64/pr26711-1.d
new file mode 100644 (file)
index 0000000..d8e3cbf
--- /dev/null
@@ -0,0 +1,10 @@
+#source: pr26711.s
+#source: start.s
+#as: --64 -defsym __64_bit__=1 -mx86-used-note=no
+#ld: -m elf_x86_64 -z ibt
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[      ]+Owner[        ]+Data size[    ]+Description
+  GNU                  0x[0-9a-f]+     NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 feature: IBT
diff --git a/ld/testsuite/ld-x86-64/pr26711-2-x32.d b/ld/testsuite/ld-x86-64/pr26711-2-x32.d
new file mode 100644 (file)
index 0000000..9822f8d
--- /dev/null
@@ -0,0 +1,10 @@
+#source: pr26711.s
+#source: start.s
+#as: --x32 -mx86-used-note=no
+#ld: -m elf32_x86_64 -z shstk
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[      ]+Owner[        ]+Data size[    ]+Description
+  GNU                  0x[0-9a-f]+     NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 feature: SHSTK
diff --git a/ld/testsuite/ld-x86-64/pr26711-2.d b/ld/testsuite/ld-x86-64/pr26711-2.d
new file mode 100644 (file)
index 0000000..e24cfbf
--- /dev/null
@@ -0,0 +1,10 @@
+#source: pr26711.s
+#source: start.s
+#as: --64 -defsym __64_bit__=1 -mx86-used-note=no
+#ld: -m elf_x86_64 -z shstk
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[      ]+Owner[        ]+Data size[    ]+Description
+  GNU                  0x[0-9a-f]+     NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 feature: SHSTK
diff --git a/ld/testsuite/ld-x86-64/pr26711-3-x32.d b/ld/testsuite/ld-x86-64/pr26711-3-x32.d
new file mode 100644 (file)
index 0000000..0661c7d
--- /dev/null
@@ -0,0 +1,10 @@
+#source: pr26711.s
+#source: start.s
+#as: --x32 -mx86-used-note=no
+#ld: -m elf32_x86_64 -z ibt -z shstk
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[      ]+Owner[        ]+Data size[    ]+Description
+  GNU                  0x[0-9a-f]+     NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 feature: IBT, SHSTK
diff --git a/ld/testsuite/ld-x86-64/pr26711-3.d b/ld/testsuite/ld-x86-64/pr26711-3.d
new file mode 100644 (file)
index 0000000..87bc3cc
--- /dev/null
@@ -0,0 +1,10 @@
+#source: pr26711.s
+#source: start.s
+#as: --64 -defsym __64_bit__=1 -mx86-used-note=no
+#ld: -m elf_x86_64 -z ibt -z shstk
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[      ]+Owner[        ]+Data size[    ]+Description
+  GNU                  0x[0-9a-f]+     NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 feature: IBT, SHSTK
diff --git a/ld/testsuite/ld-x86-64/pr26711.s b/ld/testsuite/ld-x86-64/pr26711.s
new file mode 100644 (file)
index 0000000..8fa185d
--- /dev/null
@@ -0,0 +1,33 @@
+       .section ".note.gnu.property", "a"
+.ifdef __64_bit__
+       .p2align 3
+.else
+       .p2align 2
+.endif
+       .long 1f - 0f           /* name length */
+       .long 5f - 2f           /* data length */
+       .long 5                 /* note type */
+0:     .asciz "GNU"            /* vendor name */
+1:
+.ifdef __64_bit__
+       .p2align 3
+.else
+       .p2align 2
+.endif
+2:     .long 0xc0001002        /* pr_type.  */
+       .long 4f - 3f           /* pr_datasz.  */
+3:
+       .long 0x30
+4:
+.ifdef __64_bit__
+       .p2align 3
+.else
+       .p2align 2
+.endif
+5:
+
+       .text
+       .globl  foo
+       .type   foo, @function
+foo:
+       ret
diff --git a/ld/testsuite/ld-x86-64/pr27016a.d b/ld/testsuite/ld-x86-64/pr27016a.d
new file mode 100644 (file)
index 0000000..13200e3
--- /dev/null
@@ -0,0 +1,23 @@
+#source: pr27016a.s
+#source: pr27016b.s
+#as: --64 -mx86-used-note=no -mrelax-relocations=no
+#ld: -m elf_x86_64 -z max-page-size=0x200000 -z noseparate-code -e main
+#objdump: -dw
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+4000e8 <main>:
+ +[a-f0-9]+:   55                      push   %rbp
+ +[a-f0-9]+:   48 89 e5                mov    %rsp,%rbp
+ +[a-f0-9]+:   4c 8d 1d 39 3f 00 00    lea    0x3f39\(%rip\),%r11        # 40402c <thesym>
+ +[a-f0-9]+:   41 8b 03                mov    \(%r11\),%eax
+ +[a-f0-9]+:   8d 50 01                lea    0x1\(%rax\),%edx
+ +[a-f0-9]+:   4c 8d 1d 2c 3f 00 00    lea    0x3f2c\(%rip\),%r11        # 40402c <thesym>
+ +[a-f0-9]+:   41 89 13                mov    %edx,\(%r11\)
+ +[a-f0-9]+:   b8 00 00 00 00          mov    \$0x0,%eax
+ +[a-f0-9]+:   5d                      pop    %rbp
+ +[a-f0-9]+:   c3                      retq   
+#pass
diff --git a/ld/testsuite/ld-x86-64/pr27016a.s b/ld/testsuite/ld-x86-64/pr27016a.s
new file mode 100644 (file)
index 0000000..b64851a
--- /dev/null
@@ -0,0 +1,23 @@
+        .text
+        .comm   global_int,4,4
+        .globl  main
+        .type   main, @function
+main:
+        .cfi_startproc
+        pushq   %rbp
+        .cfi_def_cfa_offset 16
+        .cfi_offset 6, -16
+        movq    %rsp, %rbp
+        .cfi_def_cfa_register 6
+        movq    thesym@GOTPCREL(%rip), %r11
+        movl    (%r11), %eax
+        leal    1(%rax), %edx
+        movq    thesym@GOTPCREL(%rip), %r11
+        movl    %edx, (%r11)
+        movl    $0, %eax
+        popq    %rbp
+        .cfi_def_cfa 7, 8
+        ret
+        .cfi_endproc
+        .size   main, .-main
+        .section        .note.GNU-stack,"",@progbits
diff --git a/ld/testsuite/ld-x86-64/pr27016b.d b/ld/testsuite/ld-x86-64/pr27016b.d
new file mode 100644 (file)
index 0000000..d1b144b
--- /dev/null
@@ -0,0 +1,23 @@
+#source: pr27016a.s
+#source: pr27016b.s
+#as: --64 -mx86-used-note=no -mrelax-relocations=yes
+#ld: -m elf_x86_64 -z max-page-size=0x200000 -z noseparate-code -e main
+#objdump: -dw
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+4000e8 <main>:
+ +[a-f0-9]+:   55                      push   %rbp
+ +[a-f0-9]+:   48 89 e5                mov    %rsp,%rbp
+ +[a-f0-9]+:   49 c7 c3 2c 40 40 00    mov    \$0x40402c,%r11
+ +[a-f0-9]+:   41 8b 03                mov    \(%r11\),%eax
+ +[a-f0-9]+:   8d 50 01                lea    0x1\(%rax\),%edx
+ +[a-f0-9]+:   49 c7 c3 2c 40 40 00    mov    \$0x40402c,%r11
+ +[a-f0-9]+:   41 89 13                mov    %edx,\(%r11\)
+ +[a-f0-9]+:   b8 00 00 00 00          mov    \$0x0,%eax
+ +[a-f0-9]+:   5d                      pop    %rbp
+ +[a-f0-9]+:   c3                      retq   
+#pass
diff --git a/ld/testsuite/ld-x86-64/pr27016b.s b/ld/testsuite/ld-x86-64/pr27016b.s
new file mode 100644 (file)
index 0000000..ded8d7a
--- /dev/null
@@ -0,0 +1,4 @@
+       .globl thesym
+thesym = 0x40402c
+
+       .section        .note.GNU-stack,"",@progbits
index 1abb90b3a2ed16acdabc0c1cc8723262caeac268..e95d47ae8d69d0bc03fd10bc0b4a1f0eb629c4d8 100644 (file)
@@ -3,5 +3,6 @@ Displaying notes found in: .note.gnu.property
 [      ]+Owner[        ]+Data size[    ]+Description
   GNU                  0x[0-9a-f]+     NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x800000
+#...
        x86 ISA needed: CMOV, SSE
 #pass
index e94846e88ea41ab02adf0f07062eed273716d5df..a4b7bb71adf5e8ea34faa3b4b276da879889ff63 100644 (file)
@@ -3,5 +3,6 @@ Displaying notes found in: .note.gnu.property
 [      ]+Owner[        ]+Data size[    ]+Description
   GNU                  0x[0-9a-f]+     NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x800000
+#...
        x86 ISA needed: CMOV, SSE, SSE3
 #pass
index bd87a9317efabb96ec0896decaa9fbd1c5f42aa0..5ff95648c29c91948c9f002a384252851d2f2f40 100644 (file)
@@ -3,5 +3,6 @@ Displaying notes found in: .note.gnu.property
 [      ]+Owner[        ]+Data size[    ]+Description
   GNU                  0x[0-9a-f]+     NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x900000
+#...
        x86 ISA needed: CMOV, SSE, SSE3
 #pass
index d836f334963bf55c82ea63ac90edce824ec8cae5..91410304ea09bb6b062ca7c120f1adbc69bccfe7 100644 (file)
@@ -432,6 +432,12 @@ run_dump_test "pr25416-3"
 run_dump_test "pr25416-4"
 run_dump_test "pr26018"
 run_dump_test "pr26263"
+run_dump_test "pr26711-1"
+run_dump_test "pr26711-1-x32"
+run_dump_test "pr26711-2"
+run_dump_test "pr26711-2-x32"
+run_dump_test "pr26711-3"
+run_dump_test "pr26711-3-x32"
 
 if ![istarget "x86_64-*-linux*"] {
     return
@@ -641,6 +647,8 @@ run_dump_test "pr20253-5b"
 run_dump_test "tlsdesc2"
 run_dump_test "pr22048"
 run_dump_test "pr22929"
+run_dump_test "pr27016a"
+run_dump_test "pr27016b"
 
 proc undefined_weak {cflags ldflags} {
     set testname "Undefined weak symbol"
index 19d2b702d62e4f46c2c52d9485e684cbc981847d..42daff159480632bfca1219dead3773f5a012023 100644 (file)
@@ -1,3 +1,12 @@
+2020-11-15  Mark Wielaard  <mark@klomp.org>
+
+       Backport from the mainline:
+       2020-09-23  Mark Wielaard  <mark@klomp.org>
+
+       Sync with GCC
+       * dwarfnames.c (get_DW_UT_name): Define using DW_UT_FIRST, DW_UT
+       and DW_UT_END.
+
 2020-06-23  Nick Alcock  <nick.alcock@oracle.com>
 
        * bsearch_r.c: New file.
index 968d19175328cedd5facac796d258b886d1467f1..af11668b431f25093ce5d1efec19c00ecea1c7d9 100644 (file)
@@ -64,6 +64,11 @@ Boston, MA 02110-1301, USA.  */
   switch (idx) {                                       \
   DW_IDX (name, value)
 #define DW_END_IDX } return 0; }
+#define DW_FIRST_UT(name, value) \
+  const char *get_DW_UT_name (unsigned int ut) {       \
+  switch (ut) {                                        \
+  DW_UT (name, value)
+#define DW_END_UT } return 0; }
 
 #define DW_TAG(name, value) case name: return # name ;
 #define DW_TAG_DUP(name, value)
@@ -78,6 +83,7 @@ Boston, MA 02110-1301, USA.  */
 #define DW_CFA_DUP(name, value)
 #define DW_IDX(name, value) case name: return # name ;
 #define DW_IDX_DUP(name, value)
+#define DW_UT(name, value) case name: return # name ;
 
 #include "dwarf2.def"
 
@@ -95,6 +101,7 @@ Boston, MA 02110-1301, USA.  */
 #undef DW_END_CFA
 #undef DW_FIRST_IDX
 #undef DW_END_IDX
+#undef DW_END_UT
 
 #undef DW_TAG
 #undef DW_TAG_DUP
index b53a2bba98d3a2d08858184551edfeb92f7e60ab..fada4f8c94b516f2e8ab830f94ee905f4a98c540 100644 (file)
@@ -1,3 +1,31 @@
+2020-10-07  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR gas/26685
+       * i386-dis.c (mod_table): Replace Gv with Gdq on movdiri.
+
+2020-10-07  Jan Beulich  <jbeulich@suse.com>
+
+       * i386-dis.c (OP_E_memory): Revert previous change.
+
+2020-09-24  Alan Modra  <amodra@gmail.com>
+
+       Apply from master
+       2020-08-19  Alan Modra  <amodra@gmail.com>
+       * ppc-opc.c (powerpc_opcodes): Replace OBF with BF for vcmpsq,
+       vcmpuq and xvtlsbb.
+
+       2020-08-10  Alan Modra  <amodra@gmail.com>
+       * ppc-opc.c (powerpc_opcodes): Add many mtspr and mfspr extended
+       instructions.
+
+       2020-08-10  Alan Modra  <amodra@gmail.com>
+       * ppc-opc.c (powerpc_opcodes): Add exser, msgsndu, msgclru.
+       Enable icbt for power5, miso for power8.
+
+       2020-08-10  Alan Modra  <amodra@gmail.com>
+       * ppc-opc.c (powerpc_opcodes): Prioritise mtfprd and mtvrd over
+       mtvsrd, and similarly for mfvsrd.
+
 2020-09-19  Nick Clifton  <nickc@redhat.com>
 
        This is the 2.35.1 point release.
index 8e0b4a1c2b1ad530d7f49abcf83ba467fb80ff05..ea2ca1bb88eedb41e03a41876fca9e3617d766ce 100644 (file)
@@ -10496,7 +10496,7 @@ static const struct dis386 mod_table[][2] = {
   },
   {
     /* MOD_0F38F9_PREFIX_0 */
-    { "movdiri",       { Ev, Gv }, PREFIX_OPCODE },
+    { "movdiri",       { Ev, Gdq }, PREFIX_OPCODE },
   },
   {
     /* MOD_62_32BIT */
@@ -14190,7 +14190,7 @@ OP_E_memory (int bytemode, int sizeflag)
                  /* Without base nor index registers, zero-extend the
                     lower 32-bit displacement to 64 bits.  */
                  disp = (unsigned int) disp;
-                 needindex = scale;
+                 needindex = 1;
                }
              needaddr32 = 1;
            }
index 6932e4e820d90dc7247c58606843dfd11f7670f5..d15bde1326e60ebd26dc174142c9fb9981ce7a49 100644 (file)
@@ -4441,7 +4441,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"nmachhws",   XO (4, 110,0,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
 {"nmachhws.",  XO (4, 110,0,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
 {"vadduqm",    VX (4, 256),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
-{"vcmpuq",     VX (4, 257),    VXBF_MASK,   POWER10,   0,              {OBF, VA, VB}},
+{"vcmpuq",     VX (4, 257),    VXBF_MASK,   POWER10,   0,              {BF, VA, VB}},
 {"vmaxsb",     VX (4, 258),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
 {"vslb",       VX (4, 260),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
 {"vslq",       VX (4, 261),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
@@ -4459,7 +4459,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"macchwu",    XO (4, 140,0,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
 {"macchwu.",   XO (4, 140,0,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
 {"vaddcuq",    VX (4, 320),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
-{"vcmpsq",     VX (4, 321),    VXBF_MASK,   POWER10,   0,              {OBF, VA, VB}},
+{"vcmpsq",     VX (4, 321),    VXBF_MASK,   POWER10,   0,              {BF, VA, VB}},
 {"vmaxsh",     VX (4, 322),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
 {"vslh",       VX (4, 324),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
 {"vrlqnm",     VX (4, 325),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
@@ -6114,6 +6114,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"rlnm.",      M(23,1),        M_MASK,      PWRCOM,    PPCVLE,         {RA, RS, RB, MBE, ME}},
 
 {"nop",                OP(24),         0xffffffff,  PPCCOM,    PPCVLE,         {0}},
+{"exser",      0x63ff0000,     0xffffffff,  POWER9,    PPCVLE,         {0}},
 {"ori",                OP(24),         OP_MASK,     PPCCOM,    PPCVLE,         {RA, RS, UI}},
 {"oril",       OP(24),         OP_MASK,     PWRCOM,    PPCVLE,         {RA, RS, UI}},
 
@@ -6236,7 +6237,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 
 {"ldx",                X(31,21),       X_MASK,      PPC64,     0,              {RT, RA0, RB}},
 
-{"icbt",       X(31,22),  X_MASK, BOOKE|PPCE300|PPCA2|PPC476, 0,       {CT, RA0, RB}},
+{"icbt",       X(31,22), X_MASK, POWER5|BOOKE|PPCE300, 0,              {CT, RA0, RB}},
 
 {"lwzx",       X(31,23),       X_MASK,      PPCCOM,    0,              {RT, RA0, RB}},
 {"lx",         X(31,23),       X_MASK,      PWRCOM,    0,              {RT, RA, RB}},
@@ -6302,9 +6303,9 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"subf.",      XO(31,40,0,1),  XO_MASK,     PPC,       0,              {RT, RA, RB}},
 {"sub.",       XO(31,40,0,1),  XO_MASK,     PPC,       0,              {RT, RB, RA}},
 
-{"mfvsrd",     X(31,51),       XX1RB_MASK,   PPCVSX2,  0,              {RA, XS6}},
 {"mffprd",     X(31,51),       XX1RB_MASK|1, PPCVSX2,  0,              {RA, FRS}},
 {"mfvrd",      X(31,51)|1,     XX1RB_MASK|1, PPCVSX2,  0,              {RA, VS}},
+{"mfvsrd",     X(31,51),       XX1RB_MASK,   PPCVSX2,  0,              {RA, XS6}},
 {"eratilx",    X(31,51),       X_MASK,      PPCA2,     0,              {ERAT_T, RA, RB}},
 
 {"lbarx",      X(31,52),       XEH_MASK, POWER8|E6500, 0,              {RT, RA0, RB, EH}},
@@ -6354,6 +6355,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"mulhw",      XO(31,75,0,0),  XO_MASK,     PPC,       0,              {RT, RA, RB}},
 {"mulhw.",     XO(31,75,0,1),  XO_MASK,     PPC,       0,              {RT, RA, RB}},
 
+{"msgsndu",    XRTRA(31,78,0,0), XRTRA_MASK, POWER9,   0,              {RB}},
 {"dlmzb",      XRC(31,78,0), X_MASK, PPC403|PPC440|PPC476|TITAN, 0,    {RA, RS, RB}},
 {"dlmzb.",     XRC(31,78,1), X_MASK, PPC403|PPC440|PPC476|TITAN, 0,    {RA, RS, RB}},
 
@@ -6387,6 +6389,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 
 {"lxvrdx",     X(31,109),      XX1_MASK,    POWER10,   0,              {XT6, RA0, RB}},
 
+{"msgclru",    XRTRA(31,110,0,0), XRTRA_MASK, POWER9,  0,              {RB}},
 {"mvidsplt",   X(31,110),      X_MASK,      E6500,     0,              {VD, RA, RB}},
 
 {"mtsrdin",    X(31,114),      XRA_MASK,    PPC64,     0,              {RS, RB}},
@@ -6489,9 +6492,9 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 
 {"mtmsrd",     X(31,178),      XRLARB_MASK, PPC64,     0,              {RS, A_L}},
 
-{"mtvsrd",     X(31,179),      XX1RB_MASK,   PPCVSX2,  0,              {XT6, RA}},
 {"mtfprd",     X(31,179),      XX1RB_MASK|1, PPCVSX2,  0,              {FRT, RA}},
 {"mtvrd",      X(31,179)|1,    XX1RB_MASK|1, PPCVSX2,  0,              {VD, RA}},
+{"mtvsrd",     X(31,179),      XX1RB_MASK,   PPCVSX2,  0,              {XT6, RA}},
 {"eratre",     X(31,179),      X_MASK,      PPCA2,     0,              {RT, RA, WS}},
 
 {"stdux",      X(31,181),      X_MASK,      PPC64,     0,              {RS, RAS, RB}},
@@ -6738,11 +6741,13 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 
 {"mfmq",       XSPR(31,339,  0), XSPR_MASK, M601,      0,              {RT}},
 {"mfxer",      XSPR(31,339,  1), XSPR_MASK, COM,       0,              {RT}},
+{"mfudscr",    XSPR(31,339,  3), XSPR_MASK, POWER9,    0,              {RS}},
 {"mfrtcu",     XSPR(31,339,  4), XSPR_MASK, COM,       TITAN,          {RT}},
 {"mfrtcl",     XSPR(31,339,  5), XSPR_MASK, COM,       TITAN,          {RT}},
 {"mfdec",      XSPR(31,339,  6), XSPR_MASK, MFDEC1,    0,              {RT}},
 {"mflr",       XSPR(31,339,  8), XSPR_MASK, COM,       0,              {RT}},
 {"mfctr",      XSPR(31,339,  9), XSPR_MASK, COM,       0,              {RT}},
+{"mfuamr",     XSPR(31,339, 13), XSPR_MASK, POWER9,    0,              {RS}},
 {"mfdscr",     XSPR(31,339, 17), XSPR_MASK, POWER6,    0,              {RT}},
 {"mftid",      XSPR(31,339, 17), XSPR_MASK, POWER,     0,              {RT}},
 {"mfdsisr",    XSPR(31,339, 18), XSPR_MASK, COM,       TITAN,          {RT}},
@@ -6753,9 +6758,12 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"mfsrr0",     XSPR(31,339, 26), XSPR_MASK, COM,       0,              {RT}},
 {"mfsrr1",     XSPR(31,339, 27), XSPR_MASK, COM,       0,              {RT}},
 {"mfcfar",     XSPR(31,339, 28), XSPR_MASK, POWER6,    0,              {RT}},
+{"mfamr",      XSPR(31,339, 29), XSPR_MASK, POWER7,    0,              {RS}},
+{"mfpidr",     XSPR(31,339, 48), XSPR_MASK, POWER10,   0,              {RS}},
 {"mfpid",      XSPR(31,339, 48), XSPR_MASK, BOOKE,     0,              {RT}},
 {"mfcsrr0",    XSPR(31,339, 58), XSPR_MASK, BOOKE,     0,              {RT}},
 {"mfcsrr1",    XSPR(31,339, 59), XSPR_MASK, BOOKE,     0,              {RT}},
+{"mfiamr",     XSPR(31,339, 61), XSPR_MASK, POWER10,   0,              {RS}},
 {"mfdear",     XSPR(31,339, 61), XSPR_MASK, BOOKE,     0,              {RT}},
 {"mfesr",      XSPR(31,339, 62), XSPR_MASK, BOOKE,     0,              {RT}},
 {"mfivpr",     XSPR(31,339, 63), XSPR_MASK, BOOKE,     0,              {RT}},
@@ -6769,16 +6777,28 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"mfcounta",   XSPR(31,339,150), XSPR_MASK, PPC860,    0,              {RT}},
 {"mfcountb",   XSPR(31,339,151), XSPR_MASK, PPC860,    0,              {RT}},
 {"mfcmpe",     XSPR(31,339,152), XSPR_MASK, PPC860,    0,              {RT}},
+{"mffscr",     XSPR(31,339,153), XSPR_MASK, POWER10,   0,              {RS}},
 {"mfcmpf",     XSPR(31,339,153), XSPR_MASK, PPC860,    0,              {RT}},
 {"mfcmpg",     XSPR(31,339,154), XSPR_MASK, PPC860,    0,              {RT}},
 {"mfcmph",     XSPR(31,339,155), XSPR_MASK, PPC860,    0,              {RT}},
 {"mflctrl1",   XSPR(31,339,156), XSPR_MASK, PPC860,    0,              {RT}},
+{"mfuamor",    XSPR(31,339,157), XSPR_MASK, POWER7,    0,              {RS}},
 {"mflctrl2",   XSPR(31,339,157), XSPR_MASK, PPC860,    0,              {RT}},
 {"mfictrl",    XSPR(31,339,158), XSPR_MASK, PPC860,    0,              {RT}},
+{"mfpspb",     XSPR(31,339,159), XSPR_MASK, POWER10,   0,              {RS}},
 {"mfbar",      XSPR(31,339,159), XSPR_MASK, PPC860,    0,              {RT}},
+{"mfdpdes",    XSPR(31,339,176), XSPR_MASK, POWER10,   0,              {RS}},
+{"mfdawr0",    XSPR(31,339,180), XSPR_MASK, POWER10,   0,              {RS}},
+{"mfdawr1",    XSPR(31,339,181), XSPR_MASK, POWER10,   0,              {RS}},
+{"mfrpr",      XSPR(31,339,186), XSPR_MASK, POWER10,   0,              {RS}},
+{"mfciabr",    XSPR(31,339,187), XSPR_MASK, POWER10,   0,              {RS}},
+{"mfdawrx0",   XSPR(31,339,188), XSPR_MASK, POWER10,   0,              {RS}},
+{"mfdawrx1",   XSPR(31,339,189), XSPR_MASK, POWER10,   0,              {RS}},
+{"mfhfscr",    XSPR(31,339,190), XSPR_MASK, POWER10,   0,              {RS}},
 {"mfvrsave",   XSPR(31,339,256), XSPR_MASK, PPCVEC,    0,              {RT}},
 {"mfusprg0",   XSPR(31,339,256), XSPR_MASK, BOOKE,     0,              {RT}},
 {"mfsprg",     XSPR(31,339,256), XSPRG_MASK, PPC,      0,              {RT, SPRG}},
+{"mfusprg3",   XSPR(31,339,259), XSPR_MASK, POWER10,   0,              {RT}},
 {"mfsprg4",    XSPR(31,339,260), XSPR_MASK, PPC405|BOOKE, 0,           {RT}},
 {"mfsprg5",    XSPR(31,339,261), XSPR_MASK, PPC405|BOOKE, 0,           {RT}},
 {"mfsprg6",    XSPR(31,339,262), XSPR_MASK, PPC405|BOOKE, 0,           {RT}},
@@ -6794,20 +6814,37 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"mfear",      XSPR(31,339,282), XSPR_MASK, PPC,       TITAN,          {RT}},
 {"mfpir",      XSPR(31,339,286), XSPR_MASK, BOOKE,     0,              {RT}},
 {"mfpvr",      XSPR(31,339,287), XSPR_MASK, PPC,       0,              {RT}},
+{"mfhsprg0",   XSPR(31,339,304), XSPR_MASK, POWER10,   0,              {RS}},
 {"mfdbsr",     XSPR(31,339,304), XSPR_MASK, BOOKE,     0,              {RT}},
+{"mfhsprg1",   XSPR(31,339,305), XSPR_MASK, POWER10,   0,              {RS}},
+{"mfhdisr",    XSPR(31,339,306), XSPR_MASK, POWER10,   0,              {RS}},
+{"mfhdar",     XSPR(31,339,307), XSPR_MASK, POWER10,   0,              {RS}},
+{"mfspurr",    XSPR(31,339,308), XSPR_MASK, POWER10,   0,              {RS}},
 {"mfdbcr0",    XSPR(31,339,308), XSPR_MASK, BOOKE,     0,              {RT}},
+{"mfpurr",     XSPR(31,339,309), XSPR_MASK, POWER10,   0,              {RS}},
 {"mfdbcr1",    XSPR(31,339,309), XSPR_MASK, BOOKE,     0,              {RT}},
+{"mfhdec",     XSPR(31,339,310), XSPR_MASK, POWER10,   0,              {RS}},
 {"mfdbcr2",    XSPR(31,339,310), XSPR_MASK, BOOKE,     0,              {RT}},
 {"mfiac1",     XSPR(31,339,312), XSPR_MASK, BOOKE,     0,              {RT}},
+{"mfhrmor",    XSPR(31,339,313), XSPR_MASK, POWER10,   0,              {RS}},
 {"mfiac2",     XSPR(31,339,313), XSPR_MASK, BOOKE,     0,              {RT}},
+{"mfhsrr0",    XSPR(31,339,314), XSPR_MASK, POWER10,   0,              {RS}},
 {"mfiac3",     XSPR(31,339,314), XSPR_MASK, BOOKE,     0,              {RT}},
+{"mfhsrr1",    XSPR(31,339,315), XSPR_MASK, POWER10,   0,              {RS}},
 {"mfiac4",     XSPR(31,339,315), XSPR_MASK, BOOKE,     0,              {RT}},
 {"mfdac1",     XSPR(31,339,316), XSPR_MASK, BOOKE,     0,              {RT}},
 {"mfdac2",     XSPR(31,339,317), XSPR_MASK, BOOKE,     0,              {RT}},
+{"mflpcr",     XSPR(31,339,318), XSPR_MASK, POWER10,   0,              {RS}},
 {"mfdvc1",     XSPR(31,339,318), XSPR_MASK, BOOKE,     0,              {RT}},
+{"mflpidr",    XSPR(31,339,319), XSPR_MASK, POWER10,   0,              {RS}},
 {"mfdvc2",     XSPR(31,339,319), XSPR_MASK, BOOKE,     0,              {RT}},
+{"mfhmer",     XSPR(31,339,336), XSPR_MASK, POWER7,    0,              {RS}},
 {"mftsr",      XSPR(31,339,336), XSPR_MASK, BOOKE,     0,              {RT}},
+{"mfhmeer",    XSPR(31,339,337), XSPR_MASK, POWER7,    0,              {RS}},
+{"mfpcr",      XSPR(31,339,338), XSPR_MASK, POWER10,   0,              {RS}},
+{"mfheir",     XSPR(31,339,339), XSPR_MASK, POWER10,   0,              {RS}},
 {"mftcr",      XSPR(31,339,340), XSPR_MASK, BOOKE,     0,              {RT}},
+{"mfamor",     XSPR(31,339,349), XSPR_MASK, POWER7,    0,              {RS}},
 {"mfivor0",    XSPR(31,339,400), XSPR_MASK, BOOKE,     0,              {RT}},
 {"mfivor1",    XSPR(31,339,401), XSPR_MASK, BOOKE,     0,              {RT}},
 {"mfivor2",    XSPR(31,339,402), XSPR_MASK, BOOKE,     0,              {RT}},
@@ -6824,6 +6861,14 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"mfivor13",   XSPR(31,339,413), XSPR_MASK, BOOKE,     0,              {RT}},
 {"mfivor14",   XSPR(31,339,414), XSPR_MASK, BOOKE,     0,              {RT}},
 {"mfivor15",   XSPR(31,339,415), XSPR_MASK, BOOKE,     0,              {RT}},
+{"mftir",      XSPR(31,339,446), XSPR_MASK, POWER10,   0,              {RS}},
+{"mfptcr",     XSPR(31,339,464), XSPR_MASK, POWER10,   0,              {RS}},
+{"mfuspgr0",   XSPR(31,339,496), XSPR_MASK, POWER10,   0,              {RS}},
+{"mfuspgr1",   XSPR(31,339,497), XSPR_MASK, POWER10,   0,              {RS}},
+{"mfurmor",    XSPR(31,339,505), XSPR_MASK, POWER10,   0,              {RS}},
+{"mfusrr0",    XSPR(31,339,506), XSPR_MASK, POWER10,   0,              {RS}},
+{"mfusrr1",    XSPR(31,339,507), XSPR_MASK, POWER10,   0,              {RS}},
+{"mfsmfctrl",  XSPR(31,339,511), XSPR_MASK, POWER10,   0,              {RS}},
 {"mfspefscr",  XSPR(31,339,512), XSPR_MASK, PPCSPE,    0,              {RT}},
 {"mfbbear",    XSPR(31,339,513), XSPR_MASK, PPCBRLK,   0,              {RT}},
 {"mfbbtar",    XSPR(31,339,514), XSPR_MASK, PPCBRLK,   0,              {RT}},
@@ -6848,18 +6893,36 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"mfdpdr",     XSPR(31,339,630), XSPR_MASK, PPC860,    0,              {RT}},
 {"mfdpir",     XSPR(31,339,631), XSPR_MASK, PPC860,    0,              {RT}},
 {"mfimmr",     XSPR(31,339,638), XSPR_MASK, PPC860,    0,              {RT}},
+{"mfusier2",   XSPR(31,339,736), XSPR_MASK, POWER10,   0,              {RT}},
+{"mfsier2",    XSPR(31,339,736), XSPR_MASK, POWER10,   0,              {RT}},
+{"mfusier3",   XSPR(31,339,737), XSPR_MASK, POWER10,   0,              {RT}},
+{"mfsier3",    XSPR(31,339,737), XSPR_MASK, POWER10,   0,              {RT}},
+{"mfummcr3",   XSPR(31,339,738), XSPR_MASK, POWER10,   0,              {RT}},
+{"mfmmcr3",    XSPR(31,339,738), XSPR_MASK, POWER10,   0,              {RT}},
+{"mfusier",    XSPR(31,339,768), XSPR_MASK, POWER10,   0,              {RT}},
+{"mfsier",     XSPR(31,339,768), XSPR_MASK, POWER10,   0,              {RT}},
+{"mfummcra",   XSPR(31,339,770), XSPR_MASK, POWER9,    0,              {RS}},
+{"mfmmcra",    XSPR(31,339,770), XSPR_MASK, POWER7,    0,              {RS}},
 {"mfupmc1",    XSPR(31,339,771), XSPR_MASK, POWER9,    0,              {RT}},
-{"mfpmc1",     XSPR(31,339,771), XSPR_MASK, POWER9,    0,              {RT}},
+{"mfpmc1",     XSPR(31,339,771), XSPR_MASK, POWER7,    0,              {RT}},
 {"mfupmc2",    XSPR(31,339,772), XSPR_MASK, POWER9,    0,              {RT}},
-{"mfpmc2",     XSPR(31,339,772), XSPR_MASK, POWER9,    0,              {RT}},
+{"mfpmc2",     XSPR(31,339,772), XSPR_MASK, POWER7,    0,              {RT}},
 {"mfupmc3",    XSPR(31,339,773), XSPR_MASK, POWER9,    0,              {RT}},
-{"mfpmc3",     XSPR(31,339,773), XSPR_MASK, POWER9,    0,              {RT}},
+{"mfpmc3",     XSPR(31,339,773), XSPR_MASK, POWER7,    0,              {RT}},
 {"mfupmc4",    XSPR(31,339,774), XSPR_MASK, POWER9,    0,              {RT}},
-{"mfpmc4",     XSPR(31,339,774), XSPR_MASK, POWER9,    0,              {RT}},
+{"mfpmc4",     XSPR(31,339,774), XSPR_MASK, POWER7,    0,              {RT}},
 {"mfupmc5",    XSPR(31,339,775), XSPR_MASK, POWER9,    0,              {RT}},
-{"mfpmc5",     XSPR(31,339,775), XSPR_MASK, POWER9,    0,              {RT}},
+{"mfpmc5",     XSPR(31,339,775), XSPR_MASK, POWER7,    0,              {RT}},
 {"mfupmc6",    XSPR(31,339,776), XSPR_MASK, POWER9,    0,              {RT}},
-{"mfpmc6",     XSPR(31,339,776), XSPR_MASK, POWER9,    0,              {RT}},
+{"mfpmc6",     XSPR(31,339,776), XSPR_MASK, POWER7,    0,              {RT}},
+{"mfummcr0",   XSPR(31,339,779), XSPR_MASK, POWER9,    0,              {RS}},
+{"mfmmcr0",    XSPR(31,339,779), XSPR_MASK, POWER7,    0,              {RS}},
+{"mfusiar",    XSPR(31,339,780), XSPR_MASK, POWER9,    0,              {RS}},
+{"mfsiar",     XSPR(31,339,780), XSPR_MASK, POWER9,    0,              {RS}},
+{"mfusdar",    XSPR(31,339,781), XSPR_MASK, POWER9,    0,              {RS}},
+{"mfsdar",     XSPR(31,339,781), XSPR_MASK, POWER9,    0,              {RS}},
+{"mfummcr1",   XSPR(31,339,782), XSPR_MASK, POWER9,    0,              {RS}},
+{"mfmmcr1",    XSPR(31,339,782), XSPR_MASK, POWER7,    0,              {RS}},
 {"mfmi_ctr",   XSPR(31,339,784), XSPR_MASK, PPC860,    0,              {RT}},
 {"mfmi_ap",    XSPR(31,339,786), XSPR_MASK, PPC860,    0,              {RT}},
 {"mfmi_epn",   XSPR(31,339,787), XSPR_MASK, PPC860,    0,              {RT}},
@@ -6873,12 +6936,25 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"mfmd_twc",   XSPR(31,339,797), XSPR_MASK, PPC860,    0,              {RT}},
 {"mfmd_rpn",   XSPR(31,339,798), XSPR_MASK, PPC860,    0,              {RT}},
 {"mfm_tw",     XSPR(31,339,799), XSPR_MASK, PPC860,    0,              {RT}},
+{"mfbescrs",   XSPR(31,339,800), XSPR_MASK, POWER9,    0,              {RS}},
+{"mfbescrsu",  XSPR(31,339,801), XSPR_MASK, POWER9,    0,              {RS}},
+{"mfbescrr",   XSPR(31,339,802), XSPR_MASK, POWER9,    0,              {RS}},
+{"mfbescrru",  XSPR(31,339,803), XSPR_MASK, POWER9,    0,              {RS}},
+{"mfebbhr",    XSPR(31,339,804), XSPR_MASK, POWER9,    0,              {RS}},
+{"mfebbrr",    XSPR(31,339,805), XSPR_MASK, POWER9,    0,              {RS}},
+{"mfbescr",    XSPR(31,339,806), XSPR_MASK, POWER9,    0,              {RS}},
+{"mftar",      XSPR(31,339,815), XSPR_MASK, POWER9,    0,              {RS}},
+{"mfasdr",     XSPR(31,339,816), XSPR_MASK, POWER10,   0,              {RS}},
 {"mfmi_dbcam", XSPR(31,339,816), XSPR_MASK, PPC860,    0,              {RT}},
 {"mfmi_dbram0",        XSPR(31,339,817), XSPR_MASK, PPC860,    0,              {RT}},
 {"mfmi_dbram1",        XSPR(31,339,818), XSPR_MASK, PPC860,    0,              {RT}},
+{"mfpsscr",    XSPR(31,339,823), XSPR_MASK, POWER10,   0,              {RS}},
 {"mfmd_dbcam", XSPR(31,339,824), XSPR_MASK, PPC860,    0,              {RT}},
 {"mfmd_dbram0",        XSPR(31,339,825), XSPR_MASK, PPC860,    0,              {RT}},
 {"mfmd_dbram1",        XSPR(31,339,826), XSPR_MASK, PPC860,    0,              {RT}},
+{"mfic",       XSPR(31,339,848), XSPR_MASK, POWER8,    0,              {RS}},
+{"mfvtb",      XSPR(31,339,849), XSPR_MASK, POWER8,    0,              {RS}},
+{"mfhpsscr",   XSPR(31,339,855), XSPR_MASK, POWER10,   0,              {RS}},
 {"mfivndx",    XSPR(31,339,880), XSPR_MASK, TITAN,     0,              {RT}},
 {"mfdvndx",    XSPR(31,339,881), XSPR_MASK, TITAN,     0,              {RT}},
 {"mfivlim",    XSPR(31,339,882), XSPR_MASK, TITAN,     0,              {RT}},
@@ -7051,14 +7127,15 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 
 {"sthux",      X(31,439),      X_MASK,      COM,       0,              {RS, RAS, RB}},
 
-{"mdors",      0x7f9ce378,     0xffffffff,  E500MC,    0,              {0}},
-
-{"miso",       0x7f5ad378,     0xffffffff,  E6500,     0,              {0}},
-
-/* The "yield", "mdoio" and "mdoom" instructions are extended mnemonics for
-   "or rX,rX,rX", with rX being r27, r29 and r30 respectively. */
+/* or 26,26,26 */
+{"miso",       0x7f5ad378,   0xffffffff, POWER8|E6500, 0,              {0}},
+/* or 27,27,27 */
 {"yield",      0x7f7bdb78,     0xffffffff,  POWER7,    0,              {0}},
+/* or 28,28,28 */
+{"mdors",      0x7f9ce378,     0xffffffff,  E500MC,    0,              {0}},
+/* or 29,29,29 */
 {"mdoio",      0x7fbdeb78,     0xffffffff,  POWER7,    0,              {0}},
+/* or 30,30,30 */
 {"mdoom",      0x7fdef378,     0xffffffff,  POWER7,    0,              {0}},
 {"mr",         XRC(31,444,0),  X_MASK,      COM,       0,              {RA, RSB}},
 {"or",         XRC(31,444,0),  X_MASK,      COM,       0,              {RA, RS, RB}},
@@ -7124,8 +7201,10 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 
 {"mtmq",       XSPR(31,467,  0), XSPR_MASK, M601,      0,              {RS}},
 {"mtxer",      XSPR(31,467,  1), XSPR_MASK, COM,       0,              {RS}},
+{"mtudscr",    XSPR(31,467,  3), XSPR_MASK, POWER9,    0,              {RS}},
 {"mtlr",       XSPR(31,467,  8), XSPR_MASK, COM,       0,              {RS}},
 {"mtctr",      XSPR(31,467,  9), XSPR_MASK, COM,       0,              {RS}},
+{"mtuamr",     XSPR(31,467, 13), XSPR_MASK, POWER9,    0,              {RS}},
 {"mtdscr",     XSPR(31,467, 17), XSPR_MASK, POWER6,    0,              {RS}},
 {"mttid",      XSPR(31,467, 17), XSPR_MASK, POWER,     0,              {RS}},
 {"mtdsisr",    XSPR(31,467, 18), XSPR_MASK, COM,       TITAN,          {RS}},
@@ -7138,13 +7217,20 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"mtsrr0",     XSPR(31,467, 26), XSPR_MASK, COM,       0,              {RS}},
 {"mtsrr1",     XSPR(31,467, 27), XSPR_MASK, COM,       0,              {RS}},
 {"mtcfar",     XSPR(31,467, 28), XSPR_MASK, POWER6,    0,              {RS}},
+{"mtamr",      XSPR(31,467, 29), XSPR_MASK, POWER7,    0,              {RS}},
+{"mtpidr",     XSPR(31,467, 48), XSPR_MASK, POWER10,   0,              {RS}},
 {"mtpid",      XSPR(31,467, 48), XSPR_MASK, BOOKE,     0,              {RS}},
 {"mtdecar",    XSPR(31,467, 54), XSPR_MASK, BOOKE,     0,              {RS}},
 {"mtcsrr0",    XSPR(31,467, 58), XSPR_MASK, BOOKE,     0,              {RS}},
 {"mtcsrr1",    XSPR(31,467, 59), XSPR_MASK, BOOKE,     0,              {RS}},
+{"mtiamr",     XSPR(31,467, 61), XSPR_MASK, POWER10,   0,              {RS}},
 {"mtdear",     XSPR(31,467, 61), XSPR_MASK, BOOKE,     0,              {RS}},
 {"mtesr",      XSPR(31,467, 62), XSPR_MASK, BOOKE,     0,              {RS}},
 {"mtivpr",     XSPR(31,467, 63), XSPR_MASK, BOOKE,     0,              {RS}},
+{"mttfhar",    XSPR(31,467,128), XSPR_MASK, POWER9,    0,              {RS}},
+{"mttfiar",    XSPR(31,467,129), XSPR_MASK, POWER9,    0,              {RS}},
+{"mttexasr",   XSPR(31,467,130), XSPR_MASK, POWER9,    0,              {RS}},
+{"mttexasru",  XSPR(31,467,131), XSPR_MASK, POWER9,    0,              {RS}},
 {"mtcmpa",     XSPR(31,467,144), XSPR_MASK, PPC860,    0,              {RS}},
 {"mtcmpb",     XSPR(31,467,145), XSPR_MASK, PPC860,    0,              {RS}},
 {"mtcmpc",     XSPR(31,467,146), XSPR_MASK, PPC860,    0,              {RS}},
@@ -7155,13 +7241,24 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"mtcountb",   XSPR(31,467,151), XSPR_MASK, PPC860,    0,              {RS}},
 {"mtctrl",     XSPR(31,467,152), XSPR_MASK, POWER4,    0,              {RS}},
 {"mtcmpe",     XSPR(31,467,152), XSPR_MASK, PPC860,    0,              {RS}},
+{"mtfscr",     XSPR(31,467,153), XSPR_MASK, POWER10,   0,              {RS}},
 {"mtcmpf",     XSPR(31,467,153), XSPR_MASK, PPC860,    0,              {RS}},
 {"mtcmpg",     XSPR(31,467,154), XSPR_MASK, PPC860,    0,              {RS}},
 {"mtcmph",     XSPR(31,467,155), XSPR_MASK, PPC860,    0,              {RS}},
 {"mtlctrl1",   XSPR(31,467,156), XSPR_MASK, PPC860,    0,              {RS}},
+{"mtuamor",    XSPR(31,467,157), XSPR_MASK, POWER7,    0,              {RS}},
 {"mtlctrl2",   XSPR(31,467,157), XSPR_MASK, PPC860,    0,              {RS}},
 {"mtictrl",    XSPR(31,467,158), XSPR_MASK, PPC860,    0,              {RS}},
+{"mtpspb",     XSPR(31,467,159), XSPR_MASK, POWER10,   0,              {RS}},
 {"mtbar",      XSPR(31,467,159), XSPR_MASK, PPC860,    0,              {RS}},
+{"mtdpdes",    XSPR(31,467,176), XSPR_MASK, POWER10,   0,              {RS}},
+{"mtdawr0",    XSPR(31,467,180), XSPR_MASK, POWER10,   0,              {RS}},
+{"mtdawr1",    XSPR(31,467,181), XSPR_MASK, POWER10,   0,              {RS}},
+{"mtrpr",      XSPR(31,467,186), XSPR_MASK, POWER10,   0,              {RS}},
+{"mtciabr",    XSPR(31,467,187), XSPR_MASK, POWER10,   0,              {RS}},
+{"mtdawrx0",   XSPR(31,467,188), XSPR_MASK, POWER10,   0,              {RS}},
+{"mtdawrx1",   XSPR(31,467,189), XSPR_MASK, POWER10,   0,              {RS}},
+{"mthfscr",    XSPR(31,467,190), XSPR_MASK, POWER10,   0,              {RS}},
 {"mtvrsave",   XSPR(31,467,256), XSPR_MASK, PPCVEC,    0,              {RS}},
 {"mtusprg0",   XSPR(31,467,256), XSPR_MASK, BOOKE,     0,              {RS}},
 {"mtsprg",     XSPR(31,467,256), XSPRG_MASK, PPC,      0,              {SPRG, RS}},
@@ -7177,20 +7274,38 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"mtear",      XSPR(31,467,282), XSPR_MASK, PPC,       TITAN,          {RS}},
 {"mttbl",      XSPR(31,467,284), XSPR_MASK, PPC,       0,              {RS}},
 {"mttbu",      XSPR(31,467,285), XSPR_MASK, PPC,       0,              {RS}},
+{"mttbu40",    XSPR(31,467,286), XSPR_MASK, POWER10,   0,              {RS}},
+{"mthsprg0",   XSPR(31,467,304), XSPR_MASK, POWER10,   0,              {RS}},
 {"mtdbsr",     XSPR(31,467,304), XSPR_MASK, BOOKE,     0,              {RS}},
+{"mthsprg1",   XSPR(31,467,305), XSPR_MASK, POWER10,   0,              {RS}},
+{"mthdisr",    XSPR(31,467,306), XSPR_MASK, POWER10,   0,              {RS}},
+{"mthdar",     XSPR(31,467,307), XSPR_MASK, POWER10,   0,              {RS}},
+{"mtspurr",    XSPR(31,467,308), XSPR_MASK, POWER10,   0,              {RS}},
 {"mtdbcr0",    XSPR(31,467,308), XSPR_MASK, BOOKE,     0,              {RS}},
+{"mtpurr",     XSPR(31,467,309), XSPR_MASK, POWER10,   0,              {RS}},
 {"mtdbcr1",    XSPR(31,467,309), XSPR_MASK, BOOKE,     0,              {RS}},
+{"mthdec",     XSPR(31,467,310), XSPR_MASK, POWER10,   0,              {RS}},
 {"mtdbcr2",    XSPR(31,467,310), XSPR_MASK, BOOKE,     0,              {RS}},
 {"mtiac1",     XSPR(31,467,312), XSPR_MASK, BOOKE,     0,              {RS}},
+{"mthrmor",    XSPR(31,467,313), XSPR_MASK, POWER10,   0,              {RS}},
 {"mtiac2",     XSPR(31,467,313), XSPR_MASK, BOOKE,     0,              {RS}},
+{"mthsrr0",    XSPR(31,467,314), XSPR_MASK, POWER10,   0,              {RS}},
 {"mtiac3",     XSPR(31,467,314), XSPR_MASK, BOOKE,     0,              {RS}},
+{"mthsrr1",    XSPR(31,467,315), XSPR_MASK, POWER10,   0,              {RS}},
 {"mtiac4",     XSPR(31,467,315), XSPR_MASK, BOOKE,     0,              {RS}},
 {"mtdac1",     XSPR(31,467,316), XSPR_MASK, BOOKE,     0,              {RS}},
 {"mtdac2",     XSPR(31,467,317), XSPR_MASK, BOOKE,     0,              {RS}},
+{"mtlpcr",     XSPR(31,467,318), XSPR_MASK, POWER10,   0,              {RS}},
 {"mtdvc1",     XSPR(31,467,318), XSPR_MASK, BOOKE,     0,              {RS}},
+{"mtlpidr",    XSPR(31,467,319), XSPR_MASK, POWER10,   0,              {RS}},
 {"mtdvc2",     XSPR(31,467,319), XSPR_MASK, BOOKE,     0,              {RS}},
+{"mthmer",     XSPR(31,467,336), XSPR_MASK, POWER7,    0,              {RS}},
 {"mttsr",      XSPR(31,467,336), XSPR_MASK, BOOKE,     0,              {RS}},
+{"mthmeer",    XSPR(31,467,337), XSPR_MASK, POWER7,    0,              {RS}},
+{"mtpcr",      XSPR(31,467,338), XSPR_MASK, POWER10,   0,              {RS}},
+{"mtheir",     XSPR(31,467,339), XSPR_MASK, POWER10,   0,              {RS}},
 {"mttcr",      XSPR(31,467,340), XSPR_MASK, BOOKE,     0,              {RS}},
+{"mtamor",     XSPR(31,467,349), XSPR_MASK, POWER7,    0,              {RS}},
 {"mtivor0",    XSPR(31,467,400), XSPR_MASK, BOOKE,     0,              {RS}},
 {"mtivor1",    XSPR(31,467,401), XSPR_MASK, BOOKE,     0,              {RS}},
 {"mtivor2",    XSPR(31,467,402), XSPR_MASK, BOOKE,     0,              {RS}},
@@ -7207,6 +7322,13 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"mtivor13",   XSPR(31,467,413), XSPR_MASK, BOOKE,     0,              {RS}},
 {"mtivor14",   XSPR(31,467,414), XSPR_MASK, BOOKE,     0,              {RS}},
 {"mtivor15",   XSPR(31,467,415), XSPR_MASK, BOOKE,     0,              {RS}},
+{"mtptcr",     XSPR(31,467,464), XSPR_MASK, POWER10,   0,              {RS}},
+{"mtuspgr0",   XSPR(31,467,496), XSPR_MASK, POWER10,   0,              {RS}},
+{"mtuspgr1",   XSPR(31,467,497), XSPR_MASK, POWER10,   0,              {RS}},
+{"mturmor",    XSPR(31,467,505), XSPR_MASK, POWER10,   0,              {RS}},
+{"mtusrr0",    XSPR(31,467,506), XSPR_MASK, POWER10,   0,              {RS}},
+{"mtusrr1",    XSPR(31,467,507), XSPR_MASK, POWER10,   0,              {RS}},
+{"mtsmfctrl",  XSPR(31,467,511), XSPR_MASK, POWER10,   0,              {RS}},
 {"mtspefscr",  XSPR(31,467,512), XSPR_MASK, PPCSPE,    0,              {RS}},
 {"mtbbear",    XSPR(31,467,513), XSPR_MASK, PPCBRLK,   0,              {RS}},
 {"mtbbtar",    XSPR(31,467,514), XSPR_MASK, PPCBRLK,   0,              {RS}},
@@ -7221,12 +7343,44 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"mtmcsrr0",   XSPR(31,467,570), XSPR_MASK, PPCRFMCI,  0,              {RS}},
 {"mtmcsrr1",   XSPR(31,467,571), XSPR_MASK, PPCRFMCI,  0,              {RS}},
 {"mtmcsr",     XSPR(31,467,572), XSPR_MASK, PPCRFMCI,  0,              {RS}},
+{"mtsier2",    XSPR(31,467,752), XSPR_MASK, POWER10,   0,              {RS}},
+{"mtsier3",    XSPR(31,467,753), XSPR_MASK, POWER10,   0,              {RS}},
+{"mtmmcr3",    XSPR(31,467,754), XSPR_MASK, POWER10,   0,              {RS}},
+{"mtummcr2",   XSPR(31,467,769), XSPR_MASK, POWER9,    0,              {RS}},
+{"mtmmcr2",    XSPR(31,467,769), XSPR_MASK, POWER9,    0,              {RS}},
+{"mtummcra",   XSPR(31,467,770), XSPR_MASK, POWER9,    0,              {RS}},
 {"mtupmc1",    XSPR(31,467,771), XSPR_MASK, POWER9,    0,              {RS}},
 {"mtupmc2",    XSPR(31,467,772), XSPR_MASK, POWER9,    0,              {RS}},
 {"mtupmc3",    XSPR(31,467,773), XSPR_MASK, POWER9,    0,              {RS}},
 {"mtupmc4",    XSPR(31,467,774), XSPR_MASK, POWER9,    0,              {RS}},
 {"mtupmc5",    XSPR(31,467,775), XSPR_MASK, POWER9,    0,              {RS}},
 {"mtupmc6",    XSPR(31,467,776), XSPR_MASK, POWER9,    0,              {RS}},
+{"mtummcr0",   XSPR(31,467,779), XSPR_MASK, POWER9,    0,              {RS}},
+{"mtsier",     XSPR(31,467,784), XSPR_MASK, POWER10,   0,              {RS}},
+{"mtmmcra",    XSPR(31,467,786), XSPR_MASK, POWER7,    0,              {RS}},
+{"mtpmc1",     XSPR(31,467,787), XSPR_MASK, POWER7,    0,              {RS}},
+{"mtpmc2",     XSPR(31,467,788), XSPR_MASK, POWER7,    0,              {RS}},
+{"mtpmc3",     XSPR(31,467,789), XSPR_MASK, POWER7,    0,              {RS}},
+{"mtpmc4",     XSPR(31,467,790), XSPR_MASK, POWER7,    0,              {RS}},
+{"mtpmc5",     XSPR(31,467,791), XSPR_MASK, POWER7,    0,              {RS}},
+{"mtpmc6",     XSPR(31,467,792), XSPR_MASK, POWER7,    0,              {RS}},
+{"mtmmcr0",    XSPR(31,467,795), XSPR_MASK, POWER7,    0,              {RS}},
+{"mtsiar",     XSPR(31,467,796), XSPR_MASK, POWER10,   0,              {RS}},
+{"mtsdar",     XSPR(31,467,797), XSPR_MASK, POWER10,   0,              {RS}},
+{"mtmmcr1",    XSPR(31,467,798), XSPR_MASK, POWER7,    0,              {RS}},
+{"mtbescrs",   XSPR(31,467,800), XSPR_MASK, POWER9,    0,              {RS}},
+{"mtbescrsu",  XSPR(31,467,801), XSPR_MASK, POWER9,    0,              {RS}},
+{"mtbescrr",   XSPR(31,467,802), XSPR_MASK, POWER9,    0,              {RS}},
+{"mtbescrru",  XSPR(31,467,803), XSPR_MASK, POWER9,    0,              {RS}},
+{"mtebbhr",    XSPR(31,467,804), XSPR_MASK, POWER9,    0,              {RS}},
+{"mtebbrr",    XSPR(31,467,805), XSPR_MASK, POWER9,    0,              {RS}},
+{"mtbescr",    XSPR(31,467,806), XSPR_MASK, POWER9,    0,              {RS}},
+{"mttar",      XSPR(31,467,815), XSPR_MASK, POWER9,    0,              {RS}},
+{"mtasdr",     XSPR(31,467,816), XSPR_MASK, POWER10,   0,              {RS}},
+{"mtpsscr",    XSPR(31,467,823), XSPR_MASK, POWER10,   0,              {RS}},
+{"mtic",       XSPR(31,467,848), XSPR_MASK, POWER8,    0,              {RS}},
+{"mtvtb",      XSPR(31,467,849), XSPR_MASK, POWER8,    0,              {RS}},
+{"mthpsscr",   XSPR(31,467,855), XSPR_MASK, POWER10,   0,              {RS}},
 {"mtivndx",    XSPR(31,467,880), XSPR_MASK, TITAN,     0,              {RS}},
 {"mtdvndx",    XSPR(31,467,881), XSPR_MASK, TITAN,     0,              {RS}},
 {"mtivlim",    XSPR(31,467,882), XSPR_MASK, TITAN,     0,              {RS}},
@@ -8301,7 +8455,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
 {"xxgenpcvdm", X(60,949),      XX1_MASK,    POWER10,   PPCVLE,         {XT6, VB, UIMM}},
 {"xvxexpdp",   XX2VA(60,475,0),XX2_MASK,    PPCVSX3,   PPCVLE,         {XT6, XB6}},
 {"xvxsigdp",   XX2VA(60,475,1),XX2_MASK,    PPCVSX3,   PPCVLE,         {XT6, XB6}},
-{"xvtlsbb",    XX2VA(60,475,2),XX2BF_MASK,  POWER10,   PPCVLE,         {OBF, XB6}},
+{"xvtlsbb",    XX2VA(60,475,2),XX2BF_MASK,  POWER10,   PPCVLE,         {BF, XB6}},
 {"xxbrh",      XX2VA(60,475,7),XX2_MASK,    PPCVSX3,   PPCVLE,         {XT6, XB6}},
 {"xvxexpsp",   XX2VA(60,475,8),XX2_MASK,    PPCVSX3,   PPCVLE,         {XT6, XB6}},
 {"xvxsigsp",   XX2VA(60,475,9),XX2_MASK,    PPCVSX3,   PPCVLE,         {XT6, XB6}},