1 //===-- DWARFASTParser.h ----------------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFASTPARSER_H 10 #define LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFASTPARSER_H 11 12 #include "DWARFDefines.h" 13 #include "lldb/Core/PluginInterface.h" 14 #include "lldb/Symbol/SymbolFile.h" 15 #include "lldb/Symbol/CompilerDecl.h" 16 #include "lldb/Symbol/CompilerDeclContext.h" 17 #include "lldb/lldb-enumerations.h" 18 19 class DWARFDIE; 20 namespace lldb_private { 21 class CompileUnit; 22 class ExecutionContext; 23 } 24 class SymbolFileDWARF; 25 26 class DWARFASTParser { 27 public: 28 virtual ~DWARFASTParser() = default; 29 30 virtual lldb::TypeSP ParseTypeFromDWARF(const lldb_private::SymbolContext &sc, 31 const DWARFDIE &die, 32 bool *type_is_new_ptr) = 0; 33 34 virtual lldb_private::Function * 35 ParseFunctionFromDWARF(lldb_private::CompileUnit &comp_unit, 36 const DWARFDIE &die, 37 const lldb_private::AddressRange &range) = 0; 38 39 virtual bool 40 CompleteTypeFromDWARF(const DWARFDIE &die, lldb_private::Type *type, 41 lldb_private::CompilerType &compiler_type) = 0; 42 43 virtual lldb_private::CompilerDecl 44 GetDeclForUIDFromDWARF(const DWARFDIE &die) = 0; 45 46 virtual lldb_private::CompilerDeclContext 47 GetDeclContextForUIDFromDWARF(const DWARFDIE &die) = 0; 48 49 virtual lldb_private::CompilerDeclContext 50 GetDeclContextContainingUIDFromDWARF(const DWARFDIE &die) = 0; 51 52 virtual void EnsureAllDIEsInDeclContextHaveBeenParsed( 53 lldb_private::CompilerDeclContext decl_context) = 0; 54 55 static llvm::Optional<lldb_private::SymbolFile::ArrayInfo> 56 ParseChildArrayInfo(const DWARFDIE &parent_die, 57 const lldb_private::ExecutionContext *exe_ctx = nullptr); 58 59 static lldb::AccessType GetAccessTypeFromDWARF(uint32_t dwarf_accessibility); 60 }; 61 62 #endif // LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFASTPARSER_H 63