X-Git-Url: https://git.siccegge.de//index.cgi?p=frida%2Ffrida.git;a=blobdiff_plain;f=src%2Fdisassembler%2Fllvm%2FLLVMDisassembler.hxx;h=b9fc4530aa2c01d34642816760c97638a7b7fde4;hp=d00381b7ed962862c8be6e26008cdf94d06f9da8;hb=5d65588185f3d19fc6fa311f642cc5fd78966087;hpb=0daf9a157f3d41690cf4a0287db1adecc4ad0b71 diff --git a/src/disassembler/llvm/LLVMDisassembler.hxx b/src/disassembler/llvm/LLVMDisassembler.hxx index d00381b..b9fc453 100644 --- a/src/disassembler/llvm/LLVMDisassembler.hxx +++ b/src/disassembler/llvm/LLVMDisassembler.hxx @@ -14,35 +14,27 @@ class BasicBlock; 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;} - - void printEachInstruction(uint64_t start, uint64_t end, - std::function fun); + uint64_t entryAddress(); 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::vector getInstructions(const BasicBlock* block); private: - typedef llvm::object::ELFFile ELFO; - // http://llvm.org/docs/doxygen/html/MCObjectDisassembler_8cpp_source.html +197 void disassembleFunction(Function* function); void splitBlocks(Function* fun); void disassemble(); + llvm::object::SectionRef getTextSection(); void readSymbols(); void readSections(); @@ -54,11 +46,11 @@ private: std::shared_ptr binary; const llvm::Target * target; - llvm::object::ELFObjectFile * o; + llvm::object::ObjectFile * o; std::unique_ptr MRI; std::unique_ptr AsmInfo; - std::unique_ptr Mod; +// std::unique_ptr Mod; std::unique_ptr IP; std::unique_ptr DisAsm; std::unique_ptr MOFI;