#include "UdtRecordCompleter.h" #include "PdbAstBuilder.h" #include "PdbIndex.h" #include "PdbSymUid.h" #include "PdbUtil.h" #include "Plugins/ExpressionParser/Clang/ClangASTImporter.h" #include "Plugins/ExpressionParser/Clang/ClangASTMetadata.h" #include "Plugins/ExpressionParser/Clang/ClangUtil.h" #include "Plugins/TypeSystem/Clang/TypeSystemClang.h" #include "SymbolFileNativePDB.h" #include "lldb/Core/Address.h" #include "lldb/Symbol/Type.h" #include "lldb/Utility/LLDBAssert.h" #include "lldb/Utility/LLDBLog.h" #include "lldb/lldb-enumerations.h" #include "lldb/lldb-forward.h" #include "llvm/ADT/STLExtras.h" #include "llvm/DebugInfo/CodeView/SymbolDeserializer.h" #include "llvm/DebugInfo/CodeView/TypeDeserializer.h" #include "llvm/DebugInfo/CodeView/TypeIndex.h" #include "llvm/DebugInfo/PDB/Native/GlobalsStream.h" #include "llvm/DebugInfo/PDB/Native/TpiStream.h" #include "llvm/DebugInfo/PDB/PDBTypes.h" #include <optional> usingnamespacellvm::codeview; usingnamespacellvm::pdb; usingnamespacelldb; usingnamespacelldb_private; usingnamespacelldb_private::npdb; Error; UdtRecordCompleter::UdtRecordCompleter( PdbTypeSymId id, CompilerType &derived_ct, clang::TagDecl &tag_decl, PdbAstBuilder &ast_builder, PdbIndex &index, llvm::DenseMap<clang::Decl *, DeclStatus> &decl_to_status, llvm::DenseMap<lldb::opaque_compiler_type_t, llvm::SmallSet<std::pair<llvm::StringRef, CompilerType>, 8>> &cxx_record_map) : … { … } clang::QualType UdtRecordCompleter::AddBaseClassForTypeIndex( llvm::codeview::TypeIndex ti, llvm::codeview::MemberAccess access, std::optional<uint64_t> vtable_idx) { … } void UdtRecordCompleter::AddMethod(llvm::StringRef name, TypeIndex type_idx, MemberAccess access, MethodOptions options, MemberAttributes attrs) { … } Error UdtRecordCompleter::visitKnownMember(CVMemberRecord &cvr, BaseClassRecord &base) { … } Error UdtRecordCompleter::visitKnownMember(CVMemberRecord &cvr, VirtualBaseClassRecord &base) { … } Error UdtRecordCompleter::visitKnownMember(CVMemberRecord &cvr, ListContinuationRecord &cont) { … } Error UdtRecordCompleter::visitKnownMember(CVMemberRecord &cvr, VFPtrRecord &vfptr) { … } Error UdtRecordCompleter::visitKnownMember( CVMemberRecord &cvr, StaticDataMemberRecord &static_data_member) { … } Error UdtRecordCompleter::visitKnownMember(CVMemberRecord &cvr, NestedTypeRecord &nested) { … } Error UdtRecordCompleter::visitKnownMember(CVMemberRecord &cvr, DataMemberRecord &data_member) { … } Error UdtRecordCompleter::visitKnownMember(CVMemberRecord &cvr, OneMethodRecord &one_method) { … } Error UdtRecordCompleter::visitKnownMember(CVMemberRecord &cvr, OverloadedMethodRecord &overloaded) { … } Error UdtRecordCompleter::visitKnownMember(CVMemberRecord &cvr, EnumeratorRecord &enumerator) { … } void UdtRecordCompleter::complete() { … } uint64_t UdtRecordCompleter::AddMember(TypeSystemClang &clang, Member *field, uint64_t bit_offset, CompilerType parent_ct, ClangASTImporter::LayoutInfo &parent_layout, clang::DeclContext *parent_decl_ctx) { … } void UdtRecordCompleter::FinishRecord() { … } void UdtRecordCompleter::Record::CollectMember( llvm::StringRef name, uint64_t offset, uint64_t field_size, clang::QualType qt, lldb::AccessType access, uint64_t bitfield_width) { … } void UdtRecordCompleter::Record::ConstructRecord() { … }