-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;
+
+ 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