diff options
author | Eric Christopher <echristo@gmail.com> | 2012-12-19 22:02:53 +0000 |
---|---|---|
committer | Eric Christopher <echristo@gmail.com> | 2012-12-19 22:02:53 +0000 |
commit | 6eebe47060eec7e3a4ae95d4b4835869108f9c07 (patch) | |
tree | 9341e78f009f9d7dde5d00bfc091f912fd240681 /lib/CodeGen/AsmPrinter/DwarfDebug.h | |
parent | 37a942cd52725b1d390989a8267a764b42fcb5d3 (diff) |
Split out abbreviations for the skeleton info from the rest of
the abbreviations. Part of implementing split dwarf.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170589 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/AsmPrinter/DwarfDebug.h')
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfDebug.h | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.h b/lib/CodeGen/AsmPrinter/DwarfDebug.h index cf1abef8c7..58ae3d68d1 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.h +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.h @@ -343,6 +343,7 @@ class DwarfDebug { MCSymbol *DwarfStrSectionSym, *TextSectionSym, *DwarfDebugRangeSectionSym; MCSymbol *DwarfDebugLocSectionSym; MCSymbol *FunctionBeginSym, *FunctionEndSym; + MCSymbol *DwarfAbbrevDWOSectionSym; // As an optimization, there is no need to emit an entry in the directory // table for the same directory as DW_at_comp_dir. @@ -371,6 +372,13 @@ class DwarfDebug { // The CU left in the original object file for separated debug info. CompileUnit *SkeletonCU; + + // Used to uniquely define abbreviations for the skeleton emission. + FoldingSet<DIEAbbrev> SkeletonAbbrevSet; + + // A list of all the unique abbreviations in use. + std::vector<DIEAbbrev *> SkeletonAbbrevs; + DwarfUnits SkeletonHolder; private: @@ -420,6 +428,9 @@ private: /// open. void endSections(); + /// \brief Emit a set of abbreviations to the specific section. + void emitAbbrevs(const MCSection *, std::vector<DIEAbbrev*> *); + /// \brief Emit the debug info section. void emitDebugInfo(); @@ -473,9 +484,15 @@ private: /// \brief Emit the local split debug info section. void emitSkeletonCU(const MCSection *); + /// \brief Emit the local split abbreviations. + void emitSkeletonAbbrevs(const MCSection *); + /// \brief Emit the debug info dwo section. void emitDebugInfoDWO(); + /// \brief Emit the debug abbrev dwo section. + void emitDebugAbbrevDWO(); + /// \brief Create new CompileUnit for the given metadata node with tag /// DW_TAG_compile_unit. CompileUnit *constructCompileUnit(const MDNode *N); @@ -570,7 +587,7 @@ public: MCSymbol *getStringPoolEntry(StringRef Str); /// \brief Recursively Emits a debug information entry. - void emitDIE(DIE *Die); + void emitDIE(DIE *Die, std::vector<DIEAbbrev *> *Abbrevs); /// \brief Returns whether or not to limit some of our debug /// output to the limitations of darwin gdb. |