X-Git-Url: https://git.siccegge.de//index.cgi?p=frida%2Ffrida.git;a=blobdiff_plain;f=src%2Fdisassembler%2Fllvm%2FLLVMDisassembler.cxx;h=1067fcc1f02bebcefd01969fbd99142902a59c54;hp=7980a9e1377a315dd97fbe1fb945b64edf8ead8e;hb=bfdc0337047b4c8546c6083026e4b255f306f946;hpb=624ff50c7324a3954c0b00cdb8f61a38fc6b6c41 diff --git a/src/disassembler/llvm/LLVMDisassembler.cxx b/src/disassembler/llvm/LLVMDisassembler.cxx index 7980a9e..1067fcc 100644 --- a/src/disassembler/llvm/LLVMDisassembler.cxx +++ b/src/disassembler/llvm/LLVMDisassembler.cxx @@ -193,18 +193,18 @@ void LLVMDisassembler::disassemble() { remaining_functions.push(fun); } } else { + current_block->setNextBlock(0, jmptarget); if (blocks.find(jmptarget) == blocks.end()) { LLVMBasicBlock * block = new LLVMBasicBlock(jmptarget, this); blocks.insert(std::make_pair(block->getStartAddress(), block)); - current_block->setNextBlock(0, block->getStartAddress()); remaining_blocks.push(block); } if (MIA->isConditionalBranch(inst)) { jmptarget = base_address + current_address + inst_size; + current_block->setNextBlock(1, jmptarget); if (blocks.find(jmptarget) == blocks.end()) { LLVMBasicBlock * block = new LLVMBasicBlock(jmptarget, this); blocks.insert(std::make_pair(block->getStartAddress(), block)); - current_block->setNextBlock(1, block->getStartAddress()); remaining_blocks.push(block); } } @@ -324,6 +324,7 @@ void LLVMDisassembler::printEachInstruction(uint64_t start, uint64_t end, IP->printInst(&inst, s, ""); fun(bytes, inst_size, s.str()); } else { + LOG4CXX_WARN(logger, "Invalid byte at" << std::hex << current_address + base_address); fun(NULL, 0, "Invalid Byte"); inst_size = 1; }