This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
PATCH: PR binutils/2829: bad disassembly for 0xC7 /1 "movl $___,"
- From: "H. J. Lu" <hjl at lucon dot org>
- To: binutils at sources dot redhat dot com
- Date: Fri, 14 Jul 2006 17:57:09 -0700
- Subject: 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 },