X-Git-Url: https://git.siccegge.de//index.cgi?p=frida%2Ffrida.git;a=blobdiff_plain;f=src%2Fdisassembler%2Fllvm%2FLLVMDisassembler.cxx;h=fbbbc94279f766b6c8f3dac2375312c0f9dce79e;hp=5652cfb8bb2e62f6bb04813606aa82397861f65d;hb=bc36ee5d21eac1d9bd1ab1c2e7003101dbbec604;hpb=6375df7c896a8a0e4be6959392848f28b021073c diff --git a/src/disassembler/llvm/LLVMDisassembler.cxx b/src/disassembler/llvm/LLVMDisassembler.cxx index 5652cfb..fbbbc94 100644 --- a/src/disassembler/llvm/LLVMDisassembler.cxx +++ b/src/disassembler/llvm/LLVMDisassembler.cxx @@ -1,6 +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 #include @@ -161,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 @@ -187,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)); @@ -203,7 +204,7 @@ Function* LLVMDisassembler::disassembleFunctionAt(uint64_t address, const } template -void LLVMDisassembler::disassembleFunction(LLVMFunction* function) { +void LLVMDisassembler::disassembleFunction(Function* function) { std::stack remaining_blocks; SectionRef text_section = sections[".text"]; StringRef bytes; @@ -292,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) { @@ -309,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); } @@ -341,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); @@ -442,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); }); }