1# RUN: llvm-mc < %s -triple=s390x-linux-gnu -filetype=obj | llvm-dwarfdump - | FileCheck %s
2#
3# We use both R_390_32 and R_390_64 to encode the dwarf information.
4# Test that they are used correctly.  This uses the assembly output
5# for variable-loc.ll
6#
7# A couple of R_390_32s, both at 0 and elsewhere:
8#
9# CHECK: DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 3.2 ")
10# CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000013] = "simple.c")
11#
12# A couple of R_390_64s similarly:
13#
14# CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
15# CHECK: DW_AT_high_pc [DW_FORM_addr] (0x0000000000000050)
16
17
18	.file	"test/DebugInfo/SystemZ/variable-loc.ll"
19	.section	.debug_info,"",@progbits
20.Lsection_info:
21	.section	.debug_abbrev,"",@progbits
22.Lsection_abbrev:
23	.section	.debug_aranges,"",@progbits
24	.section	.debug_macinfo,"",@progbits
25	.section	.debug_line,"",@progbits
26.Lsection_line:
27	.section	.debug_loc,"",@progbits
28	.section	.debug_pubtypes,"",@progbits
29	.section	.debug_str,"MS",@progbits,1
30.Linfo_string:
31	.section	.debug_ranges,"",@progbits
32.Ldebug_range:
33	.section	.debug_loc,"",@progbits
34.Lsection_debug_loc:
35	.text
36.Ltext_begin:
37	.data
38	.file	1 "simple.c"
39	.file	2 "<stdin>"
40	.text
41	.globl	main
42	.align	4
43	.type	main,@function
44main:                                   # @main
45	.cfi_startproc
46.Lfunc_begin0:
47	.loc	2 18 0                  # :18:0
48# BB#0:                                 # %entry
49	stmg	%r12, %r15, 96(%r15)
50.Ltmp2:
51	.cfi_offset %r12, -64
52.Ltmp3:
53	.cfi_offset %r13, -56
54.Ltmp4:
55	.cfi_offset %r14, -48
56.Ltmp5:
57	.cfi_offset %r15, -40
58	aghi	%r15, -568
59.Ltmp6:
60	.cfi_def_cfa_offset 728
61	mvhi	564(%r15), 0
62	la	%r13, 164(%r15)
63	lhi	%r12, 100
64	.loc	2 22 3 prologue_end     # :22:3
65.Ltmp7:
66	lgr	%r2, %r13
67	lr	%r3, %r12
68	brasl	%r14, populate_array@PLT
69	.loc	2 23 9                  # :23:9
70	lgr	%r2, %r13
71	lr	%r3, %r12
72	brasl	%r14, sum_array@PLT
73	lr	%r0, %r2
74	st	%r0, 160(%r15)
75	.loc	2 24 3                  # :24:3
76	larl	%r2, .L.str
77	lr	%r3, %r0
78	brasl	%r14, printf@PLT
79	lhi	%r2, 0
80	.loc	2 26 3                  # :26:3
81	lmg	%r12, %r15, 664(%r15)
82	br	%r14
83.Ltmp8:
84.Ltmp9:
85	.size	main, .Ltmp9-main
86.Lfunc_end0:
87	.cfi_endproc
88
89	.type	.L.str,@object          # @.str
90	.section	.rodata.str1.2,"aMS",@progbits,1
91	.align	2
92.L.str:
93	.asciz	 "Total is %d\n"
94	.size	.L.str, 13
95
96	.cfi_sections .debug_frame
97	.text
98.Ltext_end:
99	.data
100.Ldata_end:
101	.text
102.Lsection_end1:
103	.section	.debug_info,"",@progbits
104.L.debug_info_begin0:
105	.long	155                     # Length of Compilation Unit Info
106	.short	2                       # DWARF version number
107	.long	.L.debug_abbrev_begin   # Offset Into Abbrev. Section
108	.byte	8                       # Address Size (in bytes)
109	.byte	1                       # Abbrev [1] 0xb:0x94 DW_TAG_compile_unit
110	.long	.Linfo_string0          # DW_AT_producer
111	.short	12                      # DW_AT_language
112	.long	.Linfo_string1          # DW_AT_name
113	.quad	0                       # DW_AT_low_pc
114	.long	.Lsection_line          # DW_AT_stmt_list
115	.long	.Linfo_string2          # DW_AT_comp_dir
116	.byte	2                       # Abbrev [2] 0x26:0x7 DW_TAG_subprogram
117	.long	.Linfo_string3          # DW_AT_name
118	.byte	2                       # DW_AT_decl_file
119	.byte	4                       # DW_AT_decl_line
120                                        # DW_AT_prototyped
121                                        # DW_AT_external
122	.byte	3                       # Abbrev [3] 0x2d:0xb DW_TAG_subprogram
123	.long	.Linfo_string4          # DW_AT_name
124	.byte	2                       # DW_AT_decl_file
125	.byte	9                       # DW_AT_decl_line
126                                        # DW_AT_prototyped
127	.long	56                      # DW_AT_type
128                                        # DW_AT_external
129	.byte	4                       # Abbrev [4] 0x38:0x7 DW_TAG_base_type
130	.long	.Linfo_string5          # DW_AT_name
131	.byte	5                       # DW_AT_encoding
132	.byte	4                       # DW_AT_byte_size
133	.byte	5                       # Abbrev [5] 0x3f:0xb DW_TAG_subprogram
134	.long	.Linfo_string6          # DW_AT_name
135	.byte	2                       # DW_AT_decl_file
136	.byte	18                      # DW_AT_decl_line
137                                        # DW_AT_prototyped
138	.long	56                      # DW_AT_type
139                                        # DW_AT_external
140                                        # DW_AT_declaration
141	.byte	6                       # Abbrev [6] 0x4a:0x7 DW_TAG_base_type
142	.long	.Linfo_string5          # DW_AT_name
143	.byte	4                       # DW_AT_byte_size
144	.byte	5                       # DW_AT_encoding
145	.byte	7                       # Abbrev [7] 0x51:0x5 DW_TAG_array_type
146	.long	56                      # DW_AT_type
147	.byte	8                       # Abbrev [8] 0x56:0x48 DW_TAG_subprogram
148	.long	63                      # DW_AT_specification
149	.quad	.Lfunc_begin0           # DW_AT_low_pc
150	.quad	.Lfunc_end0             # DW_AT_high_pc
151	.byte	1                       # DW_AT_frame_base
152	.byte	95
153                                        # DW_AT_APPLE_omit_frame_ptr
154	.byte	9                       # Abbrev [9] 0x6d:0x30 DW_TAG_lexical_block
155	.quad	.Ltmp7                  # DW_AT_low_pc
156	.quad	.Ltmp8                  # DW_AT_high_pc
157	.byte	10                      # Abbrev [10] 0x7e:0xf DW_TAG_variable
158	.long	.Linfo_string7          # DW_AT_name
159	.byte	2                       # DW_AT_decl_file
160	.byte	19                      # DW_AT_decl_line
161	.long	81                      # DW_AT_type
162	.byte	3                       # DW_AT_location
163	.byte	145
164	.ascii	 "\244\001"
165	.byte	10                      # Abbrev [10] 0x8d:0xf DW_TAG_variable
166	.long	.Linfo_string8          # DW_AT_name
167	.byte	2                       # DW_AT_decl_file
168	.byte	20                      # DW_AT_decl_line
169	.long	56                      # DW_AT_type
170	.byte	3                       # DW_AT_location
171	.byte	145
172	.ascii	 "\240\001"
173	.byte	0                       # End Of Children Mark
174	.byte	0                       # End Of Children Mark
175	.byte	0                       # End Of Children Mark
176.L.debug_info_end0:
177	.section	.debug_abbrev,"",@progbits
178.L.debug_abbrev_begin:
179	.byte	1                       # Abbreviation Code
180	.byte	17                      # DW_TAG_compile_unit
181	.byte	1                       # DW_CHILDREN_yes
182	.byte	37                      # DW_AT_producer
183	.byte	14                      # DW_FORM_strp
184	.byte	19                      # DW_AT_language
185	.byte	5                       # DW_FORM_data2
186	.byte	3                       # DW_AT_name
187	.byte	14                      # DW_FORM_strp
188	.byte	17                      # DW_AT_low_pc
189	.byte	1                       # DW_FORM_addr
190	.byte	16                      # DW_AT_stmt_list
191	.byte	6                       # DW_FORM_data4
192	.byte	27                      # DW_AT_comp_dir
193	.byte	14                      # DW_FORM_strp
194	.byte	0                       # EOM(1)
195	.byte	0                       # EOM(2)
196	.byte	2                       # Abbreviation Code
197	.byte	46                      # DW_TAG_subprogram
198	.byte	0                       # DW_CHILDREN_no
199	.byte	3                       # DW_AT_name
200	.byte	14                      # DW_FORM_strp
201	.byte	58                      # DW_AT_decl_file
202	.byte	11                      # DW_FORM_data1
203	.byte	59                      # DW_AT_decl_line
204	.byte	11                      # DW_FORM_data1
205	.byte	39                      # DW_AT_prototyped
206	.byte	25                      # DW_FORM_flag_present
207	.byte	63                      # DW_AT_external
208	.byte	25                      # DW_FORM_flag_present
209	.byte	0                       # EOM(1)
210	.byte	0                       # EOM(2)
211	.byte	3                       # Abbreviation Code
212	.byte	46                      # DW_TAG_subprogram
213	.byte	0                       # DW_CHILDREN_no
214	.byte	3                       # DW_AT_name
215	.byte	14                      # DW_FORM_strp
216	.byte	58                      # DW_AT_decl_file
217	.byte	11                      # DW_FORM_data1
218	.byte	59                      # DW_AT_decl_line
219	.byte	11                      # DW_FORM_data1
220	.byte	39                      # DW_AT_prototyped
221	.byte	25                      # DW_FORM_flag_present
222	.byte	73                      # DW_AT_type
223	.byte	19                      # DW_FORM_ref4
224	.byte	63                      # DW_AT_external
225	.byte	25                      # DW_FORM_flag_present
226	.byte	0                       # EOM(1)
227	.byte	0                       # EOM(2)
228	.byte	4                       # Abbreviation Code
229	.byte	36                      # DW_TAG_base_type
230	.byte	0                       # DW_CHILDREN_no
231	.byte	3                       # DW_AT_name
232	.byte	14                      # DW_FORM_strp
233	.byte	62                      # DW_AT_encoding
234	.byte	11                      # DW_FORM_data1
235	.byte	11                      # DW_AT_byte_size
236	.byte	11                      # DW_FORM_data1
237	.byte	0                       # EOM(1)
238	.byte	0                       # EOM(2)
239	.byte	5                       # Abbreviation Code
240	.byte	46                      # DW_TAG_subprogram
241	.byte	0                       # DW_CHILDREN_no
242	.byte	3                       # DW_AT_name
243	.byte	14                      # DW_FORM_strp
244	.byte	58                      # DW_AT_decl_file
245	.byte	11                      # DW_FORM_data1
246	.byte	59                      # DW_AT_decl_line
247	.byte	11                      # DW_FORM_data1
248	.byte	39                      # DW_AT_prototyped
249	.byte	25                      # DW_FORM_flag_present
250	.byte	73                      # DW_AT_type
251	.byte	19                      # DW_FORM_ref4
252	.byte	63                      # DW_AT_external
253	.byte	25                      # DW_FORM_flag_present
254	.byte	60                      # DW_AT_declaration
255	.byte	25                      # DW_FORM_flag_present
256	.byte	0                       # EOM(1)
257	.byte	0                       # EOM(2)
258	.byte	6                       # Abbreviation Code
259	.byte	36                      # DW_TAG_base_type
260	.byte	0                       # DW_CHILDREN_no
261	.byte	3                       # DW_AT_name
262	.byte	14                      # DW_FORM_strp
263	.byte	11                      # DW_AT_byte_size
264	.byte	11                      # DW_FORM_data1
265	.byte	62                      # DW_AT_encoding
266	.byte	11                      # DW_FORM_data1
267	.byte	0                       # EOM(1)
268	.byte	0                       # EOM(2)
269	.byte	7                       # Abbreviation Code
270	.byte	1                       # DW_TAG_array_type
271	.byte	0                       # DW_CHILDREN_no
272	.byte	73                      # DW_AT_type
273	.byte	19                      # DW_FORM_ref4
274	.byte	0                       # EOM(1)
275	.byte	0                       # EOM(2)
276	.byte	8                       # Abbreviation Code
277	.byte	46                      # DW_TAG_subprogram
278	.byte	1                       # DW_CHILDREN_yes
279	.byte	71                      # DW_AT_specification
280	.byte	19                      # DW_FORM_ref4
281	.byte	17                      # DW_AT_low_pc
282	.byte	1                       # DW_FORM_addr
283	.byte	18                      # DW_AT_high_pc
284	.byte	1                       # DW_FORM_addr
285	.byte	64                      # DW_AT_frame_base
286	.byte	10                      # DW_FORM_block1
287	.ascii	 "\347\177"             # DW_AT_APPLE_omit_frame_ptr
288	.byte	25                      # DW_FORM_flag_present
289	.byte	0                       # EOM(1)
290	.byte	0                       # EOM(2)
291	.byte	9                       # Abbreviation Code
292	.byte	11                      # DW_TAG_lexical_block
293	.byte	1                       # DW_CHILDREN_yes
294	.byte	17                      # DW_AT_low_pc
295	.byte	1                       # DW_FORM_addr
296	.byte	18                      # DW_AT_high_pc
297	.byte	1                       # DW_FORM_addr
298	.byte	0                       # EOM(1)
299	.byte	0                       # EOM(2)
300	.byte	10                      # Abbreviation Code
301	.byte	52                      # DW_TAG_variable
302	.byte	0                       # DW_CHILDREN_no
303	.byte	3                       # DW_AT_name
304	.byte	14                      # DW_FORM_strp
305	.byte	58                      # DW_AT_decl_file
306	.byte	11                      # DW_FORM_data1
307	.byte	59                      # DW_AT_decl_line
308	.byte	11                      # DW_FORM_data1
309	.byte	73                      # DW_AT_type
310	.byte	19                      # DW_FORM_ref4
311	.byte	2                       # DW_AT_location
312	.byte	10                      # DW_FORM_block1
313	.byte	0                       # EOM(1)
314	.byte	0                       # EOM(2)
315	.byte	0                       # EOM(3)
316.L.debug_abbrev_end:
317	.section	.debug_aranges,"",@progbits
318	.section	.debug_ranges,"",@progbits
319	.section	.debug_macinfo,"",@progbits
320	.section	.debug_str,"MS",@progbits,1
321.Linfo_string0:
322	.asciz	 "clang version 3.2 "
323.Linfo_string1:
324	.asciz	 "simple.c"
325.Linfo_string2:
326	.asciz	 "/home/timnor01/a64-trunk/build"
327.Linfo_string3:
328	.asciz	 "populate_array"
329.Linfo_string4:
330	.asciz	 "sum_array"
331.Linfo_string5:
332	.asciz	 "int"
333.Linfo_string6:
334	.asciz	 "main"
335.Linfo_string7:
336	.asciz	 "main_arr"
337.Linfo_string8:
338	.asciz	 "val"
339
340	.section	".note.GNU-stack","",@progbits
341