Skip to content

Commit c4267b7

Browse files
committed
Revert "[lldb/PDB] Use the new line table constructor"
This reverts commit bb73210 due to failures on the windows bot.
1 parent dc5777e commit c4267b7

File tree

2 files changed

+30
-32
lines changed

2 files changed

+30
-32
lines changed

lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1021,7 +1021,7 @@ uint32_t SymbolFileNativePDB::ResolveSymbolContext(
10211021
return 0;
10221022
}
10231023

1024-
static void AppendLineEntryToSequence(LineSequence &sequence,
1024+
static void AppendLineEntryToSequence(LineTable &table, LineSequence &sequence,
10251025
const CompilandIndexItem &cci,
10261026
lldb::addr_t base_addr,
10271027
uint32_t file_number,
@@ -1040,18 +1040,21 @@ static void AppendLineEntryToSequence(LineSequence &sequence,
10401040

10411041
uint32_t lno = cur_info.getStartLine();
10421042

1043-
LineTable::AppendLineEntryToSequence(&sequence, addr, lno, 0, file_number,
1044-
is_statement, false, is_prologue,
1045-
is_epilogue, false);
1043+
table.AppendLineEntryToSequence(&sequence, addr, lno, 0, file_number,
1044+
is_statement, false, is_prologue, is_epilogue,
1045+
false);
10461046
}
10471047

1048-
static void TerminateLineSequence(const LineFragmentHeader &block,
1048+
static void TerminateLineSequence(LineTable &table,
1049+
const LineFragmentHeader &block,
10491050
lldb::addr_t base_addr, uint32_t file_number,
1050-
uint32_t last_line, LineSequence &seq) {
1051+
uint32_t last_line,
1052+
std::unique_ptr<LineSequence> seq) {
10511053
// The end is always a terminal entry, so insert it regardless.
1052-
LineTable::AppendLineEntryToSequence(&seq, base_addr + block.CodeSize,
1053-
last_line, 0, file_number, false, false,
1054-
false, false, true);
1054+
table.AppendLineEntryToSequence(seq.get(), base_addr + block.CodeSize,
1055+
last_line, 0, file_number, false, false,
1056+
false, false, true);
1057+
table.InsertSequence(seq.release());
10551058
}
10561059

10571060
bool SymbolFileNativePDB::ParseLineTable(CompileUnit &comp_unit) {
@@ -1065,11 +1068,11 @@ bool SymbolFileNativePDB::ParseLineTable(CompileUnit &comp_unit) {
10651068
CompilandIndexItem *cci =
10661069
m_index->compilands().GetCompiland(cu_id.asCompiland().modi);
10671070
lldbassert(cci);
1071+
auto line_table = std::make_unique<LineTable>(&comp_unit);
10681072

10691073
// This is basically a copy of the .debug$S subsections from all original COFF
10701074
// object files merged together with address relocations applied. We are
10711075
// looking for all DEBUG_S_LINES subsections.
1072-
std::vector<std::unique_ptr<LineSequence>> sequences;
10731076
for (const DebugSubsectionRecord &dssr :
10741077
cci->m_debug_stream.getSubsectionsArray()) {
10751078
if (dssr.kind() != DebugSubsectionKind::Lines)
@@ -1108,23 +1111,20 @@ bool SymbolFileNativePDB::ParseLineTable(CompileUnit &comp_unit) {
11081111
lldbassert(fn_iter != cci->m_file_list.end());
11091112
uint32_t file_index = std::distance(cci->m_file_list.begin(), fn_iter);
11101113

1111-
std::unique_ptr<LineSequence> sequence =
1112-
LineTable::CreateLineSequenceContainer();
1114+
std::unique_ptr<LineSequence> sequence(
1115+
line_table->CreateLineSequenceContainer());
11131116
lldbassert(!group.LineNumbers.empty());
11141117

11151118
for (const LineNumberEntry &entry : group.LineNumbers) {
1116-
AppendLineEntryToSequence(*sequence, *cci, virtual_addr, file_index,
1117-
*lfh, entry);
1119+
AppendLineEntryToSequence(*line_table, *sequence, *cci, virtual_addr,
1120+
file_index, *lfh, entry);
11181121
}
11191122
LineInfo last_line(group.LineNumbers.back().Flags);
1120-
TerminateLineSequence(*lfh, virtual_addr, file_index,
1121-
last_line.getEndLine(), *sequence);
1122-
sequences.push_back(std::move(sequence));
1123+
TerminateLineSequence(*line_table, *lfh, virtual_addr, file_index,
1124+
last_line.getEndLine(), std::move(sequence));
11231125
}
11241126
}
11251127

1126-
auto line_table =
1127-
std::make_unique<LineTable>(&comp_unit, std::move(sequences));
11281128
if (line_table->GetSize() == 0)
11291129
return false;
11301130

lldb/source/Plugins/SymbolFile/PDB/SymbolFilePDB.cpp

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1772,6 +1772,7 @@ bool SymbolFilePDB::ParseCompileUnitLineTable(CompileUnit &comp_unit,
17721772
// to do a mapping so that we can hand out indices.
17731773
llvm::DenseMap<uint32_t, uint32_t> index_map;
17741774
BuildSupportFileIdToSupportFileIndexMap(*compiland_up, index_map);
1775+
auto line_table = std::make_unique<LineTable>(&comp_unit);
17751776

17761777
// Find contributions to `compiland` from all source and header files.
17771778
auto files = m_session_up->getSourceFilesForCompiland(*compiland_up);
@@ -1780,10 +1781,9 @@ bool SymbolFilePDB::ParseCompileUnitLineTable(CompileUnit &comp_unit,
17801781

17811782
// For each source and header file, create a LineSequence for contributions
17821783
// to the compiland from that file, and add the sequence.
1783-
std::vector<std::unique_ptr<LineSequence>> sequences;
17841784
while (auto file = files->getNext()) {
1785-
std::unique_ptr<LineSequence> sequence =
1786-
LineTable::CreateLineSequenceContainer();
1785+
std::unique_ptr<LineSequence> sequence(
1786+
line_table->CreateLineSequenceContainer());
17871787
auto lines = m_session_up->findLineNumbers(*compiland_up, *file);
17881788
if (!lines)
17891789
continue;
@@ -1812,12 +1812,12 @@ bool SymbolFilePDB::ParseCompileUnitLineTable(CompileUnit &comp_unit,
18121812
// of the previous entry's address range if the current entry resulted in
18131813
// a gap from the previous entry.
18141814
if (is_gap && ShouldAddLine(match_line, prev_line, prev_length)) {
1815-
LineTable::AppendLineEntryToSequence(
1815+
line_table->AppendLineEntryToSequence(
18161816
sequence.get(), prev_addr + prev_length, prev_line, 0,
18171817
prev_source_idx, false, false, false, false, true);
18181818

1819-
sequences.push_back(std::move(sequence));
1820-
sequence = LineTable::CreateLineSequenceContainer();
1819+
line_table->InsertSequence(sequence.release());
1820+
sequence = line_table->CreateLineSequenceContainer();
18211821
}
18221822

18231823
if (ShouldAddLine(match_line, lno, length)) {
@@ -1836,9 +1836,9 @@ bool SymbolFilePDB::ParseCompileUnitLineTable(CompileUnit &comp_unit,
18361836
is_epilogue = (addr == epilogue->getVirtualAddress());
18371837
}
18381838

1839-
LineTable::AppendLineEntryToSequence(sequence.get(), addr, lno, col,
1840-
source_idx, is_statement, false,
1841-
is_prologue, is_epilogue, false);
1839+
line_table->AppendLineEntryToSequence(sequence.get(), addr, lno, col,
1840+
source_idx, is_statement, false,
1841+
is_prologue, is_epilogue, false);
18421842
}
18431843

18441844
prev_addr = addr;
@@ -1849,16 +1849,14 @@ bool SymbolFilePDB::ParseCompileUnitLineTable(CompileUnit &comp_unit,
18491849

18501850
if (entry_count > 0 && ShouldAddLine(match_line, prev_line, prev_length)) {
18511851
// The end is always a terminal entry, so insert it regardless.
1852-
LineTable::AppendLineEntryToSequence(
1852+
line_table->AppendLineEntryToSequence(
18531853
sequence.get(), prev_addr + prev_length, prev_line, 0,
18541854
prev_source_idx, false, false, false, false, true);
18551855
}
18561856

1857-
sequences.push_back(std::move(sequence));
1857+
line_table->InsertSequence(sequence.get());
18581858
}
18591859

1860-
auto line_table =
1861-
std::make_unique<LineTable>(&comp_unit, std::move(sequences));
18621860
if (line_table->GetSize()) {
18631861
comp_unit.SetLineTable(line_table.release());
18641862
return true;

0 commit comments

Comments
 (0)