Set displacementSize to 1 for instrucitons with mod==0x1. Fixes PR17310. Modified...
authorCraig Topper <craig.topper@gmail.com>
Sat, 25 Jan 2014 22:48:43 +0000 (22:48 +0000)
committerCraig Topper <craig.topper@gmail.com>
Sat, 25 Jan 2014 22:48:43 +0000 (22:48 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200100 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/Disassembler/X86DisassemblerDecoder.c

index 85f74358d95e07a99d15e1ae6ca4a1aca98980e1..66088bd88e587c0ed1a4dafdafef9d26e0f9b560 100644 (file)
@@ -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) {