LLDB mainline
|
#include <DWARFASTParserClang.h>
Classes | |
class | DelayedAddObjCClassProperty |
struct | FieldInfo |
struct | MemberAttributes |
Parsed form of all attributes that are relevant for parsing type members. More... | |
Static Protected Member Functions | |
static bool | classof (const DWARFASTParser *Parser) |
Additional Inherited Members | |
![]() | |
enum class | Kind { DWARFASTParserClang } |
![]() | |
static std::optional< SymbolFile::ArrayInfo > | ParseChildArrayInfo (const DWARFDIE &parent_die, const ExecutionContext *exe_ctx=nullptr) |
static lldb::AccessType | GetAccessTypeFromDWARF (uint32_t dwarf_accessibility) |
Definition at line 44 of file DWARFASTParserClang.h.
|
protected |
Definition at line 127 of file DWARFASTParserClang.h.
|
protected |
Definition at line 119 of file DWARFASTParserClang.h.
|
protected |
Definition at line 124 of file DWARFASTParserClang.h.
|
protected |
Definition at line 134 of file DWARFASTParserClang.h.
|
protected |
Definition at line 131 of file DWARFASTParserClang.h.
DWARFASTParserClang::DWARFASTParserClang | ( | lldb_private::TypeSystemClang & | ast | ) |
Definition at line 71 of file DWARFASTParserClang.cpp.
|
overridedefault |
|
private |
Tries to detect whether class_clang_type contained an unnamed bit-field between previous_field and current_field, and if so, adds a clang::FieldDecl representing that bit-field to class_clang_type.
This is necessary because Clang (and GCC) doesn't emit a DW_TAG_member entry for unnamed bit-fields. So we derive it (with some exceptions), by checking whether there is a gap between where the storage of a DW_TAG_member ended and the subsequent DW_TAG_member began.
[in,out] | layout_info | Layout information of all decls parsed by the current parser. Will contain an entry for the unnamed bit-field if this function created one. |
[in] | class_clang_type | The RecordType to which the unnamed bit-field will be added (if any). |
[in] | previous_field | FieldInfo of the previous DW_TAG_member we parsed. |
[in] | current_field | FieldInfo of the current DW_TAG_member being parsed. |
Definition at line 3735 of file DWARFASTParserClang.cpp.
References lldb_private::TypeSystemClang::AddFieldToRecordType(), DWARFASTParserClang::FieldInfo::bit_offset, lldb::eAccessPublic, lldb::eEncodingSint, lldb_private::ClangASTImporter::LayoutInfo::field_offsets, lldb_private::TypeSystemClang::GetBuiltinTypeForEncodingAndBitSize(), DWARFASTParserClang::FieldInfo::GetEffectiveFieldEnd(), DWARFASTParserClang::FieldInfo::IsBitfield(), m_ast, and ShouldCreateUnnamedBitfield().
Referenced by ParseSingleMember().
|
inlinestaticprotected |
Definition at line 255 of file DWARFASTParserClang.h.
References lldb_private::plugin::dwarf::DWARFASTParser::DWARFASTParserClang.
|
private |
Definition at line 2152 of file DWARFASTParserClang.cpp.
References lldb_private::TypeSystemClang::CompleteTagDeclarationDefinition(), lldb_private::Type::GetByteSize(), lldb_private::plugin::dwarf::DWARFBaseDIE::HasChildren(), lldb_private::CompilerType::IsIntegerType(), ParseChildEnumerators(), and lldb_private::TypeSystemClang::StartTagDeclarationDefinition().
Referenced by CompleteTypeFromDWARF().
|
private |
Definition at line 2052 of file DWARFASTParserClang.cpp.
References lldb_private::TypeSystemClang::AddMethodOverridesForCXXRecordType(), lldb_private::ClangASTImporter::LayoutInfo::alignment, lldb_private::ClangASTImporter::LayoutInfo::bit_size, lldb_private::TypeSystemClang::BuildIndirectFields(), lldb_private::TypeSystemClang::CompleteTagDeclarationDefinition(), lldb::eAccessNone, lldb::eAccessPrivate, lldb::eAccessPublic, lldb_private::TypeSystemClang::GetAsCXXRecordDecl(), lldb_private::TypeSystemClang::getASTContext(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetAttributeValueAsUnsigned(), GetClangASTImporter(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::CompilerType::GetOpaqueQualType(), lldb_private::TypeSystemClang::GetType(), lldb_private::CompilerType::GetTypeName(), lldb_private::CompilerType::IsBeingDefined(), lldb_private::TypeSystemClang::IsObjCObjectOrInterfaceType(), m_ast, ParseChildMembers(), lldb_private::TypeSystemClang::RequireCompleteType(), lldb_private::plugin::dwarf::DWARFDIE::ResolveType(), lldb_private::ClangASTImporter::SetRecordLayout(), lldb_private::TypeSystemClang::StartTagDeclarationDefinition(), lldb_private::plugin::dwarf::DWARFBaseDIE::Tag(), and lldb_private::TypeSystemClang::TransferBaseClasses().
Referenced by CompleteTypeFromDWARF().
|
overridevirtual |
Implements lldb_private::plugin::dwarf::DWARFASTParser.
Definition at line 2167 of file DWARFASTParserClang.cpp.
References CompleteEnumType(), CompleteRecordType(), lldb_private::TypeSystemClang::CompleteTagDeclarationDefinition(), lldb_private::ClangUtil::GetAsTagDecl(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::CompilerType::GetOpaqueQualType(), lldb_private::CompilerType::IsBeingDefined(), m_ast, lldb_private::TypeSystemClang::SetDeclIsForcefullyCompleted(), lldb_private::TypeSystemClang::SetHasExternalStorage(), and lldb_private::plugin::dwarf::DWARFBaseDIE::Tag().
|
overridevirtual |
Implements lldb_private::plugin::dwarf::DWARFASTParser.
Definition at line 2312 of file DWARFASTParserClang.cpp.
References GetClangDeclContextContainingDIE(), lldb_private::plugin::dwarf::DWARFDIE::GetDWARFDeclContext(), lldb_private::plugin::dwarf::DWARFDeclContext::GetQualifiedName(), lldb_private::StreamString::GetString(), and ParseChildParameters().
Referenced by ParseFunctionFromDWARF().
|
protected |
Definition at line 3552 of file DWARFASTParserClang.cpp.
References lldb_private::UniqueCStringMap< T >::Find(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetAttributeValueAsUnsigned(), lldb_private::UniqueCStringMap< T >::GetCStringAtIndex(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetCU(), lldb_private::plugin::dwarf::DWARFDIE::GetDIE(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetDIEToType(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetDWARFParser(), lldb_private::plugin::dwarf::DWARFDIE::GetFirstChild(), lldb_private::Type::GetFullCompilerType(), lldb_private::plugin::dwarf::DWARFDIE::GetMangledName(), lldb_private::UniqueCStringMap< T >::GetSize(), lldb_private::UniqueCStringMap< T >::GetValueAtIndexUnchecked(), lldb_private::UniqueCStringMap< T >::IsEmpty(), lldb_private::plugin::dwarf::DWARFBaseDIE::IsValid(), LinkDeclContextToDIE(), m_die_to_decl_ctx, lldb_private::UniqueCStringMap< T >::Sort(), and lldb_private::plugin::dwarf::DWARFBaseDIE::Tag().
Referenced by ParseCXXMethod().
|
private |
If the specified 'die' represents a static data member, creates a 'clang::VarDecl' for it and attaches it to specified parent 'class_clang_type'.
[in] | die | The member declaration we want to create a clang::VarDecl for. |
[in] | attrs | The parsed attributes for the specified 'die'. |
[in] | class_clang_type | The parent RecordType of the static member this function will create. |
Definition at line 2763 of file DWARFASTParserClang.cpp.
References DWARFASTParserClang::MemberAttributes::accessibility, lldb_private::TypeSystemClang::AddVariableToRecordType(), DWARFASTParserClang::MemberAttributes::const_value_form, lldb::eAccessNone, lldb::eAccessPublic, DWARFASTParserClang::MemberAttributes::encoding_form, ExtractIntFromFormValue(), lldb_private::Type::GetForwardCompilerType(), lldb_private::GetLog(), lldb_private::CompilerType::IsIntegerOrEnumerationType(), LLDB_LOG, LLDB_LOG_ERROR, DWARFASTParserClang::MemberAttributes::name, lldb_private::plugin::dwarf::DWARFFormValue::Reference(), lldb_private::plugin::dwarf::DWARFDIE::ResolveTypeUID(), lldb_private::TypeSystemClang::SetIntegerInitializerForVariable(), and lldb_private::plugin::dwarf::DWARFBaseDIE::Tag().
Referenced by ParseChildMembers(), and ParseSingleMember().
|
overridevirtual |
Implements lldb_private::plugin::dwarf::DWARFASTParser.
Definition at line 2210 of file DWARFASTParserClang.cpp.
References lldb_private::plugin::dwarf::DWARFDIE::children(), GetClangDeclForDIE(), lldb_private::CompilerDeclContext::GetOpaqueDeclContext(), and m_decl_ctx_to_die.
llvm::Expected< llvm::APInt > DWARFASTParserClang::ExtractIntFromFormValue | ( | const lldb_private::CompilerType & | int_type, |
const lldb_private::plugin::dwarf::DWARFFormValue & | form_value | ||
) | const |
Extracts an value for a given Clang integer type from a DWARFFormValue.
int_type | The Clang type that defines the bit size and signedness of the integer that should be extracted. Has to be either an integer type or an enum type. For enum types the underlying integer type will be considered as the expected integer type that should be extracted. |
form_value | The DWARFFormValue that contains the integer value. |
Definition at line 2707 of file DWARFASTParserClang.cpp.
References lldb_private::CompilerType::TypeSystemSPWrapper::dyn_cast_or_null(), lldb_private::TypeSystemClang::getASTContext(), lldb_private::ClangUtil::GetQualType(), lldb_private::CompilerType::GetTypeSystem(), lldb_private::plugin::dwarf::DWARFFormValue::Signed(), and lldb_private::plugin::dwarf::DWARFFormValue::Unsigned().
Referenced by CreateStaticMemberVariable().
|
protected |
Definition at line 3535 of file DWARFASTParserClang.cpp.
References lldb_private::plugin::dwarf::DWARFDIE::GetDIE(), and m_die_to_decl_ctx.
Referenced by GetClangDeclContextForDIE(), MapDeclDIEToDefDIE(), ParseStructureLikeDIE(), ParseSubroutine(), ParseTypeFromClangModule(), and ParseTypeFromDWARF().
ClangASTImporter & DWARFASTParserClang::GetClangASTImporter | ( | ) |
Definition at line 89 of file DWARFASTParserClang.cpp.
References m_clang_ast_importer_up.
Referenced by CompleteRecordType(), lldb_private::plugin::dwarf::SymbolFileDWARF::CompleteType(), lldb_private::plugin::dwarf::SymbolFileDWARF::HasForwardDeclForCompilerType(), ParseCXXMethod(), ParseStructureLikeDIE(), ParseTypeFromClangModule(), and ParseTypeModifier().
|
protected |
Definition at line 3516 of file DWARFASTParserClang.cpp.
References GetClangDeclContextForDIE(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::TypeSystemClang::GetTranslationUnitDecl(), and m_ast.
Referenced by ConstructDemangledNameFromDWARF(), GetDeclContextContainingUIDFromDWARF(), ParseEnum(), ParseStructureLikeDIE(), ParseSubroutine(), ParseTypeFromDWARF(), ParseTypeModifier(), ResolveBlockDIE(), and ResolveNamespaceDIE().
|
protected |
Definition at line 3295 of file DWARFASTParserClang.cpp.
References GetCachedClangDeclContextForDIE(), GetDeclContextForBlock(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::TypeSystemClang::GetTranslationUnitDecl(), LinkDeclContextToDIE(), m_ast, ResolveImportedDeclarationDIE(), ResolveNamespaceDIE(), lldb_private::plugin::dwarf::SymbolFileDWARF::ResolveType(), and lldb_private::plugin::dwarf::DWARFBaseDIE::Tag().
Referenced by GetClangDeclContextContainingDIE(), GetDeclContextForUIDFromDWARF(), and ParseCXXMethod().
|
protected |
Definition at line 3190 of file DWARFASTParserClang.cpp.
References lldb_private::TypeSystemClang::CreateUsingDeclaration(), lldb_private::TypeSystemClang::CreateUsingDirectiveDeclaration(), lldb_private::TypeSystemClang::CreateVariableDeclaration(), lldb_private::TypeSystemClang::DeclContextGetAsDeclContext(), lldb_private::TypeSystemClang::DeclContextGetAsNamespaceDecl(), lldb_private::plugin::dwarf::DWARFDIE::GetAttributeValueAsReferenceDIE(), GetClangDeclForDIE(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetDecl(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetDeclContext(), lldb_private::plugin::dwarf::DWARFDIE::GetDIE(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::Type::GetForwardCompilerType(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetID(), lldb_private::plugin::dwarf::DWARFDIE::GetName(), lldb_private::CompilerDecl::GetOpaqueDecl(), GetOwningClangModule(), lldb_private::plugin::dwarf::DWARFDIE::GetParent(), lldb_private::ClangUtil::GetQualType(), lldb_private::plugin::dwarf::DWARFDIE::GetReferencedDIE(), lldb_private::plugin::dwarf::DWARFASTParser::GetTypeForDIE(), lldb_private::plugin::dwarf::DWARFBaseDIE::IsValid(), m_ast, m_die_to_decl, lldb_private::plugin::dwarf::DWARFBaseDIE::Tag(), and TagIsRecordType().
Referenced by EnsureAllDIEsInDeclContextHaveBeenParsed(), GetClangDeclForDIE(), and GetDeclForUIDFromDWARF().
|
overridevirtual |
Implements lldb_private::plugin::dwarf::DWARFASTParser.
Definition at line 2237 of file DWARFASTParserClang.cpp.
References lldb_private::TypeSystemClang::CreateDeclContext(), GetClangDeclContextContainingDIE(), and m_ast.
Referenced by GetDeclContextForBlock().
|
protected |
Definition at line 3417 of file DWARFASTParserClang.cpp.
References FindFirstChildWithAbstractOrigin(), GetContainingFunctionWithAbstractOrigin(), GetDeclContextContainingUIDFromDWARF(), lldb_private::CompilerDeclContext::GetOpaqueDeclContext(), ResolveBlockDIE(), and lldb_private::plugin::dwarf::DWARFBaseDIE::Tag().
Referenced by GetClangDeclContextForDIE().
|
overridevirtual |
Implements lldb_private::plugin::dwarf::DWARFASTParser.
Definition at line 2229 of file DWARFASTParserClang.cpp.
References lldb_private::TypeSystemClang::CreateDeclContext(), GetClangDeclContextForDIE(), and m_ast.
|
overridevirtual |
Implements lldb_private::plugin::dwarf::DWARFASTParser.
Definition at line 2221 of file DWARFASTParserClang.cpp.
References GetClangDeclForDIE(), lldb_private::TypeSystemClang::GetCompilerDecl(), and m_ast.
|
overridevirtual |
Returns the template parameters of a class DWARFDIE as a string.
This is mostly useful for -gsimple-template-names which omits template parameters from the DIE name and instead always adds template parameter children DIEs.
die | The struct/class DWARFDIE containing template parameters. |
Implements lldb_private::plugin::dwarf::DWARFASTParser.
Definition at line 824 of file DWARFASTParserClang.cpp.
References lldb_private::plugin::dwarf::DWARFDIE::GetName(), and lldb_private::plugin::dwarf::DWARFDIE::GetReferencedDIE().
Referenced by GetUniqueTypeNameAndDeclaration().
|
protected |
|
protected |
Definition at line 3343 of file DWARFASTParserClang.cpp.
References lldb_private::plugin::dwarf::DWARFBaseDIE::GetAttributeValueAsString(), lldb_private::plugin::dwarf::DWARFDIE::GetDIE(), lldb_private::TypeSystemClang::GetOrCreateClangModule(), GetOwningClangModule(), lldb_private::plugin::dwarf::DWARFDIE::GetParent(), lldb_private::plugin::dwarf::DWARFBaseDIE::IsValid(), m_ast, and m_die_to_module.
Referenced by GetClangDeclForDIE(), GetOwningClangModule(), ParseChildParameters(), ParseEnum(), ParseStructureLikeDIE(), ParseSubroutine(), ParseTypeFromClangModule(), ParseTypeModifier(), ResolveBlockDIE(), and ResolveNamespaceDIE().
|
protected |
Definition at line 1586 of file DWARFASTParserClang.cpp.
References lldb_private::Declaration::Clear(), lldb_private::plugin::dwarf::DWARFBaseDIE::Clear(), lldb_private::ConstString::GetCString(), GetDIEClassTemplateParams(), lldb_private::plugin::dwarf::DWARFDIE::GetName(), lldb_private::plugin::dwarf::DWARFDIE::GetParentDeclContextDIE(), lldb_private::ConstString::IsEmpty(), lldb_private::plugin::dwarf::DWARFBaseDIE::IsValid(), lldb_private::Language::LanguageIsCPlusPlus(), and lldb_private::plugin::dwarf::DWARFBaseDIE::Tag().
Referenced by MapDeclDIEToDefDIE(), and ParseStructureLikeDIE().
|
protected |
Definition at line 3544 of file DWARFASTParserClang.cpp.
References lldb_private::plugin::dwarf::DWARFDIE::GetDIE(), m_decl_ctx_to_die, and m_die_to_decl_ctx.
Referenced by CopyUniqueClassMethodTypes(), GetClangDeclContextForDIE(), MapDeclDIEToDefDIE(), ParseCXXMethod(), ParseEnum(), ParseObjCMethod(), ParseStructureLikeDIE(), ParseSubroutine(), ParseTypeFromClangModule(), ParseTypeFromDWARF(), ResolveBlockDIE(), ResolveImportedDeclarationDIE(), and ResolveNamespaceDIE().
|
protected |
void DWARFASTParserClang::MapDeclDIEToDefDIE | ( | const lldb_private::plugin::dwarf::DWARFDIE & | decl_die, |
const lldb_private::plugin::dwarf::DWARFDIE & | def_die | ||
) |
Definition at line 838 of file DWARFASTParserClang.cpp.
References ParsedDWARFTypeAttributes::byte_size, ParsedDWARFTypeAttributes::decl, lldb_private::plugin::dwarf::DW_TAG_value_to_name(), GetCachedClangDeclContextForDIE(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetCU(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetID(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetLanguage(), lldb_private::GetLog(), GetUniqueTypeNameAndDeclaration(), ParsedDWARFTypeAttributes::is_forward_declaration, LinkDeclContextToDIE(), LLDB_LOG, ParsedDWARFTypeAttributes::name, and lldb_private::plugin::dwarf::DWARFBaseDIE::Tag().
Referenced by lldb_private::plugin::dwarf::SymbolFileDWARF::CompleteType().
|
private |
Definition at line 1380 of file DWARFASTParserClang.cpp.
References ParsedDWARFTypeAttributes::bit_stride, ParsedDWARFTypeAttributes::byte_stride, lldb_private::TypeSystemClang::CreateArrayType(), DEBUG_PRINTF, ParsedDWARFTypeAttributes::decl, lldb_private::plugin::dwarf::DW_TAG_value_to_name(), lldb_private::Type::eEncodingIsUID, lldb_private::Type::GetByteSize(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::Type::GetForwardCompilerType(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetID(), lldb_private::ClangUtil::GetQualType(), ParsedDWARFTypeAttributes::is_vector, m_ast, lldb_private::plugin::dwarf::DWARFASTParser::ParseChildArrayInfo(), lldb_private::plugin::dwarf::DWARFFormValue::Reference(), lldb_private::TypeSystemClang::RequireCompleteType(), lldb_private::TypeSystemClang::SetMetadataAsUserID(), and ParsedDWARFTypeAttributes::type.
Referenced by ParseTypeFromDWARF().
|
protected |
Definition at line 2245 of file DWARFASTParserClang.cpp.
References lldb_private::TypeSystemClang::AddEnumerationValueToEnumerationType(), lldb_private::plugin::dwarf::DWARFFormValue::AsCString(), lldb_private::plugin::dwarf::DWARFAttributes::AttributeAtIndex(), lldb_private::plugin::dwarf::DWARFDIE::children(), lldb_private::plugin::dwarf::DWARFAttributes::CompileUnitAtIndex(), lldb_private::plugin::dwarf::DWARFAttributes::ExtractFormValueAtIndex(), lldb_private::plugin::dwarf::DWARFUnit::GetFile(), m_ast, lldb_private::Declaration::SetColumn(), lldb_private::Declaration::SetFile(), lldb_private::Declaration::SetLine(), lldb_private::plugin::dwarf::DWARFFormValue::Signed(), lldb_private::plugin::dwarf::DWARFAttributes::Size(), and lldb_private::plugin::dwarf::DWARFFormValue::Unsigned().
Referenced by CompleteEnumType(), and ParseEnum().
|
protected |
Definition at line 3005 of file DWARFASTParserClang.cpp.
References lldb_private::plugin::dwarf::DWARFDIE::children(), CreateStaticMemberVariable(), lldb_private::CompilerType::TypeSystemSPWrapper::dyn_cast_or_null(), lldb::eLanguageTypeRust, lldb_private::plugin::dwarf::DWARFBaseDIE::GetCU(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::plugin::dwarf::DWARFUnit::GetDWARFLanguageType(), lldb_private::ModuleChild::GetModule(), lldb_private::SymbolFileCommon::GetObjectFile(), lldb_private::CompilerType::GetTypeSystem(), ParseInheritance(), ParseObjCProperty(), ParseRustVariantPart(), ParseSingleMember(), and lldb_private::plugin::dwarf::DWARFBaseDIE::Tag().
Referenced by CompleteRecordType().
|
protected |
Definition at line 3068 of file DWARFASTParserClang.cpp.
References lldb_private::plugin::dwarf::DWARFFormValue::AsCString(), lldb_private::plugin::dwarf::DWARFAttributes::AttributeAtIndex(), lldb_private::plugin::dwarf::DWARFFormValue::Boolean(), lldb_private::plugin::dwarf::DWARFDIE::children(), lldb_private::TypeSystemClang::CreateParameterDeclaration(), DeclKindIsCXXClass(), lldb_private::Type::eEncodingIsConstUID, lldb_private::Type::eEncodingIsPointerUID, lldb_private::Type::eEncodingIsVolatileUID, lldb_private::plugin::dwarf::DWARFAttributes::ExtractFormValueAtIndex(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetAttributes(), lldb_private::Type::GetEncodingMask(), lldb_private::Type::GetForwardCompilerType(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetID(), GetOwningClangModule(), m_ast, lldb_private::plugin::dwarf::DWARFFormValue::Reference(), lldb_private::plugin::dwarf::DWARFDIE::ResolveTypeUID(), lldb_private::TypeSystemClang::SetMetadataAsUserID(), lldb_private::plugin::dwarf::DWARFAttributes::Size(), and lldb_private::plugin::dwarf::DWARFBaseDIE::Tag().
Referenced by ConstructDemangledNameFromDWARF(), and ParseSubroutine().
|
private |
Helper function called by ParseSubroutine when parsing C++ methods.
[in] | die | The DIE that represents the C++ method being parsed. |
[in] | clang_type | The CompilerType representing the function prototype of the C++ method being parsed. |
[in] | attrs | DWARF attributes for die. |
[in] | decl_ctx_die | The DIE representing the DeclContext of the C++ method being parsed. |
[in] | is_static | Is true iff we're parsing a static method. |
[out] | ignore_containing_context | Will get set to true if the caller should treat this C++ method as-if it was not a C++ method. Currently used as a hack to work around templated C++ methods causing class definitions to mismatch between CUs. |
Definition at line 1046 of file DWARFASTParserClang.cpp.
References ParsedDWARFTypeAttributes::abstract_origin, ParsedDWARFTypeAttributes::accessibility, lldb_private::TypeSystemClang::AddMethodToCXXRecordType(), CopyUniqueClassMethodTypes(), DIE_IS_BEING_PARSED, lldb::eAccessNone, lldb::eAccessPublic, GetClangASTImporter(), GetClangDeclContextForDIE(), lldb_private::ConstString::GetCString(), lldb_private::TypeSystemClang::GetDeclContextForType(), lldb_private::plugin::dwarf::DWARFDIE::GetDIE(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::Type::GetForwardCompilerType(), lldb_private::UserID::GetID(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetID(), lldb_private::GetLog(), lldb_private::plugin::dwarf::DWARFDIE::GetName(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetOffset(), lldb_private::CompilerType::GetOpaqueQualType(), lldb_private::plugin::dwarf::DWARFBaseDIE::HasChildren(), ParsedDWARFTypeAttributes::is_artificial, ParsedDWARFTypeAttributes::is_explicit, ParsedDWARFTypeAttributes::is_inline, ParsedDWARFTypeAttributes::is_virtual, IsClangModuleFwdDecl(), lldb_private::TypeSystemClang::IsCXXClassType(), lldb_private::plugin::dwarf::DWARFFormValue::IsValid(), LinkDeclContextToDIE(), LLDB_LOGF, m_ast, ParsedDWARFTypeAttributes::mangled_name, ParsedDWARFTypeAttributes::name, ParsedDWARFTypeAttributes::object_pointer, PrepareContextToReceiveMembers(), lldb_private::plugin::dwarf::DWARFFormValue::Reference(), lldb_private::TypeSystemClang::SetMetadata(), lldb_private::ClangASTMetadata::SetObjectPtrName(), lldb_private::ClangASTMetadata::SetUserID(), and ParsedDWARFTypeAttributes::specification.
Referenced by ParseSubroutine().
|
private |
Definition at line 866 of file DWARFASTParserClang.cpp.
References ParsedDWARFTypeAttributes::byte_size, lldb_private::TypeSystemClang::CompleteTagDeclarationDefinition(), lldb_private::TypeSystemClang::CreateEnumerationType(), ParsedDWARFTypeAttributes::decl, DIE_IS_BEING_PARSED, lldb_private::plugin::dwarf::DW_TAG_value_to_name(), lldb::eBasicTypeInt, lldb_private::Type::eEncodingIsUID, lldb_private::plugin::dwarf::SymbolFileDWARFDebugMap::FindDefinitionDIE(), lldb_private::TypeSystemClang::GetBasicType(), lldb_private::TypeSystemClang::GetBuiltinTypeForDWARFEncodingAndBitSize(), lldb_private::CompilerType::GetByteSize(), GetClangDeclContextContainingDIE(), lldb_private::ConstString::GetCString(), lldb_private::TypeSystemClang::GetDeclContextForType(), lldb_private::plugin::dwarf::DWARFDIE::GetDIE(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::Type::GetFullCompilerType(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetID(), lldb_private::GetLog(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetOffset(), GetOwningClangModule(), lldb_private::ConstString::GetStringRef(), lldb_private::plugin::dwarf::DWARFBaseDIE::HasChildren(), ParsedDWARFTypeAttributes::is_forward_declaration, ParsedDWARFTypeAttributes::is_scoped_enum, lldb_private::CompilerType::IsIntegerType(), lldb_private::plugin::dwarf::DWARFFormValue::IsValid(), LinkDeclContextToDIE(), m_ast, ParsedDWARFTypeAttributes::name, ParseChildEnumerators(), ParseTypeFromClangModule(), lldb_private::plugin::dwarf::DWARFFormValue::Reference(), lldb_private::TypeSystemClang::StartTagDeclarationDefinition(), lldb_private::plugin::dwarf::DWARFBaseDIE::Tag(), and ParsedDWARFTypeAttributes::type.
Referenced by ParseTypeFromDWARF().
|
overridevirtual |
Implements lldb_private::plugin::dwarf::DWARFASTParser.
Definition at line 2344 of file DWARFASTParserClang.cpp.
References lldb_private::CompileUnit::AddFunction(), ConstructDemangledNameFromDWARF(), DIE_IS_BEING_PARSED, lldb_private::plugin::dwarf::DWARFBaseDIE::GetCU(), lldb_private::plugin::dwarf::DWARFDIE::GetDIE(), lldb_private::plugin::dwarf::DWARFDIE::GetDIENamesAndRanges(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::plugin::dwarf::DWARFUnit::GetFile(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetID(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetLanguage(), lldb_private::plugin::dwarf::DWARFDIE::GetParent(), lldb_private::DWARFExpressionList::IsValid(), lldb_private::Language::LanguageIsCPlusPlus(), lldb_private::Language::LanguageIsObjC(), lldb_private::Mangled::SetValue(), and lldb_private::plugin::dwarf::DWARFBaseDIE::Tag().
|
private |
Parses a DW_TAG_inheritance DIE into a base/super class.
die | The DW_TAG_inheritance DIE to parse. |
parent_die | The parent DIE of the given DIE. |
class_clang_type | The C++/Objective-C class representing parent_die. For an Objective-C class this method sets the super class on success. For a C++ class this will not add the result as a base class. |
default_accessibility | The default accessibility that is given to base classes if they don't have an explicit accessibility set. |
module_sp | The current Module. |
base_classes | The list of C++ base classes that will be appended with the parsed base class on success. |
layout_info | The layout information that will be updated for C++ base classes with the base offset. |
Definition at line 1461 of file DWARFASTParserClang.cpp.
References lldb_private::plugin::dwarf::DWARFAttributes::AttributeAtIndex(), lldb_private::ClangASTImporter::LayoutInfo::base_offsets, lldb_private::plugin::dwarf::DWARFFormValue::Boolean(), lldb_private::CompilerType::TypeSystemSPWrapper::dyn_cast_or_null(), ExtractDataMemberLocation(), lldb_private::plugin::dwarf::DWARFAttributes::ExtractFormValueAtIndex(), lldb_private::plugin::dwarf::DWARFASTParser::GetAccessTypeFromDWARF(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetAttributes(), lldb_private::Type::GetFullCompilerType(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetOffset(), lldb_private::CompilerType::GetOpaqueQualType(), lldb_private::CompilerType::GetTypeSystem(), lldb_private::TypeSystemClang::IsObjCObjectOrInterfaceType(), lldb_private::plugin::dwarf::DWARFFormValue::Reference(), lldb_private::plugin::dwarf::DWARFDIE::ResolveTypeUID(), lldb_private::plugin::dwarf::DWARFAttributes::Size(), and lldb_private::plugin::dwarf::DWARFFormValue::Unsigned().
Referenced by ParseChildMembers().
|
private |
Helper function called by ParseSubroutine when parsing ObjC-methods.
[in] | objc_method | Name of the ObjC method being parsed. |
[in] | die | The DIE that represents the ObjC method being parsed. |
[in] | clang_type | The CompilerType representing the function prototype of the ObjC method being parsed. |
[in] | attrs | DWARF attributes for die. |
[in] | is_variadic | Is true iff we're parsing a variadic method. |
Definition at line 999 of file DWARFASTParserClang.cpp.
References lldb_private::TypeSystemClang::AddMethodToObjCObjectType(), lldb_private::plugin::dwarf::DW_TAG_value_to_name(), lldb_private::ObjCLanguage::MethodName::GetClassName(), lldb_private::ConstString::GetCString(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetID(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetOffset(), ParsedDWARFTypeAttributes::is_artificial, ParsedDWARFTypeAttributes::is_objc_direct_call, lldb_private::TypeSystemClang::IsObjCObjectOrInterfaceType(), LinkDeclContextToDIE(), m_ast, ParsedDWARFTypeAttributes::name, lldb_private::TypeSystemClang::SetMetadataAsUserID(), and lldb_private::plugin::dwarf::DWARFBaseDIE::Tag().
Referenced by ParseSubroutine().
|
private |
Parses a DW_TAG_APPLE_property DIE and appends the parsed data to the list of delayed Objective-C properties.
Note: The delayed property needs to be finalized to actually create the property declarations in the module AST.
die | The DW_TAG_APPLE_property DIE that will be parsed. |
parent_die | The parent DIE. |
class_clang_type | The Objective-C class that will contain the created property. |
delayed_properties | The list of delayed properties that the result will be appended to. |
Definition at line 2671 of file DWARFASTParserClang.cpp.
References DWARFASTParserClang::MemberAttributes::encoding_form, lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetID(), lldb_private::Type::GetLayoutCompilerType(), lldb_private::ModuleChild::GetModule(), lldb_private::SymbolFileCommon::GetObjectFile(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetOffset(), lldb_private::plugin::dwarf::DWARFFormValue::Reference(), lldb_private::plugin::dwarf::DWARFDIE::ResolveTypeUID(), lldb_private::ClangASTMetadata::SetUserID(), and lldb_private::plugin::dwarf::DWARFBaseDIE::Tag().
Referenced by ParseChildMembers().
|
private |
Definition at line 1434 of file DWARFASTParserClang.cpp.
References ParsedDWARFTypeAttributes::containing_type, lldb_private::TypeSystemClang::CreateMemberPointerType(), lldb_private::Type::eEncodingIsUID, lldb_private::CompilerType::GetByteSize(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::Type::GetForwardCompilerType(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetID(), LLDB_INVALID_UID, ParsedDWARFTypeAttributes::name, lldb_private::plugin::dwarf::DWARFFormValue::Reference(), and ParsedDWARFTypeAttributes::type.
Referenced by ParseTypeFromDWARF().
|
private |
Parses DW_TAG_variant_part DIE into a structure that encodes all variants Note that this is currently being emitted by rustc and not Clang.
die | DW_TAG_variant_part DIE to parse |
parent_die | The parent DW_TAG_structure_type to parse |
class_clang_type | The Rust struct representing parent_die. |
default_accesibility | The default accessibility that is given to base classes if they don't have an explicit accessibility set |
layout_info | The layout information that will be updated for |
Definition at line 3772 of file DWARFASTParserClang.cpp.
References lldb_private::TypeSystemClang::AddFieldToRecordType(), lldb_private::TypeSystemClang::CompleteTagDeclarationDefinition(), lldb_private::TypeSystemClang::CreateRecordType(), lldb::eAccessPublic, lldb::eLanguageTypeRust, lldb_private::ClangASTImporter::LayoutInfo::field_offsets, lldb_private::plugin::dwarf::DWARFBaseDIE::GetCU(), lldb_private::TypeSystemClang::GetDeclContextForType(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetLanguage(), lldb_private::ModuleChild::GetModule(), lldb_private::SymbolFileCommon::GetObjectFile(), lldb_private::CompilerType::GetTypeName(), m_ast, lldb_private::plugin::dwarf::DWARFDIE::ResolveTypeUID(), lldb_private::TypeSystemClang::SetIsPacked(), lldb_private::TypeSystemClang::StartTagDeclarationDefinition(), and lldb_private::plugin::dwarf::DWARFBaseDIE::Tag().
Referenced by ParseChildMembers().
|
private |
Definition at line 2802 of file DWARFASTParserClang.cpp.
References DWARFASTParserClang::MemberAttributes::accessibility, lldb_private::TypeSystemClang::AddFieldToRecordType(), AddUnnamedBitfieldToRecordTypeIfNeeded(), DWARFASTParserClang::FieldInfo::bit_offset, DWARFASTParserClang::MemberAttributes::bit_offset, DWARFASTParserClang::FieldInfo::bit_size, DWARFASTParserClang::MemberAttributes::bit_size, DWARFASTParserClang::MemberAttributes::byte_size, lldb_private::TypeSystemClang::CreateArrayType(), CreateStaticMemberVariable(), DWARFASTParserClang::MemberAttributes::data_bit_offset, lldb_private::plugin::dwarf::DW_TAG_value_to_name(), lldb::eAccessNone, lldb::eByteOrderLittle, DWARFASTParserClang::MemberAttributes::encoding_form, lldb_private::ClangASTImporter::LayoutInfo::field_offsets, lldb_private::plugin::dwarf::DWARFBaseDIE::GetAttributeValueAsUnsigned(), lldb_private::ObjectFile::GetByteOrder(), lldb_private::Type::GetByteSize(), lldb_private::CompilerType::GetCompleteType(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetCU(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), DWARFASTParserClang::FieldInfo::GetEffectiveFieldEnd(), DWARFASTParserClang::FieldInfo::GetFieldEnd(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetID(), lldb_private::Type::GetLayoutCompilerType(), lldb_private::ModuleChild::GetModule(), lldb_private::SymbolFileCommon::GetObjectFile(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetOffset(), GetUnitName(), DWARFASTParserClang::MemberAttributes::is_artificial, DWARFASTParserClang::FieldInfo::is_bitfield, DWARFASTParserClang::MemberAttributes::is_declaration, lldb_private::CompilerType::IsArrayType(), DWARFASTParserClang::FieldInfo::IsBitfield(), lldb_private::CompilerType::IsCompleteType(), lldb_private::TypeSystemClang::IsObjCObjectOrInterfaceType(), m_ast, DWARFASTParserClang::MemberAttributes::member_byte_offset, DWARFASTParserClang::MemberAttributes::name, DWARFASTParserClang::FieldInfo::NextBitfieldOffsetIsValid(), lldb_private::plugin::dwarf::DWARFFormValue::Reference(), lldb_private::TypeSystemClang::RequireCompleteType(), lldb_private::plugin::dwarf::DWARFDIE::ResolveTypeUID(), DWARFASTParserClang::FieldInfo::SetEffectiveFieldEnd(), DWARFASTParserClang::FieldInfo::SetIsArtificial(), DWARFASTParserClang::FieldInfo::SetIsBitfield(), lldb_private::TypeSystemClang::SetMetadataAsUserID(), ShouldIgnoreArtificialField(), lldb_private::plugin::dwarf::DWARFUnit::Supports_unnamed_objc_bitfields(), lldb_private::plugin::dwarf::DWARFBaseDIE::Tag(), UINT32_MAX, and UINT64_MAX.
Referenced by ParseChildMembers().
|
protected |
Parse a structure, class, or union type DIE.
Definition at line 1646 of file DWARFASTParserClang.cpp.
References ParsedDWARFTypeAttributes::accessibility, lldb_private::ConstString::AsCString(), ParsedDWARFTypeAttributes::byte_size, ParsedDWARFTypeAttributes::calling_convention, ParsedDWARFTypeAttributes::class_language, lldb_private::TypeSystemClang::CreateClassTemplateSpecializationDecl(), lldb_private::TypeSystemClang::CreateClassTemplateSpecializationType(), lldb_private::TypeSystemClang::CreateRecordType(), DEBUG_PRINTF, ParsedDWARFTypeAttributes::decl, DeclKindIsCXXClass(), lldb_private::plugin::dwarf::DW_TAG_value_to_name(), lldb::eAccessNone, lldb::eAccessPrivate, lldb::eAccessPublic, lldb_private::Type::eEncodingIsUID, lldb::eLanguageTypeObjC, lldb::eLanguageTypeObjC_plus_plus, ParsedDWARFTypeAttributes::exports_symbols, lldb_private::plugin::dwarf::SymbolFileDWARFDebugMap::FindCompleteObjCDefinitionTypeForDIE(), lldb_private::TypeSystemClang::GetAsCXXRecordDecl(), GetCachedClangDeclContextForDIE(), GetClangASTImporter(), GetClangDeclContextContainingDIE(), lldb_private::ConstString::GetCString(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetCU(), lldb_private::TypeSystemClang::GetDeclContextForType(), lldb_private::plugin::dwarf::DWARFDIE::GetDIE(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDIERef(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetID(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetLanguage(), lldb_private::GetLog(), lldb_private::CompilerType::GetOpaqueQualType(), GetOwningClangModule(), GetUniqueTypeNameAndDeclaration(), ParsedDWARFTypeAttributes::is_complete_objc_class, ParsedDWARFTypeAttributes::is_forward_declaration, LinkDeclContextToDIE(), LLDB_INVALID_UID, m_ast, ParsedDWARFTypeAttributes::name, lldb_private::TypeSystemClang::ParseClassTemplateDecl(), ParseTemplateParameterInfos(), ParseTypeFromClangModule(), PrepareContextToReceiveMembers(), lldb_private::ClangUtil::RemoveFastQualifiers(), lldb_private::TypeSystemClang::SetHasExternalStorage(), lldb_private::ClangASTMetadata::SetIsDynamicCXXType(), lldb_private::TypeSystemClang::SetMetadata(), lldb_private::ClangASTMetadata::SetUserID(), lldb_private::plugin::dwarf::DWARFBaseDIE::Tag(), and UNUSED_IF_ASSERT_DISABLED.
Referenced by ParseTypeFromDWARF().
|
private |
Definition at line 1178 of file DWARFASTParserClang.cpp.
References ParsedDWARFTypeAttributes::abstract_origin, ConvertDWARFCallingConventionToClang(), lldb_private::ObjCLanguage::MethodName::Create(), lldb_private::TypeSystemClang::CreateFunctionDeclaration(), lldb_private::TypeSystemClang::CreateFunctionTemplateDecl(), lldb_private::TypeSystemClang::CreateFunctionTemplateSpecializationInfo(), lldb_private::TypeSystemClang::CreateFunctionType(), DEBUG_PRINTF, ParsedDWARFTypeAttributes::decl, DeclKindIsCXXClass(), lldb_private::plugin::dwarf::DW_TAG_value_to_name(), lldb::eBasicTypeVoid, lldb_private::Type::eEncodingIsUID, lldb_private::TypeSystemClang::getASTContext(), lldb_private::TypeSystemClang::GetBasicType(), GetCachedClangDeclContextForDIE(), GetClangDeclContextContainingDIE(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::Type::GetForwardCompilerType(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetID(), lldb_private::GetLog(), lldb_private::plugin::dwarf::DWARFDIE::GetName(), GetOwningClangModule(), lldb_private::ConstString::GetStringRef(), lldb_private::TypeSystemClang::GetTranslationUnitDecl(), lldb_private::plugin::dwarf::DWARFBaseDIE::HasChildren(), ParsedDWARFTypeAttributes::is_inline, lldb_private::plugin::dwarf::DWARFFormValue::IsValid(), LinkDeclContextToDIE(), LLDB_INVALID_UID, LLDB_LOGF, lldbassert, m_ast, ParsedDWARFTypeAttributes::mangled_name, ParsedDWARFTypeAttributes::name, ParsedDWARFTypeAttributes::object_pointer, ParseChildParameters(), ParseCXXMethod(), ParseObjCMethod(), ParseTemplateParameterInfos(), ParsedDWARFTypeAttributes::ref_qual, lldb_private::plugin::dwarf::DWARFFormValue::Reference(), lldb_private::TypeSystemClang::SetFunctionParameters(), lldb_private::TypeSystemClang::SetMetadata(), lldb_private::ClangASTMetadata::SetObjectPtrName(), lldb_private::ClangASTMetadata::SetUserID(), ParsedDWARFTypeAttributes::storage, lldb_private::plugin::dwarf::DWARFBaseDIE::Tag(), and ParsedDWARFTypeAttributes::type.
Referenced by ParseTypeFromDWARF().
|
protected |
Definition at line 1911 of file DWARFASTParserClang.cpp.
References lldb_private::plugin::dwarf::DWARFFormValue::AsCString(), lldb_private::plugin::dwarf::DWARFAttributes::AttributeAtIndex(), lldb_private::plugin::dwarf::DWARFFormValue::Boolean(), lldb_private::plugin::dwarf::DWARFDIE::children(), lldb_private::TypeSystemClang::CreateTemplateTemplateParmDecl(), lldb::eBasicTypeVoid, lldb_private::plugin::dwarf::DWARFAttributes::ExtractFormValueAtIndex(), lldb_private::TypeSystemClang::getASTContext(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetAttributes(), lldb_private::TypeSystemClang::GetBasicType(), lldb_private::CompilerType::GetBitSize(), lldb_private::Type::GetForwardCompilerType(), lldb_private::plugin::dwarf::DWARFDIE::GetName(), lldb_private::TypeSystemClang::TemplateParameterInfos::GetParameterPack(), lldb_private::ClangUtil::GetQualType(), lldb_private::TypeSystemClang::TemplateParameterInfos::InsertArg(), lldb_private::CompilerType::IsIntegerOrEnumerationType(), m_ast, ParseTemplateDIE(), lldb_private::plugin::dwarf::DWARFFormValue::Reference(), lldb_private::plugin::dwarf::DWARFDIE::ResolveTypeUID(), lldb_private::TypeSystemClang::TemplateParameterInfos::SetPackName(), lldb_private::TypeSystemClang::TemplateParameterInfos::SetParameterPack(), lldb_private::plugin::dwarf::DWARFAttributes::Size(), lldb_private::plugin::dwarf::DWARFBaseDIE::Tag(), and lldb_private::plugin::dwarf::DWARFFormValue::Unsigned().
Referenced by ParseTemplateDIE(), and ParseTemplateParameterInfos().
|
protected |
Definition at line 2025 of file DWARFASTParserClang.cpp.
References lldb_private::plugin::dwarf::DWARFDIE::children(), lldb_private::TypeSystemClang::TemplateParameterInfos::hasParameterPack(), lldb_private::TypeSystemClang::TemplateParameterInfos::IsEmpty(), and ParseTemplateDIE().
Referenced by ParseStructureLikeDIE(), and ParseSubroutine().
|
protected |
Follow Clang Module Skeleton CU references to find a type definition.
Definition at line 162 of file DWARFASTParserClang.cpp.
References lldb_private::TypeQuery::AddLanguage(), lldb_private::TypeResults::AlreadySearched(), lldb_private::SymbolContext::comp_unit, lldb_private::ClangASTImporter::CopyType(), lldb_private::Type::eEncodingInvalid, lldb_private::TypeMap::FirstType(), lldb_private::TypeSystemClang::GetAsTagDecl(), GetCachedClangDeclContextForDIE(), GetClangASTImporter(), GetContainingClangModule(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetCU(), lldb_private::plugin::dwarf::DWARFDIE::GetDeclContext(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetID(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetLanguageFamily(), GetOwningClangModule(), lldb_private::ClangUtil::GetQualType(), lldb_private::TypeResults::GetSearchedSymbolFiles(), lldb_private::plugin::dwarf::DWARFUnit::GetSymbolFileDWARF(), lldb_private::TypeResults::GetTypeMap(), lldb_private::CompilerType::IsDefined(), LinkDeclContextToDIE(), LLDB_INVALID_UID, m_ast, and lldb_private::ClangASTImporter::RequireCompleteType().
Referenced by ParseEnum(), ParseStructureLikeDIE(), and ParseTypeModifier().
|
overridevirtual |
Implements lldb_private::plugin::dwarf::DWARFASTParser.
Definition at line 433 of file DWARFASTParserClang.cpp.
References DIE_IS_BEING_PARSED, lldb_private::plugin::dwarf::DW_TAG_value_to_name(), GetCachedClangDeclContextForDIE(), GetClangDeclContextContainingDIE(), lldb_private::plugin::dwarf::DWARFDIE::GetDIE(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::GetLog(), lldb_private::plugin::dwarf::DWARFDIE::GetName(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetOffset(), LinkDeclContextToDIE(), ParseArrayType(), ParseEnum(), ParsePointerToMemberType(), ParseStructureLikeDIE(), ParseSubroutine(), ParseTypeFromDWARF(), ParseTypeModifier(), lldb_private::plugin::dwarf::DWARFFormValue::Reference(), ParsedDWARFTypeAttributes::signature, lldb_private::plugin::dwarf::DWARFBaseDIE::Tag(), and UpdateSymbolContextScopeForType().
Referenced by ParseTypeFromDWARF(), and ParseTypeModifier().
|
private |
Definition at line 598 of file DWARFASTParserClang.cpp.
References ParsedDWARFTypeAttributes::byte_size, lldb_private::plugin::dwarf::DWARFDIE::children(), lldb_private::plugin::dwarf::DWARFFormValue::Clear(), lldb_private::TypeSystemClang::CreateBlockPointerType(), DEBUG_PRINTF, ParsedDWARFTypeAttributes::decl, lldb_private::plugin::dwarf::DW_TAG_value_to_name(), lldb::eBasicTypeNullPtr, lldb::eBasicTypeObjCClass, lldb::eBasicTypeObjCID, lldb::eBasicTypeObjCSel, lldb_private::Type::eEncodingIsAtomicUID, lldb_private::Type::eEncodingIsConstUID, lldb_private::Type::eEncodingIsLLVMPtrAuthUID, lldb_private::Type::eEncodingIsLValueReferenceUID, lldb_private::Type::eEncodingIsPointerUID, lldb_private::Type::eEncodingIsRestrictUID, lldb_private::Type::eEncodingIsRValueReferenceUID, lldb_private::Type::eEncodingIsTypedefUID, lldb_private::Type::eEncodingIsUID, lldb_private::Type::eEncodingIsVolatileUID, lldb::eLanguageTypeObjC, lldb::eLanguageTypeObjC_plus_plus, ParsedDWARFTypeAttributes::encoding, lldb_private::plugin::dwarf::DWARFBaseDIE::GetAttributeValueAsUnsigned(), lldb_private::TypeSystemClang::GetBasicType(), lldb_private::TypeSystemClang::GetBuiltinTypeForDWARFEncodingAndBitSize(), GetClangASTImporter(), GetClangDeclContextContainingDIE(), lldb_private::ConstString::GetCString(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetCU(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetID(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetLanguage(), lldb_private::GetLog(), lldb_private::plugin::dwarf::DWARFDIE::GetName(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetOffset(), GetOwningClangModule(), GetPtrAuthMofidierPayload(), lldb_private::plugin::dwarf::DWARFDIE::GetReferencedDIE(), lldb_private::ConstString::GetStringRef(), lldb_private::plugin::dwarf::DWARFFormValue::IsValid(), m_ast, ParsedDWARFTypeAttributes::name, ParseTypeFromClangModule(), ParseTypeFromDWARF(), PrepareContextToReceiveMembers(), lldb_private::plugin::dwarf::DWARFFormValue::Reference(), lldb_private::plugin::dwarf::DWARFBaseDIE::Tag(), and ParsedDWARFTypeAttributes::type.
Referenced by ParseTypeFromDWARF().
|
protected |
Definition at line 3431 of file DWARFASTParserClang.cpp.
References lldb_private::TypeSystemClang::CreateBlockDeclaration(), GetClangDeclContextContainingDIE(), lldb_private::plugin::dwarf::DWARFDIE::GetDIE(), GetOwningClangModule(), LinkDeclContextToDIE(), m_ast, m_die_to_decl_ctx, and lldb_private::plugin::dwarf::DWARFBaseDIE::Tag().
Referenced by GetDeclContextForBlock().
|
protected |
Returns the namespace decl that a DW_TAG_imported_declaration imports.
[in] | die | The import declaration to resolve. If the DIE is not a DW_TAG_imported_declaration the behaviour is undefined. |
Definition at line 3481 of file DWARFASTParserClang.cpp.
References lldb_private::plugin::dwarf::DWARFDIE::GetAttributeValueAsReferenceDIE(), lldb_private::plugin::dwarf::DWARFDIE::GetDIE(), LinkDeclContextToDIE(), m_die_to_decl_ctx, ResolveImportedDeclarationDIE(), ResolveNamespaceDIE(), and lldb_private::plugin::dwarf::DWARFBaseDIE::Tag().
Referenced by GetClangDeclContextForDIE(), and ResolveImportedDeclarationDIE().
|
protected |
Definition at line 3453 of file DWARFASTParserClang.cpp.
References lldb_private::plugin::dwarf::DWARFBaseDIE::GetAttributeValueAsUnsigned(), GetClangDeclContextContainingDIE(), lldb_private::plugin::dwarf::DWARFDIE::GetDIE(), lldb_private::plugin::dwarf::DWARFDIE::GetName(), GetOwningClangModule(), lldb_private::TypeSystemClang::GetUniqueNamespaceDeclaration(), LinkDeclContextToDIE(), m_ast, m_die_to_decl_ctx, and lldb_private::plugin::dwarf::DWARFBaseDIE::Tag().
Referenced by GetClangDeclContextForDIE(), and ResolveImportedDeclarationDIE().
|
private |
Returns 'true' if we should create an unnamed bitfield and add it to the parser's current AST.
[in] | last_field_info | FieldInfo of the previous DW_TAG_member we parsed. |
[in] | last_field_end | Offset (in bits) where the last parsed field ended. |
[in] | this_field_info | FieldInfo of the current DW_TAG_member being parsed. |
[in] | layout_info | Layout information of all decls parsed by the current parser. |
Definition at line 3703 of file DWARFASTParserClang.cpp.
References lldb_private::ClangASTImporter::LayoutInfo::base_offsets, DWARFASTParserClang::FieldInfo::bit_offset, DWARFASTParserClang::FieldInfo::bit_size, and DWARFASTParserClang::FieldInfo::IsArtificial().
Referenced by AddUnnamedBitfieldToRecordTypeIfNeeded().
|
protected |
If type_sp
is valid, calculate and set its symbol context scope, and update the type list for its backing symbol file.
Returns type_sp
.
Definition at line 1560 of file DWARFASTParserClang.cpp.
References lldb_private::SymbolContext::comp_unit, lldb_private::Block::FindBlockByID(), lldb_private::SymbolContext::function, lldb_private::Function::GetBlock(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetID(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetParentSymbolContextDIE(), lldb_private::SymbolContext::module_sp, and lldb_private::plugin::dwarf::DWARFBaseDIE::Tag().
Referenced by ParseTypeFromDWARF().
|
protected |
Definition at line 136 of file DWARFASTParserClang.h.
Referenced by AddUnnamedBitfieldToRecordTypeIfNeeded(), CompleteRecordType(), CompleteTypeFromDWARF(), GetClangDeclContextContainingDIE(), GetClangDeclContextForDIE(), GetClangDeclForDIE(), GetDeclContextContainingUIDFromDWARF(), GetDeclContextForUIDFromDWARF(), GetDeclForUIDFromDWARF(), GetOwningClangModule(), ParseArrayType(), ParseChildEnumerators(), ParseChildParameters(), ParseCXXMethod(), ParseEnum(), ParseObjCMethod(), ParseRustVariantPart(), ParseSingleMember(), ParseStructureLikeDIE(), ParseSubroutine(), ParseTemplateDIE(), ParseTypeFromClangModule(), ParseTypeModifier(), ResolveBlockDIE(), and ResolveNamespaceDIE().
|
protected |
Definition at line 141 of file DWARFASTParserClang.h.
Referenced by GetClangASTImporter().
|
protected |
Definition at line 139 of file DWARFASTParserClang.h.
Referenced by EnsureAllDIEsInDeclContextHaveBeenParsed(), and LinkDeclContextToDIE().
|
protected |
Definition at line 137 of file DWARFASTParserClang.h.
Referenced by GetClangDeclForDIE().
|
protected |
Definition at line 138 of file DWARFASTParserClang.h.
Referenced by CopyUniqueClassMethodTypes(), GetCachedClangDeclContextForDIE(), LinkDeclContextToDIE(), ResolveBlockDIE(), ResolveImportedDeclarationDIE(), and ResolveNamespaceDIE().
|
protected |
Definition at line 140 of file DWARFASTParserClang.h.
Referenced by GetOwningClangModule().