124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- SymbolFileDWARF.h --------------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 10144188bc458a35997d2f2e52206ab69747439073Greg Clayton#ifndef SymbolFileDWARF_SymbolFileDWARF_h_ 11144188bc458a35997d2f2e52206ab69747439073Greg Clayton#define SymbolFileDWARF_SymbolFileDWARF_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C Includes 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C++ Includes 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <list> 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <map> 17a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton#include <set> 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <vector> 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Other libraries and framework includes 213fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton#include "clang/AST/CharUnits.h" 22e6d72ca9a6b22cd062136bbff039c3d8217f798aGreg Clayton#include "clang/AST/ExternalASTSource.h" 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "llvm/ADT/DenseMap.h" 2403fd0d013cbd82ddcb3053a5add8f1f9891eeec5Greg Clayton#include "llvm/ADT/SmallPtrSet.h" 25d3beda617568982a0295481551d23f9b42df801dSean Callanan#include "llvm/ADT/SmallVector.h" 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 27e6b976d3f1c42f18c85c87cb179954af7df5a542Greg Clayton#include "lldb/lldb-private.h" 28e5748d889fb7fb97b3ff07444894d7714776b609Greg Clayton#include "lldb/Core/ClangForward.h" 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/ConstString.h" 30ccfba727178bb919cdff3365839bed9584df2560Jason Molenda#include "lldb/Core/dwarf.h" 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/DataExtractor.h" 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/Flags.h" 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/UniqueCStringMap.h" 34f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton#include "lldb/Symbol/ClangASTContext.h" 3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Symbol/SymbolFile.h" 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Symbol/SymbolContext.h" 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Project includes 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "DWARFDefines.h" 40d74270e83908066c946d150faec9516349e1118bGreg Clayton#include "HashedNameToDIE.h" 4174124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton#include "NameToDIE.h" 42a8d4241dcd129f289710c909491e0e80e7e3d732Greg Clayton#include "UniqueDWARFASTType.h" 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//---------------------------------------------------------------------- 4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Forward Declarations for this DWARF plugin 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//---------------------------------------------------------------------- 4749ce8969d3154e1560106cfe530444c09410f217Greg Claytonclass DebugMapModule; 4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass DWARFAbbreviationDeclaration; 4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass DWARFAbbreviationDeclarationSet; 50cbff0fb344c17ef0699c1375f6ddeb5bcd1bdbe2Greg Claytonclass DWARFileUnit; 5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass DWARFDebugAbbrev; 5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass DWARFDebugAranges; 5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass DWARFDebugInfo; 5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass DWARFDebugInfoEntry; 5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass DWARFDebugLine; 5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass DWARFDebugPubnames; 5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass DWARFDebugRanges; 58cbff0fb344c17ef0699c1375f6ddeb5bcd1bdbe2Greg Claytonclass DWARFDeclContext; 5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass DWARFDIECollection; 6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass DWARFFormValue; 61ad60bf486dee699dd524225b63271ddc5b6329b9Greg Claytonclass SymbolFileDWARFDebugMap; 6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 63444e35b5fdf15a25a427285650f06f1390e62c75Greg Claytonclass SymbolFileDWARF : public lldb_private::SymbolFile, public lldb_private::UserID 6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 6648f833c33b8c2713e99139941ce3b3885883c4f0Sean Callanan friend class SymbolFileDWARFDebugMap; 6749ce8969d3154e1560106cfe530444c09410f217Greg Clayton friend class DebugMapModule; 68be754e641cfee70cf7ab0c6d160e94a085416f26Greg Clayton friend class DWARFCompileUnit; 6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Static Functions 7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner static void 7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Initialize(); 7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner static void 7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Terminate(); 7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 780e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton static lldb_private::ConstString 7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetPluginNameStatic(); 8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner static const char * 8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetPluginDescriptionStatic(); 8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner static lldb_private::SymbolFile* 8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner CreateInstance (lldb_private::ObjectFile* obj_file); 8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Constructors and Destructors 8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SymbolFileDWARF(lldb_private::ObjectFile* ofile); 9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual ~SymbolFileDWARF(); 9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 92d0b7cfa22722fdaf4111a61d6eeb02a587710e16Sean Callanan virtual uint32_t CalculateAbilities (); 93b01000fd063629facd45044f137446fb748ee179Greg Clayton virtual void InitializeObject(); 9424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Compile Unit function calls 9724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual uint32_t GetNumCompileUnits(); 9924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual lldb::CompUnitSP ParseCompileUnitAtIndex(uint32_t index); 10024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 10149ce8969d3154e1560106cfe530444c09410f217Greg Clayton virtual lldb::LanguageType ParseCompileUnitLanguage (const lldb_private::SymbolContext& sc); 10224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual size_t ParseCompileUnitFunctions (const lldb_private::SymbolContext& sc); 10324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual bool ParseCompileUnitLineTable (const lldb_private::SymbolContext& sc); 10424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual bool ParseCompileUnitSupportFiles (const lldb_private::SymbolContext& sc, lldb_private::FileSpecList& support_files); 10524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual size_t ParseFunctionBlocks (const lldb_private::SymbolContext& sc); 10624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual size_t ParseTypes (const lldb_private::SymbolContext& sc); 10724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual size_t ParseVariablesForContext (const lldb_private::SymbolContext& sc); 10824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 10974124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton virtual lldb_private::Type* ResolveTypeUID(lldb::user_id_t type_uid); 11052f792329be5db8e38961350589e97e8f2823acdGreg Clayton virtual bool ResolveClangOpaqueTypeDefinition (lldb_private::ClangASTType& clang_type); 111462d4147f3bb9141bf62d904f58a623db00669dfGreg Clayton 1120be1edd34ff46e017b1b973c5a57e3de9f613bafGreg Clayton virtual lldb_private::Type* ResolveType (DWARFCompileUnit* dwarf_cu, const DWARFDebugInfoEntry* type_die, bool assert_not_being_parsed = true); 113c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan virtual clang::DeclContext* GetClangDeclContextContainingTypeUID (lldb::user_id_t type_uid); 114c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan virtual clang::DeclContext* GetClangDeclContextForTypeUID (const lldb_private::SymbolContext &sc, lldb::user_id_t type_uid); 11524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 11624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual uint32_t ResolveSymbolContext (const lldb_private::Address& so_addr, uint32_t resolve_scope, lldb_private::SymbolContext& sc); 11724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual uint32_t ResolveSymbolContext (const lldb_private::FileSpec& file_spec, uint32_t line, bool check_inlines, uint32_t resolve_scope, lldb_private::SymbolContextList& sc_list); 1180fcec13c6639ab49216fa9447b25888b7bc9ff59Sean Callanan virtual uint32_t FindGlobalVariables(const lldb_private::ConstString &name, const lldb_private::ClangNamespaceDecl *namespace_decl, bool append, uint32_t max_matches, lldb_private::VariableList& variables); 11924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual uint32_t FindGlobalVariables(const lldb_private::RegularExpression& regex, bool append, uint32_t max_matches, lldb_private::VariableList& variables); 120302d78c71902398ce1f422bd09216dd53a6abb88Sean Callanan virtual uint32_t FindFunctions(const lldb_private::ConstString &name, const lldb_private::ClangNamespaceDecl *namespace_decl, uint32_t name_type_mask, bool include_inlines, bool append, lldb_private::SymbolContextList& sc_list); 121302d78c71902398ce1f422bd09216dd53a6abb88Sean Callanan virtual uint32_t FindFunctions(const lldb_private::RegularExpression& regex, bool include_inlines, bool append, lldb_private::SymbolContextList& sc_list); 1220fcec13c6639ab49216fa9447b25888b7bc9ff59Sean Callanan virtual uint32_t FindTypes (const lldb_private::SymbolContext& sc, const lldb_private::ConstString &name, const lldb_private::ClangNamespaceDecl *namespace_decl, bool append, uint32_t max_matches, lldb_private::TypeList& types); 123b01000fd063629facd45044f137446fb748ee179Greg Clayton virtual lldb_private::TypeList * 124b01000fd063629facd45044f137446fb748ee179Greg Clayton GetTypeList (); 125a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton virtual size_t GetTypes (lldb_private::SymbolContextScope *sc_scope, 126a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton uint32_t type_mask, 127a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton lldb_private::TypeList &type_list); 128a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton 129b01000fd063629facd45044f137446fb748ee179Greg Clayton virtual lldb_private::ClangASTContext & 130b01000fd063629facd45044f137446fb748ee179Greg Clayton GetClangASTContext (); 131b01000fd063629facd45044f137446fb748ee179Greg Clayton 1326916e358c9725b75ed91f31236c147f26c9af10eGreg Clayton virtual lldb_private::ClangNamespaceDecl 133d7cb26e87841731c6452a9f2e997ed0f9c92625cGreg Clayton FindNamespace (const lldb_private::SymbolContext& sc, 1340fcec13c6639ab49216fa9447b25888b7bc9ff59Sean Callanan const lldb_private::ConstString &name, 1350fcec13c6639ab49216fa9447b25888b7bc9ff59Sean Callanan const lldb_private::ClangNamespaceDecl *parent_namespace_decl); 13624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 137b01000fd063629facd45044f137446fb748ee179Greg Clayton 138b01000fd063629facd45044f137446fb748ee179Greg Clayton //------------------------------------------------------------------ 139b01000fd063629facd45044f137446fb748ee179Greg Clayton // ClangASTContext callbacks for external source lookups. 140b01000fd063629facd45044f137446fb748ee179Greg Clayton //------------------------------------------------------------------ 141b01000fd063629facd45044f137446fb748ee179Greg Clayton static void 142b01000fd063629facd45044f137446fb748ee179Greg Clayton CompleteTagDecl (void *baton, clang::TagDecl *); 143b01000fd063629facd45044f137446fb748ee179Greg Clayton 144b01000fd063629facd45044f137446fb748ee179Greg Clayton static void 145b01000fd063629facd45044f137446fb748ee179Greg Clayton CompleteObjCInterfaceDecl (void *baton, clang::ObjCInterfaceDecl *); 146e6d72ca9a6b22cd062136bbff039c3d8217f798aGreg Clayton 147e6d72ca9a6b22cd062136bbff039c3d8217f798aGreg Clayton static void 148e6d72ca9a6b22cd062136bbff039c3d8217f798aGreg Clayton FindExternalVisibleDeclsByName (void *baton, 149e6d72ca9a6b22cd062136bbff039c3d8217f798aGreg Clayton const clang::DeclContext *DC, 150e6d72ca9a6b22cd062136bbff039c3d8217f798aGreg Clayton clang::DeclarationName Name, 151e6d72ca9a6b22cd062136bbff039c3d8217f798aGreg Clayton llvm::SmallVectorImpl <clang::NamedDecl *> *results); 152b01000fd063629facd45044f137446fb748ee179Greg Clayton 1533fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton static bool 1543fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton LayoutRecordType (void *baton, 1553fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton const clang::RecordDecl *record_decl, 1563fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton uint64_t &size, 1573fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton uint64_t &alignment, 1583fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton llvm::DenseMap <const clang::FieldDecl *, uint64_t> &field_offsets, 1593fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton llvm::DenseMap <const clang::CXXRecordDecl *, clang::CharUnits> &base_offsets, 1603fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton llvm::DenseMap <const clang::CXXRecordDecl *, clang::CharUnits> &vbase_offsets); 1613fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton 1623fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton bool 1633fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton LayoutRecordType (const clang::RecordDecl *record_decl, 1643fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton uint64_t &size, 1653fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton uint64_t &alignment, 1663fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton llvm::DenseMap <const clang::FieldDecl *, uint64_t> &field_offsets, 1673fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton llvm::DenseMap <const clang::CXXRecordDecl *, clang::CharUnits> &base_offsets, 1683fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton llvm::DenseMap <const clang::CXXRecordDecl *, clang::CharUnits> &vbase_offsets); 1693fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton 1703fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton struct LayoutInfo 1713fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton { 1723fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton LayoutInfo () : 1733fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton bit_size(0), 1743fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton alignment(0), 17588db4597c7567be050b7a729f7306832f28428bbGreg Clayton field_offsets(), 17688db4597c7567be050b7a729f7306832f28428bbGreg Clayton base_offsets(), 17788db4597c7567be050b7a729f7306832f28428bbGreg Clayton vbase_offsets() 1783fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton { 1793fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton } 1803fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton uint64_t bit_size; 1813fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton uint64_t alignment; 1823fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton llvm::DenseMap <const clang::FieldDecl *, uint64_t> field_offsets; 18388db4597c7567be050b7a729f7306832f28428bbGreg Clayton llvm::DenseMap <const clang::CXXRecordDecl *, clang::CharUnits> base_offsets; 18488db4597c7567be050b7a729f7306832f28428bbGreg Clayton llvm::DenseMap <const clang::CXXRecordDecl *, clang::CharUnits> vbase_offsets; 1853fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton }; 18624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 18724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // PluginInterface protocol 18824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 1890e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton virtual lldb_private::ConstString 19024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetPluginName(); 19124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 19224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual uint32_t 19324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetPluginVersion(); 19424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 19524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Approach 2 - count + accessor 19624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Index compile units would scan the initial compile units and register 19724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // them with the module. This would only be done on demand if and only if 19824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // the compile units were needed. 19924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //virtual size_t GetCompUnitCount() = 0; 20024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //virtual CompUnitSP GetCompUnitAtIndex(size_t cu_idx) = 0; 20124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 202144188bc458a35997d2f2e52206ab69747439073Greg Clayton const lldb_private::DataExtractor& get_debug_abbrev_data (); 203144188bc458a35997d2f2e52206ab69747439073Greg Clayton const lldb_private::DataExtractor& get_debug_aranges_data (); 204144188bc458a35997d2f2e52206ab69747439073Greg Clayton const lldb_private::DataExtractor& get_debug_frame_data (); 205144188bc458a35997d2f2e52206ab69747439073Greg Clayton const lldb_private::DataExtractor& get_debug_info_data (); 206144188bc458a35997d2f2e52206ab69747439073Greg Clayton const lldb_private::DataExtractor& get_debug_line_data (); 207144188bc458a35997d2f2e52206ab69747439073Greg Clayton const lldb_private::DataExtractor& get_debug_loc_data (); 208144188bc458a35997d2f2e52206ab69747439073Greg Clayton const lldb_private::DataExtractor& get_debug_ranges_data (); 209144188bc458a35997d2f2e52206ab69747439073Greg Clayton const lldb_private::DataExtractor& get_debug_str_data (); 210f6e3de2d877dc94120c72624a79e488c9bea5c35Greg Clayton const lldb_private::DataExtractor& get_apple_names_data (); 211f6e3de2d877dc94120c72624a79e488c9bea5c35Greg Clayton const lldb_private::DataExtractor& get_apple_types_data (); 21200db215522a0cf31082d26d7ab30d2aa30965acfGreg Clayton const lldb_private::DataExtractor& get_apple_namespaces_data (); 21324a6bd9835ed1655984397b0cdf35127e47681e9Greg Clayton const lldb_private::DataExtractor& get_apple_objc_data (); 21400db215522a0cf31082d26d7ab30d2aa30965acfGreg Clayton 21524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 21624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DWARFDebugAbbrev* DebugAbbrev(); 21724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const DWARFDebugAbbrev* DebugAbbrev() const; 21824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 21924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DWARFDebugInfo* DebugInfo(); 22024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const DWARFDebugInfo* DebugInfo() const; 22124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 22224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DWARFDebugRanges* DebugRanges(); 22324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const DWARFDebugRanges* DebugRanges() const; 22424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 22524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const lldb_private::DataExtractor& 226b0e68d996b28cf81a28aeceefd69f7ed8d4aba99Greg Clayton GetCachedSectionData (uint32_t got_flag, 227b0e68d996b28cf81a28aeceefd69f7ed8d4aba99Greg Clayton lldb::SectionType sect_type, 228b0e68d996b28cf81a28aeceefd69f7ed8d4aba99Greg Clayton lldb_private::DataExtractor &data); 22924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 23032a8c7e02b84fbc36ee0fdb553002a1880c8d83eGreg Clayton static bool 23132a8c7e02b84fbc36ee0fdb553002a1880c8d83eGreg Clayton SupportedVersion(uint16_t version); 23224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 23324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner clang::DeclContext * 234b523031335a9c1c6c23c0789b5c6522a6a2e2ca1Greg Clayton GetCachedClangDeclContextForDIE (const DWARFDebugInfoEntry *die) 235b523031335a9c1c6c23c0789b5c6522a6a2e2ca1Greg Clayton { 236b523031335a9c1c6c23c0789b5c6522a6a2e2ca1Greg Clayton DIEToDeclContextMap::iterator pos = m_die_to_decl_ctx.find(die); 237b523031335a9c1c6c23c0789b5c6522a6a2e2ca1Greg Clayton if (pos != m_die_to_decl_ctx.end()) 238b523031335a9c1c6c23c0789b5c6522a6a2e2ca1Greg Clayton return pos->second; 239b523031335a9c1c6c23c0789b5c6522a6a2e2ca1Greg Clayton else 240b523031335a9c1c6c23c0789b5c6522a6a2e2ca1Greg Clayton return NULL; 241b523031335a9c1c6c23c0789b5c6522a6a2e2ca1Greg Clayton } 242b523031335a9c1c6c23c0789b5c6522a6a2e2ca1Greg Clayton 243b523031335a9c1c6c23c0789b5c6522a6a2e2ca1Greg Clayton clang::DeclContext * 244c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan GetClangDeclContextForDIE (const lldb_private::SymbolContext &sc, DWARFCompileUnit *cu, const DWARFDebugInfoEntry *die); 245c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan 246c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan clang::DeclContext * 247c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan GetClangDeclContextForDIEOffset (const lldb_private::SymbolContext &sc, dw_offset_t die_offset); 248c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan 249c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan clang::DeclContext * 25003fd0d013cbd82ddcb3053a5add8f1f9891eeec5Greg Clayton GetClangDeclContextContainingDIE (DWARFCompileUnit *cu, 25103fd0d013cbd82ddcb3053a5add8f1f9891eeec5Greg Clayton const DWARFDebugInfoEntry *die, 25203fd0d013cbd82ddcb3053a5add8f1f9891eeec5Greg Clayton const DWARFDebugInfoEntry **decl_ctx_die); 25324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 25424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner clang::DeclContext * 255c617a4cb4a451be9d7e97d7af6e165d282b5390fSean Callanan GetClangDeclContextContainingDIEOffset (dw_offset_t die_offset); 2566c19c8a7da08b89ee153d7091aa8641348e0482cGreg Clayton 2576c19c8a7da08b89ee153d7091aa8641348e0482cGreg Clayton const DWARFDebugInfoEntry * 2586c19c8a7da08b89ee153d7091aa8641348e0482cGreg Clayton GetDeclContextDIEContainingDIE (DWARFCompileUnit *cu, const DWARFDebugInfoEntry *die); 2596c19c8a7da08b89ee153d7091aa8641348e0482cGreg Clayton 260e6d72ca9a6b22cd062136bbff039c3d8217f798aGreg Clayton void 2619b6898f3ec1dedbe1dfc8bd7cd1d82a5b10e1bb0Sean Callanan SearchDeclContext (const clang::DeclContext *decl_context, 2629b6898f3ec1dedbe1dfc8bd7cd1d82a5b10e1bb0Sean Callanan const char *name, 2639b6898f3ec1dedbe1dfc8bd7cd1d82a5b10e1bb0Sean Callanan llvm::SmallVectorImpl <clang::NamedDecl *> *results); 2649b6898f3ec1dedbe1dfc8bd7cd1d82a5b10e1bb0Sean Callanan 26524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb_private::Flags& 26624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetFlags () 26724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 26824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return m_flags; 26924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 27024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 27124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const lldb_private::Flags& 27224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetFlags () const 27324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 27424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return m_flags; 27524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 27624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 277b01000fd063629facd45044f137446fb748ee179Greg Clayton bool 27852f792329be5db8e38961350589e97e8f2823acdGreg Clayton HasForwardDeclForClangType (const lldb_private::ClangASTType &clang_type); 279b01000fd063629facd45044f137446fb748ee179Greg Clayton 28024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected: 28124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 28224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner enum 28324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 28424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner flagsGotDebugAbbrevData = (1 << 0), 28524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner flagsGotDebugArangesData = (1 << 1), 28624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner flagsGotDebugFrameData = (1 << 2), 28724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner flagsGotDebugInfoData = (1 << 3), 28824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner flagsGotDebugLineData = (1 << 4), 28924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner flagsGotDebugLocData = (1 << 5), 29024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner flagsGotDebugMacInfoData = (1 << 6), 29124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner flagsGotDebugPubNamesData = (1 << 7), 29224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner flagsGotDebugPubTypesData = (1 << 8), 29324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner flagsGotDebugRangesData = (1 << 9), 294c8cf5e234be554d4acb6ae644a8269c303c4f56eGreg Clayton flagsGotDebugStrData = (1 << 10), 29524a6bd9835ed1655984397b0cdf35127e47681e9Greg Clayton flagsGotAppleNamesData = (1 << 11), 29624a6bd9835ed1655984397b0cdf35127e47681e9Greg Clayton flagsGotAppleTypesData = (1 << 12), 29724a6bd9835ed1655984397b0cdf35127e47681e9Greg Clayton flagsGotAppleNamespacesData = (1 << 13), 29824a6bd9835ed1655984397b0cdf35127e47681e9Greg Clayton flagsGotAppleObjCData = (1 << 14) 29924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner }; 30082770e0df481f30c46fb7e905e99b45c1e6d31c8Greg Clayton 301db29bba117a0ea75b89c1280722225a3197b4313Greg Clayton bool NamespaceDeclMatchesThisSymbolFile (const lldb_private::ClangNamespaceDecl *namespace_decl); 302db29bba117a0ea75b89c1280722225a3197b4313Greg Clayton 30382770e0df481f30c46fb7e905e99b45c1e6d31c8Greg Clayton bool DIEIsInNamespace (const lldb_private::ClangNamespaceDecl *namespace_decl, 3040be1edd34ff46e017b1b973c5a57e3de9f613bafGreg Clayton DWARFCompileUnit* dwarf_cu, 30582770e0df481f30c46fb7e905e99b45c1e6d31c8Greg Clayton const DWARFDebugInfoEntry* die); 30624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 30724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DISALLOW_COPY_AND_ASSIGN (SymbolFileDWARF); 3080be1edd34ff46e017b1b973c5a57e3de9f613bafGreg Clayton lldb::CompUnitSP ParseCompileUnit (DWARFCompileUnit* dwarf_cu, uint32_t cu_idx); 30949ce8969d3154e1560106cfe530444c09410f217Greg Clayton DWARFCompileUnit* GetDWARFCompileUnit(lldb_private::CompileUnit *comp_unit); 31024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DWARFCompileUnit* GetNextUnparsedDWARFCompileUnit(DWARFCompileUnit* prev_cu); 3110be1edd34ff46e017b1b973c5a57e3de9f613bafGreg Clayton lldb_private::CompileUnit* GetCompUnitForDWARFCompUnit(DWARFCompileUnit* dwarf_cu, uint32_t cu_idx = UINT32_MAX); 3120be1edd34ff46e017b1b973c5a57e3de9f613bafGreg Clayton bool GetFunction (DWARFCompileUnit* dwarf_cu, const DWARFDebugInfoEntry* func_die, lldb_private::SymbolContext& sc); 3131d8173f1b622482bd6610cc34ffd5668b75cf7bdGreg Clayton lldb_private::Function * ParseCompileUnitFunction (const lldb_private::SymbolContext& sc, DWARFCompileUnit* dwarf_cu, const DWARFDebugInfoEntry *die); 31424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner size_t ParseFunctionBlocks (const lldb_private::SymbolContext& sc, 31575ccf50c3371d8c8e293af25461705b86fb10a46Greg Clayton lldb_private::Block *parent_block, 3161d8173f1b622482bd6610cc34ffd5668b75cf7bdGreg Clayton DWARFCompileUnit* dwarf_cu, 31724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const DWARFDebugInfoEntry *die, 31824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::addr_t subprogram_low_pc, 3192e45b0c3f6a6021aa7c064f715144599a2a712a0Greg Clayton uint32_t depth); 3201d8173f1b622482bd6610cc34ffd5668b75cf7bdGreg Clayton size_t ParseTypes (const lldb_private::SymbolContext& sc, DWARFCompileUnit* dwarf_cu, const DWARFDebugInfoEntry *die, bool parse_siblings, bool parse_children); 321462d4147f3bb9141bf62d904f58a623db00669dfGreg Clayton lldb::TypeSP ParseType (const lldb_private::SymbolContext& sc, DWARFCompileUnit* dwarf_cu, const DWARFDebugInfoEntry *die, bool *type_is_new); 3220be1edd34ff46e017b1b973c5a57e3de9f613bafGreg Clayton lldb_private::Type* ResolveTypeUID (DWARFCompileUnit* dwarf_cu, const DWARFDebugInfoEntry* die, bool assert_not_being_parsed); 32324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 32424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::VariableSP ParseVariableDIE( 32524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const lldb_private::SymbolContext& sc, 3261d8173f1b622482bd6610cc34ffd5668b75cf7bdGreg Clayton DWARFCompileUnit* dwarf_cu, 327178710cd4307f3d44dc76ebd70fc7daf7ebe17c5Greg Clayton const DWARFDebugInfoEntry *die, 328178710cd4307f3d44dc76ebd70fc7daf7ebe17c5Greg Clayton const lldb::addr_t func_low_pc); 32924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 33024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner size_t ParseVariables( 33124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const lldb_private::SymbolContext& sc, 3321d8173f1b622482bd6610cc34ffd5668b75cf7bdGreg Clayton DWARFCompileUnit* dwarf_cu, 333178710cd4307f3d44dc76ebd70fc7daf7ebe17c5Greg Clayton const lldb::addr_t func_low_pc, 33424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const DWARFDebugInfoEntry *die, 33524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool parse_siblings, 33624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool parse_children, 33724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb_private::VariableList* cc_variable_list = NULL); 33824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 339a23b44181b98ccaf5125cd7213e8c3624fb71eacSean Callanan class DelayedAddObjCClassProperty; 340a23b44181b98ccaf5125cd7213e8c3624fb71eacSean Callanan typedef std::vector <DelayedAddObjCClassProperty> DelayedPropertyList; 341a23b44181b98ccaf5125cd7213e8c3624fb71eacSean Callanan 3429c09181404cc35f65d5353231246959135fb7684Greg Clayton bool ClassOrStructIsVirtual ( 3439c09181404cc35f65d5353231246959135fb7684Greg Clayton DWARFCompileUnit* dwarf_cu, 3449c09181404cc35f65d5353231246959135fb7684Greg Clayton const DWARFDebugInfoEntry *parent_die); 3459c09181404cc35f65d5353231246959135fb7684Greg Clayton 34624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner size_t ParseChildMembers( 34724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const lldb_private::SymbolContext& sc, 3481d8173f1b622482bd6610cc34ffd5668b75cf7bdGreg Clayton DWARFCompileUnit* dwarf_cu, 34924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const DWARFDebugInfoEntry *die, 35052f792329be5db8e38961350589e97e8f2823acdGreg Clayton lldb_private::ClangASTType &class_clang_type, 3519488b7423b556c7c777b721d2094fd5ec4a47578Greg Clayton const lldb::LanguageType class_language, 35224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner std::vector<clang::CXXBaseSpecifier *>& base_classes, 35324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner std::vector<int>& member_accessibilities, 354b433a3d8b910d571c0bcdcd5018778ac3763e703Greg Clayton DWARFDIECollection& member_function_dies, 355a23b44181b98ccaf5125cd7213e8c3624fb71eacSean Callanan DelayedPropertyList& delayed_properties, 35670a4f92d0e5f605c8ed1662fa959d465c96b0fb9Sean Callanan lldb::AccessType &default_accessibility, 3573fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton bool &is_a_class, 3583fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton LayoutInfo &layout_info); 35924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 36024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner size_t ParseChildParameters( 36124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const lldb_private::SymbolContext& sc, 362c5dca6c656ffc94d2f958c56d7bc9076eac90783Greg Clayton clang::DeclContext *containing_decl_ctx, 3631d8173f1b622482bd6610cc34ffd5668b75cf7bdGreg Clayton DWARFCompileUnit* dwarf_cu, 36424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const DWARFDebugInfoEntry *parent_die, 365412440aa3a110e4068ee99729f7883c828fb3dceGreg Clayton bool skip_artificial, 36699309909259eacf4693458bfe44f913c316a09c6Sean Callanan bool &is_static, 36724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb_private::TypeList* type_list, 36852f792329be5db8e38961350589e97e8f2823acdGreg Clayton std::vector<lldb_private::ClangASTType>& function_args, 3692403b5e89760c1c970c3fe6936cb620d45dcf6c8Greg Clayton std::vector<clang::ParmVarDecl*>& function_param_decls, 370b7fad95031b51dde040dc8b3de7bd8db2d14f613Greg Clayton unsigned &type_quals, 371b7fad95031b51dde040dc8b3de7bd8db2d14f613Greg Clayton lldb_private::ClangASTContext::TemplateParameterInfos &template_param_infos); 37224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 37324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner size_t ParseChildEnumerators( 37424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const lldb_private::SymbolContext& sc, 37552f792329be5db8e38961350589e97e8f2823acdGreg Clayton lldb_private::ClangASTType &clang_type, 376d5e48bd4029b47cd298fd065429bb3a350a08324Greg Clayton bool is_signed, 37724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t enumerator_byte_size, 3781d8173f1b622482bd6610cc34ffd5668b75cf7bdGreg Clayton DWARFCompileUnit* dwarf_cu, 37924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const DWARFDebugInfoEntry *enum_die); 38024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 38124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void ParseChildArrayInfo( 38224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const lldb_private::SymbolContext& sc, 3831d8173f1b622482bd6610cc34ffd5668b75cf7bdGreg Clayton DWARFCompileUnit* dwarf_cu, 38424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const DWARFDebugInfoEntry *parent_die, 38524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int64_t& first_index, 38624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner std::vector<uint64_t>& element_orders, 38724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t& byte_stride, 38824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t& bit_stride); 38924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3908b7b2276132c7353cabd22000287b42badc26613Jim Ingham // Given a die_offset, figure out the symbol context representing that die. 3917a1e5da2bcea7ec37dff72591892015da1f9e125Greg Clayton bool ResolveFunction (dw_offset_t offset, 3927a1e5da2bcea7ec37dff72591892015da1f9e125Greg Clayton DWARFCompileUnit *&dwarf_cu, 3937a1e5da2bcea7ec37dff72591892015da1f9e125Greg Clayton lldb_private::SymbolContextList& sc_list); 3947a1e5da2bcea7ec37dff72591892015da1f9e125Greg Clayton 3957a1e5da2bcea7ec37dff72591892015da1f9e125Greg Clayton bool ResolveFunction (DWARFCompileUnit *cu, 3967a1e5da2bcea7ec37dff72591892015da1f9e125Greg Clayton const DWARFDebugInfoEntry *die, 3977a1e5da2bcea7ec37dff72591892015da1f9e125Greg Clayton lldb_private::SymbolContextList& sc_list); 3987a1e5da2bcea7ec37dff72591892015da1f9e125Greg Clayton 3998b7b2276132c7353cabd22000287b42badc26613Jim Ingham bool FunctionDieMatchesPartialName ( 4008b7b2276132c7353cabd22000287b42badc26613Jim Ingham const DWARFDebugInfoEntry* die, 4018b7b2276132c7353cabd22000287b42badc26613Jim Ingham const DWARFCompileUnit *dwarf_cu, 4028b7b2276132c7353cabd22000287b42badc26613Jim Ingham uint32_t name_type_mask, 4038b7b2276132c7353cabd22000287b42badc26613Jim Ingham const char *partial_name, 4048b7b2276132c7353cabd22000287b42badc26613Jim Ingham const char *base_name_start, 4058b7b2276132c7353cabd22000287b42badc26613Jim Ingham const char *base_name_end); 406d74270e83908066c946d150faec9516349e1118bGreg Clayton 40712bec71b323dc520f0e985a86e09c4712559e115Greg Clayton void FindFunctions( 40812bec71b323dc520f0e985a86e09c4712559e115Greg Clayton const lldb_private::ConstString &name, 40974124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton const NameToDIE &name_to_die, 41074124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton lldb_private::SymbolContextList& sc_list); 41174124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton 41274124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton void FindFunctions ( 41374124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton const lldb_private::RegularExpression ®ex, 41474124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton const NameToDIE &name_to_die, 41512bec71b323dc520f0e985a86e09c4712559e115Greg Clayton lldb_private::SymbolContextList& sc_list); 41612bec71b323dc520f0e985a86e09c4712559e115Greg Clayton 41700db215522a0cf31082d26d7ab30d2aa30965acfGreg Clayton void FindFunctions ( 41800db215522a0cf31082d26d7ab30d2aa30965acfGreg Clayton const lldb_private::RegularExpression ®ex, 41900db215522a0cf31082d26d7ab30d2aa30965acfGreg Clayton const DWARFMappedHash::MemoryTable &memory_table, 42000db215522a0cf31082d26d7ab30d2aa30965acfGreg Clayton lldb_private::SymbolContextList& sc_list); 42100db215522a0cf31082d26d7ab30d2aa30965acfGreg Clayton 42295e33b7b4b832ff5a8dfd0720fe6a100be894df6Greg Clayton lldb::TypeSP FindDefinitionTypeForDIE ( 4230be1edd34ff46e017b1b973c5a57e3de9f613bafGreg Clayton DWARFCompileUnit* dwarf_cu, 42495e33b7b4b832ff5a8dfd0720fe6a100be894df6Greg Clayton const DWARFDebugInfoEntry *die, 42595e33b7b4b832ff5a8dfd0720fe6a100be894df6Greg Clayton const lldb_private::ConstString &type_name); 426cbff0fb344c17ef0699c1375f6ddeb5bcd1bdbe2Greg Clayton 427cbff0fb344c17ef0699c1375f6ddeb5bcd1bdbe2Greg Clayton lldb::TypeSP FindDefinitionTypeForDWARFDeclContext ( 428cbff0fb344c17ef0699c1375f6ddeb5bcd1bdbe2Greg Clayton const DWARFDeclContext &die_decl_ctx); 42977917228890a15d40ec6dd28c5865dd1b7895053Greg Clayton 43077917228890a15d40ec6dd28c5865dd1b7895053Greg Clayton lldb::TypeSP FindCompleteObjCDefinitionTypeForDIE ( 43177917228890a15d40ec6dd28c5865dd1b7895053Greg Clayton const DWARFDebugInfoEntry *die, 432e6b976d3f1c42f18c85c87cb179954af7df5a542Greg Clayton const lldb_private::ConstString &type_name, 433e6b976d3f1c42f18c85c87cb179954af7df5a542Greg Clayton bool must_be_implementation); 434e6b976d3f1c42f18c85c87cb179954af7df5a542Greg Clayton 435e6b976d3f1c42f18c85c87cb179954af7df5a542Greg Clayton bool Supports_DW_AT_APPLE_objc_complete_type (DWARFCompileUnit *cu); 436e6b976d3f1c42f18c85c87cb179954af7df5a542Greg Clayton 437e6b976d3f1c42f18c85c87cb179954af7df5a542Greg Clayton lldb::TypeSP FindCompleteObjCDefinitionType (const lldb_private::ConstString &type_name, 438e6b976d3f1c42f18c85c87cb179954af7df5a542Greg Clayton bool header_definition_ok); 43977917228890a15d40ec6dd28c5865dd1b7895053Greg Clayton 44077917228890a15d40ec6dd28c5865dd1b7895053Greg Clayton lldb_private::Symbol * GetObjCClassSymbol (const lldb_private::ConstString &objc_class_name); 44177917228890a15d40ec6dd28c5865dd1b7895053Greg Clayton 44200db215522a0cf31082d26d7ab30d2aa30965acfGreg Clayton void ParseFunctions (const DIEArray &die_offsets, 44300db215522a0cf31082d26d7ab30d2aa30965acfGreg Clayton lldb_private::SymbolContextList& sc_list); 4444fb400f4dc762fb92f9dcf1f6a7656ed12b09a75Greg Clayton lldb::TypeSP GetTypeForDIE (DWARFCompileUnit *cu, 445462d4147f3bb9141bf62d904f58a623db00669dfGreg Clayton const DWARFDebugInfoEntry* die); 4464fb400f4dc762fb92f9dcf1f6a7656ed12b09a75Greg Clayton 447960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton uint32_t FindTypes(std::vector<dw_offset_t> die_offsets, uint32_t max_matches, lldb_private::TypeList& types); 44824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 44924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void Index(); 4509b6898f3ec1dedbe1dfc8bd7cd1d82a5b10e1bb0Sean Callanan 4519b6898f3ec1dedbe1dfc8bd7cd1d82a5b10e1bb0Sean Callanan void DumpIndexes(); 45224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 45349ce8969d3154e1560106cfe530444c09410f217Greg Clayton void SetDebugMapModule (const lldb::ModuleSP &module_sp) 454ad60bf486dee699dd524225b63271ddc5b6329b9Greg Clayton { 45549ce8969d3154e1560106cfe530444c09410f217Greg Clayton m_debug_map_module_wp = module_sp; 456ad60bf486dee699dd524225b63271ddc5b6329b9Greg Clayton } 45749ce8969d3154e1560106cfe530444c09410f217Greg Clayton 45849ce8969d3154e1560106cfe530444c09410f217Greg Clayton SymbolFileDWARFDebugMap * 45949ce8969d3154e1560106cfe530444c09410f217Greg Clayton GetDebugMapSymfile (); 460ad60bf486dee699dd524225b63271ddc5b6329b9Greg Clayton 4611bd2b2feb7694e06b9a971063c283f9c490479d2Greg Clayton const DWARFDebugInfoEntry * 4621bd2b2feb7694e06b9a971063c283f9c490479d2Greg Clayton FindBlockContainingSpecification (dw_offset_t func_die_offset, 4631bd2b2feb7694e06b9a971063c283f9c490479d2Greg Clayton dw_offset_t spec_block_die_offset, 4641bd2b2feb7694e06b9a971063c283f9c490479d2Greg Clayton DWARFCompileUnit **dwarf_cu_handle); 4651bd2b2feb7694e06b9a971063c283f9c490479d2Greg Clayton 4661bd2b2feb7694e06b9a971063c283f9c490479d2Greg Clayton const DWARFDebugInfoEntry * 4671bd2b2feb7694e06b9a971063c283f9c490479d2Greg Clayton FindBlockContainingSpecification (DWARFCompileUnit* dwarf_cu, 4681bd2b2feb7694e06b9a971063c283f9c490479d2Greg Clayton const DWARFDebugInfoEntry *die, 4691bd2b2feb7694e06b9a971063c283f9c490479d2Greg Clayton dw_offset_t spec_block_die_offset, 4701bd2b2feb7694e06b9a971063c283f9c490479d2Greg Clayton DWARFCompileUnit **dwarf_cu_handle); 4711bd2b2feb7694e06b9a971063c283f9c490479d2Greg Clayton 472d7cb26e87841731c6452a9f2e997ed0f9c92625cGreg Clayton clang::NamespaceDecl * 473d7cb26e87841731c6452a9f2e997ed0f9c92625cGreg Clayton ResolveNamespaceDIE (DWARFCompileUnit *curr_cu, const DWARFDebugInfoEntry *die); 474d7cb26e87841731c6452a9f2e997ed0f9c92625cGreg Clayton 475c3c4661c6a7527580e605dbb69bef7634971fe13Greg Clayton UniqueDWARFASTTypeMap & 476c3c4661c6a7527580e605dbb69bef7634971fe13Greg Clayton GetUniqueDWARFASTTypeMap (); 477c3c4661c6a7527580e605dbb69bef7634971fe13Greg Clayton 478e6d72ca9a6b22cd062136bbff039c3d8217f798aGreg Clayton void LinkDeclContextToDIE (clang::DeclContext *decl_ctx, 479e6d72ca9a6b22cd062136bbff039c3d8217f798aGreg Clayton const DWARFDebugInfoEntry *die) 480e6d72ca9a6b22cd062136bbff039c3d8217f798aGreg Clayton { 481e6d72ca9a6b22cd062136bbff039c3d8217f798aGreg Clayton m_die_to_decl_ctx[die] = decl_ctx; 48203fd0d013cbd82ddcb3053a5add8f1f9891eeec5Greg Clayton // There can be many DIEs for a single decl context 48303fd0d013cbd82ddcb3053a5add8f1f9891eeec5Greg Clayton m_decl_ctx_to_die[decl_ctx].insert(die); 484e6d72ca9a6b22cd062136bbff039c3d8217f798aGreg Clayton } 485e6d72ca9a6b22cd062136bbff039c3d8217f798aGreg Clayton 486444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton bool 487444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton UserIDMatches (lldb::user_id_t uid) const 488444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton { 489444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton const lldb::user_id_t high_uid = uid & 0xffffffff00000000ull; 490444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton if (high_uid) 491444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton return high_uid == GetID(); 492444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton return true; 493444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton } 494b5c023af6df0f4f9eddd14284ca986f578c6bee2Greg Clayton 495444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton lldb::user_id_t 496444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton MakeUserID (dw_offset_t die_offset) const 497444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton { 498444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton return GetID() | die_offset; 499444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton } 500444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton 501f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton static bool 502f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton DeclKindIsCXXClass (clang::Decl::Kind decl_kind) 503f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton { 504f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton switch (decl_kind) 505f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton { 506f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton case clang::Decl::CXXRecord: 507f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton case clang::Decl::ClassTemplateSpecialization: 508f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton return true; 509f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton default: 510f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton break; 511f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton } 512f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton return false; 513f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton } 514f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton 515f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton bool 516f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton ParseTemplateParameterInfos (DWARFCompileUnit* dwarf_cu, 517f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton const DWARFDebugInfoEntry *parent_die, 518f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton lldb_private::ClangASTContext::TemplateParameterInfos &template_param_infos); 519f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton 520b7fad95031b51dde040dc8b3de7bd8db2d14f613Greg Clayton bool 521b7fad95031b51dde040dc8b3de7bd8db2d14f613Greg Clayton ParseTemplateDIE (DWARFCompileUnit* dwarf_cu, 522b7fad95031b51dde040dc8b3de7bd8db2d14f613Greg Clayton const DWARFDebugInfoEntry *die, 523b7fad95031b51dde040dc8b3de7bd8db2d14f613Greg Clayton lldb_private::ClangASTContext::TemplateParameterInfos &template_param_infos); 524b7fad95031b51dde040dc8b3de7bd8db2d14f613Greg Clayton 525f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton clang::ClassTemplateDecl * 526f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton ParseClassTemplateDecl (clang::DeclContext *decl_ctx, 5275e8eb5c428e91b99f3884b53fc5deea0ecb001cdGreg Clayton lldb::AccessType access_type, 528f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton const char *parent_name, 529f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton int tag_decl_kind, 530f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton const lldb_private::ClangASTContext::TemplateParameterInfos &template_param_infos); 531f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton 532b88575efac471db9156c731c3e28ad7e6d14b5efGreg Clayton bool 533b88575efac471db9156c731c3e28ad7e6d14b5efGreg Clayton DIEDeclContextsMatch (DWARFCompileUnit* cu1, const DWARFDebugInfoEntry *die1, 534b88575efac471db9156c731c3e28ad7e6d14b5efGreg Clayton DWARFCompileUnit* cu2, const DWARFDebugInfoEntry *die2); 5358d6115615f55ae38ff141f0a6859d59750da8d02Sean Callanan 5368d6115615f55ae38ff141f0a6859d59750da8d02Sean Callanan bool 5378d6115615f55ae38ff141f0a6859d59750da8d02Sean Callanan ClassContainsSelector (DWARFCompileUnit *dwarf_cu, 5388d6115615f55ae38ff141f0a6859d59750da8d02Sean Callanan const DWARFDebugInfoEntry *class_die, 5398d6115615f55ae38ff141f0a6859d59750da8d02Sean Callanan const lldb_private::ConstString &selector); 540f6a5bd78aaef0e4d477208289ace03cfa7f60649Greg Clayton 541bd5c23ddf5bacc78548bbe348c8c5d98c372aedcGreg Clayton bool 542d3beda617568982a0295481551d23f9b42df801dSean Callanan CopyUniqueClassMethodTypes (SymbolFileDWARF *class_symfile, 543d3beda617568982a0295481551d23f9b42df801dSean Callanan lldb_private::Type *class_type, 544bd5c23ddf5bacc78548bbe348c8c5d98c372aedcGreg Clayton DWARFCompileUnit* src_cu, 545bd5c23ddf5bacc78548bbe348c8c5d98c372aedcGreg Clayton const DWARFDebugInfoEntry *src_class_die, 546bd5c23ddf5bacc78548bbe348c8c5d98c372aedcGreg Clayton DWARFCompileUnit* dst_cu, 547d3beda617568982a0295481551d23f9b42df801dSean Callanan const DWARFDebugInfoEntry *dst_class_die, 548d3beda617568982a0295481551d23f9b42df801dSean Callanan llvm::SmallVectorImpl <const DWARFDebugInfoEntry *> &failures); 549bd5c23ddf5bacc78548bbe348c8c5d98c372aedcGreg Clayton 550464a5063bc59755cb6ec063d0b2491097302d2abGreg Clayton bool 551464a5063bc59755cb6ec063d0b2491097302d2abGreg Clayton FixupAddress (lldb_private::Address &addr); 552464a5063bc59755cb6ec063d0b2491097302d2abGreg Clayton 553a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton typedef std::set<lldb_private::Type *> TypeSet; 554a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton 555a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton void 556a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton GetTypes (DWARFCompileUnit* dwarf_cu, 557a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton const DWARFDebugInfoEntry *die, 558a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton dw_offset_t min_die_offset, 559a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton dw_offset_t max_die_offset, 560a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton uint32_t type_mask, 561a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton TypeSet &type_set); 562a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton 56349ce8969d3154e1560106cfe530444c09410f217Greg Clayton lldb::ModuleWP m_debug_map_module_wp; 564e5748d889fb7fb97b3ff07444894d7714776b609Greg Clayton SymbolFileDWARFDebugMap * m_debug_map_symfile; 565e5748d889fb7fb97b3ff07444894d7714776b609Greg Clayton clang::TranslationUnitDecl * m_clang_tu_decl; 56624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb_private::Flags m_flags; 56724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb_private::DataExtractor m_dwarf_data; 56824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb_private::DataExtractor m_data_debug_abbrev; 569144188bc458a35997d2f2e52206ab69747439073Greg Clayton lldb_private::DataExtractor m_data_debug_aranges; 57024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb_private::DataExtractor m_data_debug_frame; 57124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb_private::DataExtractor m_data_debug_info; 57224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb_private::DataExtractor m_data_debug_line; 57324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb_private::DataExtractor m_data_debug_loc; 57424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb_private::DataExtractor m_data_debug_ranges; 57524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb_private::DataExtractor m_data_debug_str; 576f6e3de2d877dc94120c72624a79e488c9bea5c35Greg Clayton lldb_private::DataExtractor m_data_apple_names; 577f6e3de2d877dc94120c72624a79e488c9bea5c35Greg Clayton lldb_private::DataExtractor m_data_apple_types; 57800db215522a0cf31082d26d7ab30d2aa30965acfGreg Clayton lldb_private::DataExtractor m_data_apple_namespaces; 57924a6bd9835ed1655984397b0cdf35127e47681e9Greg Clayton lldb_private::DataExtractor m_data_apple_objc; 58024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 58181a96aa6242f7b559770f5dc62316253cb8cb0d4Greg Clayton // The unique pointer items below are generated on demand if and when someone accesses 58224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // them through a non const version of this class. 583102b2c2681c9a830afe25bfea35557421905e42cGreg Clayton std::unique_ptr<DWARFDebugAbbrev> m_abbr; 584102b2c2681c9a830afe25bfea35557421905e42cGreg Clayton std::unique_ptr<DWARFDebugInfo> m_info; 585102b2c2681c9a830afe25bfea35557421905e42cGreg Clayton std::unique_ptr<DWARFDebugLine> m_line; 586102b2c2681c9a830afe25bfea35557421905e42cGreg Clayton std::unique_ptr<DWARFMappedHash::MemoryTable> m_apple_names_ap; 587102b2c2681c9a830afe25bfea35557421905e42cGreg Clayton std::unique_ptr<DWARFMappedHash::MemoryTable> m_apple_types_ap; 588102b2c2681c9a830afe25bfea35557421905e42cGreg Clayton std::unique_ptr<DWARFMappedHash::MemoryTable> m_apple_namespaces_ap; 589102b2c2681c9a830afe25bfea35557421905e42cGreg Clayton std::unique_ptr<DWARFMappedHash::MemoryTable> m_apple_objc_ap; 59074124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton NameToDIE m_function_basename_index; // All concrete functions 59174124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton NameToDIE m_function_fullname_index; // All concrete functions 59274124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton NameToDIE m_function_method_index; // All inlined functions 59374124754d6d8ffda5bdaef8ac87e7faaeef3b358Greg Clayton NameToDIE m_function_selector_index; // All method names for functions of classes 594ad60bf486dee699dd524225b63271ddc5b6329b9Greg Clayton NameToDIE m_objc_class_selectors_index; // Given a class name, find all selectors for the class 59500db215522a0cf31082d26d7ab30d2aa30965acfGreg Clayton NameToDIE m_global_index; // Global and static variables 59600db215522a0cf31082d26d7ab30d2aa30965acfGreg Clayton NameToDIE m_type_index; // All type DIE offsets 59700db215522a0cf31082d26d7ab30d2aa30965acfGreg Clayton NameToDIE m_namespace_index; // All type DIE offsets 598e6b976d3f1c42f18c85c87cb179954af7df5a542Greg Clayton bool m_indexed:1, 599e6b976d3f1c42f18c85c87cb179954af7df5a542Greg Clayton m_is_external_ast_source:1, 600e6b976d3f1c42f18c85c87cb179954af7df5a542Greg Clayton m_using_apple_tables:1; 601e6b976d3f1c42f18c85c87cb179954af7df5a542Greg Clayton lldb_private::LazyBool m_supports_DW_AT_APPLE_objc_complete_type; 60224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 603102b2c2681c9a830afe25bfea35557421905e42cGreg Clayton std::unique_ptr<DWARFDebugRanges> m_ranges; 604a8d4241dcd129f289710c909491e0e80e7e3d732Greg Clayton UniqueDWARFASTTypeMap m_unique_ast_type_map; 60503fd0d013cbd82ddcb3053a5add8f1f9891eeec5Greg Clayton typedef llvm::SmallPtrSet<const DWARFDebugInfoEntry *, 4> DIEPointerSet; 60624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef llvm::DenseMap<const DWARFDebugInfoEntry *, clang::DeclContext *> DIEToDeclContextMap; 60703fd0d013cbd82ddcb3053a5add8f1f9891eeec5Greg Clayton typedef llvm::DenseMap<const clang::DeclContext *, DIEPointerSet> DeclContextToDIEMap; 6084fb400f4dc762fb92f9dcf1f6a7656ed12b09a75Greg Clayton typedef llvm::DenseMap<const DWARFDebugInfoEntry *, lldb_private::Type *> DIEToTypePtr; 6094fb400f4dc762fb92f9dcf1f6a7656ed12b09a75Greg Clayton typedef llvm::DenseMap<const DWARFDebugInfoEntry *, lldb::VariableSP> DIEToVariableSP; 610462d4147f3bb9141bf62d904f58a623db00669dfGreg Clayton typedef llvm::DenseMap<const DWARFDebugInfoEntry *, lldb::clang_type_t> DIEToClangType; 611462d4147f3bb9141bf62d904f58a623db00669dfGreg Clayton typedef llvm::DenseMap<lldb::clang_type_t, const DWARFDebugInfoEntry *> ClangTypeToDIE; 6123fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton typedef llvm::DenseMap<const clang::RecordDecl *, LayoutInfo> RecordDeclToLayoutMap; 61324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DIEToDeclContextMap m_die_to_decl_ctx; 614e6d72ca9a6b22cd062136bbff039c3d8217f798aGreg Clayton DeclContextToDIEMap m_decl_ctx_to_die; 6154fb400f4dc762fb92f9dcf1f6a7656ed12b09a75Greg Clayton DIEToTypePtr m_die_to_type; 6164fb400f4dc762fb92f9dcf1f6a7656ed12b09a75Greg Clayton DIEToVariableSP m_die_to_variable_sp; 617462d4147f3bb9141bf62d904f58a623db00669dfGreg Clayton DIEToClangType m_forward_decl_die_to_clang_type; 618462d4147f3bb9141bf62d904f58a623db00669dfGreg Clayton ClangTypeToDIE m_forward_decl_clang_type_to_die; 6193fc0c4f12b19f1e2bd276d2b6eb0fdd096a01414Greg Clayton RecordDeclToLayoutMap m_record_decl_to_layout_map; 62024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 62124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 622144188bc458a35997d2f2e52206ab69747439073Greg Clayton#endif // SymbolFileDWARF_SymbolFileDWARF_h_ 623