LLDB mainline
Classes | Public Member Functions | Protected Member Functions | Private Member Functions | List of all members
DWARFASTParserClang Class Reference

#include <DWARFASTParserClang.h>

Inheritance diagram for DWARFASTParserClang:
Inheritance graph
[legend]

Classes

class  DelayedAddObjCClassProperty
 
struct  FieldInfo
 

Public Member Functions

 DWARFASTParserClang (lldb_private::TypeSystemClang &ast)
 
 ~DWARFASTParserClang () override
 
lldb::TypeSP ParseTypeFromDWARF (const lldb_private::SymbolContext &sc, const DWARFDIE &die, bool *type_is_new_ptr) override
 
lldb_private::ConstString ConstructDemangledNameFromDWARF (const DWARFDIE &die) override
 
lldb_private::FunctionParseFunctionFromDWARF (lldb_private::CompileUnit &comp_unit, const DWARFDIE &die, const lldb_private::AddressRange &func_range) override
 
bool CompleteTypeFromDWARF (const DWARFDIE &die, lldb_private::Type *type, lldb_private::CompilerType &compiler_type) override
 
lldb_private::CompilerDecl GetDeclForUIDFromDWARF (const DWARFDIE &die) override
 
void EnsureAllDIEsInDeclContextHaveBeenParsed (lldb_private::CompilerDeclContext decl_context) override
 
lldb_private::CompilerDeclContext GetDeclContextForUIDFromDWARF (const DWARFDIE &die) override
 
lldb_private::CompilerDeclContext GetDeclContextContainingUIDFromDWARF (const DWARFDIE &die) override
 
lldb_private::ClangASTImporterGetClangASTImporter ()
 
llvm::Expected< llvm::APInt > ExtractIntFromFormValue (const lldb_private::CompilerType &int_type, const DWARFFormValue &form_value) const
 Extracts an value for a given Clang integer type from a DWARFFormValue.
 
lldb_private::ConstString GetDIEClassTemplateParams (const DWARFDIE &die) override
 Returns the template parameters of a class DWARFDIE as a string.
 
- Public Member Functions inherited from DWARFASTParser
virtual ~DWARFASTParser ()=default
 
virtual lldb::TypeSP ParseTypeFromDWARF (const lldb_private::SymbolContext &sc, const DWARFDIE &die, bool *type_is_new_ptr)=0
 
virtual lldb_private::ConstString ConstructDemangledNameFromDWARF (const DWARFDIE &die)=0
 
virtual lldb_private::FunctionParseFunctionFromDWARF (lldb_private::CompileUnit &comp_unit, const DWARFDIE &die, const lldb_private::AddressRange &range)=0
 
virtual bool CompleteTypeFromDWARF (const DWARFDIE &die, lldb_private::Type *type, lldb_private::CompilerType &compiler_type)=0
 
virtual lldb_private::CompilerDecl GetDeclForUIDFromDWARF (const DWARFDIE &die)=0
 
virtual lldb_private::CompilerDeclContext GetDeclContextForUIDFromDWARF (const DWARFDIE &die)=0
 
virtual lldb_private::CompilerDeclContext GetDeclContextContainingUIDFromDWARF (const DWARFDIE &die)=0
 
virtual void EnsureAllDIEsInDeclContextHaveBeenParsed (lldb_private::CompilerDeclContext decl_context)=0
 
virtual lldb_private::ConstString GetDIEClassTemplateParams (const DWARFDIE &die)=0
 

Protected Member Functions

clang::DeclContext * GetDeclContextForBlock (const DWARFDIE &die)
 
clang::BlockDecl * ResolveBlockDIE (const DWARFDIE &die)
 
clang::NamespaceDecl * ResolveNamespaceDIE (const DWARFDIE &die)
 
clang::NamespaceDecl * ResolveImportedDeclarationDIE (const DWARFDIE &die)
 Returns the namespace decl that a DW_TAG_imported_declaration imports.
 
bool ParseTemplateDIE (const DWARFDIE &die, lldb_private::TypeSystemClang::TemplateParameterInfos &template_param_infos)
 
bool ParseTemplateParameterInfos (const DWARFDIE &parent_die, lldb_private::TypeSystemClang::TemplateParameterInfos &template_param_infos)
 
std::string GetCPlusPlusQualifiedName (const DWARFDIE &die)
 
bool ParseChildMembers (const DWARFDIE &die, lldb_private::CompilerType &class_compiler_type, std::vector< std::unique_ptr< clang::CXXBaseSpecifier > > &base_classes, std::vector< DWARFDIE > &member_function_dies, DelayedPropertyList &delayed_properties, const lldb::AccessType default_accessibility, lldb_private::ClangASTImporter::LayoutInfo &layout_info)
 
size_t ParseChildParameters (clang::DeclContext *containing_decl_ctx, const DWARFDIE &parent_die, bool skip_artificial, bool &is_static, bool &is_variadic, bool &has_template_params, std::vector< lldb_private::CompilerType > &function_args, std::vector< clang::ParmVarDecl * > &function_param_decls, unsigned &type_quals)
 
size_t ParseChildEnumerators (lldb_private::CompilerType &compiler_type, bool is_signed, uint32_t enumerator_byte_size, const DWARFDIE &parent_die)
 
