This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

PATCH: PR binutils/2829: bad disassembly for 0xC7 /1 "movl $___,"


Opcodes 0xc6 and 0xc7 are group 11. This patch fixes the disassembler.


H.J.
----
2006-07-14  H.J. Lu  <hongjiu.lu@intel.com>

	PR binutils/2829
	* i386-dis.c (GRP11_C6): NEW.
	(GRP11_C7): Likewise.
	(GRP12): Updated.
	(GRP13): Likewise.
	(GRP14): Likewise.
	(GRP15): Likewise.
	(GRP16): Likewise.
	(GRPAMD): Likewise.
	(GRPPADLCK1): Likewise.
	(GRPPADLCK2): Likewise.
	(dis386): Use GRP11_C6 and GRP11_C7 for entres 0xc6 and 0xc7,
	respectively.
	(grps): Add entries for GRP11_C6 and GRP11_C7.

--- opcodes/i386-dis.c.modrm	2006-07-14 09:39:19.000000000 -0700
+++ opcodes/i386-dis.c	2006-07-14 17:42:38.000000000 -0700
@@ -419,14 +419,16 @@ fetch_data (struct disassemble_info *inf
 #define GRP7	  NULL, NULL, USE_GROUPS, NULL, 14, NULL, 0, NULL, 0
 #define GRP8	  NULL, NULL, USE_GROUPS, NULL, 15, NULL, 0, NULL, 0
 #define GRP9	  NULL, NULL, USE_GROUPS, NULL, 16, NULL, 0, NULL, 0
-#define GRP12	  NULL, NULL, USE_GROUPS, NULL, 17, NULL, 0, NULL, 0
-#define GRP13	  NULL, NULL, USE_GROUPS, NULL, 18, NULL, 0, NULL, 0
-#define GRP14	  NULL, NULL, USE_GROUPS, NULL, 19, NULL, 0, NULL, 0
-#define GRP15	  NULL, NULL, USE_GROUPS, NULL, 20, NULL, 0, NULL, 0
-#define GRP16	  NULL, NULL, USE_GROUPS, NULL, 21, NULL, 0, NULL, 0
-#define GRPAMD	  NULL, NULL, USE_GROUPS, NULL, 22, NULL, 0, NULL, 0
-#define GRPPADLCK1 NULL, NULL, USE_GROUPS, NULL, 23, NULL, 0, NULL, 0
-#define GRPPADLCK2 NULL, NULL, USE_GROUPS, NULL, 24, NULL, 0, NULL, 0
+#define GRP11_C6	  NULL, NULL, USE_GROUPS, NULL, 17, NULL, 0, NULL, 0
+#define GRP11_C7	  NULL, NULL, USE_GROUPS, NULL, 18, NULL, 0, NULL, 0
+#define GRP12	  NULL, NULL, USE_GROUPS, NULL, 19, NULL, 0, NULL, 0
+#define GRP13	  NULL, NULL, USE_GROUPS, NULL, 20, NULL, 0, NULL, 0
+#define GRP14	  NULL, NULL, USE_GROUPS, NULL, 21, NULL, 0, NULL, 0
+#define GRP15	  NULL, NULL, USE_GROUPS, NULL, 22, NULL, 0, NULL, 0
+#define GRP16	  NULL, NULL, USE_GROUPS, NULL, 23, NULL, 0, NULL, 0
+#define GRPAMD	  NULL, NULL, USE_GROUPS, NULL, 24, NULL, 0, NULL, 0
+#define GRPPADLCK1 NULL, NULL, USE_GROUPS, NULL, 25, NULL, 0, NULL, 0
+#define GRPPADLCK2 NULL, NULL, USE_GROUPS, NULL, 26, NULL, 0, NULL, 0
 
 #define PREGRP0   NULL, NULL, USE_PREFIX_USER_TABLE, NULL,  0, NULL, 0, NULL, 0
 #define PREGRP1   NULL, NULL, USE_PREFIX_USER_TABLE, NULL,  1, NULL, 0, NULL, 0
@@ -746,8 +748,8 @@ static const struct dis386 dis386[] = {
   { "retT",		XX, XX, XX, XX },
   { "les{S|}",		Gv, Mp, XX, XX },
   { "ldsS",		Gv, Mp, XX, XX },
-  { "movA",		Eb, Ib, XX, XX },
-  { "movQ",		Ev, Iv, XX, XX },
+  { GRP11_C6 },
+  { GRP11_C7 },
   /* c8 */
   { "enterT",		Iw, Ib, XX, XX },
   { "leaveT",		XX, XX, XX, XX },
@@ -1438,6 +1440,28 @@ static const struct dis386 grps[][8] = {
     { "",	VM, XX, XX, XX },		/* See OP_VMX.  */
     { "vmptrst", Eq, XX, XX, XX },
   },
+  /* GRP11_C6 */
+  {
+    { "movA",	Eb, Ib, XX, XX },
+    { "(bad)",	XX, XX, XX, XX },
+    { "(bad)",	XX, XX, XX, XX },
+    { "(bad)",	XX, XX, XX, XX },
+    { "(bad)",	XX, XX, XX, XX },
+    { "(bad)",	XX, XX, XX, XX },
+    { "(bad)",	XX, XX, XX, XX },
+    { "(bad)",	XX, XX, XX, XX },
+  },
+  /* GRP11_C7 */
+  {
+    { "movQ",	Ev, Iv, XX, XX },
+    { "(bad)",	XX, XX, XX, XX },
+    { "(bad)",	XX, XX, XX, XX },
+    { "(bad)",	XX, XX, XX, XX },
+    { "(bad)",	XX, XX, XX, XX },
+    { "(bad)",	XX, XX, XX, XX },
+    { "(bad)",	XX, XX, XX, XX },
+    { "(bad)",	XX, XX, XX, XX },
+  },
   /* GRP12 */
   {
     { "(bad)",	XX, XX, XX, XX },


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]