1 //===-- SymbolFileDWARFDwo.h ------------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef SymbolFileDWARFDwo_SymbolFileDWARFDwo_h_ 10 #define SymbolFileDWARFDwo_SymbolFileDWARFDwo_h_ 11 12 #include "SymbolFileDWARF.h" 13 14 class SymbolFileDWARFDwo : public SymbolFileDWARF { 15 public: 16 SymbolFileDWARFDwo(lldb::ObjectFileSP objfile, DWARFUnit *dwarf_cu); 17 18 ~SymbolFileDWARFDwo() override = default; 19 20 lldb::CompUnitSP ParseCompileUnit(DWARFUnit *dwarf_cu, 21 uint32_t cu_idx) override; 22 23 DWARFUnit *GetCompileUnit(); 24 25 DWARFUnit * 26 GetDWARFCompileUnit(lldb_private::CompileUnit *comp_unit) override; 27 28 lldb_private::DWARFExpression::LocationListFormat 29 GetLocationListFormat() const override; 30 31 size_t GetObjCMethodDIEOffsets(lldb_private::ConstString class_name, 32 DIEArray &method_die_offsets) override; 33 34 lldb_private::TypeSystem * 35 GetTypeSystemForLanguage(lldb::LanguageType language) override; 36 37 DWARFDIE 38 GetDIE(const DIERef &die_ref) override; 39 40 std::unique_ptr<SymbolFileDWARFDwo> 41 GetDwoSymbolFileForCompileUnit(DWARFUnit &dwarf_cu, 42 const DWARFDebugInfoEntry &cu_die) override { 43 return nullptr; 44 } 45 46 DWARFUnit *GetBaseCompileUnit() override; 47 48 const lldb_private::DWARFDataExtractor &get_debug_abbrev_data() override; 49 const lldb_private::DWARFDataExtractor &get_debug_addr_data() override; 50 const lldb_private::DWARFDataExtractor &get_debug_info_data() override; 51 const lldb_private::DWARFDataExtractor &get_debug_str_data() override; 52 const lldb_private::DWARFDataExtractor &get_debug_str_offsets_data() override; 53 54 protected: 55 void LoadSectionData(lldb::SectionType sect_type, 56 lldb_private::DWARFDataExtractor &data) override; 57 58 DIEToTypePtr &GetDIEToType() override; 59 60 DIEToVariableSP &GetDIEToVariable() override; 61 62 DIEToClangType &GetForwardDeclDieToClangType() override; 63 64 ClangTypeToDIE &GetForwardDeclClangTypeToDie() override; 65 66 UniqueDWARFASTTypeMap &GetUniqueDWARFASTTypeMap() override; 67 68 lldb::TypeSP FindDefinitionTypeForDWARFDeclContext( 69 const DWARFDeclContext &die_decl_ctx) override; 70 71 lldb::TypeSP FindCompleteObjCDefinitionTypeForDIE( 72 const DWARFDIE &die, lldb_private::ConstString type_name, 73 bool must_be_implementation) override; 74 75 SymbolFileDWARF *GetBaseSymbolFile(); 76 77 lldb::ObjectFileSP m_obj_file_sp; 78 DWARFUnit *m_base_dwarf_cu; 79 }; 80 81 #endif // SymbolFileDWARFDwo_SymbolFileDWARFDwo_h_ 82