diff options
author | David Blaikie <dblaikie@gmail.com> | 2013-12-11 21:36:27 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2013-12-11 21:36:27 +0000 |
commit | 4fe3c00eedd02734eaa8486cb84e66edacc11470 (patch) | |
tree | 368ea64bfd823eb9fc87e5bd9618f8d421d5154d /llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h | |
parent | 3332d4c75f36db7bba8779c5b0081396da2fa421 (diff) | |
download | bcm5719-llvm-4fe3c00eedd02734eaa8486cb84e66edacc11470.tar.gz bcm5719-llvm-4fe3c00eedd02734eaa8486cb84e66edacc11470.zip |
DebugInfo: Move type units into the debug_types section with appropriate comdat grouping and type unit headers
This commit does not complete the type units feature - there are issues
around fission support (skeletal type units, pubtypes/pubnames) and
hashing of some types including those containing references to types in
other type units.
llvm-svn: 197073
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h index 26b5f09004e..6242a058cf8 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h @@ -413,14 +413,15 @@ public: /// Compute the size of a header for this unit, not including the initial /// length field. - unsigned getHeaderSize() const { + virtual unsigned getHeaderSize() const { return sizeof(int16_t) + // DWARF version number sizeof(int32_t) + // Offset Into Abbrev. Section sizeof(int8_t); // Pointer Size (in bytes) } /// Emit the header for this unit, not including the initial length field. - void emitHeader(const MCSection *ASection, const MCSymbol *ASectionSym) const; + virtual void emitHeader(const MCSection *ASection, + const MCSymbol *ASectionSym) const; protected: /// getOrCreateStaticMemberDIE - Create new static data member DIE. @@ -513,12 +514,25 @@ public: class DwarfTypeUnit : public DwarfUnit { private: uint16_t Language; + uint64_t TypeSignature; + const DIE *Ty; public: DwarfTypeUnit(unsigned UID, DIE *D, uint16_t Language, AsmPrinter *A, DwarfDebug *DW, DwarfFile *DWU); + void setTypeSignature(uint64_t Signature) { TypeSignature = Signature; } + void setType(const DIE *Ty) { this->Ty = Ty; } + uint16_t getLanguage() const LLVM_OVERRIDE { return Language; } + /// Emit the header for this unit, not including the initial length field. + void emitHeader(const MCSection *ASection, const MCSymbol *ASectionSym) const + LLVM_OVERRIDE; + unsigned getHeaderSize() const LLVM_OVERRIDE { + return DwarfUnit::getHeaderSize() + sizeof(uint64_t) + // Type Signature + sizeof(uint32_t); // Type DIE Offset + } + void initSection(const MCSection *Section); }; } // end llvm namespace #endif |