Skip to content

Commit efb8a1c

Browse files
committed
[BOLT][DWARF] Delete DW_AT_low_pc when converting to ranges
Now that we have new DWARF Rewriter we can remove DW_AT_low_pc when converting DW_AT_low_pc/DW_AT_high_pc to DW_AT_ranges. Which closer follows DWARF spec. Leaving CU DW_AT_low_pc in place. Reading the spec I think it's needed. Reviewed By: maksfb Differential Revision: https://reviews.llvm.org/D156957
1 parent b82c259 commit efb8a1c

9 files changed

+34
-82
lines changed

bolt/lib/Rewrite/DWARFRewriter.cpp

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2161,16 +2161,16 @@ void DWARFRewriter::convertToRangesPatchDebugInfo(
21612161
} else if (Unit.getVersion() < 4) {
21622162
RangesForm = dwarf::DW_FORM_data4;
21632163
}
2164-
2164+
bool IsUnitDie = Die.getTag() == dwarf::DW_TAG_compile_unit ||
2165+
Die.getTag() == dwarf::DW_TAG_skeleton_unit;
2166+
if (!IsUnitDie)
2167+
DIEBldr.deleteValue(&Die, LowPCAttrInfo.getAttribute());
21652168
// In DWARF4 for DW_AT_low_pc in binary DW_FORM_addr is used. In the DWO
21662169
// section DW_FORM_GNU_addr_index is used. So for if we are converting
21672170
// DW_AT_low_pc/DW_AT_high_pc and see DW_FORM_GNU_addr_index. We are
21682171
// converting in DWO section, and DW_AT_ranges [DW_FORM_sec_offset] is
21692172
// relative to DW_AT_GNU_ranges_base.
21702173
if (LowForm == dwarf::DW_FORM_GNU_addr_index) {
2171-
// Use ULEB128 for the value.
2172-
DIEBldr.replaceValue(&Die, LowPCAttrInfo.getAttribute(),
2173-
LowPCAttrInfo.getForm(), DIEInteger(0));
21742174
// Ranges are relative to DW_AT_GNU_ranges_base.
21752175
uint64_t CurRangeBase = 0;
21762176
if (std::optional<uint64_t> DWOId = Unit.getDWOId()) {
@@ -2181,14 +2181,16 @@ void DWARFRewriter::convertToRangesPatchDebugInfo(
21812181
// In DWARF 5 we can have DW_AT_low_pc either as DW_FORM_addr, or
21822182
// DW_FORM_addrx. Former is when DW_AT_rnglists_base is present. Latter is
21832183
// when it's absent.
2184-
if (LowForm == dwarf::DW_FORM_addrx) {
2185-
const uint32_t Index = AddrWriter->getIndexFromAddress(0, Unit);
2186-
DIEBldr.replaceValue(&Die, LowPCAttrInfo.getAttribute(),
2187-
LowPCAttrInfo.getForm(), DIEInteger(Index));
2188-
} else
2189-
DIEBldr.replaceValue(&Die, LowPCAttrInfo.getAttribute(),
2190-
LowPCAttrInfo.getForm(), DIEInteger(0));
2191-
2184+
if (IsUnitDie) {
2185+
if (LowForm == dwarf::DW_FORM_addrx) {
2186+
const uint32_t Index = AddrWriter->getIndexFromAddress(0, Unit);
2187+
DIEBldr.replaceValue(&Die, LowPCAttrInfo.getAttribute(),
2188+
LowPCAttrInfo.getForm(), DIEInteger(Index));
2189+
} else {
2190+
DIEBldr.replaceValue(&Die, LowPCAttrInfo.getAttribute(),
2191+
LowPCAttrInfo.getForm(), DIEInteger(0));
2192+
}
2193+
}
21922194
// Original CU didn't have DW_AT_*_base. We converted it's children (or
21932195
// dwo), so need to insert it into CU.
21942196
if (RangesBase)

bolt/test/X86/debug-fission-single-convert.s

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,10 @@
3131
# CHECK-DWO-DWO: 00000010
3232
# CHECK-DWO-DWO: 00000050
3333
# CHECK-DWO-DWO: DW_TAG_subprogram
34-
# CHECK-DWO-DWO-NEXT: DW_AT_low_pc [DW_FORM_GNU_addr_index] (indexed (00000000)
3534
# CHECK-DWO-DWO-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000000
3635
# CHECK-DWO-DWO: DW_TAG_subprogram
37-
# CHECK-DWO-DWO-NEXT: DW_AT_low_pc [DW_FORM_GNU_addr_index] (indexed (00000000)
3836
# CHECK-DWO-DWO-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000020
3937
# CHECK-DWO-DWO: DW_TAG_subprogram
40-
# CHECK-DWO-DWO-NEXT: DW_AT_low_pc [DW_FORM_GNU_addr_index] (indexed (00000000)
4138
# CHECK-DWO-DWO-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000040
4239

4340
# CHECK-ADDR-SEC: .debug_addr contents:

bolt/test/X86/dwarf4-df-dualcu.test

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,14 +113,12 @@
113113
; BOLT-DWO-MAIN-NEXT: DW_AT_decl_line
114114
; BOLT-DWO-MAIN-NEXT: DW_AT_location [DW_FORM_exprloc] (DW_OP_GNU_addr_index 0x1)
115115
; BOLT-DWO-MAIN: DW_TAG_subprogram [4]
116-
; BOLT-DWO-MAIN-NEXT: DW_AT_low_pc [DW_FORM_GNU_addr_index] (indexed (00000000)
117116
; BOLT-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000000
118117
; BOLT-DWO-MAIN-NEXT: )
119118
; BOLT-DWO-MAIN-NEXT: DW_AT_frame_base
120119
; BOLT-DWO-MAIN-NEXT: DW_AT_linkage_name [DW_FORM_GNU_str_index] (indexed (00000003) string = "_Z3usePiS_")
121120
; BOLT-DWO-MAIN-NEXT: DW_AT_name [DW_FORM_GNU_str_index] (indexed (00000004) string = "use")
122121
; BOLT-DWO-MAIN: DW_TAG_subprogram [6]
123-
; BOLT-DWO-MAIN-NEXT: DW_AT_low_pc [DW_FORM_GNU_addr_index] (indexed (00000000)
124122
; BOLT-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000020
125123
; BOLT-DWO-MAIN-NEXT: )
126124
; BOLT-DWO-MAIN-NEXT: DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_reg6 RBP)
@@ -162,5 +160,4 @@
162160
; BOLT-DWO-HELPER-NEXT: DW_AT_decl_line
163161
; BOLT-DWO-HELPER-NEXT: DW_AT_location [DW_FORM_exprloc] (DW_OP_GNU_addr_index 0x1)
164162
; BOLT-DWO-HELPER: DW_TAG_subprogram [4]
165-
; BOLT-DWO-HELPER-NEXT: DW_AT_low_pc [DW_FORM_GNU_addr_index] (indexed (00000000)
166163
; BOLT-DWO-HELPER-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000000

bolt/test/X86/dwarf5-df-dualcu.test

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,14 @@
2929
; BOLT-NEXT: 0x
3030
; BOLT-NEXT: 0x
3131
; BOLT-NEXT: 0x[[#%.16x,ADDR:]]
32-
; BOLT-NEXT: 0x
3332
; BOLT-NEXT: 0x[[#%.16x,ADDR2:]]
3433
; BOLT: Addrs: [
3534
; BOLT-NEXT: 0x
3635
; BOLT-NEXT: 0x
3736
; BOLT-NEXT: 0x[[#%.16x,ADDR3:]]
3837
; BOLT: DW_TAG_skeleton_unit
3938
; BOLT: DW_AT_dwo_name [DW_FORM_strx1] (indexed (00000001) string = "main.dwo.dwo")
40-
; BOLT-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000003) address = 0x0000000000000000)
39+
; BOLT-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000004) address = 0x0000000000000000)
4140
; BOLT-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) rangelist = 0x00000010
4241
; BOLT-NEXT: [0x[[#ADDR]]
4342
; BOLT-SAME: 0x[[#ADDR + 0x24]]
@@ -98,14 +97,12 @@
9897
; BOLT-DWO-MAIN-NEXT: DW_AT_decl_line
9998
; BOLT-DWO-MAIN-NEXT: DW_AT_location [DW_FORM_exprloc] (DW_OP_addrx 0x1)
10099
; BOLT-DWO-MAIN: DW_TAG_subprogram [4]
101-
; BOLT-DWO-MAIN-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000003)
102100
; BOLT-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) rangelist = 0x00000014
103101
; BOLT-DWO-MAIN-NEXT: [0x0000000000000000, 0x0000000000000024))
104102
; BOLT-DWO-MAIN-NEXT: DW_AT_frame_base
105103
; BOLT-DWO-MAIN-NEXT: DW_AT_linkage_name [DW_FORM_strx1] (indexed (00000003) string = "_Z3usePiS_")
106104
; BOLT-DWO-MAIN-NEXT: DW_AT_name [DW_FORM_strx1] (indexed (00000004) string = "use")
107105
; BOLT-DWO-MAIN: DW_TAG_subprogram [6]
108-
; BOLT-DWO-MAIN-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000003)
109106
; BOLT-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x1) rangelist = 0x00000018
110107
; BOLT-DWO-MAIN-NEXT: [0x0000000000000000, 0x0000000000000059))
111108
; BOLT-DWO-MAIN-NEXT: DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_reg6 RBP)
@@ -146,6 +143,5 @@
146143
; BOLT-DWO-HELPER-NEXT: DW_AT_decl_line
147144
; BOLT-DWO-HELPER-NEXT: DW_AT_location [DW_FORM_exprloc] (DW_OP_addrx 0x1)
148145
; BOLT-DWO-HELPER: DW_TAG_subprogram [4]
149-
; BOLT-DWO-HELPER-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000003)
150146
; BOLT-DWO-HELPER-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) rangelist = 0x00000010
151147
; BOLT-DWO-HELPER-NEXT: [0x0000000000000000, 0x000000000000003d))

