X-Git-Url: https://git.siccegge.de//index.cgi?p=frida%2Ffrida.git;a=blobdiff_plain;f=src%2Fdisassembler%2Fllvm%2FLLVMDisassembler.hxx;h=f2baecb33a2e44904322f298d429ef05852a2654;hp=682b1dfd89141d18943a2a8b43d5e357b107206c;hb=880ba6d085d9a6b70523328b8099679a664b8c0c;hpb=b954100a7563d684439f8d6f976abc912919b5cb diff --git a/src/disassembler/llvm/LLVMDisassembler.hxx b/src/disassembler/llvm/LLVMDisassembler.hxx index 682b1df..f2baecb 100644 --- a/src/disassembler/llvm/LLVMDisassembler.hxx +++ b/src/disassembler/llvm/LLVMDisassembler.hxx @@ -24,6 +24,14 @@ public: uint64_t entryAddress(); void forEachFunction(std::function callback); + void printEachInstruction(uint64_t start, uint64_t end, + std::function fun); + + BasicBlock * getBasicBlock(uint64_t address) { + return blocks[address]; + } + + Function * disassembleFunctionAt(uint64_t address, const std::string& name = ""); protected: bool isFunctionCall(uint64_t address) {return false;} @@ -31,7 +39,9 @@ protected: private: // http://llvm.org/docs/doxygen/html/MCObjectDisassembler_8cpp_source.html +197 - void disassemble(); + void disassembleFunction(LLVMFunction* function); + void splitBlocks(); + void disassemble(); void readSymbols(); void readSections(); @@ -57,8 +67,8 @@ private: std::unique_ptr MIA; std::unique_ptr STI; std::unique_ptr MII; - llvm::OwningPtr RelInfo; - llvm::OwningPtr Symzer; + std::unique_ptr RelInfo; + std::unique_ptr Symzer; std::map sections; std::map symbols;