Debug Info: code clean up.

Use EmitLabelOffsetDifference for handling on darwin platform when
non-darwin platforms use EmitLabelPlusOffset.

Also fix a bug in EmitLabelOffsetDifference where the size is hard-coded
to 4 even though Size is passed in as an argument.

llvm-svn: 193660
This commit is contained in:
Manman Ren 2013-10-29 23:14:15 +00:00
parent 0947a6e93b
commit 251a1bd215
2 changed files with 5 additions and 3 deletions

View File

@ -1423,12 +1423,12 @@ void AsmPrinter::EmitLabelOffsetDifference(const MCSymbol *Hi, uint64_t Offset,
OutContext);
if (!MAI->hasSetDirective())
OutStreamer.EmitValue(Diff, 4);
OutStreamer.EmitValue(Diff, Size);
else {
// Otherwise, emit with .set (aka assignment).
MCSymbol *SetLabel = GetTempSymbol("set", SetCounter++);
OutStreamer.EmitAssignment(SetLabel, Diff);
OutStreamer.EmitSymbolValue(SetLabel, 4);
OutStreamer.EmitSymbolValue(SetLabel, Size);
}
}

View File

@ -2082,7 +2082,9 @@ void DwarfDebug::emitDIE(DIE *Die, std::vector<DIEAbbrev *> *Abbrevs) {
Asm->EmitLabelPlusOffset(DwarfInfoSectionSym, Addr,
DIEEntry::getRefAddrSize(Asm));
else
Asm->OutStreamer.EmitIntValue(Addr, DIEEntry::getRefAddrSize(Asm));
Asm->EmitLabelOffsetDifference(DwarfInfoSectionSym, Addr,
DwarfInfoSectionSym,
DIEEntry::getRefAddrSize(Asm));
} else {
Asm->EmitInt32(Addr);
}