X-Git-Url: https://git.siccegge.de//index.cgi?p=frida%2Ffrida.git;a=blobdiff_plain;f=src%2Fdisassembler%2Fllvm%2FLLVMDisassembler.cxx;h=7f87b80116068fc6c6d88cafae059b2839c14400;hp=6b3402eb0b2414d56c4b415f7467e3c29d7e33cd;hb=231dae075375e7d57982f5107b86294fbe726b33;hpb=c100e37a2dfbe6dd221e867559b473a4a5097570 diff --git a/src/disassembler/llvm/LLVMDisassembler.cxx b/src/disassembler/llvm/LLVMDisassembler.cxx index 6b3402e..7f87b80 100644 --- a/src/disassembler/llvm/LLVMDisassembler.cxx +++ b/src/disassembler/llvm/LLVMDisassembler.cxx @@ -14,10 +14,12 @@ using std::error_code; * ist sondern z.B. einfach nur Instruktionen oder ein Bootsektor oder * foo */ -LLVMDisassembler::LLVMDisassembler(const std::string& filename) - : Disassembler(filename) +LLVMDisassembler::LLVMDisassembler(const std::string& filename, + InformationManager* manager) + : Disassembler(filename, manager) , logger(log4cxx::Logger::getLogger("LLVMDisassembler")) , triple("unknown-unknown-unknown") + , manager(manager) { LOG4CXX_DEBUG(logger, "Handling file" << filename); auto result = createBinary(filename); @@ -111,7 +113,9 @@ LLVMDisassembler::LLVMDisassembler(const std::string& filename) std::unique_ptr OD( new MCObjectDisassembler(*o, *DisAsm, *MIA)); Mod.reset(OD->buildModule(false)); +} +void LLVMDisassembler::start() { readSymbols(); readSections(); disassemble(); @@ -231,6 +235,7 @@ void LLVMDisassembler::disassembleFunction(LLVMFunction* function) { } } LOG4CXX_DEBUG(logger, "Finished function " << function->getName()); + manager->signal_new_function(function); } void LLVMDisassembler::disassemble() {