]> git.siccegge.de Git - frida/frida.git/blobdiff - src/Binary.hxx
Rename include.hxx to include_llvm.hxx
[frida/frida.git] / src / Binary.hxx
index aa5460e408e075ee9c91133ae8aa5a4d52e05a59..725c6a18a859d1098ec16c49a50aee622615a085 100644 (file)
@@ -1,32 +1,52 @@
-#include "include.hxx"
+#ifndef INCLUDE__Binary_hxx
+#define INCLUDE__Binary_hxx
+
+#include "include_llvm.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();
-};
+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;
+
+               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