summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2010-04-26 01:09:19 -0700
committerRuss Cox <rsc@golang.org>2010-04-26 01:09:19 -0700
commit1d46a6979a3969fd39274f67a80a3dc3fa90797c (patch)
tree3cf4e4ee85b5c087d3a73d81bb239e4758d81dd6
parent95219382926a5c2fcb0f9a3826aeaca2090be726 (diff)
downloadgolang-1d46a6979a3969fd39274f67a80a3dc3fa90797c.tar.gz
libmach: disassemble MOVLQZX correctly
R=ken2 CC=golang-dev http://codereview.appspot.com/1007041
-rw-r--r--src/libmach/8db.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/libmach/8db.c b/src/libmach/8db.c
index dfa87da29..ba14dfc3c 100644
--- a/src/libmach/8db.c
+++ b/src/libmach/8db.c
@@ -1131,7 +1131,7 @@ static Optable optabFF[8] =
[0x06] 0,0, "PUSHL %e",
};
-static Optable optable[256+1] =
+static Optable optable[256+2] =
{
[0x00] RMB,0, "ADDB %r,%e",
[0x01] RM,0, "ADD%S %r,%e",
@@ -1387,6 +1387,7 @@ static Optable optable[256+1] =
[0xfe] RMOPB,0, optabFE,
[0xff] RMOP,0, optabFF,
[0x100] RM,0, "MOVLQSX %e,%r",
+[0x101] RM,0, "MOVLQZX %e,%r",
};
/*
@@ -1590,7 +1591,10 @@ newop:
return 0;
}
if(c == 0x63){
- op = &obase[0x100]; /* MOVLQSX */
+ if(ip->rex&REXW)
+ op = &obase[0x100]; /* MOVLQSX */
+ else
+ op = &obase[0x101]; /* MOVLQZX */
goto hack;
}
}