| //===-- 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 <memory> |
| |
| // 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<SymbolFileDWARFDwp> |
| Create(lldb::ModuleSP module_sp, const lldb_private::FileSpec &file_spec); |
| |
| std::unique_ptr<SymbolFileDWARFDwo> |
| GetSymbolFileForDwoId(DWARFUnit *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<lldb::SectionType, lldb_private::DWARFDataExtractor> m_sections; |
| |
| llvm::DWARFUnitIndex m_debug_cu_index; |
| std::map<uint64_t, const llvm::DWARFUnitIndex::Entry *> m_debug_cu_index_map; |
| }; |
| |
| #endif // SymbolFileDWARFDwp_SymbolFileDWARFDwp_h_ |