]> git.siccegge.de Git - frida/frida.git/blobdiff - src/disassembler/llvm/LLVMDisassembler.cxx
Properly create and export BasicBlock linking
[frida/frida.git] / src / disassembler / llvm / LLVMDisassembler.cxx
index c6146f81e2ed209c64544da23de9b28e429048f5..a8c2867f50784255a27246bb10be5db9312d2e87 100644 (file)
@@ -214,6 +214,7 @@ void LLVMDisassembler::disassemble() {
                                                                if (blocks.find(jmptarget) == blocks.end()) {
                                                                        LLVMBasicBlock * block = new LLVMBasicBlock(jmptarget);
                                                                        blocks.insert(std::make_pair(block->getStartAddress(), block));
                                                                if (blocks.find(jmptarget) == blocks.end()) {
                                                                        LLVMBasicBlock * block = new LLVMBasicBlock(jmptarget);
                                                                        blocks.insert(std::make_pair(block->getStartAddress(), block));
+                                                                       current_block->setNextBlock(0, block->getStartAddress());
                                                                        remaining_blocks.push(block);
                                                                }
                                 if (MIA->isConditionalBranch(inst)) {
                                                                        remaining_blocks.push(block);
                                                                }
                                 if (MIA->isConditionalBranch(inst)) {
@@ -221,6 +222,7 @@ void LLVMDisassembler::disassemble() {
                                                                        if (blocks.find(jmptarget) == blocks.end()) {
                                                                                LLVMBasicBlock * block = new LLVMBasicBlock(jmptarget);
                                                                                blocks.insert(std::make_pair(block->getStartAddress(), block));
                                                                        if (blocks.find(jmptarget) == blocks.end()) {
                                                                                LLVMBasicBlock * block = new LLVMBasicBlock(jmptarget);
                                                                                blocks.insert(std::make_pair(block->getStartAddress(), block));
+                                                                               current_block->setNextBlock(1, block->getStartAddress());
                                                                                remaining_blocks.push(new LLVMBasicBlock(jmptarget));
                                                                        }
                                 }
                                                                                remaining_blocks.push(new LLVMBasicBlock(jmptarget));
                                                                        }
                                 }