lldb::TypeSP ParseStructureLikeDIE (const lldb_private::SymbolContext &sc, const DWARFDIE &die, ParsedDWARFTypeAttributes &attrs)
 Parse a structure, class, or union type DIE.
 
lldb_private::TypeGetTypeForDIE (const DWARFDIE &die)
 
clang::Decl * GetClangDeclForDIE (const DWARFDIE &die)
 
clang::DeclContext * GetClangDeclContextForDIE (const DWARFDIE &die)
 
clang::DeclContext * GetClangDeclContextContainingDIE (const DWARFDIE &die, DWARFDIE *decl_ctx_die)
 
lldb_private::OptionalClangModuleID GetOwningClangModule (const DWARFDIE &die)
 
bool CopyUniqueClassMethodTypes (const DWARFDIE &src_class_die, const DWARFDIE &dst_class_die, lldb_private::Type *class_type, std::vector< DWARFDIE > &failures)
 
clang::DeclContext * GetCachedClangDeclContextForDIE (const DWARFDIE &die)
 
void LinkDeclContextToDIE (clang::DeclContext *decl_ctx, const DWARFDIE &die)
 
void LinkDeclToDIE (clang::Decl *decl, const DWARFDIE &die)
 
lldb::TypeSP UpdateSymbolContextScopeForType (const lldb_private::SymbolContext &sc, const DWARFDIE &die, lldb::TypeSP type_sp)
 If type_sp is valid, calculate and set its symbol context scope, and update the type list for its backing symbol file.
 
lldb::TypeSP ParseTypeFromClangModule (const lldb_private::SymbolContext &sc, const DWARFDIE &die, lldb_private::Log *log)
 Follow Clang Module Skeleton CU references to find a type definition.
 
lldb::ModuleSP GetModuleForType (const DWARFDIE &die)
 

Private Member Functions

bool ShouldCreateUnnamedBitfield (FieldInfo const &last_field_info, uint64_t last_field_end, FieldInfo const &this_field_info, lldb_private::ClangASTImporter::LayoutInfo const &layout_info) const
 Returns 'true' if we should create an unnamed bitfield and add it to the parser's current AST.
 
void ParseObjCProperty (const DWARFDIE &die, const DWARFDIE &parent_die, const lldb_private::CompilerType &class_clang_type, DelayedPropertyList &delayed_properties)
 Parses a DW_TAG_APPLE_property DIE and appends the parsed data to the list of delayed Objective-C properties.
 
void ParseSingleMember (const DWARFDIE &die, const DWARFDIE &parent_die, const lldb_private::CompilerType &class_clang_type, lldb::AccessType default_accessibility, lldb_private::ClangASTImporter::LayoutInfo &layout_info, FieldInfo &last_field_info)
 
bool CompleteRecordType (const DWARFDIE &die, lldb_private::Type *type, lldb_private::CompilerType &clang_type)
 
bool CompleteEnumType (const DWARFDIE &die, lldb_private::Type *type, lldb_private::CompilerType &clang_type)
 
lldb::TypeSP ParseTypeModifier (const lldb_private::SymbolContext &sc, const DWARFDIE &die, ParsedDWARFTypeAttributes &attrs)
 
lldb::TypeSP ParseEnum (const lldb_private::SymbolContext &sc, const DWARFDIE &die, ParsedDWARFTypeAttributes &attrs)
 
lldb::TypeSP ParseSubroutine (const DWARFDIE &die, ParsedDWARFTypeAttributes &attrs)
 
lldb::TypeSP ParseArrayType (const DWARFDIE &die, const ParsedDWARFTypeAttributes &attrs)
 
lldb::TypeSP ParsePointerToMemberType (const DWARFDIE &die, const ParsedDWARFTypeAttributes &attrs)
 
void ParseInheritance (const DWARFDIE &die, const DWARFDIE &parent_die, const lldb_private::CompilerType class_clang_type, const lldb::AccessType default_accessibility, const lldb::ModuleSP &module_sp, std::vector< std::unique_ptr< clang::CXXBaseSpecifier > > &base_classes, lldb_private::ClangASTImporter::LayoutInfo &layout_info)
 Parses a DW_TAG_inheritance DIE into a base/super class.
 
void ParseRustVariantPart (DWARFDIE &die, const DWARFDIE &parent_die, lldb_private::CompilerType &class_clang_type, const lldb::AccessType default_accesibility, lldb_private::ClangASTImporter::LayoutInfo &layout_info)
 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.
 
typedef std::vector< DelayedAddObjCClassPropertyDelayedPropertyList
 
typedef llvm::DenseMap< const DWARFDebugInfoEntry *, clang::DeclContext * > DIEToDeclContextMap
 
typedef std::multimap< const clang::DeclContext *, const DWARFDIEDeclContextToDIEMap
 
typedef llvm::DenseMap< const DWARFDebugInfoEntry *, lldb_private::OptionalClangModuleIDDIEToModuleMap
 
typedef llvm::DenseMap< const DWARFDebugInfoEntry *, clang::Decl * > DIEToDeclMap
 
lldb_private::TypeSystemClangm_ast
 
DIEToDeclMap m_die_to_decl
 
DIEToDeclContextMap m_die_to_decl_ctx
 
DeclContextToDIEMap m_decl_ctx_to_die
 
DIEToModuleMap m_die_to_module
 
