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, 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