LLDB mainline
Classes | Public Member Functions | Protected Member Functions | Static 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
 
struct  MemberAttributes
 Parsed form of all attributes that are relevant for parsing type members. More...
 

Public Member Functions

 DWARFASTParserClang (lldb_private::TypeSystemClang &ast)
 
 ~DWARFASTParserClang () override
 
lldb::TypeSP ParseTypeFromDWARF (const lldb_private::SymbolContext &sc, const lldb_private::plugin::dwarf::DWARFDIE &die, bool *type_is_new_ptr) override
 
lldb_private::ConstString ConstructDemangledNameFromDWARF (const lldb_private::plugin::dwarf::DWARFDIE &die) override
 
lldb_private::FunctionParseFunctionFromDWARF (lldb_private::CompileUnit &comp_unit, const lldb_private::plugin::dwarf::DWARFDIE &die, const lldb_private::AddressRange &func_range) override
 
bool CompleteTypeFromDWARF (const lldb_private::plugin::dwarf::DWARFDIE &die, lldb_private::Type *type, const lldb_private::CompilerType &compiler_type) override
 
lldb_private::CompilerDecl GetDeclForUIDFromDWARF (const lldb_private::plugin::dwarf::DWARFDIE &die) override
 
void EnsureAllDIEsInDeclContextHaveBeenParsed (lldb_private::CompilerDeclContext decl_context) override
 
lldb_private::CompilerDeclContext GetDeclContextForUIDFromDWARF (const lldb_private::plugin::dwarf::DWARFDIE &die) override
 
lldb_private::CompilerDeclContext GetDeclContextContainingUIDFromDWARF (const lldb_private::plugin::dwarf::DWARFDIE &die) override
 
lldb_private::ClangASTImporterGetClangASTImporter ()
 
llvm::Expected< llvm::APInt > 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.
 
std::string GetDIEClassTemplateParams (const lldb_private::plugin::dwarf::DWARFDIE &die) override
 Returns the template parameters of a class DWARFDIE as a string.
 
void MapDeclDIEToDefDIE (const lldb_private::plugin::dwarf::DWARFDIE &decl_die, const lldb_private::plugin::dwarf::DWARFDIE &def_die)
 
- Public Member Functions inherited from lldb_private::plugin::dwarf::DWARFASTParser
 DWARFASTParser (Kind kind)
 
virtual ~DWARFASTParser ()=default
 
virtual lldb::TypeSP ParseTypeFromDWARF (const SymbolContext &sc, const DWARFDIE &die, bool *type_is_new_ptr)=0
 
virtual ConstString ConstructDemangledNameFromDWARF (const DWARFDIE &die)=0
 
virtual FunctionParseFunctionFromDWARF (CompileUnit &comp_unit, const DWARFDIE &die, const AddressRange &range)=0
 
virtual bool CompleteTypeFromDWARF (const DWARFDIE &die, Type *type, const CompilerType &compiler_type)=0
 
virtual CompilerDecl GetDeclForUIDFromDWARF (const DWARFDIE &die)=0
 
virtual CompilerDeclContext GetDeclContextForUIDFromDWARF (const DWARFDIE &die)=0
 
virtual CompilerDeclContext GetDeclContextContainingUIDFromDWARF (const DWARFDIE &die)=0
 
virtual void EnsureAllDIEsInDeclContextHaveBeenParsed (CompilerDeclContext decl_context)=0
 
virtual std::string GetDIEClassTemplateParams (const DWARFDIE &die)=0
 
lldb_private::TypeGetTypeForDIE (const DWARFDIE &die)
 
Kind GetKind () const
 

Protected Member Functions

clang::DeclContext * GetDeclContextForBlock (const lldb_private::plugin::dwarf::DWARFDIE &die)
 
clang::BlockDecl * ResolveBlockDIE (const lldb_private::plugin::dwarf::DWARFDIE &die)
 
clang::NamespaceDecl * ResolveNamespaceDIE (const lldb_private::plugin::dwarf::DWARFDIE &die)
 
clang::NamespaceDecl * ResolveImportedDeclarationDIE (const lldb_private::plugin::dwarf::DWARFDIE &die)
 Returns the namespace decl that a DW_TAG_imported_declaration imports.
 
bool ParseTemplateDIE (const lldb_private::plugin::dwarf::DWARFDIE &die, lldb_private::TypeSystemClang::TemplateParameterInfos &template_param_infos)
 
bool ParseTemplateParameterInfos (const lldb_private::plugin::dwarf::DWARFDIE &parent_die, lldb_private::TypeSystemClang::TemplateParameterInfos &template_param_infos)
 
