Home | History | Annotate | Download | only in DWARF
      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