diff options
author | Kevin Enderby <enderby@apple.com> | 2012-04-18 23:12:11 +0000 |
---|---|---|
committer | Kevin Enderby <enderby@apple.com> | 2012-04-18 23:12:11 +0000 |
commit | ec4bd31206108a5b1e2ba8e9e6febaba577d31b4 (patch) | |
tree | 17653340bf7f4d3b5f22d71a4f121917c90a257d /llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp | |
parent | 22fbe8d709bfeb27f8268d9767c9a0b1a7d8cc2e (diff) | |
download | bcm5719-llvm-ec4bd31206108a5b1e2ba8e9e6febaba577d31b4.tar.gz bcm5719-llvm-ec4bd31206108a5b1e2ba8e9e6febaba577d31b4.zip |
Fixed the llvm-mv X86 disassembler so the 'C' API gets jumps properly
symbolicated. These have and operand type of TYPE_RELv which was not handled
as isBranch in translateImmediate() in X86Disassembler.cpp. rdar://11268426
llvm-svn: 155074
Diffstat (limited to 'llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp')
-rw-r--r-- | llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp b/llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp index 8278bde7c21..b13a00620bb 100644 --- a/llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp +++ b/llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp @@ -322,7 +322,12 @@ static void translateImmediate(MCInst &mcInst, uint64_t immediate, OperandType type = (OperandType)operand.type; + bool isBranch = false; + uint64_t pcrel = 0; if (type == TYPE_RELv) { + isBranch = true; + pcrel = insn.startLocation + + insn.displacementOffset + insn.displacementSize; switch (insn.displacementSize) { default: break; @@ -373,8 +378,6 @@ static void translateImmediate(MCInst &mcInst, uint64_t immediate, } } - bool isBranch = false; - uint64_t pcrel = 0; switch (type) { case TYPE_XMM128: mcInst.addOperand(MCOperand::CreateReg(X86::XMM0 + (immediate >> 4))); |