void GetUniqueTypeNameAndDeclaration (const lldb_private::plugin::dwarf::DWARFDIE &die, lldb::LanguageType language, lldb_private::ConstString &unique_typename, lldb_private::Declaration &decl_declaration)
 
bool ParseChildMembers (const lldb_private::plugin::dwarf::DWARFDIE &die, const lldb_private::CompilerType &class_compiler_type, std::vector< std::unique_ptr< clang::CXXBaseSpecifier > > &base_classes, std::vector< lldb_private::plugin::dwarf::DWARFDIE > &member_function_dies, std::vector< lldb_private::plugin::dwarf::DWARFDIE > &contained_type_dies, DelayedPropertyList &delayed_properties, const lldb::AccessType default_accessibility, lldb_private::ClangASTImporter::LayoutInfo &layout_info)
 
size_t ParseChildParameters (clang::DeclContext *containing_decl_ctx, const lldb_private::plugin::dwarf::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 (const lldb_private::CompilerType &compiler_type, bool is_signed, uint32_t enumerator_byte_size, const lldb_private::plugin::dwarf::DWARFDIE &parent_die)
 
lldb::TypeSP ParseStructureLikeDIE (const lldb_private::SymbolContext &sc, const lldb_private::plugin::dwarf::DWARFDIE &die, ParsedDWARFTypeAttributes &attrs)
 Parse a structure, class, or union type DIE.
 
clang::Decl * GetClangDeclForDIE (const lldb_private::plugin::dwarf::DWARFDIE &die)
 
clang::DeclContext * GetClangDeclContextForDIE (const lldb_private::plugin::dwarf::DWARFDIE &die)
 
clang::DeclContext * GetClangDeclContextContainingDIE (const lldb_private::plugin::dwarf::DWARFDIE &die, lldb_private::plugin::dwarf::DWARFDIE *decl_ctx_die)
 
lldb_private::OptionalClangModuleID GetOwningClangModule (const lldb_private::plugin::dwarf::DWARFDIE &die)
 
bool CopyUniqueClassMethodTypes (const lldb_private::plugin::dwarf::DWARFDIE &src_class_die, const lldb_private::plugin::dwarf::DWARFDIE &dst_class_die, lldb_private::Type *class_type, std::vector< lldb_private::plugin::dwarf::DWARFDIE > &failures)
 
clang::DeclContext * GetCachedClangDeclContextForDIE (const lldb_private::plugin::dwarf::DWARFDIE &die)
 
void LinkDeclContextToDIE (clang::DeclContext *decl_ctx, const lldb_private::plugin::dwarf::DWARFDIE &die)
 
void LinkDeclToDIE (clang::Decl *decl, const lldb_private::plugin::dwarf::DWARFDIE &die)
 
lldb::TypeSP UpdateSymbolContextScopeForType (const lldb_private::SymbolContext &sc, const lldb_private::plugin::dwarf::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 lldb_private::plugin::dwarf::DWARFDIE &die, lldb_private::Log *log)
 Follow Clang Module Skeleton CU references to find a type definition.
 
lldb::ModuleSP GetModuleForType (const lldb_private::plugin::dwarf::DWARFDIE &die)
 

Static Protected Member Functions

static bool classof (const DWARFASTParser *Parser)
 

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 lldb_private::plugin::dwarf::DWARFDIE &die, const lldb_private::plugin::dwarf::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 lldb_private::plugin::dwarf::DWARFDIE &die, const lldb_private::plugin::dwarf::DWARFDIE &parent_die, const lldb_private::CompilerType &class_clang_type, lldb::AccessType default_accessibility, lldb_private::ClangASTImporter::LayoutInfo &layout_info, FieldInfo &last_field_info)
 
void CreateStaticMemberVariable (const lldb_private::plugin::dwarf::DWARFDIE &die, const MemberAttributes &attrs, const lldb_private::CompilerType &class_clang_type)
 If the specified 'die' represents a static data member, creates a 'clang::VarDecl' for it and attaches it to specified parent 'class_clang_type'.
 
bool CompleteRecordType (const lldb_private::plugin::dwarf::DWARFDIE &die, lldb_private::Type *type, const lldb_private::CompilerType &clang_type)
 
bool CompleteEnumType (const lldb_private::plugin::dwarf::DWARFDIE &die, lldb_private::Type *type, const lldb_private::CompilerType &clang_type)
 
lldb::TypeSP ParseTypeModifier (const lldb_private::SymbolContext &sc, const lldb_private::plugin::dwarf::DWARFDIE &die, ParsedDWARFTypeAttributes &attrs)
 