std::unique_ptr< lldb_private::ClangASTImporterm_clang_ast_importer_up
 

Additional Inherited Members

- Static Public Member Functions inherited from DWARFASTParser
static std::optional< lldb_private::SymbolFile::ArrayInfoParseChildArrayInfo (const DWARFDIE &parent_die, const lldb_private::ExecutionContext *exe_ctx=nullptr)
 
static lldb::AccessType GetAccessTypeFromDWARF (uint32_t dwarf_accessibility)
 

Detailed Description

Definition at line 39 of file DWARFASTParserClang.h.

Member Typedef Documentation

◆ DeclContextToDIEMap

typedef std::multimap<const clang::DeclContext *, const DWARFDIE> DWARFASTParserClang::DeclContextToDIEMap
protected

Definition at line 114 of file DWARFASTParserClang.h.

◆ DelayedPropertyList

Definition at line 109 of file DWARFASTParserClang.h.

◆ DIEToDeclContextMap

typedef llvm::DenseMap<const DWARFDebugInfoEntry *, clang::DeclContext *> DWARFASTParserClang::DIEToDeclContextMap
protected

Definition at line 112 of file DWARFASTParserClang.h.

◆ DIEToDeclMap

typedef llvm::DenseMap<const DWARFDebugInfoEntry *, clang::Decl *> DWARFASTParserClang::DIEToDeclMap
protected

Definition at line 119 of file DWARFASTParserClang.h.

◆ DIEToModuleMap

Definition at line 117 of file DWARFASTParserClang.h.

Constructor & Destructor Documentation

◆ DWARFASTParserClang()

DWARFASTParserClang::DWARFASTParserClang ( lldb_private::TypeSystemClang ast)

Definition at line 63 of file DWARFASTParserClang.cpp.

◆ ~DWARFASTParserClang()

DWARFASTParserClang::~DWARFASTParserClang ( )
overridedefault

Member Function Documentation

◆ CompleteEnumType()

bool DWARFASTParserClang::CompleteEnumType ( const DWARFDIE die,
lldb_private::Type type,
lldb_private::CompilerType clang_type 
)
private

◆ CompleteRecordType()

bool DWARFASTParserClang::CompleteRecordType ( const DWARFDIE die,
lldb_private::Type type,
lldb_private::CompilerType clang_type 
)
private

◆ CompleteTypeFromDWARF()

bool DWARFASTParserClang::CompleteTypeFromDWARF ( const DWARFDIE die,
lldb_private::Type type,
lldb_private::CompilerType compiler_type 
)
overridevirtual

◆ ConstructDemangledNameFromDWARF()

ConstString DWARFASTParserClang::ConstructDemangledNameFromDWARF ( const DWARFDIE die)
overridevirtual

◆ CopyUniqueClassMethodTypes()

bool DWARFASTParserClang::CopyUniqueClassMethodTypes ( const DWARFDIE src_class_die,
const DWARFDIE dst_class_die,
lldb_private::Type class_type,
std::vector< DWARFDIE > &  failures 
)
protected

◆ EnsureAllDIEsInDeclContextHaveBeenParsed()

void DWARFASTParserClang::EnsureAllDIEsInDeclContextHaveBeenParsed ( lldb_private::CompilerDeclContext  decl_context)
overridevirtual

◆ ExtractIntFromFormValue()

llvm::Expected< llvm::APInt > DWARFASTParserClang::ExtractIntFromFormValue ( const lldb_private::CompilerType int_type,
const DWARFFormValue form_value 
) const

Extracts an value for a given Clang integer type from a DWARFFormValue.

Parameters
int_typeThe 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_valueThe DWARFFormValue that contains the integer value.
Returns
An APInt containing the same integer value as the given DWARFFormValue with the bit width of the given integer type. Returns an error if the value in the DWARFFormValue does not fit into the given integer type or the integer type isn't supported.

Definition at line 2842 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(), DWARFFormValue::Signed(), and DWARFFormValue::Unsigned().

Referenced by ParseSingleMember().

◆ GetCachedClangDeclContextForDIE()

clang::DeclContext * DWARFASTParserClang::GetCachedClangDeclContextForDIE ( const DWARFDIE die)
protected

◆ GetClangASTImporter()

ClangASTImporter & DWARFASTParserClang::GetClangASTImporter ( )

◆ GetClangDeclContextContainingDIE()

clang::DeclContext * DWARFASTParserClang::GetClangDeclContextContainingDIE ( const DWARFDIE die,
DWARFDIE decl_ctx_die 
)
protected

◆ GetClangDeclContextForDIE()

clang::DeclContext * DWARFASTParserClang::GetClangDeclContextForDIE ( const DWARFDIE die)
protected

◆ GetClangDeclForDIE()

clang::Decl * DWARFASTParserClang::GetClangDeclForDIE ( const DWARFDIE die)
protected

◆ GetCPlusPlusQualifiedName()

std::string DWARFASTParserClang::GetCPlusPlusQualifiedName ( const DWARFDIE die)
protected

◆ GetDeclContextContainingUIDFromDWARF()

CompilerDeclContext DWARFASTParserClang::GetDeclContextContainingUIDFromDWARF ( const DWARFDIE die)
overridevirtual

◆ GetDeclContextForBlock()