bolt/test/X86/dwarf5-df-mono-dualcu.test

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,12 @@
3030
; BOLT-NEXT: 0x
3131
; BOLT-NEXT: 0x
3232
; BOLT-NEXT: 0x[[#%.16x,ADDR:]]
33-
; BOLT-NEXT: 0x
3433
; BOLT-NEXT: 0x[[#%.16x,ADDR2:]]
3534
; BOLT: Addrs: [
3635
; BOLT-NEXT: 0x[[#%.16x,ADDR3:]]
3736
; BOLT: DW_TAG_skeleton_unit
3837
; BOLT: DW_AT_dwo_name [DW_FORM_strx1] (indexed (00000001) string = "main.dwo.dwo")
39-
; BOLT-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000003) address = 0x0000000000000000)
38+
; BOLT-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000004) address = 0x0000000000000000)
4039
; BOLT-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) rangelist = 0x00000010
4140
; BOLT-NEXT: [0x[[#ADDR]]
4241
; BOLT-SAME: 0x[[#ADDR + 0x24]]
@@ -67,7 +66,6 @@
6766
; BOLT-NEXT: DW_AT_decl_line
6867
; BOLT-NEXT: DW_AT_location [DW_FORM_exprloc] (DW_OP_addrx 0x3)
6968
; BOLT: DW_TAG_subprogram
70-
; BOLT-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000001) address = 0x0000000000000000)
7169
; BOLT-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x1) rangelist = 0x00000032
7270
; BOLT-NEXT: [0x[[#ADDR3]]
7371
; BOLT-SAME: 0x[[#ADDR3 + 0x3D]]
@@ -116,14 +114,12 @@
116114
; BOLT-DWO-MAIN-NEXT: DW_AT_decl_line
117115
; BOLT-DWO-MAIN-NEXT: DW_AT_location [DW_FORM_exprloc] (DW_OP_addrx 0x1)
118116
; BOLT-DWO-MAIN: DW_TAG_subprogram [4]
119-
; BOLT-DWO-MAIN-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000003)
120117
; BOLT-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) rangelist = 0x00000014
121118
; BOLT-DWO-MAIN-NEXT: [0x0000000000000000, 0x0000000000000024))
122119
; BOLT-DWO-MAIN-NEXT: DW_AT_frame_base
123120
; BOLT-DWO-MAIN-NEXT: DW_AT_linkage_name [DW_FORM_strx1] (indexed (00000003) string = "_Z3usePiS_")
124121
; BOLT-DWO-MAIN-NEXT: DW_AT_name [DW_FORM_strx1] (indexed (00000004) string = "use")
125122
; BOLT-DWO-MAIN: DW_TAG_subprogram [6]
126-
; BOLT-DWO-MAIN-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000003)
127123
; BOLT-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x1) rangelist = 0x00000018
128124
; BOLT-DWO-MAIN-NEXT: [0x0000000000000000, 0x0000000000000059))
129125
; BOLT-DWO-MAIN-NEXT: DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_reg6 RBP)

bolt/test/X86/dwarf5-dwarf4-monolithic.test

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,6 @@
166166
# POSTCHECK-NEXT: 0x[[#%.16x,ADDR4:]]
167167
# POSTCHECK-NEXT: 0x[[#%.16x,ADDR5:]]
168168
# POSTCHECK-NEXT: 0x[[#%.16x,ADDR6:]]
169-
# POSTCHECK-NEXT: 0x[[#%.16x,ADDR7:]]
170169

171170
# POSTCHECK: Addrs: [
172171
# POSTCHECK-NEXT: 0x[[#%.16x,ADDRB:]]
@@ -186,35 +185,33 @@
186185
# POSTCHECK-NEXT: DW_AT_low_pc
187186
# POSTCHECK: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0)
188187
# POSTCHECK-NEXT: [0x[[#ADDR]], 0x[[#ADDR + 0x7]]
189-
# POSTCHECK-NEXT: [0x[[#ADDR2]], 0x[[#ADDR2 + 0x51]]
188+
# POSTCHECK-NEXT: [0x[[#ADDR1]], 0x[[#ADDR1 + 0x51]]
190189
# POSTCHECK-NEXT: DW_AT_addr_base [DW_FORM_sec_offset] (0x00000008)
191190
# POSTCHECK-NEXT: DW_AT_rnglists_base [DW_FORM_sec_offset] (0x0000000c)
192191
# POSTCHECK-NEXT: DW_AT_loclists_base [DW_FORM_sec_offset] (0x0000000c)
193192
# POSTCHECK: DW_TAG_subprogram [2]
194-
# POSTCHECK: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000001) address = 0x0000000000000000)
195193
# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x1) rangelist
196194
# POSTCHECK-NEXT: [0x[[#ADDR]], 0x[[#ADDR + 0x7]]
197195
# POSTCHECK: DW_TAG_subprogram [8]
198-
# POSTCHECK-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000001) address = 0x0000000000000000)
199196
# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x2) rangelist = 0x00000029
200-
# POSTCHECK-NEXT: [0x[[#ADDR2]], 0x[[#ADDR2 + 0x51]]
197+
# POSTCHECK-NEXT: [0x[[#ADDR1]], 0x[[#ADDR1 + 0x51]]
201198
# POSTCHECK: DW_TAG_formal_parameter [9]
202199
# POSTCHECK-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x0) loclist = 0x00000018
203-
# POSTCHECK-NEXT: [0x[[#ADDR2]], 0x[[#ADDR2 + 0x22]]
204-
# POSTCHECK-NEXT: [0x[[#ADDR2 + 0x22]], 0x[[#ADDR2 + 0x51]]
200+
# POSTCHECK-NEXT: [0x[[#ADDR1]], 0x[[#ADDR1 + 0x22]]
201+
# POSTCHECK-NEXT: [0x[[#ADDR1 + 0x22]], 0x[[#ADDR1 + 0x51]]
205202
# POSTCHECK: DW_TAG_formal_parameter [9]
206203
# POSTCHECK-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x1) loclist = 0x00000028
207-
# POSTCHECK-NEXT: [0x[[#ADDR2]], 0x[[#ADDR2 + 0x27]]
208-
# POSTCHECK-NEXT: [0x[[#ADDR2 + 0x27]], 0x[[#ADDR2 + 0x51]]
204+
# POSTCHECK-NEXT: [0x[[#ADDR1]], 0x[[#ADDR1 + 0x27]]
205+
# POSTCHECK-NEXT: [0x[[#ADDR1 + 0x27]], 0x[[#ADDR1 + 0x51]]
209206
# POSTCHECK: DW_TAG_variable
210207
# POSTCHECK-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x2) loclist = 0x00000038
211-
# POSTCHECK-NEXT: [0x[[#ADDR3]], 0x[[#ADDR3 + 0x6]]
212-
# POSTCHECK-NEXT: [0x[[#ADDR3 + 0x6]], 0x[[#ADDR3 + 0x46]]
208+
# POSTCHECK-NEXT: [0x[[#ADDR2]], 0x[[#ADDR2 + 0x6]]
209+
# POSTCHECK-NEXT: [0x[[#ADDR2 + 0x6]], 0x[[#ADDR2 + 0x46]]
213210
# POSTCHECK: DW_TAG_inlined_subroutine [12]
214211
# POSTCHECK-NEXT: DW_AT_abstract_origin
215212
# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x3) rangelist = 0x0000002d
216-
# POSTCHECK-NEXT: [0x[[#ADDR4]], 0x[[#ADDR4 + 0x4]]
217-
# POSTCHECK-NEXT: [0x[[#ADDR4 + 0x10]], 0x[[#ADDR4 + 0x16]]
213+
# POSTCHECK-NEXT: [0x[[#ADDR3]], 0x[[#ADDR3 + 0x4]]
214+
# POSTCHECK-NEXT: [0x[[#ADDR3 + 0x10]], 0x[[#ADDR3 + 0x16]]
218215

219216
# helper0.cpp
220217
# POSTCHECK: version = 0x0004
@@ -228,7 +225,6 @@
228225
# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
229226
# POSTCHECK-NEXT: [0x
230227
# POSTCHECK: DW_TAG_subprogram [22]
231-
# POSTCHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
232228
# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
233229
# POSTCHECK-NEXT: [0x
234230
# POSTCHECK: DW_TAG_variable [24]
@@ -237,7 +233,6 @@
237233
# POSTCHECK-NEXT: [0x
238234
# POSTCHECK: DW_TAG_inlined_subroutine [25]
239235
# POSTCHECK-NEXT: DW_AT_abstract_origin
240-
# POSTCHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
241236
# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
242237
# POSTCHECK-NEXT: [0x
243238

@@ -264,16 +259,14 @@
264259
# POSTCHECK-NEXT: DW_AT_decl_line
265260
# POSTCHECK: DW_AT_location [DW_FORM_exprloc] (DW_OP_addrx 0x2)
266261
# POSTCHECK: DW_TAG_subprogram [29]
267-
# POSTCHECK-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000001)
268262
# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x1)
269263
# POSTCHECK-NEXT: [0x[[#ADDRB]], 0x[[#ADDRB + 0x4]]
270264
# POSTCHECK: DW_TAG_variable [10]
271265
# POSTCHECK-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x0)
272266
# POSTCHECK-NEXT: [0x[[#ADDRB]], 0x[[#ADDRB + 0x3]]
273267
# POSTCHECK-NEXT: [0x[[#ADDRB + 0x3]], 0x[[#ADDRB + 0x4]]
274-
# POSTCHECK: DW_TAG_inlined_subroutine [31]
268+
# POSTCHECK: DW_TAG_inlined_subroutine
275269
# POSTCHECK-NEXT: DW_AT_abstract_origin
276-
# POSTCHECK-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000001)
277270
# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x2) rangelist
278271
# POSTCHECK-NEXT: [0x[[#ADDRB]], 0x[[#ADDRB + 0x3]]
279272

@@ -289,7 +282,6 @@
289282
# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
290283
# POSTCHECK-NEXT: [0x
291284
# POSTCHECK: DW_TAG_subprogram [22]
292-
# POSTCHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
293285
# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
294286
# POSTCHECK-NEXT: [0x
295287
# POSTCHECK: DW_TAG_variable [24]
@@ -298,7 +290,6 @@
298290
# POSTCHECK-NEXT: [0x
299291
# POSTCHECK: DW_TAG_inlined_subroutine [25]
300292
# POSTCHECK-NEXT: DW_AT_abstract_origin
301-
# POSTCHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
302293
# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
303294
# POSTCHECK-NEXT: [0x
304295

bolt/test/X86/dwarf5-locaddrx.test

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,9 @@
2525
; BOLT-NEXT: 0x
2626
; BOLT-NEXT: 0x
2727
; BOLT-NEXT: 0x[[#%.16x,ADDR:]]
28-
; BOLT-NEXT: 0x
2928
; BOLT-NEXT: 0x[[#%.16x,ADDR2:]]
3029
; BOLT: DW_TAG_skeleton_unit
31-
; BOLT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000003) address = 0x0000000000000000)
30+
; BOLT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000004) address = 0x0000000000000000)
3231
; BOLT-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) rangelist = 0x00000010
3332
; BOLT-NEXT: [0x[[#ADDR]]
3433
; BOLT-SAME: 0x[[#ADDR + 0x24]]
@@ -76,10 +75,8 @@
7675
; BOLT-DWO-NEXT: DW_AT_decl_line
7776
; BOLT-DWO-NEXT: DW_AT_location [DW_FORM_exprloc] (DW_OP_addrx 0x1)
7877
; BOLT-DWO: DW_TAG_subprogram [4]
79-
; BOLT-DWO-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000003)
8078
; BOLT-DWO-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) rangelist = 0x00000014
8179
; BOLT-DWO-NEXT: [0x0000000000000000, 0x0000000000000024))
8280
; BOLT-DWO: DW_TAG_subprogram [6]
83-
; BOLT-DWO-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000003)
8481
; BOLT-DWO-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x1) rangelist = 0x00000018
8582
; BOLT-DWO-NEXT: [0x0000000000000000, 0x0000000000000054))

