PR21303, objdump doesn't show e200z4 insns
authorAlan Modra <amodra@gmail.com>
Sun, 26 Mar 2017 21:49:48 +0000 (08:19 +1030)
committerAlan Modra <amodra@gmail.com>
Mon, 27 Mar 2017 11:19:32 +0000 (21:49 +1030)
PR 21303
opcodes/
* ppc-dis.c (struct ppc_mopt): Comment.
(ppc_opts <e200z4>): Move PPC_OPCODE_VLE from .sticky to .cpu.
gas/
* testsuite/gas/ppc/pr21303.d,
* testsuite/gas/ppc/pr21303.s: New test
* testsuite/gas/ppc/ppc.exp: Run it.

gas/ChangeLog
gas/testsuite/gas/ppc/ppc.exp
gas/testsuite/gas/ppc/pr21303.d [new file with mode: 0644]
gas/testsuite/gas/ppc/pr21303.s [new file with mode: 0644]
opcodes/ChangeLog
opcodes/ppc-dis.c

index c29d03a..1ec3708 100644 (file)
@@ -1,3 +1,10 @@
+2017-03-27  Alan Modra  <amodra@gmail.com>
+
+       PR 21303
+       * testsuite/gas/ppc/pr21303.d,
+       * testsuite/gas/ppc/pr21303.s: New test
+       * testsuite/gas/ppc/ppc.exp: Run it.
+
 2017-03-27  Rinat Zelig  <rinat@mellanox.com>
 
        * testsuite/gas/arc/nps400-12.s: New file.
index 86db455..55367ad 100644 (file)
@@ -50,6 +50,7 @@ if { [istarget powerpc*-*-*] } then {
        run_dump_test "common"
        run_dump_test "476"
        run_dump_test "a2"
+       run_dump_test "pr21303"
        if { ![istarget powerpc*le-*-*] } then {
            run_dump_test "vle"
            run_dump_test "vle-reloc"
diff --git a/gas/testsuite/gas/ppc/pr21303.d b/gas/testsuite/gas/ppc/pr21303.d
new file mode 100644 (file)
index 0000000..64761a4
--- /dev/null
@@ -0,0 +1,12 @@
+#objdump: -d -Me200z4
+#as: -a32 -mbig -me200z4
+
+.*
+
+Disassembly of section \.text:
+
+0+ <\.text>:
+   0:  70 00 00 00     e_li    r0,0
+   4:  7c 01 14 04     lbdcbx  r0,r1,r2
+   8:  7c 01 14 44     lhdcbx  r0,r1,r2
+   c:  7c 01 14 84     lwdcbx  r0,r1,r2
diff --git a/gas/testsuite/gas/ppc/pr21303.s b/gas/testsuite/gas/ppc/pr21303.s
new file mode 100644 (file)
index 0000000..890ba94
--- /dev/null
@@ -0,0 +1,5 @@
+ .text
+ e_li 0, 0
+ lbdcbx 0, 1, 2
+ lhdcbx 0, 1, 2
+ lwdcbx 0, 1, 2
index 7062598..b6a2a5a 100644 (file)
@@ -1,3 +1,9 @@
+2017-03-27  Alan Modra  <amodra@gmail.com>
+
+       PR 21303
+       * ppc-dis.c (struct ppc_mopt): Comment.
+       (ppc_opts <e200z4>): Move PPC_OPCODE_VLE from .sticky to .cpu.
+
 2017-03-27  Rinat Zelig  <rinat@mellanox.com>
 
        * arc-nps400-tbl.h: Add Ultra Ip and Miscellaneous instructions format.
index ca50689..f3db062 100644 (file)
@@ -46,8 +46,19 @@ struct dis_private
   (((struct dis_private *) ((INFO)->private_data))->dialect)
 
 struct ppc_mopt {
+  /* Option string, without -m or -M prefix.  */
   const char *opt;
+  /* CPU option flags.  */
   ppc_cpu_t cpu;
+  /* Flags that should stay on, even when combined with another cpu
+     option.  This should only be used for generic options like
+     "-many" or "-maltivec" where it is reasonable to add some
+     capability to another cpu selection.  The added flags are sticky
+     so that, for example, "-many -me500" and "-me500 -many" result in
+     the same assembler or disassembler behaviour.  Do not use
+     "sticky" for specific cpus, as this will prevent that cpu's flags
+     from overriding the defaults set in powerpc_init_dialect or a
+     prior -m option.  */
   ppc_cpu_t sticky;
 };
 
@@ -109,8 +120,8 @@ struct ppc_mopt ppc_opts[] = {
   { "e200z4",  (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE| PPC_OPCODE_SPE
                | PPC_OPCODE_ISEL | PPC_OPCODE_EFS | PPC_OPCODE_BRLOCK
                | PPC_OPCODE_PMR | PPC_OPCODE_CACHELCK | PPC_OPCODE_RFMCI
-               | PPC_OPCODE_E500 | PPC_OPCODE_E200Z4),
-    PPC_OPCODE_VLE },
+               | PPC_OPCODE_E500 | PPC_OPCODE_VLE | PPC_OPCODE_E200Z4),
+    0 },
   { "e300",    PPC_OPCODE_PPC | PPC_OPCODE_E300,
     0 },
   { "e500",    (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE | PPC_OPCODE_SPE