clang::DeclContext * DWARFASTParserClang::GetDeclContextForBlock ( const DWARFDIE die)
protected

◆ GetDeclContextForUIDFromDWARF()

CompilerDeclContext DWARFASTParserClang::GetDeclContextForUIDFromDWARF ( const DWARFDIE die)
overridevirtual

◆ GetDeclForUIDFromDWARF()

CompilerDecl DWARFASTParserClang::GetDeclForUIDFromDWARF ( const DWARFDIE die)
overridevirtual

◆ GetDIEClassTemplateParams()

ConstString DWARFASTParserClang::GetDIEClassTemplateParams ( const DWARFDIE die)
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.

Parameters
dieThe struct/class DWARFDIE containing template parameters.
Returns
A string, including surrounding '<>', of the template parameters. If the DIE's name already has '<>', returns an empty ConstString because it's assumed that the caller is using the DIE name anyway.

Implements DWARFASTParser.

Definition at line 746 of file DWARFASTParserClang.cpp.

References DWARFDIE::GetName(), m_ast, ParseTemplateParameterInfos(), and lldb_private::TypeSystemClang::PrintTemplateParams().

Referenced by GetCPlusPlusQualifiedName().

◆ GetModuleForType()

lldb::ModuleSP DWARFASTParserClang::GetModuleForType ( const DWARFDIE die)
protected

◆ GetOwningClangModule()

OptionalClangModuleID DWARFASTParserClang::GetOwningClangModule ( const DWARFDIE die)
protected

◆ GetTypeForDIE()

Type * DWARFASTParserClang::GetTypeForDIE ( const DWARFDIE die)
protected

◆ LinkDeclContextToDIE()

void DWARFASTParserClang::LinkDeclContextToDIE ( clang::DeclContext *  decl_ctx,
const DWARFDIE die 
)
protected

◆ LinkDeclToDIE()

void DWARFASTParserClang::LinkDeclToDIE ( clang::Decl *  decl,
const DWARFDIE die 
)
protected

◆ ParseArrayType()

TypeSP DWARFASTParserClang::ParseArrayType ( const DWARFDIE die,
const ParsedDWARFTypeAttributes attrs 
)
private

◆ ParseChildEnumerators()

size_t DWARFASTParserClang::ParseChildEnumerators ( lldb_private::CompilerType compiler_type,
bool  is_signed,
uint32_t  enumerator_byte_size,
const DWARFDIE parent_die 
)
protected

◆ ParseChildMembers()

bool DWARFASTParserClang::ParseChildMembers ( const DWARFDIE die,
lldb_private::CompilerType class_compiler_type,
std::vector< std::unique_ptr< clang::CXXBaseSpecifier > > &  base_classes,
std::vector< DWARFDIE > &  member_function_dies,
DelayedPropertyList delayed_properties,
const lldb::AccessType  default_accessibility,
lldb_private::ClangASTImporter::LayoutInfo layout_info 
)
protected

◆ ParseChildParameters()

size_t DWARFASTParserClang::ParseChildParameters ( clang::DeclContext *  containing_decl_ctx,
const DWARFDIE parent_die,
bool  skip_artificial,
bool &  is_static,
bool &  is_variadic,
bool &  has_template_params,
std::vector< lldb_private::CompilerType > &  function_args,
std::vector< clang::ParmVarDecl * > &  function_param_decls,
unsigned &  type_quals 
)
protected

◆ ParseEnum()

TypeSP DWARFASTParserClang::ParseEnum ( const lldb_private::SymbolContext sc,
const DWARFDIE die,
ParsedDWARFTypeAttributes attrs 
)
private

Definition at line 757 of file DWARFASTParserClang.cpp.

References ParsedDWARFTypeAttributes::byte_size, lldb_private::TypeSystemClang::CompleteTagDeclarationDefinition(), lldb_private::TypeSystemClang::CreateEnumerationType(), DEBUG_PRINTF, ParsedDWARFTypeAttributes::decl, lldb_private::DW_TAG_value_to_name(), lldb::eBasicTypeInt, lldb_private::Type::eEncodingIsUID, SymbolFileDWARFDebugMap::FindDefinitionTypeForDWARFDeclContext(), lldb_private::TypeSystemClang::GetBasicType(), lldb_private::TypeSystemClang::GetBuiltinTypeForDWARFEncodingAndBitSize(), lldb_private::CompilerType::GetByteSize(), GetCachedClangDeclContextForDIE(), GetClangDeclContextContainingDIE(), lldb_private::ConstString::GetCString(), lldb_private::TypeSystemClang::GetDeclContextForType(), DWARFDIE::GetDIE(), DWARFBaseDIE::GetDWARF(), lldb_private::TypeSystemClang::GetEnumerationIntegerType(), lldb_private::Type::GetFullCompilerType(), DWARFBaseDIE::GetID(), lldb_private::GetLog(), DWARFBaseDIE::GetOffset(), GetOwningClangModule(), lldb_private::ConstString::GetStringRef(), DWARFBaseDIE::HasChildren(), ParsedDWARFTypeAttributes::is_forward_declaration, ParsedDWARFTypeAttributes::is_scoped_enum, lldb_private::CompilerType::IsIntegerType(), DWARFFormValue::IsValid(), LinkDeclContextToDIE(), m_ast, ParsedDWARFTypeAttributes::name, ParseChildEnumerators(), ParseTypeFromClangModule(), DWARFFormValue::Reference(), lldb_private::TypeSystemClang::StartTagDeclarationDefinition(), DWARFBaseDIE::Tag(), and ParsedDWARFTypeAttributes::type.

