Skip to content

Commit 35506d1

Browse files
committed
Updates to change RangesBase initialization
1 parent 26cf724 commit 35506d1

File tree

1 file changed

+15
-21
lines changed

1 file changed

+15
-21
lines changed

bolt/lib/Rewrite/DWARFRewriter.cpp

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -680,8 +680,7 @@ void DWARFRewriter::updateDebugInfo() {
680680
DWPState State;
681681
if (opts::WriteDWP)
682682
initDWPState(State);
683-
auto processSplitCU = [&](DWARFUnit *Unit, DIEBuilder *DIEBlder,
684-
std::optional<uint64_t> &RangesBase) {
683+
auto processSplitCU = [&](DWARFUnit *Unit, DIEBuilder *DIEBlder) {
685684
std::optional<DWARFUnit *> SplitCU;
686685
std::optional<uint64_t> DWOId = Unit->getDWOId();
687686
if (DWOId)
@@ -710,15 +709,11 @@ void DWARFRewriter::updateDebugInfo() {
710709
DebugLoclistWriter DebugLocDWoWriter(*Unit, Unit->getVersion(), true,
711710
AddressWriter);
712711
DebugRangesSectionWriter *TempRangesSectionWriter;
713-
if (Unit->getVersion() >= 5) {
712+
if (Unit->getVersion() >= 5)
714713
TempRangesSectionWriter = RangeListsWritersByCU[*DWOId].get();
715-
} else {
714+
else
716715
TempRangesSectionWriter = LegacyRangesWritersByCU[*DWOId].get();
717-
RangesBase = Unit->getVersion() >= 5
718-
? RangeListsSectionWriter.get()->getSectionOffset()
719-
: LegacyRangesSectionWriter.get()->getSectionOffset();
720-
}
721-
716+
722717
updateUnitDebugInfo(*(*SplitCU), DWODIEBuilder, DebugLocDWoWriter,
723718
*TempRangesSectionWriter, AddressWriter);
724719
DebugLocDWoWriter.finalize(DWODIEBuilder,
@@ -731,20 +726,26 @@ void DWARFRewriter::updateDebugInfo() {
731726
GDBIndexSection);
732727
};
733728
auto processMainBinaryCU = [&](DWARFUnit *Unit, DIEBuilder *DIEBlder,
734-
DebugLocWriter *DebugLocWriter,
735-
std::optional<uint64_t> &RangesBase) {
729+
DebugLocWriter *DebugLocWriter) {
736730
DebugAddrWriter &AddressWriter =
737731
*AddressWritersByCU[Unit->getOffset()].get();
738732
DebugRangesSectionWriter &RangesSectionWriter =
739733
Unit->getVersion() >= 5 ? *RangeListsSectionWriter.get()
740734
: *LegacyRangesSectionWriter.get();
735+
std::optional<uint64_t> RangesBase;
736+
std::optional<DWARFUnit *> SplitCU;
737+
std::optional<uint64_t> DWOId = Unit->getDWOId();
738+
if (DWOId)
739+
SplitCU = BC.getDWOCU(*DWOId);
741740
if (Unit->getVersion() >= 5) {
742741
RangesBase = RangesSectionWriter.getSectionOffset() +
743742
getDWARF5RngListLocListHeaderSize();
744743
RangesSectionWriter.initSection(*Unit);
745744
StrOffstsWriter->finalizeSection(*Unit, *DIEBlder);
745+
} else if(SplitCU) {
746+
RangesBase = LegacyRangesSectionWriter.get()->getSectionOffset();
746747
}
747-
748+
748749
updateUnitDebugInfo(*Unit, *DIEBlder, *DebugLocWriter, RangesSectionWriter,
749750
AddressWriter, RangesBase);
750751
DebugLocWriter->finalize(*DIEBlder, *DIEBlder->getUnitDIEbyUnit(*Unit));
@@ -775,22 +776,15 @@ void DWARFRewriter::updateDebugInfo() {
775776
llvm::SmallVector<DWARFUnit *> CompileUnits(
776777
std::begin(DIEBlder.getProcessedCUs()),
777778
std::end(DIEBlder.getProcessedCUs()));
778-
llvm::DenseMap<uint64_t, uint64_t> RangesBaseByCU;
779779
llvm::DenseMap<uint64_t, uint64_t> LocListWritersIndexByCU;
780780
for (DWARFUnit *CU : CompileUnits) {
781781
createRangeLocListAddressWriters(*CU, LocListWritersIndexByCU);
782-
std::optional<uint64_t> RangesBase;
783-
processSplitCU(CU, &DIEBlder, RangesBase);
784-
if (RangesBase)
785-
RangesBaseByCU[CU->getOffset()] = *RangesBase;
782+
processSplitCU(CU, &DIEBlder);
786783
}
787784
for (DWARFUnit *CU : CompileUnits) {
788-
std::optional<uint64_t> RangesBase;
789-
if (RangesBaseByCU.count(CU->getOffset()))
790-
RangesBase = RangesBaseByCU[CU->getOffset()];
791785
DebugLocWriter *DebugLocWriter =
792786
LocListWritersByCU[LocListWritersIndexByCU[CU->getOffset()]].get();
793-
processMainBinaryCU(CU, &DIEBlder, DebugLocWriter, RangesBase);
787+
processMainBinaryCU(CU, &DIEBlder, DebugLocWriter);
794788
}
795789
finalizeCompileUnits(DIEBlder, *Streamer, OffsetMap,
796790
DIEBlder.getProcessedCUs(), *FinalAddrWriter);

0 commit comments

Comments
 (0)