]> git.siccegge.de Git - frida/frida.git/blob - src/Binary.hxx
873ac06fa72ff71f50040a26249daf0457147067
[frida/frida.git] / src / Binary.hxx
1 #ifndef INCLUDE__Binary_hxx
2 #define INCLUDE__Binary_hxx
3
4 #include "include.hxx"
5 #include "Section.hxx"
6
7 #include <string>
8 #include <vector>
9 #include <functional>
10
11 using llvm::OwningPtr;
12
13 namespace qtlldb {
14 class Binary {
15 public:
16 Binary(const std::string& filename);
17
18 void disassemble();
19
20 void disassemble_functions();
21
22 void disassemble_cfg();
23
24 std::vector<std::string> getSymbols();
25
26 std::vector<std::string> getFunctions();
27 void for_each_instruction(const std::string& function, std::function<void (long, std::string, std::string)> callback);
28
29 private:
30 llvm::Triple triple;
31 const llvm::Target * target;
32 llvm::object::ObjectFile * o;
33
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;
47
48 std::map<std::string, llvm::object::SectionRef> sections;
49 std::map<std::string, llvm::object::SymbolRef> symbols;
50 };
51 }
52 #endif