Referenced by ParseTypeFromDWARF().

◆ ParseFunctionFromDWARF()

Function * DWARFASTParserClang::ParseFunctionFromDWARF ( lldb_private::CompileUnit comp_unit,
const DWARFDIE die,
const lldb_private::AddressRange func_range 
)
overridevirtual

◆ ParseInheritance()

void DWARFASTParserClang::ParseInheritance ( const DWARFDIE die,
const DWARFDIE parent_die,
const lldb_private::CompilerType  class_clang_type,
const lldb::AccessType  default_accessibility,
const lldb::ModuleSP module_sp,
std::vector< std::unique_ptr< clang::CXXBaseSpecifier > > &  base_classes,
lldb_private::ClangASTImporter::LayoutInfo layout_info 
)
private

Parses a DW_TAG_inheritance DIE into a base/super class.

Parameters
dieThe DW_TAG_inheritance DIE to parse.
parent_dieThe parent DIE of the given DIE.
class_clang_typeThe 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_accessibilityThe default accessibility that is given to base classes if they don't have an explicit accessibility set.
module_spThe current Module.
base_classesThe list of C++ base classes that will be appended with the parsed base class on success.
layout_infoThe layout information that will be updated for C++ base classes with the base offset.

Definition at line 1378 of file DWARFASTParserClang.cpp.

References DWARFAttributes::AttributeAtIndex(), lldb_private::ClangASTImporter::LayoutInfo::base_offsets, DWARFFormValue::BlockData(), DWARFFormValue::Boolean(), lldb_private::CompilerType::TypeSystemSPWrapper::dyn_cast_or_null(), lldb::eRegisterKindDWARF, lldb_private::DWARFExpression::Evaluate(), DWARFAttributes::ExtractFormValueAtIndex(), DWARFASTParser::GetAccessTypeFromDWARF(), DWARFBaseDIE::GetAttributes(), DWARFBaseDIE::GetCU(), DWARFBaseDIE::GetData(), lldb_private::DataExtractor::GetDataStart(), lldb_private::Type::GetFullCompilerType(), DWARFBaseDIE::GetOffset(), lldb_private::CompilerType::GetOpaqueQualType(), lldb_private::CompilerType::GetTypeSystem(), lldb_private::TypeSystemClang::IsObjCObjectOrInterfaceType(), DWARFFormValue::Reference(), DWARFDIE::ResolveTypeUID(), lldb_private::Value::ResolveValue(), DWARFAttributes::Size(), lldb_private::Scalar::UInt(), and DWARFFormValue::Unsigned().

Referenced by ParseChildMembers().

◆ ParseObjCProperty()

void DWARFASTParserClang::ParseObjCProperty ( const DWARFDIE die,
const DWARFDIE parent_die,
const lldb_private::CompilerType class_clang_type,
DelayedPropertyList delayed_properties 
)
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.

Parameters
dieThe DW_TAG_APPLE_property DIE that will be parsed.
parent_dieThe parent DIE.
class_clang_typeThe Objective-C class that will contain the created property.
delayed_propertiesThe list of delayed properties that the result will be appended to.

Definition at line 2806 of file DWARFASTParserClang.cpp.

References DWARFBaseDIE::GetDWARF(), DWARFBaseDIE::GetID(), lldb_private::Type::GetLayoutCompilerType(), lldb_private::ModuleChild::GetModule(), lldb_private::SymbolFileCommon::GetObjectFile(), DWARFDIE::ResolveTypeUID(), lldb_private::ClangASTMetadata::SetUserID(), and DWARFBaseDIE::Tag().

Referenced by ParseChildMembers().

◆ ParsePointerToMemberType()

TypeSP DWARFASTParserClang::ParsePointerToMemberType ( const DWARFDIE die,
const ParsedDWARFTypeAttributes attrs 
)
private

◆ ParseRustVariantPart()

void DWARFASTParserClang::ParseRustVariantPart ( DWARFDIE die,
const DWARFDIE parent_die,
lldb_private::CompilerType class_clang_type,
const lldb::AccessType  default_accesibility,
lldb_private::ClangASTImporter::LayoutInfo layout_info 
)
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.

Parameters
dieDW_TAG_variant_part DIE to parse
parent_dieThe parent DW_TAG_structure_type to parse
class_clang_typeThe Rust struct representing parent_die.
default_accesibilityThe default accessibility that is given to base classes if they don't have an explicit accessibility set
layout_infoThe layout information that will be updated for

Definition at line 3894 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, DWARFBaseDIE::GetCU(), lldb_private::TypeSystemClang::GetDeclContextForType(), DWARFBaseDIE::GetDWARF(), SymbolFileDWARF::GetLanguage(), lldb_private::ModuleChild::GetModule(), lldb_private::SymbolFileCommon::GetObjectFile(), lldb_private::CompilerType::GetTypeName(), m_ast, DWARFDIE::ResolveTypeUID(), lldb_private::TypeSystemClang::SetIsPacked(), lldb_private::TypeSystemClang::StartTagDeclarationDefinition(), and DWARFBaseDIE::Tag().

