]> git.siccegge.de Git - frida/frida.git/blobdiff - src/disassembler/llvm/LLVMDisassembler.hxx
Add basic save support (Infrastructure)
[frida/frida.git] / src / disassembler / llvm / LLVMDisassembler.hxx
index 59f73497455162c223fa5c056dea38a23408139c..95e961fb5656804ef745e4dc073ed496a41fe7ff 100644 (file)
@@ -20,7 +20,8 @@ template <typename ELFT>
 class LLVMDisassembler
        : public Disassembler {
 public:
-       LLVMDisassembler(const std::string& filename, InformationManager* manager);
+       LLVMDisassembler(const std::string& filename, InformationManager* manager,
+                        llvm::object::ELFObjectFile<ELFT>* file = NULL);
        virtual ~LLVMDisassembler();
 
        void start();
@@ -43,6 +44,8 @@ protected:
        bool isJump(uint64_t address) {return false;}
 
 private:
+       typedef llvm::object::ELFFile<ELFT> ELFO;
+
        // http://llvm.org/docs/doxygen/html/MCObjectDisassembler_8cpp_source.html +197
        void disassembleFunction(LLVMFunction* function);
        void splitBlocks(LLVMFunction* fun);
@@ -50,6 +53,7 @@ private:
 
        void readSymbols();
        void readSections();
+       void readDynamicSymbols();
 
        log4cxx::LoggerPtr logger;
        std::map<uint64_t, LLVMBasicBlock*> blocks;
@@ -59,7 +63,7 @@ private:
        std::shared_ptr<llvm::object::Binary> binary;
 
        const llvm::Target * target;
-       llvm::object::ObjectFile * o;
+       llvm::object::ELFObjectFile<ELFT> * o;
 
        std::unique_ptr<const llvm::MCRegisterInfo> MRI;
        std::unique_ptr<const llvm::MCAsmInfo> AsmInfo;