summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2014-01-25 22:48:43 +0000
committerCraig Topper <craig.topper@gmail.com>2014-01-25 22:48:43 +0000
commit399e39e0dee61b8796080ddb74fdbb4aac5aeda3 (patch)
tree42eaadd70390f9f5b85a6ace758936542b8edacb /llvm/lib
parent72db563280cf1686d6861c3f6d21cf35bd402998 (diff)
downloadbcm5719-llvm-399e39e0dee61b8796080ddb74fdbb4aac5aeda3.tar.gz
bcm5719-llvm-399e39e0dee61b8796080ddb74fdbb4aac5aeda3.zip
Set displacementSize to 1 for instrucitons with mod==0x1. Fixes PR17310. Modified from patch by James Courtier-Dutton.
llvm-svn: 200100
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c b/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c
index 85f74358d95..66088bd88e5 100644
--- a/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c
+++ b/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c
@@ -1311,6 +1311,7 @@ static int readModRM(struct InternalInstruction* insn) {
case 0x1:
insn->eaBase = (EABase)(insn->eaBaseBase + rm);
insn->eaDisplacement = EA_DISP_8;
+ insn->displacementSize = 1;
if (readDisplacement(insn))
return -1;
break;
@@ -1356,6 +1357,8 @@ static int readModRM(struct InternalInstruction* insn) {
}
break;
case 0x1:
+ insn->displacementSize = 1;
+ // FALLTHROUGH
case 0x2:
insn->eaDisplacement = (mod == 0x1 ? EA_DISP_8 : EA_DISP_32);
switch (rm) {
OpenPOWER on IntegriCloud