/// We now emit a line table for each compile unit. To reduce the prologue
/// size of each line table, the files and directories used by each compile
/// unit are separated.
- std::map<unsigned, MCDwarfFileTable> MCDwarfFileTablesCUMap;
+ std::map<unsigned, MCDwarfLineTable> MCDwarfLineTablesCUMap;
/// The current dwarf line information from the last dwarf .loc directive.
MCDwarfLoc CurrentDwarfLoc;
bool hasDwarfFiles() const {
// Traverse MCDwarfFilesCUMap and check whether each entry is empty.
- for (const auto &FileTable : MCDwarfFileTablesCUMap)
+ for (const auto &FileTable : MCDwarfLineTablesCUMap)
if (!FileTable.second.getMCDwarfFiles().empty())
return true;
return false;
}
- const std::map<unsigned, MCDwarfFileTable> &getMCDwarfFileTables() const {
- return MCDwarfFileTablesCUMap;
+ const std::map<unsigned, MCDwarfLineTable> &getMCDwarfLineTables() const {
+ return MCDwarfLineTablesCUMap;
}
- MCDwarfFileTable &getMCDwarfFileTable(unsigned CUID) {
- return MCDwarfFileTablesCUMap[CUID];
+ MCDwarfLineTable &getMCDwarfLineTable(unsigned CUID) {
+ return MCDwarfLineTablesCUMap[CUID];
}
- const MCDwarfFileTable &getMCDwarfFileTable(unsigned CUID) const {
- auto I = MCDwarfFileTablesCUMap.find(CUID);
- assert(I != MCDwarfFileTablesCUMap.end());
+ const MCDwarfLineTable &getMCDwarfLineTable(unsigned CUID) const {
+ auto I = MCDwarfLineTablesCUMap.find(CUID);
+ assert(I != MCDwarfLineTablesCUMap.end());
return I->second;
}
const SmallVectorImpl<MCDwarfFile> &getMCDwarfFiles(unsigned CUID = 0) {
- return getMCDwarfFileTable(CUID).getMCDwarfFiles();
+ return getMCDwarfLineTable(CUID).getMCDwarfFiles();
}
const SmallVectorImpl<std::string> &getMCDwarfDirs(unsigned CUID = 0) {
- return getMCDwarfFileTable(CUID).getMCDwarfDirs();
+ return getMCDwarfLineTable(CUID).getMCDwarfDirs();
}
bool hasMCLineSections() const {
- for (const auto &Table : MCDwarfFileTablesCUMap)
+ for (const auto &Table : MCDwarfLineTablesCUMap)
if (!Table.second.getMCDwarfFiles().empty() || Table.second.getLabel())
return true;
return false;
DwarfCompileUnitID = CUIndex;
}
MCSymbol *getMCLineTableSymbol(unsigned ID) const {
- return getMCDwarfFileTable(ID).getLabel();
+ return getMCDwarfLineTable(ID).getLabel();
}
void setMCLineTableSymbol(MCSymbol *Sym, unsigned ID) {
- getMCDwarfFileTable(ID).setLabel(Sym);
+ getMCDwarfLineTable(ID).setLabel(Sym);
}
/// setCurrentDwarfLoc - saves the information from the currently parsed
std::pair<MCSymbol *, MCSymbol *> Emit(MCStreamer *MCOS) const;
};
-class MCDwarfFileTable {
+class MCDwarfLineTable {
MCDwarfLineTableHeader Header;
MCLineSection MCLineSections;
Symbols.clear();
Allocator.Reset();
Instances.clear();
- MCDwarfFileTablesCUMap.clear();
+ MCDwarfLineTablesCUMap.clear();
MCGenDwarfLabelEntries.clear();
DwarfDebugFlags = StringRef();
DwarfCompileUnitID = 0;
/// allocated file number is returned. The file numbers may be in any order.
unsigned MCContext::GetDwarfFile(StringRef Directory, StringRef FileName,
unsigned FileNumber, unsigned CUID) {
- MCDwarfFileTable &Table = MCDwarfFileTablesCUMap[CUID];
+ MCDwarfLineTable &Table = MCDwarfLineTablesCUMap[CUID];
return Table.getFile(Directory, FileName, FileNumber);
}
// Add the line entry to this section's entries.
MCOS->getContext()
- .getMCDwarfFileTable(MCOS->getContext().getDwarfCompileUnitID())
+ .getMCDwarfLineTable(MCOS->getContext().getDwarfCompileUnitID())
.getMCLineSections()
.addLineEntry(LineEntry, Section);
}
//
// This emits the Dwarf file and the line tables.
//
-const MCSymbol *MCDwarfFileTable::Emit(MCStreamer *MCOS) {
+const MCSymbol *MCDwarfLineTable::Emit(MCStreamer *MCOS) {
MCContext &context = MCOS->getContext();
// CUID and MCLineTableSymbols are set in DwarfDebug, when DwarfDebug does
// not exist, CUID will be 0 and MCLineTableSymbols will be empty.
// Handle Compile Unit 0, the line table start symbol is the section symbol.
- auto I = MCOS->getContext().getMCDwarfFileTables().begin(),
- E = MCOS->getContext().getMCDwarfFileTables().end();
+ auto I = MCOS->getContext().getMCDwarfLineTables().begin(),
+ E = MCOS->getContext().getMCDwarfLineTables().end();
// Switch to the section where the table will be emitted into.
MCOS->SwitchSection(context.getObjectFileInfo()->getDwarfLineSection());
return std::make_pair(LineStartSym, LineEndSym);
}
-const MCSymbol *MCDwarfFileTable::EmitCU(MCStreamer *MCOS) const {
+const MCSymbol *MCDwarfLineTable::EmitCU(MCStreamer *MCOS) const {
MCSymbol *LineStartSym;
MCSymbol *LineEndSym;
std::tie(LineStartSym, LineEndSym) = Header.Emit(MCOS);
return LineStartSym;
}
-unsigned MCDwarfFileTable::getFile(StringRef Directory, StringRef FileName, unsigned FileNumber) {
+unsigned MCDwarfLineTable::getFile(StringRef Directory, StringRef FileName,
+ unsigned FileNumber) {
return Header.getFile(Directory, FileName, FileNumber);
}
// Dump out the dwarf file & directory tables and line tables.
const MCSymbol *LineSectionSymbol = NULL;
if (getContext().hasMCLineSections())
- LineSectionSymbol = MCDwarfFileTable::Emit(this);
+ LineSectionSymbol = MCDwarfLineTable::Emit(this);
// If we are generating dwarf for assembly source files dump out the sections.
if (getContext().getGenDwarfForAssembly())