Referenced by ParseChildMembers().

◆ ParseSingleMember()

void DWARFASTParserClang::ParseSingleMember ( const DWARFDIE die,
const DWARFDIE parent_die,
const lldb_private::CompilerType class_clang_type,
lldb::AccessType  default_accessibility,
lldb_private::ClangASTImporter::LayoutInfo layout_info,
FieldInfo last_field_info 
)
private

Definition at line 2898 of file DWARFASTParserClang.cpp.

References lldb_private::TypeSystemClang::AddFieldToRecordType(), lldb_private::TypeSystemClang::AddVariableToRecordType(), DWARFASTParserClang::FieldInfo::bit_offset, DWARFASTParserClang::FieldInfo::bit_size, lldb_private::TypeSystemClang::CreateArrayType(), lldb_private::DW_TAG_value_to_name(), lldb::eAccessNone, lldb::eAccessPublic, lldb::eByteOrderLittle, lldb::eEncodingSint, ExtractIntFromFormValue(), lldb_private::ClangASTImporter::LayoutInfo::field_offsets, DWARFBaseDIE::GetAttributeValueAsUnsigned(), lldb_private::TypeSystemClang::GetBuiltinTypeForEncodingAndBitSize(), lldb_private::ObjectFile::GetByteOrder(), lldb_private::Type::GetByteSize(), lldb_private::CompilerType::GetCompleteType(), DWARFBaseDIE::GetCU(), DWARFBaseDIE::GetDWARF(), lldb_private::Type::GetForwardCompilerType(), DWARFBaseDIE::GetID(), lldb_private::Type::GetLayoutCompilerType(), lldb_private::GetLog(), lldb_private::ModuleChild::GetModule(), lldb_private::SymbolFileCommon::GetObjectFile(), GetUnitName(), lldb_private::CompilerType::IsArrayType(), DWARFASTParserClang::FieldInfo::IsBitfield(), lldb_private::CompilerType::IsCompleteType(), lldb_private::CompilerType::IsIntegerOrEnumerationType(), lldb_private::TypeSystemClang::IsObjCObjectOrInterfaceType(), LLDB_LOG, LLDB_LOG_ERROR, m_ast, DWARFASTParserClang::FieldInfo::NextBitfieldOffsetIsValid(), lldb_private::TypeSystemClang::RequireCompleteType(), DWARFDIE::ResolveTypeUID(), lldb_private::TypeSystemClang::SetIntegerInitializerForVariable(), DWARFASTParserClang::FieldInfo::SetIsArtificial(), DWARFASTParserClang::FieldInfo::SetIsBitfield(), lldb_private::TypeSystemClang::SetMetadataAsUserID(), ShouldCreateUnnamedBitfield(), DWARFUnit::Supports_unnamed_objc_bitfields(), DWARFBaseDIE::Tag(), UINT32_MAX, and UINT64_MAX.

Referenced by ParseChildMembers().

◆ ParseStructureLikeDIE()

TypeSP DWARFASTParserClang::ParseStructureLikeDIE ( const lldb_private::SymbolContext sc,
const DWARFDIE die,
ParsedDWARFTypeAttributes attrs 
)
protected

Parse a structure, class, or union type DIE.

Definition at line 1579 of file DWARFASTParserClang.cpp.

References ParsedDWARFTypeAttributes::accessibility, lldb_private::ClangASTImporter::LayoutInfo::bit_size, ParsedDWARFTypeAttributes::byte_size, ParsedDWARFTypeAttributes::calling_convention, ParsedDWARFTypeAttributes::class_language, lldb_private::Declaration::Clear(), lldb_private::TypeSystemClang::CompleteTagDeclarationDefinition(), lldb_private::TypeSystemClang::CreateClassTemplateSpecializationDecl(), lldb_private::TypeSystemClang::CreateClassTemplateSpecializationType(), lldb_private::TypeSystemClang::CreateRecordType(), DEBUG_PRINTF, ParsedDWARFTypeAttributes::decl, DeclKindIsCXXClass(), lldb_private::DW_TAG_value_to_name(), lldb::eAccessNone, lldb::eAccessPrivate, lldb::eAccessPublic, lldb_private::Type::eEncodingIsUID, lldb::eLanguageTypeObjC, lldb::eLanguageTypeObjC_plus_plus, ParsedDWARFTypeAttributes::exports_symbols, SymbolFileDWARFDebugMap::FindCompleteObjCDefinitionTypeForDIE(), SymbolFileDWARFDebugMap::FindDefinitionTypeForDWARFDeclContext(), lldb_private::TypeSystemClang::GetAsCXXRecordDecl(), lldb_private::TypeSystemClang::GetAsRecordDecl(), GetCachedClangDeclContextForDIE(), GetClangASTImporter(), GetClangDeclContextContainingDIE(), GetCPlusPlusQualifiedName(), lldb_private::ConstString::GetCString(), DWARFBaseDIE::GetCU(), lldb_private::TypeSystemClang::GetDeclContextForType(), DWARFDIE::GetDIE(), DWARFBaseDIE::GetDIERef(), DWARFBaseDIE::GetDWARF(), DWARFBaseDIE::GetID(), SymbolFileDWARF::GetLanguage(), lldb_private::GetLog(), DWARFBaseDIE::GetOffset(), lldb_private::CompilerType::GetOpaqueQualType(), GetOwningClangModule(), DWARFBaseDIE::HasChildren(), ParsedDWARFTypeAttributes::is_complete_objc_class, ParsedDWARFTypeAttributes::is_forward_declaration, lldb_private::Language::LanguageIsCPlusPlus(), 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::ClangASTImporter::SetRecordLayout(), lldb_private::ClangASTMetadata::SetUserID(), lldb_private::TypeSystemClang::StartTagDeclarationDefinition(), DWARFBaseDIE::Supports_DW_AT_APPLE_objc_complete_type(), and DWARFBaseDIE::Tag().

