1 //===-- DWARFContext.h ------------------------------------------*- C++ -*-===//
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
7 //===----------------------------------------------------------------------===//
9 #ifndef LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFCONTEXT_H
10 #define LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFCONTEXT_H
12 #include "DWARFDataExtractor.h"
13 #include "lldb/Core/Section.h"
14 #include "llvm/DebugInfo/DWARF/DWARFContext.h"
15 #include "llvm/Support/Threading.h"
19 namespace lldb_private::plugin
{
23 SectionList
*m_main_section_list
;
24 SectionList
*m_dwo_section_list
;
25 mutable std::unique_ptr
<llvm::DWARFContext
> m_llvm_context
;
29 DWARFDataExtractor data
;
32 SectionData m_data_debug_abbrev
;
33 SectionData m_data_debug_addr
;
34 SectionData m_data_debug_aranges
;
35 SectionData m_data_debug_cu_index
;
36 SectionData m_data_debug_info
;
37 SectionData m_data_debug_line
;
38 SectionData m_data_debug_line_str
;
39 SectionData m_data_debug_loc
;
40 SectionData m_data_debug_loclists
;
41 SectionData m_data_debug_macro
;
42 SectionData m_data_debug_ranges
;
43 SectionData m_data_debug_rnglists
;
44 SectionData m_data_debug_str
;
45 SectionData m_data_debug_str_offsets
;
46 SectionData m_data_debug_tu_index
;
47 SectionData m_data_debug_types
;
49 const DWARFDataExtractor
&
50 LoadOrGetSection(std::optional
<lldb::SectionType
> main_section_type
,
51 std::optional
<lldb::SectionType
> dwo_section_type
,
54 const DWARFDataExtractor
&getOrLoadCuIndexData();
55 const DWARFDataExtractor
&getOrLoadTuIndexData();
58 explicit DWARFContext(SectionList
*main_section_list
,
59 SectionList
*dwo_section_list
)
60 : m_main_section_list(main_section_list
),
61 m_dwo_section_list(dwo_section_list
) {}
63 const DWARFDataExtractor
&getOrLoadAbbrevData();
64 const DWARFDataExtractor
&getOrLoadAddrData();
65 const DWARFDataExtractor
&getOrLoadArangesData();
66 const DWARFDataExtractor
&getOrLoadDebugInfoData();
67 const DWARFDataExtractor
&getOrLoadLineData();
68 const DWARFDataExtractor
&getOrLoadLineStrData();
69 const DWARFDataExtractor
&getOrLoadLocData();
70 const DWARFDataExtractor
&getOrLoadLocListsData();
71 const DWARFDataExtractor
&getOrLoadMacroData();
72 const DWARFDataExtractor
&getOrLoadRangesData();
73 const DWARFDataExtractor
&getOrLoadRngListsData();
74 const DWARFDataExtractor
&getOrLoadStrData();
75 const DWARFDataExtractor
&getOrLoadStrOffsetsData();
76 const DWARFDataExtractor
&getOrLoadDebugTypesData();
78 bool isDwo() { return m_dwo_section_list
!= nullptr; }
80 llvm::DWARFContext
&GetAsLLVM();
83 } // namespace lldb_private::plugin