1// REQUIRES: aarch64-registered-target
2
3// RUN: llvm-mc -filetype=obj -triple=aarch64-linux-android -o %t.o %s
4// RUN: echo 'FRAME %t.o 4' | llvm-symbolizer | FileCheck %s
5
6// Built from the following source with
7// clang -target aarch64-linux-android -O3 -g -S
8//
9// class A {
10//   static void f();
11// };
12//
13// void use(int*);
14// void A::f() {int x; use(&x);}
15
16// CHECK:      {{^f$}}
17// CHECK-NEXT: {{^x$}}
18// CHECK-NEXT: {{.*}}dbg.cc:6
19// CHECK-NEXT: -4 4 ??
20
21	.text
22	.file	"dbg.cc"
23	.globl	_ZN1A1fEv               // -- Begin function _ZN1A1fEv
24	.p2align	2
25	.type	_ZN1A1fEv,@function
26_ZN1A1fEv:                              // @_ZN1A1fEv
27.Lfunc_begin0:
28	.file	1 "/tmp" "dbg.cc"
29	.loc	1 6 0                   // /tmp/dbg.cc:6:0
30	.cfi_startproc
31// %bb.0:                               // %entry
32	sub	sp, sp, #32             // =32
33	stp	x29, x30, [sp, #16]     // 16-byte Folded Spill
34	add	x29, sp, #16            // =16
35	.cfi_def_cfa w29, 16
36	.cfi_offset w30, -8
37	.cfi_offset w29, -16
38.Ltmp0:
39	//DEBUG_VALUE: f:x <- [DW_OP_constu 4, DW_OP_minus, DW_OP_deref] $fp
40	.loc	1 6 21 prologue_end     // /tmp/dbg.cc:6:21
41	sub	x0, x29, #4             // =4
42	bl	_Z3usePi
43.Ltmp1:
44	.loc	1 6 29 is_stmt 0        // /tmp/dbg.cc:6:29
45	ldp	x29, x30, [sp, #16]     // 16-byte Folded Reload
46	add	sp, sp, #32             // =32
47	ret
48.Ltmp2:
49.Lfunc_end0:
50	.size	_ZN1A1fEv, .Lfunc_end0-_ZN1A1fEv
51	.cfi_endproc
52                                        // -- End function
53	.section	.debug_str,"MS",@progbits,1
54.Linfo_string0:
55	.asciz	"clang version 10.0.0 (git@github.com:llvm/llvm-project.git 092ef9c6cf4678d2b8df7738110ecd405fe1fe3d)" // string offset=0
56.Linfo_string1:
57	.asciz	"/tmp/dbg.cc"           // string offset=101
58.Linfo_string2:
59	.asciz	"/code/build-llvm-cmake" // string offset=113
60.Linfo_string3:
61	.asciz	"_ZN1A1fEv"             // string offset=136
62.Linfo_string4:
63	.asciz	"f"                     // string offset=146
64.Linfo_string5:
65	.asciz	"A"                     // string offset=148
66.Linfo_string6:
67	.asciz	"_Z3usePi"              // string offset=150
68.Linfo_string7:
69	.asciz	"use"                   // string offset=159
70.Linfo_string8:
71	.asciz	"int"                   // string offset=163
72.Linfo_string9:
73	.asciz	"x"                     // string offset=167
74	.section	.debug_abbrev,"",@progbits
75	.byte	1                       // Abbreviation Code
76	.byte	17                      // DW_TAG_compile_unit
77	.byte	1                       // DW_CHILDREN_yes
78	.byte	37                      // DW_AT_producer
79	.byte	14                      // DW_FORM_strp
80	.byte	19                      // DW_AT_language
81	.byte	5                       // DW_FORM_data2
82	.byte	3                       // DW_AT_name
83	.byte	14                      // DW_FORM_strp
84	.byte	16                      // DW_AT_stmt_list
85	.byte	23                      // DW_FORM_sec_offset
86	.byte	27                      // DW_AT_comp_dir
87	.byte	14                      // DW_FORM_strp
88	.byte	17                      // DW_AT_low_pc
89	.byte	1                       // DW_FORM_addr
90	.byte	18                      // DW_AT_high_pc
91	.byte	6                       // DW_FORM_data4
92	.byte	0                       // EOM(1)
93	.byte	0                       // EOM(2)
94	.byte	2                       // Abbreviation Code
95	.byte	2                       // DW_TAG_class_type
96	.byte	1                       // DW_CHILDREN_yes
97	.byte	54                      // DW_AT_calling_convention
98	.byte	11                      // DW_FORM_data1
99	.byte	3                       // DW_AT_name
100	.byte	14                      // DW_FORM_strp
101	.byte	11                      // DW_AT_byte_size
102	.byte	11                      // DW_FORM_data1
103	.byte	58                      // DW_AT_decl_file
104	.byte	11                      // DW_FORM_data1
105	.byte	59                      // DW_AT_decl_line
106	.byte	11                      // DW_FORM_data1
107	.byte	0                       // EOM(1)
108	.byte	0                       // EOM(2)
109	.byte	3                       // Abbreviation Code
110	.byte	46                      // DW_TAG_subprogram
111	.byte	0                       // DW_CHILDREN_no
112	.byte	110                     // DW_AT_linkage_name
113	.byte	14                      // DW_FORM_strp
114	.byte	3                       // DW_AT_name
115	.byte	14                      // DW_FORM_strp
116	.byte	58                      // DW_AT_decl_file
117	.byte	11                      // DW_FORM_data1
118	.byte	59                      // DW_AT_decl_line
119	.byte	11                      // DW_FORM_data1
120	.byte	60                      // DW_AT_declaration
121	.byte	25                      // DW_FORM_flag_present
122	.byte	63                      // DW_AT_external
123	.byte	25                      // DW_FORM_flag_present
124	.byte	0                       // EOM(1)
125	.byte	0                       // EOM(2)
126	.byte	4                       // Abbreviation Code
127	.byte	46                      // DW_TAG_subprogram
128	.byte	1                       // DW_CHILDREN_yes
129	.byte	17                      // DW_AT_low_pc
130	.byte	1                       // DW_FORM_addr
131	.byte	18                      // DW_AT_high_pc
132	.byte	6                       // DW_FORM_data4
133	.byte	64                      // DW_AT_frame_base
134	.byte	24                      // DW_FORM_exprloc
135	.ascii	"\227B"                 // DW_AT_GNU_all_call_sites
136	.byte	25                      // DW_FORM_flag_present
137	.byte	59                      // DW_AT_decl_line
138	.byte	11                      // DW_FORM_data1
139	.byte	71                      // DW_AT_specification
140	.byte	19                      // DW_FORM_ref4
141	.byte	0                       // EOM(1)
142	.byte	0                       // EOM(2)
143	.byte	5                       // Abbreviation Code
144	.byte	52                      // DW_TAG_variable
145	.byte	0                       // DW_CHILDREN_no
146	.byte	2                       // DW_AT_location
147	.byte	24                      // DW_FORM_exprloc
148	.byte	3                       // DW_AT_name
149	.byte	14                      // DW_FORM_strp
150	.byte	58                      // DW_AT_decl_file
151	.byte	11                      // DW_FORM_data1
152	.byte	59                      // DW_AT_decl_line
153	.byte	11                      // DW_FORM_data1
154	.byte	73                      // DW_AT_type
155	.byte	19                      // DW_FORM_ref4
156	.byte	0                       // EOM(1)
157	.byte	0                       // EOM(2)
158	.byte	6                       // Abbreviation Code
159	.ascii	"\211\202\001"          // DW_TAG_GNU_call_site
160	.byte	0                       // DW_CHILDREN_no
161	.byte	49                      // DW_AT_abstract_origin
162	.byte	19                      // DW_FORM_ref4
163	.byte	17                      // DW_AT_low_pc
164	.byte	1                       // DW_FORM_addr
165	.byte	0                       // EOM(1)
166	.byte	0                       // EOM(2)
167	.byte	7                       // Abbreviation Code
168	.byte	46                      // DW_TAG_subprogram
169	.byte	1                       // DW_CHILDREN_yes
170	.byte	110                     // DW_AT_linkage_name
171	.byte	14                      // DW_FORM_strp
172	.byte	3                       // DW_AT_name
173	.byte	14                      // DW_FORM_strp
174	.byte	58                      // DW_AT_decl_file
175	.byte	11                      // DW_FORM_data1
176	.byte	59                      // DW_AT_decl_line
177	.byte	11                      // DW_FORM_data1
178	.byte	60                      // DW_AT_declaration
179	.byte	25                      // DW_FORM_flag_present
180	.byte	63                      // DW_AT_external
181	.byte	25                      // DW_FORM_flag_present
182	.byte	0                       // EOM(1)
183	.byte	0                       // EOM(2)
184	.byte	8                       // Abbreviation Code
185	.byte	5                       // DW_TAG_formal_parameter
186	.byte	0                       // DW_CHILDREN_no
187	.byte	73                      // DW_AT_type
188	.byte	19                      // DW_FORM_ref4
189	.byte	0                       // EOM(1)
190	.byte	0                       // EOM(2)
191	.byte	9                       // Abbreviation Code
192	.byte	15                      // DW_TAG_pointer_type
193	.byte	0                       // DW_CHILDREN_no
194	.byte	73                      // DW_AT_type
195	.byte	19                      // DW_FORM_ref4
196	.byte	0                       // EOM(1)
197	.byte	0                       // EOM(2)
198	.byte	10                      // Abbreviation Code
199	.byte	36                      // DW_TAG_base_type
200	.byte	0                       // DW_CHILDREN_no
201	.byte	3                       // DW_AT_name
202	.byte	14                      // DW_FORM_strp
203	.byte	62                      // DW_AT_encoding
204	.byte	11                      // DW_FORM_data1
205	.byte	11                      // DW_AT_byte_size
206	.byte	11                      // DW_FORM_data1
207	.byte	0                       // EOM(1)
208	.byte	0                       // EOM(2)
209	.byte	0                       // EOM(3)
210	.section	.debug_info,"",@progbits
211.Lcu_begin0:
212	.word	.Ldebug_info_end0-.Ldebug_info_start0 // Length of Unit
213.Ldebug_info_start0:
214	.hword	4                       // DWARF version number
215	.word	.debug_abbrev           // Offset Into Abbrev. Section
216	.byte	8                       // Address Size (in bytes)
217	.byte	1                       // Abbrev [1] 0xb:0x82 DW_TAG_compile_unit
218	.word	.Linfo_string0          // DW_AT_producer
219	.hword	33                      // DW_AT_language
220	.word	.Linfo_string1          // DW_AT_name
221	.word	.Lline_table_start0     // DW_AT_stmt_list
222	.word	.Linfo_string2          // DW_AT_comp_dir
223	.xword	.Lfunc_begin0           // DW_AT_low_pc
224	.word	.Lfunc_end0-.Lfunc_begin0 // DW_AT_high_pc
225	.byte	2                       // Abbrev [2] 0x2a:0x15 DW_TAG_class_type
226	.byte	5                       // DW_AT_calling_convention
227	.word	.Linfo_string5          // DW_AT_name
228	.byte	1                       // DW_AT_byte_size
229	.byte	1                       // DW_AT_decl_file
230	.byte	1                       // DW_AT_decl_line
231	.byte	3                       // Abbrev [3] 0x33:0xb DW_TAG_subprogram
232	.word	.Linfo_string3          // DW_AT_linkage_name
233	.word	.Linfo_string4          // DW_AT_name
234	.byte	1                       // DW_AT_decl_file
235	.byte	2                       // DW_AT_decl_line
236                                        // DW_AT_declaration
237                                        // DW_AT_external
238	.byte	0                       // End Of Children Mark
239	.byte	4                       // Abbrev [4] 0x3f:0x30 DW_TAG_subprogram
240	.xword	.Lfunc_begin0           // DW_AT_low_pc
241	.word	.Lfunc_end0-.Lfunc_begin0 // DW_AT_high_pc
242	.byte	1                       // DW_AT_frame_base
243	.byte	109
244                                        // DW_AT_GNU_all_call_sites
245	.byte	6                       // DW_AT_decl_line
246	.word	51                      // DW_AT_specification
247	.byte	5                       // Abbrev [5] 0x53:0xe DW_TAG_variable
248	.byte	2                       // DW_AT_location
249	.byte	145
250	.byte	124
251	.word	.Linfo_string9          // DW_AT_name
252	.byte	1                       // DW_AT_decl_file
253	.byte	6                       // DW_AT_decl_line
254	.word	133                     // DW_AT_type
255	.byte	6                       // Abbrev [6] 0x61:0xd DW_TAG_GNU_call_site
256	.word	111                     // DW_AT_abstract_origin
257	.xword	.Ltmp1                  // DW_AT_low_pc
258	.byte	0                       // End Of Children Mark
259	.byte	7                       // Abbrev [7] 0x6f:0x11 DW_TAG_subprogram
260	.word	.Linfo_string6          // DW_AT_linkage_name
261	.word	.Linfo_string7          // DW_AT_name
262	.byte	1                       // DW_AT_decl_file
263	.byte	5                       // DW_AT_decl_line
264                                        // DW_AT_declaration
265                                        // DW_AT_external
266	.byte	8                       // Abbrev [8] 0x7a:0x5 DW_TAG_formal_parameter
267	.word	128                     // DW_AT_type
268	.byte	0                       // End Of Children Mark
269	.byte	9                       // Abbrev [9] 0x80:0x5 DW_TAG_pointer_type
270	.word	133                     // DW_AT_type
271	.byte	10                      // Abbrev [10] 0x85:0x7 DW_TAG_base_type
272	.word	.Linfo_string8          // DW_AT_name
273	.byte	5                       // DW_AT_encoding
274	.byte	4                       // DW_AT_byte_size
275	.byte	0                       // End Of Children Mark
276.Ldebug_info_end0:
277	.ident	"clang version 10.0.0 (git@github.com:llvm/llvm-project.git 092ef9c6cf4678d2b8df7738110ecd405fe1fe3d)"
278	.section	".note.GNU-stack","",@progbits
279	.section	.debug_line,"",@progbits
280.Lline_table_start0:
281