LLDB mainline
SymbolFileDWARFDebugMap.h
Go to the documentation of this file.
1//===-- SymbolFileDWARFDebugMap.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_SYMBOLFILEDWARFDEBUGMAP_H
10#define LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_SYMBOLFILEDWARFDEBUGMAP_H
11
12#include "DIERef.h"
15#include "llvm/Support/Chrono.h"
16#include <bitset>
17#include <map>
18#include <optional>
19#include <vector>
20
21#include "UniqueDWARFASTType.h"
22
23class SymbolFileDWARF;
27
29 /// LLVM RTTI support.
30 static char ID;
31
32public:
33 /// LLVM RTTI support.
34 /// \{
35 bool isA(const void *ClassID) const override {
36 return ClassID == &ID || SymbolFileCommon::isA(ClassID);
37 }
38 static bool classof(const SymbolFile *obj) { return obj->isA(&ID); }
39 /// \}
40
41 // Static Functions
42 static void Initialize();
43
44 static void Terminate();
45
46 static llvm::StringRef GetPluginNameStatic() { return "dwarf-debugmap"; }
47
48 static llvm::StringRef GetPluginDescriptionStatic();
49
51 CreateInstance(lldb::ObjectFileSP objfile_sp);
52
53 // Constructors and Destructors
54 SymbolFileDWARFDebugMap(lldb::ObjectFileSP objfile_sp);
56
58 void InitializeObject() override;
59
60 // Compile Unit function calls
62 ParseLanguage(lldb_private::CompileUnit &comp_unit) override;
64 ParseXcodeSDK(lldb_private::CompileUnit &comp_unit) override;
65 llvm::SmallSet<lldb::LanguageType, 4>
67 size_t ParseFunctions(lldb_private::CompileUnit &comp_unit) override;
68 bool ParseLineTable(lldb_private::CompileUnit &comp_unit) override;
69 bool ParseDebugMacros(lldb_private::CompileUnit &comp_unit) override;
70
72 lldb_private::CompileUnit &, llvm::DenseSet<lldb_private::SymbolFile *> &,
73 llvm::function_ref<bool(lldb_private::Module &)>) override;
74
76 lldb_private::FileSpecList &support_files) override;
77
78 bool ParseIsOptimized(lldb_private::CompileUnit &comp_unit) override;
79
80 size_t ParseTypes(lldb_private::CompileUnit &comp_unit) override;
81
84 std::vector<lldb_private::SourceModule> &imported_modules) override;
85 size_t ParseBlocksRecursive(lldb_private::Function &func) override;
86 size_t
88
90 std::optional<ArrayInfo> GetDynamicArrayInfoForUID(
91 lldb::user_id_t type_uid,
92 const lldb_private::ExecutionContext *exe_ctx) override;
93
98 void
100
101 bool CompleteType(lldb_private::CompilerType &compiler_type) override;
103 lldb::SymbolContextItem resolve_scope,
104 lldb_private::SymbolContext &sc) override;
106 const lldb_private::SourceLocationSpec &src_location_spec,
107 lldb::SymbolContextItem resolve_scope,
108 lldb_private::SymbolContextList &sc_list) override;
109
112
113 void
115 const lldb_private::CompilerDeclContext &parent_decl_ctx,
116 uint32_t max_matches,
117 lldb_private::VariableList &variables) override;
119 uint32_t max_matches,
120 lldb_private::VariableList &variables) override;
121 void FindFunctions(const lldb_private::Module::LookupInfo &lookup_info,
122 const lldb_private::CompilerDeclContext &parent_decl_ctx,
123 bool include_inlines,
124 lldb_private::SymbolContextList &sc_list) override;
126 bool include_inlines,
127 lldb_private::SymbolContextList &sc_list) override;
128 void
130 const lldb_private::CompilerDeclContext &parent_decl_ctx,
131 uint32_t max_matches,
132 llvm::DenseSet<lldb_private::SymbolFile *> &searched_symbol_files,
133 lldb_private::TypeMap &types) override;
134 void
135 FindTypes(llvm::ArrayRef<lldb_private::CompilerContext> context,
137 llvm::DenseSet<lldb_private::SymbolFile *> &searched_symbol_files,
138 lldb_private::TypeMap &types) override;
141 const lldb_private::CompilerDeclContext &parent_decl_ctx,
142 bool only_root_namespaces) override;
144 lldb::TypeClass type_mask,
145 lldb_private::TypeList &type_list) override;
146 std::vector<std::unique_ptr<lldb_private::CallEdge>>
148
149 void DumpClangAST(lldb_private::Stream &s) override;
150
151 // PluginInterface protocol
152 llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
153
154 // Statistics overrides.
156
158 std::unordered_map<lldb::CompUnitSP, lldb_private::Args> &args) override;
159
160protected:
161 enum { kHaveInitializedOSOs = (1 << 0), kNumFlags };
162
163 friend class DebugMapModule;
165 friend class DWARFCompileUnit;
166 friend class SymbolFileDWARF;
167 struct OSOInfo {
168 lldb::ModuleSP module_sp;
169
171 };
172
173 typedef std::shared_ptr<OSOInfo> OSOInfoSP;
174
178
179 // Class specific types
183 llvm::sys::TimePoint<> oso_mod_time;
186 /// The compile units that an object file contains.
187 llvm::SmallVector<lldb::CompUnitSP, 2> compile_units_sps;
188 /// A map from the compile unit ID to its index in the vector.
189 llvm::SmallDenseMap<uint64_t, uint64_t, 2> id_to_index_map;
196
197 CompileUnitInfo() = default;
198
200 };
201
202 // Protected Member Functions
203 void InitOSO();
204
205 /// This function actually returns the number of object files, which may be
206 /// less than the actual number of compile units, since an object file may
207 /// contain more than one compile unit. SymbolFileDWARFDebugMap looks up the
208 /// number of compile units by reading the nlist symbol table, which
209 /// currently, on macOS, only reports one compile unit per object file, and
210 /// there's no efficient way to calculate the actual number of compile units
211 /// upfront.
213
214 /// This function actually returns the first compile unit the object file at
215 /// the given index contains.
216 lldb::CompUnitSP ParseCompileUnitAtIndex(uint32_t index) override;
217
219 std::optional<uint32_t> OsoNum = DIERef(uid).file_index();
220 lldbassert(OsoNum && "Invalid OSO Index");
221 return *OsoNum;
222 }
223
225
226 bool GetFileSpecForSO(uint32_t oso_idx, lldb_private::FileSpec &file_spec);
227
228 CompileUnitInfo *GetCompUnitInfo(const lldb_private::SymbolContext &sc);
229 CompileUnitInfo *GetCompUnitInfo(const lldb_private::CompileUnit &comp_unit);
230
231 size_t GetCompUnitInfosForModule(const lldb_private::Module *oso_module,
232 std::vector<CompileUnitInfo *> &cu_infos);
233
235 GetModuleByCompUnitInfo(CompileUnitInfo *comp_unit_info);
236
238
240 GetObjectFileByCompUnitInfo(CompileUnitInfo *comp_unit_info);
241
243
244 uint32_t GetCompUnitInfoIndex(const CompileUnitInfo *comp_unit_info);
245
248
249 SymbolFileDWARF *GetSymbolFileByCompUnitInfo(CompileUnitInfo *comp_unit_info);
250
252
253 // If closure returns "false", iteration continues. If it returns
254 // "true", iteration terminates.
255 void ForEachSymbolFile(std::function<bool(SymbolFileDWARF *)> closure) {
256 for (uint32_t oso_idx = 0, num_oso_idxs = m_compile_unit_infos.size();
257 oso_idx < num_oso_idxs; ++oso_idx) {
258 if (SymbolFileDWARF *oso_dwarf = GetSymbolFileByOSOIndex(oso_idx)) {
259 if (closure(oso_dwarf))
260 return;
261 }
262 }
263 }
264
265 CompileUnitInfo *GetCompileUnitInfoForSymbolWithIndex(uint32_t symbol_idx,
266 uint32_t *oso_idx_ptr);
267
268 CompileUnitInfo *GetCompileUnitInfoForSymbolWithID(lldb::user_id_t symbol_id,
269 uint32_t *oso_idx_ptr);
270
271 static int
273 const CompileUnitInfo *comp_unit_info);
274
275 static int SymbolContainsSymbolWithID(lldb::user_id_t *symbol_idx_ptr,
276 const CompileUnitInfo *comp_unit_info);
277
280 const lldb_private::CompilerDeclContext &parent_decl_ctx,
281 const std::vector<uint32_t> &name_symbol_indexes, uint32_t max_matches,
282 lldb_private::VariableList &variables);
283
284 void SetCompileUnit(SymbolFileDWARF *oso_dwarf,
285 const lldb::CompUnitSP &cu_sp);
286
287 /// Returns the compile unit associated with the dwarf compile unit. This may
288 /// be one of the extra compile units an object file contains which isn't
289 /// reachable by ParseCompileUnitAtIndex(uint32_t).
290 lldb::CompUnitSP GetCompileUnit(SymbolFileDWARF *oso_dwarf,
291 DWARFCompileUnit &dwarf_cu);
292
293 CompileUnitInfo *GetCompileUnitInfo(SymbolFileDWARF *oso_dwarf);
294
295 lldb::TypeSP FindDefinitionTypeForDWARFDeclContext(const DWARFDIE &die);
296
298
300 const DWARFDIE &die, lldb_private::ConstString type_name,
301 bool must_be_implementation);
302
305 }
306
307 // OSOEntry
308 class OSOEntry {
309 public:
310 OSOEntry() = default;
311
312 OSOEntry(uint32_t exe_sym_idx, lldb::addr_t oso_file_addr)
313 : m_exe_sym_idx(exe_sym_idx), m_oso_file_addr(oso_file_addr) {}
314
316
317 bool operator<(const OSOEntry &rhs) const {
318 return m_exe_sym_idx < rhs.m_exe_sym_idx;
319 }
320
322
323 void SetOSOFileAddress(lldb::addr_t oso_file_addr) {
324 m_oso_file_addr = oso_file_addr;
325 }
326
327 protected:
330 };
331
334
335 // Member Variables
336 std::bitset<kNumFlags> m_flags;
337 std::vector<CompileUnitInfo> m_compile_unit_infos;
338 std::vector<uint32_t> m_func_indexes; // Sorted by address
339 std::vector<uint32_t> m_glob_indexes;
340 std::map<std::pair<lldb_private::ConstString, llvm::sys::TimePoint<>>,
341 OSOInfoSP>
346
347 // When an object file from the debug map gets parsed in
348 // SymbolFileDWARF, it needs to tell the debug map about the object
349 // files addresses by calling this function once for each N_FUN,
350 // N_GSYM and N_STSYM and after all entries in the debug map have
351 // been matched up, FinalizeOSOFileRanges() should be called.
352 bool AddOSOFileRange(CompileUnitInfo *cu_info, lldb::addr_t exe_file_addr,
353 lldb::addr_t exe_byte_size, lldb::addr_t oso_file_addr,
354 lldb::addr_t oso_byte_size);
355
356 // Called after calling AddOSOFileRange() for each object file debug
357 // map entry to finalize the info for the unlinked compile unit.
359
360 /// Convert \a addr from a .o file address, to an executable address.
361 ///
362 /// \param[in] addr
363 /// A section offset address from a .o file
364 ///
365 /// \return
366 /// Returns true if \a addr was converted to be an executable
367 /// section/offset address, false otherwise.
369
370 /// Convert a .o file "file address" to an executable "file address".
371 ///
372 /// \param[in] oso_symfile
373 /// The DWARF symbol file that contains \a oso_file_addr
374 ///
375 /// \param[in] oso_file_addr
376 /// A .o file "file address" to convert.
377 ///
378 /// \return
379 /// LLDB_INVALID_ADDRESS if \a oso_file_addr is not in the
380 /// linked executable, otherwise a valid "file address" from the
381 /// linked executable that contains the debug map.
383 lldb::addr_t oso_file_addr);
384
385 /// Given a line table full of lines with "file addresses" that are
386 /// for a .o file represented by \a oso_symfile, link a new line table
387 /// and return it.
388 ///
389 /// \param[in] oso_symfile
390 /// The DWARF symbol file that produced the \a line_table
391 ///
392 /// \param[in] line_table
393 /// A pointer to the line table.
394 ///
395 /// \return
396 /// Returns a valid line table full of linked addresses, or NULL
397 /// if none of the line table addresses exist in the main
398 /// executable.
401 lldb_private::LineTable *line_table);
402
403 size_t AddOSOARanges(SymbolFileDWARF *dwarf2Data,
404 DWARFDebugAranges *debug_aranges);
405};
406
407#endif // LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_SYMBOLFILEDWARFDEBUGMAP_H
#define lldbassert(x)
Definition: LLDBAssert.h:13
Identifies a DWARF debug info entry within a given Module.
Definition: DIERef.h:28
std::optional< uint32_t > file_index() const
Definition: DIERef.h:57
bool operator<(const OSOEntry &rhs) const
OSOEntry(uint32_t exe_sym_idx, lldb::addr_t oso_file_addr)
void SetOSOFileAddress(lldb::addr_t oso_file_addr)
std::vector< uint32_t > m_func_indexes
SymbolFileDWARF * GetSymbolFileByOSOIndex(uint32_t oso_idx)
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
static SymbolFileDWARF * GetSymbolFileAsSymbolFileDWARF(SymbolFile *sym_file)
static llvm::StringRef GetPluginDescriptionStatic()
lldb::TypeSP FindCompleteObjCDefinitionTypeForDIE(const DWARFDIE &die, lldb_private::ConstString type_name, bool must_be_implementation)
lldb_private::ObjectFile * GetObjectFileByOSOIndex(uint32_t oso_idx)
std::map< std::pair< lldb_private::ConstString, llvm::sys::TimePoint<> >, OSOInfoSP > m_oso_map
lldb_private::CompilerDeclContext GetDeclContextContainingUID(lldb::user_id_t uid) override
void GetTypes(lldb_private::SymbolContextScope *sc_scope, lldb::TypeClass type_mask, lldb_private::TypeList &type_list) override
void DumpClangAST(lldb_private::Stream &s) override
lldb::LanguageType ParseLanguage(lldb_private::CompileUnit &comp_unit) override
SymbolFileDWARF * GetSymbolFileByCompUnitInfo(CompileUnitInfo *comp_unit_info)
lldb::CompUnitSP GetCompileUnit(SymbolFileDWARF *oso_dwarf, DWARFCompileUnit &dwarf_cu)
Returns the compile unit associated with the dwarf compile unit.
lldb_private::Status CalculateFrameVariableError(lldb_private::StackFrame &frame) override
Subclasses will override this function to for GetFrameVariableError().
CompileUnitInfo * GetCompileUnitInfoForSymbolWithIndex(uint32_t symbol_idx, uint32_t *oso_idx_ptr)
lldb_private::ModuleList GetDebugInfoModules() override
Get the additional modules that this symbol file uses to parse debug info.
bool Supports_DW_AT_APPLE_objc_complete_type(SymbolFileDWARF *skip_dwarf_oso)
llvm::SmallSet< lldb::LanguageType, 4 > ParseAllLanguages(lldb_private::CompileUnit &comp_unit) override
This function exists because SymbolFileDWARFDebugMap may extra compile units which aren't exposed as ...
UniqueDWARFASTTypeMap m_unique_ast_type_map
lldb::CompUnitSP ParseCompileUnitAtIndex(uint32_t index) override
This function actually returns the first compile unit the object file at the given index contains.
UniqueDWARFASTTypeMap & GetUniqueDWARFASTTypeMap()
bool ParseIsOptimized(lldb_private::CompileUnit &comp_unit) override
CompileUnitInfo * GetCompUnitInfo(const lldb_private::SymbolContext &sc)
size_t ParseVariablesForContext(const lldb_private::SymbolContext &sc) override
size_t ParseTypes(lldb_private::CompileUnit &comp_unit) override
lldb::addr_t LinkOSOFileAddress(SymbolFileDWARF *oso_symfile, lldb::addr_t oso_file_addr)
Convert a .o file "file address" to an executable "file address".
void FindGlobalVariables(lldb_private::ConstString name, const lldb_private::CompilerDeclContext &parent_decl_ctx, uint32_t max_matches, lldb_private::VariableList &variables) override
bool isA(const void *ClassID) const override
LLVM RTTI support.
lldb_private::LineTable * LinkOSOLineTable(SymbolFileDWARF *oso_symfile, lldb_private::LineTable *line_table)
Given a line table full of lines with "file addresses" that are for a .o file represented by oso_symf...
CompileUnitInfo * GetCompileUnitInfo(SymbolFileDWARF *oso_dwarf)
bool ParseDebugMacros(lldb_private::CompileUnit &comp_unit) override
void PrivateFindGlobalVariables(lldb_private::ConstString name, const lldb_private::CompilerDeclContext &parent_decl_ctx, const std::vector< uint32_t > &name_symbol_indexes, uint32_t max_matches, lldb_private::VariableList &variables)
lldb_private::ObjectFile * GetObjectFileByCompUnitInfo(CompileUnitInfo *comp_unit_info)
lldb_private::RangeDataVector< lldb::addr_t, lldb::addr_t, lldb::addr_t > FileRangeMap
bool ForEachExternalModule(lldb_private::CompileUnit &, llvm::DenseSet< lldb_private::SymbolFile * > &, llvm::function_ref< bool(lldb_private::Module &)>) override
bool ParseImportedModules(const lldb_private::SymbolContext &sc, std::vector< lldb_private::SourceModule > &imported_modules) override
static lldb_private::SymbolFile * CreateInstance(lldb::ObjectFileSP objfile_sp)
bool CompleteType(lldb_private::CompilerType &compiler_type) override
size_t ParseBlocksRecursive(lldb_private::Function &func) override
llvm::StringRef GetPluginName() override
bool ParseLineTable(lldb_private::CompileUnit &comp_unit) override
static char ID
LLVM RTTI support.
lldb_private::XcodeSDK ParseXcodeSDK(lldb_private::CompileUnit &comp_unit) override
Return the Xcode SDK comp_unit was compiled against.
std::bitset< kNumFlags > m_flags
lldb_private::Module * GetModuleByOSOIndex(uint32_t oso_idx)
static uint32_t GetOSOIndexFromUserID(lldb::user_id_t uid)
uint32_t GetCompUnitInfoIndex(const CompileUnitInfo *comp_unit_info)
size_t ParseFunctions(lldb_private::CompileUnit &comp_unit) override
lldb_private::Module * GetModuleByCompUnitInfo(CompileUnitInfo *comp_unit_info)
size_t AddOSOARanges(SymbolFileDWARF *dwarf2Data, DWARFDebugAranges *debug_aranges)
~SymbolFileDWARFDebugMap() override
uint32_t CalculateAbilities() override
std::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.
static bool classof(const SymbolFile *obj)
bool AddOSOFileRange(CompileUnitInfo *cu_info, lldb::addr_t exe_file_addr, lldb::addr_t exe_byte_size, lldb::addr_t oso_file_addr, lldb::addr_t oso_byte_size)
void SetCompileUnit(SymbolFileDWARF *oso_dwarf, const lldb::CompUnitSP &cu_sp)
lldb_private::RangeDataVector< lldb::addr_t, lldb::addr_t, OSOEntry > DebugMap
lldb_private::Type * ResolveTypeUID(lldb::user_id_t type_uid) override
std::vector< CompileUnitInfo > m_compile_unit_infos
std::shared_ptr< OSOInfo > OSOInfoSP
static int SymbolContainsSymbolWithID(lldb::user_id_t *symbol_idx_ptr, const CompileUnitInfo *comp_unit_info)
static int SymbolContainsSymbolWithIndex(uint32_t *symbol_idx_ptr, const CompileUnitInfo *comp_unit_info)
uint32_t CalculateNumCompileUnits() override
This function actually returns the number of object files, which may be less than the actual number o...
void FinalizeOSOFileRanges(CompileUnitInfo *cu_info)
void FindTypes(llvm::ArrayRef< lldb_private::CompilerContext > context, lldb_private::LanguageSet languages, llvm::DenseSet< lldb_private::SymbolFile * > &searched_symbol_files, lldb_private::TypeMap &types) override
SymbolFileDWARF * GetSymbolFile(const lldb_private::SymbolContext &sc)
lldb_private::CompilerDeclContext FindNamespace(lldb_private::ConstString name, const lldb_private::CompilerDeclContext &parent_decl_ctx, bool only_root_namespaces) override
Finds a namespace of name name and whose parent context is parent_decl_ctx.
lldb::TypeSP FindDefinitionTypeForDWARFDeclContext(const DWARFDIE &die)
static llvm::StringRef GetPluginNameStatic()
void InitializeObject() override
Initialize the SymbolFile object.
std::vector< std::unique_ptr< lldb_private::CallEdge > > ParseCallEdgesInFunction(lldb_private::UserID func_id) override
void ForEachSymbolFile(std::function< bool(SymbolFileDWARF *)> closure)
std::vector< uint32_t > m_glob_indexes
bool LinkOSOAddress(lldb_private::Address &addr)
Convert addr from a .o file address, to an executable address.
lldb_private::LazyBool m_supports_DW_AT_APPLE_objc_complete_type
void ParseDeclsForContext(lldb_private::CompilerDeclContext decl_ctx) override
size_t GetCompUnitInfosForModule(const lldb_private::Module *oso_module, std::vector< CompileUnitInfo * > &cu_infos)
lldb_private::CompilerDeclContext GetDeclContextForUID(lldb::user_id_t uid) override
CompileUnitInfo * GetCompileUnitInfoForSymbolWithID(lldb::user_id_t symbol_id, uint32_t *oso_idx_ptr)
void FindFunctions(const lldb_private::Module::LookupInfo &lookup_info, const lldb_private::CompilerDeclContext &parent_decl_ctx, bool include_inlines, lldb_private::SymbolContextList &sc_list) override
uint32_t ResolveSymbolContext(const lldb_private::SourceLocationSpec &src_location_spec, lldb::SymbolContextItem resolve_scope, lldb_private::SymbolContextList &sc_list) override
uint32_t ResolveSymbolContext(const lldb_private::Address &so_addr, lldb::SymbolContextItem resolve_scope, lldb_private::SymbolContext &sc) override
bool ParseSupportFiles(lldb_private::CompileUnit &comp_unit, lldb_private::FileSpecList &support_files) override
bool GetFileSpecForSO(uint32_t oso_idx, lldb_private::FileSpec &file_spec)
A section + offset based address class.
Definition: Address.h:59
A class that describes a compilation unit.
Definition: CompileUnit.h:41
Represents a generic declaration context in a program.
Generic representation of a type in a programming language.
Definition: CompilerType.h:36
A uniqued constant string class.
Definition: ConstString.h:39
"lldb/Target/ExecutionContext.h" A class that contains an execution context.
A file collection class.
Definition: FileSpecList.h:24
A file utility class.
Definition: FileSpec.h:56
A class that describes a function.
Definition: Function.h:409
A line table class.
Definition: LineTable.h:40
A collection class for Module objects.
Definition: ModuleList.h:82
A class that encapsulates name lookup information.
Definition: Module.h:950
A class that describes an executable image and its associated object and symbol files.
Definition: Module.h:88
A plug-in interface definition class for object file parsers.
Definition: ObjectFile.h:43
"lldb/Core/SourceLocationSpec.h" A source location specifier class.
This base class provides an interface to stack frames.
Definition: StackFrame.h:41
An error handling class.
Definition: Status.h:44
A stream class that can stream formatted output to a file.
Definition: Stream.h:28
Defines a list of symbol context objects.
"lldb/Symbol/SymbolContextScope.h" Inherit from this if your object is part of a symbol context and c...
Defines a symbol context baton that can be handed other debug core functions.
Definition: SymbolContext.h:33
Containing protected virtual methods for child classes to override.
Definition: SymbolFile.h:469
Provides public interface for all SymbolFiles.
Definition: SymbolFile.h:49
std::unordered_map< lldb::CompUnitSP, Args > GetCompileOptions()
Returns a map of compilation unit to the compile option arguments associated with that compilation un...
Definition: SymbolFile.h:450
An abstraction for Xcode-style SDKs that works like ArchSpec.
Definition: XcodeSDK.h:24
#define LLDB_INVALID_ADDRESS
Definition: lldb-defines.h:74
#define UINT32_MAX
Definition: lldb-defines.h:19
LanguageType
Programming language type.
uint64_t user_id_t
Definition: lldb-types.h:80
uint64_t addr_t
Definition: lldb-types.h:79
llvm::SmallDenseMap< uint64_t, uint64_t, 2 > id_to_index_map
A map from the compile unit ID to its index in the vector.
const FileRangeMap & GetFileRangeMap(SymbolFileDWARFDebugMap *exe_symfile)
llvm::SmallVector< lldb::CompUnitSP, 2 > compile_units_sps
The compile units that an object file contains.
A SmallBitVector that represents a set of source languages (lldb::LanguageType).
Definition: TypeSystem.h:45
A mix in class that contains a generic user ID.
Definition: UserID.h:31