63 lines · c
1//===-- DWARFDebugMacro.h ----------------------------------------*- C++2//-*-===//3//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-exception7//8//===----------------------------------------------------------------------===//9 10#ifndef LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFDEBUGMACRO_H11#define LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFDEBUGMACRO_H12 13#include <map>14 15#include "lldb/Core/dwarf.h"16#include "lldb/Symbol/DebugMacros.h"17#include "lldb/lldb-types.h"18 19namespace lldb_private {20class DWARFDataExtractor;21}22 23namespace lldb_private::plugin {24namespace dwarf {25class SymbolFileDWARF;26 27class DWARFDebugMacroHeader {28public:29 enum HeaderFlagMask {30 OFFSET_SIZE_MASK = 0x1,31 DEBUG_LINE_OFFSET_MASK = 0x2,32 OPCODE_OPERANDS_TABLE_MASK = 0x433 };34 35 static DWARFDebugMacroHeader36 ParseHeader(const DWARFDataExtractor &debug_macro_data,37 lldb::offset_t *offset);38 39 bool OffsetIs64Bit() const { return m_offset_is_64_bit; }40 41private:42 static void SkipOperandTable(const DWARFDataExtractor &debug_macro_data,43 lldb::offset_t *offset);44 45 uint16_t m_version = 0;46 bool m_offset_is_64_bit = false;47 uint64_t m_debug_line_offset = 0;48};49 50class DWARFDebugMacroEntry {51public: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);58};59} // namespace dwarf60} // namespace lldb_private::plugin61 62#endif // LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFDEBUGMACRO_H63