1 //===-- DWARFDebugMacro.h ----------------------------------------*- C++
4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 // See https://llvm.org/LICENSE.txt for license information.
6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
8 //===----------------------------------------------------------------------===//
10 #ifndef LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFDEBUGMACRO_H
11 #define LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFDEBUGMACRO_H
15 #include "lldb/Core/dwarf.h"
16 #include "lldb/Symbol/DebugMacros.h"
17 #include "lldb/lldb-types.h"
19 namespace lldb_private
{
20 class DWARFDataExtractor
;
23 namespace lldb_private::plugin
{
25 class SymbolFileDWARF
;
27 class DWARFDebugMacroHeader
{
30 OFFSET_SIZE_MASK
= 0x1,
31 DEBUG_LINE_OFFSET_MASK
= 0x2,
32 OPCODE_OPERANDS_TABLE_MASK
= 0x4
35 static DWARFDebugMacroHeader
36 ParseHeader(const DWARFDataExtractor
&debug_macro_data
,
37 lldb::offset_t
*offset
);
39 bool OffsetIs64Bit() const { return m_offset_is_64_bit
; }
42 static void SkipOperandTable(const DWARFDataExtractor
&debug_macro_data
,
43 lldb::offset_t
*offset
);
45 uint16_t m_version
= 0;
46 bool m_offset_is_64_bit
= false;
47 uint64_t m_debug_line_offset
= 0;
50 class DWARFDebugMacroEntry
{
52 static void ReadMacroEntries(const DWARFDataExtractor
&debug_macro_data
,
53 const DWARFDataExtractor
&debug_str_data
,
54 const bool offset_is_64_bit
,
55 lldb::offset_t
*sect_offset
,
56 SymbolFileDWARF
*sym_file_dwarf
,
57 DebugMacrosSP
&debug_macros_sp
);
60 } // namespace lldb_private::plugin
62 #endif // LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFDEBUGMACRO_H