Mask out PREFIX_ADDR when adding prefix to opcode
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 19 Dec 2013 22:28:18 +0000 (14:28 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 19 Dec 2013 22:28:18 +0000 (14:28 -0800)
PREFIX_ADDR isn't a prefix to opcode.  This patch masks out PREFIX_ADDR
when adding prefix to opcode.

PR gdb/16305
* i386-tdep.c (i386_process_record): Mask out PREFIX_ADDR when
adding prefix to opcode.

gdb/ChangeLog
gdb/i386-tdep.c

index 76cedd7..d885207 100644 (file)
@@ -1,5 +1,11 @@
 2013-12-19  H.J. Lu  <hongjiu.lu@intel.com>
 
+       PR gdb/16305
+       * i386-tdep.c (i386_process_record): Mask out PREFIX_ADDR when
+       adding prefix to opcode.
+
+2013-12-19  H.J. Lu  <hongjiu.lu@intel.com>
+
        PR gdb/16304
        * i386-tdep.c (i386_record_lea_modrm_addr): Don't use 16-bit
        address in 64-bit mode.
index 8992088..4f86f0c 100644 (file)
@@ -7048,7 +7048,8 @@ no_support_3dnow_data:
     case 0x0ffc:
     case 0x0ffd:
     case 0x0ffe:
-      switch (prefixes)
+      /* Mask out PREFIX_ADDR.  */
+      switch ((prefixes & ~PREFIX_ADDR))
         {
         case PREFIX_REPNZ:
           opcode |= 0xf20000;