bolt/test/X86/dwarf5-split-dwarf4-monolithic.test

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,6 @@
137137
# POSTCHECK-NEXT: 0x[[#%.16x,ADDR4:]]
138138
# POSTCHECK-NEXT: 0x[[#%.16x,ADDR5:]]
139139
# POSTCHECK-NEXT: 0x[[#%.16x,ADDR6:]]
140-
# POSTCHECK-NEXT: 0x[[#%.16x,ADDR7:]]
141140

142141
# POSTCHECK: Addrs: [
143142
# POSTCHECK-NEXT: 0x[[#%.16x,ADDRB:]]
@@ -155,7 +154,7 @@
155154
# POSTCHECK-NEXT: DW_AT_low_pc
156155
# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0)
157156
# POSTCHECK-NEXT: [0x[[#ADDR]], 0x[[#ADDR + 0x7]]
158-
# POSTCHECK-NEXT: [0x[[#ADDR2]], 0x[[#ADDR2 + 0x51]]
157+
# POSTCHECK-NEXT: [0x[[#ADDR1]], 0x[[#ADDR1 + 0x51]]
159158
# POSTCHECK-NEXT: DW_AT_addr_base [DW_FORM_sec_offset]
160159
# POSTCHECK-NEXT: DW_AT_rnglists_base [DW_FORM_sec_offset]
161160

