]> git.siccegge.de Git - frida/frida.git/blobdiff - src/disassembler/llvm/LLVMDisassembler.hxx
Create ObjectFile only once and store it with full type
[frida/frida.git] / src / disassembler / llvm / LLVMDisassembler.hxx
index 906318103bfd61aa87d67082c344f3ad13adad5b..6c8767aa1a2bc7b55cb116408446504c109ef513 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();
@@ -29,7 +30,8 @@ public:
 
        void forEachFunction(std::function<void (uint64_t, Function*)> callback);
        void printEachInstruction(uint64_t start, uint64_t end,
-                                 std::function<void (uint8_t*, size_t, const std::string&)> fun);
+                                 std::function<void (uint8_t*, size_t, const std::string&,
+                                                     const std::string&)> fun);
 
        BasicBlock * getBasicBlock(uint64_t address) {
                return blocks[address];
@@ -58,7 +60,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;