X-Git-Url: https://git.siccegge.de//index.cgi?p=frida%2Ffrida.git;a=blobdiff_plain;f=src%2Fdisassembler%2Fllvm%2FLLVMDisassembler.cxx;h=1d4f2dff725064ecb64dd6cfd7a8d6c0de68d766;hp=314779600481cb531e53f10096dd1b49d33b5df9;hb=d63f589a3fda3c6d69c730596be194c3485a5801;hpb=32e87746db981882b95aceddde79ef12034a3405 diff --git a/src/disassembler/llvm/LLVMDisassembler.cxx b/src/disassembler/llvm/LLVMDisassembler.cxx index 3147796..1d4f2df 100644 --- a/src/disassembler/llvm/LLVMDisassembler.cxx +++ b/src/disassembler/llvm/LLVMDisassembler.cxx @@ -1,7 +1,7 @@ #include "disassembler/llvm/LLVMDisassembler.hxx" -#include "disassembler/llvm/LLVMBasicBlock.hxx" -#include "disassembler/llvm/LLVMFunction.hxx" #include "core/InformationManager.hxx" +#include "core/Function.hxx" +#include "core/BasicBlock.hxx" #include #include @@ -162,14 +162,14 @@ void LLVMDisassembler::start() { template LLVMDisassembler::~LLVMDisassembler() { - std::for_each(functions.begin(), functions.end(), - [](std::pair it) { - delete it.second; - }); - std::for_each(blocks.begin(), blocks.end(), - [](std::pair it) { - delete it.second; - }); + // std::for_each(functions.begin(), functions.end(), + // [](std::pair it) { + // delete it.second; + // }); + // std::for_each(blocks.begin(), blocks.end(), + // [](std::pair it) { + // delete it.second; + // }); } template @@ -188,13 +188,13 @@ Function* LLVMDisassembler::disassembleFunctionAt(uint64_t address, const return functions[address]; } - LLVMFunction * function; + Function * function; if (name == "") { std::stringstream s; s << ""; - function = new LLVMFunction(s.str(), address); + function = new Function(s.str(), address); } else { - function = new LLVMFunction(name, address); + function = new Function(name, address); } functions.insert(std::make_pair(address, function)); @@ -204,8 +204,8 @@ Function* LLVMDisassembler::disassembleFunctionAt(uint64_t address, const } template -void LLVMDisassembler::disassembleFunction(LLVMFunction* function) { - std::stack remaining_blocks; +void LLVMDisassembler::disassembleFunction(Function* function) { + std::stack remaining_blocks; SectionRef text_section = sections[".text"]; StringRef bytes; text_section.getContents(bytes); @@ -213,13 +213,13 @@ void LLVMDisassembler::disassembleFunction(LLVMFunction* function) { LOG4CXX_DEBUG(logger, "Handling function " << function->getName()); - LLVMBasicBlock * block = new LLVMBasicBlock(function->getStartAddress(), this); + BasicBlock * block = new BasicBlock(function->getStartAddress(), this); remaining_blocks.push(block); blocks.insert(std::make_pair(block->getStartAddress(), block)); function->addBasicBlock(block); while (remaining_blocks.size()) { - LLVMBasicBlock * current_block = remaining_blocks.top(); + BasicBlock * current_block = remaining_blocks.top(); remaining_blocks.pop(); LOG4CXX_DEBUG(logger, "Handling Block starting at " << std::hex << current_block->getStartAddress()); @@ -247,7 +247,7 @@ void LLVMDisassembler::disassembleFunction(LLVMFunction* function) { } else { current_block->setNextBlock(0, jmptarget); if (blocks.find(jmptarget) == blocks.end()) { - LLVMBasicBlock * block = new LLVMBasicBlock(jmptarget, this); + BasicBlock * block = new BasicBlock(jmptarget, this); blocks.insert(std::make_pair(block->getStartAddress(), block)); function->addBasicBlock(block); remaining_blocks.push(block); @@ -259,7 +259,7 @@ void LLVMDisassembler::disassembleFunction(LLVMFunction* function) { jmptarget = base_address + current_address + inst_size; current_block->setNextBlock(1, jmptarget); if (blocks.find(jmptarget) == blocks.end()) { - LLVMBasicBlock * block = new LLVMBasicBlock(jmptarget, this); + BasicBlock * block = new BasicBlock(jmptarget, this); blocks.insert(std::make_pair(block->getStartAddress(), block)); function->addBasicBlock(block); remaining_blocks.push(block); @@ -293,7 +293,7 @@ void LLVMDisassembler::disassembleFunction(LLVMFunction* function) { template void LLVMDisassembler::disassemble() { SectionRef text_section = sections[".text"]; - std::vector remaining_functions; + std::vector remaining_functions; // Assume all function symbols actually start a real function for (auto x = symbols.begin(); x != symbols.end(); ++x) { @@ -310,14 +310,14 @@ void LLVMDisassembler::disassemble() { continue; if (!x->second.getAddress(result)) { - LLVMFunction * fun = new LLVMFunction(x->first, result); + Function * fun = new Function(x->first, result); remaining_functions.push_back(fun); functions.insert(std::make_pair(result, fun)); LOG4CXX_DEBUG(logger, "Disasembling " << x->first); } } - for (LLVMFunction* function : remaining_functions) { + for (Function* function : remaining_functions) { disassembleFunction(function); } @@ -342,7 +342,7 @@ void LLVMDisassembler::disassemble() { } template -void LLVMDisassembler::splitBlocks(LLVMFunction* function) { +void LLVMDisassembler::splitBlocks(Function* function) { SectionRef text_section = sections[".text"]; StringRef bytes; text_section.getContents(bytes); @@ -443,7 +443,7 @@ void LLVMDisassembler::readSections() { template void LLVMDisassembler::forEachFunction(std::function callback) { std::for_each(functions.begin(), functions.end(), - [&](std::pair x) { + [&](std::pair x) { callback(x.first, x.second); }); }