]> git.siccegge.de Git - frida/frida.git/blobdiff - src/Binary.hxx
work
[frida/frida.git] / src / Binary.hxx
index 31d7485b8fd6ea8d6706f0764131cf3b2c94a8a1..180d8eefe04948d73455a9edafe7051fee14fa35 100644 (file)
@@ -1,34 +1,52 @@
+#ifndef INCLUDE__Binary_hxx
+#define INCLUDE__Binary_hxx
+
 #include "include.hxx"
+#include "Section.hxx"
 
 #include <string>
+#include <vector>
+#include <functional>
 
 using llvm::OwningPtr;
 
-class Binary {
-private:
-    llvm::Triple triple;
-    const llvm::Target * target;
-    llvm::object::ObjectFile * o;
-
-    OwningPtr<llvm::object::Binary> binary;
-    OwningPtr<const llvm::MCRegisterInfo> MRI;
-    OwningPtr<const llvm::MCAsmInfo> AsmInfo;
-    OwningPtr<llvm::MCModule> Mod;
-    OwningPtr<llvm::MCInstPrinter> IP;
-    OwningPtr<llvm::MCDisassembler> DisAsm;
-    OwningPtr<const llvm::MCObjectFileInfo> MOFI;
-    OwningPtr<llvm::MCContext> Ctx;
-    OwningPtr<const llvm::MCInstrAnalysis> MIA;
-    OwningPtr<const llvm::MCSubtargetInfo> STI;
-    OwningPtr<const llvm::MCInstrInfo> MII;
-    OwningPtr<llvm::MCRelocationInfo> RelInfo;
-    OwningPtr<llvm::MCSymbolizer> Symzer;
-public:
-    Binary(const std::string& filename);
-
-    void disassemble();
-
-    void disassemble_functions();
-
-    void disassemble_cfg();
-};
+namespace qtlldb {
+    class Binary {
+    public:
+        Binary(const std::string& filename);
+
+        void disassemble();
+
+        void disassemble_functions();
+
+        void disassemble_cfg();
+
+        std::vector<std::string> getSymbols();
+
+        std::vector<std::string> getFunctions();
+        void for_each_instruction(const std::string& function, std::function<void (long, std::string, std::string)> callback);
+
+    private:
+        llvm::Triple triple;
+        const llvm::Target * target;
+        llvm::object::ObjectFile * o;
+
+        OwningPtr<llvm::object::Binary> binary;
+        OwningPtr<const llvm::MCRegisterInfo> MRI;
+        OwningPtr<const llvm::MCAsmInfo> AsmInfo;
+        OwningPtr<llvm::MCModule> Mod;
+        OwningPtr<llvm::MCInstPrinter> IP;
+        OwningPtr<llvm::MCDisassembler> DisAsm;
+        OwningPtr<const llvm::MCObjectFileInfo> MOFI;
+        OwningPtr<llvm::MCContext> Ctx;
+        OwningPtr<const llvm::MCInstrAnalysis> MIA;
+        OwningPtr<const llvm::MCSubtargetInfo> STI;
+        OwningPtr<const llvm::MCInstrInfo> MII;
+        OwningPtr<llvm::MCRelocationInfo> RelInfo;
+        OwningPtr<llvm::MCSymbolizer> Symzer;
+
+        std::map<std::string, llvm::object::SectionRef> sections;
+        std::map<std::string, llvm::object::SymbolRef> symbols;
+    };
+}
+#endif