Referenced by ParseTypeFromDWARF().

◆ ParseSubroutine()

TypeSP DWARFASTParserClang::ParseSubroutine ( const DWARFDIE die,
ParsedDWARFTypeAttributes attrs 
)
private

Definition at line 893 of file DWARFASTParserClang.cpp.

References ParsedDWARFTypeAttributes::abstract_origin, ParsedDWARFTypeAttributes::accessibility, lldb_private::TypeSystemClang::AddMethodToCXXRecordType(), lldb_private::TypeSystemClang::AddMethodToObjCObjectType(), ConvertDWARFCallingConventionToClang(), CopyUniqueClassMethodTypes(), 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(), DIE_IS_BEING_PARSED, lldb_private::DW_TAG_value_to_name(), lldb::eAccessNone, lldb::eAccessPublic, lldb::eBasicTypeVoid, lldb_private::Type::eEncodingIsUID, lldb_private::TypeSystemClang::getASTContext(), lldb_private::TypeSystemClang::GetBasicType(), GetCachedClangDeclContextForDIE(), GetClangDeclContextContainingDIE(), GetClangDeclContextForDIE(), lldb_private::ConstString::GetCString(), DWARFDIE::GetDIE(), DWARFBaseDIE::GetDWARF(), lldb_private::Type::GetForwardCompilerType(), lldb_private::Type::GetFullCompilerType(), lldb_private::UserID::GetID(), DWARFBaseDIE::GetID(), lldb_private::GetLog(), lldb_private::Type::GetName(), DWARFDIE::GetName(), DWARFBaseDIE::GetOffset(), lldb_private::CompilerType::GetOpaqueQualType(), GetOwningClangModule(), lldb_private::ConstString::GetStringRef(), lldb_private::TypeSystemClang::GetTranslationUnitDecl(), DWARFBaseDIE::HasChildren(), ParsedDWARFTypeAttributes::is_artificial, ParsedDWARFTypeAttributes::is_explicit, ParsedDWARFTypeAttributes::is_inline, ParsedDWARFTypeAttributes::is_objc_direct_call, ParsedDWARFTypeAttributes::is_virtual, lldb_private::CompilerType::IsBeingDefined(), IsClangModuleFwdDecl(), lldb_private::TypeSystemClang::IsCXXClassType(), lldb_private::TypeSystemClang::IsObjCObjectOrInterfaceType(), DWARFFormValue::IsValid(), LinkDeclContextToDIE(), LLDB_INVALID_UID, LLDB_LOGF, lldbassert, m_ast, ParsedDWARFTypeAttributes::mangled_name, ParsedDWARFTypeAttributes::name, ParsedDWARFTypeAttributes::object_pointer, ParseChildParameters(), ParseTemplateParameterInfos(), ParsedDWARFTypeAttributes::ref_qual, DWARFFormValue::Reference(), lldb_private::TypeSystemClang::SetFunctionParameters(), lldb_private::TypeSystemClang::SetMetadata(), lldb_private::TypeSystemClang::SetMetadataAsUserID(), lldb_private::ClangASTMetadata::SetObjectPtrName(), lldb_private::ClangASTMetadata::SetUserID(), ParsedDWARFTypeAttributes::specification, ParsedDWARFTypeAttributes::storage, DWARFBaseDIE::Tag(), and ParsedDWARFTypeAttributes::type.

Referenced by ParseTypeFromDWARF().

◆ ParseTemplateDIE()

bool DWARFASTParserClang::ParseTemplateDIE ( const DWARFDIE die,
lldb_private::TypeSystemClang::TemplateParameterInfos template_param_infos 
)
protected

◆ ParseTemplateParameterInfos()

bool DWARFASTParserClang::ParseTemplateParameterInfos ( const DWARFDIE parent_die,
lldb_private::TypeSystemClang::TemplateParameterInfos template_param_infos 
)
protected

◆ ParseTypeFromClangModule()

TypeSP DWARFASTParserClang::ParseTypeFromClangModule ( const lldb_private::SymbolContext sc,
const DWARFDIE die,
lldb_private::Log log 
)
protected

◆ ParseTypeFromDWARF()

TypeSP DWARFASTParserClang::ParseTypeFromDWARF ( const lldb_private::SymbolContext sc,
const DWARFDIE die,
bool *  type_is_new_ptr 
)
overridevirtual

◆ ParseTypeModifier()

lldb::TypeSP DWARFASTParserClang::ParseTypeModifier ( const lldb_private::SymbolContext sc,
const DWARFDIE die,
ParsedDWARFTypeAttributes attrs 
)
private

Definition at line 523 of file DWARFASTParserClang.cpp.

