1 //===-- DWARFDebugInfo.h ----------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef SymbolFileDWARF_DWARFDebugInfo_h_
11 #define SymbolFileDWARF_DWARFDebugInfo_h_
16 #include "lldb/lldb-private.h"
17 #include "lldb/lldb-private.h"
18 #include "SymbolFileDWARF.h"
21 typedef std::multimap<const char*, dw_offset_t, CStringCompareFunctionObject> CStringToDIEMap;
22 typedef CStringToDIEMap::iterator CStringToDIEMapIter;
23 typedef CStringToDIEMap::const_iterator CStringToDIEMapConstIter;
28 typedef dw_offset_t (*Callback)(
29 SymbolFileDWARF* dwarf2Data,
31 DWARFDebugInfoEntry* die,
32 const dw_offset_t next_offset,
37 void SetDwarfData(SymbolFileDWARF* dwarf2Data);
39 size_t GetNumCompileUnits();
40 bool ContainsCompileUnit (const DWARFCompileUnit *cu) const;
41 DWARFCompileUnit* GetCompileUnitAtIndex (uint32_t idx);
42 DWARFCompileUnit* GetCompileUnit(dw_offset_t cu_offset, uint32_t* idx_ptr = NULL);
43 DWARFCompileUnit* GetCompileUnitContainingDIEOffset (dw_offset_t die_offset);
44 DWARFCompileUnit* GetCompileUnit(const DIERef& die_ref);
45 DWARFDIE GetDIEForDIEOffset(dw_offset_t die_offset);
46 DWARFDIE GetDIE (const DIERef& die_ref);
48 void Dump(lldb_private::Stream *s, const uint32_t die_offset, const uint32_t recurse_depth);
49 static void Parse(SymbolFileDWARF* parser, Callback callback, void* userData);
50 static void Verify(lldb_private::Stream *s, SymbolFileDWARF* dwarf2Data);
51 static void Dump(lldb_private::Stream *s, SymbolFileDWARF* dwarf2Data, const uint32_t die_offset, const uint32_t recurse_depth);
52 bool Find(const char* name, bool ignore_case, std::vector<dw_offset_t>& die_offsets) const;
53 bool Find(lldb_private::RegularExpression& re, std::vector<dw_offset_t>& die_offsets) const;
57 eDumpFlag_Verbose = (1<<0), // Verbose dumping
58 eDumpFlag_ShowForm = (1<<1), // Show the DW_form type
59 eDumpFlag_ShowAncestors = (1<<2) // Show all parent DIEs when dumping single DIEs
63 GetCompileUnitAranges ();
66 typedef std::shared_ptr<DWARFCompileUnit> DWARFCompileUnitSP;
69 OffsetLessThanCompileUnitOffset (dw_offset_t offset, const DWARFCompileUnitSP& cu_sp);
71 typedef std::vector<DWARFCompileUnitSP> CompileUnitColl;
73 //----------------------------------------------------------------------
75 //----------------------------------------------------------------------
76 SymbolFileDWARF* m_dwarf2Data;
77 CompileUnitColl m_compile_units;
78 std::unique_ptr<DWARFDebugAranges> m_cu_aranges_ap; // A quick address to compile unit table
81 // All parsing needs to be done partially any managed by this class as accessors are called.
82 void ParseCompileUnitHeadersIfNeeded();
84 DISALLOW_COPY_AND_ASSIGN (DWARFDebugInfo);
87 #endif // SymbolFileDWARF_DWARFDebugInfo_h_