lldb::TypeSP ParseEnum (const lldb_private::SymbolContext &sc, const lldb_private::plugin::dwarf::DWARFDIE &die, ParsedDWARFTypeAttributes &attrs)
 
lldb::TypeSP ParseSubroutine (const lldb_private::plugin::dwarf::DWARFDIE &die, const ParsedDWARFTypeAttributes &attrs)
 
bool ParseObjCMethod (const lldb_private::ObjCLanguage::MethodName &objc_method, const lldb_private::plugin::dwarf::DWARFDIE &die, lldb_private::CompilerType clang_type, const ParsedDWARFTypeAttributes &attrs, bool is_variadic)
 Helper function called by ParseSubroutine when parsing ObjC-methods.
 
std::pair< bool, lldb::TypeSPParseCXXMethod (const lldb_private::plugin::dwarf::DWARFDIE &die, lldb_private::CompilerType clang_type, const ParsedDWARFTypeAttributes &attrs, const lldb_private::plugin::dwarf::DWARFDIE &decl_ctx_die, bool is_static, bool &ignore_containing_context)
 Helper function called by ParseSubroutine when parsing C++ methods.
 
lldb::TypeSP ParseArrayType (const lldb_private::plugin::dwarf::DWARFDIE &die, const ParsedDWARFTypeAttributes &attrs)
 
lldb::TypeSP ParsePointerToMemberType (const lldb_private::plugin::dwarf::DWARFDIE &die, const ParsedDWARFTypeAttributes &attrs)
 
