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, StringRef RS, StringRef SS, 34 StringRef SOS, StringRef AOS, StringRef LS, bool LE, bool IsDWO, 35 const DWARFUnitSectionBase &UnitSection, 36 const DWARFUnitIndex::Entry *Entry) 37 : DWARFUnit(Context, Section, DA, RS, SS, SOS, AOS, LS, LE, IsDWO, 38 UnitSection, Entry) {} 39 40 uint32_t getHeaderSize() const override { 41 return DWARFUnit::getHeaderSize() + 12; 42 } 43 44 void dump(raw_ostream &OS, bool Brief = false); 45 static const DWARFSectionKind Section = DW_SECT_TYPES; 46 47 protected: 48 bool extractImpl(DataExtractor debug_info, uint32_t *offset_ptr) override; 49 }; 50 51 } // end namespace llvm 52 53 #endif // LLVM_DEBUGINFO_DWARF_DWARFTYPEUNIT_H 54