References ParsedDWARFTypeAttributes::byte_size, DWARFDIE::children(), DWARFFormValue::Clear(), lldb_private::TypeSystemClang::CreateBlockPointerType(), DEBUG_PRINTF, ParsedDWARFTypeAttributes::decl, lldb_private::DW_TAG_value_to_name(), lldb::eBasicTypeNullPtr, lldb::eBasicTypeObjCClass, lldb::eBasicTypeObjCID, lldb::eBasicTypeObjCSel, lldb_private::Type::eEncodingIsAtomicUID, lldb_private::Type::eEncodingIsConstUID, 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, DWARFBaseDIE::GetAttributeValueAsUnsigned(), lldb_private::TypeSystemClang::GetBasicType(), lldb_private::TypeSystemClang::GetBuiltinTypeForDWARFEncodingAndBitSize(), GetClangASTImporter(), GetClangDeclContextContainingDIE(), lldb_private::ConstString::GetCString(), DWARFBaseDIE::GetCU(), DWARFDIE::GetDIE(), DWARFBaseDIE::GetDWARF(), DWARFBaseDIE::GetID(), SymbolFileDWARF::GetLanguage(), lldb_private::GetLog(), DWARFDIE::GetName(), DWARFBaseDIE::GetOffset(), GetOwningClangModule(), DWARFDIE::GetReferencedDIE(), lldb_private::ConstString::GetStringRef(), DWARFBaseDIE::GetTagAsCString(), DWARFFormValue::IsValid(), m_ast, ParsedDWARFTypeAttributes::name, ParseTypeFromClangModule(), ParseTypeFromDWARF(), PrepareContextToReceiveMembers(), DWARFFormValue::Reference(), DWARFBaseDIE::Tag(), and ParsedDWARFTypeAttributes::type.

Referenced by ParseTypeFromDWARF().

◆ ResolveBlockDIE()

clang::BlockDecl * DWARFASTParserClang::ResolveBlockDIE ( const DWARFDIE die)
protected

◆ ResolveImportedDeclarationDIE()

clang::NamespaceDecl * DWARFASTParserClang::ResolveImportedDeclarationDIE ( const DWARFDIE die)
protected

Returns the namespace decl that a DW_TAG_imported_declaration imports.

Parameters
[in]dieThe import declaration to resolve. If the DIE is not a DW_TAG_imported_declaration the behaviour is undefined.
Returns
The decl corresponding to the namespace that the specified 'die' imports. If the imported entity is not a namespace or another import declaration, returns nullptr. If an error occurs, returns nullptr.

Definition at line 3639 of file DWARFASTParserClang.cpp.

References DWARFDIE::GetAttributeValueAsReferenceDIE(), DWARFDIE::GetDIE(), LinkDeclContextToDIE(), m_die_to_decl_ctx, ResolveImportedDeclarationDIE(), ResolveNamespaceDIE(), and DWARFBaseDIE::Tag().

Referenced by GetClangDeclContextForDIE(), and ResolveImportedDeclarationDIE().

◆ ResolveNamespaceDIE()

clang::NamespaceDecl * DWARFASTParserClang::ResolveNamespaceDIE ( const DWARFDIE die)
protected

◆ ShouldCreateUnnamedBitfield()

bool DWARFASTParserClang::ShouldCreateUnnamedBitfield ( FieldInfo const &  last_field_info,
uint64_t  last_field_end,
FieldInfo const &  this_field_info,
lldb_private::ClangASTImporter::LayoutInfo const &  layout_info 
) const
private

Returns 'true' if we should create an unnamed bitfield and add it to the parser's current AST.

Parameters
[in]last_field_infoFieldInfo of the previous DW_TAG_member we parsed.
[in]last_field_endOffset (in bits) where the last parsed field ended.
[in]this_field_infoFieldInfo of the current DW_TAG_member being parsed.
[in]layout_infoLayout information of all decls parsed by the current parser.

Definition at line 3862 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 ParseSingleMember().

◆ UpdateSymbolContextScopeForType()

TypeSP DWARFASTParserClang::UpdateSymbolContextScopeForType ( const lldb_private::SymbolContext sc,
const DWARFDIE die,
lldb::TypeSP  type_sp 
)
protected

Member Data Documentation

◆ m_ast

lldb_private::TypeSystemClang& DWARFASTParserClang::m_ast
protected

◆ m_clang_ast_importer_up

std::unique_ptr<lldb_private::ClangASTImporter> DWARFASTParserClang::m_clang_ast_importer_up
protected

Definition at line 126 of file DWARFASTParserClang.h.

Referenced by GetClangASTImporter().

◆ m_decl_ctx_to_die

DeclContextToDIEMap DWARFASTParserClang::m_decl_ctx_to_die
protected

◆ m_die_to_decl

DIEToDeclMap DWARFASTParserClang::m_die_to_decl
protected

Definition at line 122 of file DWARFASTParserClang.h.

Referenced by GetClangDeclForDIE().

◆ m_die_to_decl_ctx

DIEToDeclContextMap DWARFASTParserClang::m_die_to_decl_ctx
protected

◆ m_die_to_module

DIEToModuleMap DWARFASTParserClang::m_die_to_module
protected

Definition at line 125 of file DWARFASTParserClang.h.

Referenced by GetOwningClangModule().


The documentation for this class was generated from the following files: