DWARFDebugMacro.h revision 292932
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 19namespace lldb_private 20{ 21 22class DWARFDataExtractor; 23 24} // namespace lldb_private 25 26class SymbolFileDWARF; 27 28class DWARFDebugMacroHeader 29{ 30public: 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 47private: 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 56class DWARFDebugMacroEntry 57{ 58public: 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