1 //===-- SymbolFileBreakpad.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 LLDB_PLUGINS_SYMBOLFILE_BREAKPAD_SYMBOLFILEBREAKPAD_H 11 #define LLDB_PLUGINS_SYMBOLFILE_BREAKPAD_SYMBOLFILEBREAKPAD_H 12 13 #include "lldb/Symbol/SymbolFile.h" 14 15 namespace lldb_private { 16 17 namespace breakpad { 18 19 class SymbolFileBreakpad : public SymbolFile { 20 public: 21 //------------------------------------------------------------------ 22 // Static Functions 23 //------------------------------------------------------------------ 24 static void Initialize(); 25 static void Terminate(); DebuggerInitialize(Debugger & debugger)26 static void DebuggerInitialize(Debugger &debugger) {} 27 static ConstString GetPluginNameStatic(); 28 GetPluginDescriptionStatic()29 static const char *GetPluginDescriptionStatic() { 30 return "Breakpad debug symbol file reader."; 31 } 32 CreateInstance(ObjectFile * obj_file)33 static SymbolFile *CreateInstance(ObjectFile *obj_file) { 34 return new SymbolFileBreakpad(obj_file); 35 } 36 37 //------------------------------------------------------------------ 38 // Constructors and Destructors 39 //------------------------------------------------------------------ SymbolFileBreakpad(ObjectFile * object_file)40 SymbolFileBreakpad(ObjectFile *object_file) : SymbolFile(object_file) {} 41 ~SymbolFileBreakpad()42 ~SymbolFileBreakpad() override {} 43 44 uint32_t CalculateAbilities() override; 45 InitializeObject()46 void InitializeObject() override {} 47 48 //------------------------------------------------------------------ 49 // Compile Unit function calls 50 //------------------------------------------------------------------ 51 52 uint32_t GetNumCompileUnits() override; 53 54 lldb::CompUnitSP ParseCompileUnitAtIndex(uint32_t index) override; 55 ParseLanguage(CompileUnit & comp_unit)56 lldb::LanguageType ParseLanguage(CompileUnit &comp_unit) override { 57 return lldb::eLanguageTypeUnknown; 58 } 59 60 size_t ParseFunctions(CompileUnit &comp_unit) override; 61 62 bool ParseLineTable(CompileUnit &comp_unit) override; 63 ParseDebugMacros(CompileUnit & comp_unit)64 bool ParseDebugMacros(CompileUnit &comp_unit) override { return false; } 65 ParseSupportFiles(CompileUnit & comp_unit,FileSpecList & support_files)66 bool ParseSupportFiles(CompileUnit &comp_unit, 67 FileSpecList &support_files) override { 68 return false; 69 } ParseTypes(CompileUnit & cu)70 size_t ParseTypes(CompileUnit &cu) override { return 0; } 71 72 bool ParseImportedModules(const SymbolContext & sc,std::vector<ConstString> & imported_modules)73 ParseImportedModules(const SymbolContext &sc, 74 std::vector<ConstString> &imported_modules) override { 75 return false; 76 } 77 ParseBlocksRecursive(Function & func)78 size_t ParseBlocksRecursive(Function &func) override { return 0; } 79 FindGlobalVariables(const ConstString & name,const CompilerDeclContext * parent_decl_ctx,uint32_t max_matches,VariableList & variables)80 uint32_t FindGlobalVariables(const ConstString &name, 81 const CompilerDeclContext *parent_decl_ctx, 82 uint32_t max_matches, 83 VariableList &variables) override { 84 return 0; 85 } 86 ParseVariablesForContext(const SymbolContext & sc)87 size_t ParseVariablesForContext(const SymbolContext &sc) override { 88 return 0; 89 } ResolveTypeUID(lldb::user_id_t type_uid)90 Type *ResolveTypeUID(lldb::user_id_t type_uid) override { return nullptr; } GetDynamicArrayInfoForUID(lldb::user_id_t type_uid,const lldb_private::ExecutionContext * exe_ctx)91 llvm::Optional<ArrayInfo> GetDynamicArrayInfoForUID( 92 lldb::user_id_t type_uid, 93 const lldb_private::ExecutionContext *exe_ctx) override { 94 return llvm::None; 95 } 96 CompleteType(CompilerType & compiler_type)97 bool CompleteType(CompilerType &compiler_type) override { return false; } 98 uint32_t ResolveSymbolContext(const Address &so_addr, 99 lldb::SymbolContextItem resolve_scope, 100 SymbolContext &sc) override; 101 GetTypes(SymbolContextScope * sc_scope,lldb::TypeClass type_mask,TypeList & type_list)102 size_t GetTypes(SymbolContextScope *sc_scope, lldb::TypeClass type_mask, 103 TypeList &type_list) override { 104 return 0; 105 } 106 107 uint32_t FindFunctions(const ConstString &name, 108 const CompilerDeclContext *parent_decl_ctx, 109 lldb::FunctionNameType name_type_mask, 110 bool include_inlines, bool append, 111 SymbolContextList &sc_list) override; 112 113 uint32_t FindFunctions(const RegularExpression ®ex, bool include_inlines, 114 bool append, SymbolContextList &sc_list) override; 115 116 uint32_t FindTypes(const ConstString &name, 117 const CompilerDeclContext *parent_decl_ctx, bool append, 118 uint32_t max_matches, 119 llvm::DenseSet<SymbolFile *> &searched_symbol_files, 120 TypeMap &types) override; 121 122 size_t FindTypes(const std::vector<CompilerContext> &context, bool append, 123 TypeMap &types) override; 124 GetTypeSystemForLanguage(lldb::LanguageType language)125 TypeSystem *GetTypeSystemForLanguage(lldb::LanguageType language) override { 126 return nullptr; 127 } 128 129 CompilerDeclContext FindNamespace(const ConstString & name,const CompilerDeclContext * parent_decl_ctx)130 FindNamespace(const ConstString &name, 131 const CompilerDeclContext *parent_decl_ctx) override { 132 return CompilerDeclContext(); 133 } 134 135 void AddSymbols(Symtab &symtab) override; 136 GetPluginName()137 ConstString GetPluginName() override { return GetPluginNameStatic(); } GetPluginVersion()138 uint32_t GetPluginVersion() override { return 1; } 139 140 private: 141 }; 142 143 } // namespace breakpad 144 } // namespace lldb_private 145 146 #endif 147