void ParseInheritance (const lldb_private::plugin::dwarf::DWARFDIE &die, const lldb_private::plugin::dwarf::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 (lldb_private::plugin::dwarf::DWARFDIE &die, const lldb_private::plugin::dwarf::DWARFDIE &parent_die, const 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 lldb_private::plugin::dwarf::DWARFDebugInfoEntry *, clang::DeclContext * > DIEToDeclContextMap
 
typedef std::multimap< const clang::DeclContext *, const lldb_private::plugin::dwarf::DWARFDIEDeclContextToDIEMap
 
typedef llvm::DenseMap< const lldb_private::plugin::dwarf::DWARFDebugInfoEntry *, lldb_private::OptionalClangModuleIDDIEToModuleMap
 
typedef llvm::DenseMap< const lldb_private::plugin::dwarf::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

- Public Types inherited from lldb_private::plugin::dwarf::DWARFASTParser
enum class  Kind { DWARFASTParserClang }
 
- Static Public Member Functions inherited from lldb_private::plugin::dwarf::DWARFASTParser
static std::optional< SymbolFile::ArrayInfoParseChildArrayInfo (const DWARFDIE &parent_die, const ExecutionContext *exe_ctx=nullptr)
 
static lldb::AccessType GetAccessTypeFromDWARF (uint32_t dwarf_accessibility)
 

Detailed Description

Definition at line 44 of file DWARFASTParserClang.h.

Member Typedef Documentation

◆ DeclContextToDIEMap

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

Definition at line 127 of file DWARFASTParserClang.h.

◆ DelayedPropertyList

Definition at line 119 of file DWARFASTParserClang.h.

◆ DIEToDeclContextMap

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

Definition at line 124 of file DWARFASTParserClang.h.

◆ DIEToDeclMap

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

Definition at line 134 of file DWARFASTParserClang.h.

◆ DIEToModuleMap

Definition at line 131 of file DWARFASTParserClang.h.

Constructor & Destructor Documentation

◆ DWARFASTParserClang()

DWARFASTParserClang::DWARFASTParserClang ( lldb_private::TypeSystemClang ast)

Definition at line 68 of file DWARFASTParserClang.cpp.

◆ ~DWARFASTParserClang()

DWARFASTParserClang::~DWARFASTParserClang ( )
overridedefault

Member Function Documentation

◆ classof()

static bool DWARFASTParserClang::classof ( const DWARFASTParser Parser)
inlinestaticprotected

◆ CompleteEnumType()

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

◆ CompleteRecordType()

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

◆ CompleteTypeFromDWARF()

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

◆ ConstructDemangledNameFromDWARF()

ConstString DWARFASTParserClang::ConstructDemangledNameFromDWARF ( const lldb_private::plugin::dwarf::DWARFDIE die)
overridevirtual

◆ CopyUniqueClassMethodTypes()

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

◆ CreateStaticMemberVariable()

void DWARFASTParserClang::CreateStaticMemberVariable ( const lldb_private::plugin::dwarf::DWARFDIE die,
const MemberAttributes attrs,
const lldb_private::CompilerType class_clang_type 
)
private

◆ EnsureAllDIEsInDeclContextHaveBeenParsed()

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

◆ ExtractIntFromFormValue()

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.

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 2712 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().

◆ GetCachedClangDeclContextForDIE()

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

◆ GetClangASTImporter()

ClangASTImporter & DWARFASTParserClang::GetClangASTImporter ( )

◆ GetClangDeclContextContainingDIE()

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

◆ GetClangDeclContextForDIE()

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

◆ GetClangDeclForDIE()

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

◆ GetDeclContextContainingUIDFromDWARF()

CompilerDeclContext DWARFASTParserClang::GetDeclContextContainingUIDFromDWARF ( const lldb_private::plugin::dwarf::DWARFDIE die)
overridevirtual

◆ GetDeclContextForBlock()

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

◆ GetDeclContextForUIDFromDWARF()

CompilerDeclContext DWARFASTParserClang::GetDeclContextForUIDFromDWARF ( const lldb_private::plugin::dwarf::DWARFDIE die)
overridevirtual

◆ GetDeclForUIDFromDWARF()

CompilerDecl DWARFASTParserClang::GetDeclForUIDFromDWARF ( const lldb_private::plugin::dwarf::DWARFDIE die)
overridevirtual

◆ GetDIEClassTemplateParams()

std::string DWARFASTParserClang::GetDIEClassTemplateParams ( const lldb_private::plugin::dwarf::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 string because it's assumed that the caller is using the DIE name anyway.

Implements lldb_private::plugin::dwarf::DWARFASTParser.

Definition at line 822 of file DWARFASTParserClang.cpp.

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

Referenced by GetUniqueTypeNameAndDeclaration().

◆ GetModuleForType()

lldb::ModuleSP DWARFASTParserClang::GetModuleForType ( const lldb_private::plugin::dwarf::DWARFDIE die)
protected

◆ GetOwningClangModule()

OptionalClangModuleID DWARFASTParserClang::GetOwningClangModule ( const lldb_private::plugin::dwarf::DWARFDIE die)
protected

◆ GetUniqueTypeNameAndDeclaration()

void DWARFASTParserClang::GetUniqueTypeNameAndDeclaration ( const lldb_private::plugin::dwarf::DWARFDIE die,
lldb::LanguageType  language,
lldb_private::ConstString unique_typename,
lldb_private::Declaration decl_declaration 
)
protected

◆ LinkDeclContextToDIE()

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

◆ LinkDeclToDIE()

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

◆ MapDeclDIEToDefDIE()

void DWARFASTParserClang::MapDeclDIEToDefDIE ( const lldb_private::plugin::dwarf::DWARFDIE decl_die,
const lldb_private::plugin::dwarf::DWARFDIE def_die 
)

◆ ParseArrayType()

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

◆ ParseChildEnumerators()

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

◆ ParseChildMembers()

bool DWARFASTParserClang::ParseChildMembers ( const lldb_private::plugin::dwarf::DWARFDIE die,
const lldb_private::CompilerType class_compiler_type,
std::vector< std::unique_ptr< clang::CXXBaseSpecifier > > &  base_classes,
std::vector< lldb_private::plugin::dwarf::DWARFDIE > &  member_function_dies,
std::vector< lldb_private::plugin::dwarf::DWARFDIE > &  contained_type_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 lldb_private::plugin::dwarf::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

◆ ParseCXXMethod()

std::pair< bool, TypeSP > DWARFASTParserClang::ParseCXXMethod ( const lldb_private::plugin::dwarf::DWARFDIE die,
lldb_private::CompilerType  clang_type,
const ParsedDWARFTypeAttributes attrs,
const lldb_private::plugin::dwarf::DWARFDIE decl_ctx_die,
bool  is_static,
bool &  ignore_containing_context 
)
private

Helper function called by ParseSubroutine when parsing C++ methods.

Parameters
[in]dieThe DIE that represents the C++ method being parsed.
[in]clang_typeThe CompilerType representing the function prototype of the C++ method being parsed.
[in]attrsDWARF attributes for die.
[in]decl_ctx_dieThe DIE representing the DeclContext of the C++ method being parsed.
[in]is_staticIs true iff we're parsing a static method.
[out]ignore_containing_contextWill 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.
Returns
A pair of <bool, TypeSP>. The first element is 'true' on success. The second element is non-null if we have previously parsed this method (a null TypeSP does not indicate failure).

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

◆ ParseEnum()

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

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

◆ ParseFunctionFromDWARF()

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

◆ ParseInheritance()

void DWARFASTParserClang::ParseInheritance ( const lldb_private::plugin::dwarf::DWARFDIE die,
const lldb_private::plugin::dwarf::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 1458 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().

◆ ParseObjCMethod()

bool DWARFASTParserClang::ParseObjCMethod ( const lldb_private::ObjCLanguage::MethodName objc_method,
const lldb_private::plugin::dwarf::DWARFDIE die,
lldb_private::CompilerType  clang_type,
const ParsedDWARFTypeAttributes attrs,
bool  is_variadic 
)
private

Helper function called by ParseSubroutine when parsing ObjC-methods.

Parameters
[in]objc_methodName of the ObjC method being parsed.
[in]dieThe DIE that represents the ObjC method being parsed.
[in]clang_typeThe CompilerType representing the function prototype of the ObjC method being parsed.
[in]attrsDWARF attributes for die.
[in]is_variadicIs true iff we're parsing a variadic method.
Returns
true on success

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

◆ ParseObjCProperty()

void DWARFASTParserClang::ParseObjCProperty ( const lldb_private::plugin::dwarf::DWARFDIE die,
const lldb_private::plugin::dwarf::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 2676 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().

◆ ParsePointerToMemberType()

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

◆ ParseRustVariantPart()

void DWARFASTParserClang::ParseRustVariantPart ( lldb_private::plugin::dwarf::DWARFDIE die,
const lldb_private::plugin::dwarf::DWARFDIE parent_die,
const lldb_private::CompilerType class_clang_type,
const lldb::AccessType  default_accesibility,
lldb_private::ClangASTImporter::LayoutInfo layout_info 
)
private

◆ ParseSingleMember()

void DWARFASTParserClang::ParseSingleMember ( const lldb_private::plugin::dwarf::DWARFDIE die,
const lldb_private::plugin::dwarf::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 2807 of file DWARFASTParserClang.cpp.

References DWARFASTParserClang::MemberAttributes::accessibility, lldb_private::TypeSystemClang::AddFieldToRecordType(), 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, lldb::eEncodingSint, DWARFASTParserClang::MemberAttributes::encoding_form, lldb_private::ClangASTImporter::LayoutInfo::field_offsets, lldb_private::plugin::dwarf::DWARFBaseDIE::GetAttributeValueAsUnsigned(), lldb_private::TypeSystemClang::GetBuiltinTypeForEncodingAndBitSize(), lldb_private::ObjectFile::GetByteOrder(), lldb_private::Type::GetByteSize(), lldb_private::CompilerType::GetCompleteType(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetCU(), 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(), GetUnitName(), DWARFASTParserClang::MemberAttributes::is_artificial, 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::SetIsArtificial(), DWARFASTParserClang::FieldInfo::SetIsBitfield(), lldb_private::TypeSystemClang::SetMetadataAsUserID(), ShouldCreateUnnamedBitfield(), ShouldIgnoreArtificialField(), lldb_private::plugin::dwarf::DWARFUnit::Supports_unnamed_objc_bitfields(), lldb_private::plugin::dwarf::DWARFBaseDIE::Tag(), UINT32_MAX, and UINT64_MAX.

Referenced by ParseChildMembers().

◆ ParseStructureLikeDIE()

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

Parse a structure, class, or union type DIE.

Definition at line 1643 of file DWARFASTParserClang.cpp.

References ParsedDWARFTypeAttributes::accessibility, 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(), lldb_private::plugin::dwarf::DWARFBaseDIE::HasChildren(), 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::Supports_DW_AT_APPLE_objc_complete_type(), lldb_private::plugin::dwarf::DWARFBaseDIE::Tag(), and UNUSED_IF_ASSERT_DISABLED.

Referenced by ParseTypeFromDWARF().

◆ ParseSubroutine()

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

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

◆ ParseTemplateDIE()

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

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

◆ ParseTemplateParameterInfos()

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

◆ ParseTypeFromClangModule()

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

◆ ParseTypeFromDWARF()

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

◆ ParseTypeModifier()

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

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

◆ ResolveBlockDIE()

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

◆ ResolveImportedDeclarationDIE()

clang::NamespaceDecl * DWARFASTParserClang::ResolveImportedDeclarationDIE ( const lldb_private::plugin::dwarf::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 3510 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().

◆ ResolveNamespaceDIE()

clang::NamespaceDecl * DWARFASTParserClang::ResolveNamespaceDIE ( const lldb_private::plugin::dwarf::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 3733 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 lldb_private::plugin::dwarf::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 141 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 137 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 140 of file DWARFASTParserClang.h.

Referenced by GetOwningClangModule().


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