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 LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_SYMBOLFILEDWARF_H
10 #define LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_SYMBOLFILEDWARF_H
11 
12 #include <list>
13 #include <map>
14 #include <mutex>
15 #include <unordered_map>
16 #include <vector>
17 
18 #include "llvm/ADT/DenseMap.h"
19 #include "llvm/ADT/SetVector.h"
20 #include "llvm/Support/Threading.h"
21 
23 #include "lldb/Core/dwarf.h"
26 #include "lldb/Symbol/SymbolFile.h"
27 #include "lldb/Target/Statistics.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 DWARFCompileUnit;
44 class DWARFDebugAbbrev;
45 class DWARFDebugAranges;
46 class DWARFDebugInfo;
48 class DWARFDebugLine;
49 class DWARFDebugRanges;
50 class DWARFDeclContext;
51 class DWARFFormValue;
52 class DWARFTypeUnit;
54 class SymbolFileDWARFDwo;
55 class SymbolFileDWARFDwp;
56 
57 #define DIE_IS_BEING_PARSED ((lldb_private::Type *)1)
58 
60  public lldb_private::UserID {
61  /// LLVM RTTI support.
62  static char ID;
63 
64 public:
65  /// LLVM RTTI support.
66  /// \{
67  bool isA(const void *ClassID) const override {
68  return ClassID == &ID || SymbolFileCommon::isA(ClassID);
69  }
70  static bool classof(const SymbolFile *obj) { return obj->isA(&ID); }
71  /// \}
72 
74  friend class SymbolFileDWARFDwo;
75  friend class DebugMapModule;
76  friend class DWARFCompileUnit;
77  friend class DWARFDIE;
78  friend class DWARFASTParserClang;
79 
80  // Static Functions
81  static void Initialize();
82 
83  static void Terminate();
84 
85  static void DebuggerInitialize(lldb_private::Debugger &debugger);
86 
87  static llvm::StringRef GetPluginNameStatic() { return "dwarf"; }
88 
89  static llvm::StringRef GetPluginDescriptionStatic();
90 
92  CreateInstance(lldb::ObjectFileSP objfile_sp);
93 
94  // Constructors and Destructors
95 
96  SymbolFileDWARF(lldb::ObjectFileSP objfile_sp,
97  lldb_private::SectionList *dwo_section_list);
98 
99  ~SymbolFileDWARF() override;
100 
101  uint32_t CalculateAbilities() override;
102 
103  void InitializeObject() override;
104 
105  // Compile Unit function calls
106 
108  ParseLanguage(lldb_private::CompileUnit &comp_unit) override;
109 
111  ParseXcodeSDK(lldb_private::CompileUnit &comp_unit) override;
112 
113  size_t ParseFunctions(lldb_private::CompileUnit &comp_unit) override;
114 
115  bool ParseLineTable(lldb_private::CompileUnit &comp_unit) override;
116 
117  bool ParseDebugMacros(lldb_private::CompileUnit &comp_unit) override;
118 
120  lldb_private::CompileUnit &, llvm::DenseSet<lldb_private::SymbolFile *> &,
121  llvm::function_ref<bool(lldb_private::Module &)>) override;
122 
124  lldb_private::FileSpecList &support_files) override;
125 
126  bool ParseIsOptimized(lldb_private::CompileUnit &comp_unit) override;
127 
128  size_t ParseTypes(lldb_private::CompileUnit &comp_unit) override;
129 
131  const lldb_private::SymbolContext &sc,
132  std::vector<lldb_private::SourceModule> &imported_modules) override;
133 
134  size_t ParseBlocksRecursive(lldb_private::Function &func) override;
135 
136  size_t
138 
140  llvm::Optional<ArrayInfo> GetDynamicArrayInfoForUID(
141  lldb::user_id_t type_uid,
142  const lldb_private::ExecutionContext *exe_ctx) override;
143 
144  bool CompleteType(lldb_private::CompilerType &compiler_type) override;
145 
147  bool assert_not_being_parsed = true,
148  bool resolve_function_context = false);
149 
151 
154 
157 
158  void
160 
162  lldb::SymbolContextItem resolve_scope,
163  lldb_private::SymbolContext &sc) override;
164 
166  const lldb_private::SourceLocationSpec &src_location_spec,
167  lldb::SymbolContextItem resolve_scope,
168  lldb_private::SymbolContextList &sc_list) override;
169 
170  void
172  const lldb_private::CompilerDeclContext &parent_decl_ctx,
173  uint32_t max_matches,
174  lldb_private::VariableList &variables) override;
175 
177  uint32_t max_matches,
178  lldb_private::VariableList &variables) override;
179 
181  const lldb_private::CompilerDeclContext &parent_decl_ctx,
182  lldb::FunctionNameType name_type_mask,
183  bool include_inlines,
184  lldb_private::SymbolContextList &sc_list) override;
185 
187  bool include_inlines,
188  lldb_private::SymbolContextList &sc_list) override;
189 
191  const std::string &scope_qualified_name,
192  std::vector<lldb_private::ConstString> &mangled_names) override;
193 
194  void
196  const lldb_private::CompilerDeclContext &parent_decl_ctx,
197  uint32_t max_matches,
198  llvm::DenseSet<lldb_private::SymbolFile *> &searched_symbol_files,
199  lldb_private::TypeMap &types) override;
200 
201  void FindTypes(llvm::ArrayRef<lldb_private::CompilerContext> pattern,
202  lldb_private::LanguageSet languages,
203  llvm::DenseSet<SymbolFile *> &searched_symbol_files,
204  lldb_private::TypeMap &types) override;
205 
207  lldb::TypeClass type_mask,
208  lldb_private::TypeList &type_list) override;
209 
210  llvm::Expected<lldb_private::TypeSystem &>
211  GetTypeSystemForLanguage(lldb::LanguageType language) override;
212 
215  const lldb_private::CompilerDeclContext &parent_decl_ctx) override;
216 
217  void PreloadSymbols() override;
218 
219  std::recursive_mutex &GetModuleMutex() const override;
220 
221  // PluginInterface protocol
222  llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
223 
225 
227 
229 
230  static bool SupportedVersion(uint16_t version);
231 
232  DWARFDIE
234 
235  bool
237 
240 
241  virtual void GetObjCMethods(lldb_private::ConstString class_name,
242  llvm::function_ref<bool(DWARFDIE die)> callback);
243 
245 
247 
248  static DWARFDIE GetParentSymbolContextDIE(const DWARFDIE &die);
249 
250  lldb::ModuleSP GetExternalModule(lldb_private::ConstString name);
251 
252  typedef std::map<lldb_private::ConstString, lldb::ModuleSP>
254 
255  /// Return the list of Clang modules imported by this SymbolFile.
258  }
259 
260  virtual DWARFDIE GetDIE(const DIERef &die_ref);
261 
263 
265  return GetUID(die.GetDIERef());
266  }
267 
268  lldb::user_id_t GetUID(const llvm::Optional<DIERef> &ref) {
269  return ref ? GetUID(*ref) : LLDB_INVALID_UID;
270  }
271 
273 
274  std::shared_ptr<SymbolFileDWARFDwo>
276  const DWARFDebugInfoEntry &cu_die);
277 
278  virtual llvm::Optional<uint32_t> GetDwoNum() { return llvm::None; }
279 
280  /// If this is a DWARF object with a single CU, return its DW_AT_dwo_id.
281  llvm::Optional<uint64_t> GetDWOId();
282 
283  static bool
285  const DWARFDIE &die);
286 
287  std::vector<std::unique_ptr<lldb_private::CallEdge>>
288  ParseCallEdgesInFunction(UserID func_id) override;
289 
290  void Dump(lldb_private::Stream &s) override;
291 
292  void DumpClangAST(lldb_private::Stream &s) override;
293 
295 
296  const std::shared_ptr<SymbolFileDWARFDwo> &GetDwpSymbolFile();
297 
298  lldb_private::FileSpec GetFile(DWARFUnit &unit, size_t file_idx);
299 
300  static llvm::Expected<lldb_private::TypeSystem &>
301  GetTypeSystem(DWARFUnit &unit);
302 
303  static DWARFASTParser *GetDWARFParser(DWARFUnit &unit);
304 
305  // CompilerDecl related functions
306 
307  static lldb_private::CompilerDecl GetDecl(const DWARFDIE &die);
308 
310 
313 
314  static DWARFDeclContext GetDWARFDeclContext(const DWARFDIE &die);
315 
316  static lldb::LanguageType LanguageTypeFromDWARF(uint64_t val);
317 
319  /// Same as GetLanguage() but reports all C++ versions as C++ (no version).
321 
323  return m_parse_time;
324  }
326 
328  return m_parse_time;
329  }
330 
331 protected:
332  typedef llvm::DenseMap<const DWARFDebugInfoEntry *, lldb_private::Type *>
334  typedef llvm::DenseMap<const DWARFDebugInfoEntry *, lldb::VariableSP>
336  typedef llvm::DenseMap<const DWARFDebugInfoEntry *,
339  typedef llvm::DenseMap<lldb::opaque_compiler_type_t, DIERef> ClangTypeToDIE;
340 
341  SymbolFileDWARF(const SymbolFileDWARF &) = delete;
342  const SymbolFileDWARF &operator=(const SymbolFileDWARF &) = delete;
343 
344  virtual void LoadSectionData(lldb::SectionType sect_type,
346 
348  const lldb_private::CompilerDeclContext &decl_ctx);
349 
351 
352  lldb::CompUnitSP ParseCompileUnitAtIndex(uint32_t index) override;
353 
355 
356  lldb::CompUnitSP ParseCompileUnit(DWARFCompileUnit &dwarf_cu);
357 
358  virtual DWARFCompileUnit *
360 
362 
363  bool GetFunction(const DWARFDIE &die, lldb_private::SymbolContext &sc);
364 
366  const DWARFDIE &die);
367 
369  lldb_private::Block *parent_block,
370  const DWARFDIE &die,
371  lldb::addr_t subprogram_low_pc, uint32_t depth);
372 
373  size_t ParseTypes(const lldb_private::SymbolContext &sc, const DWARFDIE &die,
374  bool parse_siblings, bool parse_children);
375 
376  lldb::TypeSP ParseType(const lldb_private::SymbolContext &sc,
377  const DWARFDIE &die, bool *type_is_new);
378 
379  bool ParseSupportFiles(DWARFUnit &dwarf_cu, const lldb::ModuleSP &module,
380  lldb_private::FileSpecList &support_files);
381 
383  bool assert_not_being_parsed);
384 
385  lldb_private::Type *ResolveTypeUID(const DIERef &die_ref);
386 
387  lldb::VariableSP ParseVariableDIE(const lldb_private::SymbolContext &sc,
388  const DWARFDIE &die,
389  const lldb::addr_t func_low_pc);
390  lldb::VariableSP ParseVariableDIECached(const lldb_private::SymbolContext &sc,
391  const DWARFDIE &die);
392 
393  void
395  const DWARFDIE &die,
396  lldb_private::VariableList &cc_variable_list);
397 
399  const DWARFDIE &die,
400  const lldb::addr_t func_low_pc);
401 
403  const lldb_private::SymbolContext &sc, const DWARFDIE &die,
404  lldb::addr_t func_low_pc, DIEArray &accumulator);
405 
407  const lldb_private::SymbolContext &sc,
408  llvm::ArrayRef<DIERef> variable_dies,
409  lldb::addr_t func_low_pc);
410 
412  DIEArray &&variable_dies);
413 
414  bool ClassOrStructIsVirtual(const DWARFDIE &die);
415 
416  // Given a die_offset, figure out the symbol context representing that die.
417  bool ResolveFunction(const DWARFDIE &die, bool include_inlines,
419 
420  /// Resolve functions and (possibly) blocks for the given file address and a
421  /// compile unit. The compile unit comes from the sc argument and it must be
422  /// set. The results of the lookup (if any) are written back to the symbol
423  /// context.
424  void ResolveFunctionAndBlock(lldb::addr_t file_vm_addr, bool lookup_block,
426 
427  virtual lldb::TypeSP
429 
430  virtual lldb::TypeSP
432  lldb_private::ConstString type_name,
433  bool must_be_implementation);
434 
437 
438  lldb::TypeSP GetTypeForDIE(const DWARFDIE &die,
439  bool resolve_function_context = false);
440 
441  void SetDebugMapModule(const lldb::ModuleSP &module_sp) {
442  m_debug_map_module_wp = module_sp;
443  }
444 
446 
447  DWARFDIE
448  FindBlockContainingSpecification(const DIERef &func_die_ref,
449  dw_offset_t spec_block_die_offset);
450 
451  DWARFDIE
453  dw_offset_t spec_block_die_offset);
454 
456 
457  bool DIEDeclContextsMatch(const DWARFDIE &die1, const DWARFDIE &die2);
458 
459  bool ClassContainsSelector(const DWARFDIE &class_die,
460  lldb_private::ConstString selector);
461 
462  /// Parse call site entries (DW_TAG_call_site), including any nested call site
463  /// parameters (DW_TAG_call_site_parameter).
464  std::vector<std::unique_ptr<lldb_private::CallEdge>>
465  CollectCallEdges(lldb::ModuleSP module, DWARFDIE function_die);
466 
467  /// If this symbol file is linked to by a debug map (see
468  /// SymbolFileDWARFDebugMap), and \p file_addr is a file address relative to
469  /// an object file, adjust \p file_addr so that it is relative to the main
470  /// binary. Returns the adjusted address, or \p file_addr if no adjustment is
471  /// needed, on success and LLDB_INVALID_ADDRESS otherwise.
473 
475 
476  typedef llvm::SetVector<lldb_private::Type *> TypeSet;
477 
478  void GetTypes(const DWARFDIE &die, dw_offset_t min_die_offset,
479  dw_offset_t max_die_offset, uint32_t type_mask,
480  TypeSet &type_set);
481 
485 
487 
489 
490  virtual DIEToTypePtr &GetDIEToType() { return m_die_to_type; }
491 
493 
496  }
497 
500  }
501 
503  llvm::Optional<uint32_t> GetDWARFUnitIndex(uint32_t cu_idx);
504 
505  struct DecodedUID {
508  };
509  llvm::Optional<DecodedUID> DecodeUID(lldb::user_id_t uid);
510 
511  void FindDwpSymbolFile();
512 
513  const lldb_private::FileSpecList &GetTypeUnitSupportFiles(DWARFTypeUnit &tu);
514 
516  const lldb_private::SectionList &section_list);
517 
519 
520  lldb::ModuleWP m_debug_map_module_wp;
522 
523  llvm::once_flag m_dwp_symfile_once_flag;
524  std::shared_ptr<SymbolFileDWARFDwo> m_dwp_symfile;
525 
527 
528  llvm::once_flag m_info_once_flag;
529  std::unique_ptr<DWARFDebugInfo> m_info;
530 
531  std::unique_ptr<DWARFDebugAbbrev> m_abbr;
532  std::unique_ptr<GlobalVariableMap> m_global_aranges_up;
533 
534  typedef std::unordered_map<lldb::offset_t, lldb_private::DebugMacrosSP>
537 
539  std::unique_ptr<lldb_private::DWARFIndex> m_index;
542 
543  typedef std::set<DIERef> DIERefSet;
544  typedef llvm::StringMap<DIERefSet> NameToOffsetMap;
546  std::unique_ptr<DWARFDebugRanges> m_ranges;
552  llvm::DenseMap<dw_offset_t, lldb_private::FileSpecList>
554  std::vector<uint32_t> m_lldb_cu_to_dwarf_unit;
555  /// DWARF does not provide a good way for traditional (concatenating) linkers
556  /// to invalidate debug info describing dead-stripped code. These linkers will
557  /// keep the debug info but resolve any addresses referring to such code as
558  /// zero (BFD) or a small positive integer (zero + relocation addend -- GOLD).
559  /// Try to filter out this debug info by comparing it to the lowest code
560  /// address in the module.
563  std::atomic_flag m_dwo_warning_issued = ATOMIC_FLAG_INIT;
564 };
565 
566 #endif // LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_SYMBOLFILEDWARF_H
SymbolFileDWARF::GetCompUnitForDWARFCompUnit
lldb_private::CompileUnit * GetCompUnitForDWARFCompUnit(DWARFCompileUnit &dwarf_cu)
Definition: SymbolFileDWARF.cpp:1616
SymbolFileDWARF::CalculateNumCompileUnits
uint32_t CalculateNumCompileUnits() override
Definition: SymbolFileDWARF.cpp:804
SymbolFileDWARF::classof
static bool classof(const SymbolFile *obj)
Definition: SymbolFileDWARF.h:70
SymbolFileDWARF::DecodeUID
llvm::Optional< DecodedUID > DecodeUID(lldb::user_id_t uid)
Definition: SymbolFileDWARF.cpp:1381
lldb_private::SymbolFile::SymbolFile
SymbolFile()=default
SymbolFileDWARF::m_debug_macros_map
DebugMacrosMap m_debug_macros_map
Definition: SymbolFileDWARF.h:536
SymbolFileDWARF::GetDebugInfoIndexTime
lldb_private::StatsDuration::Duration GetDebugInfoIndexTime() override
Return the time it took to index the debug information in the object file.
Definition: SymbolFileDWARF.cpp:4089
DIERef
Identifies a DWARF debug info entry within a given Module.
Definition: DIERef.h:26
lldb_private::SymbolFile
Provides public interface for all SymbolFiles.
Definition: SymbolFile.h:45
SymbolFileDWARF::ExternalTypeModuleMap
std::map< lldb_private::ConstString, lldb::ModuleSP > ExternalTypeModuleMap
Definition: SymbolFileDWARF.h:253
SymbolFileDWARF::GetFunction
bool GetFunction(const DWARFDIE &die, lldb_private::SymbolContext &sc)
Definition: SymbolFileDWARF.cpp:1638
lldb_private::ExecutionContext
Definition: ExecutionContext.h:292
SymbolFileDWARF::DIEDeclContextsMatch
bool DIEDeclContextsMatch(const DWARFDIE &die1, const DWARFDIE &die2)
Definition: SymbolFileDWARF.cpp:2768
SymbolFileDWARF::InitializeFirstCodeAddressRecursive
void InitializeFirstCodeAddressRecursive(const lldb_private::SectionList &section_list)
Definition: SymbolFileDWARF.cpp:503
SymbolFileDWARF::m_dwo_warning_issued
std::atomic_flag m_dwo_warning_issued
Definition: SymbolFileDWARF.h:563
lldb_private::RegularExpression
Definition: RegularExpression.h:18
SymbolFileDWARF::m_abbr
std::unique_ptr< DWARFDebugAbbrev > m_abbr
Definition: SymbolFileDWARF.h:531
SymbolFileDWARF::m_external_type_modules
ExternalTypeModuleMap m_external_type_modules
Definition: SymbolFileDWARF.h:538
SymbolFileDWARF::GetFile
lldb_private::FileSpec GetFile(DWARFUnit &unit, size_t file_idx)
Definition: SymbolFileDWARF.cpp:1002
DWARFBaseDIE::GetDIERef
llvm::Optional< DIERef > GetDIERef() const
Definition: DWARFBaseDIE.cpp:21
SymbolFileDWARF::ParseLineTable
bool ParseLineTable(lldb_private::CompileUnit &comp_unit) override
Definition: SymbolFileDWARF.cpp:1113
SymbolFileDWARF::ResolveTypeUID
lldb_private::Type * ResolveTypeUID(lldb::user_id_t type_uid) override
Definition: SymbolFileDWARF.cpp:1463
SymbolFileDWARF::DecodedUID::dwarf
SymbolFileDWARF & dwarf
Definition: SymbolFileDWARF.h:506
SymbolFileDWARF::ParseFunctions
size_t ParseFunctions(lldb_private::CompileUnit &comp_unit) override
Definition: SymbolFileDWARF.cpp:916
SymbolFileDWARF::m_parse_time
lldb_private::StatsDuration m_parse_time
Definition: SymbolFileDWARF.h:562
lldb_private::Symbol
Definition: Symbol.h:20
SymbolFileDWARF::ParseType
lldb::TypeSP ParseType(const lldb_private::SymbolContext &sc, const DWARFDIE &die, bool *type_is_new)
Definition: SymbolFileDWARF.cpp:2967
DWARFDebugAranges
Definition: DWARFDebugAranges.h:16
lldb_private::SourceLocationSpec
Definition: SourceLocationSpec.h:27
SymbolFileDWARF::ParseVariableDIE
lldb::VariableSP ParseVariableDIE(const lldb_private::SymbolContext &sc, const DWARFDIE &die, const lldb::addr_t func_low_pc)
Definition: SymbolFileDWARF.cpp:3144
SymbolFileDWARF::GetForwardDeclDieToClangType
virtual DIEToClangType & GetForwardDeclDieToClangType()
Definition: SymbolFileDWARF.h:494
SymbolFileDWARF::GetParentSymbolContextDIE
static DWARFDIE GetParentSymbolContextDIE(const DWARFDIE &die)
Definition: SymbolFileDWARF.cpp:389
SymbolFileDWARF::GetPluginNameStatic
static llvm::StringRef GetPluginNameStatic()
Definition: SymbolFileDWARF.h:87
SymbolFileDWARF::ParseAndAppendGlobalVariable
void ParseAndAppendGlobalVariable(const lldb_private::SymbolContext &sc, const DWARFDIE &die, lldb_private::VariableList &cc_variable_list)
Definition: SymbolFileDWARF.cpp:3521
SymbolFileDWARF::GetDWARFContext
lldb_private::DWARFContext & GetDWARFContext()
Definition: SymbolFileDWARF.h:294
SymbolFileDWARF::GetTypeSystem
static llvm::Expected< lldb_private::TypeSystem & > GetTypeSystem(DWARFUnit &unit)
Definition: SymbolFileDWARF.cpp:4023
SymbolFileDWARF::ParseLanguage
lldb::LanguageType ParseLanguage(lldb_private::CompileUnit &comp_unit) override
Definition: SymbolFileDWARF.cpp:879
lldb_private::UserID
Definition: UserID.h:31
DWARFContext.h
DWARFDebugInfo
Definition: DWARFDebugInfo.h:26
DWARFTypeUnit
Definition: DWARFTypeUnit.h:15
SymbolFileDWARF::m_unique_ast_type_map
UniqueDWARFASTTypeMap m_unique_ast_type_map
Definition: SymbolFileDWARF.h:547
LLDB_INVALID_UID
#define LLDB_INVALID_UID
Definition: lldb-defines.h:80
lldb_private::StatsDuration::Duration
std::chrono::duration< double > Duration
Definition: Statistics.h:29
SymbolFileDWARF::FindDwpSymbolFile
void FindDwpSymbolFile()
SymbolFileDWARF::DIERefSet
std::set< DIERef > DIERefSet
Definition: SymbolFileDWARF.h:543
SymbolFileDWARF::m_dwp_symfile_once_flag
llvm::once_flag m_dwp_symfile_once_flag
Definition: SymbolFileDWARF.h:523
SymbolFileDWARF::DIEToClangType
llvm::DenseMap< const DWARFDebugInfoEntry *, lldb::opaque_compiler_type_t > DIEToClangType
Definition: SymbolFileDWARF.h:338
SymbolFileDWARF::m_lldb_cu_to_dwarf_unit
std::vector< uint32_t > m_lldb_cu_to_dwarf_unit
Definition: SymbolFileDWARF.h:554
SymbolFileDWARF::GetTypeUnitSupportFiles
const lldb_private::FileSpecList & GetTypeUnitSupportFiles(DWARFTypeUnit &tu)
Definition: SymbolFileDWARF.cpp:1014
SymbolFileDWARF::getExternalTypeModules
const ExternalTypeModuleMap & getExternalTypeModules() const
Return the list of Clang modules imported by this SymbolFile.
Definition: SymbolFileDWARF.h:256
lldb_private::XcodeSDK
An abstraction for Xcode-style SDKs that works like ArchSpec.
Definition: XcodeSDK.h:24
SymbolFileDWARF::ParseImportedModules
bool ParseImportedModules(const lldb_private::SymbolContext &sc, std::vector< lldb_private::SourceModule > &imported_modules) override
Definition: SymbolFileDWARF.cpp:1058
SymbolFileDWARF
Definition: SymbolFileDWARF.h:59
lldb::LanguageType
LanguageType
Programming language type.
Definition: lldb-enumerations.h:436
lldb_private::SymbolContextList
Definition: SymbolContext.h:379
lldb_private::CompilerDecl
Represents a generic declaration such as a function declaration.
Definition: CompilerDecl.h:28
lldb_private::Module
Definition: Module.h:85
SymbolFileDWARF::GetDWARFCompileUnit
virtual DWARFCompileUnit * GetDWARFCompileUnit(lldb_private::CompileUnit *comp_unit)
Definition: SymbolFileDWARF.cpp:644
SymbolFileDWARF::Terminate
static void Terminate()
Definition: SymbolFileDWARF.cpp:258
lldb_private::SectionList
Definition: Section.h:34
SymbolFileDWARF::ID
static char ID
LLVM RTTI support.
Definition: SymbolFileDWARF.h:62
SymbolFileDWARF::m_forward_decl_clang_type_to_die
ClangTypeToDIE m_forward_decl_clang_type_to_die
Definition: SymbolFileDWARF.h:551
lldb::offset_t
uint64_t offset_t
Definition: lldb-types.h:87
SymbolFileDWARF::GetDebugRanges
DWARFDebugRanges * GetDebugRanges()
Definition: SymbolFileDWARF.cpp:657
SymbolFileDWARF::SetDebugMapModule
void SetDebugMapModule(const lldb::ModuleSP &module_sp)
Definition: SymbolFileDWARF.h:441
SymbolFileDWARF::GetDIEToVariable
virtual DIEToVariableSP & GetDIEToVariable()
Definition: SymbolFileDWARF.h:492
SymbolFileDWARF::isA
bool isA(const void *ClassID) const override
LLVM RTTI support.
Definition: SymbolFileDWARF.h:67
lldb_private::Stream
Definition: Stream.h:28
lldb_private::DWARFDataExtractor
Definition: DWARFDataExtractor.h:18
UniqueDWARFASTType.h
SymbolFileDWARF::GetDWARFUnitIndex
llvm::Optional< uint32_t > GetDWARFUnitIndex(uint32_t cu_idx)
Definition: SymbolFileDWARF.cpp:795
lldb::addr_t
uint64_t addr_t
Definition: lldb-types.h:83
SymbolFileDWARF::GetUID
lldb::user_id_t GetUID(const llvm::Optional< DIERef > &ref)
Definition: SymbolFileDWARF.h:268
SymbolFileDWARF::FindNamespace
lldb_private::CompilerDeclContext FindNamespace(lldb_private::ConstString name, const lldb_private::CompilerDeclContext &parent_decl_ctx) override
Definition: SymbolFileDWARF.cpp:2533
lldb_private::LazyBool
LazyBool
Definition: lldb-private-enumerations.h:115
RangeMap.h
SymbolFileDWARF::Supports_DW_AT_APPLE_objc_complete_type
bool Supports_DW_AT_APPLE_objc_complete_type(DWARFUnit *cu)
Definition: SymbolFileDWARF.cpp:2680
lldb_private::StatsDuration
Definition: Statistics.h:27
DWARFDebugInfoEntry
DWARFDebugInfoEntry objects assume that they are living in one big vector and do pointer arithmetic o...
Definition: DWARFDebugInfoEntry.h:31
lldb_private::SymbolFileCommon
Containing protected virtual methods for child classes to override.
Definition: SymbolFile.h:374
UniqueCStringMap.h
lldb_private::SymbolContext
Definition: SymbolContext.h:33
DWARFDefines.h
SymbolFileDWARF::InitializeFirstCodeAddress
void InitializeFirstCodeAddress()
Definition: SymbolFileDWARF.cpp:496
SymbolFileDWARF::GetDynamicArrayInfoForUID
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.
Definition: SymbolFileDWARF.cpp:1475
lldb_private::DWARFContext
Definition: DWARFContext.h:20
lldb_private::VariableList
Definition: VariableList.h:18
SymbolFileDWARF::GetObjCMethods
virtual void GetObjCMethods(lldb_private::ConstString class_name, llvm::function_ref< bool(DWARFDIE die)> callback)
Definition: SymbolFileDWARF.cpp:1633
SymbolFileDWARF::GetDebugMapSymfile
SymbolFileDWARFDebugMap * GetDebugMapSymfile()
Definition: SymbolFileDWARF.cpp:3986
SymbolFileDWARF::FindGlobalVariables
void FindGlobalVariables(lldb_private::ConstString name, const lldb_private::CompilerDeclContext &parent_decl_ctx, uint32_t max_matches, lldb_private::VariableList &variables) override
Definition: SymbolFileDWARF.cpp:2125
DIEArray
std::vector< DIERef > DIEArray
Definition: DIERef.h:94
lldb_private::CompileUnit
Definition: CompileUnit.h:38
SymbolFileDWARF::ParseVariableDIECached
lldb::VariableSP ParseVariableDIECached(const lldb_private::SymbolContext &sc, const DWARFDIE &die)
Definition: SymbolFileDWARF.cpp:3124
DWARFDIE
Definition: DWARFDIE.h:16
SymbolFileDWARF::DebuggerInitialize
static void DebuggerInitialize(lldb_private::Debugger &debugger)
Definition: SymbolFileDWARF.cpp:247
SymbolFileDWARF::GetTypeSystemForLanguage
llvm::Expected< lldb_private::TypeSystem & > GetTypeSystemForLanguage(lldb::LanguageType language) override
Definition: SymbolFileDWARF.cpp:435
SymbolFileDWARF::GetMangledNamesForFunction
void GetMangledNamesForFunction(const std::string &scope_qualified_name, std::vector< lldb_private::ConstString > &mangled_names) override
Definition: SymbolFileDWARF.cpp:2389
SymbolFileDWARF::ParseCompileUnit
lldb::CompUnitSP ParseCompileUnit(DWARFCompileUnit &dwarf_cu)
Definition: SymbolFileDWARF.cpp:697
SymbolFileDWARF::GetDeclForUID
lldb_private::CompilerDecl GetDeclForUID(lldb::user_id_t uid) override
Definition: SymbolFileDWARF.cpp:1427
SymbolFileDWARF::ClassContainsSelector
bool ClassContainsSelector(const DWARFDIE &class_die, lldb_private::ConstString selector)
SymbolFileDWARF::m_first_code_address
lldb::addr_t m_first_code_address
DWARF does not provide a good way for traditional (concatenating) linkers to invalidate debug info de...
Definition: SymbolFileDWARF.h:561
SymbolFileDWARF::ParseCompileUnitAtIndex
lldb::CompUnitSP ParseCompileUnitAtIndex(uint32_t index) override
Definition: SymbolFileDWARF.cpp:810
lldb_private::FileSpec
Definition: FileSpec.h:56
DWARFCompileUnit
Definition: DWARFCompileUnit.h:15
SymbolFileDWARF::ResolveSymbolContext
uint32_t ResolveSymbolContext(const lldb_private::Address &so_addr, lldb::SymbolContextItem resolve_scope, lldb_private::SymbolContext &sc) override
SymbolFileDWARF::UpdateExternalModuleListIfNeeded
void UpdateExternalModuleListIfNeeded()
Definition: SymbolFileDWARF.cpp:1770
SymbolFileDWARF::CreateInstance
static lldb_private::SymbolFile * CreateInstance(lldb::ObjectFileSP objfile_sp)
Definition: SymbolFileDWARF.cpp:268
lldb_private::Function
Definition: Function.h:409
SymbolFileDWARF::ForEachExternalModule
bool ForEachExternalModule(lldb_private::CompileUnit &, llvm::DenseSet< lldb_private::SymbolFile * > &, llvm::function_ref< bool(lldb_private::Module &)>) override
Definition: SymbolFileDWARF.cpp:939
DWARFUnit
Definition: DWARFUnit.h:83
SymbolFileDWARF::SymbolFileDWARF
SymbolFileDWARF(lldb::ObjectFileSP objfile_sp, lldb_private::SectionList *dwo_section_list)
SymbolFileDWARF::GetForwardDeclClangTypeToDie
virtual ClangTypeToDIE & GetForwardDeclClangTypeToDie()
Definition: SymbolFileDWARF.h:498
SymbolFileDWARF::ResolveFunction
bool ResolveFunction(const DWARFDIE &die, bool include_inlines, lldb_private::SymbolContextList &sc_list)
Definition: SymbolFileDWARF.cpp:2241
SymbolFileDWARF::GetDebugInfoParseTimeRef
lldb_private::StatsDuration & GetDebugInfoParseTimeRef()
Definition: SymbolFileDWARF.h:327
SymbolFileDWARF::DebugMacrosMap
std::unordered_map< lldb::offset_t, lldb_private::DebugMacrosSP > DebugMacrosMap
Definition: SymbolFileDWARF.h:535
SymbolFileDWARF::GetDwoSymbolFileForCompileUnit
std::shared_ptr< SymbolFileDWARFDwo > GetDwoSymbolFileForCompileUnit(DWARFUnit &dwarf_cu, const DWARFDebugInfoEntry &cu_die)
Definition: SymbolFileDWARF.cpp:1705
SymbolFileDWARF::DeclContextMatchesThisSymbolFile
bool DeclContextMatchesThisSymbolFile(const lldb_private::CompilerDeclContext &decl_ctx)
Definition: SymbolFileDWARF.cpp:2094
SymbolFileDWARF::GetGlobalAranges
GlobalVariableMap & GetGlobalAranges()
Definition: SymbolFileDWARF.cpp:1872
DebugMapModule
Definition: SymbolFileDWARFDebugMap.cpp:165
SymbolFileDWARF::m_forward_decl_die_to_clang_type
DIEToClangType m_forward_decl_die_to_clang_type
Definition: SymbolFileDWARF.h:550
SymbolFileDWARF::LoadSectionData
virtual void LoadSectionData(lldb::SectionType sect_type, lldb_private::DWARFDataExtractor &data)
Definition: SymbolFileDWARF.cpp:599
SymbolFileDWARF::GetLanguageFamily
static lldb::LanguageType GetLanguageFamily(DWARFUnit &unit)
Same as GetLanguage() but reports all C++ versions as C++ (no version).
Definition: SymbolFileDWARF.cpp:4082
SymbolFileDWARF::FindBlockContainingSpecification
DWARFDIE FindBlockContainingSpecification(const DIERef &func_die_ref, dw_offset_t spec_block_die_offset)
Definition: SymbolFileDWARF.cpp:3478
SymbolFileDWARF::ResolveFunctionAndBlock
void ResolveFunctionAndBlock(lldb::addr_t file_vm_addr, bool lookup_block, lldb_private::SymbolContext &sc)
Resolve functions and (possibly) blocks for the given file address and a compile unit.
Definition: SymbolFileDWARF.cpp:1916
lldb_private::DebugMacrosSP
std::shared_ptr< DebugMacros > DebugMacrosSP
Definition: DebugMacros.h:21
SymbolFileDWARF::GetModuleMutex
std::recursive_mutex & GetModuleMutex() const override
Symbols file subclasses should override this to return the Module that owns the TypeSystem that this ...
Definition: SymbolFileDWARF.cpp:2087
lldb_private::ConstString
Definition: ConstString.h:40
SymbolFileDWARF::FindDefinitionTypeForDWARFDeclContext
virtual lldb::TypeSP FindDefinitionTypeForDWARFDeclContext(const DWARFDeclContext &die_decl_ctx)
Definition: SymbolFileDWARF.cpp:2848
SymbolFileDWARFDebugMap
Definition: SymbolFileDWARFDebugMap.h:25
SymbolFileDWARF::GetDWARFDeclContext
static DWARFDeclContext GetDWARFDeclContext(const DWARFDIE &die)
Definition: SymbolFileDWARF.cpp:4056
SymbolFileDWARF::DIEToTypePtr
llvm::DenseMap< const DWARFDebugInfoEntry *, lldb_private::Type * > DIEToTypePtr
Definition: SymbolFileDWARF.h:333
DWARFFormValue
Definition: DWARFFormValue.h:20
SymbolFileDWARF::GetDIEToType
virtual DIEToTypePtr & GetDIEToType()
Definition: SymbolFileDWARF.h:490
SymbolFileDWARF::GetDwpSymbolFile
const std::shared_ptr< SymbolFileDWARFDwo > & GetDwpSymbolFile()
Definition: SymbolFileDWARF.cpp:3997
SymbolFileDWARF::m_debug_map_symfile
SymbolFileDWARFDebugMap * m_debug_map_symfile
Definition: SymbolFileDWARF.h:521
SymbolFileDWARF::ParseTypes
size_t ParseTypes(lldb_private::CompileUnit &comp_unit) override
Definition: SymbolFileDWARF.cpp:3060
SymbolFileDWARF::Dump
void Dump(lldb_private::Stream &s) override
Definition: SymbolFileDWARF.cpp:3970
SymbolFileDWARF::SupportedVersion
static bool SupportedVersion(uint16_t version)
Definition: SymbolFileDWARF.cpp:515
SymbolFileDWARF::DIEInDeclContext
static bool DIEInDeclContext(const lldb_private::CompilerDeclContext &parent_decl_ctx, const DWARFDIE &die)
Definition: SymbolFileDWARF.cpp:2292
SymbolFileDWARF::GetTypeForDIE
lldb::TypeSP GetTypeForDIE(const DWARFDIE &die, bool resolve_function_context=false)
Definition: SymbolFileDWARF.cpp:2575
SymbolFileDWARF::m_dwp_symfile
std::shared_ptr< SymbolFileDWARFDwo > m_dwp_symfile
Definition: SymbolFileDWARF.h:524
SymbolFileDWARF::ClangTypeToDIE
llvm::DenseMap< lldb::opaque_compiler_type_t, DIERef > ClangTypeToDIE
Definition: SymbolFileDWARF.h:339
lldb_private::Debugger
Definition: Debugger.h:74
SymbolFileDWARF::GetDeclContextForUID
lldb_private::CompilerDeclContext GetDeclContextForUID(lldb::user_id_t uid) override
Definition: SymbolFileDWARF.cpp:1440
SymbolFileDWARF::NameToOffsetMap
llvm::StringMap< DIERefSet > NameToOffsetMap
Definition: SymbolFileDWARF.h:544
DWARFDebugRanges
Definition: DWARFDebugRanges.h:20
string
string(SUBSTRING ${p} 10 -1 pStripped) if($
Definition: Plugins/CMakeLists.txt:40
SymbolFileDWARF::GetExternalModule
lldb::ModuleSP GetExternalModule(lldb_private::ConstString name)
Definition: SymbolFileDWARF.cpp:1659
SymbolFileDWARF::GetObjCClassSymbol
lldb_private::Symbol * GetObjCClassSymbol(lldb_private::ConstString objc_class_name)
Definition: SymbolFileDWARF.cpp:2660
SymbolFileDWARF::GetNextUnparsedDWARFCompileUnit
DWARFUnit * GetNextUnparsedDWARFCompileUnit(DWARFUnit *prev_cu)
SymbolFileDWARF::ParseXcodeSDK
lldb_private::XcodeSDK ParseXcodeSDK(lldb_private::CompileUnit &comp_unit) override
Return the Xcode SDK comp_unit was compiled against.
Definition: SymbolFileDWARF.cpp:888
SymbolFileDWARF::CollectCallEdges
std::vector< std::unique_ptr< lldb_private::CallEdge > > CollectCallEdges(lldb::ModuleSP module, DWARFDIE function_die)
Parse call site entries (DW_TAG_call_site), including any nested call site parameters (DW_TAG_call_si...
Definition: SymbolFileDWARF.cpp:3799
lldb_private::TypeMap
Definition: TypeMap.h:20
UniqueDWARFASTTypeMap
Definition: UniqueDWARFASTType.h:71
SymbolFileDWARF::GetDWARFParser
static DWARFASTParser * GetDWARFParser(DWARFUnit &unit)
Definition: SymbolFileDWARF.cpp:4027
lldb_private::CompilerDeclContext
Represents a generic declaration context in a program.
Definition: CompilerDeclContext.h:30
SymbolFileDWARF::m_info_once_flag
llvm::once_flag m_info_once_flag
Definition: SymbolFileDWARF.h:528
SymbolFileDWARF::DecodedUID
Definition: SymbolFileDWARF.h:505
lldb_private::SymbolContextScope
Definition: SymbolContextScope.h:64
SymbolFileDWARF::ParseVariablesForContext
size_t ParseVariablesForContext(const lldb_private::SymbolContext &sc) override
Definition: SymbolFileDWARF.cpp:3076
SymbolFileDWARF::m_function_scope_qualified_name_map
NameToOffsetMap m_function_scope_qualified_name_map
Definition: SymbolFileDWARF.h:545
SymbolFileDWARF::ParseIsOptimized
bool ParseIsOptimized(lldb_private::CompileUnit &comp_unit) override
Definition: SymbolFileDWARF.cpp:1050
SymbolFileDWARF::MergeBlockAbstractParameters
DIEArray MergeBlockAbstractParameters(const DWARFDIE &block_die, DIEArray &&variable_dies)
Definition: SymbolFileDWARF.cpp:3577
lldb-private.h
SymbolFileDWARF::TypeSet
llvm::SetVector< lldb_private::Type * > TypeSet
Definition: SymbolFileDWARF.h:476
DWARFDebugAbbrev
Definition: DWARFDebugAbbrev.h:64
SymbolFileDWARF::m_context
lldb_private::DWARFContext m_context
Definition: SymbolFileDWARF.h:526
SymbolFileDWARF::ResolveType
lldb_private::Type * ResolveType(const DWARFDIE &die, bool assert_not_being_parsed=true, bool resolve_function_context=false)
Definition: SymbolFileDWARF.cpp:1595
SymbolFileDWARF::CompleteType
bool CompleteType(lldb_private::CompilerType &compiler_type) override
Definition: SymbolFileDWARF.cpp:1549
SymbolFileDWARF::DIEToVariableSP
llvm::DenseMap< const DWARFDebugInfoEntry *, lldb::VariableSP > DIEToVariableSP
Definition: SymbolFileDWARF.h:335
SymbolFileDWARF::FixupAddress
lldb::addr_t FixupAddress(lldb::addr_t file_addr)
If this symbol file is linked to by a debug map (see SymbolFileDWARFDebugMap), and file_addr is a fil...
Definition: SymbolFileDWARF.cpp:864
SymbolFileDWARF::m_index
std::unique_ptr< lldb_private::DWARFIndex > m_index
Definition: SymbolFileDWARF.h:539
DWARFASTParserClang
Definition: DWARFASTParserClang.h:37
SymbolFileDWARF::GetDecl
static lldb_private::CompilerDecl GetDecl(const DWARFDIE &die)
Definition: SymbolFileDWARF.cpp:4037
DWARFAbbreviationDeclarationSet
Definition: DWARFDebugAbbrev.h:27
SymbolFileDWARF::LanguageTypeFromDWARF
static lldb::LanguageType LanguageTypeFromDWARF(uint64_t val)
Definition: SymbolFileDWARF.cpp:4065
SymbolFileDWARF::ParseFunction
lldb_private::Function * ParseFunction(lldb_private::CompileUnit &comp_unit, const DWARFDIE &die)
Definition: SymbolFileDWARF.cpp:820
SymbolFileDWARF::GetLanguage
static lldb::LanguageType GetLanguage(DWARFUnit &unit)
Definition: SymbolFileDWARF.cpp:4078
SymbolFileDWARF::m_global_aranges_up
std::unique_ptr< GlobalVariableMap > m_global_aranges_up
Definition: SymbolFileDWARF.h:532
dwarf.h
SymbolFileDWARF::ParseDebugMacros
bool ParseDebugMacros(lldb_private::CompileUnit &comp_unit) override
Definition: SymbolFileDWARF.cpp:1198
lldb_private::Block
Definition: Block.h:41
SymbolFileDWARF::GetPluginName
llvm::StringRef GetPluginName() override
Definition: SymbolFileDWARF.h:222
SymbolFileDWARF::GetPluginDescriptionStatic
static llvm::StringRef GetPluginDescriptionStatic()
Definition: SymbolFileDWARF.cpp:264
uint32_t
DWARFASTParser
Definition: DWARFASTParser.h:26
SymbolFileDWARF::GetTypeList
lldb_private::TypeList & GetTypeList() override
Definition: SymbolFileDWARF.cpp:273
lldb::SectionType
SectionType
Definition: lldb-enumerations.h:652
SymbolFileDWARF::m_fetched_external_modules
bool m_fetched_external_modules
Definition: SymbolFileDWARF.h:540
SymbolFileDWARF::operator=
const SymbolFileDWARF & operator=(const SymbolFileDWARF &)=delete
SymbolFileDWARF::m_debug_map_module_wp
lldb::ModuleWP m_debug_map_module_wp
Definition: SymbolFileDWARF.h:520
SymbolFileDWARF::Initialize
static void Initialize()
Definition: SymbolFileDWARF.cpp:239
lldb_private::Address
Definition: Address.h:59
SymbolFileDWARF::m_ranges
std::unique_ptr< DWARFDebugRanges > m_ranges
Definition: SymbolFileDWARF.h:546
SymbolFileDWARF::GetDeclContext
static lldb_private::CompilerDeclContext GetDeclContext(const DWARFDIE &die)
Definition: SymbolFileDWARF.cpp:4043
SymbolFileDWARF::InitializeObject
void InitializeObject() override
Initialize the SymbolFile object.
Definition: SymbolFileDWARF.cpp:447
SymbolFileDWARF::m_supports_DW_AT_APPLE_objc_complete_type
lldb_private::LazyBool m_supports_DW_AT_APPLE_objc_complete_type
Definition: SymbolFileDWARF.h:541
lldb_private::RangeDataVector
Definition: RangeMap.h:435
SymbolFileDWARF::GetContainingDeclContext
static lldb_private::CompilerDeclContext GetContainingDeclContext(const DWARFDIE &die)
Definition: SymbolFileDWARF.cpp:4050
lldb_private::Type
Definition: Type.h:66
SymbolFileDWARFDwo
Definition: SymbolFileDWARFDwo.h:14
SymbolFileDWARF::m_type_unit_support_files
llvm::DenseMap< dw_offset_t, lldb_private::FileSpecList > m_type_unit_support_files
Definition: SymbolFileDWARF.h:553
SymbolFileDWARF::m_info
std::unique_ptr< DWARFDebugInfo > m_info
Definition: SymbolFileDWARF.h:529
SymbolFileDWARF::ParseDeclsForContext
void ParseDeclsForContext(lldb_private::CompilerDeclContext decl_ctx) override
Definition: SymbolFileDWARF.cpp:1363
uint16_t
SymbolFileDWARF::DebugInfo
DWARFDebugInfo & DebugInfo()
Definition: SymbolFileDWARF.cpp:635
LLDB_INVALID_ADDRESS
#define LLDB_INVALID_ADDRESS
Definition: lldb-defines.h:74
DWARFAbbreviationDeclaration
Definition: DWARFAbbreviationDeclaration.h:17
lldb_private::CompilerType
Generic representation of a type in a programming language.
Definition: CompilerType.h:33
Statistics.h
SymbolFileDWARF::m_die_to_variable_sp
DIEToVariableSP m_die_to_variable_sp
Definition: SymbolFileDWARF.h:549
lldb::user_id_t
uint64_t user_id_t
Definition: lldb-types.h:84
SymbolFileDWARF::FindTypes
void FindTypes(lldb_private::ConstString name, const lldb_private::CompilerDeclContext &parent_decl_ctx, uint32_t max_matches, llvm::DenseSet< lldb_private::SymbolFile * > &searched_symbol_files, lldb_private::TypeMap &types) override
SymbolContext.h
SymbolFileDWARF::m_die_to_type
DIEToTypePtr m_die_to_type
Definition: SymbolFileDWARF.h:548
SymbolFileDWARF::FindFunctions
void FindFunctions(lldb_private::ConstString name, const lldb_private::CompilerDeclContext &parent_decl_ctx, lldb::FunctionNameType name_type_mask, bool include_inlines, lldb_private::SymbolContextList &sc_list) override
SymbolFileDWARF::FindCompleteObjCDefinitionTypeForDIE
virtual lldb::TypeSP FindCompleteObjCDefinitionTypeForDIE(const DWARFDIE &die, lldb_private::ConstString type_name, bool must_be_implementation)
Definition: SymbolFileDWARF.cpp:2706
SymbolFileDWARF::ParseBlocksRecursive
size_t ParseBlocksRecursive(lldb_private::Function &func) override
Definition: SymbolFileDWARF.cpp:3039
DWARFDeclContext
Definition: DWARFDeclContext.h:23
SymbolFileDWARF::GetUniqueDWARFASTTypeMap
virtual UniqueDWARFASTTypeMap & GetUniqueDWARFASTTypeMap()
Definition: SymbolFileDWARF.cpp:426
lldb_private::TypeList
Definition: TypeList.h:20
SymbolFileDWARF::DebugAbbrev
DWARFDebugAbbrev * DebugAbbrev()
Definition: SymbolFileDWARF.cpp:614
SymbolFileDWARF::PopulateBlockVariableList
size_t PopulateBlockVariableList(lldb_private::VariableList &variable_list, const lldb_private::SymbolContext &sc, llvm::ArrayRef< DIERef > variable_dies, lldb::addr_t func_low_pc)
Definition: SymbolFileDWARF.cpp:3737
SymbolFileDWARF::DecodedUID::ref
DIERef ref
Definition: SymbolFileDWARF.h:507
SymbolFileDWARF::GetDwoNum
virtual llvm::Optional< uint32_t > GetDwoNum()
Definition: SymbolFileDWARF.h:278
ConstString.h
Flags.h
SymbolFileDWARF::GetDWOId
llvm::Optional< uint64_t > GetDWOId()
If this is a DWARF object with a single CU, return its DW_AT_dwo_id.
Definition: SymbolFileDWARF.cpp:1693
lldb_private::LanguageSet
A SmallBitVector that represents a set of source languages (lldb::LanguageType).
Definition: TypeSystem.h:40
DebugMacros.h
SymbolFileDWARF::PreloadSymbols
void PreloadSymbols() override
Definition: SymbolFileDWARF.cpp:2075
SymbolFileDWARF::GetDeclContextContainingUID
lldb_private::CompilerDeclContext GetDeclContextContainingUID(lldb::user_id_t uid) override
Definition: SymbolFileDWARF.cpp:1453
SymbolFileDWARF::ParseSupportFiles
bool ParseSupportFiles(lldb_private::CompileUnit &comp_unit, lldb_private::FileSpecList &support_files) override
SymbolFileDWARF::GetDebugInfoParseTime
lldb_private::StatsDuration::Duration GetDebugInfoParseTime() override
Return the time taken to parse the debug information.
Definition: SymbolFileDWARF.h:322
SymbolFileDWARF::GlobalVariableMap
lldb_private::RangeDataVector< lldb::addr_t, lldb::addr_t, lldb_private::Variable * > GlobalVariableMap
Definition: SymbolFileDWARF.h:484
lldb_private::Variable
Definition: Variable.h:25
SymbolFileDWARF::ParseVariablesInFunctionContextRecursive
size_t ParseVariablesInFunctionContextRecursive(const lldb_private::SymbolContext &sc, const DWARFDIE &die, lldb::addr_t func_low_pc, DIEArray &accumulator)
Definition: SymbolFileDWARF.cpp:3670
lldb_private::UserID::UserID
UserID(lldb::user_id_t uid=LLDB_INVALID_UID)
Construct with optional user ID.
Definition: UserID.h:33
SymbolFileDWARF::GetDIE
virtual DWARFDIE GetDIE(const DIERef &die_ref)
Definition: SymbolFileDWARF.cpp:1669
SymbolFileDWARF::~SymbolFileDWARF
~SymbolFileDWARF() override
SymbolFileDWARF::ParseVariablesInFunctionContext
size_t ParseVariablesInFunctionContext(const lldb_private::SymbolContext &sc, const DWARFDIE &die, const lldb::addr_t func_low_pc)
Definition: SymbolFileDWARF.cpp:3652
SymbolFileDWARF::GetDeclContextDIEContainingDIE
DWARFDIE GetDeclContextDIEContainingDIE(const DWARFDIE &die)
Definition: SymbolFileDWARF.cpp:2609
SymbolFileDWARF::HasForwardDeclForClangType
bool HasForwardDeclForClangType(const lldb_private::CompilerType &compiler_type)
Definition: SymbolFileDWARF.cpp:1530
SymbolFileDWARF::ParseCallEdgesInFunction
std::vector< std::unique_ptr< lldb_private::CallEdge > > ParseCallEdgesInFunction(UserID func_id) override
Definition: SymbolFileDWARF.cpp:3958
SymbolFileDWARF::GetTypes
void GetTypes(lldb_private::SymbolContextScope *sc_scope, lldb::TypeClass type_mask, lldb_private::TypeList &type_list) override
SymbolFile.h
lldb::opaque_compiler_type_t
void * opaque_compiler_type_t
Definition: lldb-types.h:90
DWARFIndex.h
SymbolFileDWARF::DumpClangAST
void DumpClangAST(lldb_private::Stream &s) override
Definition: SymbolFileDWARF.cpp:3975
SymbolFileDWARF::ClassOrStructIsVirtual
bool ClassOrStructIsVirtual(const DWARFDIE &die)
Definition: SymbolFileDWARF.cpp:1341
SymbolFileDWARF::BuildCuTranslationTable
void BuildCuTranslationTable()
Definition: SymbolFileDWARF.cpp:778
DWARFBaseDIE
Definition: DWARFBaseDIE.h:25
SymbolFileDWARF::CalculateAbilities
uint32_t CalculateAbilities() override
Definition: SymbolFileDWARF.cpp:519
SymbolFileDWARF::GetUID
lldb::user_id_t GetUID(const DWARFBaseDIE &die)
Definition: SymbolFileDWARF.h:264
DWARFDataExtractor.h