1## Check that the --debug-vars option works for simple register locations, when
2## using DWARF4 debug info, with functions in multiple sections.
3
4## Generated with this compile command, with the source code in Inputs/debug.c:
5## clang --target=arm--none-eabi -march=armv7-a -c debug.c -O1 -gdwarf-4 -S -o - -ffunction-sections
6
7# RUN: llvm-mc -triple armv8a--none-eabi < %s -filetype=obj | \
8# RUN:     llvm-objdump - -d --debug-vars --no-show-raw-insn | \
9# RUN:     FileCheck %s
10
11# CHECK: Disassembly of section .text.foo:
12# CHECK-EMPTY:
13# CHECK-NEXT: 00000000 <foo>:
14# CHECK-NEXT:                                                                   ┠─ a = R0
15# CHECK-NEXT:                                                                   ┃ ┠─ b = R1
16# CHECK-NEXT:                                                                   ┃ ┃ ┠─ c = R2
17# CHECK-NEXT:                                                                   ┃ ┃ ┃ ┌─ x = R0
18# CHECK-NEXT:        0:       add     r0, r1, r0                                ┻ ┃ ┃ ╈
19# CHECK-NEXT:                                                                   ┌─ y = R0
20# CHECK-NEXT:        4:       add     r0, r0, r2                                ╈ ┃ ┃ ┻
21# CHECK-NEXT:        8:       bx      lr                                        ┻ ┻ ┻
22# CHECK-EMPTY:
23# CHECK-NEXT: Disassembly of section .text.bar:
24# CHECK-EMPTY:
25# CHECK-NEXT: 00000000 <bar>:
26# CHECK-NEXT:                                                                   ┠─ a = R0
27# CHECK-NEXT:        0:       add     r0, r0, #128# CHECK-NEXT:        4:       bx      lr29
30	.text
31	.syntax unified
32	.eabi_attribute	67, "2.09"
33	.eabi_attribute	6, 10
34	.eabi_attribute	7, 65
35	.eabi_attribute	8, 1
36	.eabi_attribute	9, 2
37	.fpu	neon
38	.eabi_attribute	34, 0
39	.eabi_attribute	17, 1
40	.eabi_attribute	20, 1
41	.eabi_attribute	21, 1
42	.eabi_attribute	23, 3
43	.eabi_attribute	24, 1
44	.eabi_attribute	25, 1
45	.eabi_attribute	38, 1
46	.eabi_attribute	18, 4
47	.eabi_attribute	26, 2
48	.eabi_attribute	14, 0
49	.file	"debug.c"
50	.section	.text.foo,"ax",%progbits
51	.globl	foo
52	.p2align	2
53	.type	foo,%function
54	.code	32
55foo:
56.Lfunc_begin0:
57	.file	1 "/work" "llvm/src/llvm/test/tools/llvm-objdump/ARM/Inputs/debug.c"
58	.loc	1 1 0
59	.fnstart
60	.cfi_sections .debug_frame
61	.cfi_startproc
62	.loc	1 2 13 prologue_end
63	add	r0, r1, r0
64.Ltmp0:
65	.loc	1 3 13
66	add	r0, r0, r2
67.Ltmp1:
68	.loc	1 4 3
69	bx	lr
70.Ltmp2:
71.Lfunc_end0:
72	.size	foo, .Lfunc_end0-foo
73	.cfi_endproc
74	.cantunwind
75	.fnend
76
77	.section	.text.bar,"ax",%progbits
78	.globl	bar
79	.p2align	2
80	.type	bar,%function
81	.code	32
82bar:
83.Lfunc_begin1:
84	.loc	1 7 0
85	.fnstart
86	.cfi_startproc
87	.loc	1 8 4 prologue_end
88	add	r0, r0, #1
89.Ltmp3:
90	.loc	1 9 3
91	bx	lr
92.Ltmp4:
93.Lfunc_end1:
94	.size	bar, .Lfunc_end1-bar
95	.cfi_endproc
96	.cantunwind
97	.fnend
98
99	.section	.debug_str,"MS",%progbits,1
100.Linfo_string0:
101	.asciz	"clang version 10.0.0 (git@github.com:llvm/llvm-project.git e73f78acd34360f7450b81167d9dc858ccddc262)"
102.Linfo_string1:
103	.asciz	"/work/llvm/src/llvm/test/tools/llvm-objdump/ARM/Inputs/debug.c"
104.Linfo_string2:
105	.asciz	"/work/scratch"
106.Linfo_string3:
107	.asciz	"foo"
108.Linfo_string4:
109	.asciz	"int"
110.Linfo_string5:
111	.asciz	"bar"
112.Linfo_string6:
113	.asciz	"a"
114.Linfo_string7:
115	.asciz	"b"
116.Linfo_string8:
117	.asciz	"c"
118.Linfo_string9:
119	.asciz	"x"
120.Linfo_string10:
121	.asciz	"y"
122	.section	.debug_loc,"",%progbits
123.Ldebug_loc0:
124	.long	-1
125	.long	.Lfunc_begin0
126	.long	.Lfunc_begin0-.Lfunc_begin0
127	.long	.Ltmp0-.Lfunc_begin0
128	.short	1
129	.byte	80
130	.long	0
131	.long	0
132.Ldebug_loc1:
133	.long	-1
134	.long	.Lfunc_begin0
135	.long	.Ltmp0-.Lfunc_begin0
136	.long	.Ltmp1-.Lfunc_begin0
137	.short	1
138	.byte	80
139	.long	0
140	.long	0
141.Ldebug_loc2:
142	.long	-1
143	.long	.Lfunc_begin0
144	.long	.Ltmp1-.Lfunc_begin0
145	.long	.Lfunc_end0-.Lfunc_begin0
146	.short	1
147	.byte	80
148	.long	0
149	.long	0
150	.section	.debug_abbrev,"",%progbits
151	.byte	1
152	.byte	17
153	.byte	1
154	.byte	37
155	.byte	14
156	.byte	19
157	.byte	5
158	.byte	3
159	.byte	14
160	.byte	16
161	.byte	23
162	.byte	27
163	.byte	14
164	.byte	17
165	.byte	1
166	.byte	85
167	.byte	23
168	.byte	0
169	.byte	0
170	.byte	2
171	.byte	46
172	.byte	1
173	.byte	17
174	.byte	1
175	.byte	18
176	.byte	6
177	.byte	64
178	.byte	24
179	.ascii	"\227B"
180	.byte	25
181	.byte	3
182	.byte	14
183	.byte	58
184	.byte	11
185	.byte	59
186	.byte	11
187	.byte	39
188	.byte	25
189	.byte	73
190	.byte	19
191	.byte	63
192	.byte	25
193	.byte	0
194	.byte	0
195	.byte	3
196	.byte	5
197	.byte	0
198	.byte	2
199	.byte	23
200	.byte	3
201	.byte	14
202	.byte	58
203	.byte	11
204	.byte	59
205	.byte	11
206	.byte	73
207	.byte	19
208	.byte	0
209	.byte	0
210	.byte	4
211	.byte	5
212	.byte	0
213	.byte	2
214	.byte	24
215	.byte	3
216	.byte	14
217	.byte	58
218	.byte	11
219	.byte	59
220	.byte	11
221	.byte	73
222	.byte	19
223	.byte	0
224	.byte	0
225	.byte	5
226	.byte	52
227	.byte	0
228	.byte	2
229	.byte	23
230	.byte	3
231	.byte	14
232	.byte	58
233	.byte	11
234	.byte	59
235	.byte	11
236	.byte	73
237	.byte	19
238	.byte	0
239	.byte	0
240	.byte	6
241	.byte	36
242	.byte	0
243	.byte	3
244	.byte	14
245	.byte	62
246	.byte	11
247	.byte	11
248	.byte	11
249	.byte	0
250	.byte	0
251	.byte	0
252	.section	.debug_info,"",%progbits
253.Lcu_begin0:
254	.long	.Ldebug_info_end0-.Ldebug_info_start0
255.Ldebug_info_start0:
256	.short	4
257	.long	.debug_abbrev
258	.byte	4
259	.byte	1
260	.long	.Linfo_string0
261	.short	12
262	.long	.Linfo_string1
263	.long	.Lline_table_start0
264	.long	.Linfo_string2
265	.long	0
266	.long	.Ldebug_ranges0
267	.byte	2
268	.long	.Lfunc_begin0
269	.long	.Lfunc_end0-.Lfunc_begin0
270	.byte	1
271	.byte	91
272
273	.long	.Linfo_string3
274	.byte	1
275	.byte	1
276
277	.long	166
278
279	.byte	3
280	.long	.Ldebug_loc0
281	.long	.Linfo_string6
282	.byte	1
283	.byte	1
284	.long	166
285	.byte	4
286	.byte	1
287	.byte	81
288	.long	.Linfo_string7
289	.byte	1
290	.byte	1
291	.long	166
292	.byte	4
293	.byte	1
294	.byte	82
295	.long	.Linfo_string8
296	.byte	1
297	.byte	1
298	.long	166
299	.byte	5
300	.long	.Ldebug_loc1
301	.long	.Linfo_string9
302	.byte	1
303	.byte	2
304	.long	166
305	.byte	5
306	.long	.Ldebug_loc2
307	.long	.Linfo_string10
308	.byte	1
309	.byte	3
310	.long	166
311	.byte	0
312	.byte	2
313	.long	.Lfunc_begin1
314	.long	.Lfunc_end1-.Lfunc_begin1
315	.byte	1
316	.byte	91
317
318	.long	.Linfo_string5
319	.byte	1
320	.byte	7
321
322	.long	166
323
324	.byte	4
325	.byte	1
326	.byte	80
327	.long	.Linfo_string6
328	.byte	1
329	.byte	7
330	.long	166
331	.byte	0
332	.byte	6
333	.long	.Linfo_string4
334	.byte	5
335	.byte	4
336	.byte	0
337.Ldebug_info_end0:
338	.section	.debug_ranges,"",%progbits
339.Ldebug_ranges0:
340	.long	.Lfunc_begin0
341	.long	.Lfunc_end0
342	.long	.Lfunc_begin1
343	.long	.Lfunc_end1
344	.long	0
345	.long	0
346	.ident	"clang version 10.0.0 (git@github.com:llvm/llvm-project.git e73f78acd34360f7450b81167d9dc858ccddc262)"
347	.section	".note.GNU-stack","",%progbits
348	.addrsig
349	.eabi_attribute	30, 1
350	.section	.debug_line,"",%progbits
351.Lline_table_start0:
352