1 #ifndef INCLUDE__Binary_hxx
2 #define INCLUDE__Binary_hxx
4 #include "include_llvm.hxx"
11 using llvm::OwningPtr;
16 Binary(const std::string& filename);
20 void disassemble_functions();
22 void disassemble_cfg();
24 std::vector<std::string> getSymbols();
26 std::vector<std::string> getFunctions();
27 void for_each_instruction(const std::string& function, std::function<void (long, std::string, std::string)> callback);
31 const llvm::Target * target;
32 llvm::object::ObjectFile * o;
34 llvm::object::Binary* binary;
35 OwningPtr<const llvm::MCRegisterInfo> MRI;
36 OwningPtr<const llvm::MCAsmInfo> AsmInfo;
37 OwningPtr<llvm::MCModule> Mod;
38 OwningPtr<llvm::MCInstPrinter> IP;
39 OwningPtr<llvm::MCDisassembler> DisAsm;
40 OwningPtr<const llvm::MCObjectFileInfo> MOFI;
41 OwningPtr<llvm::MCContext> Ctx;
42 OwningPtr<const llvm::MCInstrAnalysis> MIA;
43 OwningPtr<const llvm::MCSubtargetInfo> STI;
44 OwningPtr<const llvm::MCInstrInfo> MII;
45 OwningPtr<llvm::MCRelocationInfo> RelInfo;
46 OwningPtr<llvm::MCSymbolizer> Symzer;
48 std::map<std::string, llvm::object::SectionRef> sections;
49 std::map<std::string, llvm::object::SymbolRef> symbols;