//===-- SymbolFileDWARFDwp.h ------------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef SymbolFileDWARFDwp_SymbolFileDWARFDwp_h_ #define SymbolFileDWARFDwp_SymbolFileDWARFDwp_h_ // C Includes // C++ Includes #include // Other libraries and framework includes #include "llvm/DebugInfo/DWARF/DWARFUnitIndex.h" // Project includes #include "lldb/Core/Module.h" #include "DWARFDataExtractor.h" #include "SymbolFileDWARFDwo.h" class SymbolFileDWARFDwp { public: static std::unique_ptr Create(lldb::ModuleSP module_sp, const lldb_private::FileSpec &file_spec); std::unique_ptr GetSymbolFileForDwoId(DWARFCompileUnit *dwarf_cu, uint64_t dwo_id); bool LoadSectionData(uint64_t dwo_id, lldb::SectionType sect_type, lldb_private::DWARFDataExtractor &data); private: explicit SymbolFileDWARFDwp(lldb::ModuleSP module_sp, lldb::ObjectFileSP obj_file); bool LoadRawSectionData(lldb::SectionType sect_type, lldb_private::DWARFDataExtractor &data); void InitDebugCUIndexMap(); lldb::ObjectFileSP m_obj_file; std::mutex m_sections_mutex; std::map m_sections; llvm::DWARFUnitIndex m_debug_cu_index; std::map m_debug_cu_index_map; }; #endif // SymbolFileDWARFDwp_SymbolFileDWARFDwp_h_