124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- DWARFDebugAbbrev.h --------------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 10d996d0c32b483c2190e1eb288cd3bbbd259c2960Greg Clayton#ifndef SymbolFileDWARF_DWARFDebugAbbrev_h_ 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define SymbolFileDWARF_DWARFDebugAbbrev_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <list> 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <map> 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/lldb-private.h" 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "DWARFDefines.h" 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "DWARFAbbreviationDeclaration.h" 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnertypedef std::vector<DWARFAbbreviationDeclaration> DWARFAbbreviationDeclarationColl; 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnertypedef DWARFAbbreviationDeclarationColl::iterator DWARFAbbreviationDeclarationCollIter; 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnertypedef DWARFAbbreviationDeclarationColl::const_iterator DWARFAbbreviationDeclarationCollConstIter; 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass DWARFAbbreviationDeclarationSet 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DWARFAbbreviationDeclarationSet() : 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_offset(DW_INVALID_OFFSET), 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_idx_offset(0), 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_decls() 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DWARFAbbreviationDeclarationSet(dw_offset_t offset, uint32_t idx_offset) : 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_offset(offset), 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_idx_offset(idx_offset), 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_decls() 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void Clear(); 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner dw_offset_t GetOffset() const { return m_offset; } 4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void Dump(lldb_private::Stream *s) const; 4636da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton bool Extract(const lldb_private::DataExtractor& data, lldb::offset_t *offset_ptr); 4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //void Encode(BinaryStreamBuf& debug_abbrev_buf) const; 4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner dw_uleb128_t AppendAbbrevDeclSequential(const DWARFAbbreviationDeclaration& abbrevDecl); 4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const DWARFAbbreviationDeclaration* GetAbbreviationDeclaration(dw_uleb128_t abbrCode) const; 5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate: 5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner dw_offset_t m_offset; 5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t m_idx_offset; 5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner std::vector<DWARFAbbreviationDeclaration> m_decls; 5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnertypedef std::map<dw_offset_t, DWARFAbbreviationDeclarationSet> DWARFAbbreviationDeclarationCollMap; 5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnertypedef DWARFAbbreviationDeclarationCollMap::iterator DWARFAbbreviationDeclarationCollMapIter; 5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnertypedef DWARFAbbreviationDeclarationCollMap::const_iterator DWARFAbbreviationDeclarationCollMapConstIter; 6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass DWARFDebugAbbrev 6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DWARFDebugAbbrev(); 6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const DWARFAbbreviationDeclarationSet* GetAbbreviationDeclarationSet(dw_offset_t cu_abbr_offset) const; 6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void Dump(lldb_private::Stream *s) const; 6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void Parse(const lldb_private::DataExtractor& data); 6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected: 7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DWARFAbbreviationDeclarationCollMap m_abbrevCollMap; 7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner mutable DWARFAbbreviationDeclarationCollMapConstIter m_prev_abbr_offset_pos; 7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // SymbolFileDWARF_DWARFDebugAbbrev_h_ 75