LLDB  mainline
SymbolFileDWARF.h
Go to the documentation of this file.
1 //===-- SymbolFileDWARF.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 SymbolFileDWARF_SymbolFileDWARF_h_
10 #define SymbolFileDWARF_SymbolFileDWARF_h_
11 
12 #include <list>
13 #include <map>
14 #include <mutex>
15 #include <set>
16 #include <unordered_map>
17 #include <vector>
18 
19 #include "llvm/ADT/DenseMap.h"
20 #include "llvm/Support/Threading.h"
21 
23 #include "lldb/Core/dwarf.h"
27 #include "lldb/Symbol/SymbolFile.h"
29 #include "lldb/Utility/Flags.h"
30 #include "lldb/Utility/RangeMap.h"
31 #include "lldb/lldb-private.h"
32 
33 #include "DWARFContext.h"
34 #include "DWARFDataExtractor.h"
35 #include "DWARFDefines.h"
36 #include "DWARFIndex.h"
37 #include "UniqueDWARFASTType.h"
38 
39 // Forward Declarations for this DWARF plugin
40 class DebugMapModule;
43 class DWARFileUnit;
44 class DWARFDebugAbbrev;
45 class DWARFDebugAranges;
46 class DWARFDebugInfo;
48 class DWARFDebugLine;
50 class DWARFDeclContext;
51 class DWARFFormValue;
53 class SymbolFileDWARFDwo;
54 class SymbolFileDWARFDwp;
55 
56 #define DIE_IS_BEING_PARSED ((lldb_private::Type *)1)
57 
59  public lldb_private::UserID {
60 public:
62  friend class SymbolFileDWARFDwo;
63  friend class DebugMapModule;
64  friend struct DIERef;
65  friend class DWARFUnit;
66  friend class DWARFDIE;
67  friend class DWARFASTParserClang;
68 
69  // Static Functions
70  static void Initialize();
71 
72  static void Terminate();
73 
74  static void DebuggerInitialize(lldb_private::Debugger &debugger);
75 
77 
78  static const char *GetPluginDescriptionStatic();
79 
82 
83  static lldb_private::FileSpecList GetSymlinkPaths();
84 
85  // Constructors and Destructors
86 
88 
89  ~SymbolFileDWARF() override;
90 
91  uint32_t CalculateAbilities() override;
92 
93  void InitializeObject() override;
94 
95  // Compile Unit function calls
96 
97  uint32_t GetNumCompileUnits() override;
98 
99  lldb::CompUnitSP ParseCompileUnitAtIndex(uint32_t index) override;
100 
102  ParseLanguage(lldb_private::CompileUnit &comp_unit) override;
103 
104  size_t ParseFunctions(lldb_private::CompileUnit &comp_unit) override;
105 
106  bool ParseLineTable(lldb_private::CompileUnit &comp_unit) override;
107 
108  bool ParseDebugMacros(lldb_private::CompileUnit &comp_unit) override;
109 
111  lldb_private::FileSpecList &support_files) override;
112 
113  bool ParseIsOptimized(lldb_private::CompileUnit &comp_unit) override;
114 
115  size_t ParseTypes(lldb_private::CompileUnit &comp_unit) override;
116 
118  const lldb_private::SymbolContext &sc,
119  std::vector<lldb_private::SourceModule> &imported_modules) override;
120 
121  size_t ParseBlocksRecursive(lldb_private::Function &func) override;
122 
123  size_t
125 
127  llvm::Optional<ArrayInfo> GetDynamicArrayInfoForUID(
128  lldb::user_id_t type_uid,
129  const lldb_private::ExecutionContext *exe_ctx) override;
130 
131  bool CompleteType(lldb_private::CompilerType &compiler_type) override;
132 
134  bool assert_not_being_parsed = true,
135  bool resolve_function_context = false);
136 
138 
139  DWARFDIE
141 
143 
146 
149 
150  void
152 
154  lldb::SymbolContextItem resolve_scope,
155  lldb_private::SymbolContext &sc) override;
156 
157  uint32_t
159  bool check_inlines,
160  lldb::SymbolContextItem resolve_scope,
161  lldb_private::SymbolContextList &sc_list) override;
162 
163  uint32_t
165  const lldb_private::CompilerDeclContext *parent_decl_ctx,
166  uint32_t max_matches,
167  lldb_private::VariableList &variables) override;
168 
170  uint32_t max_matches,
171  lldb_private::VariableList &variables) override;
172 
173  uint32_t
175  const lldb_private::CompilerDeclContext *parent_decl_ctx,
176  lldb::FunctionNameType name_type_mask, bool include_inlines,
177  bool append, lldb_private::SymbolContextList &sc_list) override;
178 
180  bool include_inlines, bool append,
181  lldb_private::SymbolContextList &sc_list) override;
182 
184  const std::string &scope_qualified_name,
185  std::vector<lldb_private::ConstString> &mangled_names) override;
186 
187  uint32_t
189  const lldb_private::CompilerDeclContext *parent_decl_ctx,
190  bool append, uint32_t max_matches,
191  llvm::DenseSet<lldb_private::SymbolFile *> &searched_symbol_files,
192  lldb_private::TypeMap &types) override;
193 
194  size_t FindTypes(const std::vector<lldb_private::CompilerContext> &context,
195  bool append, lldb_private::TypeMap &types) override;
196 
198 
200  lldb::TypeClass type_mask,
201  lldb_private::TypeList &type_list) override;
202 
204  GetTypeSystemForLanguage(lldb::LanguageType language) override;
205 
208  const lldb_private::CompilerDeclContext *parent_decl_ctx) override;
209 
210  void PreloadSymbols() override;
211 
212  std::recursive_mutex &GetModuleMutex() const override;
213 
214  // PluginInterface protocol
216 
217  uint32_t GetPluginVersion() override;
218 
238 
240 
241  const DWARFDebugAbbrev *DebugAbbrev() const;
242 
244 
245  const DWARFDebugInfo *DebugInfo() const;
246 
248 
249  const DWARFDebugRangesBase *DebugRanges() const;
250 
252 
253  static bool SupportedVersion(uint16_t version);
254 
255  DWARFDIE
257 
258  bool
260 
263  uint32_t cu_idx = UINT32_MAX);
264 
265  virtual size_t GetObjCMethodDIEOffsets(lldb_private::ConstString class_name,
266  DIEArray &method_die_offsets);
267 
269 
271 
272  static DWARFDIE GetParentSymbolContextDIE(const DWARFDIE &die);
273 
274  virtual lldb::CompUnitSP ParseCompileUnit(DWARFUnit *dwarf_cu,
275  uint32_t cu_idx);
276 
278  GetLocationListFormat() const;
279 
280  lldb::ModuleSP GetDWOModule(lldb_private::ConstString name);
281 
282  typedef std::map<lldb_private::ConstString, lldb::ModuleSP>
284 
285  /// Return the list of Clang modules imported by this SymbolFile.
288  }
289 
290  virtual DWARFDIE GetDIE(const DIERef &die_ref);
291 
292  virtual std::unique_ptr<SymbolFileDWARFDwo>
294  const DWARFDebugInfoEntry &cu_die);
295 
296  // For regular SymbolFileDWARF instances the method returns nullptr,
297  // for the instances of the subclass SymbolFileDWARFDwo
298  // the method returns a pointer to the base compile unit.
299  virtual DWARFUnit *GetBaseCompileUnit();
300 
301  static bool
303  const DWARFDIE &die);
304 
305  std::vector<lldb_private::CallEdge>
306  ParseCallEdgesInFunction(UserID func_id) override;
307 
308  void Dump(lldb_private::Stream &s) override;
309 
310  void DumpClangAST(lldb_private::Stream &s) override;
311 
312 protected:
313  typedef llvm::DenseMap<const DWARFDebugInfoEntry *, lldb_private::Type *>
315  typedef llvm::DenseMap<const DWARFDebugInfoEntry *, lldb::VariableSP>
317  typedef llvm::DenseMap<const DWARFDebugInfoEntry *,
320  typedef llvm::DenseMap<lldb::opaque_compiler_type_t, DIERef> ClangTypeToDIE;
321 
323  llvm::once_flag m_flag;
325  };
326 
328 
331  DWARFDataSegment &data_segment);
332 
333  virtual void LoadSectionData(lldb::SectionType sect_type,
335 
337  const lldb_private::CompilerDeclContext *decl_ctx);
338 
339  virtual DWARFUnit *
341 
343 
344  bool GetFunction(const DWARFDIE &die, lldb_private::SymbolContext &sc);
345 
347  const DWARFDIE &die);
348 
350  lldb_private::Block *parent_block,
351  const DWARFDIE &die,
352  lldb::addr_t subprogram_low_pc, uint32_t depth);
353 
354  size_t ParseTypes(const lldb_private::SymbolContext &sc, const DWARFDIE &die,
355  bool parse_siblings, bool parse_children);
356 
357  lldb::TypeSP ParseType(const lldb_private::SymbolContext &sc,
358  const DWARFDIE &die, bool *type_is_new);
359 
361  bool assert_not_being_parsed);
362 
363  lldb_private::Type *ResolveTypeUID(const DIERef &die_ref);
364 
365  lldb::VariableSP ParseVariableDIE(const lldb_private::SymbolContext &sc,
366  const DWARFDIE &die,
367  const lldb::addr_t func_low_pc);
368 
370  const DWARFDIE &orig_die,
371  const lldb::addr_t func_low_pc, bool parse_siblings,
372  bool parse_children,
373  lldb_private::VariableList *cc_variable_list = NULL);
374 
375  bool ClassOrStructIsVirtual(const DWARFDIE &die);
376 
377  // Given a die_offset, figure out the symbol context representing that die.
378  bool ResolveFunction(const DWARFDIE &die, bool include_inlines,
380 
381  virtual lldb::TypeSP
383 
384  virtual lldb::TypeSP FindCompleteObjCDefinitionTypeForDIE(
385  const DWARFDIE &die, lldb_private::ConstString type_name,
386  bool must_be_implementation);
387 
390 
391  lldb::TypeSP GetTypeForDIE(const DWARFDIE &die,
392  bool resolve_function_context = false);
393 
394  void SetDebugMapModule(const lldb::ModuleSP &module_sp) {
395  m_debug_map_module_wp = module_sp;
396  }
397 
399 
400  DWARFDIE
401  FindBlockContainingSpecification(const DIERef &func_die_ref,
402  dw_offset_t spec_block_die_offset);
403 
404  DWARFDIE
406  dw_offset_t spec_block_die_offset);
407 
409 
410  bool DIEDeclContextsMatch(const DWARFDIE &die1, const DWARFDIE &die2);
411 
412  bool ClassContainsSelector(const DWARFDIE &class_die,
413  lldb_private::ConstString selector);
414 
416 
417  typedef std::set<lldb_private::Type *> TypeSet;
418 
419  void GetTypes(const DWARFDIE &die, dw_offset_t min_die_offset,
420  dw_offset_t max_die_offset, uint32_t type_mask,
421  TypeSet &type_set);
422 
426 
428 
430 
431  virtual DIEToTypePtr &GetDIEToType() { return m_die_to_type; }
432 
434 
437  }
438 
439  virtual ClangTypeToDIE &GetForwardDeclClangTypeToDie() {
441  }
442 
444 
445  lldb::ModuleWP m_debug_map_module_wp;
447 
448  llvm::once_flag m_dwp_symfile_once_flag;
449  std::unique_ptr<SymbolFileDWARFDwp> m_dwp_symfile;
450 
452 
472 
473  // The unique pointer items below are generated on demand if and when someone
474  // accesses
475  // them through a non const version of this class.
476  std::unique_ptr<DWARFDebugAbbrev> m_abbr;
477  std::unique_ptr<DWARFDebugInfo> m_info;
478  std::unique_ptr<DWARFDebugLine> m_line;
479  std::unique_ptr<GlobalVariableMap> m_global_aranges_up;
480 
481  typedef std::unordered_map<lldb::offset_t, lldb_private::DebugMacrosSP>
484 
486  std::unique_ptr<lldb_private::DWARFIndex> m_index;
489 
490  typedef std::shared_ptr<std::set<DIERef>> DIERefSetSP;
491  typedef std::unordered_map<std::string, DIERefSetSP> NameToOffsetMap;
493  std::unique_ptr<DWARFDebugRangesBase> m_ranges;
499 };
500 
501 #endif // SymbolFileDWARF_SymbolFileDWARF_h_
std::shared_ptr< std::set< DIERef > > DIERefSetSP
DWARFDIE GetDeclContextDIEContainingDIE(const DWARFDIE &die)
bool ResolveFunction(const DWARFDIE &die, bool include_inlines, lldb_private::SymbolContextList &sc_list)
virtual const lldb_private::DWARFDataExtractor & get_debug_addr_data()
A class to manage flag bits.
Definition: Debugger.h:82
virtual const lldb_private::DWARFDataExtractor & get_debug_str_offsets_data()
static void DebuggerInitialize(lldb_private::Debugger &debugger)
const ExternalTypeModuleMap & getExternalTypeModules() const
Return the list of Clang modules imported by this SymbolFile.
uint32_t GetPluginVersion() override
size_t ParseFunctions(lldb_private::CompileUnit &comp_unit) override
uint32_t ResolveSymbolContext(const lldb_private::Address &so_addr, lldb::SymbolContextItem resolve_scope, lldb_private::SymbolContext &sc) override
virtual DIEToClangType & GetForwardDeclDieToClangType()
Defines a list of symbol context objects.
A stream class that can stream formatted output to a file.
Definition: Stream.h:28
virtual lldb::TypeSP FindCompleteObjCDefinitionTypeForDIE(const DWARFDIE &die, lldb_private::ConstString type_name, bool must_be_implementation)
virtual lldb::CompUnitSP ParseCompileUnit(DWARFUnit *dwarf_cu, uint32_t cu_idx)
Defines a symbol context baton that can be handed other debug core functions.
Definition: SymbolContext.h:33
std::recursive_mutex & GetModuleMutex() const override
Symbols file subclasses should override this to return the Module that owns the TypeSystem that this ...
DWARFDataSegment m_data_debug_line_str
static lldb_private::ConstString GetPluginNameStatic()
virtual void LoadSectionData(lldb::SectionType sect_type, lldb_private::DWARFDataExtractor &data)
const lldb_private::DWARFDataExtractor & get_debug_line_data()
std::unique_ptr< lldb_private::DWARFIndex > m_index
DWARFDataSegment m_data_debug_ranges
static void Terminate()
bool ParseLineTable(lldb_private::CompileUnit &comp_unit) override
lldb_private::Function * ParseFunction(lldb_private::CompileUnit &comp_unit, const DWARFDIE &die)
const lldb_private::DWARFDataExtractor & get_apple_namespaces_data()
std::vector< lldb_private::CallEdge > ParseCallEdgesInFunction(UserID func_id) override
void * opaque_compiler_type_t
Definition: lldb-types.h:90
const lldb_private::DWARFDataExtractor & get_debug_frame_data()
A mix in class that contains a generic user ID.
Definition: UserID.h:33
DWARFDIE GetDIEFromUID(lldb::user_id_t uid)
A file utility class.
Definition: FileSpec.h:55
~SymbolFileDWARF() override
"lldb/Utility/RegularExpression.h" A C++ wrapper class for regex.
lldb_private::RangeDataVector< lldb::addr_t, lldb::addr_t, lldb_private::Variable * > GlobalVariableMap
uint32_t GetNumCompileUnits() override
uint32_t FindGlobalVariables(lldb_private::ConstString name, const lldb_private::CompilerDeclContext *parent_decl_ctx, uint32_t max_matches, lldb_private::VariableList &variables) override
void Dump(lldb_private::Stream &s) override
A class that describes a function.
Definition: Function.h:323
static const char * GetPluginDescriptionStatic()
void InitializeObject() override
Initialize the SymbolFile object.
DWARFDataSegment m_data_gnu_debugaltlink
A plug-in interface definition class for object file parsers.
Definition: ObjectFile.h:58
"lldb/Target/ExecutionContext.h" A class that contains an execution context.
lldb_private::CompilerDeclContext FindNamespace(lldb_private::ConstString name, const lldb_private::CompilerDeclContext *parent_decl_ctx) override
llvm::once_flag m_dwp_symfile_once_flag
void GetMangledNamesForFunction(const std::string &scope_qualified_name, std::vector< lldb_private::ConstString > &mangled_names) override
static bool SupportedVersion(uint16_t version)
lldb_private::Symbol * GetObjCClassSymbol(lldb_private::ConstString objc_class_name)
Definition: DIERef.h:18
lldb_private::TypeSystem * GetTypeSystemForLanguage(lldb::LanguageType language) override
DWARFDebugRangesBase * DebugRanges()
lldb::LanguageType ParseLanguage(lldb_private::CompileUnit &comp_unit) override
bool ClassContainsSelector(const DWARFDIE &class_die, lldb_private::ConstString selector)
A class that describes a single lexical block.
Definition: Block.h:41
size_t GetTypes(lldb_private::SymbolContextScope *sc_scope, lldb::TypeClass type_mask, lldb_private::TypeList &type_list) override
lldb::CompUnitSP ParseCompileUnitAtIndex(uint32_t index) override
static DWARFDIE GetParentSymbolContextDIE(const DWARFDIE &die)
virtual std::unique_ptr< SymbolFileDWARFDwo > GetDwoSymbolFileForCompileUnit(DWARFUnit &dwarf_cu, const DWARFDebugInfoEntry &cu_die)
DIEToTypePtr m_die_to_type
bool HasForwardDeclForClangType(const lldb_private::CompilerType &compiler_type)
A class that describes a compilation unit.
Definition: CompileUnit.h:35
DebugMacrosMap m_debug_macros_map
DWARFDataSegment m_data_debug_abbrev
UserID(lldb::user_id_t uid=LLDB_INVALID_UID)
Construct with optional user ID.
Definition: UserID.h:35
bool m_fetched_external_modules
std::vector< DIERef > DIEArray
Definition: DIERef.h:51
const lldb_private::DWARFDataExtractor & get_apple_names_data()
DWARFDataSegment m_data_debug_info
llvm::Optional< ArrayInfo > GetDynamicArrayInfoForUID(lldb::user_id_t type_uid, const lldb_private::ExecutionContext *exe_ctx) override
If type_uid points to an array type, return its characteristics.
DWARFDataSegment m_data_debug_addr
lldb_private::ConstString GetPluginName() override
SymbolFileDWARFDebugMap * GetDebugMapSymfile()
lldb_private::CompilerDeclContext GetDeclContextContainingUID(lldb::user_id_t uid) override
#define UINT32_MAX
Definition: lldb-defines.h:31
DWARFDataSegment m_data_debug_frame
std::unique_ptr< DWARFDebugInfo > m_info
DWARFDataSegment m_data_debug_line
SymbolFileDWARFDwp * GetDwpSymbolFile()
DWARFDataSegment m_data_debug_str_offsets
std::unique_ptr< DWARFDebugLine > m_line
DWARFDataSegment m_data_debug_str
bool DIEDeclContextsMatch(const DWARFDIE &die1, const DWARFDIE &die2)
llvm::DenseMap< lldb::opaque_compiler_type_t, DIERef > ClangTypeToDIE
virtual DIEToVariableSP & GetDIEToVariable()
uint64_t user_id_t
Definition: lldb-types.h:84
LanguageType
Programming language type.
std::unordered_map< std::string, DIERefSetSP > NameToOffsetMap
size_t ParseTypes(lldb_private::CompileUnit &comp_unit) override
uint64_t offset_t
Definition: lldb-types.h:87
lldb_private::Type * ResolveTypeUID(lldb::user_id_t type_uid) override
void ParseDeclsForContext(lldb_private::CompilerDeclContext decl_ctx) override
lldb_private::Type * ResolveType(const DWARFDIE &die, bool assert_not_being_parsed=true, bool resolve_function_context=false)
lldb::TypeSP ParseType(const lldb_private::SymbolContext &sc, const DWARFDIE &die, bool *type_is_new)
uint32_t FindTypes(lldb_private::ConstString name, const lldb_private::CompilerDeclContext *parent_decl_ctx, bool append, uint32_t max_matches, llvm::DenseSet< lldb_private::SymbolFile *> &searched_symbol_files, lldb_private::TypeMap &types) override
const lldb_private::DWARFDataExtractor & get_debug_rnglists_data()
const lldb_private::DWARFDataExtractor & get_apple_objc_data()
bool DeclContextMatchesThisSymbolFile(const lldb_private::CompilerDeclContext *decl_ctx)
size_t ParseVariables(const lldb_private::SymbolContext &sc, const DWARFDIE &orig_die, const lldb::addr_t func_low_pc, bool parse_siblings, bool parse_children, lldb_private::VariableList *cc_variable_list=NULL)
DWARFUnit * GetNextUnparsedDWARFCompileUnit(DWARFUnit *prev_cu)
void PreloadSymbols() override
const lldb_private::DWARFDataExtractor & get_debug_loc_data()
lldb::ModuleWP m_debug_map_module_wp
static lldb_private::SymbolFile * CreateInstance(lldb_private::ObjectFile *obj_file)
std::unique_ptr< DWARFDebugRangesBase > m_ranges
bool FixupAddress(lldb_private::Address &addr)
virtual ClangTypeToDIE & GetForwardDeclClangTypeToDie()
virtual lldb::TypeSP FindDefinitionTypeForDWARFDeclContext(const DWARFDeclContext &die_decl_ctx)
llvm::DenseMap< const DWARFDebugInfoEntry *, lldb::opaque_compiler_type_t > DIEToClangType
bool ParseDebugMacros(lldb_private::CompileUnit &comp_unit) override
lldb_private::LazyBool m_supports_DW_AT_APPLE_objc_complete_type
virtual const lldb_private::DWARFDataExtractor & get_debug_abbrev_data()
const lldb_private::DWARFDataExtractor & get_gnu_debugaltlink()
bool Supports_DW_AT_APPLE_objc_complete_type(DWARFUnit *cu)
const lldb_private::DWARFDataExtractor & DebugLocData()
llvm::DenseMap< const DWARFDebugInfoEntry *, lldb::VariableSP > DIEToVariableSP
ExternalTypeModuleMap m_external_type_modules
virtual lldb_private::DWARFExpression::LocationListFormat GetLocationListFormat() const
SymbolFileDWARFDebugMap * m_debug_map_symfile
std::unique_ptr< SymbolFileDWARFDwp > m_dwp_symfile
virtual DWARFUnit * GetBaseCompileUnit()
std::shared_ptr< DebugMacros > DebugMacrosSP
Definition: DebugMacros.h:21
std::unique_ptr< GlobalVariableMap > m_global_aranges_up
A section + offset based address class.
Definition: Address.h:80
DWARFDebugInfo * DebugInfo()
DWARFDataSegment m_data_debug_loc
lldb_private::TypeList * GetTypeList() override
const lldb_private::DWARFDataExtractor & get_apple_types_data()
UniqueDWARFASTTypeMap m_unique_ast_type_map
static lldb_private::FileSpecList GetSymlinkPaths()
bool ParseIsOptimized(lldb_private::CompileUnit &comp_unit) override
virtual DIEToTypePtr & GetDIEToType()
SymbolFileDWARF(lldb_private::ObjectFile *ofile)
const lldb_private::DWARFDataExtractor & get_debug_loclists_data()
DIEToVariableSP m_die_to_variable_sp
lldb_private::DWARFContext m_context
std::unordered_map< lldb::offset_t, lldb_private::DebugMacrosSP > DebugMacrosMap
DWARFDataSegment m_data_debug_rnglists
GlobalVariableMap & GetGlobalAranges()
bool CompleteType(lldb_private::CompilerType &compiler_type) override
bool ClassOrStructIsVirtual(const DWARFDIE &die)
lldb::ModuleSP GetDWOModule(lldb_private::ConstString name)
uint64_t addr_t
Definition: lldb-types.h:83
bool GetFunction(const DWARFDIE &die, lldb_private::SymbolContext &sc)
DWARFDebugAbbrev * DebugAbbrev()
void SetDebugMapModule(const lldb::ModuleSP &module_sp)
DWARFDataSegment m_data_apple_types
A uniqued constant string class.
Definition: ConstString.h:38
const lldb_private::DWARFDataExtractor & get_debug_line_str_data()
DWARFDataSegment m_data_apple_names
virtual UniqueDWARFASTTypeMap & GetUniqueDWARFASTTypeMap()
const lldb_private::DWARFDataExtractor & get_debug_types_data()
lldb_private::DWARFDataExtractor m_data
DWARFDataSegment m_data_debug_macro
lldb::VariableSP ParseVariableDIE(const lldb_private::SymbolContext &sc, const DWARFDIE &die, const lldb::addr_t func_low_pc)
bool ParseSupportFiles(lldb_private::CompileUnit &comp_unit, lldb_private::FileSpecList &support_files) override
static bool DIEInDeclContext(const lldb_private::CompilerDeclContext *parent_decl_ctx, const DWARFDIE &die)
uint32_t CalculateAbilities() override
lldb::TypeSP GetTypeForDIE(const DWARFDIE &die, bool resolve_function_context=false)
DISALLOW_COPY_AND_ASSIGN(SymbolFileDWARF)
const lldb_private::DWARFDataExtractor & get_debug_macro_data()
SymbolFileDWARF * GetDWARFForUID(lldb::user_id_t uid)
bool ParseImportedModules(const lldb_private::SymbolContext &sc, std::vector< lldb_private::SourceModule > &imported_modules) override
virtual DWARFDIE GetDIE(const DIERef &die_ref)
lldb_private::CompilerDecl GetDeclForUID(lldb::user_id_t uid) override
lldb_private::CompilerDeclContext GetDeclContextForUID(lldb::user_id_t uid) override
const lldb_private::DWARFDataExtractor & get_debug_ranges_data()
DWARFDataSegment m_data_apple_namespaces
void UpdateExternalModuleListIfNeeded()
virtual size_t GetObjCMethodDIEOffsets(lldb_private::ConstString class_name, DIEArray &method_die_offsets)
size_t ParseBlocksRecursive(lldb_private::Function &func) override
DWARFDataSegment m_data_debug_loclists
virtual const lldb_private::DWARFDataExtractor & get_debug_str_data()
void DumpClangAST(lldb_private::Stream &s) override
uint32_t FindFunctions(lldb_private::ConstString name, const lldb_private::CompilerDeclContext *parent_decl_ctx, lldb::FunctionNameType name_type_mask, bool include_inlines, bool append, lldb_private::SymbolContextList &sc_list) override
ClangTypeToDIE m_forward_decl_clang_type_to_die
virtual const lldb_private::DWARFDataExtractor & get_debug_info_data()
virtual DWARFUnit * GetDWARFCompileUnit(lldb_private::CompileUnit *comp_unit)
DIEToClangType m_forward_decl_die_to_clang_type
"lldb/Symbol/SymbolContextScope.h" Inherit from this if your object is part of a symbol context and c...
DWARFDIE FindBlockContainingSpecification(const DIERef &func_die_ref, dw_offset_t spec_block_die_offset)
const lldb_private::DWARFDataExtractor & GetCachedSectionData(lldb::SectionType sect_type, DWARFDataSegment &data_segment)
size_t ParseVariablesForContext(const lldb_private::SymbolContext &sc) override
DWARFDataSegment m_data_apple_objc
NameToOffsetMap m_function_scope_qualified_name_map
std::map< lldb_private::ConstString, lldb::ModuleSP > ExternalTypeModuleMap
lldb_private::CompileUnit * GetCompUnitForDWARFCompUnit(DWARFUnit *dwarf_cu, uint32_t cu_idx=UINT32_MAX)
std::set< lldb_private::Type * > TypeSet
llvm::DenseMap< const DWARFDebugInfoEntry *, lldb_private::Type * > DIEToTypePtr
std::unique_ptr< DWARFDebugAbbrev > m_abbr
DWARFDataSegment m_data_debug_types
static void Initialize()