Go to the documentation of this file.
9 #ifndef LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_SYMBOLFILEDWARFDEBUGMAP_H
10 #define LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_SYMBOLFILEDWARFDEBUGMAP_H
14 #include "llvm/Support/Chrono.h"
32 bool isA(
const void *ClassID)
const override {
33 return ClassID == &
ID || SymbolFileCommon::isA(ClassID);
71 lldb_private::FileSpecList &support_files)
override;
79 std::vector<lldb_private::SourceModule> &imported_modules)
override;
98 lldb::SymbolContextItem resolve_scope,
102 lldb::SymbolContextItem resolve_scope,
114 lldb::FunctionNameType name_type_mask,
115 bool include_inlines,
118 bool include_inlines,
124 llvm::DenseSet<lldb_private::SymbolFile *> &searched_symbol_files,
127 FindTypes(llvm::ArrayRef<lldb_private::CompilerContext> context,
129 llvm::DenseSet<lldb_private::SymbolFile *> &searched_symbol_files,
135 lldb::TypeClass type_mask,
137 std::vector<std::unique_ptr<lldb_private::CallEdge>>
196 return (
uint32_t)((uid >> 32ull) - 1ull);
207 std::vector<CompileUnitInfo *> &cu_infos);
232 oso_idx < num_oso_idxs; ++oso_idx) {
234 if (closure(oso_dwarf))
248 const CompileUnitInfo *comp_unit_info);
251 const CompileUnitInfo *comp_unit_info);
256 const std::vector<uint32_t> &name_symbol_indexes,
uint32_t max_matches,
260 const lldb::CompUnitSP &cu_sp);
273 bool must_be_implementation);
312 std::map<std::pair<lldb_private::ConstString, llvm::sys::TimePoint<>>,
379 #endif // LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_SYMBOLFILEDWARFDEBUGMAP_H
lldb::CompUnitSP ParseCompileUnitAtIndex(uint32_t index) override
lldb_private::ObjectFile * GetObjectFileByOSOIndex(uint32_t oso_idx)
SymbolFileDWARF * GetSymbolFile(const lldb_private::SymbolContext &sc)
FileRangeMap file_range_map
std::vector< uint32_t > m_glob_indexes
llvm::StringRef GetPluginName() override
Provides public interface for all SymbolFiles.
lldb_private::ObjectFile * GetObjectFileByCompUnitInfo(CompileUnitInfo *comp_unit_info)
CompileUnitInfo * GetCompUnitInfo(const lldb_private::SymbolContext &sc)
lldb_private::XcodeSDK ParseXcodeSDK(lldb_private::CompileUnit &comp_unit) override
Return the Xcode SDK comp_unit was compiled against.
void SetCompileUnit(SymbolFileDWARF *oso_dwarf, const lldb::CompUnitSP &cu_sp)
lldb_private::RangeDataVector< lldb::addr_t, lldb::addr_t, OSOEntry > DebugMap
std::bitset< kNumFlags > m_flags
uint32_t first_symbol_index
lldb_private::CompilerDeclContext FindNamespace(lldb_private::ConstString name, const lldb_private::CompilerDeclContext &parent_decl_ctx) override
static SymbolFileDWARF * GetSymbolFileAsSymbolFileDWARF(SymbolFile *sym_file)
lldb::addr_t GetOSOFileAddress() const
void GetTypes(lldb_private::SymbolContextScope *sc_scope, lldb::TypeClass type_mask, lldb_private::TypeList &type_list) override
bool CompleteType(lldb_private::CompilerType &compiler_type) override
static int SymbolContainsSymbolWithID(lldb::user_id_t *symbol_idx_ptr, const CompileUnitInfo *comp_unit_info)
size_t ParseBlocksRecursive(lldb_private::Function &func) override
bool isA(const void *ClassID) const override
LLVM RTTI support.
lldb::TypeSP FindCompleteObjCDefinitionTypeForDIE(const DWARFDIE &die, lldb_private::ConstString type_name, bool must_be_implementation)
static uint32_t GetOSOIndexFromUserID(lldb::user_id_t uid)
An abstraction for Xcode-style SDKs that works like ArchSpec.
bool ParseLineTable(lldb_private::CompileUnit &comp_unit) override
LanguageType
Programming language type.
void InitializeObject() override
Initialize the SymbolFile object.
bool Supports_DW_AT_APPLE_objc_complete_type(SymbolFileDWARF *skip_dwarf_oso)
std::map< std::pair< lldb_private::ConstString, llvm::sys::TimePoint<> >, OSOInfoSP > m_oso_map
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.
static lldb_private::SymbolFile * CreateInstance(lldb::ObjectFileSP objfile_sp)
void SetOSOFileAddress(lldb::addr_t oso_file_addr)
std::vector< std::unique_ptr< lldb_private::CallEdge > > ParseCallEdgesInFunction(lldb_private::UserID func_id) override
bool ParseImportedModules(const lldb_private::SymbolContext &sc, std::vector< lldb_private::SourceModule > &imported_modules) override
Containing protected virtual methods for child classes to override.
bool ForEachExternalModule(lldb_private::CompileUnit &, llvm::DenseSet< lldb_private::SymbolFile * > &, llvm::function_ref< bool(lldb_private::Module &)>) override
static bool classof(const SymbolFile *obj)
size_t AddOSOARanges(SymbolFileDWARF *dwarf2Data, DWARFDebugAranges *debug_aranges)
CompileUnitInfo * GetCompileUnitInfoForSymbolWithIndex(uint32_t symbol_idx, uint32_t *oso_idx_ptr)
lldb_private::CompilerDeclContext GetDeclContextForUID(lldb::user_id_t uid) override
OSOEntry(uint32_t exe_sym_idx, lldb::addr_t oso_file_addr)
void ParseDeclsForContext(lldb_private::CompilerDeclContext decl_ctx) override
std::shared_ptr< OSOInfo > OSOInfoSP
bool ParseIsOptimized(lldb_private::CompileUnit &comp_unit) override
uint32_t GetCompUnitInfoIndex(const CompileUnitInfo *comp_unit_info)
void FindGlobalVariables(lldb_private::ConstString name, const lldb_private::CompilerDeclContext &parent_decl_ctx, uint32_t max_matches, lldb_private::VariableList &variables) override
lldb::TypeSP FindDefinitionTypeForDWARFDeclContext(const DWARFDeclContext &die_decl_ctx)
uint32_t ResolveSymbolContext(const lldb_private::Address &so_addr, lldb::SymbolContextItem resolve_scope, lldb_private::SymbolContext &sc) override
CompileUnitInfo * GetCompileUnitInfo(SymbolFileDWARF *oso_dwarf)
lldb_private::ConstString oso_path
uint32_t CalculateAbilities() override
static llvm::StringRef GetPluginDescriptionStatic()
std::vector< uint32_t > m_func_indexes
UniqueDWARFASTTypeMap m_unique_ast_type_map
lldb::CompUnitSP GetCompileUnit(SymbolFileDWARF *oso_dwarf)
lldb_private::CompilerDeclContext GetDeclContextContainingUID(lldb::user_id_t uid) override
lldb::CompUnitSP compile_unit_sp
size_t ParseTypes(lldb_private::CompileUnit &comp_unit) override
bool operator<(const OSOEntry &rhs) const
bool GetFileSpecForSO(uint32_t oso_idx, lldb_private::FileSpec &file_spec)
lldb_private::ModuleList GetDebugInfoModules() override
Get the additional modules that this symbol file uses to parse debug info.
SymbolFileDWARF * GetSymbolFileByOSOIndex(uint32_t oso_idx)
CompileUnitInfo * GetCompileUnitInfoForSymbolWithID(lldb::user_id_t symbol_id, uint32_t *oso_idx_ptr)
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)
lldb_private::Module * GetModuleByCompUnitInfo(CompileUnitInfo *comp_unit_info)
llvm::sys::TimePoint oso_mod_time
uint32_t last_symbol_index
size_t ParseFunctions(lldb_private::CompileUnit &comp_unit) override
Represents a generic declaration context in a program.
size_t GetCompUnitInfosForModule(const lldb_private::Module *oso_module, std::vector< CompileUnitInfo * > &cu_infos)
void FinalizeOSOFileRanges(CompileUnitInfo *cu_info)
static int SymbolContainsSymbolWithIndex(uint32_t *symbol_idx_ptr, const CompileUnitInfo *comp_unit_info)
SymbolFileDWARF * GetSymbolFileByCompUnitInfo(CompileUnitInfo *comp_unit_info)
bool LinkOSOAddress(lldb_private::Address &addr)
Convert addr from a .o file address, to an executable address.
UniqueDWARFASTTypeMap & GetUniqueDWARFASTTypeMap()
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
static char ID
LLVM RTTI support.
void DumpClangAST(lldb_private::Stream &s) override
SymbolFileDWARFDebugMap(lldb::ObjectFileSP objfile_sp)
lldb_private::LazyBool m_supports_DW_AT_APPLE_objc_complete_type
lldb_private::Type * ResolveTypeUID(lldb::user_id_t type_uid) override
lldb_private::FileSpec so_file
#define LLDB_INVALID_ADDRESS
void ForEachSymbolFile(std::function< bool(SymbolFileDWARF *)> closure)
Generic representation of a type in a programming language.
bool ParseSupportFiles(lldb_private::CompileUnit &comp_unit, lldb_private::FileSpecList &support_files) override
lldb_private::RangeDataVector< lldb::addr_t, lldb::addr_t, lldb::addr_t > FileRangeMap
lldb::LanguageType ParseLanguage(lldb_private::CompileUnit &comp_unit) override
lldb_private::Module * GetModuleByOSOIndex(uint32_t oso_idx)
uint32_t CalculateNumCompileUnits() override
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...
bool file_range_map_valid
static llvm::StringRef GetPluginNameStatic()
uint32_t GetExeSymbolIndex() const
lldb::addr_t LinkOSOFileAddress(SymbolFileDWARF *oso_symfile, lldb::addr_t oso_file_addr)
Convert a .o file "file address" to an executable "file address".
const FileRangeMap & GetFileRangeMap(SymbolFileDWARFDebugMap *exe_symfile)
A SmallBitVector that represents a set of source languages (lldb::LanguageType).
bool ParseDebugMacros(lldb_private::CompileUnit &comp_unit) override
size_t ParseVariablesForContext(const lldb_private::SymbolContext &sc) override
std::vector< CompileUnitInfo > m_compile_unit_infos
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
~SymbolFileDWARFDebugMap() 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::addr_t m_oso_file_addr