1061da546Spatrick //===-- DWARFDebugMacro.h ----------------------------------------*- C++ 2061da546Spatrick //-*-===// 3061da546Spatrick // 4061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5061da546Spatrick // See https://llvm.org/LICENSE.txt for license information. 6061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7061da546Spatrick // 8061da546Spatrick //===----------------------------------------------------------------------===// 9061da546Spatrick 10dda28197Spatrick #ifndef LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFDEBUGMACRO_H 11dda28197Spatrick #define LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFDEBUGMACRO_H 12061da546Spatrick 13061da546Spatrick #include <map> 14061da546Spatrick 15061da546Spatrick #include "lldb/Core/dwarf.h" 16061da546Spatrick #include "lldb/Symbol/DebugMacros.h" 17061da546Spatrick #include "lldb/lldb-types.h" 18061da546Spatrick 19061da546Spatrick namespace lldb_private { 20061da546Spatrick 21061da546Spatrick class DWARFDataExtractor; 22061da546Spatrick 23061da546Spatrick } // namespace lldb_private 24061da546Spatrick 25061da546Spatrick class SymbolFileDWARF; 26061da546Spatrick 27061da546Spatrick class DWARFDebugMacroHeader { 28061da546Spatrick public: 29061da546Spatrick enum HeaderFlagMask { 30061da546Spatrick OFFSET_SIZE_MASK = 0x1, 31061da546Spatrick DEBUG_LINE_OFFSET_MASK = 0x2, 32061da546Spatrick OPCODE_OPERANDS_TABLE_MASK = 0x4 33061da546Spatrick }; 34061da546Spatrick 35061da546Spatrick static DWARFDebugMacroHeader 36061da546Spatrick ParseHeader(const lldb_private::DWARFDataExtractor &debug_macro_data, 37061da546Spatrick lldb::offset_t *offset); 38061da546Spatrick OffsetIs64Bit()39061da546Spatrick bool OffsetIs64Bit() const { return m_offset_is_64_bit; } 40061da546Spatrick 41061da546Spatrick private: 42061da546Spatrick static void 43061da546Spatrick SkipOperandTable(const lldb_private::DWARFDataExtractor &debug_macro_data, 44061da546Spatrick lldb::offset_t *offset); 45061da546Spatrick 46*f6aab3d8Srobert uint16_t m_version = 0; 47*f6aab3d8Srobert bool m_offset_is_64_bit = false; 48*f6aab3d8Srobert uint64_t m_debug_line_offset = 0; 49061da546Spatrick }; 50061da546Spatrick 51061da546Spatrick class DWARFDebugMacroEntry { 52061da546Spatrick public: 53061da546Spatrick static void 54061da546Spatrick ReadMacroEntries(const lldb_private::DWARFDataExtractor &debug_macro_data, 55061da546Spatrick const lldb_private::DWARFDataExtractor &debug_str_data, 56061da546Spatrick const bool offset_is_64_bit, lldb::offset_t *sect_offset, 57061da546Spatrick SymbolFileDWARF *sym_file_dwarf, 58061da546Spatrick lldb_private::DebugMacrosSP &debug_macros_sp); 59061da546Spatrick }; 60061da546Spatrick 61dda28197Spatrick #endif // LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFDEBUGMACRO_H 62