X-Git-Url: https://git.siccegge.de//index.cgi?p=frida%2Ffrida.git;a=blobdiff_plain;f=src%2Fdisassembler%2Fllvm%2FLLVMDisassembler.hxx;h=a64dc2c66e451131f9187ab82ca5a70342a9e1ab;hp=2291e205d4ccadede3acff7bb173579df9de9b91;hb=4443ad3e38327c776dcc68538591456d37c9ed6f;hpb=32e87746db981882b95aceddde79ef12034a3405 diff --git a/src/disassembler/llvm/LLVMDisassembler.hxx b/src/disassembler/llvm/LLVMDisassembler.hxx index 2291e20..a64dc2c 100644 --- a/src/disassembler/llvm/LLVMDisassembler.hxx +++ b/src/disassembler/llvm/LLVMDisassembler.hxx @@ -11,59 +11,46 @@ class Function; class BasicBlock; -class LLVMFunction; -class LLVMBasicBlock; Disassembler * createLLVMDisassembler(const std::string& filename, InformationManager* manager); -template +template class LLVMDisassembler : public Disassembler { public: LLVMDisassembler(const std::string& filename, InformationManager* manager, - llvm::object::ELFObjectFile* file = NULL); + llvm::object::ObjectFile* file = NULL); virtual ~LLVMDisassembler(); void start(); void getSymbols() {} - uint64_t entryAddress() {return _entryAddress;} + 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;} - bool isJump(uint64_t address) {return false;} + std::list getInstructions(const BasicBlock* block); private: - typedef llvm::object::ELFFile ELFO; - // http://llvm.org/docs/doxygen/html/MCObjectDisassembler_8cpp_source.html +197 - void disassembleFunction(LLVMFunction* function); - void splitBlocks(LLVMFunction* fun); + void disassembleFunction(Function* function); + void splitBlocks(Function* fun); void disassemble(); + llvm::object::SectionRef getTextSection(); void readSymbols(); void readSections(); void readDynamicSymbols(); log4cxx::LoggerPtr logger; - std::map blocks; - std::map functions; llvm::Triple triple; std::shared_ptr binary; const llvm::Target * target; - llvm::object::ELFObjectFile * o; + llvm::object::ObjectFile * o; std::unique_ptr MRI; std::unique_ptr AsmInfo;