1 //===-- SymbolFileSymtab.h --------------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef liblldb_SymbolFileSymtab_h_ 11 #define liblldb_SymbolFileSymtab_h_ 12 13 #include "lldb/Symbol/SymbolFile.h" 14 #include <vector> 15 16 class SymbolFileSymtab : public lldb_private::SymbolFile 17 { 18 public: 19 //------------------------------------------------------------------ 20 // Static Functions 21 //------------------------------------------------------------------ 22 static void 23 Initialize(); 24 25 static void 26 Terminate(); 27 28 static const char * 29 GetPluginNameStatic(); 30 31 static const char * 32 GetPluginDescriptionStatic(); 33 34 static lldb_private::SymbolFile* 35 CreateInstance (lldb_private::ObjectFile* obj_file); 36 37 //------------------------------------------------------------------ 38 // Constructors and Destructors 39 //------------------------------------------------------------------ 40 SymbolFileSymtab(lldb_private::ObjectFile* obj_file); 41 42 virtual 43 ~SymbolFileSymtab(); 44 45 virtual uint32_t GetAbilities (); 46 47 //------------------------------------------------------------------ 48 // Compile Unit function calls 49 //------------------------------------------------------------------ 50 virtual uint32_t 51 GetNumCompileUnits(); 52 53 virtual lldb::CompUnitSP 54 ParseCompileUnitAtIndex(uint32_t index); 55 56 virtual size_t 57 ParseCompileUnitFunctions (const lldb_private::SymbolContext& sc); 58 59 virtual bool 60 ParseCompileUnitLineTable (const lldb_private::SymbolContext& sc); 61 62 virtual bool 63 ParseCompileUnitSupportFiles (const lldb_private::SymbolContext& sc, lldb_private::FileSpecList &support_files); 64 65 virtual size_t 66 ParseFunctionBlocks (const lldb_private::SymbolContext& sc); 67 68 virtual size_t 69 ParseTypes (const lldb_private::SymbolContext& sc); 70 71 virtual size_t 72 ParseVariablesForContext (const lldb_private::SymbolContext& sc); 73 74 virtual lldb_private::Type* 75 ResolveTypeUID(lldb::user_id_t type_uid); 76 77 virtual lldb::clang_type_t 78 ResolveClangOpaqueTypeDefinition (lldb::clang_type_t clang_Type); 79 80 virtual uint32_t 81 ResolveSymbolContext (const lldb_private::Address& so_addr, uint32_t resolve_scope, lldb_private::SymbolContext& sc); 82 83 virtual uint32_t 84 ResolveSymbolContext (const lldb_private::FileSpec& file_spec, uint32_t line, bool check_inlines, uint32_t resolve_scope, lldb_private::SymbolContextList& sc_list); 85 86 virtual uint32_t 87 FindGlobalVariables(const lldb_private::ConstString &name, bool append, uint32_t max_matches, lldb_private::VariableList& variables); 88 89 virtual uint32_t 90 FindGlobalVariables(const lldb_private::RegularExpression& regex, bool append, uint32_t max_matches, lldb_private::VariableList& variables); 91 92 virtual uint32_t 93 FindFunctions(const lldb_private::ConstString &name, uint32_t name_type_mask, bool append, lldb_private::SymbolContextList& sc_list); 94 95 virtual uint32_t 96 FindFunctions(const lldb_private::RegularExpression& regex, bool append, lldb_private::SymbolContextList& sc_list); 97 98 virtual uint32_t 99 FindTypes (const lldb_private::SymbolContext& sc, const lldb_private::ConstString &name, bool append, uint32_t max_matches, lldb_private::TypeList& types); 100 101 // virtual uint32_t 102 // FindTypes(const lldb_private::SymbolContext& sc, const lldb_private::RegularExpression& regex, bool append, uint32_t max_matches, lldb_private::TypeList& types); 103 104 virtual lldb_private::ClangNamespaceDecl 105 FindNamespace (const lldb_private::SymbolContext& sc, 106 const lldb_private::ConstString &name); 107 108 //------------------------------------------------------------------ 109 // PluginInterface protocol 110 //------------------------------------------------------------------ 111 virtual const char * 112 GetPluginName(); 113 114 virtual const char * 115 GetShortPluginName(); 116 117 virtual uint32_t 118 GetPluginVersion(); 119 120 protected: 121 std::vector<uint32_t> m_source_indexes; 122 std::vector<uint32_t> m_func_indexes; 123 std::vector<uint32_t> m_code_indexes; 124 std::vector<uint32_t> m_data_indexes; 125 std::vector<uint32_t> m_addr_indexes; // Anything that needs to go into an search by address 126 127 private: 128 DISALLOW_COPY_AND_ASSIGN (SymbolFileSymtab); 129 }; 130 131 132 #endif // liblldb_SymbolFileSymtab_h_ 133