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* GetCompileUnitContainingDIE (const DIERef& die_ref);
45 DWARFDIE GetDIE (const DIERef& die_ref);
47 void Dump(lldb_private::Stream *s, const uint32_t die_offset, const uint32_t recurse_depth);
48 static void Parse(SymbolFileDWARF* parser, Callback callback, void* userData);
49 static void Verify(lldb_private::Stream *s, SymbolFileDWARF* dwarf2Data);
50 static void Dump(lldb_private::Stream *s, SymbolFileDWARF* dwarf2Data, const uint32_t die_offset, const uint32_t recurse_depth);
51 bool Find(const char* name, bool ignore_case, std::vector<dw_offset_t>& die_offsets) const;
52 bool Find(lldb_private::RegularExpression& re, std::vector<dw_offset_t>& die_offsets) const;
56 eDumpFlag_Verbose = (1<<0), // Verbose dumping
57 eDumpFlag_ShowForm = (1<<1), // Show the DW_form type
58 eDumpFlag_ShowAncestors = (1<<2) // Show all parent DIEs when dumping single DIEs
62 GetCompileUnitAranges ();
65 typedef std::shared_ptr<DWARFCompileUnit> DWARFCompileUnitSP;
68 OffsetLessThanCompileUnitOffset (dw_offset_t offset, const DWARFCompileUnitSP& cu_sp);
70 typedef std::vector<DWARFCompileUnitSP> CompileUnitColl;
72 //----------------------------------------------------------------------
74 //----------------------------------------------------------------------
75 SymbolFileDWARF* m_dwarf2Data;
76 CompileUnitColl m_compile_units;
77 std::unique_ptr<DWARFDebugAranges> m_cu_aranges_ap; // A quick address to compile unit table
80 // All parsing needs to be done partially any managed by this class as accessors are called.
81 void ParseCompileUnitHeadersIfNeeded();
83 DISALLOW_COPY_AND_ASSIGN (DWARFDebugInfo);
86 #endif // SymbolFileDWARF_DWARFDebugInfo_h_