aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/X86/Disassembler
diff options
context:
space:
mode:
authorSean Callanan <scallanan@apple.com>2010-10-22 01:24:11 +0000
committerSean Callanan <scallanan@apple.com>2010-10-22 01:24:11 +0000
commit751752e7caee441c0b50585c77637b36b048f235 (patch)
tree8cffa6ff4d753128ecf867b1e58bc3bbfa4c03fa /lib/Target/X86/Disassembler
parent2172f3cd971d7446123f8bdc72b381adde0ea559 (diff)
downloadexternal_llvm-751752e7caee441c0b50585c77637b36b048f235.zip
external_llvm-751752e7caee441c0b50585c77637b36b048f235.tar.gz
external_llvm-751752e7caee441c0b50585c77637b36b048f235.tar.bz2
Fixed handling of immediate operand sizes, which
weren't properly reflecting the OperandSize attribute of the instruction leading to improper decoding of certain instructions with the 66H prefix. Also added a test case for this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117084 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/Disassembler')
-rw-r--r--lib/Target/X86/Disassembler/X86DisassemblerDecoder.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c b/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c
index 6c3ff6b..22b38b9 100644
--- a/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c
+++ b/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c
@@ -405,7 +405,7 @@ static int readPrefixes(struct InternalInstruction* insn) {
insn->registerSize = (hasOpSize ? 2 : 4);
insn->addressSize = (hasAdSize ? 2 : 4);
insn->displacementSize = (hasAdSize ? 2 : 4);
- insn->immediateSize = (hasAdSize ? 2 : 4);
+ insn->immediateSize = (hasOpSize ? 2 : 4);
} else if (insn->mode == MODE_64BIT) {
if (insn->rexPrefix && wFromREX(insn->rexPrefix)) {
insn->registerSize = 8;