xref: /llvm-project/llvm/test/tools/llvm-objdump/BPF/core-relo-formatting.s (revision d15f96fe4b64e24d262fcc727dc0eede327804ba)
1# REQUIRES: bpf-registered-target
2
3## Verify that when llvm-objdump uses .BTF.ext to show CO-RE
4## relocations formatting options operate as expected.
5
6# RUN: llvm-mc --triple bpfel %s --filetype=obj | \
7# RUN:   llvm-objdump --no-addresses --no-show-raw-insn -dr - | \
8# RUN:   FileCheck --strict-whitespace --check-prefix=NOADDR %s
9
10# RUN: llvm-mc --triple bpfel %s --filetype=obj | \
11# RUN:   llvm-objdump --no-addresses --no-show-raw-insn -d - | \
12# RUN:   FileCheck --strict-whitespace --check-prefix=NORELO %s
13
14# RUN: llvm-mc --triple bpfel %s --filetype=obj | \
15# RUN:   llvm-objdump --no-show-raw-insn -dr - | \
16# RUN:   FileCheck --strict-whitespace --check-prefix=ADDR %s
17
18# RUN: llvm-mc --triple bpfel %s --filetype=obj | \
19# RUN:   llvm-objdump --adjust-vma=0x10 --no-show-raw-insn -dr - | \
20# RUN:   FileCheck --strict-whitespace --check-prefix=VMA %s
21
22## Input generated from the following C code:
23##
24##   #define __pai __attribute__((preserve_access_index))
25##   struct foo {
26##     int a;
27##   } __pai;
28##   enum bar { U, V };
29##   extern void consume(unsigned long);
30##   void root() {
31##     asm volatile("r0 = 42;":::);
32##     struct foo *foo = 0;
33##     consume(__builtin_preserve_type_info(*foo, 0));
34##     consume((unsigned long) &foo->a);
35##     consume(__builtin_preserve_enum_value(*(enum bar *)U, 0));
36##   }
37##
38## Using the following command:
39##
40##  clang -target bpf -g -O2 -S t.c
41
42# NOADDR:	r1 = 0x1
43# NOADDR-NEXT:		CO-RE <type_exists> [3] struct foo
44# NOADDR-NEXT:	call -0x1
45# NOADDR-NEXT:		R_BPF_64_32	consume
46# NOADDR-NEXT:	r1 = 0x0
47# NOADDR-NEXT:		CO-RE <byte_off> [3] struct foo::a (0:0)
48# NOADDR-NEXT:	call -0x1
49# NOADDR-NEXT:		R_BPF_64_32	consume
50# NOADDR-NEXT:	r1 = 0x1 ll
51# NOADDR-NEXT:		CO-RE <enumval_exists> [8] enum bar::U = 0
52# NOADDR-NEXT:	call -0x1
53# NOADDR-NEXT:		R_BPF_64_32	consume
54# NOADDR-NEXT:	exit
55
56# NORELO:	r1 = 0x1
57# NORELO-NEXT:	call -0x1
58# NORELO-NEXT:	r1 = 0x0
59# NORELO-NEXT:	call -0x1
60# NORELO-NEXT:	r1 = 0x1 ll
61# NORELO-NEXT:	call -0x1
62# NORELO-NEXT:	exit
63
64# ADDR:            1:	r1 = 0x1
65# ADDR-NEXT:		0000000000000008:  CO-RE <type_exists> [3] struct foo
66# ADDR-NEXT:       2:	call -0x1
67# ADDR-NEXT:		0000000000000010:  R_BPF_64_32	consume
68# ADDR-NEXT:       3:	r1 = 0x0
69# ADDR-NEXT:		0000000000000018:  CO-RE <byte_off> [3] struct foo::a (0:0)
70# ADDR-NEXT:       4:	call -0x1
71# ADDR-NEXT:		0000000000000020:  R_BPF_64_32	consume
72# ADDR-NEXT:       5:	r1 = 0x1 ll
73# ADDR-NEXT:		0000000000000028:  CO-RE <enumval_exists> [8] enum bar::U = 0
74# ADDR-NEXT:       7:	call -0x1
75# ADDR-NEXT:		0000000000000038:  R_BPF_64_32	consume
76# ADDR-NEXT:       8:	exit
77
78# VMA:            3:	r1 = 0x1
79# VMA-NEXT:		0000000000000018:  CO-RE <type_exists> [3] struct foo
80# VMA-NEXT:       4:	call -0x1
81# VMA-NEXT:		0000000000000010:  R_BPF_64_32	consume
82# VMA-NEXT:       5:	r1 = 0x0
83# VMA-NEXT:		0000000000000028:  CO-RE <byte_off> [3] struct foo::a (0:0)
84# VMA-NEXT:       6:	call -0x1
85# VMA-NEXT:		0000000000000020:  R_BPF_64_32	consume
86# VMA-NEXT:       7:	r1 = 0x1 ll
87# VMA-NEXT:		0000000000000038:  CO-RE <enumval_exists> [8] enum bar::U = 0
88# VMA-NEXT:       9:	call -0x1
89# VMA-NEXT:		0000000000000038:  R_BPF_64_32	consume
90# VMA-NEXT:      10:	exit
91
92	.text
93	.file	"t.c"
94	.file	0 "/home/eddy/work/tmp" "t.c" md5 0x7675be79a30f35c69b89cf826ff55a5f
95	.globl	root                    # -- Begin function root
96	.p2align	3
97	.type	root,@function
98root:                                   # @root
99.Lfunc_begin0:
100	.cfi_sections .debug_frame
101	.cfi_startproc
102# %bb.0:                                # %entry
103	.loc	0 8 3 prologue_end      # t.c:8:3
104.Ltmp0:
105	#APP
106	r0 = 42
107
108	#NO_APP
109.Ltmp1:
110.Ltmp2:
111	#DEBUG_VALUE: root:foo <- 0
112	.loc	0 10 3                  # t.c:10:3
113.Ltmp3:
114.Ltmp4:
115	r1 = 1
116	call consume
117.Ltmp5:
118	.loc	0 11 3                  # t.c:11:3
119.Ltmp6:
120.Ltmp7:
121	r1 = 0
122	call consume
123.Ltmp8:
124	.loc	0 12 3                  # t.c:12:3
125.Ltmp9:
126.Ltmp10:
127	r1 = 1 ll
128	call consume
129.Ltmp11:
130	.loc	0 13 1                  # t.c:13:1
131.Ltmp12:
132	exit
133.Ltmp13:
134.Ltmp14:
135.Lfunc_end0:
136	.size	root, .Lfunc_end0-root
137	.cfi_endproc
138                                        # -- End function
139	.section	.debug_loclists,"",@progbits
140	.long	.Ldebug_list_header_end0-.Ldebug_list_header_start0 # Length
141.Ldebug_list_header_start0:
142	.short	5                       # Version
143	.byte	8                       # Address size
144	.byte	0                       # Segment selector size
145	.long	1                       # Offset entry count
146.Lloclists_table_base0:
147	.long	.Ldebug_loc0-.Lloclists_table_base0
148.Ldebug_loc0:
149	.byte	4                       # DW_LLE_offset_pair
150	.uleb128 .Ltmp1-.Lfunc_begin0   #   starting offset
151	.uleb128 .Lfunc_end0-.Lfunc_begin0 #   ending offset
152	.byte	2                       # Loc expr size
153	.byte	48                      # DW_OP_lit0
154	.byte	159                     # DW_OP_stack_value
155	.byte	0                       # DW_LLE_end_of_list
156.Ldebug_list_header_end0:
157	.section	.debug_abbrev,"",@progbits
158	.byte	1                       # Abbreviation Code
159	.byte	17                      # DW_TAG_compile_unit
160	.byte	1                       # DW_CHILDREN_yes
161	.byte	37                      # DW_AT_producer
162	.byte	37                      # DW_FORM_strx1
163	.byte	19                      # DW_AT_language
164	.byte	5                       # DW_FORM_data2
165	.byte	3                       # DW_AT_name
166	.byte	37                      # DW_FORM_strx1
167	.byte	114                     # DW_AT_str_offsets_base
168	.byte	23                      # DW_FORM_sec_offset
169	.byte	16                      # DW_AT_stmt_list
170	.byte	23                      # DW_FORM_sec_offset
171	.byte	27                      # DW_AT_comp_dir
172	.byte	37                      # DW_FORM_strx1
173	.byte	17                      # DW_AT_low_pc
174	.byte	27                      # DW_FORM_addrx
175	.byte	18                      # DW_AT_high_pc
176	.byte	6                       # DW_FORM_data4
177	.byte	115                     # DW_AT_addr_base
178	.byte	23                      # DW_FORM_sec_offset
179	.ascii	"\214\001"              # DW_AT_loclists_base
180	.byte	23                      # DW_FORM_sec_offset
181	.byte	0                       # EOM(1)
182	.byte	0                       # EOM(2)
183	.byte	2                       # Abbreviation Code
184	.byte	4                       # DW_TAG_enumeration_type
185	.byte	1                       # DW_CHILDREN_yes
186	.byte	73                      # DW_AT_type
187	.byte	19                      # DW_FORM_ref4
188	.byte	3                       # DW_AT_name
189	.byte	37                      # DW_FORM_strx1
190	.byte	11                      # DW_AT_byte_size
191	.byte	11                      # DW_FORM_data1
192	.byte	58                      # DW_AT_decl_file
193	.byte	11                      # DW_FORM_data1
194	.byte	59                      # DW_AT_decl_line
195	.byte	11                      # DW_FORM_data1
196	.byte	0                       # EOM(1)
197	.byte	0                       # EOM(2)
198	.byte	3                       # Abbreviation Code
199	.byte	40                      # DW_TAG_enumerator
200	.byte	0                       # DW_CHILDREN_no
201	.byte	3                       # DW_AT_name
202	.byte	37                      # DW_FORM_strx1
203	.byte	28                      # DW_AT_const_value
204	.byte	15                      # DW_FORM_udata
205	.byte	0                       # EOM(1)
206	.byte	0                       # EOM(2)
207	.byte	4                       # Abbreviation Code
208	.byte	36                      # DW_TAG_base_type
209	.byte	0                       # DW_CHILDREN_no
210	.byte	3                       # DW_AT_name
211	.byte	37                      # DW_FORM_strx1
212	.byte	62                      # DW_AT_encoding
213	.byte	11                      # DW_FORM_data1
214	.byte	11                      # DW_AT_byte_size
215	.byte	11                      # DW_FORM_data1
216	.byte	0                       # EOM(1)
217	.byte	0                       # EOM(2)
218	.byte	5                       # Abbreviation Code
219	.byte	46                      # DW_TAG_subprogram
220	.byte	1                       # DW_CHILDREN_yes
221	.byte	17                      # DW_AT_low_pc
222	.byte	27                      # DW_FORM_addrx
223	.byte	18                      # DW_AT_high_pc
224	.byte	6                       # DW_FORM_data4
225	.byte	64                      # DW_AT_frame_base
226	.byte	24                      # DW_FORM_exprloc
227	.byte	122                     # DW_AT_call_all_calls
228	.byte	25                      # DW_FORM_flag_present
229	.byte	3                       # DW_AT_name
230	.byte	37                      # DW_FORM_strx1
231	.byte	58                      # DW_AT_decl_file
232	.byte	11                      # DW_FORM_data1
233	.byte	59                      # DW_AT_decl_line
234	.byte	11                      # DW_FORM_data1
235	.byte	63                      # DW_AT_external
236	.byte	25                      # DW_FORM_flag_present
237	.byte	0                       # EOM(1)
238	.byte	0                       # EOM(2)
239	.byte	6                       # Abbreviation Code
240	.byte	52                      # DW_TAG_variable
241	.byte	0                       # DW_CHILDREN_no
242	.byte	2                       # DW_AT_location
243	.byte	34                      # DW_FORM_loclistx
244	.byte	3                       # DW_AT_name
245	.byte	37                      # DW_FORM_strx1
246	.byte	58                      # DW_AT_decl_file
247	.byte	11                      # DW_FORM_data1
248	.byte	59                      # DW_AT_decl_line
249	.byte	11                      # DW_FORM_data1
250	.byte	73                      # DW_AT_type
251	.byte	19                      # DW_FORM_ref4
252	.byte	0                       # EOM(1)
253	.byte	0                       # EOM(2)
254	.byte	7                       # Abbreviation Code
255	.byte	72                      # DW_TAG_call_site
256	.byte	0                       # DW_CHILDREN_no
257	.byte	127                     # DW_AT_call_origin
258	.byte	19                      # DW_FORM_ref4
259	.byte	125                     # DW_AT_call_return_pc
260	.byte	27                      # DW_FORM_addrx
261	.byte	0                       # EOM(1)
262	.byte	0                       # EOM(2)
263	.byte	8                       # Abbreviation Code
264	.byte	46                      # DW_TAG_subprogram
265	.byte	1                       # DW_CHILDREN_yes
266	.byte	3                       # DW_AT_name
267	.byte	37                      # DW_FORM_strx1
268	.byte	58                      # DW_AT_decl_file
269	.byte	11                      # DW_FORM_data1
270	.byte	59                      # DW_AT_decl_line
271	.byte	11                      # DW_FORM_data1
272	.byte	39                      # DW_AT_prototyped
273	.byte	25                      # DW_FORM_flag_present
274	.byte	60                      # DW_AT_declaration
275	.byte	25                      # DW_FORM_flag_present
276	.byte	63                      # DW_AT_external
277	.byte	25                      # DW_FORM_flag_present
278	.byte	0                       # EOM(1)
279	.byte	0                       # EOM(2)
280	.byte	9                       # Abbreviation Code
281	.byte	5                       # DW_TAG_formal_parameter
282	.byte	0                       # DW_CHILDREN_no
283	.byte	73                      # DW_AT_type
284	.byte	19                      # DW_FORM_ref4
285	.byte	0                       # EOM(1)
286	.byte	0                       # EOM(2)
287	.byte	10                      # Abbreviation Code
288	.byte	15                      # DW_TAG_pointer_type
289	.byte	0                       # DW_CHILDREN_no
290	.byte	73                      # DW_AT_type
291	.byte	19                      # DW_FORM_ref4
292	.byte	0                       # EOM(1)
293	.byte	0                       # EOM(2)
294	.byte	11                      # Abbreviation Code
295	.byte	19                      # DW_TAG_structure_type
296	.byte	1                       # DW_CHILDREN_yes
297	.byte	3                       # DW_AT_name
298	.byte	37                      # DW_FORM_strx1
299	.byte	11                      # DW_AT_byte_size
300	.byte	11                      # DW_FORM_data1
301	.byte	58                      # DW_AT_decl_file
302	.byte	11                      # DW_FORM_data1
303	.byte	59                      # DW_AT_decl_line
304	.byte	11                      # DW_FORM_data1
305	.byte	0                       # EOM(1)
306	.byte	0                       # EOM(2)
307	.byte	12                      # Abbreviation Code
308	.byte	13                      # DW_TAG_member
309	.byte	0                       # DW_CHILDREN_no
310	.byte	3                       # DW_AT_name
311	.byte	37                      # DW_FORM_strx1
312	.byte	73                      # DW_AT_type
313	.byte	19                      # DW_FORM_ref4
314	.byte	58                      # DW_AT_decl_file
315	.byte	11                      # DW_FORM_data1
316	.byte	59                      # DW_AT_decl_line
317	.byte	11                      # DW_FORM_data1
318	.byte	56                      # DW_AT_data_member_location
319	.byte	11                      # DW_FORM_data1
320	.byte	0                       # EOM(1)
321	.byte	0                       # EOM(2)
322	.byte	0                       # EOM(3)
323	.section	.debug_info,"",@progbits
324.Lcu_begin0:
325	.long	.Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
326.Ldebug_info_start0:
327	.short	5                       # DWARF version number
328	.byte	1                       # DWARF Unit Type
329	.byte	8                       # Address Size (in bytes)
330	.long	.debug_abbrev           # Offset Into Abbrev. Section
331	.byte	1                       # Abbrev [1] 0xc:0x7d DW_TAG_compile_unit
332	.byte	0                       # DW_AT_producer
333	.short	29                      # DW_AT_language
334	.byte	1                       # DW_AT_name
335	.long	.Lstr_offsets_base0     # DW_AT_str_offsets_base
336	.long	.Lline_table_start0     # DW_AT_stmt_list
337	.byte	2                       # DW_AT_comp_dir
338	.byte	0                       # DW_AT_low_pc
339	.long	.Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc
340	.long	.Laddr_table_base0      # DW_AT_addr_base
341	.long	.Lloclists_table_base0  # DW_AT_loclists_base
342	.byte	2                       # Abbrev [2] 0x27:0x10 DW_TAG_enumeration_type
343	.long	55                      # DW_AT_type
344	.byte	6                       # DW_AT_name
345	.byte	4                       # DW_AT_byte_size
346	.byte	0                       # DW_AT_decl_file
347	.byte	5                       # DW_AT_decl_line
348	.byte	3                       # Abbrev [3] 0x30:0x3 DW_TAG_enumerator
349	.byte	4                       # DW_AT_name
350	.byte	0                       # DW_AT_const_value
351	.byte	3                       # Abbrev [3] 0x33:0x3 DW_TAG_enumerator
352	.byte	5                       # DW_AT_name
353	.byte	1                       # DW_AT_const_value
354	.byte	0                       # End Of Children Mark
355	.byte	4                       # Abbrev [4] 0x37:0x4 DW_TAG_base_type
356	.byte	3                       # DW_AT_name
357	.byte	7                       # DW_AT_encoding
358	.byte	4                       # DW_AT_byte_size
359	.byte	4                       # Abbrev [4] 0x3b:0x4 DW_TAG_base_type
360	.byte	7                       # DW_AT_name
361	.byte	7                       # DW_AT_encoding
362	.byte	8                       # DW_AT_byte_size
363	.byte	5                       # Abbrev [5] 0x3f:0x27 DW_TAG_subprogram
364	.byte	0                       # DW_AT_low_pc
365	.long	.Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc
366	.byte	1                       # DW_AT_frame_base
367	.byte	90
368                                        # DW_AT_call_all_calls
369	.byte	9                       # DW_AT_name
370	.byte	0                       # DW_AT_decl_file
371	.byte	7                       # DW_AT_decl_line
372                                        # DW_AT_external
373	.byte	6                       # Abbrev [6] 0x4a:0x9 DW_TAG_variable
374	.byte	0                       # DW_AT_location
375	.byte	10                      # DW_AT_name
376	.byte	0                       # DW_AT_decl_file
377	.byte	9                       # DW_AT_decl_line
378	.long	112                     # DW_AT_type
379	.byte	7                       # Abbrev [7] 0x53:0x6 DW_TAG_call_site
380	.long	102                     # DW_AT_call_origin
381	.byte	1                       # DW_AT_call_return_pc
382	.byte	7                       # Abbrev [7] 0x59:0x6 DW_TAG_call_site
383	.long	102                     # DW_AT_call_origin
384	.byte	2                       # DW_AT_call_return_pc
385	.byte	7                       # Abbrev [7] 0x5f:0x6 DW_TAG_call_site
386	.long	102                     # DW_AT_call_origin
387	.byte	3                       # DW_AT_call_return_pc
388	.byte	0                       # End Of Children Mark
389	.byte	8                       # Abbrev [8] 0x66:0xa DW_TAG_subprogram
390	.byte	8                       # DW_AT_name
391	.byte	0                       # DW_AT_decl_file
392	.byte	6                       # DW_AT_decl_line
393                                        # DW_AT_prototyped
394                                        # DW_AT_declaration
395                                        # DW_AT_external
396	.byte	9                       # Abbrev [9] 0x6a:0x5 DW_TAG_formal_parameter
397	.long	59                      # DW_AT_type
398	.byte	0                       # End Of Children Mark
399	.byte	10                      # Abbrev [10] 0x70:0x5 DW_TAG_pointer_type
400	.long	117                     # DW_AT_type
401	.byte	11                      # Abbrev [11] 0x75:0xf DW_TAG_structure_type
402	.byte	10                      # DW_AT_name
403	.byte	4                       # DW_AT_byte_size
404	.byte	0                       # DW_AT_decl_file
405	.byte	2                       # DW_AT_decl_line
406	.byte	12                      # Abbrev [12] 0x7a:0x9 DW_TAG_member
407	.byte	11                      # DW_AT_name
408	.long	132                     # DW_AT_type
409	.byte	0                       # DW_AT_decl_file
410	.byte	3                       # DW_AT_decl_line
411	.byte	0                       # DW_AT_data_member_location
412	.byte	0                       # End Of Children Mark
413	.byte	4                       # Abbrev [4] 0x84:0x4 DW_TAG_base_type
414	.byte	12                      # DW_AT_name
415	.byte	5                       # DW_AT_encoding
416	.byte	4                       # DW_AT_byte_size
417	.byte	0                       # End Of Children Mark
418.Ldebug_info_end0:
419	.section	.debug_str_offsets,"",@progbits
420	.long	56                      # Length of String Offsets Set
421	.short	5
422	.short	0
423.Lstr_offsets_base0:
424	.section	.debug_str,"MS",@progbits,1
425.Linfo_string0:
426	.asciz	"clang version 17.0.0 (/home/eddy/work/llvm-project/clang 76d673bb89f8ec8cf65a4294a98a83c9d6646b11)" # string offset=0
427.Linfo_string1:
428	.asciz	"t.c"                   # string offset=99
429.Linfo_string2:
430	.asciz	"/home/eddy/work/tmp"   # string offset=103
431.Linfo_string3:
432	.asciz	"unsigned int"          # string offset=123
433.Linfo_string4:
434	.asciz	"U"                     # string offset=136
435.Linfo_string5:
436	.asciz	"V"                     # string offset=138
437.Linfo_string6:
438	.asciz	"bar"                   # string offset=140
439.Linfo_string7:
440	.asciz	"unsigned long"         # string offset=144
441.Linfo_string8:
442	.asciz	"consume"               # string offset=158
443.Linfo_string9:
444	.asciz	"root"                  # string offset=166
445.Linfo_string10:
446	.asciz	"foo"                   # string offset=171
447.Linfo_string11:
448	.asciz	"a"                     # string offset=175
449.Linfo_string12:
450	.asciz	"int"                   # string offset=177
451	.section	.debug_str_offsets,"",@progbits
452	.long	.Linfo_string0
453	.long	.Linfo_string1
454	.long	.Linfo_string2
455	.long	.Linfo_string3
456	.long	.Linfo_string4
457	.long	.Linfo_string5
458	.long	.Linfo_string6
459	.long	.Linfo_string7
460	.long	.Linfo_string8
461	.long	.Linfo_string9
462	.long	.Linfo_string10
463	.long	.Linfo_string11
464	.long	.Linfo_string12
465	.section	.debug_addr,"",@progbits
466	.long	.Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution
467.Ldebug_addr_start0:
468	.short	5                       # DWARF version number
469	.byte	8                       # Address size
470	.byte	0                       # Segment selector size
471.Laddr_table_base0:
472	.quad	.Lfunc_begin0
473	.quad	.Ltmp5
474	.quad	.Ltmp8
475	.quad	.Ltmp11
476.Ldebug_addr_end0:
477	.section	.BTF,"",@progbits
478	.short	60319                   # 0xeb9f
479	.byte	1
480	.byte	0
481	.long	24
482	.long	0
483	.long	140
484	.long	140
485	.long	262
486	.long	0                       # BTF_KIND_FUNC_PROTO(id = 1)
487	.long	218103808               # 0xd000000
488	.long	0
489	.long	1                       # BTF_KIND_FUNC(id = 2)
490	.long	201326593               # 0xc000001
491	.long	1
492	.long	67                      # BTF_KIND_STRUCT(id = 3)
493	.long	67108865                # 0x4000001
494	.long	4
495	.long	71
496	.long	4
497	.long	0                       # 0x0
498	.long	73                      # BTF_KIND_INT(id = 4)
499	.long	16777216                # 0x1000000
500	.long	4
501	.long	16777248                # 0x1000020
502	.long	0                       # BTF_KIND_FUNC_PROTO(id = 5)
503	.long	218103809               # 0xd000001
504	.long	0
505	.long	0
506	.long	6
507	.long	129                     # BTF_KIND_INT(id = 6)
508	.long	16777216                # 0x1000000
509	.long	8
510	.long	64                      # 0x40
511	.long	143                     # BTF_KIND_FUNC(id = 7)
512	.long	201326594               # 0xc000002
513	.long	5
514	.long	191                     # BTF_KIND_ENUM(id = 8)
515	.long	100663298               # 0x6000002
516	.long	4
517	.long	195
518	.long	0
519	.long	197
520	.long	1
521	.byte	0                       # string offset=0
522	.ascii	"root"                  # string offset=1
523	.byte	0
524	.ascii	".text"                 # string offset=6
525	.byte	0
526	.ascii	"/home/eddy/work/tmp/t.c" # string offset=12
527	.byte	0
528	.ascii	"  asm volatile(\"r0 = 42;\":::);" # string offset=36
529	.byte	0
530	.ascii	"foo"                   # string offset=67
531	.byte	0
532	.byte	97                      # string offset=71
533	.byte	0
534	.ascii	"int"                   # string offset=73
535	.byte	0
536	.byte	48                      # string offset=77
537	.byte	0
538	.ascii	"  consume(__builtin_preserve_type_info(*foo, 0));" # string offset=79
539	.byte	0
540	.ascii	"unsigned long"         # string offset=129
541	.byte	0
542	.ascii	"consume"               # string offset=143
543	.byte	0
544	.ascii	"0:0"                   # string offset=151
545	.byte	0
546	.ascii	"  consume((unsigned long) &foo->a);" # string offset=155
547	.byte	0
548	.ascii	"bar"                   # string offset=191
549	.byte	0
550	.byte	85                      # string offset=195
551	.byte	0
552	.byte	86                      # string offset=197
553	.byte	0
554	.ascii	"  consume(__builtin_preserve_enum_value(*(enum bar *)U, 0));" # string offset=199
555	.byte	0
556	.byte	125                     # string offset=260
557	.byte	0
558	.section	.BTF.ext,"",@progbits
559	.short	60319                   # 0xeb9f
560	.byte	1
561	.byte	0
562	.long	32
563	.long	0
564	.long	20
565	.long	20
566	.long	92
567	.long	112
568	.long	60
569	.long	8                       # FuncInfo
570	.long	6                       # FuncInfo section string offset=6
571	.long	1
572	.long	.Lfunc_begin0
573	.long	2
574	.long	16                      # LineInfo
575	.long	6                       # LineInfo section string offset=6
576	.long	5
577	.long	.Ltmp0
578	.long	12
579	.long	36
580	.long	8195                    # Line 8 Col 3
581	.long	.Ltmp4
582	.long	12
583	.long	79
584	.long	10243                   # Line 10 Col 3
585	.long	.Ltmp7
586	.long	12
587	.long	155
588	.long	11267                   # Line 11 Col 3
589	.long	.Ltmp10
590	.long	12
591	.long	199
592	.long	12291                   # Line 12 Col 3
593	.long	.Ltmp12
594	.long	12
595	.long	260
596	.long	13313                   # Line 13 Col 1
597	.long	16                      # FieldReloc
598	.long	6                       # Field reloc section string offset=6
599	.long	3
600	.long	.Ltmp3
601	.long	3
602	.long	77
603	.long	8
604	.long	.Ltmp6
605	.long	3
606	.long	151
607	.long	0
608	.long	.Ltmp9
609	.long	8
610	.long	77
611	.long	10
612	.addrsig
613	.section	.debug_line,"",@progbits
614.Lline_table_start0:
615