[llvm] r200100 - Set displacementSize to 1 for instrucitons with mod==0x1. Fixes PR17310. Modified from patch by James Courtier-Dutton.

Craig Topper craig.topper at gmail.com
Sat Jan 25 14:48:44 PST 2014


Author: ctopper
Date: Sat Jan 25 16:48:43 2014
New Revision: 200100

URL: http://llvm.org/viewvc/llvm-project?rev=200100&view=rev
Log:
Set displacementSize to 1 for instrucitons with mod==0x1. Fixes PR17310. Modified from patch by James Courtier-Dutton.

Modified:
    llvm/trunk/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c

Modified: llvm/trunk/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c?rev=200100&r1=200099&r2=200100&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c (original)
+++ llvm/trunk/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c Sat Jan 25 16:48:43 2014
@@ -1311,6 +1311,7 @@ static int readModRM(struct InternalInst
     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 InternalInst
       }
       break;
     case 0x1:
+      insn->displacementSize = 1;
+      // FALLTHROUGH
     case 0x2:
       insn->eaDisplacement = (mod == 0x1 ? EA_DISP_8 : EA_DISP_32);
       switch (rm) {





More information about the llvm-commits mailing list