@@ -171,7 +170,6 @@
171170
# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
172171
# POSTCHECK-NEXT: [0x
173172
# POSTCHECK: DW_TAG_subprogram [8]
174-
# POSTCHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
175173
# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
176174
# POSTCHECK-NEXT: [0x
177175
# POSTCHECK: DW_TAG_variable [10]
@@ -180,7 +178,6 @@
180178
# POSTCHECK-NEXT: [0x
181179
# POSTCHECK: DW_TAG_inlined_subroutine [11]
182180
# POSTCHECK-NEXT: DW_AT_abstract_origin
183-
# POSTCHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
184181
# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
185182
# POSTCHECK-NEXT: [0x
186183

@@ -210,7 +207,6 @@
210207
# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
211208
# POSTCHECK-NEXT: [0x
212209
# POSTCHECK: DW_TAG_subprogram [8]
213-
# POSTCHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
214210
# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
215211
# POSTCHECK-NEXT: [0x
216212
# POSTCHECK: DW_TAG_variable [10]
@@ -219,45 +215,41 @@
219215
# POSTCHECK-NEXT: [0x
220216
# POSTCHECK: DW_TAG_inlined_subroutine [11]
221217
# POSTCHECK-NEXT: DW_AT_abstract_origin
222-
# POSTCHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
223218
# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
224219
# POSTCHECK-NEXT: [0x
225220

