mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-04 22:07:27 +00:00
simplify EmitSectionOffset a little bit, improve comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100360 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1d20473c9d
commit
2e3ebedc88
@ -2566,8 +2566,7 @@ void DwarfDebug::emitDebugInfo() {
|
||||
Asm->OutStreamer.AddComment("DWARF version number");
|
||||
Asm->EmitInt16(dwarf::DWARF_VERSION);
|
||||
Asm->OutStreamer.AddComment("Offset Into Abbrev. Section");
|
||||
EmitSectionOffset(Asm->GetTempSymbol("abbrev_begin"),
|
||||
Asm->GetTempSymbol("section_abbrev"));
|
||||
EmitSectionOffset(Asm->GetTempSymbol("abbrev_begin"), "section_abbrev");
|
||||
Asm->OutStreamer.AddComment("Address Size (in bytes)");
|
||||
Asm->EmitInt8(TD->getPointerSize());
|
||||
|
||||
@ -2879,7 +2878,7 @@ emitFunctionDebugFrame(const FunctionDebugFrameInfo &DebugFrameInfo) {
|
||||
|
||||
Asm->OutStreamer.AddComment("FDE CIE offset");
|
||||
EmitSectionOffset(Asm->GetTempSymbol("debug_frame_common"),
|
||||
Asm->GetTempSymbol("section_debug_frame"));
|
||||
"section_debug_frame");
|
||||
|
||||
Asm->OutStreamer.AddComment("FDE initial location");
|
||||
MCSymbol *FuncBeginSym =
|
||||
@ -2918,7 +2917,7 @@ void DwarfDebug::emitDebugPubNames() {
|
||||
|
||||
Asm->OutStreamer.AddComment("Offset of Compilation Unit Info");
|
||||
EmitSectionOffset(Asm->GetTempSymbol("info_begin", ModuleCU->getID()),
|
||||
Asm->GetTempSymbol("section_info"));
|
||||
"section_info");
|
||||
|
||||
Asm->OutStreamer.AddComment("Compilation Unit Length");
|
||||
Asm->EmitLabelDifference(Asm->GetTempSymbol("info_end", ModuleCU->getID()),
|
||||
@ -2962,7 +2961,7 @@ void DwarfDebug::emitDebugPubTypes() {
|
||||
|
||||
Asm->OutStreamer.AddComment("Offset of Compilation ModuleCU Info");
|
||||
EmitSectionOffset(Asm->GetTempSymbol("info_begin", ModuleCU->getID()),
|
||||
Asm->GetTempSymbol("section_info"));
|
||||
"section_info");
|
||||
|
||||
Asm->OutStreamer.AddComment("Compilation ModuleCU Length");
|
||||
Asm->EmitLabelDifference(Asm->GetTempSymbol("info_end", ModuleCU->getID()),
|
||||
@ -3108,11 +3107,10 @@ void DwarfDebug::emitDebugInlineInfo() {
|
||||
Asm->OutStreamer.EmitIntValue(0, 1, 0); // nul terminator.
|
||||
} else
|
||||
EmitSectionOffset(getStringPoolEntry(getRealLinkageName(LName)),
|
||||
Asm->GetTempSymbol("section_str"));
|
||||
"section_str");
|
||||
|
||||
Asm->OutStreamer.AddComment("Function name");
|
||||
EmitSectionOffset(getStringPoolEntry(Name),
|
||||
Asm->GetTempSymbol("section_str"));
|
||||
EmitSectionOffset(getStringPoolEntry(Name), "section_str");
|
||||
Asm->EmitULEB128(Labels.size(), "Inline count");
|
||||
|
||||
for (SmallVector<InlineInfoLabels, 4>::iterator LI = Labels.begin(),
|
||||
|
@ -39,17 +39,23 @@ DwarfPrinter::DwarfPrinter(AsmPrinter *A)
|
||||
|
||||
|
||||
void DwarfPrinter::EmitSectionOffset(const MCSymbol *Label,
|
||||
const MCSymbol *Section) {
|
||||
if (!MAI->isAbsoluteDebugSectionOffsets())
|
||||
return Asm->EmitLabelDifference(Label, Section, 4);
|
||||
|
||||
// On COFF targets, we have to emit the weird .secrel32 directive.
|
||||
const char *SectionLabel) {
|
||||
// On COFF targets, we have to emit the special .secrel32 directive.
|
||||
if (const char *SecOffDir = MAI->getDwarfSectionOffsetDirective()) {
|
||||
// FIXME: MCize.
|
||||
Asm->OutStreamer.EmitRawText(SecOffDir + Twine(Label->getName()));
|
||||
} else {
|
||||
Asm->OutStreamer.EmitSymbolValue(Label, 4, 0/*AddrSpace*/);
|
||||
return;
|
||||
}
|
||||
|
||||
// If the section in question will end up with an address of 0 anyway, we can
|
||||
// just emit an absolute reference to save a relocation.
|
||||
if (MAI->isAbsoluteDebugSectionOffsets()) {
|
||||
Asm->OutStreamer.EmitSymbolValue(Label, 4, 0/*AddrSpace*/);
|
||||
return;
|
||||
}
|
||||
|
||||
MCSymbol *SectionSym = Asm->GetTempSymbol(SectionLabel);
|
||||
Asm->EmitLabelDifference(Label, SectionSym, 4);
|
||||
}
|
||||
|
||||
/// EmitFrameMoves - Emit frame instructions to describe the layout of the
|
||||
|
@ -74,9 +74,14 @@ public:
|
||||
const MCAsmInfo *getMCAsmInfo() const { return MAI; }
|
||||
const TargetData *getTargetData() const { return TD; }
|
||||
|
||||
/// EmitSectionOffset - Emit a 4-byte "Label-Section" value or use a special
|
||||
/// purpose directive to emit a section offset if the target has one.
|
||||
void EmitSectionOffset(const MCSymbol *Label, const MCSymbol *Section);
|
||||
/// EmitSectionOffset - Emit the 4-byte offset of Label from the start of its
|
||||
/// section. This can be done with a special directive if the target supports
|
||||
/// it (e.g. cygwin) or by emitting it as an offset from a label at the start
|
||||
/// of the section.
|
||||
///
|
||||
/// SectionLabel is the name of a temporary label emitted at the start of the
|
||||
/// section.
|
||||
void EmitSectionOffset(const MCSymbol *Label, const char *SectionLabel);
|
||||
|
||||
/// EmitFrameMoves - Emit frame instructions to describe the layout of the
|
||||
/// frame.
|
||||
|
Loading…
Reference in New Issue
Block a user