[llvm-commits] [llvm] r160694 - /llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.cpp

Kevin Enderby enderby at apple.com
Tue Jul 24 14:40:01 PDT 2012


Author: enderby
Date: Tue Jul 24 16:40:01 2012
New Revision: 160694

URL: http://llvm.org/viewvc/llvm-project?rev=160694&view=rev
Log:
Fix a bug in the x86 disassembler's symbolic disassembly support for Jcc-Jump
if Condition Is Met instuctions that was not correctly determining the target
instruction.

So for a jne rel32 instruction:

% cat x.s
.byte 0x0f, 0x85, 0x09, 0x00, 0x00, 0x00
% as x.s

it was incorrectly deterining the target:

% otool -q -tv a.out 
a.out:
(__TEXT,__text) section
0000000000000000	jne	0xd

and with the fix it gets this correct as:

% otool -q -tv a.out
a.out:
(__TEXT,__text) section
0000000000000000	jne	0xf

rdar://11505997

Modified:
    llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.cpp

Modified: llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.cpp?rev=160694&r1=160693&r2=160694&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.cpp (original)
+++ llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.cpp Tue Jul 24 16:40:01 2012
@@ -327,7 +327,7 @@
   if (type == TYPE_RELv) {
     isBranch = true;
     pcrel = insn.startLocation +
-            insn.displacementOffset + insn.displacementSize;
+            insn.immediateOffset + insn.immediateSize;
     switch (insn.displacementSize) {
     default:
       break;





More information about the llvm-commits mailing list