SymbolFileDWARFDwo.h revision 360660
1323275Sasomers//===-- SymbolFileDWARFDwo.h ------------------------------------*- C++ -*-===// 2323275Sasomers// 3323275Sasomers// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4323275Sasomers// See https://llvm.org/LICENSE.txt for license information. 5323275Sasomers// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6323275Sasomers// 7323275Sasomers//===----------------------------------------------------------------------===// 8323275Sasomers 9323275Sasomers#ifndef SymbolFileDWARFDwo_SymbolFileDWARFDwo_h_ 10323275Sasomers#define SymbolFileDWARFDwo_SymbolFileDWARFDwo_h_ 11323275Sasomers 12323275Sasomers#include "SymbolFileDWARF.h" 13323275Sasomers 14323275Sasomersclass SymbolFileDWARFDwo : public SymbolFileDWARF { 15323275Sasomerspublic: 16323275Sasomers SymbolFileDWARFDwo(lldb::ObjectFileSP objfile, DWARFCompileUnit &dwarf_cu); 17323275Sasomers 18323275Sasomers ~SymbolFileDWARFDwo() override = default; 19323275Sasomers 20323275Sasomers lldb::CompUnitSP ParseCompileUnit(DWARFCompileUnit &dwarf_cu) override; 21323275Sasomers 22323275Sasomers DWARFCompileUnit *GetCompileUnit(); 23323275Sasomers 24323275Sasomers DWARFUnit * 25323275Sasomers GetDWARFCompileUnit(lldb_private::CompileUnit *comp_unit) override; 26323275Sasomers 27323275Sasomers lldb_private::DWARFExpression::LocationListFormat 28323275Sasomers GetLocationListFormat() const override; 29323275Sasomers 30323275Sasomers size_t GetObjCMethodDIEOffsets(lldb_private::ConstString class_name, 31323275Sasomers DIEArray &method_die_offsets) override; 32323275Sasomers 33323275Sasomers lldb_private::TypeSystem * 34323275Sasomers GetTypeSystemForLanguage(lldb::LanguageType language) override; 35323275Sasomers 36323275Sasomers DWARFDIE 37323275Sasomers GetDIE(const DIERef &die_ref) override; 38323275Sasomers 39323275Sasomers std::unique_ptr<SymbolFileDWARFDwo> 40323275Sasomers GetDwoSymbolFileForCompileUnit(DWARFUnit &dwarf_cu, 41323275Sasomers const DWARFDebugInfoEntry &cu_die) override { 42323275Sasomers return nullptr; 43323275Sasomers } 44323275Sasomers 45323275Sasomers DWARFCompileUnit *GetBaseCompileUnit() override { return &m_base_dwarf_cu; } 46323275Sasomers 47323275Sasomers llvm::Optional<uint32_t> GetDwoNum() override { return GetID() >> 32; } 48323275Sasomers 49323275Sasomersprotected: 50323275Sasomers void LoadSectionData(lldb::SectionType sect_type, 51323275Sasomers lldb_private::DWARFDataExtractor &data) override; 52323275Sasomers 53323275Sasomers DIEToTypePtr &GetDIEToType() override; 54323275Sasomers 55323275Sasomers DIEToVariableSP &GetDIEToVariable() override; 56323275Sasomers 57323275Sasomers DIEToClangType &GetForwardDeclDieToClangType() override; 58323275Sasomers 59323275Sasomers ClangTypeToDIE &GetForwardDeclClangTypeToDie() override; 60323275Sasomers 61323275Sasomers UniqueDWARFASTTypeMap &GetUniqueDWARFASTTypeMap() override; 62323275Sasomers 63323275Sasomers lldb::TypeSP FindDefinitionTypeForDWARFDeclContext( 64 const DWARFDeclContext &die_decl_ctx) override; 65 66 lldb::TypeSP FindCompleteObjCDefinitionTypeForDIE( 67 const DWARFDIE &die, lldb_private::ConstString type_name, 68 bool must_be_implementation) override; 69 70 SymbolFileDWARF &GetBaseSymbolFile(); 71 72 DWARFCompileUnit *ComputeCompileUnit(); 73 74 lldb::ObjectFileSP m_obj_file_sp; 75 DWARFCompileUnit &m_base_dwarf_cu; 76 DWARFCompileUnit *m_cu = nullptr; 77}; 78 79#endif // SymbolFileDWARFDwo_SymbolFileDWARFDwo_h_ 80