[DebugInfo] Add DwarfDebug& to DwarfFile.

Use the DwarfDebug in one function that previously took it as a
parameter, and lay the foundation for use this for other operations
coming soon.

llvm-svn: 220452
This commit is contained in:
David Blaikie 2014-10-23 00:16:03 +00:00
parent 263a008525
commit 2b22b1e9a2
3 changed files with 17 additions and 10 deletions

View File

@ -170,9 +170,10 @@ static LLVM_CONSTEXPR DwarfAccelTable::Atom TypeAtoms[] = {
DwarfDebug::DwarfDebug(AsmPrinter *A, Module *M)
: Asm(A), MMI(Asm->MMI), FirstCU(nullptr), PrevLabel(nullptr),
GlobalRangeCount(0), InfoHolder(A, "info_string", DIEValueAllocator),
GlobalRangeCount(0),
InfoHolder(A, *this, "info_string", DIEValueAllocator),
UsedNonDefaultText(false),
SkeletonHolder(A, "skel_string", DIEValueAllocator),
SkeletonHolder(A, *this, "skel_string", DIEValueAllocator),
IsDarwin(Triple(A->getTargetTriple()).isOSDarwin()),
AccelNames(DwarfAccelTable::Atom(dwarf::DW_ATOM_die_offset,
dwarf::DW_FORM_data4)),
@ -1522,7 +1523,7 @@ void DwarfDebug::emitDIE(DIE &Die) {
void DwarfDebug::emitDebugInfo() {
DwarfFile &Holder = useSplitDwarf() ? SkeletonHolder : InfoHolder;
Holder.emitUnits(this, DwarfAbbrevSectionSym);
Holder.emitUnits(DwarfAbbrevSectionSym);
}
// Emit the abbreviation section.
@ -2165,7 +2166,7 @@ void DwarfDebug::emitDebugInfoDWO() {
assert(useSplitDwarf() && "No split dwarf debug info?");
// Don't pass an abbrev symbol, using a constant zero instead so as not to
// emit relocations into the dwo file.
InfoHolder.emitUnits(this, /* AbbrevSymbol */ nullptr);
InfoHolder.emitUnits(/* AbbrevSymbol */ nullptr);
}
// Emit the .debug_abbrev.dwo section for separated dwarf. This contains the

View File

@ -18,8 +18,11 @@
#include "llvm/Target/TargetLoweringObjectFile.h"
namespace llvm {
DwarfFile::DwarfFile(AsmPrinter *AP, StringRef Pref, BumpPtrAllocator &DA)
: Asm(AP), StrPool(DA, *Asm, Pref) {}
DwarfFile::DwarfFile(AsmPrinter *AP, DwarfDebug &DD, StringRef Pref,
BumpPtrAllocator &DA)
: Asm(AP), DD(DD), StrPool(DA, *Asm, Pref) {
(void)this->DD;
}
DwarfFile::~DwarfFile() {}
@ -48,7 +51,7 @@ void DwarfFile::addUnit(std::unique_ptr<DwarfUnit> U) {
// Emit the various dwarf units to the unit section USection with
// the abbreviations going into ASection.
void DwarfFile::emitUnits(DwarfDebug *DD, const MCSymbol *ASectionSym) {
void DwarfFile::emitUnits(const MCSymbol *ASectionSym) {
for (const auto &TheU : CUs) {
DIE &Die = TheU->getUnitDie();
const MCSection *USection = TheU->getSection();
@ -63,7 +66,7 @@ void DwarfFile::emitUnits(DwarfDebug *DD, const MCSymbol *ASectionSym) {
TheU->emitHeader(ASectionSym);
DD->emitDIE(Die);
DD.emitDIE(Die);
Asm->OutStreamer.EmitLabel(TheU->getLabelEnd());
}
}

View File

@ -35,6 +35,8 @@ class DwarfFile {
// Target of Dwarf emission, used for sizing of abbreviations.
AsmPrinter *Asm;
DwarfDebug &DD;
// Used to uniquely define abbreviations.
FoldingSet<DIEAbbrev> AbbreviationsSet;
@ -47,7 +49,8 @@ class DwarfFile {
DwarfStringPool StrPool;
public:
DwarfFile(AsmPrinter *AP, StringRef Pref, BumpPtrAllocator &DA);
DwarfFile(AsmPrinter *AP, DwarfDebug &DD, StringRef Pref,
BumpPtrAllocator &DA);
~DwarfFile();
@ -67,7 +70,7 @@ public:
/// \brief Emit all of the units to the section listed with the given
/// abbreviation section.
void emitUnits(DwarfDebug *DD, const MCSymbol *ASectionSym);
void emitUnits(const MCSymbol *ASectionSym);
/// \brief Emit a set of abbreviations to the specific section.
void emitAbbrevs(const MCSection *);