1 //===-- DWARFDebugMacro.h ----------------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef SymbolFileDWARF_DWARFDebugMacro_h_ 11 #define SymbolFileDWARF_DWARFDebugMacro_h_ 12 13 #include <map> 14 15 #include "lldb/lldb-types.h" 16 #include "lldb/Core/dwarf.h" 17 #include "lldb/Symbol/DebugMacros.h" 18 19 namespace lldb_private 20 { 21 22 class DWARFDataExtractor; 23 24 } // namespace lldb_private 25 26 class SymbolFileDWARF; 27 28 class DWARFDebugMacroHeader 29 { 30 public: 31 enum HeaderFlagMask 32 { 33 OFFSET_SIZE_MASK = 0x1, 34 DEBUG_LINE_OFFSET_MASK = 0x2, 35 OPCODE_OPERANDS_TABLE_MASK = 0x4 36 }; 37 38 static DWARFDebugMacroHeader 39 ParseHeader(const lldb_private::DWARFDataExtractor &debug_macro_data, lldb::offset_t *offset); 40 41 bool 42 OffsetIs64Bit() const 43 { 44 return m_offset_is_64_bit; 45 } 46 47 private: 48 static void 49 SkipOperandTable(const lldb_private::DWARFDataExtractor &debug_macro_data, lldb::offset_t *offset); 50 51 uint16_t m_version; 52 bool m_offset_is_64_bit; 53 uint64_t m_debug_line_offset; 54 }; 55 56 class DWARFDebugMacroEntry 57 { 58 public: 59 static void 60 ReadMacroEntries(const lldb_private::DWARFDataExtractor &debug_macro_data, 61 const lldb_private::DWARFDataExtractor &debug_str_data, 62 const bool offset_is_64_bit, 63 lldb::offset_t *sect_offset, 64 SymbolFileDWARF *sym_file_dwarf, 65 lldb_private::DebugMacrosSP &debug_macros_sp); 66 }; 67 68 #endif // SymbolFileDWARF_DWARFDebugMacro_h_ 69