xref: /llvm-project/llvm/test/tools/llvm-dwarfdump/X86/formclass4.s (revision aacea0d0f67401f5a0b74947f3ff179ade9cbf6d)
1# RUN: llvm-mc %s -filetype obj -triple x86_64-apple-darwin -o %t.o
2# RUN: llvm-dwarfdump -debug-info -name g %t.o | FileCheck %s
3
4# CHECK: DW_TAG_member
5# CHECK: DW_AT_name ("g")
6# CHECK: DW_AT_data_member_location    (0x4000)
7
8.ifdef GEN
9#--- a.cpp
10struct e {
11  enum {} f[16384];
12  short g;
13};
14e foo() {
15  auto E = new e;
16  return *E;
17}
18#--- gen
19clang --target=x86_64-apple-macosx -O2 -gdwarf-4 -S a.cpp -o -
20.endif
21
22	.section	__TEXT,__text,regular,pure_instructions
23	.macosx_version_min 10, 14
24	.globl	__Z3foov                ## -- Begin function _Z3foov
25	.p2align	4, 0x90
26__Z3foov:                               ## @_Z3foov
27Lfunc_begin0:
28	.file	1 "/private/tmp" "a.cpp"
29	.loc	1 5 0                   ## a.cpp:5:0
30	.cfi_startproc
31## %bb.0:                               ## %entry
32	pushq	%rbp
33	.cfi_def_cfa_offset 16
34	.cfi_offset %rbp, -16
35	movq	%rsp, %rbp
36	.cfi_def_cfa_register %rbp
37	pushq	%rbx
38	pushq	%rax
39	.cfi_offset %rbx, -24
40	movq	%rdi, %rbx
41Ltmp0:
42	.loc	1 6 12 prologue_end     ## a.cpp:6:12
43	movl	$16385, %edi            ## imm = 0x4001
44	callq	__Znwm
45Ltmp1:
46	##DEBUG_VALUE: foo:E <- $rax
47	.loc	1 7 10                  ## a.cpp:7:10
48	movl	$16385, %edx            ## imm = 0x4001
49	movq	%rbx, %rdi
50	movq	%rax, %rsi
51	callq	_memcpy
52Ltmp2:
53	.loc	1 8 1                   ## a.cpp:8:1
54	movq	%rbx, %rax
55	addq	$8, %rsp
56	popq	%rbx
57	popq	%rbp
58	retq
59Ltmp3:
60Lfunc_end0:
61	.cfi_endproc
62                                        ## -- End function
63	.section	__DWARF,__debug_str,regular,debug
64Linfo_string:
65	.asciz	"clang version 9.0.0 (git@github.com:llvm/llvm-project.git 10de39548976ae224709acdc1c337e33cf12f3c0)" ## string offset=0
66	.asciz	"a.cpp"                 ## string offset=100
67	.asciz	"/private/tmp"          ## string offset=106
68	.asciz	"foo"                   ## string offset=119
69	.asciz	"_Z3foov"               ## string offset=123
70	.asciz	"e"                     ## string offset=131
71	.asciz	"f"                     ## string offset=133
72	.asciz	"char"                  ## string offset=135
73	.asciz	"__ARRAY_SIZE_TYPE__"   ## string offset=140
74	.asciz	"g"                     ## string offset=160
75	.asciz	"E"                     ## string offset=162
76	.section	__DWARF,__debug_loc,regular,debug
77Lsection_debug_loc:
78Ldebug_loc0:
79.set Lset0, Ltmp1-Lfunc_begin0
80	.quad	Lset0
81.set Lset1, Ltmp2-Lfunc_begin0
82	.quad	Lset1
83	.short	1                       ## Loc expr size
84	.byte	80                      ## DW_OP_reg0
85	.quad	0
86	.quad	0
87	.section	__DWARF,__debug_abbrev,regular,debug
88Lsection_abbrev:
89	.byte	1                       ## Abbreviation Code
90	.byte	17                      ## DW_TAG_compile_unit
91	.byte	1                       ## DW_CHILDREN_yes
92	.byte	37                      ## DW_AT_producer
93	.byte	14                      ## DW_FORM_strp
94	.byte	19                      ## DW_AT_language
95	.byte	5                       ## DW_FORM_data2
96	.byte	3                       ## DW_AT_name
97	.byte	14                      ## DW_FORM_strp
98	.byte	16                      ## DW_AT_stmt_list
99	.byte	23                      ## DW_FORM_sec_offset
100	.byte	27                      ## DW_AT_comp_dir
101	.byte	14                      ## DW_FORM_strp
102	.ascii	"\264B"                 ## DW_AT_GNU_pubnames
103	.byte	25                      ## DW_FORM_flag_present
104	.ascii	"\341\177"              ## DW_AT_APPLE_optimized
105	.byte	25                      ## DW_FORM_flag_present
106	.byte	17                      ## DW_AT_low_pc
107	.byte	1                       ## DW_FORM_addr
108	.byte	18                      ## DW_AT_high_pc
109	.byte	6                       ## DW_FORM_data4
110	.byte	0                       ## EOM(1)
111	.byte	0                       ## EOM(2)
112	.byte	2                       ## Abbreviation Code
113	.byte	46                      ## DW_TAG_subprogram
114	.byte	1                       ## DW_CHILDREN_yes
115	.byte	17                      ## DW_AT_low_pc
116	.byte	1                       ## DW_FORM_addr
117	.byte	18                      ## DW_AT_high_pc
118	.byte	6                       ## DW_FORM_data4
119	.byte	64                      ## DW_AT_frame_base
120	.byte	24                      ## DW_FORM_exprloc
121	.byte	122                     ## DW_AT_call_all_calls
122	.byte	25                      ## DW_FORM_flag_present
123	.byte	110                     ## DW_AT_linkage_name
124	.byte	14                      ## DW_FORM_strp
125	.byte	3                       ## DW_AT_name
126	.byte	14                      ## DW_FORM_strp
127	.byte	58                      ## DW_AT_decl_file
128	.byte	11                      ## DW_FORM_data1
129	.byte	59                      ## DW_AT_decl_line
130	.byte	11                      ## DW_FORM_data1
131	.byte	73                      ## DW_AT_type
132	.byte	19                      ## DW_FORM_ref4
133	.byte	63                      ## DW_AT_external
134	.byte	25                      ## DW_FORM_flag_present
135	.ascii	"\341\177"              ## DW_AT_APPLE_optimized
136	.byte	25                      ## DW_FORM_flag_present
137	.byte	0                       ## EOM(1)
138	.byte	0                       ## EOM(2)
139	.byte	3                       ## Abbreviation Code
140	.byte	52                      ## DW_TAG_variable
141	.byte	0                       ## DW_CHILDREN_no
142	.byte	2                       ## DW_AT_location
143	.byte	23                      ## DW_FORM_sec_offset
144	.byte	3                       ## DW_AT_name
145	.byte	14                      ## DW_FORM_strp
146	.byte	58                      ## DW_AT_decl_file
147	.byte	11                      ## DW_FORM_data1
148	.byte	59                      ## DW_AT_decl_line
149	.byte	11                      ## DW_FORM_data1
150	.byte	73                      ## DW_AT_type
151	.byte	19                      ## DW_FORM_ref4
152	.byte	0                       ## EOM(1)
153	.byte	0                       ## EOM(2)
154	.byte	4                       ## Abbreviation Code
155	.byte	19                      ## DW_TAG_structure_type
156	.byte	1                       ## DW_CHILDREN_yes
157	.byte	54                      ## DW_AT_calling_convention
158	.byte	11                      ## DW_FORM_data1
159	.byte	3                       ## DW_AT_name
160	.byte	14                      ## DW_FORM_strp
161	.byte	11                      ## DW_AT_byte_size
162	.byte	5                       ## DW_FORM_data2
163	.byte	58                      ## DW_AT_decl_file
164	.byte	11                      ## DW_FORM_data1
165	.byte	59                      ## DW_AT_decl_line
166	.byte	11                      ## DW_FORM_data1
167	.byte	0                       ## EOM(1)
168	.byte	0                       ## EOM(2)
169	.byte	5                       ## Abbreviation Code
170	.byte	13                      ## DW_TAG_member
171	.byte	0                       ## DW_CHILDREN_no
172	.byte	3                       ## DW_AT_name
173	.byte	14                      ## DW_FORM_strp
174	.byte	73                      ## DW_AT_type
175	.byte	19                      ## DW_FORM_ref4
176	.byte	58                      ## DW_AT_decl_file
177	.byte	11                      ## DW_FORM_data1
178	.byte	59                      ## DW_AT_decl_line
179	.byte	11                      ## DW_FORM_data1
180	.byte	56                      ## DW_AT_data_member_location
181	.byte	11                      ## DW_FORM_data1
182	.byte	0                       ## EOM(1)
183	.byte	0                       ## EOM(2)
184	.byte	6                       ## Abbreviation Code
185	.byte	13                      ## DW_TAG_member
186	.byte	0                       ## DW_CHILDREN_no
187	.byte	3                       ## DW_AT_name
188	.byte	14                      ## DW_FORM_strp
189	.byte	73                      ## DW_AT_type
190	.byte	19                      ## DW_FORM_ref4
191	.byte	58                      ## DW_AT_decl_file
192	.byte	11                      ## DW_FORM_data1
193	.byte	59                      ## DW_AT_decl_line
194	.byte	11                      ## DW_FORM_data1
195	.byte	56                      ## DW_AT_data_member_location
196	.byte	5                       ## DW_FORM_data2
197	.byte	0                       ## EOM(1)
198	.byte	0                       ## EOM(2)
199	.byte	7                       ## Abbreviation Code
200	.byte	1                       ## DW_TAG_array_type
201	.byte	1                       ## DW_CHILDREN_yes
202	.byte	73                      ## DW_AT_type
203	.byte	19                      ## DW_FORM_ref4
204	.byte	0                       ## EOM(1)
205	.byte	0                       ## EOM(2)
206	.byte	8                       ## Abbreviation Code
207	.byte	33                      ## DW_TAG_subrange_type
208	.byte	0                       ## DW_CHILDREN_no
209	.byte	73                      ## DW_AT_type
210	.byte	19                      ## DW_FORM_ref4
211	.byte	55                      ## DW_AT_count
212	.byte	5                       ## DW_FORM_data2
213	.byte	0                       ## EOM(1)
214	.byte	0                       ## EOM(2)
215	.byte	9                       ## Abbreviation Code
216	.byte	36                      ## DW_TAG_base_type
217	.byte	0                       ## DW_CHILDREN_no
218	.byte	3                       ## DW_AT_name
219	.byte	14                      ## DW_FORM_strp
220	.byte	62                      ## DW_AT_encoding
221	.byte	11                      ## DW_FORM_data1
222	.byte	11                      ## DW_AT_byte_size
223	.byte	11                      ## DW_FORM_data1
224	.byte	0                       ## EOM(1)
225	.byte	0                       ## EOM(2)
226	.byte	10                      ## Abbreviation Code
227	.byte	36                      ## DW_TAG_base_type
228	.byte	0                       ## DW_CHILDREN_no
229	.byte	3                       ## DW_AT_name
230	.byte	14                      ## DW_FORM_strp
231	.byte	11                      ## DW_AT_byte_size
232	.byte	11                      ## DW_FORM_data1
233	.byte	62                      ## DW_AT_encoding
234	.byte	11                      ## DW_FORM_data1
235	.byte	0                       ## EOM(1)
236	.byte	0                       ## EOM(2)
237	.byte	11                      ## Abbreviation Code
238	.byte	15                      ## DW_TAG_pointer_type
239	.byte	0                       ## DW_CHILDREN_no
240	.byte	73                      ## DW_AT_type
241	.byte	19                      ## DW_FORM_ref4
242	.byte	0                       ## EOM(1)
243	.byte	0                       ## EOM(2)
244	.byte	0                       ## EOM(3)
245	.section	__DWARF,__debug_info,regular,debug
246Lsection_info:
247Lcu_begin0:
248.set Lset2, Ldebug_info_end0-Ldebug_info_start0 ## Length of Unit
249	.long	Lset2
250Ldebug_info_start0:
251	.short	4                       ## DWARF version number
252.set Lset3, Lsection_abbrev-Lsection_abbrev ## Offset Into Abbrev. Section
253	.long	Lset3
254	.byte	8                       ## Address Size (in bytes)
255	.byte	1                       ## Abbrev [1] 0xb:0x91 DW_TAG_compile_unit
256	.long	0                       ## DW_AT_producer
257	.short	4                       ## DW_AT_language
258	.long	100                     ## DW_AT_name
259.set Lset4, Lline_table_start0-Lsection_line ## DW_AT_stmt_list
260	.long	Lset4
261	.long	106                     ## DW_AT_comp_dir
262                                        ## DW_AT_GNU_pubnames
263                                        ## DW_AT_APPLE_optimized
264	.quad	Lfunc_begin0            ## DW_AT_low_pc
265.set Lset5, Lfunc_end0-Lfunc_begin0     ## DW_AT_high_pc
266	.long	Lset5
267	.byte	2                       ## Abbrev [2] 0x2a:0x2d DW_TAG_subprogram
268	.quad	Lfunc_begin0            ## DW_AT_low_pc
269.set Lset6, Lfunc_end0-Lfunc_begin0     ## DW_AT_high_pc
270	.long	Lset6
271	.byte	1                       ## DW_AT_frame_base
272	.byte	86
273                                        ## DW_AT_call_all_calls
274	.long	123                     ## DW_AT_linkage_name
275	.long	119                     ## DW_AT_name
276	.byte	1                       ## DW_AT_decl_file
277	.byte	5                       ## DW_AT_decl_line
278	.long	87                      ## DW_AT_type
279                                        ## DW_AT_external
280                                        ## DW_AT_APPLE_optimized
281	.byte	3                       ## Abbrev [3] 0x47:0xf DW_TAG_variable
282.set Lset7, Ldebug_loc0-Lsection_debug_loc ## DW_AT_location
283	.long	Lset7
284	.long	162                     ## DW_AT_name
285	.byte	1                       ## DW_AT_decl_file
286	.byte	6                       ## DW_AT_decl_line
287	.long	150                     ## DW_AT_type
288	.byte	0                       ## End Of Children Mark
289	.byte	4                       ## Abbrev [4] 0x57:0x24 DW_TAG_structure_type
290	.byte	5                       ## DW_AT_calling_convention
291	.long	131                     ## DW_AT_name
292	.short	16385                   ## DW_AT_byte_size
293	.byte	1                       ## DW_AT_decl_file
294	.byte	1                       ## DW_AT_decl_line
295	.byte	5                       ## Abbrev [5] 0x61:0xc DW_TAG_member
296	.long	133                     ## DW_AT_name
297	.long	123                     ## DW_AT_type
298	.byte	1                       ## DW_AT_decl_file
299	.byte	2                       ## DW_AT_decl_line
300	.byte	0                       ## DW_AT_data_member_location
301	.byte	6                       ## Abbrev [6] 0x6d:0xd DW_TAG_member
302	.long	160                     ## DW_AT_name
303	.long	136                     ## DW_AT_type
304	.byte	1                       ## DW_AT_decl_file
305	.byte	3                       ## DW_AT_decl_line
306	.short	16384                   ## DW_AT_data_member_location
307	.byte	0                       ## End Of Children Mark
308	.byte	7                       ## Abbrev [7] 0x7b:0xd DW_TAG_array_type
309	.long	136                     ## DW_AT_type
310	.byte	8                       ## Abbrev [8] 0x80:0x7 DW_TAG_subrange_type
311	.long	143                     ## DW_AT_type
312	.short	16384                   ## DW_AT_count
313	.byte	0                       ## End Of Children Mark
314	.byte	9                       ## Abbrev [9] 0x88:0x7 DW_TAG_base_type
315	.long	135                     ## DW_AT_name
316	.byte	6                       ## DW_AT_encoding
317	.byte	1                       ## DW_AT_byte_size
318	.byte	10                      ## Abbrev [10] 0x8f:0x7 DW_TAG_base_type
319	.long	140                     ## DW_AT_name
320	.byte	8                       ## DW_AT_byte_size
321	.byte	7                       ## DW_AT_encoding
322	.byte	11                      ## Abbrev [11] 0x96:0x5 DW_TAG_pointer_type
323	.long	87                      ## DW_AT_type
324	.byte	0                       ## End Of Children Mark
325Ldebug_info_end0:
326	.section	__DWARF,__debug_macinfo,regular,debug
327Ldebug_macinfo:
328	.byte	0                       ## End Of Macro List Mark
329
330.subsections_via_symbols
331	.section	__DWARF,__debug_line,regular,debug
332Lsection_line:
333Lline_table_start0:
334