1 //===- DWARFTypeUnit.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 LLVM_DEBUGINFO_DWARF_DWARFTYPEUNIT_H 11 #define LLVM_DEBUGINFO_DWARF_DWARFTYPEUNIT_H 12 13 #include "llvm/ADT/StringRef.h" 14 #include "llvm/DebugInfo/DWARF/DWARFUnit.h" 15 #include "llvm/DebugInfo/DWARF/DWARFUnitIndex.h" 16 #include "llvm/Support/DataExtractor.h" 17 #include <cstdint> 18 19 namespace llvm { 20 21 class DWARFContext; 22 class DWARFDebugAbbrev; 23 struct DWARFSection; 24 class raw_ostream; 25 26 class DWARFTypeUnit : public DWARFUnit { 27 private: 28 uint64_t TypeHash; 29 uint32_t TypeOffset; 30 31 public: 32 DWARFTypeUnit(DWARFContext &Context, const DWARFSection &Section, 33 const DWARFDebugAbbrev *DA, const DWARFSection *RS, 34 StringRef SS, const DWARFSection &SOS, const DWARFSection *AOS, 35 StringRef LS, bool LE, bool IsDWO, 36 const DWARFUnitSectionBase &UnitSection, 37 const DWARFUnitIndex::Entry *Entry) 38 : DWARFUnit(Context, Section, DA, RS, SS, SOS, AOS, LS, LE, IsDWO, 39 UnitSection, Entry) {} 40 41 uint32_t getHeaderSize() const override { 42 return DWARFUnit::getHeaderSize() + 12; 43 } 44 45 void dump(raw_ostream &OS, bool Brief = false); 46 static const DWARFSectionKind Section = DW_SECT_TYPES; 47 48 protected: 49 bool extractImpl(DataExtractor debug_info, uint32_t *offset_ptr) override; 50 }; 51 52 } // end namespace llvm 53 54 #endif // LLVM_DEBUGINFO_DWARF_DWARFTYPEUNIT_H 55