ppc64: Fix stwux encoding
authorJan Kratochvil <jan.kratochvil@redhat.com>
Mon, 5 Feb 2018 19:19:49 +0000 (20:19 +0100)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Mon, 5 Feb 2018 19:20:23 +0000 (20:20 +0100)
With gcc-8.0.1-0.9.fc28.x86_64 I get:

../../gdb/rs6000-tdep.c: In function 'CORE_ADDR skip_prologue(gdbarch*, CORE_ADDR, CORE_ADDR, rs6000_framedata*)':
../../gdb/rs6000-tdep.c:1911:34: error: bitwise comparison always evaluates to false [-Werror=tautological-compare]
       else if ((op & 0xfc1f016a) == 0x7c01016e)
                ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~

https://www.ibm.com/support/knowledgecenter/en/ssw_aix_72/com.ibm.aix.alangref/idalangref_stwux_stux_instrs.htm
says
bit 21 - 30 = 183
Those are bits 1..10 in normal bit order: 183<<1 = 0x16e

gdb/ChangeLog
2018-02-04  Jan Kratochvil  <jan.kratochvil@redhat.com>

* rs6000-tdep.c (skip_prologue): Fix stwux encoding.

gdb/rs6000-tdep.c

index 794605f..70dc55f 100644 (file)
@@ -1857,7 +1857,7 @@ skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR lim_pc,
          offset = fdata->offset;
          continue;
        }
-      else if ((op & 0xfc1f016a) == 0x7c01016e)
+      else if ((op & 0xfc1f016e) == 0x7c01016e)
        {                       /* stwux rX,r1,rY */
          /* No way to figure out what r1 is going to be.  */
          fdata->frameless = 0;