226221
# POSTCHECK-DWO-MAIN: version = 0x0005
227222
# POSTCHECK-DWO-MAIN: DW_TAG_compile_unit
228223
# POSTCHECK-DWO-MAIN: DW_TAG_subprogram [2]
229-
# POSTCHECK-DWO-MAIN-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000001)
230224
# POSTCHECK-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) rangelist = 0x00000018
231225
# POSTCHECK-DWO-MAIN-NEXT: [0x0000000000000000, 0x0000000000000007))
232226
# POSTCHECK-DWO-MAIN: DW_TAG_subprogram [8]
233-
# POSTCHECK-DWO-MAIN-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000001)
234227
# POSTCHECK-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x1) rangelist = 0x0000001c
235228
# POSTCHECK-DWO-MAIN-NEXT: [0x0000000000000000, 0x0000000000000051))
236229
# POSTCHECK-DWO-MAIN: DW_TAG_formal_parameter [9]
237230
# POSTCHECK-DWO-MAIN-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x0) loclist = 0x00000018:
238-
# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_base_addressx (0x0000000000000002)
231+
# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_base_addressx (0x0000000000000001)
239232
# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_offset_pair (0x0000000000000000, 0x0000000000000022): DW_OP_reg5 RDI
240233
# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_offset_pair (0x0000000000000022, 0x0000000000000051): DW_OP_entry_value(DW_OP_reg5 RDI), DW_OP_stack_value)
241234
# POSTCHECK-DWO-MAIN: DW_TAG_formal_parameter [9]
242235
# POSTCHECK-DWO-MAIN-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x1) loclist = 0x00000028:
243-
# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_base_addressx (0x0000000000000002)
236+
# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_base_addressx (0x0000000000000001)
244237
# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_offset_pair (0x0000000000000000, 0x0000000000000027): DW_OP_reg4 RSI
245238
# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_offset_pair (0x0000000000000027, 0x0000000000000051): DW_OP_entry_value(DW_OP_reg4 RSI), DW_OP_stack_value)
246239
# POSTCHECK-DWO-MAIN: DW_TAG_variable [10]
247240
# POSTCHECK-DWO-MAIN-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x2) loclist = 0x00000038:
248-
# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_base_addressx (0x0000000000000003)
241+
# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_base_addressx (0x0000000000000002)
249242
# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_offset_pair (0x0000000000000000, 0x0000000000000006): DW_OP_reg5 RDI
250243
# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_offset_pair (0x0000000000000006, 0x0000000000000046): DW_OP_reg14 R14)
251244
# POSTCHECK-DWO-MAIN: DW_TAG_inlined_subroutine [12]
252245
# POSTCHECK-DWO-MAIN-NEXT: DW_AT_abstract_origin [DW_FORM_ref4]
253246
# POSTCHECK-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x2) rangelist = 0x00000020
254247
# Encded as a pair. So it's offset from base address.
255-
# POSTCHECK-DWO-MAIN-NEXT: [0x0000000000000004, 0x0000000000000008)
256-
# POSTCHECK-DWO-MAIN-NEXT: [0x0000000000000014, 0x000000000000001a))
248+
# POSTCHECK-DWO-MAIN-NEXT: [0x0000000000000003, 0x0000000000000007)
249+
# POSTCHECK-DWO-MAIN-NEXT: [0x0000000000000013, 0x0000000000000019))
257250

