mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-18 19:06:44 +00:00
[BOLT][DWARF] Cleanup buffer initialization for DWO range writer (#97843)
Cleanup buffer initialization for DWO range writer instances to remove empty buffer at the beginning.
This commit is contained in:
parent
dc8ea046a5
commit
7e10ad99ad
@ -226,6 +226,9 @@ public:
|
||||
/// Needs to be invoked before each \p CU is processed.
|
||||
void virtual initSection(DWARFUnit &CU){};
|
||||
|
||||
/// Initializes Ranges section with empty list.
|
||||
void initSection();
|
||||
|
||||
protected:
|
||||
std::unique_ptr<DebugBufferVector> RangesBuffer;
|
||||
|
||||
|
@ -137,11 +137,14 @@ DebugRangesSectionWriter::DebugRangesSectionWriter() {
|
||||
RangesBuffer = std::make_unique<DebugBufferVector>();
|
||||
RangesStream = std::make_unique<raw_svector_ostream>(*RangesBuffer);
|
||||
|
||||
// Add an empty range as the first entry;
|
||||
writeAddressRanges(*RangesStream.get(), DebugAddressRangesVector{});
|
||||
Kind = RangesWriterKind::DebugRangesWriter;
|
||||
}
|
||||
|
||||
void DebugRangesSectionWriter::initSection() {
|
||||
// Adds an empty range to the buffer.
|
||||
writeAddressRanges(*RangesStream.get(), DebugAddressRangesVector{});
|
||||
}
|
||||
|
||||
uint64_t DebugRangesSectionWriter::addRanges(
|
||||
DebugAddressRangesVector &&Ranges,
|
||||
std::map<DebugAddressRangesVector, uint64_t> &CachedRanges) {
|
||||
|
@ -620,8 +620,10 @@ void DWARFRewriter::updateDebugInfo() {
|
||||
AddrWriter = std::make_unique<DebugAddrWriter>(&BC);
|
||||
}
|
||||
|
||||
if (BC.isDWARFLegacyUsed())
|
||||
if (BC.isDWARFLegacyUsed()) {
|
||||
LegacyRangesSectionWriter = std::make_unique<DebugRangesSectionWriter>();
|
||||
LegacyRangesSectionWriter->initSection();
|
||||
}
|
||||
|
||||
DebugLoclistWriter::setAddressWriter(AddrWriter.get());
|
||||
|
||||
@ -651,7 +653,6 @@ void DWARFRewriter::updateDebugInfo() {
|
||||
"LegacyRangeLists writer for DWO unit already exists.");
|
||||
auto LegacyRangesSectionWriterByCU =
|
||||
std::make_unique<DebugRangesSectionWriter>();
|
||||
LegacyRangesSectionWriterByCU->initSection(CU);
|
||||
LegacyRangesWritersByCU[*DWOId] =
|
||||
std::move(LegacyRangesSectionWriterByCU);
|
||||
}
|
||||
|
@ -27,15 +27,15 @@
|
||||
|
||||
# CHECK-NOT: warning: DWARF unit from offset {{.*}} incl. to offset {{.*}} excl. tries to read DIEs at offset {{.*}}
|
||||
|
||||
# CHECK-DWO-DWO: 00000000
|
||||
# CHECK-DWO-DWO: 00000010
|
||||
# CHECK-DWO-DWO: 00000010
|
||||
# CHECK-DWO-DWO: 00000050
|
||||
# CHECK-DWO-DWO: DW_TAG_subprogram
|
||||
# CHECK-DWO-DWO-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000010
|
||||
# CHECK-DWO-DWO-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000000
|
||||
# CHECK-DWO-DWO: DW_TAG_subprogram
|
||||
# CHECK-DWO-DWO-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000030
|
||||
# CHECK-DWO-DWO-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000020
|
||||
# CHECK-DWO-DWO: DW_TAG_subprogram
|
||||
# CHECK-DWO-DWO-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000050
|
||||
# CHECK-DWO-DWO-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000040
|
||||
|
||||
# CHECK-ADDR-SEC: .debug_addr contents:
|
||||
# CHECK-ADDR-SEC: 0x00000000: Addrs: [
|
||||
|
@ -40,16 +40,14 @@
|
||||
; BOLT-NEXT: 00000010 [[#%.16x,ADDR1:]] [[#%.16x,ADDRB1:]]
|
||||
; BOLT-NEXT: 00000010 [[#%.16x,ADDR2:]] [[#%.16x,ADDRB2:]]
|
||||
; BOLT-NEXT: 00000010 <End of list>
|
||||
; BOLT-NEXT: 00000040 [[#%.16x,ADDR1:]] [[#%.16x,ADDRB1:]]
|
||||
; BOLT-NEXT: 00000040 <End of list>
|
||||
; BOLT-NEXT: 00000050 [[#%.16x,ADDR1:]] [[#%.16x,ADDRB1:]]
|
||||
; BOLT-NEXT: 00000050 <End of list>
|
||||
; BOLT-NEXT: 00000070 [[#%.16x,ADDR2:]] [[#%.16x,ADDRB2:]]
|
||||
; BOLT-NEXT: 00000070 <End of list>
|
||||
; BOLT-NEXT: 00000090 [[#%.16x,ADDR3:]] [[#%.16x,ADDRB3:]]
|
||||
; BOLT-NEXT: 00000090 <End of list>
|
||||
; BOLT-NEXT: 000000b0 <End of list>
|
||||
; BOLT-NEXT: 000000c0 [[#%.16x,ADDR3:]] [[#%.16x,ADDRB3:]]
|
||||
; BOLT-NEXT: 000000c0 <End of list>
|
||||
; BOLT-NEXT: 00000060 [[#%.16x,ADDR2:]] [[#%.16x,ADDRB2:]]
|
||||
; BOLT-NEXT: 00000060 <End of list>
|
||||
; BOLT-NEXT: 00000080 [[#%.16x,ADDR3:]] [[#%.16x,ADDRB3:]]
|
||||
; BOLT-NEXT: 00000080 <End of list>
|
||||
; BOLT-NEXT: 000000a0 [[#%.16x,ADDR3:]] [[#%.16x,ADDRB3:]]
|
||||
; BOLT-NEXT: 000000a0 <End of list>
|
||||
|
||||
; BOLT: DW_TAG_compile_unit
|
||||
; BOLT: DW_AT_GNU_dwo_name [DW_FORM_strp] ( .debug_str[0x00000016] = "main.dwo.dwo")
|
||||
@ -65,10 +63,10 @@
|
||||
; BOLT: DW_AT_GNU_dwo_name [DW_FORM_strp] ( .debug_str[0x00000023] = "helper.dwo.dwo")
|
||||
; BOLT-NEXT: DW_AT_GNU_dwo_id
|
||||
; BOLT-NEXT: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
|
||||
; BOLT-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000090
|
||||
; BOLT-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000080
|
||||
; BOLT-NEXT: [0x[[#ADDR3]], 0x[[#ADDRB3]])
|
||||
; BOLT-NEXT: DW_AT_GNU_addr_base [DW_FORM_sec_offset] (0x00000010)
|
||||
; BOLT-NEXT: DW_AT_GNU_ranges_base [DW_FORM_sec_offset] (0x000000b0)
|
||||
; BOLT-NEXT: DW_AT_GNU_ranges_base [DW_FORM_sec_offset] (0x000000a0)
|
||||
|
||||
; PRE-BOLT-DWO-MAIN: version = 0x0004
|
||||
; PRE-BOLT-DWO-MAIN: DW_TAG_compile_unit
|
||||
@ -115,13 +113,13 @@
|
||||
; BOLT-DWO-MAIN-NEXT: DW_AT_decl_line
|
||||
; BOLT-DWO-MAIN-NEXT: DW_AT_location [DW_FORM_exprloc] (DW_OP_GNU_addr_index 0x1)
|
||||
; BOLT-DWO-MAIN: DW_TAG_subprogram [4]
|
||||
; BOLT-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000010
|
||||
; BOLT-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000000
|
||||
; BOLT-DWO-MAIN-NEXT: )
|
||||
; BOLT-DWO-MAIN-NEXT: DW_AT_frame_base
|
||||
; BOLT-DWO-MAIN-NEXT: DW_AT_linkage_name [DW_FORM_GNU_str_index] (indexed (00000003) string = "_Z3usePiS_")
|
||||
; BOLT-DWO-MAIN-NEXT: DW_AT_name [DW_FORM_GNU_str_index] (indexed (00000004) string = "use")
|
||||
; BOLT-DWO-MAIN: DW_TAG_subprogram [6]
|
||||
; BOLT-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000030
|
||||
; BOLT-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000020
|
||||
; BOLT-DWO-MAIN-NEXT: )
|
||||
; BOLT-DWO-MAIN-NEXT: DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_reg6 RBP)
|
||||
; BOLT-DWO-MAIN-NEXT: DW_AT_name [DW_FORM_GNU_str_index] (indexed (00000005) string = "main")
|
||||
@ -162,4 +160,4 @@
|
||||
; BOLT-DWO-HELPER-NEXT: DW_AT_decl_line
|
||||
; BOLT-DWO-HELPER-NEXT: DW_AT_location [DW_FORM_exprloc] (DW_OP_GNU_addr_index 0x1)
|
||||
; BOLT-DWO-HELPER: DW_TAG_subprogram [4]
|
||||
; BOLT-DWO-HELPER-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000010
|
||||
; BOLT-DWO-HELPER-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000000
|
||||
|
@ -25,32 +25,30 @@
|
||||
; BOLT-NEXT: 00000010 [[#%.16x,ADDR6:]] [[#%.16x,ADDRB6:]]
|
||||
; BOLT-NEXT: 00000010 [[#%.16x,ADDR7:]] [[#%.16x,ADDRB7:]]
|
||||
; BOLT-NEXT: 00000010 <End of list>
|
||||
; BOLT-NEXT: 00000090 [[#%.16x,ADDR1:]] [[#%.16x,ADDRB1:]]
|
||||
; BOLT-NEXT: 00000090 [[#%.16x,ADDR2:]] [[#%.16x,ADDRB2:]]
|
||||
; BOLT-NEXT: 00000090 [[#%.16x,ADDR3:]] [[#%.16x,ADDRB3:]]
|
||||
; BOLT-NEXT: 00000090 <End of list>
|
||||
; BOLT-NEXT: 000000a0 [[#%.16x,ADDR1:]] [[#%.16x,ADDRB1:]]
|
||||
; BOLT-NEXT: 000000a0 [[#%.16x,ADDR2:]] [[#%.16x,ADDRB2:]]
|
||||
; BOLT-NEXT: 000000a0 [[#%.16x,ADDR3:]] [[#%.16x,ADDRB3:]]
|
||||
; BOLT-NEXT: 000000a0 <End of list>
|
||||
; BOLT-NEXT: 000000e0 [[#%.16x,ADDR5:]] [[#%.16x,ADDRB5:]]
|
||||
; BOLT-NEXT: 000000e0 [[#%.16x,ADDR6:]] [[#%.16x,ADDRB6:]]
|
||||
; BOLT-NEXT: 000000e0 [[#%.16x,ADDR7:]] [[#%.16x,ADDRB7:]]
|
||||
; BOLT-NEXT: 000000e0 <End of list>
|
||||
; BOLT-NEXT: 00000120 [[#%.16x,ADDR8:]] [[#%.16x,ADDRB8:]]
|
||||
; BOLT-NEXT: 00000120 [[#%.16x,ADDR9:]] [[#%.16x,ADDRB9:]]
|
||||
; BOLT-NEXT: 00000120 [[#%.16x,ADDR10:]] [[#%.16x,ADDRB10:]]
|
||||
; BOLT-NEXT: 00000120 [[#%.16x,ADDR11:]] [[#%.16x,ADDRB11:]]
|
||||
; BOLT-NEXT: 00000120 [[#%.16x,ADDR12:]] [[#%.16x,ADDRB12:]]
|
||||
; BOLT-NEXT: 00000120 [[#%.16x,ADDR13:]] [[#%.16x,ADDRB13:]]
|
||||
; BOLT-NEXT: 00000120 [[#%.16x,ADDR14:]] [[#%.16x,ADDRB14:]]
|
||||
; BOLT-NEXT: 00000120 <End of list>
|
||||
; BOLT-NEXT: 000001a0 <End of list>
|
||||
; BOLT-NEXT: 000001b0 [[#%.16x,ADDR8:]] [[#%.16x,ADDRB8:]]
|
||||
; BOLT-NEXT: 000001b0 [[#%.16x,ADDR9:]] [[#%.16x,ADDRB9:]]
|
||||
; BOLT-NEXT: 000001b0 [[#%.16x,ADDR10:]] [[#%.16x,ADDRB10:]]
|
||||
; BOLT-NEXT: 000001b0 <End of list>
|
||||
; BOLT-NEXT: 000001f0 [[#%.16x,ADDR12:]] [[#%.16x,ADDRB12:]]
|
||||
; BOLT-NEXT: 000001f0 [[#%.16x,ADDR13:]] [[#%.16x,ADDRB13:]]
|
||||
; BOLT-NEXT: 000001f0 [[#%.16x,ADDR14:]] [[#%.16x,ADDRB14:]]
|
||||
; BOLT-NEXT: 000001f0 <End of list>
|
||||
; BOLT-NEXT: 000000d0 [[#%.16x,ADDR5:]] [[#%.16x,ADDRB5:]]
|
||||
; BOLT-NEXT: 000000d0 [[#%.16x,ADDR6:]] [[#%.16x,ADDRB6:]]
|
||||
; BOLT-NEXT: 000000d0 [[#%.16x,ADDR7:]] [[#%.16x,ADDRB7:]]
|
||||
; BOLT-NEXT: 000000d0 <End of list>
|
||||
; BOLT-NEXT: 00000110 [[#%.16x,ADDR8:]] [[#%.16x,ADDRB8:]]
|
||||
; BOLT-NEXT: 00000110 [[#%.16x,ADDR9:]] [[#%.16x,ADDRB9:]]
|
||||
; BOLT-NEXT: 00000110 [[#%.16x,ADDR10:]] [[#%.16x,ADDRB10:]]
|
||||
; BOLT-NEXT: 00000110 [[#%.16x,ADDR11:]] [[#%.16x,ADDRB11:]]
|
||||
; BOLT-NEXT: 00000110 [[#%.16x,ADDR12:]] [[#%.16x,ADDRB12:]]
|
||||
; BOLT-NEXT: 00000110 [[#%.16x,ADDR13:]] [[#%.16x,ADDRB13:]]
|
||||
; BOLT-NEXT: 00000110 [[#%.16x,ADDR14:]] [[#%.16x,ADDRB14:]]
|
||||
; BOLT-NEXT: 00000110 <End of list>
|
||||
; BOLT-NEXT: 00000190 [[#%.16x,ADDR8:]] [[#%.16x,ADDRB8:]]
|
||||
; BOLT-NEXT: 00000190 [[#%.16x,ADDR9:]] [[#%.16x,ADDRB9:]]
|
||||
; BOLT-NEXT: 00000190 [[#%.16x,ADDR10:]] [[#%.16x,ADDRB10:]]
|
||||
; BOLT-NEXT: 00000190 <End of list>
|
||||
; BOLT-NEXT: 000001d0 [[#%.16x,ADDR12:]] [[#%.16x,ADDRB12:]]
|
||||
; BOLT-NEXT: 000001d0 [[#%.16x,ADDR13:]] [[#%.16x,ADDRB13:]]
|
||||
; BOLT-NEXT: 000001d0 [[#%.16x,ADDR14:]] [[#%.16x,ADDRB14:]]
|
||||
; BOLT-NEXT: 000001d0 <End of list>
|
||||
|
||||
; BOLT: DW_TAG_compile_unit
|
||||
; BOLT: DW_AT_GNU_dwo_name [DW_FORM_strp] ( .debug_str[0x{{[0-9a-fA-F]+}}] = "main.dwo.dwo")
|
||||
@ -71,9 +69,9 @@
|
||||
; BOLT: DW_TAG_compile_unit
|
||||
; BOLT: DW_AT_GNU_dwo_name [DW_FORM_strp] ( .debug_str[0x{{[0-9a-fA-F]+}}] = "mainOther.dwo.dwo")
|
||||
; BOLT-NEXT: DW_AT_GNU_dwo_id
|
||||
; BOLT-NEXT: DW_AT_GNU_ranges_base [DW_FORM_sec_offset] (0x000001a0)
|
||||
; BOLT-NEXT: DW_AT_GNU_ranges_base [DW_FORM_sec_offset] (0x00000190)
|
||||
; BOLT-NEXT: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
|
||||
; BOLT-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000120
|
||||
; BOLT-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000110
|
||||
; BOLT-NEXT: [0x[[#ADDR8]], 0x[[#ADDRB8]])
|
||||
; BOLT-NEXT: [0x[[#ADDR9]], 0x[[#ADDRB9]])
|
||||
; BOLT-NEXT: [0x[[#ADDR10]], 0x[[#ADDRB10]])
|
||||
@ -85,17 +83,17 @@
|
||||
; BOLT: {{^$}}
|
||||
|
||||
; BOLT-DWO-MAIN: DW_TAG_subprogram
|
||||
; BOLT-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000010
|
||||
; BOLT-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000000
|
||||
; BOLT-DWO-MAIN: DW_TAG_subprogram
|
||||
; BOLT-DWO-MAIN: DW_TAG_subprogram
|
||||
; BOLT-DWO-MAIN: DW_TAG_subprogram
|
||||
; BOLT-DWO-MAIN: DW_TAG_subprogram
|
||||
; BOLT-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000050
|
||||
; BOLT-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000040
|
||||
|
||||
; BOLT-DWO-MAIN: DW_TAG_subprogram
|
||||
; BOLT-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000010
|
||||
; BOLT-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000000
|
||||
; BOLT-DWO-MAIN: DW_TAG_subprogram
|
||||
; BOLT-DWO-MAIN: DW_TAG_subprogram
|
||||
; BOLT-DWO-MAIN: DW_TAG_subprogram
|
||||
; BOLT-DWO-MAIN: DW_TAG_subprogram
|
||||
; BOLT-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000050
|
||||
; BOLT-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000040
|
||||
|
@ -23,15 +23,14 @@
|
||||
; BOLT-NEXT: 00000010 [[#%.16x,ADDR6:]] [[#%.16x,ADDRB6:]]
|
||||
; BOLT-NEXT: 00000010 [[#%.16x,ADDR7:]] [[#%.16x,ADDRB7:]]
|
||||
; BOLT-NEXT: 00000010 <End of list>
|
||||
; BOLT-NEXT: 00000090 [[#%.16x,ADDR1:]] [[#%.16x,ADDRB1:]]
|
||||
; BOLT-NEXT: 00000090 [[#%.16x,ADDR2:]] [[#%.16x,ADDRB2:]]
|
||||
; BOLT-NEXT: 00000090 [[#%.16x,ADDR3:]] [[#%.16x,ADDRB3:]]
|
||||
; BOLT-NEXT: 00000090 <End of list>
|
||||
; BOLT-NEXT: 000000a0 [[#%.16x,ADDR1:]] [[#%.16x,ADDRB1:]]
|
||||
; BOLT-NEXT: 000000a0 [[#%.16x,ADDR2:]] [[#%.16x,ADDRB2:]]
|
||||
; BOLT-NEXT: 000000a0 [[#%.16x,ADDR3:]] [[#%.16x,ADDRB3:]]
|
||||
; BOLT-NEXT: 000000a0 <End of list>
|
||||
; BOLT-NEXT: 000000e0 [[#%.16x,ADDR5:]] [[#%.16x,ADDRB5:]]
|
||||
; BOLT-NEXT: 000000e0 [[#%.16x,ADDR6:]] [[#%.16x,ADDRB6:]]
|
||||
; BOLT-NEXT: 000000e0 [[#%.16x,ADDR7:]] [[#%.16x,ADDRB7:]]
|
||||
; BOLT-NEXT: 000000e0 <End of list>
|
||||
; BOLT-NEXT: 000000d0 [[#%.16x,ADDR5:]] [[#%.16x,ADDRB5:]]
|
||||
; BOLT-NEXT: 000000d0 [[#%.16x,ADDR6:]] [[#%.16x,ADDRB6:]]
|
||||
; BOLT-NEXT: 000000d0 [[#%.16x,ADDR7:]] [[#%.16x,ADDRB7:]]
|
||||
; BOLT-NEXT: 000000d0 <End of list>
|
||||
|
||||
; BOLT: DW_TAG_compile_unit
|
||||
; BOLT: DW_AT_GNU_dwo_name [DW_FORM_strp] ( .debug_str[0x{{[0-9a-fA-F]+}}] = "main.dwo.dwo")
|
||||
@ -49,9 +48,9 @@
|
||||
; BOLT-NEXT: DW_AT_GNU_addr_base [DW_FORM_sec_offset] (0x00000000)
|
||||
|
||||
; BOLT-DWO-MAIN: DW_TAG_subprogram
|
||||
; BOLT-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000010
|
||||
; BOLT-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000000
|
||||
; BOLT-DWO-MAIN: DW_TAG_subprogram
|
||||
; BOLT-DWO-MAIN: DW_TAG_subprogram
|
||||
; BOLT-DWO-MAIN: DW_TAG_subprogram
|
||||
; BOLT-DWO-MAIN: DW_TAG_subprogram
|
||||
; BOLT-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000050
|
||||
; BOLT-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000040
|
||||
|
Loading…
x
Reference in New Issue
Block a user