1193323Sed//===-- DWARFDebugMacro.h ----------------------------------------*- C++ 2193323Sed//-*-===// 3193323Sed// 4193323Sed// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5193323Sed// See https://llvm.org/LICENSE.txt for license information. 6193323Sed// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7193323Sed// 8193323Sed//===----------------------------------------------------------------------===// 9193323Sed 10193323Sed#ifndef LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFDEBUGMACRO_H 11193323Sed#define LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFDEBUGMACRO_H 12193323Sed 13193323Sed#include <map> 14249423Sdim 15218893Sdim#include "lldb/Core/dwarf.h" 16193323Sed#include "lldb/Symbol/DebugMacros.h" 17226633Sdim#include "lldb/lldb-types.h" 18249423Sdim 19218893Sdimnamespace lldb_private { 20198090Srdivackyclass DWARFDataExtractor; 21226633Sdim} 22193323Sed 23234353Sdimnamespace lldb_private::plugin { 24193323Sednamespace dwarf { 25193323Sedclass SymbolFileDWARF; 26226633Sdim 27226633Sdimclass DWARFDebugMacroHeader { 28226633Sdimpublic: 29226633Sdim enum HeaderFlagMask { 30221345Sdim OFFSET_SIZE_MASK = 0x1, 31249423Sdim DEBUG_LINE_OFFSET_MASK = 0x2, 32249423Sdim OPCODE_OPERANDS_TABLE_MASK = 0x4 33249423Sdim }; 34249423Sdim 35249423Sdim static DWARFDebugMacroHeader 36198090Srdivacky ParseHeader(const DWARFDataExtractor &debug_macro_data, 37198090Srdivacky lldb::offset_t *offset); 38198090Srdivacky 39198090Srdivacky bool OffsetIs64Bit() const { return m_offset_is_64_bit; } 40193323Sed 41193323Sedprivate: 42234353Sdim static void SkipOperandTable(const DWARFDataExtractor &debug_macro_data, 43193323Sed lldb::offset_t *offset); 44193323Sed 45226633Sdim uint16_t m_version = 0; 46226633Sdim bool m_offset_is_64_bit = false; 47234353Sdim uint64_t m_debug_line_offset = 0; 48234353Sdim}; 49234353Sdim 50234353Sdimclass DWARFDebugMacroEntry { 51249423Sdimpublic: 52193323Sed static void ReadMacroEntries(const DWARFDataExtractor &debug_macro_data, 53221345Sdim const DWARFDataExtractor &debug_str_data, 54224145Sdim const bool offset_is_64_bit, 55234353Sdim lldb::offset_t *sect_offset, 56234353Sdim SymbolFileDWARF *sym_file_dwarf, 57193323Sed DebugMacrosSP &debug_macros_sp); 58193323Sed}; 59249423Sdim} // namespace dwarf 60249423Sdim} // namespace lldb_private::plugin 61249423Sdim 62249423Sdim#endif // LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFDEBUGMACRO_H 63249423Sdim