1da0c48c4Sopenharmony_ci#! /bin/sh
2da0c48c4Sopenharmony_ci# Copyright (C) 2013 Red Hat, Inc.
3da0c48c4Sopenharmony_ci# This file is part of elfutils.
4da0c48c4Sopenharmony_ci#
5da0c48c4Sopenharmony_ci# This file is free software; you can redistribute it and/or modify
6da0c48c4Sopenharmony_ci# it under the terms of the GNU General Public License as published by
7da0c48c4Sopenharmony_ci# the Free Software Foundation; either version 3 of the License, or
8da0c48c4Sopenharmony_ci# (at your option) any later version.
9da0c48c4Sopenharmony_ci#
10da0c48c4Sopenharmony_ci# elfutils is distributed in the hope that it will be useful, but
11da0c48c4Sopenharmony_ci# WITHOUT ANY WARRANTY; without even the implied warranty of
12da0c48c4Sopenharmony_ci# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13da0c48c4Sopenharmony_ci# GNU General Public License for more details.
14da0c48c4Sopenharmony_ci#
15da0c48c4Sopenharmony_ci# You should have received a copy of the GNU General Public License
16da0c48c4Sopenharmony_ci# along with this program.  If not, see <http://www.gnu.org/licenses/>.
17da0c48c4Sopenharmony_ci
18da0c48c4Sopenharmony_ci. $srcdir/test-subr.sh
19da0c48c4Sopenharmony_ci
20da0c48c4Sopenharmony_ci# - hello.c
21da0c48c4Sopenharmony_ci# int say (const char *prefix);
22da0c48c4Sopenharmony_ci#
23da0c48c4Sopenharmony_ci# static char *
24da0c48c4Sopenharmony_ci# subject (char *word, int count)
25da0c48c4Sopenharmony_ci# {
26da0c48c4Sopenharmony_ci#   return count > 0 ? word : (word + count);
27da0c48c4Sopenharmony_ci# }
28da0c48c4Sopenharmony_ci#
29da0c48c4Sopenharmony_ci# int
30da0c48c4Sopenharmony_ci# main (int argc, char **argv)
31da0c48c4Sopenharmony_ci# {
32da0c48c4Sopenharmony_ci#    return say (subject (argv[0], argc));
33da0c48c4Sopenharmony_ci# }
34da0c48c4Sopenharmony_ci#
35da0c48c4Sopenharmony_ci# - world.c
36da0c48c4Sopenharmony_ci# static int
37da0c48c4Sopenharmony_ci# sad (char c)
38da0c48c4Sopenharmony_ci# {
39da0c48c4Sopenharmony_ci#   return c > 0 ? c : c + 1;
40da0c48c4Sopenharmony_ci# }
41da0c48c4Sopenharmony_ci#
42da0c48c4Sopenharmony_ci# static int
43da0c48c4Sopenharmony_ci# happy (const char *w)
44da0c48c4Sopenharmony_ci# {
45da0c48c4Sopenharmony_ci#   return sad (w[1]);
46da0c48c4Sopenharmony_ci# }
47da0c48c4Sopenharmony_ci#
48da0c48c4Sopenharmony_ci# int
49da0c48c4Sopenharmony_ci# say (const char *prefix)
50da0c48c4Sopenharmony_ci# {
51da0c48c4Sopenharmony_ci#   const char *world = "World";
52da0c48c4Sopenharmony_ci#   return prefix ? sad (prefix[0]) : happy (world);
53da0c48c4Sopenharmony_ci# }
54da0c48c4Sopenharmony_ci#
55da0c48c4Sopenharmony_ci# gcc -g -O2 -c hello.c
56da0c48c4Sopenharmony_ci# gcc -g -O2 -c world.c
57da0c48c4Sopenharmony_ci# gcc -g -o testfileloc hello.o world.o
58da0c48c4Sopenharmony_ci
59da0c48c4Sopenharmony_citestfiles testfileloc
60da0c48c4Sopenharmony_ci
61da0c48c4Sopenharmony_ci# Process values as offsets from base addresses and resolve to symbols.
62da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/readelf --debug-dump=loc --debug-dump=ranges \
63da0c48c4Sopenharmony_ci  testfileloc<<\EOF
64da0c48c4Sopenharmony_ci
65da0c48c4Sopenharmony_ciDWARF section [33] '.debug_loc' at offset 0xd2a:
66da0c48c4Sopenharmony_ci
67da0c48c4Sopenharmony_ci CU [     b] base: 0x0000000000400480 <main>
68da0c48c4Sopenharmony_ci [     0] range 0, d
69da0c48c4Sopenharmony_ci          0x0000000000400480 <main>..
70da0c48c4Sopenharmony_ci          0x000000000040048c <main+0xc>
71da0c48c4Sopenharmony_ci           [ 0] reg5
72da0c48c4Sopenharmony_ci [    23] range 5, d
73da0c48c4Sopenharmony_ci          0x0000000000400485 <main+0x5>..
74da0c48c4Sopenharmony_ci          0x000000000040048c <main+0xc>
75da0c48c4Sopenharmony_ci           [ 0] reg5
76da0c48c4Sopenharmony_ci
77da0c48c4Sopenharmony_ci CU [    e0] base: 0x00000000004004a0 <say>
78da0c48c4Sopenharmony_ci [    46] range 12, 1a
79da0c48c4Sopenharmony_ci          0x00000000004004b2 <say+0x12>..
80da0c48c4Sopenharmony_ci          0x00000000004004b9 <say+0x19>
81da0c48c4Sopenharmony_ci           [ 0] breg5 0
82da0c48c4Sopenharmony_ci
83da0c48c4Sopenharmony_ciDWARF section [34] '.debug_ranges' at offset 0xd94:
84da0c48c4Sopenharmony_ci
85da0c48c4Sopenharmony_ci CU [     b] base: 0x0000000000400480 <main>
86da0c48c4Sopenharmony_ci [     0] range 0, 2
87da0c48c4Sopenharmony_ci          0x0000000000400480 <main>..
88da0c48c4Sopenharmony_ci          0x0000000000400481 <main+0x1>
89da0c48c4Sopenharmony_ci          range 5, d
90da0c48c4Sopenharmony_ci          0x0000000000400485 <main+0x5>..
91da0c48c4Sopenharmony_ci          0x000000000040048c <main+0xc>
92da0c48c4Sopenharmony_ci
93da0c48c4Sopenharmony_ci CU [    e0] base: 0x00000000004004a0 <say>
94da0c48c4Sopenharmony_ci [    30] range d, f
95da0c48c4Sopenharmony_ci          0x00000000004004ad <say+0xd>..
96da0c48c4Sopenharmony_ci          0x00000000004004ae <say+0xe>
97da0c48c4Sopenharmony_ci          range 12, 1a
98da0c48c4Sopenharmony_ci          0x00000000004004b2 <say+0x12>..
99da0c48c4Sopenharmony_ci          0x00000000004004b9 <say+0x19>
100da0c48c4Sopenharmony_ciEOF
101da0c48c4Sopenharmony_ci
102da0c48c4Sopenharmony_ci# Don't resolve addresses to symbols.
103da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/readelf -N --debug-dump=loc --debug-dump=ranges \
104da0c48c4Sopenharmony_ci  testfileloc<<\EOF
105da0c48c4Sopenharmony_ci
106da0c48c4Sopenharmony_ciDWARF section [33] '.debug_loc' at offset 0xd2a:
107da0c48c4Sopenharmony_ci
108da0c48c4Sopenharmony_ci CU [     b] base: 0x0000000000400480
109da0c48c4Sopenharmony_ci [     0] range 0, d
110da0c48c4Sopenharmony_ci          0x0000000000400480..
111da0c48c4Sopenharmony_ci          0x000000000040048c
112da0c48c4Sopenharmony_ci           [ 0] reg5
113da0c48c4Sopenharmony_ci [    23] range 5, d
114da0c48c4Sopenharmony_ci          0x0000000000400485..
115da0c48c4Sopenharmony_ci          0x000000000040048c
116da0c48c4Sopenharmony_ci           [ 0] reg5
117da0c48c4Sopenharmony_ci
118da0c48c4Sopenharmony_ci CU [    e0] base: 0x00000000004004a0
119da0c48c4Sopenharmony_ci [    46] range 12, 1a
120da0c48c4Sopenharmony_ci          0x00000000004004b2..
121da0c48c4Sopenharmony_ci          0x00000000004004b9
122da0c48c4Sopenharmony_ci           [ 0] breg5 0
123da0c48c4Sopenharmony_ci
124da0c48c4Sopenharmony_ciDWARF section [34] '.debug_ranges' at offset 0xd94:
125da0c48c4Sopenharmony_ci
126da0c48c4Sopenharmony_ci CU [     b] base: 0x0000000000400480
127da0c48c4Sopenharmony_ci [     0] range 0, 2
128da0c48c4Sopenharmony_ci          0x0000000000400480..
129da0c48c4Sopenharmony_ci          0x0000000000400481
130da0c48c4Sopenharmony_ci          range 5, d
131da0c48c4Sopenharmony_ci          0x0000000000400485..
132da0c48c4Sopenharmony_ci          0x000000000040048c
133da0c48c4Sopenharmony_ci
134da0c48c4Sopenharmony_ci CU [    e0] base: 0x00000000004004a0
135da0c48c4Sopenharmony_ci [    30] range d, f
136da0c48c4Sopenharmony_ci          0x00000000004004ad..
137da0c48c4Sopenharmony_ci          0x00000000004004ae
138da0c48c4Sopenharmony_ci          range 12, 1a
139da0c48c4Sopenharmony_ci          0x00000000004004b2..
140da0c48c4Sopenharmony_ci          0x00000000004004b9
141da0c48c4Sopenharmony_ciEOF
142da0c48c4Sopenharmony_ci
143da0c48c4Sopenharmony_ci# Produce "raw" unprocessed content.
144da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=loc --debug-dump=ranges \
145da0c48c4Sopenharmony_ci  testfileloc<<\EOF
146da0c48c4Sopenharmony_ci
147da0c48c4Sopenharmony_ciDWARF section [33] '.debug_loc' at offset 0xd2a:
148da0c48c4Sopenharmony_ci
149da0c48c4Sopenharmony_ci CU [     b] base: 0x0000000000400480
150da0c48c4Sopenharmony_ci [     0] range 0, d
151da0c48c4Sopenharmony_ci           [ 0] reg5
152da0c48c4Sopenharmony_ci [    23] range 5, d
153da0c48c4Sopenharmony_ci           [ 0] reg5
154da0c48c4Sopenharmony_ci
155da0c48c4Sopenharmony_ci CU [    e0] base: 0x00000000004004a0
156da0c48c4Sopenharmony_ci [    46] range 12, 1a
157da0c48c4Sopenharmony_ci           [ 0] breg5 0
158da0c48c4Sopenharmony_ci
159da0c48c4Sopenharmony_ciDWARF section [34] '.debug_ranges' at offset 0xd94:
160da0c48c4Sopenharmony_ci
161da0c48c4Sopenharmony_ci CU [     b] base: 0x0000000000400480
162da0c48c4Sopenharmony_ci [     0] range 0, 2
163da0c48c4Sopenharmony_ci          range 5, d
164da0c48c4Sopenharmony_ci
165da0c48c4Sopenharmony_ci CU [    e0] base: 0x00000000004004a0
166da0c48c4Sopenharmony_ci [    30] range d, f
167da0c48c4Sopenharmony_ci          range 12, 1a
168da0c48c4Sopenharmony_ciEOF
169da0c48c4Sopenharmony_ci
170da0c48c4Sopenharmony_ci# .debug_rnglists (DWARF5), see tests/testfile-dwarf-45.source
171da0c48c4Sopenharmony_citestfiles testfile-dwarf-5
172da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/readelf --debug-dump=loc testfile-dwarf-5<<\EOF
173da0c48c4Sopenharmony_ci
174da0c48c4Sopenharmony_ciDWARF section [31] '.debug_loclists' at offset 0x1c0c:
175da0c48c4Sopenharmony_ciTable at Offset 0x0:
176da0c48c4Sopenharmony_ci
177da0c48c4Sopenharmony_ci Length:               96
178da0c48c4Sopenharmony_ci DWARF version:         5
179da0c48c4Sopenharmony_ci Address size:          8
180da0c48c4Sopenharmony_ci Segment size:          0
181da0c48c4Sopenharmony_ci Offset entries:        0
182da0c48c4Sopenharmony_ci CU [     c] base: 0x0000000000400510 <foo>
183da0c48c4Sopenharmony_ci
184da0c48c4Sopenharmony_ci  Offset: c, Index: 0
185da0c48c4Sopenharmony_ci    offset_pair 0, a
186da0c48c4Sopenharmony_ci      0x0000000000400510 <foo>..
187da0c48c4Sopenharmony_ci      0x0000000000400519 <foo+0x9>
188da0c48c4Sopenharmony_ci        [ 0] reg5
189da0c48c4Sopenharmony_ci    offset_pair a, 34
190da0c48c4Sopenharmony_ci      0x000000000040051a <foo+0xa>..
191da0c48c4Sopenharmony_ci      0x0000000000400543 <foo+0x33>
192da0c48c4Sopenharmony_ci        [ 0] entry_value:
193da0c48c4Sopenharmony_ci             [ 0] reg5
194da0c48c4Sopenharmony_ci        [ 3] stack_value
195da0c48c4Sopenharmony_ci    end_of_list
196da0c48c4Sopenharmony_ci
197da0c48c4Sopenharmony_ci  Offset: 1a, Index: e
198da0c48c4Sopenharmony_ci    offset_pair 1b, 2d
199da0c48c4Sopenharmony_ci      0x000000000040052b <foo+0x1b>..
200da0c48c4Sopenharmony_ci      0x000000000040053c <foo+0x2c>
201da0c48c4Sopenharmony_ci        [ 0] addr 0x601038 <m>
202da0c48c4Sopenharmony_ci    end_of_list
203da0c48c4Sopenharmony_ci
204da0c48c4Sopenharmony_ci  Offset: 28, Index: 1c
205da0c48c4Sopenharmony_ci    offset_pair 1b, 21
206da0c48c4Sopenharmony_ci      0x000000000040052b <foo+0x1b>..
207da0c48c4Sopenharmony_ci      0x0000000000400530 <foo+0x20>
208da0c48c4Sopenharmony_ci        [ 0] reg5
209da0c48c4Sopenharmony_ci    end_of_list
210da0c48c4Sopenharmony_ci
211da0c48c4Sopenharmony_ci  Offset: 2e, Index: 22
212da0c48c4Sopenharmony_ci    offset_pair 1b, 27
213da0c48c4Sopenharmony_ci      0x000000000040052b <foo+0x1b>..
214da0c48c4Sopenharmony_ci      0x0000000000400536 <foo+0x26>
215da0c48c4Sopenharmony_ci        [ 0] reg5
216da0c48c4Sopenharmony_ci    offset_pair 29, 2d
217da0c48c4Sopenharmony_ci      0x0000000000400539 <foo+0x29>..
218da0c48c4Sopenharmony_ci      0x000000000040053c <foo+0x2c>
219da0c48c4Sopenharmony_ci        [ 0] reg5
220da0c48c4Sopenharmony_ci    end_of_list
221da0c48c4Sopenharmony_ci
222da0c48c4Sopenharmony_ci  Offset: 39, Index: 2d
223da0c48c4Sopenharmony_ci    offset_pair 21, 27
224da0c48c4Sopenharmony_ci      0x0000000000400531 <foo+0x21>..
225da0c48c4Sopenharmony_ci      0x0000000000400536 <foo+0x26>
226da0c48c4Sopenharmony_ci        [ 0] reg5
227da0c48c4Sopenharmony_ci    offset_pair 29, 2d
228da0c48c4Sopenharmony_ci      0x0000000000400539 <foo+0x29>..
229da0c48c4Sopenharmony_ci      0x000000000040053c <foo+0x2c>
230da0c48c4Sopenharmony_ci        [ 0] reg5
231da0c48c4Sopenharmony_ci    end_of_list
232da0c48c4Sopenharmony_ci
233da0c48c4Sopenharmony_ci  Offset: 44, Index: 38
234da0c48c4Sopenharmony_ci    offset_pair 21, 2d
235da0c48c4Sopenharmony_ci      0x0000000000400531 <foo+0x21>..
236da0c48c4Sopenharmony_ci      0x000000000040053c <foo+0x2c>
237da0c48c4Sopenharmony_ci        [ 0] reg5
238da0c48c4Sopenharmony_ci    end_of_list
239da0c48c4Sopenharmony_ci
240da0c48c4Sopenharmony_ci  Offset: 4a, Index: 3e
241da0c48c4Sopenharmony_ci    offset_pair 2d, 33
242da0c48c4Sopenharmony_ci      0x000000000040053d <foo+0x2d>..
243da0c48c4Sopenharmony_ci      0x0000000000400542 <foo+0x32>
244da0c48c4Sopenharmony_ci        [ 0] reg5
245da0c48c4Sopenharmony_ci    end_of_list
246da0c48c4Sopenharmony_ci
247da0c48c4Sopenharmony_ci  Offset: 50, Index: 44
248da0c48c4Sopenharmony_ci    offset_pair 40, 4f
249da0c48c4Sopenharmony_ci      0x0000000000400550 <baz>..
250da0c48c4Sopenharmony_ci      0x000000000040055e <baz+0xe>
251da0c48c4Sopenharmony_ci        [ 0] reg5
252da0c48c4Sopenharmony_ci    offset_pair 4f, 51
253da0c48c4Sopenharmony_ci      0x000000000040055f <baz+0xf>..
254da0c48c4Sopenharmony_ci      0x0000000000400560 <baz+0x10>
255da0c48c4Sopenharmony_ci        [ 0] entry_value:
256da0c48c4Sopenharmony_ci             [ 0] reg5
257da0c48c4Sopenharmony_ci        [ 3] stack_value
258da0c48c4Sopenharmony_ci    end_of_list
259da0c48c4Sopenharmony_ci
260da0c48c4Sopenharmony_ci  Offset: 5e, Index: 52
261da0c48c4Sopenharmony_ci    offset_pair 40, 50
262da0c48c4Sopenharmony_ci      0x0000000000400550 <baz>..
263da0c48c4Sopenharmony_ci      0x000000000040055f <baz+0xf>
264da0c48c4Sopenharmony_ci        [ 0] reg5
265da0c48c4Sopenharmony_ci    end_of_list
266da0c48c4Sopenharmony_ci
267da0c48c4Sopenharmony_ciTable at Offset 0x64:
268da0c48c4Sopenharmony_ci
269da0c48c4Sopenharmony_ci Length:              159
270da0c48c4Sopenharmony_ci DWARF version:         5
271da0c48c4Sopenharmony_ci Address size:          8
272da0c48c4Sopenharmony_ci Segment size:          0
273da0c48c4Sopenharmony_ci Offset entries:        0
274da0c48c4Sopenharmony_ci CU [   218] base: 000000000000000000
275da0c48c4Sopenharmony_ci
276da0c48c4Sopenharmony_ci  Offset: 70, Index: 0
277da0c48c4Sopenharmony_ci    base_address 0x400410
278da0c48c4Sopenharmony_ci      0x0000000000400410 <main>
279da0c48c4Sopenharmony_ci    offset_pair 0, 14
280da0c48c4Sopenharmony_ci      0x0000000000400410 <main>..
281da0c48c4Sopenharmony_ci      0x0000000000400423 <main+0x13>
282da0c48c4Sopenharmony_ci        [ 0] reg5
283da0c48c4Sopenharmony_ci    offset_pair 14, 20
284da0c48c4Sopenharmony_ci      0x0000000000400424 <main+0x14>..
285da0c48c4Sopenharmony_ci      0x000000000040042f <main+0x1f>
286da0c48c4Sopenharmony_ci        [ 0] entry_value:
287da0c48c4Sopenharmony_ci             [ 0] reg5
288da0c48c4Sopenharmony_ci        [ 3] stack_value
289da0c48c4Sopenharmony_ci    end_of_list
290da0c48c4Sopenharmony_ci
291da0c48c4Sopenharmony_ci  Offset: 87, Index: 17
292da0c48c4Sopenharmony_ci    base_address 0x400410
293da0c48c4Sopenharmony_ci      0x0000000000400410 <main>
294da0c48c4Sopenharmony_ci    offset_pair 0, 18
295da0c48c4Sopenharmony_ci      0x0000000000400410 <main>..
296da0c48c4Sopenharmony_ci      0x0000000000400427 <main+0x17>
297da0c48c4Sopenharmony_ci        [ 0] reg4
298da0c48c4Sopenharmony_ci    offset_pair 18, 20
299da0c48c4Sopenharmony_ci      0x0000000000400428 <main+0x18>..
300da0c48c4Sopenharmony_ci      0x000000000040042f <main+0x1f>
301da0c48c4Sopenharmony_ci        [ 0] entry_value:
302da0c48c4Sopenharmony_ci             [ 0] reg4
303da0c48c4Sopenharmony_ci        [ 3] stack_value
304da0c48c4Sopenharmony_ci    end_of_list
305da0c48c4Sopenharmony_ci
306da0c48c4Sopenharmony_ci  Offset: 9e, Index: 2e
307da0c48c4Sopenharmony_ci    start_length 0x400421, 7
308da0c48c4Sopenharmony_ci      0x0000000000400421 <main+0x11>..
309da0c48c4Sopenharmony_ci      0x0000000000400427 <main+0x17>
310da0c48c4Sopenharmony_ci        [ 0] reg0
311da0c48c4Sopenharmony_ci    end_of_list
312da0c48c4Sopenharmony_ci
313da0c48c4Sopenharmony_ci  Offset: ab, Index: 3b
314da0c48c4Sopenharmony_ci    base_address 0x400570
315da0c48c4Sopenharmony_ci      0x0000000000400570 <calc>
316da0c48c4Sopenharmony_ci    offset_pair 0, 8
317da0c48c4Sopenharmony_ci      0x0000000000400570 <calc>..
318da0c48c4Sopenharmony_ci      0x0000000000400577 <calc+0x7>
319da0c48c4Sopenharmony_ci        [ 0] reg5
320da0c48c4Sopenharmony_ci    offset_pair 8, 2b
321da0c48c4Sopenharmony_ci      0x0000000000400578 <calc+0x8>..
322da0c48c4Sopenharmony_ci      0x000000000040059a <calc+0x2a>
323da0c48c4Sopenharmony_ci        [ 0] entry_value:
324da0c48c4Sopenharmony_ci             [ 0] reg5
325da0c48c4Sopenharmony_ci        [ 3] stack_value
326da0c48c4Sopenharmony_ci    end_of_list
327da0c48c4Sopenharmony_ci
328da0c48c4Sopenharmony_ci  Offset: c2, Index: 52
329da0c48c4Sopenharmony_ci    start_length 0x400588, b
330da0c48c4Sopenharmony_ci      0x0000000000400588 <calc+0x18>..
331da0c48c4Sopenharmony_ci      0x0000000000400592 <calc+0x22>
332da0c48c4Sopenharmony_ci        [ 0] reg0
333da0c48c4Sopenharmony_ci    end_of_list
334da0c48c4Sopenharmony_ci
335da0c48c4Sopenharmony_ci  Offset: cf, Index: 5f
336da0c48c4Sopenharmony_ci    base_address 0x400588
337da0c48c4Sopenharmony_ci      0x0000000000400588 <calc+0x18>
338da0c48c4Sopenharmony_ci    offset_pair 0, 2
339da0c48c4Sopenharmony_ci      0x0000000000400588 <calc+0x18>..
340da0c48c4Sopenharmony_ci      0x0000000000400589 <calc+0x19>
341da0c48c4Sopenharmony_ci        [ 0] reg1
342da0c48c4Sopenharmony_ci    offset_pair 2, 7
343da0c48c4Sopenharmony_ci      0x000000000040058a <calc+0x1a>..
344da0c48c4Sopenharmony_ci      0x000000000040058e <calc+0x1e>
345da0c48c4Sopenharmony_ci        [ 0] reg5
346da0c48c4Sopenharmony_ci    offset_pair 7, b
347da0c48c4Sopenharmony_ci      0x000000000040058f <calc+0x1f>..
348da0c48c4Sopenharmony_ci      0x0000000000400592 <calc+0x22>
349da0c48c4Sopenharmony_ci        [ 0] entry_value:
350da0c48c4Sopenharmony_ci             [ 0] reg5
351da0c48c4Sopenharmony_ci        [ 3] deref_size 1
352da0c48c4Sopenharmony_ci        [ 5] const1u 56
353da0c48c4Sopenharmony_ci        [ 7] shl
354da0c48c4Sopenharmony_ci        [ 8] const1u 56
355da0c48c4Sopenharmony_ci        [10] shra
356da0c48c4Sopenharmony_ci        [11] stack_value
357da0c48c4Sopenharmony_ci    end_of_list
358da0c48c4Sopenharmony_ci
359da0c48c4Sopenharmony_ci  Offset: f3, Index: 83
360da0c48c4Sopenharmony_ci    base_address 0x400588
361da0c48c4Sopenharmony_ci      0x0000000000400588 <calc+0x18>
362da0c48c4Sopenharmony_ci    offset_pair 0, 2
363da0c48c4Sopenharmony_ci      0x0000000000400588 <calc+0x18>..
364da0c48c4Sopenharmony_ci      0x0000000000400589 <calc+0x19>
365da0c48c4Sopenharmony_ci        [ 0] reg1
366da0c48c4Sopenharmony_ci    offset_pair 2, b
367da0c48c4Sopenharmony_ci      0x000000000040058a <calc+0x1a>..
368da0c48c4Sopenharmony_ci      0x0000000000400592 <calc+0x22>
369da0c48c4Sopenharmony_ci        [ 0] reg5
370da0c48c4Sopenharmony_ci    end_of_list
371da0c48c4Sopenharmony_ci
372da0c48c4Sopenharmony_ciEOF
373da0c48c4Sopenharmony_ci
374da0c48c4Sopenharmony_ci# Same as above, but for DWARF4, note completely different encoding, but
375da0c48c4Sopenharmony_ci# the information is the same (check with diff -uwb).
376da0c48c4Sopenharmony_citestfiles testfile-dwarf-4
377da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/readelf --debug-dump=loc testfile-dwarf-4<<\EOF
378da0c48c4Sopenharmony_ci
379da0c48c4Sopenharmony_ciDWARF section [31] '.debug_loc' at offset 0x1c86:
380da0c48c4Sopenharmony_ci
381da0c48c4Sopenharmony_ci CU [     b] base: 0x0000000000400510 <foo>
382da0c48c4Sopenharmony_ci [     0] range 0, a
383da0c48c4Sopenharmony_ci          0x0000000000400510 <foo>..
384da0c48c4Sopenharmony_ci          0x0000000000400519 <foo+0x9>
385da0c48c4Sopenharmony_ci           [ 0] reg5
386da0c48c4Sopenharmony_ci          range a, 34
387da0c48c4Sopenharmony_ci          0x000000000040051a <foo+0xa>..
388da0c48c4Sopenharmony_ci          0x0000000000400543 <foo+0x33>
389da0c48c4Sopenharmony_ci           [ 0] GNU_entry_value:
390da0c48c4Sopenharmony_ci                [ 0] reg5
391da0c48c4Sopenharmony_ci           [ 3] stack_value
392da0c48c4Sopenharmony_ci [    39] range 1b, 2d
393da0c48c4Sopenharmony_ci          0x000000000040052b <foo+0x1b>..
394da0c48c4Sopenharmony_ci          0x000000000040053c <foo+0x2c>
395da0c48c4Sopenharmony_ci           [ 0] addr 0x601038 <m>
396da0c48c4Sopenharmony_ci [    64] range 1b, 21
397da0c48c4Sopenharmony_ci          0x000000000040052b <foo+0x1b>..
398da0c48c4Sopenharmony_ci          0x0000000000400530 <foo+0x20>
399da0c48c4Sopenharmony_ci           [ 0] reg5
400da0c48c4Sopenharmony_ci [    87] range 1b, 27
401da0c48c4Sopenharmony_ci          0x000000000040052b <foo+0x1b>..
402da0c48c4Sopenharmony_ci          0x0000000000400536 <foo+0x26>
403da0c48c4Sopenharmony_ci           [ 0] reg5
404da0c48c4Sopenharmony_ci          range 29, 2d
405da0c48c4Sopenharmony_ci          0x0000000000400539 <foo+0x29>..
406da0c48c4Sopenharmony_ci          0x000000000040053c <foo+0x2c>
407da0c48c4Sopenharmony_ci           [ 0] reg5
408da0c48c4Sopenharmony_ci [    bd] range 21, 27
409da0c48c4Sopenharmony_ci          0x0000000000400531 <foo+0x21>..
410da0c48c4Sopenharmony_ci          0x0000000000400536 <foo+0x26>
411da0c48c4Sopenharmony_ci           [ 0] reg5
412da0c48c4Sopenharmony_ci          range 29, 2d
413da0c48c4Sopenharmony_ci          0x0000000000400539 <foo+0x29>..
414da0c48c4Sopenharmony_ci          0x000000000040053c <foo+0x2c>
415da0c48c4Sopenharmony_ci           [ 0] reg5
416da0c48c4Sopenharmony_ci [    f3] range 21, 2d
417da0c48c4Sopenharmony_ci          0x0000000000400531 <foo+0x21>..
418da0c48c4Sopenharmony_ci          0x000000000040053c <foo+0x2c>
419da0c48c4Sopenharmony_ci           [ 0] reg5
420da0c48c4Sopenharmony_ci [   116] range 2d, 33
421da0c48c4Sopenharmony_ci          0x000000000040053d <foo+0x2d>..
422da0c48c4Sopenharmony_ci          0x0000000000400542 <foo+0x32>
423da0c48c4Sopenharmony_ci           [ 0] reg5
424da0c48c4Sopenharmony_ci [   139] range 40, 4f
425da0c48c4Sopenharmony_ci          0x0000000000400550 <baz>..
426da0c48c4Sopenharmony_ci          0x000000000040055e <baz+0xe>
427da0c48c4Sopenharmony_ci           [ 0] reg5
428da0c48c4Sopenharmony_ci          range 4f, 51
429da0c48c4Sopenharmony_ci          0x000000000040055f <baz+0xf>..
430da0c48c4Sopenharmony_ci          0x0000000000400560 <baz+0x10>
431da0c48c4Sopenharmony_ci           [ 0] GNU_entry_value:
432da0c48c4Sopenharmony_ci                [ 0] reg5
433da0c48c4Sopenharmony_ci           [ 3] stack_value
434da0c48c4Sopenharmony_ci [   172] range 40, 50
435da0c48c4Sopenharmony_ci          0x0000000000400550 <baz>..
436da0c48c4Sopenharmony_ci          0x000000000040055f <baz+0xf>
437da0c48c4Sopenharmony_ci           [ 0] reg5
438da0c48c4Sopenharmony_ci
439da0c48c4Sopenharmony_ci CU [   21c] base: 000000000000000000
440da0c48c4Sopenharmony_ci [   195] range 400410, 400424
441da0c48c4Sopenharmony_ci          0x0000000000400410 <main>..
442da0c48c4Sopenharmony_ci          0x0000000000400423 <main+0x13>
443da0c48c4Sopenharmony_ci           [ 0] reg5
444da0c48c4Sopenharmony_ci          range 400424, 400430
445da0c48c4Sopenharmony_ci          0x0000000000400424 <main+0x14>..
446da0c48c4Sopenharmony_ci          0x000000000040042f <main+0x1f>
447da0c48c4Sopenharmony_ci           [ 0] GNU_entry_value:
448da0c48c4Sopenharmony_ci                [ 0] reg5
449da0c48c4Sopenharmony_ci           [ 3] stack_value
450da0c48c4Sopenharmony_ci [   1ce] range 400410, 400428
451da0c48c4Sopenharmony_ci          0x0000000000400410 <main>..
452da0c48c4Sopenharmony_ci          0x0000000000400427 <main+0x17>
453da0c48c4Sopenharmony_ci           [ 0] reg4
454da0c48c4Sopenharmony_ci          range 400428, 400430
455da0c48c4Sopenharmony_ci          0x0000000000400428 <main+0x18>..
456da0c48c4Sopenharmony_ci          0x000000000040042f <main+0x1f>
457da0c48c4Sopenharmony_ci           [ 0] GNU_entry_value:
458da0c48c4Sopenharmony_ci                [ 0] reg4
459da0c48c4Sopenharmony_ci           [ 3] stack_value
460da0c48c4Sopenharmony_ci [   207] range 400421, 400428
461da0c48c4Sopenharmony_ci          0x0000000000400421 <main+0x11>..
462da0c48c4Sopenharmony_ci          0x0000000000400427 <main+0x17>
463da0c48c4Sopenharmony_ci           [ 0] reg0
464da0c48c4Sopenharmony_ci [   22a] range 400570, 400578
465da0c48c4Sopenharmony_ci          0x0000000000400570 <calc>..
466da0c48c4Sopenharmony_ci          0x0000000000400577 <calc+0x7>
467da0c48c4Sopenharmony_ci           [ 0] reg5
468da0c48c4Sopenharmony_ci          range 400578, 40059b
469da0c48c4Sopenharmony_ci          0x0000000000400578 <calc+0x8>..
470da0c48c4Sopenharmony_ci          0x000000000040059a <calc+0x2a>
471da0c48c4Sopenharmony_ci           [ 0] GNU_entry_value:
472da0c48c4Sopenharmony_ci                [ 0] reg5
473da0c48c4Sopenharmony_ci           [ 3] stack_value
474da0c48c4Sopenharmony_ci [   263] range 400588, 400593
475da0c48c4Sopenharmony_ci          0x0000000000400588 <calc+0x18>..
476da0c48c4Sopenharmony_ci          0x0000000000400592 <calc+0x22>
477da0c48c4Sopenharmony_ci           [ 0] reg0
478da0c48c4Sopenharmony_ci [   286] range 400588, 40058a
479da0c48c4Sopenharmony_ci          0x0000000000400588 <calc+0x18>..
480da0c48c4Sopenharmony_ci          0x0000000000400589 <calc+0x19>
481da0c48c4Sopenharmony_ci           [ 0] reg1
482da0c48c4Sopenharmony_ci          range 40058a, 40058f
483da0c48c4Sopenharmony_ci          0x000000000040058a <calc+0x1a>..
484da0c48c4Sopenharmony_ci          0x000000000040058e <calc+0x1e>
485da0c48c4Sopenharmony_ci           [ 0] reg5
486da0c48c4Sopenharmony_ci          range 40058f, 400593
487da0c48c4Sopenharmony_ci          0x000000000040058f <calc+0x1f>..
488da0c48c4Sopenharmony_ci          0x0000000000400592 <calc+0x22>
489da0c48c4Sopenharmony_ci           [ 0] GNU_entry_value:
490da0c48c4Sopenharmony_ci                [ 0] reg5
491da0c48c4Sopenharmony_ci           [ 3] deref_size 1
492da0c48c4Sopenharmony_ci           [ 5] const1u 56
493da0c48c4Sopenharmony_ci           [ 7] shl
494da0c48c4Sopenharmony_ci           [ 8] const1u 56
495da0c48c4Sopenharmony_ci           [10] shra
496da0c48c4Sopenharmony_ci           [11] stack_value
497da0c48c4Sopenharmony_ci [   2da] range 400588, 40058a
498da0c48c4Sopenharmony_ci          0x0000000000400588 <calc+0x18>..
499da0c48c4Sopenharmony_ci          0x0000000000400589 <calc+0x19>
500da0c48c4Sopenharmony_ci           [ 0] reg1
501da0c48c4Sopenharmony_ci          range 40058a, 400593
502da0c48c4Sopenharmony_ci          0x000000000040058a <calc+0x1a>..
503da0c48c4Sopenharmony_ci          0x0000000000400592 <calc+0x22>
504da0c48c4Sopenharmony_ci           [ 0] reg5
505da0c48c4Sopenharmony_ciEOF
506da0c48c4Sopenharmony_ci
507da0c48c4Sopenharmony_ci# Split DWARF5 variant. Note that the .debug_loclists moved to the .dwo file
508da0c48c4Sopenharmony_ci# and now uses an index and addrx indirections.
509da0c48c4Sopenharmony_citestfiles testfile-splitdwarf-5 testfile-hello5.dwo testfile-world5.dwo
510da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/readelf --debug-dump=loc --dwarf-skeleton=testfile-splitdwarf-5 testfile-hello5.dwo testfile-world5.dwo <<\EOF
511da0c48c4Sopenharmony_ci
512da0c48c4Sopenharmony_citestfile-hello5.dwo:
513da0c48c4Sopenharmony_ci
514da0c48c4Sopenharmony_ci
515da0c48c4Sopenharmony_ciDWARF section [ 3] '.debug_loclists.dwo' at offset 0x236:
516da0c48c4Sopenharmony_ciTable at Offset 0x0:
517da0c48c4Sopenharmony_ci
518da0c48c4Sopenharmony_ci Length:              125
519da0c48c4Sopenharmony_ci DWARF version:         5
520da0c48c4Sopenharmony_ci Address size:          8
521da0c48c4Sopenharmony_ci Segment size:          0
522da0c48c4Sopenharmony_ci Offset entries:        9
523da0c48c4Sopenharmony_ci CU [    14] base: 0x0000000000401160 <foo>
524da0c48c4Sopenharmony_ci
525da0c48c4Sopenharmony_ci  Offsets starting at 0xc:
526da0c48c4Sopenharmony_ci   [     0] 0x24
527da0c48c4Sopenharmony_ci   [     1] 0x32
528da0c48c4Sopenharmony_ci   [     2] 0x39
529da0c48c4Sopenharmony_ci   [     3] 0x3f
530da0c48c4Sopenharmony_ci   [     4] 0x4a
531da0c48c4Sopenharmony_ci   [     5] 0x55
532da0c48c4Sopenharmony_ci   [     6] 0x5b
533da0c48c4Sopenharmony_ci   [     7] 0x61
534da0c48c4Sopenharmony_ci   [     8] 0x6f
535da0c48c4Sopenharmony_ci
536da0c48c4Sopenharmony_ci  Offset: 30, Index: 24
537da0c48c4Sopenharmony_ci    startx_length f, a
538da0c48c4Sopenharmony_ci      0x0000000000401160 <foo>..
539da0c48c4Sopenharmony_ci      0x0000000000401169 <foo+0x9>
540da0c48c4Sopenharmony_ci        [ 0] reg5
541da0c48c4Sopenharmony_ci    startx_length 0, 2a
542da0c48c4Sopenharmony_ci      0x000000000040116a <foo+0xa>..
543da0c48c4Sopenharmony_ci      0x0000000000401193 <foo+0x33>
544da0c48c4Sopenharmony_ci        [ 0] entry_value:
545da0c48c4Sopenharmony_ci             [ 0] reg5
546da0c48c4Sopenharmony_ci        [ 3] stack_value
547da0c48c4Sopenharmony_ci    end_of_list
548da0c48c4Sopenharmony_ci
549da0c48c4Sopenharmony_ci  Offset: 3e, Index: 32
550da0c48c4Sopenharmony_ci    startx_length 11, 12
551da0c48c4Sopenharmony_ci      0x000000000040117b <foo+0x1b>..
552da0c48c4Sopenharmony_ci      0x000000000040118c <foo+0x2c>
553da0c48c4Sopenharmony_ci        [ 0] addrx [18] 0x404038 <m>
554da0c48c4Sopenharmony_ci    end_of_list
555da0c48c4Sopenharmony_ci
556da0c48c4Sopenharmony_ci  Offset: 45, Index: 39
557da0c48c4Sopenharmony_ci    startx_length 11, 6
558da0c48c4Sopenharmony_ci      0x000000000040117b <foo+0x1b>..
559da0c48c4Sopenharmony_ci      0x0000000000401180 <foo+0x20>
560da0c48c4Sopenharmony_ci        [ 0] reg5
561da0c48c4Sopenharmony_ci    end_of_list
562da0c48c4Sopenharmony_ci
563da0c48c4Sopenharmony_ci  Offset: 4b, Index: 3f
564da0c48c4Sopenharmony_ci    startx_length 11, c
565da0c48c4Sopenharmony_ci      0x000000000040117b <foo+0x1b>..
566da0c48c4Sopenharmony_ci      0x0000000000401186 <foo+0x26>
567da0c48c4Sopenharmony_ci        [ 0] reg5
568da0c48c4Sopenharmony_ci    startx_length 1, 4
569da0c48c4Sopenharmony_ci      0x0000000000401189 <foo+0x29>..
570da0c48c4Sopenharmony_ci      0x000000000040118c <foo+0x2c>
571da0c48c4Sopenharmony_ci        [ 0] reg5
572da0c48c4Sopenharmony_ci    end_of_list
573da0c48c4Sopenharmony_ci
574da0c48c4Sopenharmony_ci  Offset: 56, Index: 4a
575da0c48c4Sopenharmony_ci    startx_length 4, 6
576da0c48c4Sopenharmony_ci      0x0000000000401181 <foo+0x21>..
577da0c48c4Sopenharmony_ci      0x0000000000401186 <foo+0x26>
578da0c48c4Sopenharmony_ci        [ 0] reg5
579da0c48c4Sopenharmony_ci    startx_length 1, 4
580da0c48c4Sopenharmony_ci      0x0000000000401189 <foo+0x29>..
581da0c48c4Sopenharmony_ci      0x000000000040118c <foo+0x2c>
582da0c48c4Sopenharmony_ci        [ 0] reg5
583da0c48c4Sopenharmony_ci    end_of_list
584da0c48c4Sopenharmony_ci
585da0c48c4Sopenharmony_ci  Offset: 61, Index: 55
586da0c48c4Sopenharmony_ci    startx_length 4, c
587da0c48c4Sopenharmony_ci      0x0000000000401181 <foo+0x21>..
588da0c48c4Sopenharmony_ci      0x000000000040118c <foo+0x2c>
589da0c48c4Sopenharmony_ci        [ 0] reg5
590da0c48c4Sopenharmony_ci    end_of_list
591da0c48c4Sopenharmony_ci
592da0c48c4Sopenharmony_ci  Offset: 67, Index: 5b
593da0c48c4Sopenharmony_ci    startx_length 2, 6
594da0c48c4Sopenharmony_ci      0x000000000040118d <foo+0x2d>..
595da0c48c4Sopenharmony_ci      0x0000000000401192 <foo+0x32>
596da0c48c4Sopenharmony_ci        [ 0] reg5
597da0c48c4Sopenharmony_ci    end_of_list
598da0c48c4Sopenharmony_ci
599da0c48c4Sopenharmony_ci  Offset: 6d, Index: 61
600da0c48c4Sopenharmony_ci    startx_length 9, f
601da0c48c4Sopenharmony_ci      0x00000000004011a0 <baz>..
602da0c48c4Sopenharmony_ci      0x00000000004011ae <baz+0xe>
603da0c48c4Sopenharmony_ci        [ 0] reg5
604da0c48c4Sopenharmony_ci    startx_length 5, 2
605da0c48c4Sopenharmony_ci      0x00000000004011af <baz+0xf>..
606da0c48c4Sopenharmony_ci      0x00000000004011b0 <baz+0x10>
607da0c48c4Sopenharmony_ci        [ 0] entry_value:
608da0c48c4Sopenharmony_ci             [ 0] reg5
609da0c48c4Sopenharmony_ci        [ 3] stack_value
610da0c48c4Sopenharmony_ci    end_of_list
611da0c48c4Sopenharmony_ci
612da0c48c4Sopenharmony_ci  Offset: 7b, Index: 6f
613da0c48c4Sopenharmony_ci    startx_length 9, 10
614da0c48c4Sopenharmony_ci      0x00000000004011a0 <baz>..
615da0c48c4Sopenharmony_ci      0x00000000004011af <baz+0xf>
616da0c48c4Sopenharmony_ci        [ 0] reg5
617da0c48c4Sopenharmony_ci    end_of_list
618da0c48c4Sopenharmony_ci
619da0c48c4Sopenharmony_ci
620da0c48c4Sopenharmony_citestfile-world5.dwo:
621da0c48c4Sopenharmony_ci
622da0c48c4Sopenharmony_ci
623da0c48c4Sopenharmony_ciDWARF section [ 3] '.debug_loclists.dwo' at offset 0x217:
624da0c48c4Sopenharmony_ciTable at Offset 0x0:
625da0c48c4Sopenharmony_ci
626da0c48c4Sopenharmony_ci Length:              128
627da0c48c4Sopenharmony_ci DWARF version:         5
628da0c48c4Sopenharmony_ci Address size:          8
629da0c48c4Sopenharmony_ci Segment size:          0
630da0c48c4Sopenharmony_ci Offset entries:        7
631da0c48c4Sopenharmony_ci CU [    14] base: 000000000000000000
632da0c48c4Sopenharmony_ci
633da0c48c4Sopenharmony_ci  Offsets starting at 0xc:
634da0c48c4Sopenharmony_ci   [     0] 0x1c
635da0c48c4Sopenharmony_ci   [     1] 0x2a
636da0c48c4Sopenharmony_ci   [     2] 0x38
637da0c48c4Sopenharmony_ci   [     3] 0x3e
638da0c48c4Sopenharmony_ci   [     4] 0x4c
639da0c48c4Sopenharmony_ci   [     5] 0x52
640da0c48c4Sopenharmony_ci   [     6] 0x6d
641da0c48c4Sopenharmony_ci
642da0c48c4Sopenharmony_ci  Offset: 28, Index: 1c
643da0c48c4Sopenharmony_ci    startx_length 2, 14
644da0c48c4Sopenharmony_ci      0x0000000000401060 <main>..
645da0c48c4Sopenharmony_ci      0x0000000000401073 <main+0x13>
646da0c48c4Sopenharmony_ci        [ 0] reg5
647da0c48c4Sopenharmony_ci    startx_length 4, c
648da0c48c4Sopenharmony_ci      0x0000000000401074 <main+0x14>..
649da0c48c4Sopenharmony_ci      0x000000000040107f <main+0x1f>
650da0c48c4Sopenharmony_ci        [ 0] entry_value:
651da0c48c4Sopenharmony_ci             [ 0] reg5
652da0c48c4Sopenharmony_ci        [ 3] stack_value
653da0c48c4Sopenharmony_ci    end_of_list
654da0c48c4Sopenharmony_ci
655da0c48c4Sopenharmony_ci  Offset: 36, Index: 2a
656da0c48c4Sopenharmony_ci    startx_length 2, 18
657da0c48c4Sopenharmony_ci      0x0000000000401060 <main>..
658da0c48c4Sopenharmony_ci      0x0000000000401077 <main+0x17>
659da0c48c4Sopenharmony_ci        [ 0] reg4
660da0c48c4Sopenharmony_ci    startx_length 7, 6
661da0c48c4Sopenharmony_ci      0x0000000000401078 <main+0x18>..
662da0c48c4Sopenharmony_ci      0x000000000040107d <main+0x1d>
663da0c48c4Sopenharmony_ci        [ 0] entry_value:
664da0c48c4Sopenharmony_ci             [ 0] reg4
665da0c48c4Sopenharmony_ci        [ 3] stack_value
666da0c48c4Sopenharmony_ci    end_of_list
667da0c48c4Sopenharmony_ci
668da0c48c4Sopenharmony_ci  Offset: 44, Index: 38
669da0c48c4Sopenharmony_ci    startx_length 3, 7
670da0c48c4Sopenharmony_ci      0x0000000000401071 <main+0x11>..
671da0c48c4Sopenharmony_ci      0x0000000000401077 <main+0x17>
672da0c48c4Sopenharmony_ci        [ 0] reg0
673da0c48c4Sopenharmony_ci    end_of_list
674da0c48c4Sopenharmony_ci
675da0c48c4Sopenharmony_ci  Offset: 4a, Index: 3e
676da0c48c4Sopenharmony_ci    startx_length d, 8
677da0c48c4Sopenharmony_ci      0x00000000004011c0 <calc>..
678da0c48c4Sopenharmony_ci      0x00000000004011c7 <calc+0x7>
679da0c48c4Sopenharmony_ci        [ 0] reg5
680da0c48c4Sopenharmony_ci    startx_length e, 23
681da0c48c4Sopenharmony_ci      0x00000000004011c8 <calc+0x8>..
682da0c48c4Sopenharmony_ci      0x00000000004011ea <calc+0x2a>
683da0c48c4Sopenharmony_ci        [ 0] entry_value:
684da0c48c4Sopenharmony_ci             [ 0] reg5
685da0c48c4Sopenharmony_ci        [ 3] stack_value
686da0c48c4Sopenharmony_ci    end_of_list
687da0c48c4Sopenharmony_ci
688da0c48c4Sopenharmony_ci  Offset: 58, Index: 4c
689da0c48c4Sopenharmony_ci    startx_length f, b
690da0c48c4Sopenharmony_ci      0x00000000004011d8 <calc+0x18>..
691da0c48c4Sopenharmony_ci      0x00000000004011e2 <calc+0x22>
692da0c48c4Sopenharmony_ci        [ 0] reg0
693da0c48c4Sopenharmony_ci    end_of_list
694da0c48c4Sopenharmony_ci
695da0c48c4Sopenharmony_ci  Offset: 5e, Index: 52
696da0c48c4Sopenharmony_ci    startx_length f, 2
697da0c48c4Sopenharmony_ci      0x00000000004011d8 <calc+0x18>..
698da0c48c4Sopenharmony_ci      0x00000000004011d9 <calc+0x19>
699da0c48c4Sopenharmony_ci        [ 0] reg1
700da0c48c4Sopenharmony_ci    startx_length 10, 5
701da0c48c4Sopenharmony_ci      0x00000000004011da <calc+0x1a>..
702da0c48c4Sopenharmony_ci      0x00000000004011de <calc+0x1e>
703da0c48c4Sopenharmony_ci        [ 0] reg5
704da0c48c4Sopenharmony_ci    startx_length 0, 4
705da0c48c4Sopenharmony_ci      0x00000000004011df <calc+0x1f>..
706da0c48c4Sopenharmony_ci      0x00000000004011e2 <calc+0x22>
707da0c48c4Sopenharmony_ci        [ 0] entry_value:
708da0c48c4Sopenharmony_ci             [ 0] reg5
709da0c48c4Sopenharmony_ci        [ 3] deref_size 1
710da0c48c4Sopenharmony_ci        [ 5] const1u 56
711da0c48c4Sopenharmony_ci        [ 7] shl
712da0c48c4Sopenharmony_ci        [ 8] const1u 56
713da0c48c4Sopenharmony_ci        [10] shra
714da0c48c4Sopenharmony_ci        [11] stack_value
715da0c48c4Sopenharmony_ci    end_of_list
716da0c48c4Sopenharmony_ci
717da0c48c4Sopenharmony_ci  Offset: 79, Index: 6d
718da0c48c4Sopenharmony_ci    startx_length f, 2
719da0c48c4Sopenharmony_ci      0x00000000004011d8 <calc+0x18>..
720da0c48c4Sopenharmony_ci      0x00000000004011d9 <calc+0x19>
721da0c48c4Sopenharmony_ci        [ 0] reg1
722da0c48c4Sopenharmony_ci    startx_length 10, 9
723da0c48c4Sopenharmony_ci      0x00000000004011da <calc+0x1a>..
724da0c48c4Sopenharmony_ci      0x00000000004011e2 <calc+0x22>
725da0c48c4Sopenharmony_ci        [ 0] reg5
726da0c48c4Sopenharmony_ci    end_of_list
727da0c48c4Sopenharmony_ci
728da0c48c4Sopenharmony_ciEOF
729da0c48c4Sopenharmony_ci
730da0c48c4Sopenharmony_ci# GNU DebugFission split-dwarf variant. Still uses .debug_loc, but now in
731da0c48c4Sopenharmony_ci# .dwo file, with somewhat similar, but different encoding from DWARF5.
732da0c48c4Sopenharmony_citestfiles testfile-splitdwarf-4 testfile-hello4.dwo testfile-world4.dwo
733da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/readelf --debug-dump=loc --dwarf-skeleton=testfile-splitdwarf-4 testfile-hello4.dwo testfile-world4.dwo <<\EOF
734da0c48c4Sopenharmony_ci
735da0c48c4Sopenharmony_citestfile-hello4.dwo:
736da0c48c4Sopenharmony_ci
737da0c48c4Sopenharmony_ci
738da0c48c4Sopenharmony_ciDWARF section [ 3] '.debug_loc.dwo' at offset 0x253:
739da0c48c4Sopenharmony_ci
740da0c48c4Sopenharmony_ci CU [     b] base: 0x0000000000401160 <foo>
741da0c48c4Sopenharmony_ci [     0] range 401160, 40116a
742da0c48c4Sopenharmony_ci          0x0000000000401160 <foo>..
743da0c48c4Sopenharmony_ci          0x0000000000401169 <foo+0x9>
744da0c48c4Sopenharmony_ci           [ 0] reg5
745da0c48c4Sopenharmony_ci          range 40116a, 401194
746da0c48c4Sopenharmony_ci          0x000000000040116a <foo+0xa>..
747da0c48c4Sopenharmony_ci          0x0000000000401193 <foo+0x33>
748da0c48c4Sopenharmony_ci           [ 0] GNU_entry_value:
749da0c48c4Sopenharmony_ci                [ 0] reg5
750da0c48c4Sopenharmony_ci           [ 3] stack_value
751da0c48c4Sopenharmony_ci [    16] range 40117b, 40118d
752da0c48c4Sopenharmony_ci          0x000000000040117b <foo+0x1b>..
753da0c48c4Sopenharmony_ci          0x000000000040118c <foo+0x2c>
754da0c48c4Sopenharmony_ci           [ 0] GNU_addr_index [18] 0x404038 <m>
755da0c48c4Sopenharmony_ci [    21] range 40117b, 401181
756da0c48c4Sopenharmony_ci          0x000000000040117b <foo+0x1b>..
757da0c48c4Sopenharmony_ci          0x0000000000401180 <foo+0x20>
758da0c48c4Sopenharmony_ci           [ 0] reg5
759da0c48c4Sopenharmony_ci [    2b] range 40117b, 401187
760da0c48c4Sopenharmony_ci          0x000000000040117b <foo+0x1b>..
761da0c48c4Sopenharmony_ci          0x0000000000401186 <foo+0x26>
762da0c48c4Sopenharmony_ci           [ 0] reg5
763da0c48c4Sopenharmony_ci          range 401189, 40118d
764da0c48c4Sopenharmony_ci          0x0000000000401189 <foo+0x29>..
765da0c48c4Sopenharmony_ci          0x000000000040118c <foo+0x2c>
766da0c48c4Sopenharmony_ci           [ 0] reg5
767da0c48c4Sopenharmony_ci [    3e] range 401181, 401187
768da0c48c4Sopenharmony_ci          0x0000000000401181 <foo+0x21>..
769da0c48c4Sopenharmony_ci          0x0000000000401186 <foo+0x26>
770da0c48c4Sopenharmony_ci           [ 0] reg5
771da0c48c4Sopenharmony_ci          range 401189, 40118d
772da0c48c4Sopenharmony_ci          0x0000000000401189 <foo+0x29>..
773da0c48c4Sopenharmony_ci          0x000000000040118c <foo+0x2c>
774da0c48c4Sopenharmony_ci           [ 0] reg5
775da0c48c4Sopenharmony_ci [    51] range 401181, 40118d
776da0c48c4Sopenharmony_ci          0x0000000000401181 <foo+0x21>..
777da0c48c4Sopenharmony_ci          0x000000000040118c <foo+0x2c>
778da0c48c4Sopenharmony_ci           [ 0] reg5
779da0c48c4Sopenharmony_ci [    5b] range 40118d, 401193
780da0c48c4Sopenharmony_ci          0x000000000040118d <foo+0x2d>..
781da0c48c4Sopenharmony_ci          0x0000000000401192 <foo+0x32>
782da0c48c4Sopenharmony_ci           [ 0] reg5
783da0c48c4Sopenharmony_ci [    65] range 4011a0, 4011af
784da0c48c4Sopenharmony_ci          0x00000000004011a0 <baz>..
785da0c48c4Sopenharmony_ci          0x00000000004011ae <baz+0xe>
786da0c48c4Sopenharmony_ci           [ 0] reg5
787da0c48c4Sopenharmony_ci          range 4011af, 4011b1
788da0c48c4Sopenharmony_ci          0x00000000004011af <baz+0xf>..
789da0c48c4Sopenharmony_ci          0x00000000004011b0 <baz+0x10>
790da0c48c4Sopenharmony_ci           [ 0] GNU_entry_value:
791da0c48c4Sopenharmony_ci                [ 0] reg5
792da0c48c4Sopenharmony_ci           [ 3] stack_value
793da0c48c4Sopenharmony_ci [    7b] range 4011a0, 4011b0
794da0c48c4Sopenharmony_ci          0x00000000004011a0 <baz>..
795da0c48c4Sopenharmony_ci          0x00000000004011af <baz+0xf>
796da0c48c4Sopenharmony_ci           [ 0] reg5
797da0c48c4Sopenharmony_ci
798da0c48c4Sopenharmony_citestfile-world4.dwo:
799da0c48c4Sopenharmony_ci
800da0c48c4Sopenharmony_ci
801da0c48c4Sopenharmony_ciDWARF section [ 3] '.debug_loc.dwo' at offset 0x225:
802da0c48c4Sopenharmony_ci
803da0c48c4Sopenharmony_ci CU [     b] base: 000000000000000000
804da0c48c4Sopenharmony_ci [     0] range 401060, 401074
805da0c48c4Sopenharmony_ci          0x0000000000401060 <main>..
806da0c48c4Sopenharmony_ci          0x0000000000401073 <main+0x13>
807da0c48c4Sopenharmony_ci           [ 0] reg5
808da0c48c4Sopenharmony_ci          range 401074, 401080
809da0c48c4Sopenharmony_ci          0x0000000000401074 <main+0x14>..
810da0c48c4Sopenharmony_ci          0x000000000040107f <main+0x1f>
811da0c48c4Sopenharmony_ci           [ 0] GNU_entry_value:
812da0c48c4Sopenharmony_ci                [ 0] reg5
813da0c48c4Sopenharmony_ci           [ 3] stack_value
814da0c48c4Sopenharmony_ci [    16] range 401060, 401078
815da0c48c4Sopenharmony_ci          0x0000000000401060 <main>..
816da0c48c4Sopenharmony_ci          0x0000000000401077 <main+0x17>
817da0c48c4Sopenharmony_ci           [ 0] reg4
818da0c48c4Sopenharmony_ci          range 401078, 40107e
819da0c48c4Sopenharmony_ci          0x0000000000401078 <main+0x18>..
820da0c48c4Sopenharmony_ci          0x000000000040107d <main+0x1d>
821da0c48c4Sopenharmony_ci           [ 0] GNU_entry_value:
822da0c48c4Sopenharmony_ci                [ 0] reg4
823da0c48c4Sopenharmony_ci           [ 3] stack_value
824da0c48c4Sopenharmony_ci [    2c] range 401071, 401078
825da0c48c4Sopenharmony_ci          0x0000000000401071 <main+0x11>..
826da0c48c4Sopenharmony_ci          0x0000000000401077 <main+0x17>
827da0c48c4Sopenharmony_ci           [ 0] reg0
828da0c48c4Sopenharmony_ci [    36] range 4011c0, 4011c8
829da0c48c4Sopenharmony_ci          0x00000000004011c0 <calc>..
830da0c48c4Sopenharmony_ci          0x00000000004011c7 <calc+0x7>
831da0c48c4Sopenharmony_ci           [ 0] reg5
832da0c48c4Sopenharmony_ci          range 4011c8, 4011eb
833da0c48c4Sopenharmony_ci          0x00000000004011c8 <calc+0x8>..
834da0c48c4Sopenharmony_ci          0x00000000004011ea <calc+0x2a>
835da0c48c4Sopenharmony_ci           [ 0] GNU_entry_value:
836da0c48c4Sopenharmony_ci                [ 0] reg5
837da0c48c4Sopenharmony_ci           [ 3] stack_value
838da0c48c4Sopenharmony_ci [    4c] range 4011d8, 4011e3
839da0c48c4Sopenharmony_ci          0x00000000004011d8 <calc+0x18>..
840da0c48c4Sopenharmony_ci          0x00000000004011e2 <calc+0x22>
841da0c48c4Sopenharmony_ci           [ 0] reg0
842da0c48c4Sopenharmony_ci [    56] range 4011d8, 4011da
843da0c48c4Sopenharmony_ci          0x00000000004011d8 <calc+0x18>..
844da0c48c4Sopenharmony_ci          0x00000000004011d9 <calc+0x19>
845da0c48c4Sopenharmony_ci           [ 0] reg1
846da0c48c4Sopenharmony_ci          range 4011da, 4011df
847da0c48c4Sopenharmony_ci          0x00000000004011da <calc+0x1a>..
848da0c48c4Sopenharmony_ci          0x00000000004011de <calc+0x1e>
849da0c48c4Sopenharmony_ci           [ 0] reg5
850da0c48c4Sopenharmony_ci          range 4011df, 4011e3
851da0c48c4Sopenharmony_ci          0x00000000004011df <calc+0x1f>..
852da0c48c4Sopenharmony_ci          0x00000000004011e2 <calc+0x22>
853da0c48c4Sopenharmony_ci           [ 0] GNU_entry_value:
854da0c48c4Sopenharmony_ci                [ 0] reg5
855da0c48c4Sopenharmony_ci           [ 3] deref_size 1
856da0c48c4Sopenharmony_ci           [ 5] const1u 56
857da0c48c4Sopenharmony_ci           [ 7] shl
858da0c48c4Sopenharmony_ci           [ 8] const1u 56
859da0c48c4Sopenharmony_ci           [10] shra
860da0c48c4Sopenharmony_ci           [11] stack_value
861da0c48c4Sopenharmony_ci [    7d] range 4011d8, 4011da
862da0c48c4Sopenharmony_ci          0x00000000004011d8 <calc+0x18>..
863da0c48c4Sopenharmony_ci          0x00000000004011d9 <calc+0x19>
864da0c48c4Sopenharmony_ci           [ 0] reg1
865da0c48c4Sopenharmony_ci          range 4011da, 4011e3
866da0c48c4Sopenharmony_ci          0x00000000004011da <calc+0x1a>..
867da0c48c4Sopenharmony_ci          0x00000000004011e2 <calc+0x22>
868da0c48c4Sopenharmony_ci           [ 0] reg5
869da0c48c4Sopenharmony_ciEOF
870da0c48c4Sopenharmony_ci
871da0c48c4Sopenharmony_ci# Partial dwarf-4 and partial GNU DebugFission split-dwarf.
872da0c48c4Sopenharmony_ci#
873da0c48c4Sopenharmony_ci# = popcount.c =
874da0c48c4Sopenharmony_ci#
875da0c48c4Sopenharmony_ci# int popcount (unsigned char u)
876da0c48c4Sopenharmony_ci# {
877da0c48c4Sopenharmony_ci#   int c = 0;
878da0c48c4Sopenharmony_ci#   while (u != 0)
879da0c48c4Sopenharmony_ci#     {
880da0c48c4Sopenharmony_ci#       if ((u & 1) == 1)
881da0c48c4Sopenharmony_ci#         c++;
882da0c48c4Sopenharmony_ci#       u >>= 1;
883da0c48c4Sopenharmony_ci#     }
884da0c48c4Sopenharmony_ci#   return c;
885da0c48c4Sopenharmony_ci# }
886da0c48c4Sopenharmony_ci#
887da0c48c4Sopenharmony_ci# = splitdwarf4-not-split4.c =
888da0c48c4Sopenharmony_ci#
889da0c48c4Sopenharmony_ci# extern int popcount (unsigned char);
890da0c48c4Sopenharmony_ci#
891da0c48c4Sopenharmony_ci# int main (int argc, char **argv)
892da0c48c4Sopenharmony_ci# {
893da0c48c4Sopenharmony_ci#   int i;
894da0c48c4Sopenharmony_ci#   int p = argc;
895da0c48c4Sopenharmony_ci#   for (i = 0; i < argc;  ++i)
896da0c48c4Sopenharmony_ci#     p += popcount (argv[i][0]);
897da0c48c4Sopenharmony_ci#   i += p;
898da0c48c4Sopenharmony_ci#   return i;
899da0c48c4Sopenharmony_ci# }
900da0c48c4Sopenharmony_ci#
901da0c48c4Sopenharmony_ci# gcc -gdwarf-4 -O2 -c popcount.c
902da0c48c4Sopenharmony_ci# gcc -gdwarf-4 -gsplit-dwarf -O2 -c splitdwarf4-not-split4.c
903da0c48c4Sopenharmony_ci# gcc -o testfile-splitdwarf4-not-split4 splitdwarf4-not-split4.o popcount.o
904da0c48c4Sopenharmony_ci# eu-strip -f testfile-splitdwarf4-not-split4.debug \
905da0c48c4Sopenharmony_ci#   testfile-splitdwarf4-not-split4
906da0c48c4Sopenharmony_ci
907da0c48c4Sopenharmony_citestfiles testfile-splitdwarf4-not-split4.debug
908da0c48c4Sopenharmony_citestfiles splitdwarf4-not-split4.dwo
909da0c48c4Sopenharmony_ci
910da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/readelf --debug-dump=info+ --debug-dump=loc testfile-splitdwarf4-not-split4.debug <<\EOF
911da0c48c4Sopenharmony_ci
912da0c48c4Sopenharmony_ciDWARF section [28] '.debug_info' at offset 0x330:
913da0c48c4Sopenharmony_ci [Offset]
914da0c48c4Sopenharmony_ci Compilation unit at offset 0:
915da0c48c4Sopenharmony_ci Version: 4, Abbreviation section offset: 0, Address size: 8, Offset size: 4
916da0c48c4Sopenharmony_ci Unit type: skeleton (4), Unit id: 0x3d909d7bd0e69c0b
917da0c48c4Sopenharmony_ci [     b]  compile_unit         abbrev: 1
918da0c48c4Sopenharmony_ci           ranges               (sec_offset) range list [     0]
919da0c48c4Sopenharmony_ci           low_pc               (addr) 000000000000000000
920da0c48c4Sopenharmony_ci           stmt_list            (sec_offset) 0
921da0c48c4Sopenharmony_ci           GNU_dwo_name         (strp) "splitdwarf4-not-split4.dwo"
922da0c48c4Sopenharmony_ci           comp_dir             (strp) "/tmp"
923da0c48c4Sopenharmony_ci           GNU_pubnames         (flag_present) yes
924da0c48c4Sopenharmony_ci           GNU_addr_base        (sec_offset) address base [     0]
925da0c48c4Sopenharmony_ci           GNU_dwo_id           (data8) 0x3d909d7bd0e69c0b
926da0c48c4Sopenharmony_ci           GNU_ranges_base      (sec_offset) 0
927da0c48c4Sopenharmony_ci Split compilation unit at offset 0:
928da0c48c4Sopenharmony_ci Version: 4, Abbreviation section offset: 0, Address size: 8, Offset size: 4
929da0c48c4Sopenharmony_ci Unit type: skeleton (4), Unit id: 0x3d909d7bd0e69c0b
930da0c48c4Sopenharmony_ci {     b}  compile_unit         abbrev: 1
931da0c48c4Sopenharmony_ci           producer             (GNU_str_index) "GNU C17 9.0.0 20180528 (experimental) -mtune=generic -march=x86-64 -gdwarf-4 -gsplit-dwarf -O2"
932da0c48c4Sopenharmony_ci           language             (data1) C99 (12)
933da0c48c4Sopenharmony_ci           name                 (GNU_str_index) "splitdwarf4-not-split4.c"
934da0c48c4Sopenharmony_ci           comp_dir             (GNU_str_index) "/tmp"
935da0c48c4Sopenharmony_ci           GNU_dwo_id           (data8) 0x3d909d7bd0e69c0b
936da0c48c4Sopenharmony_ci {    18}    subprogram           abbrev: 2
937da0c48c4Sopenharmony_ci             external             (flag_present) yes
938da0c48c4Sopenharmony_ci             name                 (GNU_str_index) "main"
939da0c48c4Sopenharmony_ci             decl_file            (data1) splitdwarf4-not-split4.c (1)
940da0c48c4Sopenharmony_ci             decl_line            (data1) 3
941da0c48c4Sopenharmony_ci             decl_column          (data1) 5
942da0c48c4Sopenharmony_ci             prototyped           (flag_present) yes
943da0c48c4Sopenharmony_ci             type                 (ref4) {    6d}
944da0c48c4Sopenharmony_ci             low_pc               (GNU_addr_index) [4] 0x0000000000401050 <main>
945da0c48c4Sopenharmony_ci             high_pc              (data8) 76 (0x000000000040109c <_start>)
946da0c48c4Sopenharmony_ci             frame_base           (exprloc) 
947da0c48c4Sopenharmony_ci              [ 0] call_frame_cfa
948da0c48c4Sopenharmony_ci             GNU_all_call_sites   (flag_present) yes
949da0c48c4Sopenharmony_ci             sibling              (ref4) {    6d}
950da0c48c4Sopenharmony_ci {    30}      formal_parameter     abbrev: 3
951da0c48c4Sopenharmony_ci               name                 (GNU_str_index) "argc"
952da0c48c4Sopenharmony_ci               decl_file            (data1) splitdwarf4-not-split4.c (1)
953da0c48c4Sopenharmony_ci               decl_line            (data1) 3
954da0c48c4Sopenharmony_ci               decl_column          (data1) 15
955da0c48c4Sopenharmony_ci               type                 (ref4) {    6d}
956da0c48c4Sopenharmony_ci               location             (sec_offset) location list [     0]
957da0c48c4Sopenharmony_ci {    3d}      formal_parameter     abbrev: 3
958da0c48c4Sopenharmony_ci               name                 (GNU_str_index) "argv"
959da0c48c4Sopenharmony_ci               decl_file            (data1) splitdwarf4-not-split4.c (1)
960da0c48c4Sopenharmony_ci               decl_line            (data1) 3
961da0c48c4Sopenharmony_ci               decl_column          (data1) 28
962da0c48c4Sopenharmony_ci               type                 (ref4) {    74}
963da0c48c4Sopenharmony_ci               location             (sec_offset) location list [    28]
964da0c48c4Sopenharmony_ci {    4a}      variable             abbrev: 4
965da0c48c4Sopenharmony_ci               name                 (string) "i"
966da0c48c4Sopenharmony_ci               decl_file            (data1) splitdwarf4-not-split4.c (1)
967da0c48c4Sopenharmony_ci               decl_line            (data1) 5
968da0c48c4Sopenharmony_ci               decl_column          (data1) 7
969da0c48c4Sopenharmony_ci               type                 (ref4) {    6d}
970da0c48c4Sopenharmony_ci               location             (sec_offset) location list [    47]
971da0c48c4Sopenharmony_ci {    58}      variable             abbrev: 4
972da0c48c4Sopenharmony_ci               name                 (string) "p"
973da0c48c4Sopenharmony_ci               decl_file            (data1) splitdwarf4-not-split4.c (1)
974da0c48c4Sopenharmony_ci               decl_line            (data1) 6
975da0c48c4Sopenharmony_ci               decl_column          (data1) 7
976da0c48c4Sopenharmony_ci               type                 (ref4) {    6d}
977da0c48c4Sopenharmony_ci               location             (sec_offset) location list [    73]
978da0c48c4Sopenharmony_ci {    66}      GNU_call_site        abbrev: 5
979da0c48c4Sopenharmony_ci               low_pc               (GNU_addr_index) [1] 0x000000000040107f <main+0x2f>
980da0c48c4Sopenharmony_ci               abstract_origin      (ref4) {    84}
981da0c48c4Sopenharmony_ci {    6d}    base_type            abbrev: 6
982da0c48c4Sopenharmony_ci             byte_size            (data1) 4
983da0c48c4Sopenharmony_ci             encoding             (data1) signed (5)
984da0c48c4Sopenharmony_ci             name                 (string) "int"
985da0c48c4Sopenharmony_ci {    74}    pointer_type         abbrev: 7
986da0c48c4Sopenharmony_ci             byte_size            (data1) 8
987da0c48c4Sopenharmony_ci             type                 (ref4) {    7a}
988da0c48c4Sopenharmony_ci {    7a}    pointer_type         abbrev: 7
989da0c48c4Sopenharmony_ci             byte_size            (data1) 8
990da0c48c4Sopenharmony_ci             type                 (ref4) {    80}
991da0c48c4Sopenharmony_ci {    80}    base_type            abbrev: 8
992da0c48c4Sopenharmony_ci             byte_size            (data1) 1
993da0c48c4Sopenharmony_ci             encoding             (data1) signed_char (6)
994da0c48c4Sopenharmony_ci             name                 (GNU_str_index) "char"
995da0c48c4Sopenharmony_ci {    84}    subprogram           abbrev: 9
996da0c48c4Sopenharmony_ci             external             (flag_present) yes
997da0c48c4Sopenharmony_ci             declaration          (flag_present) yes
998da0c48c4Sopenharmony_ci             linkage_name         (GNU_str_index) "popcount"
999da0c48c4Sopenharmony_ci             name                 (GNU_str_index) "popcount"
1000da0c48c4Sopenharmony_ci             decl_file            (data1) splitdwarf4-not-split4.c (1)
1001da0c48c4Sopenharmony_ci             decl_line            (data1) 1
1002da0c48c4Sopenharmony_ci             decl_column          (data1) 12
1003da0c48c4Sopenharmony_ci Compilation unit at offset 52:
1004da0c48c4Sopenharmony_ci Version: 4, Abbreviation section offset: 29, Address size: 8, Offset size: 4
1005da0c48c4Sopenharmony_ci [    3f]  compile_unit         abbrev: 1
1006da0c48c4Sopenharmony_ci           producer             (strp) "GNU C17 9.0.0 20180528 (experimental) -mtune=generic -march=x86-64 -gdwarf-4 -O2"
1007da0c48c4Sopenharmony_ci           language             (data1) C99 (12)
1008da0c48c4Sopenharmony_ci           name                 (strp) "popcount.c"
1009da0c48c4Sopenharmony_ci           comp_dir             (strp) "/tmp"
1010da0c48c4Sopenharmony_ci           low_pc               (addr) 0x0000000000401180 <popcount>
1011da0c48c4Sopenharmony_ci           high_pc              (data8) 33 (0x00000000004011a1)
1012da0c48c4Sopenharmony_ci           stmt_list            (sec_offset) 145
1013da0c48c4Sopenharmony_ci [    61]    subprogram           abbrev: 2
1014da0c48c4Sopenharmony_ci             external             (flag_present) yes
1015da0c48c4Sopenharmony_ci             name                 (strp) "popcount"
1016da0c48c4Sopenharmony_ci             decl_file            (data1) popcount.c (1)
1017da0c48c4Sopenharmony_ci             decl_line            (data1) 1
1018da0c48c4Sopenharmony_ci             decl_column          (data1) 5
1019da0c48c4Sopenharmony_ci             prototyped           (flag_present) yes
1020da0c48c4Sopenharmony_ci             type                 (ref4) [    a0]
1021da0c48c4Sopenharmony_ci             low_pc               (addr) 0x0000000000401180 <popcount>
1022da0c48c4Sopenharmony_ci             high_pc              (data8) 33 (0x00000000004011a1)
1023da0c48c4Sopenharmony_ci             frame_base           (exprloc) 
1024da0c48c4Sopenharmony_ci              [ 0] call_frame_cfa
1025da0c48c4Sopenharmony_ci             GNU_all_call_sites   (flag_present) yes
1026da0c48c4Sopenharmony_ci             sibling              (ref4) [    a0]
1027da0c48c4Sopenharmony_ci [    83]      formal_parameter     abbrev: 3
1028da0c48c4Sopenharmony_ci               name                 (string) "u"
1029da0c48c4Sopenharmony_ci               decl_file            (data1) popcount.c (1)
1030da0c48c4Sopenharmony_ci               decl_line            (data1) 1
1031da0c48c4Sopenharmony_ci               decl_column          (data1) 29
1032da0c48c4Sopenharmony_ci               type                 (ref4) [    a7]
1033da0c48c4Sopenharmony_ci               location             (sec_offset) location list [     0]
1034da0c48c4Sopenharmony_ci [    91]      variable             abbrev: 4
1035da0c48c4Sopenharmony_ci               name                 (string) "c"
1036da0c48c4Sopenharmony_ci               decl_file            (data1) popcount.c (1)
1037da0c48c4Sopenharmony_ci               decl_line            (data1) 3
1038da0c48c4Sopenharmony_ci               decl_column          (data1) 7
1039da0c48c4Sopenharmony_ci               type                 (ref4) [    a0]
1040da0c48c4Sopenharmony_ci               location             (sec_offset) location list [    60]
1041da0c48c4Sopenharmony_ci [    a0]    base_type            abbrev: 5
1042da0c48c4Sopenharmony_ci             byte_size            (data1) 4
1043da0c48c4Sopenharmony_ci             encoding             (data1) signed (5)
1044da0c48c4Sopenharmony_ci             name                 (string) "int"
1045da0c48c4Sopenharmony_ci [    a7]    base_type            abbrev: 6
1046da0c48c4Sopenharmony_ci             byte_size            (data1) 1
1047da0c48c4Sopenharmony_ci             encoding             (data1) unsigned_char (8)
1048da0c48c4Sopenharmony_ci             name                 (strp) "unsigned char"
1049da0c48c4Sopenharmony_ci
1050da0c48c4Sopenharmony_ciDWARF section [32] '.debug_loc' at offset 0x5ef:
1051da0c48c4Sopenharmony_ci
1052da0c48c4Sopenharmony_ci CU [    3f] base: 0x0000000000401180 <popcount>
1053da0c48c4Sopenharmony_ci [     0] range 0, 9
1054da0c48c4Sopenharmony_ci          0x0000000000401180 <popcount>..
1055da0c48c4Sopenharmony_ci          0x0000000000401188 <popcount+0x8>
1056da0c48c4Sopenharmony_ci           [ 0] reg5
1057da0c48c4Sopenharmony_ci          range 9, 1b
1058da0c48c4Sopenharmony_ci          0x0000000000401189 <popcount+0x9>..
1059da0c48c4Sopenharmony_ci          0x000000000040119a <popcount+0x1a>
1060da0c48c4Sopenharmony_ci           [ 0] reg1
1061da0c48c4Sopenharmony_ci          range 1b, 1d
1062da0c48c4Sopenharmony_ci          0x000000000040119b <popcount+0x1b>..
1063da0c48c4Sopenharmony_ci          0x000000000040119c <popcount+0x1c>
1064da0c48c4Sopenharmony_ci           [ 0] breg1 0
1065da0c48c4Sopenharmony_ci           [ 2] lit1
1066da0c48c4Sopenharmony_ci           [ 3] shr
1067da0c48c4Sopenharmony_ci           [ 4] stack_value
1068da0c48c4Sopenharmony_ci          range 1d, 21
1069da0c48c4Sopenharmony_ci          0x000000000040119d <popcount+0x1d>..
1070da0c48c4Sopenharmony_ci          0x00000000004011a0 <popcount+0x20>
1071da0c48c4Sopenharmony_ci           [ 0] reg1
1072da0c48c4Sopenharmony_ci [    60] range 0, 9
1073da0c48c4Sopenharmony_ci          0x0000000000401180 <popcount>..
1074da0c48c4Sopenharmony_ci          0x0000000000401188 <popcount+0x8>
1075da0c48c4Sopenharmony_ci           [ 0] lit0
1076da0c48c4Sopenharmony_ci           [ 1] stack_value
1077da0c48c4Sopenharmony_ci          range 9, 20
1078da0c48c4Sopenharmony_ci          0x0000000000401189 <popcount+0x9>..
1079da0c48c4Sopenharmony_ci          0x000000000040119f <popcount+0x1f>
1080da0c48c4Sopenharmony_ci           [ 0] reg0
1081da0c48c4Sopenharmony_ci          range 20, 21
1082da0c48c4Sopenharmony_ci          0x00000000004011a0 <popcount+0x20>..
1083da0c48c4Sopenharmony_ci          0x00000000004011a0 <popcount+0x20>
1084da0c48c4Sopenharmony_ci           [ 0] lit0
1085da0c48c4Sopenharmony_ci           [ 1] stack_value
1086da0c48c4Sopenharmony_ciEOF
1087da0c48c4Sopenharmony_ci
1088da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/readelf --dwarf-skeleton=testfile-splitdwarf4-not-split4.debug --debug-dump=loc splitdwarf4-not-split4.dwo <<\EOF
1089da0c48c4Sopenharmony_ci
1090da0c48c4Sopenharmony_ciDWARF section [ 3] '.debug_loc.dwo' at offset 0x15b:
1091da0c48c4Sopenharmony_ci
1092da0c48c4Sopenharmony_ci CU [     b] base: 000000000000000000
1093da0c48c4Sopenharmony_ci [     0] range 401050, 40106e
1094da0c48c4Sopenharmony_ci          0x0000000000401050 <main>..
1095da0c48c4Sopenharmony_ci          0x000000000040106d <main+0x1d>
1096da0c48c4Sopenharmony_ci           [ 0] reg5
1097da0c48c4Sopenharmony_ci          range 40106e, 401086
1098da0c48c4Sopenharmony_ci          0x000000000040106e <main+0x1e>..
1099da0c48c4Sopenharmony_ci          0x0000000000401085 <main+0x35>
1100da0c48c4Sopenharmony_ci           [ 0] reg12
1101da0c48c4Sopenharmony_ci          range 401086, 401095
1102da0c48c4Sopenharmony_ci          0x0000000000401086 <main+0x36>..
1103da0c48c4Sopenharmony_ci          0x0000000000401094 <main+0x44>
1104da0c48c4Sopenharmony_ci           [ 0] GNU_entry_value:
1105da0c48c4Sopenharmony_ci                [ 0] reg5
1106da0c48c4Sopenharmony_ci           [ 3] stack_value
1107da0c48c4Sopenharmony_ci          range 401095, 40109c
1108da0c48c4Sopenharmony_ci          0x0000000000401095 <main+0x45>..
1109da0c48c4Sopenharmony_ci          0x000000000040109b <main+0x4b>
1110da0c48c4Sopenharmony_ci           [ 0] reg5
1111da0c48c4Sopenharmony_ci [    28] range 401050, 40106e
1112da0c48c4Sopenharmony_ci          0x0000000000401050 <main>..
1113da0c48c4Sopenharmony_ci          0x000000000040106d <main+0x1d>
1114da0c48c4Sopenharmony_ci           [ 0] reg4
1115da0c48c4Sopenharmony_ci          range 40106e, 401095
1116da0c48c4Sopenharmony_ci          0x000000000040106e <main+0x1e>..
1117da0c48c4Sopenharmony_ci          0x0000000000401094 <main+0x44>
1118da0c48c4Sopenharmony_ci           [ 0] GNU_entry_value:
1119da0c48c4Sopenharmony_ci                [ 0] reg4
1120da0c48c4Sopenharmony_ci           [ 3] stack_value
1121da0c48c4Sopenharmony_ci          range 401095, 40109c
1122da0c48c4Sopenharmony_ci          0x0000000000401095 <main+0x45>..
1123da0c48c4Sopenharmony_ci          0x000000000040109b <main+0x4b>
1124da0c48c4Sopenharmony_ci           [ 0] reg4
1125da0c48c4Sopenharmony_ci [    47] range 401050, 40106e
1126da0c48c4Sopenharmony_ci          0x0000000000401050 <main>..
1127da0c48c4Sopenharmony_ci          0x000000000040106d <main+0x1d>
1128da0c48c4Sopenharmony_ci           [ 0] lit0
1129da0c48c4Sopenharmony_ci           [ 1] stack_value
1130da0c48c4Sopenharmony_ci          range 401086, 40108e
1131da0c48c4Sopenharmony_ci          0x0000000000401086 <main+0x36>..
1132da0c48c4Sopenharmony_ci          0x000000000040108d <main+0x3d>
1133da0c48c4Sopenharmony_ci           [ 0] breg12 0
1134da0c48c4Sopenharmony_ci           [ 2] breg6 0
1135da0c48c4Sopenharmony_ci           [ 4] plus
1136da0c48c4Sopenharmony_ci           [ 5] stack_value
1137da0c48c4Sopenharmony_ci          range 40108e, 401095
1138da0c48c4Sopenharmony_ci          0x000000000040108e <main+0x3e>..
1139da0c48c4Sopenharmony_ci          0x0000000000401094 <main+0x44>
1140da0c48c4Sopenharmony_ci           [ 0] reg0
1141da0c48c4Sopenharmony_ci          range 401095, 40109c
1142da0c48c4Sopenharmony_ci          0x0000000000401095 <main+0x45>..
1143da0c48c4Sopenharmony_ci          0x000000000040109b <main+0x4b>
1144da0c48c4Sopenharmony_ci           [ 0] lit0
1145da0c48c4Sopenharmony_ci           [ 1] stack_value
1146da0c48c4Sopenharmony_ci [    73] range 401050, 40106e
1147da0c48c4Sopenharmony_ci          0x0000000000401050 <main>..
1148da0c48c4Sopenharmony_ci          0x000000000040106d <main+0x1d>
1149da0c48c4Sopenharmony_ci           [ 0] reg5
1150da0c48c4Sopenharmony_ci          range 40106e, 401090
1151da0c48c4Sopenharmony_ci          0x000000000040106e <main+0x1e>..
1152da0c48c4Sopenharmony_ci          0x000000000040108f <main+0x3f>
1153da0c48c4Sopenharmony_ci           [ 0] reg6
1154da0c48c4Sopenharmony_ci          range 401095, 40109c
1155da0c48c4Sopenharmony_ci          0x0000000000401095 <main+0x45>..
1156da0c48c4Sopenharmony_ci          0x000000000040109b <main+0x4b>
1157da0c48c4Sopenharmony_ci           [ 0] reg5
1158da0c48c4Sopenharmony_ciEOF
1159da0c48c4Sopenharmony_ci
1160da0c48c4Sopenharmony_ciexit 0
1161