LLDB mainline
|
#include <SymbolFileSymtab.h>
Public Member Functions | |
SymbolFileSymtab (lldb::ObjectFileSP objfile_sp) | |
uint32_t | CalculateAbilities () override |
lldb::LanguageType | ParseLanguage (lldb_private::CompileUnit &comp_unit) override |
size_t | ParseFunctions (lldb_private::CompileUnit &comp_unit) override |
bool | ParseLineTable (lldb_private::CompileUnit &comp_unit) override |
bool | ParseDebugMacros (lldb_private::CompileUnit &comp_unit) override |
bool | ParseSupportFiles (lldb_private::CompileUnit &comp_unit, lldb_private::SupportFileList &support_files) override |
size_t | ParseTypes (lldb_private::CompileUnit &comp_unit) override |
bool | ParseImportedModules (const lldb_private::SymbolContext &sc, std::vector< lldb_private::SourceModule > &imported_modules) override |
size_t | ParseBlocksRecursive (lldb_private::Function &func) override |
size_t | ParseVariablesForContext (const lldb_private::SymbolContext &sc) override |
lldb_private::Type * | ResolveTypeUID (lldb::user_id_t type_uid) 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. | |
bool | CompleteType (lldb_private::CompilerType &compiler_type) override |
uint32_t | ResolveSymbolContext (const lldb_private::Address &so_addr, lldb::SymbolContextItem resolve_scope, lldb_private::SymbolContext &sc) override |
void | GetTypes (lldb_private::SymbolContextScope *sc_scope, lldb::TypeClass type_mask, lldb_private::TypeList &type_list) override |
llvm::StringRef | GetPluginName () override |
Public Member Functions inherited from lldb_private::SymbolFileCommon | |
SymbolFileCommon (lldb::ObjectFileSP objfile_sp) | |
~SymbolFileCommon () override=default | |
uint32_t | GetAbilities () override |
Get a mask of what this symbol file supports for the object file that it was constructed with. | |
Symtab * | GetSymtab () override |
ObjectFile * | GetObjectFile () override |
const ObjectFile * | GetObjectFile () const override |
ObjectFile * | GetMainObjectFile () override |
void | SectionFileAddressesChanged () override |
Notify the SymbolFile that the file addresses in the Sections for this module have been changed. | |
uint32_t | GetNumCompileUnits () override |
lldb::CompUnitSP | GetCompileUnitAtIndex (uint32_t idx) override |
llvm::Expected< lldb::TypeSystemSP > | GetTypeSystemForLanguage (lldb::LanguageType language) override |
void | Dump (Stream &s) override |
uint64_t | GetDebugInfoSize (bool load_all_debug_info=false) override |
Metrics gathering functions. | |
bool | GetDebugInfoIndexWasLoadedFromCache () const override |
Accessors for the bool that indicates if the debug info index was loaded from, or saved to the module index cache. | |
void | SetDebugInfoIndexWasLoadedFromCache () override |
bool | GetDebugInfoIndexWasSavedToCache () const override |
void | SetDebugInfoIndexWasSavedToCache () override |
bool | GetDebugInfoHadFrameVariableErrors () const override |
Accessors for the bool that indicates if there was debug info, but errors stopped variables from being able to be displayed correctly. | |
void | SetDebugInfoHadFrameVariableErrors () override |
lldb::TypeSP | MakeType (lldb::user_id_t uid, ConstString name, std::optional< uint64_t > byte_size, SymbolContextScope *context, lldb::user_id_t encoding_uid, Type::EncodingDataType encoding_uid_type, const Declaration &decl, const CompilerType &compiler_qual_type, Type::ResolveState compiler_type_resolve_state, uint32_t opaque_payload=0) override |
This function is used to create types that belong to a SymbolFile. | |
lldb::TypeSP | CopyType (const lldb::TypeSP &other_type) override |
Public Member Functions inherited from lldb_private::SymbolFile | |
SymbolFile ()=default | |
~SymbolFile () override=default | |
virtual SymbolFile * | GetBackingSymbolFile () |
SymbolFileOnDemand class overrides this to return the underlying backing SymbolFile implementation that loads on-demand. | |
virtual uint32_t | GetAbilities ()=0 |
Get a mask of what this symbol file supports for the object file that it was constructed with. | |
virtual uint32_t | CalculateAbilities ()=0 |
virtual std::recursive_mutex & | GetModuleMutex () const |
Symbols file subclasses should override this to return the Module that owns the TypeSystem that this symbol file modifies type information in. | |
virtual void | InitializeObject () |
Initialize the SymbolFile object. | |
virtual bool | GetLoadDebugInfoEnabled () |
Whether debug info will be loaded or not. | |
virtual void | SetLoadDebugInfoEnabled () |
Specify debug info should be loaded. | |
virtual uint32_t | GetNumCompileUnits ()=0 |
virtual lldb::CompUnitSP | GetCompileUnitAtIndex (uint32_t idx)=0 |
virtual Symtab * | GetSymtab ()=0 |
virtual lldb::LanguageType | ParseLanguage (CompileUnit &comp_unit)=0 |
virtual XcodeSDK | ParseXcodeSDK (CompileUnit &comp_unit) |
Return the Xcode SDK comp_unit was compiled against. | |
virtual llvm::SmallSet< lldb::LanguageType, 4 > | ParseAllLanguages (CompileUnit &comp_unit) |
This function exists because SymbolFileDWARFDebugMap may extra compile units which aren't exposed as "real" compile units. | |
virtual size_t | ParseFunctions (CompileUnit &comp_unit)=0 |
virtual bool | ParseLineTable (CompileUnit &comp_unit)=0 |
virtual bool | ParseDebugMacros (CompileUnit &comp_unit)=0 |
virtual bool | ForEachExternalModule (lldb_private::CompileUnit &comp_unit, llvm::DenseSet< lldb_private::SymbolFile * > &visited_symbol_files, llvm::function_ref< bool(Module &)> lambda) |
Apply a lambda to each external lldb::Module referenced by this comp_unit . | |
virtual bool | ParseSupportFiles (CompileUnit &comp_unit, SupportFileList &support_files)=0 |
virtual size_t | ParseTypes (CompileUnit &comp_unit)=0 |
virtual bool | ParseIsOptimized (CompileUnit &comp_unit) |
virtual bool | ParseImportedModules (const SymbolContext &sc, std::vector< SourceModule > &imported_modules)=0 |
virtual size_t | ParseBlocksRecursive (Function &func)=0 |
virtual size_t | ParseVariablesForContext (const SymbolContext &sc)=0 |
virtual Type * | ResolveTypeUID (lldb::user_id_t type_uid)=0 |
virtual std::optional< ArrayInfo > | GetDynamicArrayInfoForUID (lldb::user_id_t type_uid, const lldb_private::ExecutionContext *exe_ctx)=0 |
If type_uid points to an array type, return its characteristics. | |
virtual bool | CompleteType (CompilerType &compiler_type)=0 |
virtual void | ParseDeclsForContext (CompilerDeclContext decl_ctx) |
virtual CompilerDecl | GetDeclForUID (lldb::user_id_t uid) |
virtual CompilerDeclContext | GetDeclContextForUID (lldb::user_id_t uid) |
virtual CompilerDeclContext | GetDeclContextContainingUID (lldb::user_id_t uid) |
virtual std::vector< CompilerContext > | GetCompilerContextForUID (lldb::user_id_t uid) |
virtual uint32_t | ResolveSymbolContext (const Address &so_addr, lldb::SymbolContextItem resolve_scope, SymbolContext &sc)=0 |
Status | GetFrameVariableError (StackFrame &frame) |
Get an error that describes why variables might be missing for a given symbol context. | |
virtual Status | CalculateFrameVariableError (StackFrame &frame) |
Subclasses will override this function to for GetFrameVariableError(). | |
virtual uint32_t | ResolveSymbolContext (const SourceLocationSpec &src_location_spec, lldb::SymbolContextItem resolve_scope, SymbolContextList &sc_list) |
virtual void | DumpClangAST (Stream &s) |
virtual void | FindGlobalVariables (ConstString name, const CompilerDeclContext &parent_decl_ctx, uint32_t max_matches, VariableList &variables) |
virtual void | FindGlobalVariables (const RegularExpression ®ex, uint32_t max_matches, VariableList &variables) |
virtual void | FindFunctions (const Module::LookupInfo &lookup_info, const CompilerDeclContext &parent_decl_ctx, bool include_inlines, SymbolContextList &sc_list) |
virtual void | FindFunctions (const RegularExpression ®ex, bool include_inlines, SymbolContextList &sc_list) |
virtual void | FindTypes (const TypeQuery &query, TypeResults &results) |
Find types using a type-matching object that contains all search parameters. | |
virtual void | GetMangledNamesForFunction (const std::string &scope_qualified_name, std::vector< ConstString > &mangled_names) |
virtual void | GetTypes (lldb_private::SymbolContextScope *sc_scope, lldb::TypeClass type_mask, lldb_private::TypeList &type_list)=0 |
virtual void | PreloadSymbols () |
virtual llvm::Expected< lldb::TypeSystemSP > | GetTypeSystemForLanguage (lldb::LanguageType language)=0 |
virtual CompilerDeclContext | FindNamespace (ConstString name, const CompilerDeclContext &parent_decl_ctx, bool only_root_namespaces=false) |
Finds a namespace of name name and whose parent context is parent_decl_ctx. | |
virtual ObjectFile * | GetObjectFile ()=0 |
virtual const ObjectFile * | GetObjectFile () const =0 |
virtual ObjectFile * | GetMainObjectFile ()=0 |
virtual std::vector< std::unique_ptr< CallEdge > > | ParseCallEdgesInFunction (UserID func_id) |
virtual void | AddSymbols (Symtab &symtab) |
virtual void | SectionFileAddressesChanged ()=0 |
Notify the SymbolFile that the file addresses in the Sections for this module have been changed. | |
virtual lldb::UnwindPlanSP | GetUnwindPlan (const Address &address, const RegisterInfoResolver &resolver) |
virtual llvm::Expected< lldb::addr_t > | GetParameterStackSize (Symbol &symbol) |
Return the number of stack bytes taken up by the parameters to this function. | |
virtual void | Dump (Stream &s)=0 |
virtual uint64_t | GetDebugInfoSize (bool load_all_debug_info=false)=0 |
Metrics gathering functions. | |
virtual StatsDuration::Duration | GetDebugInfoParseTime () |
Return the time taken to parse the debug information. | |
virtual StatsDuration::Duration | GetDebugInfoIndexTime () |
Return the time it took to index the debug information in the object file. | |
virtual void | ResetStatistics () |
Reset the statistics for the symbol file. | |
virtual ModuleList | GetDebugInfoModules () |
Get the additional modules that this symbol file uses to parse debug info. | |
virtual bool | GetDebugInfoHadFrameVariableErrors () const =0 |
Accessors for the bool that indicates if there was debug info, but errors stopped variables from being able to be displayed correctly. | |
virtual void | SetDebugInfoHadFrameVariableErrors ()=0 |
virtual bool | GetSeparateDebugInfo (StructuredData::Dictionary &d, bool errors_only) |
Return true if separate debug info files are supported and this function succeeded, false otherwise. | |
virtual lldb::TypeSP | MakeType (lldb::user_id_t uid, ConstString name, std::optional< uint64_t > byte_size, SymbolContextScope *context, lldb::user_id_t encoding_uid, Type::EncodingDataType encoding_uid_type, const Declaration &decl, const CompilerType &compiler_qual_type, Type::ResolveState compiler_type_resolve_state, uint32_t opaque_payload=0)=0 |
virtual lldb::TypeSP | CopyType (const lldb::TypeSP &other_type)=0 |
std::unordered_map< lldb::CompUnitSP, Args > | GetCompileOptions () |
Returns a map of compilation unit to the compile option arguments associated with that compilation unit. | |
Public Member Functions inherited from lldb_private::PluginInterface | |
PluginInterface ()=default | |
virtual | ~PluginInterface ()=default |
virtual llvm::StringRef | GetPluginName ()=0 |
PluginInterface (const PluginInterface &)=delete | |
PluginInterface & | operator= (const PluginInterface &)=delete |
Static Public Member Functions | |
static void | Initialize () |
static void | Terminate () |
static llvm::StringRef | GetPluginNameStatic () |
static llvm::StringRef | GetPluginDescriptionStatic () |
static lldb_private::SymbolFile * | CreateInstance (lldb::ObjectFileSP objfile_sp) |
Static Public Member Functions inherited from lldb_private::SymbolFileCommon | |
static bool | classof (const SymbolFileCommon *obj) |
Static Public Member Functions inherited from lldb_private::SymbolFile | |
static SymbolFile * | FindPlugin (lldb::ObjectFileSP objfile_sp) |
static bool | classof (const SymbolFile *obj) |
Protected Member Functions | |
uint32_t | CalculateNumCompileUnits () override |
lldb::CompUnitSP | ParseCompileUnitAtIndex (uint32_t index) override |
Protected Member Functions inherited from lldb_private::SymbolFileCommon | |
virtual uint32_t | CalculateNumCompileUnits ()=0 |
virtual lldb::CompUnitSP | ParseCompileUnitAtIndex (uint32_t idx)=0 |
virtual TypeList & | GetTypeList () |
void | SetCompileUnitAtIndex (uint32_t idx, const lldb::CompUnitSP &cu_sp) |
Protected Member Functions inherited from lldb_private::SymbolFile | |
void | AssertModuleLock () |
virtual void | GetCompileOptions (std::unordered_map< lldb::CompUnitSP, lldb_private::Args > &args) |
Protected Attributes | |
lldb_private::Symtab::IndexCollection | m_source_indexes |
lldb_private::Symtab::IndexCollection | m_func_indexes |
lldb_private::Symtab::IndexCollection | m_code_indexes |
lldb_private::Symtab::IndexCollection | m_data_indexes |
lldb_private::Symtab::NameToIndexMap | m_objc_class_name_to_index |
Protected Attributes inherited from lldb_private::SymbolFileCommon | |
lldb::ObjectFileSP | m_objfile_sp |
std::optional< std::vector< lldb::CompUnitSP > > | m_compile_units |
TypeList | m_type_list |
uint32_t | m_abilities = 0 |
bool | m_calculated_abilities = false |
bool | m_index_was_loaded_from_cache = false |
bool | m_index_was_saved_to_cache = false |
bool | m_debug_info_had_variable_errors = false |
Set to true if any variable feteching errors have been found when calling GetFrameVariableError(). | |
Static Private Attributes | |
static char | ID |
LLVM RTTI support. | |
bool | isA (const void *ClassID) const override |
LLVM RTTI support. | |
static bool | classof (const SymbolFile *obj) |
Additional Inherited Members | |
Public Types inherited from lldb_private::SymbolFile | |
enum | Abilities { CompileUnits = (1u << 0) , LineTables = (1u << 1) , Functions = (1u << 2) , Blocks = (1u << 3) , GlobalVariables = (1u << 4) , LocalVariables = (1u << 5) , VariableTypes = (1u << 6) , kAllAbilities = ((1u << 7) - 1u) } |
Definition at line 19 of file SymbolFileSymtab.h.
SymbolFileSymtab::SymbolFileSymtab | ( | lldb::ObjectFileSP | objfile_sp | ) |
Definition at line 54 of file SymbolFileSymtab.cpp.
|
overridevirtual |
Implements lldb_private::SymbolFile.
Definition at line 58 of file SymbolFileSymtab.cpp.
References lldb_private::Symtab::AppendSymbolIndexesWithType(), lldb_private::Symtab::AppendSymbolNamesToMap(), lldb_private::SymbolFile::CompileUnits, lldb_private::Symtab::eDebugNo, lldb_private::Symtab::eDebugYes, lldb::eSymbolTypeCode, lldb::eSymbolTypeData, lldb::eSymbolTypeObjCClass, lldb::eSymbolTypeSourceFile, lldb_private::Symtab::eVisibilityAny, lldb_private::SymbolFile::Functions, lldb_private::SymbolFile::GlobalVariables, m_code_indexes, m_data_indexes, m_func_indexes, m_objc_class_name_to_index, lldb_private::SymbolFileCommon::m_objfile_sp, m_source_indexes, lldb_private::UniqueCStringMap< T >::Sort(), and lldb_private::Symtab::SortSymbolIndexesByValue().
|
overrideprotectedvirtual |
Implements lldb_private::SymbolFileCommon.
Definition at line 103 of file SymbolFileSymtab.cpp.
References m_source_indexes.
|
inlinestatic |
Definition at line 29 of file SymbolFileSymtab.h.
References ID.
|
overridevirtual |
Implements lldb_private::SymbolFile.
Definition at line 239 of file SymbolFileSymtab.cpp.
|
static |
Definition at line 46 of file SymbolFileSymtab.cpp.
Referenced by Initialize(), and Terminate().
|
overridevirtual |
If type_uid
points to an array type, return its characteristics.
To support variable-length array types, this function takes an optional ExecutionContext
. If exe_ctx
is non-null, the dynamic characteristics for that context are returned.
Implements lldb_private::SymbolFile.
Definition at line 234 of file SymbolFileSymtab.cpp.
|
static |
Definition at line 42 of file SymbolFileSymtab.cpp.
Referenced by Initialize().
|
inlineoverridevirtual |
Implements lldb_private::PluginInterface.
Definition at line 89 of file SymbolFileSymtab.h.
References GetPluginNameStatic().
|
inlinestatic |
Definition at line 40 of file SymbolFileSymtab.h.
Referenced by GetPluginName(), and Initialize().
|
overridevirtual |
Implements lldb_private::SymbolFile.
Definition at line 50 of file SymbolFileSymtab.cpp.
|
static |
Definition at line 33 of file SymbolFileSymtab.cpp.
References CreateInstance(), GetPluginDescriptionStatic(), GetPluginNameStatic(), and lldb_private::PluginManager::RegisterPlugin().
|
inlineoverridevirtual |
LLVM RTTI support.
Reimplemented from lldb_private::SymbolFileCommon.
Definition at line 26 of file SymbolFileSymtab.h.
References ID.
|
overridevirtual |
Implements lldb_private::SymbolFile.
Definition at line 223 of file SymbolFileSymtab.cpp.
|
overrideprotectedvirtual |
Implements lldb_private::SymbolFileCommon.
Definition at line 114 of file SymbolFileSymtab.cpp.
References lldb_private::ConstString::AsCString(), lldb::eLanguageTypeUnknown, lldb_private::eLazyBoolNo, lldb_private::Symbol::GetName(), lldb_private::SymbolFileCommon::m_objfile_sp, and m_source_indexes.
|
overridevirtual |
Implements lldb_private::SymbolFile.
Definition at line 209 of file SymbolFileSymtab.cpp.
|
overridevirtual |
Implements lldb_private::SymbolFile.
Definition at line 134 of file SymbolFileSymtab.cpp.
References lldb_private::CompileUnit::AddFunction(), lldb_private::Symbol::GetAddress(), lldb_private::Symbol::GetAddressRef(), lldb_private::AddressRange::GetBaseAddress(), lldb_private::Symbol::GetByteSize(), lldb_private::Symbol::GetMangled(), lldb_private::SymbolFile::GetModuleMutex(), lldb_private::Address::GetOffset(), lldb_private::Symbol::GetSizeIsSibling(), lldb_private::Address::IsSectionOffset(), LLDB_INVALID_UID, m_code_indexes, m_func_indexes, lldb_private::SymbolFileCommon::m_objfile_sp, m_source_indexes, lldb_private::AddressRange::SetByteSize(), and lldb_private::Symtab::SymbolAtIndex().
|
overridevirtual |
Implements lldb_private::SymbolFile.
Definition at line 218 of file SymbolFileSymtab.cpp.
|
overridevirtual |
Implements lldb_private::SymbolFile.
Definition at line 130 of file SymbolFileSymtab.cpp.
References lldb::eLanguageTypeUnknown.
|
overridevirtual |
Implements lldb_private::SymbolFile.
Definition at line 207 of file SymbolFileSymtab.cpp.
|
overridevirtual |
Implements lldb_private::SymbolFile.
Definition at line 213 of file SymbolFileSymtab.cpp.
|
overridevirtual |
Implements lldb_private::SymbolFile.
Definition at line 205 of file SymbolFileSymtab.cpp.
|
overridevirtual |
Implements lldb_private::SymbolFile.
Definition at line 225 of file SymbolFileSymtab.cpp.
|
overridevirtual |
Implements lldb_private::SymbolFile.
Definition at line 243 of file SymbolFileSymtab.cpp.
References lldb_private::Address::GetFileAddress(), lldb_private::SymbolFile::GetModuleMutex(), lldb_private::SymbolFileCommon::m_objfile_sp, and lldb_private::SymbolContext::symbol.
|
overridevirtual |
Implements lldb_private::SymbolFile.
Definition at line 229 of file SymbolFileSymtab.cpp.
|
static |
Definition at line 38 of file SymbolFileSymtab.cpp.
References CreateInstance(), and lldb_private::PluginManager::UnregisterPlugin().
|
staticprivate |
LLVM RTTI support.
Definition at line 21 of file SymbolFileSymtab.h.
|
protected |
Definition at line 98 of file SymbolFileSymtab.h.
Referenced by CalculateAbilities(), and ParseFunctions().
|
protected |
Definition at line 99 of file SymbolFileSymtab.h.
Referenced by CalculateAbilities().
|
protected |
Definition at line 97 of file SymbolFileSymtab.h.
Referenced by CalculateAbilities(), and ParseFunctions().
|
protected |
Definition at line 100 of file SymbolFileSymtab.h.
Referenced by CalculateAbilities().
|
protected |
Definition at line 96 of file SymbolFileSymtab.h.
Referenced by CalculateAbilities(), CalculateNumCompileUnits(), ParseCompileUnitAtIndex(), and ParseFunctions().