258251
# POSTCHECK-DWO-HELPER1: version = 0x0005
259252
# POSTCHECK-DWO-HELPER1: DW_TAG_subprogram [7]
260-
# POSTCHECK-DWO-HELPER1-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000002) address
261253
# POSTCHECK-DWO-HELPER1-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) rangelist = 0x00000014
262254
# POSTCHECK-DWO-HELPER1-NEXT: [0x0000000000000000, 0x0000000000000004))
263255
# POSTCHECK-DWO-HELPER1: DW_TAG_variable [9]
@@ -267,7 +259,6 @@
267259
# POSTCHECK-DWO-HELPER1-NEXT: DW_LLE_offset_pair (0x0000000000000003, 0x0000000000000004): DW_OP_reg0 RAX)
268260
# POSTCHECK-DWO-HELPER1: DW_TAG_inlined_subroutine [10]
269261
# POSTCHECK-DWO-HELPER1-NEXT: DW_AT_abstract_origin
270-
# POSTCHECK-DWO-HELPER1-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000002) address
271262
# POSTCHECK-DWO-HELPER1-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x1) rangelist = 0x00000018
272263
# POSTCHECK-DWO-HELPER1-NEXT: [0x0000000000000000, 0x0000000000000003))
273264

0 commit comments

Comments
 (0)